有没有办法从c#类中检测操作系统的语言?
答案 0 :(得分:21)
不幸的是,之前的答案并非100%正确。
CurrentCulture
是正在运行的线程的文化信息,它用于需要了解当前文化但不显示任何内容的操作。 CurrentUICulture
用于格式化显示,例如正确显示DateTime
。
因为您可能会更改当前线程Culture
或UICulture
,如果您想知道操作系统CultureInfo
实际上是什么,请使用CultureInfo.InstalledUICulture
。
此外,还有另一个关于这个问题的问题(比这一个更近),并有详细的答案:
答案 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