【问题标题】:Why is my CurrentCulture en-GB and my CurrentUICulture en-US为什么我的 CurrentCulture en-GB 和我的 CurrentUICulture en-US
【发布时间】:2009-11-13 23:08:48
【问题描述】:

我有一个 C# 应用程序,它必须在具有不同文化设置的机器上运行。我认为没问题,它只会在启动时查找机器上当前的文化,并为我做所有事情。好吧,不,它会缝出一些不太对劲的地方。

我有一台 Windows XP 机器,将区域和语言选项中的所有内容都设置为美国英语,但是当我的应用程序启动时它报告我的 CurrentCultureen-GB 而我的 CurrentUICultureen-US

我怎样才能让我的程序只使用 PC 设置的任何内容?

这是一个 Windows 服务应用程序,如果它有任何区别的话。

谢谢

【问题讨论】:

  • 这是否与我在具有 en-GB 设置的机器上编译应用程序,然后在具有 en-US 设置的机器上执行它的事实有关?我只是看不到我的 en-GB 来自哪里,我的开发机器是唯一的链接。

标签: c# globalization cultureinfo


【解决方案1】:

Windows 服务通常不会在您的 UserAccount 下运行,因此 您的 区域设置是什么并不重要。这是关于系统帐户的区域设置。我猜你运行的是en-GB 版本的 Windows,系统帐户仍然使用它。

有办法进入该帐户,请查看SuperUser

【讨论】:

  • 是的,它被加载为 en-GB 并更改为 en-US。我认为这将解决它。我现在就去。
【解决方案2】:

我相信以下是正确的:

  • CurrentCulture(影响数字和日期格式)将反映运行应用程序的帐户的区域设置。您可以使用当前用户的控制面板/区域设置轻松更改此设置,如果您是管理员,还可以使用“默认”用户,该用户用于经常用于 Windows 服务的系统帐户。要更改默认用户,在某处有一个“用作默认用户”按钮。

  • CurrentUICulture 将对应于您正在使用的 Windows 版本的语言。对于 MUI 版本,您可以在控制面板中更改此设置,但对于单语言版本则不能。

【讨论】:

    【解决方案3】:

    我知道你可以将你的不变文化设置为构建的一部分,但是当我读到这篇文章时,我很惊讶你的构建框的文化变成了你的不变文化。您是否尝试过在所有文件中搜索 en-GB 以确保它没有在某处默认?

    无论如何,有一个解决方法。如果您想用 O/S 文化覆盖它,您可以在以下位置获取它并将您的 CurrentCulture 和 CurrentUICulture 属性设置为它:

    System.Globalization.CultureInfo.InstalledUICulture
    

    【讨论】:

    • 谢谢。我已经检查过了,我没有在任何地方设置它,我唯一一次使用 System.Globalization 就是现在查看 CurrentCulture 设置的内容。我打算把我的开发电脑改成 en-US 看看能不能解决。
    • 哦,InstalledUICulture 报告 en-US,只是 CurrentCulture 仍然坚持它是 en-GB :-(
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多