在 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 中获取当前语言的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CultureInfo 生成本地化日期字符串

.Net 中当前 CultureInfo 的距离单位

如何翻译 CultureInfo 语言名称

如何在 C# 中获取当前的区域设置?

如何在 ASP .NET MVC 中使用 Resources 和 CultureInfo 更改站点语言?

获取一个国家的默认时区(通过 CultureInfo)