我有一个非常奇怪的问题。我正在我的项目上实现本地化,但是当我尝试获取Windows正在运行的当前语言环境时,它会错过国家/地区信息。这是一个示例代码:
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo culture = CultureInfo.CurrentUICulture;
Console.WriteLine("The current UI culture is {0} [{1}]",
culture.NativeName, culture.Name);
}
}
当我使用最常用的语言(En-US,FR-fr)运行时,它会正确返回。但是,当我从比利时选择法语时,它会检索FR-fr而不是FR-be - 即使我从语言偏好选项中删除了法国的法语。
我想知道无论我的软件位于哪个国家/地区,我怎么能一直正确选择我所选择的国家。
ps:使用CurrentCulture并不是我正在寻找的答案,因为我希望匹配我在UI中使用的显示语言,而不是日期/时间/数字格式(他们可以完全不同。)
答案 0 :(得分:1)
我认为比你在标题中使用错误。
MS使用system.thread而不是system.globalization https://msdn.microsoft.com/it-it/library/system.globalization.cultureinfo.currentuiculture(v=vs.110).aspx 其中一些存在编译错误。
正确的编译代码是:
(请注意CultureInfo.CurrentCulture是readonly,而不是我使用了可以访问setter的System.Threading.Thread.CurrentThread.CurrentCulture)
<!--build:js-->
<!-- endbuild -->