问题 为什么我的CurrentCulture en-GB和我的CurrentUICulture en-US


我有一个C#应用程序,它必须在具有不同文化设置的机器上运行。没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。嗯,不,它会让事情变得不对劲。

我有一台Windows XP机器,区域和语言选项设置为英语美国,但当我的应用程序启动时,它报告我的 CurrentCulture 是 en-GB 和我的 CurrentUICulture 是 en-US

如何让我的程序只使用PC设置的任何内容?

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

谢谢


3468
2017-11-13 23:08


起源

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


答案:


Windows服务通常不会在您的UserAccount下运行,然后无关紧要 你的 区域设置是。它是关于系统帐户的区域设置。我猜你跑了 en-GB Windows版本,系统帐户仍然使用它。

有办法获得该帐户,请检查 超级用户


6
2017-11-13 23:54



是的,它以en-GB加载并更改为en-US。我想这会解决它。我现在要去吧。 - SnAzBaZ
工作。非常感谢。 - SnAzBaZ


我相信以下是真的:

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

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


4
2017-11-14 00:32





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

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

System.Globalization.CultureInfo.InstalledUICulture

1
2017-11-13 23:34



谢谢。我已经检查了这一点,我没有将它设置在任何地方,我唯一一次使用System.Globalization就是现在看看CurrentCulture的设置。我打算将我的开发PC改为en-US,看看是否能解决它。 - SnAzBaZ
哦,InstalledUICulture报告en-US,它只是CurrentCulture仍然坚持它的en-GB :-( - SnAzBaZ