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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值