有没有一种方法可以在 c# 类中检测操作系统的语言?
不幸的是,之前的回答并不完全正确。
CurrentCulture
是运行线程的区域设置信息,用于需要知道当前区域设置但不显示任何内容的操作。 CurrentUICulture
用于格式化显示,例如正确显示 DateTime
。
因为您可能会更改当前线程的Culture
或UICulture
,如果想知道操作系统实际的CultureInfo
是什么,请使用 CultureInfo.InstalledUICulture
。
此外,还有一个关于此主题的问题(比这个更新)有详细的答案:
System.Globalization.CultureInfo
类,您可以确定您想要的文化设置。CultureInfo.CurrentCulture
可以获取系统设定的文化设置,使用 CultureInfo.CurrentUICulture
可以获取用户设定的文化设置。CultureInfo.CurrentCulture
是用于格式化日期、数字等内容的区域性,它从用户的地区设置中初始化。而 CultureInfo.CurrentUICulture
则是资源管理器用于查找字符串资源的区域性,并从操作系统的用户界面语言初始化。 - SvenSystem.Globalization.CultureInfo.CurrentUICulture.DisplayName
"。这正是您想要的。您是想了解机器是否配置了英语、法语或日语等语言吗?
可以看一下CultureInfo类,特别是初始化自操作系统当前区域设置的CurrentCulture属性。
这意味着如果系统区域设置在“区域和语言”中,您可以使用Win32 API函数GetSystemDefaultLCID。其签名如下:
[DllImport("kernel32.dll")]
static extern uint GetSystemDefaultLCID();
GetSystemDefaultLCID函数返回LCID。它可以从以下表格中映射语言字符串。 由Microsoft分配的区域设置ID
System.Threading.Thread.CurrentThread.CurrentCulture
CurrentCulture
用于格式化日期、数字等,而CurrentUICulture
用于查找资源。 - Sven