簡體   English   中英

C#CultureInfo.CurrentCulture說en_US但我的Windows設置設置為南非

[英]C# CultureInfo.CurrentCulture says en_US but my Windows settings are set to South Africa

我在Windows 8.1控制面板中將我的區域/位置更改為南非。 當我從Visual Studio 2013啟動我的應用程序並獲取CultureInfo.CurrentUICulture時,它仍然顯示“ en-US”。

public CultureInfo getCurrentCulture() {
    if (CultureInfo.DefaultThreadCurrentUICulture != null) {
        return CultureInfo.DefaulThreadCurrentUICulture;
    } else {
        return CultureInfo.CurrentUICulture;
    }
}

我也嘗試過CultureInfo.CurrentCulture而不是CurrentUICulture,但它們的行為方式相同。 如何通過代碼確定用戶的真實語言環境? 或者我是否通過Windows設置錯誤地設置了區域?

我的應用程序格式化貨幣字符串等,我需要確保它使用正確的貨幣符號。 南非對我來說是一個很好的用例,因為它們仍然使用英語,但是區域號碼的格式不同。

我想我應該把這個作為答案。

Windows區分用戶的物理位置,所需的本地化(格式化)屬性和運行語言。 例如,講西班牙語的用戶可能位於英國,但希望使用美式英語格式。 CultureInfo.CurrentCulture是指Regions控制面板的“格式”選項卡下的設置。 (以上鏈接之一中顯示的用戶界面對於Win8來說已經有些過時了;有關Win8類似物,請參見此處 。)

本文提供了有關各種區域性屬性以及如何在用戶界面中進行設置的更多信息: YACVCP(還有另一篇CurrentCulture與CurrentUICulture文章)

因此,要測試南非貨幣字符串等,您必須將“格式”下拉菜單更改為“英語(南非)”,然后重新運行。

另外,通過實驗,我發現當我重新運行應用程序時,Visual Studio 2008(我正在使用的)並不總是能夠適應語言環境的變化。 這可能是托管過程中的某種錯誤。 重新啟動和重新運行我的應用程序通常似乎可以解決問題。 關閉並重新打開Visual Studio總是如此。

(注意 - 我正在使用Win7。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM