从 c# 检测操作系统语言
Posted
技术标签:
【中文标题】从 c# 检测操作系统语言【英文标题】:detect os language from c# 【发布时间】:2010-10-03 12:27:18 【问题描述】:有没有办法从 c# 类中检测操作系统的语言?
【问题讨论】:
【参考方案1】:很遗憾,之前的答案并非 100% 正确。
CurrentCulture
是正在运行的线程的文化信息,用于需要知道当前文化,但不做任何显示的操作。 CurrentUICulture
用于格式化显示,例如正确显示DateTime
。
因为您可能会更改当前线程Culture
或UICulture
,如果您想知道操作系统CultureInfo
究竟是什么,请使用CultureInfo.InstalledUICulture
。
另外,还有一个关于这个主题的问题(比这个问题更新)有一个详细的答案:
Get operating system language in c#.
【讨论】:
这也不对。CurrentCulture
用于格式化日期和数字等,CurrentUICulture
用于查找资源。
No Sven,在这一篇中,您实际上是错的,而 Mihai 写的是正确的东西:CultureInfo.InstalledUICulture 似乎是实际操作系统的预定义文化信息。我刚刚检查了msdn.microsoft.com/en-us/library/…,他们清楚地说这是系统默认的!
不是真正的 quetzalcoati,sven 是对的。如果我在控制面板中更改日期、时间和数字格式,这将更改 CurrentCulture,但不会更改 CurrentUICulture。 CurrentUICulture 用于或应该用于显示 UI 元素。请不要为此使用 CurrentCulture,因为最终用户可能希望显示不同的数字,但仍需要一致的 UI。不过,她不会被安装的文化所困扰。【参考方案2】:
使用System.Globalization.CultureInfo
类,您可以确定您想要什么。
CultureInfo.CurrentCulture
获得系统设置文化,CultureInfo.CurrentUICulture
获得用户设置文化。
【讨论】:
你对这两个属性的描述是错误的。CultureInfo.CurrentCulture
是用于格式化日期、数字等的文化,并从用户区域设置(区域设置)初始化。 CultureInfo.CurrentUICulture
是资源管理器用来查找字符串资源的文化,由操作系统的 UI 语言初始化。
Sven 正确指出了问题,但实际答案在别处。请参阅下面的 Mihai 的答案以及我在评论中包含的 MSDN 链接【参考方案3】:
"System.Globalization.CultureInfo.CurrentUICulture.DisplayName"
。这正是您想要的。
【讨论】:
【参考方案4】:您的意思是机器是否配置(例如)英语、法语或日语?
查看 CultureInfo 类 - 特别是 CurrentCulture,它是从操作系统当前区域设置初始化的。
【讨论】:
我认为我们在同一页上,但要准确回答他的问题:答案是“System.Globalization.CultureInfo.CurrentUICulture.DisplayName” 改为查看 CurrentUICulture。 CurrentCulture 并不是您真正想要的。 (见上面我的 cmets)【参考方案5】:表示如果系统区域设置在Region和Language上,可以使用Win32 API函数GetSystemDefaultLCID。签名如下:
[DllImport("kernel32.dll")]
static extern uint GetSystemDefaultLCID();
GetSystemDefaultLCID 函数返回 LCID。它可以从下表映射语言字符串。 Locale IDs Assigned by Microsoft
【讨论】:
【参考方案6】:以上所有答案似乎只能让您了解安装操作系统的文化(充其量)。我遇到了一个问题,我需要在 Windows 中使用实际的显示语言。即用户安装了默认的 en-US Windows 安装,但随后添加了德语 (de-DE) 语言包并将其设置为他们的显示语言。
为此,我使用了System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage
【讨论】:
【参考方案7】:System.Threading.Thread.CurrentThread.CurrentCulture
【讨论】:
以上是关于从 c# 检测操作系统语言的主要内容,如果未能解决你的问题,请参考以下文章