从c#中检测os语言

时间:2009-01-26 10:09:15

标签: c# operating-system

有没有办法从c#类中检测操作系统的语言?

7 个答案:

答案 0 :(得分:21)

不幸的是,之前的答案并非100%正确。

CurrentCulture是正在运行的线程的文化信息,它用于需要了解当前文化但不显示任何内容的操作。 CurrentUICulture用于格式化显示,例如正确显示DateTime。 因为您可能会更改当前线程CultureUICulture,如果您想知道操作系统CultureInfo实际上是什么,请使用CultureInfo.InstalledUICulture

此外,还有另一个关于这个问题的问题(比这一个更近),并有详细的答案:

Get operating system language in c#

答案 1 :(得分:8)

使用System.Globalization.CultureInfo课程,您可以确定自己想要的内容。

使用CultureInfo.CurrentCulture,您可以获得系统集文化,CultureInfo.CurrentUICulture可以获得用户设置文化。

答案 2 :(得分:4)

"System.Globalization.CultureInfo.CurrentUICulture.DisplayName"。这正是你想要的。

答案 3 :(得分:3)

您的意思是说机器是否配置了(例如)英语,法语或日语?

查看CultureInfo类 - 特别是CurrentCulture,它是从OS当前的区域设置初始化的。

答案 4 :(得分:2)

表示如果系统区域设置在Region和Language上,则可以使用Win32 API函数GetSystemDefaultLCID。签名如下:

[DllImport("kernel32.dll")]
static extern uint GetSystemDefaultLCID();

GetSystemDefaultLCID函数返回LCID。它可以映射下表中的语言字符串。 Locale IDs Assigned by Microsoft

答案 5 :(得分:1)

上面的所有答案似乎只能让你获得操作系统安装文化(充其量)。我遇到了一个问题,我需要在Windows中使用实际的显示语言。即用户安装了默认的en-US Windows安装,但随后为德语(de-DE)添加了一个语言包,并将其设置为显示语言。

为此,我使用了System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage

答案 6 :(得分:0)

System.Threading.Thread.CurrentThread.CurrentCulture