注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

分享,态度 ·~~

—— 十年太长,五年;如果可以回到五年前,你最想对那时候的自己说什么?

 
 
 

日志

 
 

设定程序显示语言(得到系统显示语言)  

2010-06-10 18:33:10|  分类: DotNet |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Visual Basic 或 Visual C# 應用程式的兩個文化特性 (Culture) 值決定應用程式所要載入的資源,以及如何設定貨幣、數字及日期之類的資訊格式。要載入的資源是由 UI 文化特性設定所決定,而格式化選項則是由文化特性設定所決定。應用程式尋找文化特性值的第一個位置是 CurrentCultureCurrentUICulture 屬性。您可以在程式碼中設定這些值,如下列程序所示。

CurrentCulture 屬性的預設值是作業系統的使用者地區設定,這是在 [地區選項] 控制台中進行設定。CurrentUICulture 屬性的預設值是作業系統的使用者介面 (UI) 語言,這是作業系統 UI 的語言。在 Windows 2000 和 Windows XP MultiLanguage Edition 上,CurrentUICulture 預設為目前的使用 UI 語言設定值。

在某些執行個體中,您可能想要讓大部分應用程式根據作業系統或使用者的文化特性設定進行變更,但是有一些數字或日期不變更。您可利用文化特性特定類別來格式化具有不因文化特性而異的資訊,這類資訊只和英並沒有和特定地區有關聯。如需這些類別的詳細資訊,請參閱Formatting for Different CulturesSystem.Globalization如需不因文化特性而異的詳細資訊,請參閱 InvariantCulture如需可能的文化特性設定的詳細資訊,請參閱 CultureInfo

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在Win32程序中,CurrentUICulture 的系统API为GetUserDefaultUILanguage();

而在.Net中,可以参考下面的转换程式:

            int lcid = System.Globalization.CultureInfo.CurrentCulture.LCID;
            byte[] vals = new byte[4];
            vals = BitConverter.GetBytes(lcid);
            byte tempByte;
            for (int i = 0; i < 2; i++)
            {
                tempByte = vals[i];
                vals[i] = vals[3 - i];
                vals[3 - i] = tempByte;
            }
            string szLCID = BitConverter.ToString(vals, 2, 2).Replace("-", "");

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

若要設定適合特定文化特性的格式化選項

  1. 如果您想要覆寫使用者或作業系統的設定,請設定 CurrentCultureCurrentUICulture 屬性。

    一般而言,您會想要指定文化特性,使應用程式 UI 的所有部分都適合該文化,因此您必須在呼叫 InitializeComponent 方法之前設定文化特性。

    C# Code
    // Put the using statements at the beginning of the code module
    using System.Threading;
    using System.Globalization;
    // Put the following code before InitializeComponent()
    // Sets the culture to French (France)
    Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
    // Sets the UI culture to French (France)
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");

    注意事項注意事項

    文化特性值必須一定是特定的文化特性 (例如,"fr-FR"),而不是中性文化特性 (例如,"fr")。像是 "fr" 之類的中性文化特性很麻煩,因為它可以套用至所有說法文的文化,而法國、比利時及魁北克卻使用不同的貨幣。

  2. 不論 CurrentCulture 屬性的值如何設定,對於任何顯示應維持不變的字串,請使用不變文化特性來呼叫格式化方法。

    C# Code
    int MyInt = 100;
    string MyString = MyInt.ToString("C", CultureInfo.InvariantCulture);
    MessageBox.Show(MyString);
    【部分from http://msdn.microsoft.com/zh-tw/library/b28bx3bh.aspx
  评论这张
 
阅读(567)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017