【发布时间】:2014-08-11 19:50:37
【问题描述】:
我将 Windows 8.1 控制面板中的区域/位置更改为南非。当我从 Visual Studio 2013 启动我的应用程序并获取 CultureInfo.CurrentUICulture 时,它仍然显示“en-US”。
public CultureInfo getCurrentCulture() {
if (CultureInfo.DefaultThreadCurrentUICulture != null) {
return CultureInfo.DefaulThreadCurrentUICulture;
} else {
return CultureInfo.CurrentUICulture;
}
}
我也尝试过 CultureInfo.CurrentCulture 而不是 CurrentUICulture,但它们的行为方式相同。如何通过代码确定用户的真实语言环境是什么?还是我通过 Windows 设置错误地设置了区域?
我的应用程序格式化货币字符串等,我需要确保它使用正确的货币符号。南非对我来说是一个很好的用例,因为他们仍然使用英语,只是有不同的区域数字格式。
【问题讨论】:
-
您是否也更改了系统区域设置(区域 -> 管理选项卡 -> 非 unicode 程序的语言)?
-
@MarcelN。我也将其设置为“英语(南非)”,文化信息仍然显示“en-US”
-
您是在更改“区域和语言”的“格式”选项卡下的“格式:”下拉菜单,还是“位置”选项卡下的“当前位置:”下拉菜单,或者两个都?警告:我使用的是 Win7,所以问题可能不适用。
-
@dbc 哦,看起来确实还有一个“格式”选项卡。我将其设置为“英语(南非)”并重新启动了我的应用程序,但 CultureInfo 仍然是“en-US”。 :/ 我想知道我是否希望我的用户必须经历所有这些,或者我是否应该为他们提供一个应用内区域选择器。
-
我对 VS2008 进行了一些实验,它看起来像 1)
CultureInfo.CurrentCulture由“格式”选项卡定义,2)当我重新运行我的应用程序时,并不总是会更改格式在 Visual Studio 中——可能是因为 Hosting Process 保留了过时的信息?关闭并重新打开解决方案可以解决此问题。从任务管理器中显式终止托管进程也可能会。
标签: c# internationalization .net-4.5 windows-8.1 cultureinfo