我有一个很奇怪的问题。我正在对我的项目实施本地化,但是当我尝试获取当前的语言环境Windows正在运行时,它会忽略国家/地区信息。这是一个示例代码:Thread.CurrentThread.CurrentUICulture不能正确返回国家
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中使用的显示语言匹配,而不是日期/时间/数字格式(它们可以完全不同)。
我刚刚尝试卸载法文语言包(FR-fr),然后从法文比利时安装。我仍然得到FR-fr。这是Windows的问题吗? –
水晶球表示您选择了另一个键盘布局,而不是更改操作系统语言。您必须使用“高级”按钮。非常不清楚你实际做了什么,可能最好先在superuser.com上ping这个。一定要提及Windows版本和版本,他们在每个版本中都对此进行了更改,并且您安装的语言包有很多。 –
我在Windows 8和10中测试过。它们都不起作用。我改变了OS语言安装的语言包和类似的东西(你只能在高级会话中这样做),就像我在前面的评论中提到的一样。对于CultureInfo类,需要System.Globalization为 –