在 CultureInfo 中获取当前语言
Posted
技术标签:
【中文标题】在 CultureInfo 中获取当前语言【英文标题】:Get current language in CultureInfo 【发布时间】:2011-05-11 15:07:32 【问题描述】:如何使用CultureInfo
识别操作系统的语言?例如。如果Windows中的语言设置为法语,我需要识别法语并加载fr
资源文件数据。
【问题讨论】:
你的答案可能是这个***.com/questions/329033/… 如果您使用的是 .NET 资源文件(.resx
文件),那么系统会为您处理。
是的,我知道,但是我没有添加普通话资源文件,并且计算机被设置为普通话语言作为其默认语言,所以我正在寻找正确的语言。谢谢。
【参考方案1】:
我认为这样的事情会给你当前的 CultureInfo:
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
这就是你要找的吗?
【讨论】:
我会使用 CultureInfo.CurrentCulture ,它的作用相同,但写起来更短。不幸的是,CurrentCulture 和 CurrentUICulture 都不会返回操作系统语言。首先返回当前格式设置,其次返回用户首选的用户界面语言。 用户可以设置与文化设置没有共同点的系统语言设置...因为这是两种完全不同的设置【参考方案2】:这是我用的:
var culture = System.Globalization.CultureInfo.CurrentCulture;
它正在工作:)
【讨论】:
【参考方案3】:当前系统语言检索使用:
CultureInfo.InstalledUICulture
“获取表示随操作系统安装的区域性的 CultureInfo。”
InstalledUICulture
将其设置为线程使用的默认语言:
System.Globalization.CultureInfo.DefaultThreadCurrentCulture=CultureInfo.InstalledUICulture;
【讨论】:
【参考方案4】:我尝试了CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
,但它对我不起作用,因为我的 UI 文化与我的数字/货币文化不同。所以我建议你使用:
CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture;
这将为您提供 UI 的文化(窗口上的文本、消息框等)。
【讨论】:
【参考方案5】:要获取 2 个字符的 ISO 639-1 语言标识符,请使用:
System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
【讨论】:
【参考方案6】:Windows.System.UserProfile.GlobalizationPreferences.Languages[0]
这是获取当前设置的系统语言的正确方法。系统语言设置与您都想从中获取语言的文化设置完全不同。
例如:用户可以同时使用“en-GB”语言和“en-US”文化。使用 CurrentCulture 和其他文化,您将获得“en-US”,希望您能有所作为(这在 GB-US 中可能微不足道,但对于其他语言?)
【讨论】:
以上是关于在 CultureInfo 中获取当前语言的主要内容,如果未能解决你的问题,请参考以下文章