是什么在.NET中的CultureInfo的的CurrentCulture和性能的CurrentUI

2019-05-10 17:20发布

在.NET中存在CultureInfo在类System.Globalization命名空间。 它有两个类似的性质的的两个返回值CultureInfo类型: CurrentCultureCurrentUICulture

它们之间有什么区别?

我应该使用哪一个的时候,为什么?

Answer 1:

CurrentCulture是系统默认的用户区域设置的.NET表示。 这控制默认号和日期格式等。

CurrentUICulture指的是默认的用户界面语言,Windows 2000中引入这主要是关于您的应用程序的UI本地化/翻译部分的设置。

无论什么地方的系统配置有会在你的.NET应用程序的“当前”值的选项。

很多时候,他们都是一样的。 但我的系统上,他们将是不同的:我喜欢我的数字和日期在德国的格式,这样CurrentCulture将是德国人,但我也喜欢学英语的所有应用程序,这样CurrentUICulture是英语。

有关于这一主题的好文章: 整理这一切了:为什么我们既有的CurrentCulture和的CurrentUICulture



Answer 2:

这是一个简单的技巧我使用记得要使用哪一个:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture


Answer 3:

使除由各位用户,并在Web应用程序开发的一个重要方面做了很好的解释差异的一个好方法如下:

  • CurrentCulture代表Web服务器的设置。 例如,如果你的ASP.NET Web应用程序在德国举行,价值CutlureInfo.CurrentCulture将最可能de-DE 。 因此,默认.ToString()格式化IFormattable的类型,将使用默认的德国打印格式,或已设立了服务器操作系统的默认值上的人。

  • CurrentUICulture可以从用户代理被捕获,并且可表示客户端连接到该网站的用户界面培养。 例如,如果您加载来自俄罗斯的那个网站,你的本地设置被设置为使用俄语,和您的用户代理发送你的本地设置服务器(Opera和IE自动完成此操作,不知道对Chrome和Firefox),该CurrenUICulture将代表ru-RU 。 这将导致任何资源,如通过ResourceManager的或定位表达式ASP.NET ASPX / ASCX文件中检索到在俄罗斯的本地化的字符串(如翻译可用)。



Answer 4:

区别:

  1. CurrentCulture是日期和货币的格式,同时CurrentUICulture去与语言/翻译。 它将被使用ResourceManager通过文化来查找资源。
  2. 的命名空间CurrentCulture类是System.Globalization同时CurrentUICulture来自System.Threading
  3. CurrentCulture在会话跨越不同的请求而持续CurrentUICulture需要每个请求进行设置。

神似:

他们都是System.Globalization.CultureInfo实例。



Answer 5:

值得一提的是, CurrentUICulture支持非特定国家的语言环境如“en”(中性文化),而CurrentCulture仅支持特定国家的语言环境如“en-GB”。 设置CurrentCulture至中性文化将引发ArgumentException

我认为,这是因为格式,如日期和货币更密切相关国家本身,但显示的语言往往是国家之间互换。



文章来源: What is the difference between CurrentCulture and CurrentUICulture properties of CultureInfo in .NET?