【发布时间】:2017-07-22 12:35:51
【问题描述】:
我希望 string.Format() 和 .ToString() 调用使用不变文化,而不是系统文化。
System.Globalisation.CultureInfo.CurrentCulture 属性在 Windows 应用商店应用中是只读的,因此不能直接更改,这与 .NET 4.6 及更高版本不同。
我尝试使用System.Globalization.CultureInfo.DefaultThreadCurrentCulture(根据documentation 应该可以工作),但它并没有改变任何东西:
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = System.Globalization.CultureInfo.InvariantCulture;
var c1 = System.Globalization.CultureInfo.CurrentCulture;
Task.Run(delegate
{
var c2 = System.Globalization.CultureInfo.CurrentCulture;
});
上面的代码执行后,c1和c2仍然包含我的本地系统文化,而不是不变的文化。 string.Format 仍然使用我的本地文化设置生成字符串。
肯定有办法改变线程的文化吗?
【问题讨论】:
-
你能设置
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride吗? -
@mjwills 这似乎有效,谢谢!尽管奇怪的是它不会立即起作用,但要经过一段时间后才能起作用。另外我不知道如何指定“不变”语言(CultureInfo.InvariantCulture)。
标签: c# windows-store-apps globalization