【发布时间】:2010-10-03 12:27:18
【问题描述】:
有没有办法从 c# 类中检测操作系统的语言?
【问题讨论】:
标签: c# operating-system
有没有办法从 c# 类中检测操作系统的语言?
【问题讨论】:
标签: c# operating-system
很遗憾,之前的答案并非 100% 正确。
CurrentCulture是正在运行的线程的文化信息,用于需要知道当前文化,但不做任何显示的操作。 CurrentUICulture 用于格式化显示,例如正确显示DateTime。
因为您可能会更改当前线程Culture 或UICulture,如果您想知道操作系统CultureInfo 究竟是什么,请使用CultureInfo.InstalledUICulture。
另外,还有一个关于这个主题的问题(比这个问题更新)有一个详细的答案:
【讨论】:
CurrentCulture 用于格式化日期和数字等,CurrentUICulture 用于查找资源。
使用System.Globalization.CultureInfo 类,您可以确定您想要什么。
CultureInfo.CurrentCulture 获得系统设置文化,CultureInfo.CurrentUICulture 获得用户设置文化。
【讨论】:
CultureInfo.CurrentCulture 是用于格式化日期、数字等的文化,并从用户区域设置(区域设置)初始化。 CultureInfo.CurrentUICulture 是资源管理器用来查找字符串资源的文化,由操作系统的 UI 语言初始化。
"System.Globalization.CultureInfo.CurrentUICulture.DisplayName"。这正是您想要的。
【讨论】:
您的意思是机器是否配置(例如)英语、法语或日语?
查看 CultureInfo 类 - 特别是 CurrentCulture,它是从操作系统当前区域设置初始化的。
【讨论】:
表示如果系统区域设置在Region和Language上,可以使用Win32 API函数GetSystemDefaultLCID。签名如下:
[DllImport("kernel32.dll")]
static extern uint GetSystemDefaultLCID();
GetSystemDefaultLCID 函数返回 LCID。它可以从下表映射语言字符串。 Locale IDs Assigned by Microsoft
【讨论】:
以上所有答案似乎只能让您了解安装操作系统的文化(充其量)。我遇到了一个问题,我需要在 Windows 中使用实际的显示语言。即用户安装了默认的 en-US Windows 安装,但随后添加了德语 (de-DE) 语言包并将其设置为他们的显示语言。
为此,我使用了System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage
【讨论】:
System.Threading.Thread.CurrentThread.CurrentCulture
【讨论】: