2012-03-14 72 views
5

我想知道System.Globalization.CultureInfo.CurrentCulture從何處讀取其值的設置或位置。CultureInfo.CurrentCulture從哪裏讀取文化

我正在使用Windows 7筆記本電腦,並將我的系統的區域和日期時間設置更改爲美國。

我下得了

<globalization culture="en-US" /> 

感謝

回答

6

MSDN

文化是執行的線程的屬性。這個只讀屬性相當於檢索由Thread.CurrentCulture屬性返回的CultureInfo對象。當一個線程啓動時,其文化最初是通過調用Windows的GetUserDefaultLocaleName函數來確定的。

換句話說,它是基於線程,女巫有一個上下文...在ASP.NET背景下,來自如使用Server Variables或在客戶端瀏覽器第一使用的語言環境系統設置一切。

在這個Web上下文你可以使用上HTTP_ACCEPT_LANGUAGEServer.Variables方法它,你會得到這樣的:

en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4 

女巫指出客戶端瀏覽器有3種語言集,其中第一個是en-US

System.Globalization一切都來自於系統定義就像下面顯示的圖像:以上

enter image description here

代碼:

<p> 
    <pre>System.Globalization.CultureInfo.CurrentCulture</pre> 
    is @System.Globalization.CultureInfo.CurrentCulture.EnglishName 
</p> 

無論是使用什麼瀏覽器時,定義爲System.Globalization將始終來自操作系統定義

enter image description here

+0

謝謝Balexandre,這似乎是很好的信息。但我剛剛檢查了我的瀏覽器語言環境設置和en-US(我正在使用firefox,並且我在about:config下選中了設置general.useragent.locale),我的系統日期時間和區域設置也設置爲en-US。但是當我檢查System.Globalization.CultureInfo.CurrentCulture時,我仍然得到了en-IN。你有什麼想法我錯了嗎? – TechnicalSmile 2012-03-14 08:19:08

+0

添加圖片以便更好地理解... – balexandre 2012-03-14 10:33:41

2

花費8個小時後 - 找出一個解決方案憑藉羅納德 - CultureInfo values differ between applications for the same culture. Is this a bug?

事實證明,區域設置存儲每個用戶在Windows中。 這是我應該知道的。更新 應用程序池以便自己運行,以便在 應用程序中產生相同的結果。

公平地說,網絡服務( 帳號運行的應用程序池)的錯誤值是 。我甚至不確定我會如何糾正這種情況。

編輯:

如果您需要更新保留帳戶的區域設置。您有 有兩個選項。

Control Panel > Regional Settings > Click the administrative tab and then select "Copy Settings". 

在一個啓動畫面,確保 選中「歡迎屏幕和系統帳戶」。舊版本的 Windows相似,我相信。 用於支撐。註冊表:HKEY_USERS> SID ...>控制面板>國際。網絡服務的安全標識符是:SID: S-1-5-20。

確保您重新啓動應用程序池以使設置生效。

我做了#1 - 它爲我做了一個小把戲!

+0

非常感謝!備用了我很多時間:) – 2015-02-02 14:20:19