从c#中检测os语言
有没有办法从ac#class中检测操作系统的语言?
使用System.Globalization.CultureInfo
类,您可以确定所需的内容。
使用CultureInfo.CurrentCulture
您可以获得系统集文化,使用CultureInfo.CurrentUICulture
可以获得用户设置文化。
不幸的是,之前的答案并非100%正确。
CurrentCulture
是正在运行的线程的文化信息,它用于需要了解当前文化但不显示任何内容的操作。 CurrentUICulture
用于格式化显示,例如正确显示DateTime
。 因为您可能会更改当前线程Culture
或UICulture
,如果您想知道OS CultureInfo
实际是什么,请使用CultureInfo.InstalledUICulture
。
此外,还有另一个关于这个问题的问题(比这个更近),并给出了详细的答案:
在c#中获取操作系统语言 。
"System.Globalization.CultureInfo.CurrentUICulture.DisplayName"
。 这正是你想要的。
你的意思是说机器是用英语,法语还是日语配置的(例如)?
看一下CultureInfo类 – 特别是CurrentCulture,它是从OS当前的区域设置初始化的。
意味着如果系统区域设置在Region和Language上,则可以使用Win32 API函数GetSystemDefaultLCID。 签名如下:
[DllImport("kernel32.dll")] static extern uint GetSystemDefaultLCID();
GetSystemDefaultLCID函数返回LCID。 它可以映射下表中的语言字符串。 由Microsoft分配的区域设置ID
上面的所有答案似乎只能让你获得操作系统安装的文化(充其量)。 我遇到了一个问题,我需要在Windows中使用实际的显示语言。 即用户安装了默认的en-US Windows安装,但随后为德语(de-DE)添加了一个语言包,并将其设置为显示语言。
为此,我使用了System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage
System.Threading.Thread.CurrentThread.CurrentCulture