繁体   English   中英

在.NET应用程序中在哪里设置默认区域性

[英]Where does the default culture get set in a .NET application

我正在编写WPF应用程序,并且在文化方面遇到一些困难。

我想知道没有显式设置任何值时.NET应用程序在哪里获取CurrentThread.CurrentCulture的值。 它不是来自Windows文化信息,因为我已将其从en-US更改为en-GB,而没有在运行时注意到应用程序中的任何更改。

请帮忙!

标记

精美的手册中

请参阅CultureInfo.CurrentCulture属性,以了解如何确定线程的默认区域性,以及用户如何为计算机设置区域性信息。

稍后费力地单击一下...

如何确定线程的文化

启动线程时,最初的区域性确定如下:

  • 如果属性值不为null ,则通过在执行线程的应用程序域中检索DefaultThreadCurrentCulture属性指定的区域性。

  • 通过调用Windows GetUserDefaultLocaleName函数。

请注意,如果您设置的特定区域性与系统安装的区域性或用户的首选区域性不同,并且您的应用程序启动了多个线程,则除非您另行指定,否则这些线程的当前区域性将是GetUserDefaultLocaleName函数返回的区域性。在执行线程的应用程序域中,将区域性分配给DefaultThreadCurrentCulture属性。

有关如何确定线程的区域性的更多信息,请参见CultureInfo主题中的“文化和线程”部分。

我没有为其他点击预算,但还是点击了

文化和线程

启动新的应用程序线程时,其当前区域性和当前UI文化由当前系统区域性定义,而不是由当前线程区域性定义。 以下示例说明了差异。 它将应用程序线程的当前文化和当前UI文化设置为法国(法国)文化(fr-FR)。 如果当前文化已经是fr-FR,则该示例将其设置为英语(美国)文化(en-US)。 它显示三个随机数作为货币值,然后创建一个新线程,该线程又显示另外三个随机数作为货币值。 但是,如该示例的输出所示,新线程显示的货币值不反映法国(法国)文化的格式约定,这与主应用程序线程的输出不同。

请注意,它表示何时启动新的应用程序线程 因此,假设您说:

它不是来自Windows文化信息,因为我已将其从en-US更改为en-GB,而没有在运行时注意到应用程序中的任何更改。

您可能需要查看此答案

如果未指定特定区域性,或者使用空字符串代替区域性名称,则使用InvariantCulture

它与英语相关,但与任何国家/地区无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM