2010-11-17 116 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;

相关问题