c#的CultureInfo.CurrentCulture显示的是en_US,但是我的Windows设置是南非
本文关键字:Windows 我的 设置 CurrentCulture CultureInfo 显示 en US | 更新日期: 2023-09-27 18:17:35
我将Windows 8.1控制面板中的区域/位置更改为南非。当我从Visual Studio 2013中启动我的应用程序并获得CultureInfo。现在的文化仍然是"en-US"。
public CultureInfo getCurrentCulture() {
if (CultureInfo.DefaultThreadCurrentUICulture != null) {
return CultureInfo.DefaulThreadCurrentUICulture;
} else {
return CultureInfo.CurrentUICulture;
}
}
我也试过CultureInfo。CurrentCulture而不是currentuicculture,但它们的行为方式是一样的。如何通过代码确定用户的实际语言环境?还是我通过Windows设置错误地设置了该区域?
我的应用程序格式货币字符串等,我需要确保它使用正确的货币符号。南非对我来说是一个很好的用例,因为他们仍然使用英语,只是有不同的地区数字格式。
我想我应该做一个回答。
Windows区分用户的物理位置、所需的本地化(格式化)属性和运行语言。例如,说西班牙语的用户可能位于英国,但希望使用美式英语格式。CultureInfo.CurrentCulture
是指区域控制面板"格式"选项卡下的设置。(上面一个链接显示的用户界面对于Win8来说有点过时;查看Win8的类似程序)
这篇文章提供了关于各种文化属性以及如何在用户界面中设置它们的更多信息:YACVCP(又是一篇CurrentCulture vs. currentuicculture的文章)
因此,要测试南非货币字符串等,您必须将"格式"更改为"英语(南非)"并重新运行。
另外,通过实验,我发现Visual Studio 2008(我正在使用的)在我重新运行应用程序时并不总是拾取区域设置的更改。这可能是托管进程的某种bug。重新启动并运行我的应用程序通常似乎可以解决这个问题。关闭和重新打开Visual Studio总是这样。
(注意——我使用的是Win7)