2010-11-17 133 views
26

如何使用CultureInfo來識別操作系統的語言?例如。如果Windows中的語言設置爲法語,則需要識別法語並加載fr資源文件數據。在CultureInfo中獲取當前語言

+4

如果您使用的是.NET資源文件('.resx'),那麼系統會爲您處理。 – 2010-11-17 19:26:36

+0

是的,我知道,但我沒有添加普通話資源文件和計算機設置爲普通話作爲其默認語言,所以我期待得到正確的。謝謝。 – Sharpeye500 2010-11-17 19:31:37

+0

您的答案可能是這一個http://stackoverflow.com/questions/329033/what-is-the-difference-between-currentculture-and-currentuiculture-properties-of – Raymund 2010-11-17 19:24:16

回答

44

我覺得這樣的事情會給你當前CultureInfo:

CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

這就是你想要的?

+1

我會使用CultureInfo.CurrentCulture這樣做,但寫得更短。不幸的是,CurrentCulture和CurrentUICulture都不返回OS語言。首先返回當前的格式設置,其次返回用戶首選的用戶界面語言。 – 2010-11-17 21:22:38

6

當前系統語言是利用檢索到:

CultureInfo.InstalledUICulture 

「獲取表示與操作系統安裝在培養物中的CultureInfo」。

InstalledUICulture

將其設置爲默認語言線程使用:

System.Globalization.CultureInfo.DefaultThreadCurrentCulture=CultureInfo.InstalledUICulture; 
9

這是我使用的:

var culture = System.Globalization.CultureInfo.CurrentCulture; 

,它的工作:)

2

我試着{CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;}但它沒有爲我工作,因爲我的UI c ulture與我的號碼/貨幣文化不同。所以我建議你使用:

CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture; 

這會給你你的用戶界面文化(窗口,消息框等文本)。

0

要獲得2個字符ISO 639-1語言標識符使用:
System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;

相關問題