从 c# 检测操作系统语言

Posted

技术标签:

【中文标题】从 c# 检测操作系统语言【英文标题】:detect os language from c# 【发布时间】:2010-10-03 12:27:18 【问题描述】:

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

【问题讨论】:

【参考方案1】:

很遗憾,之前的答案并非 100% 正确。

CurrentCulture是正在运行的线程的文化信息,用于需要知道当前文化,但不做任何显示的操作。 CurrentUICulture 用于格式化显示,例如正确显示DateTime。 因为您可能会更改当前线程CultureUICulture,如果您想知道操作系统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# 检测操作系统语言的主要内容,如果未能解决你的问题,请参考以下文章

C#语言(第一部分:内存中的系统)

在使用 C# 语言进行人脸检测方面需要帮助 [关闭]

反正有没有使用javascript检测操作系统语言?

iOS4上的C语言毫秒睡眠

Qt:安装语言包时检测系统语言环境

如何使用 Python 或 Tesseract OCR 从输入图像中检测语言或脚本?