C# CultureInfo.CurrentCulture 显示 en_US 但我的 Windows 设置设置为南非

2024-03-02

我将 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 设置错误地设置了区域?

我的应用程序格式化货币字符串等,我需要确保它使用正确的货币符号。南非对我来说是一个很好的用例,因为他们仍然使用英语,但只是有不同的区域数字格式。


我想我应该回答这个问题。

Windows 区分用户的物理位置、所需的本地化(格式)属性和运行语言。例如,讲西班牙语的用户可能位于英国,但想要美式英语格式。CultureInfo.CurrentCulture http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture%28v=vs.110%29.aspx指的是下面的设置“格式” http://blogs.msdn.com/b/ddietric/archive/2008/02/05/yacvcp-yet-another-currentculture-vs-currentuiculture-post.aspx的选项卡Regions https://superuser.com/questions/497857/how-to-change-language-for-non-unicode-programs-in-windows-8控制面板。 (上面链接之一中显示的用户界面对于 Win8 来说有点过时;请参阅here http://www.eightforums.com/tutorials/32820-date-time-format-change-windows-8-a.html对于 Win8 类似物。)

本文提供了有关各种区域性属性以及如何在用户界面中设置它们的更多信息:YACVCP(又一个 CurrentCulture 与 CurrentUICulture 的帖子) http://blogs.msdn.com/b/ddietric/archive/2008/02/05/yacvcp-yet-another-currentculture-vs-currentuiculture-post.aspx

因此,要测试南非货币字符串等,您必须将“格式”下拉列表更改为“英语(南非)”并重新运行。

另外,通过实验,我发现当我重新运行应用程序时,Visual Studio 2008(我正在使用的)并不总是能够识别区域设置的更改。这可能是某种错误托管流程 http://msdn.microsoft.com/en-us/library/ms185330.aspx。重新启动并重新运行我的应用程序通常似乎可以解决问题。关闭并重新打开 Visual Studio 总是会这样。

(注意——我使用的是Win7。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# CultureInfo.CurrentCulture 显示 en_US 但我的 Windows 设置设置为南非 的相关文章

随机推荐