在.NET中存在CultureInfo
在类System.Globalization
命名空间。 它有两个类似的性质的的两个返回值CultureInfo
类型: CurrentCulture
和CurrentUICulture
。
它们之间有什么区别?
我应该使用哪一个的时候,为什么?
在.NET中存在CultureInfo
在类System.Globalization
命名空间。 它有两个类似的性质的的两个返回值CultureInfo
类型: CurrentCulture
和CurrentUICulture
。
它们之间有什么区别?
我应该使用哪一个的时候,为什么?
CurrentCulture
是系统默认的用户区域设置的.NET表示。 这控制默认号和日期格式等。
CurrentUICulture
指的是默认的用户界面语言,Windows 2000中引入这主要是关于您的应用程序的UI本地化/翻译部分的设置。
无论什么地方的系统配置有会在你的.NET应用程序的“当前”值的选项。
很多时候,他们都是一样的。 但我的系统上,他们将是不同的:我喜欢我的数字和日期在德国的格式,这样CurrentCulture
将是德国人,但我也喜欢学英语的所有应用程序,这样CurrentUICulture
是英语。
有关于这一主题的好文章: 整理这一切了:为什么我们既有的CurrentCulture和的CurrentUICulture
这是一个简单的技巧我使用记得要使用哪一个:
(date, currency, double).tostring = CurrentCulture
resource.fr-CA.resx file = currentUICulture
使除由各位用户,并在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文件中检索到在俄罗斯的本地化的字符串(如翻译可用)。
区别:
CurrentCulture
是日期和货币的格式,同时CurrentUICulture
去与语言/翻译。 它将被使用ResourceManager
通过文化来查找资源。 CurrentCulture
类是System.Globalization
同时CurrentUICulture
来自System.Threading
。 CurrentCulture
在会话跨越不同的请求而持续CurrentUICulture
需要每个请求进行设置。 神似:
他们都是System.Globalization.CultureInfo
实例。
值得一提的是, CurrentUICulture
支持非特定国家的语言环境如“en”(中性文化),而CurrentCulture
仅支持特定国家的语言环境如“en-GB”。 设置CurrentCulture
至中性文化将引发ArgumentException
。
我认为,这是因为格式,如日期和货币更密切相关国家本身,但显示的语言往往是国家之间互换。