.NET中CultureInfo的CurrentCulture和CurrentUICulture属性之间有什么区别?


358

在.NET CultureInfo中,System.Globalization名称空间中有类。它具有两个相似的属性,均返回CultureInfo类型的值:CurrentCultureCurrentUICulture

它们之间有什么区别?

什么时候以及为什么要使用哪一个?


28
谨记,Microsoft不会将美国英语和(英国)英语或其他英语的UI文化区分开来。没有用于英语的MUI,这意味着CurrentUICulture无论CurrentCulture将设置为本地化“区域设置” 如何,它将始终在英语计算机上使用en-US 。
nicodemus13 2012年

11
是。我在英国,发现CurrentCulture是“ en-GB”,但是CurrentUICulture是“ en-US”。
Panic Panic 2012年

刚刚找到这篇文章详细解释了这一点:github.com/jbe2277/waf/wiki/CurrentCulture-vs.-CurrentUICulture
RinoTom

Answers:


346

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

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

系统配置为具有的任何区域选项将是.NET应用程序中的“当前”值。

通常,它们都是相同的。但是在我的系统上,它们会有所不同:我更喜欢用德语格式的数字和日期,所以CurrentCulture将是德语,但是我也更喜欢我所有使用英语的应用程序,所以CurrentUICulture将是英语。

关于该主题有一篇不错的文章:全部整理:为什么我们同时拥有CurrentCulture和CurrentUICulture


5
实际上,这可能是深入解释的一个不错的选择:forums.asp.net/post/1080435.aspx
Michael12345 2013年

@ Michael12345感谢您的提示。我已经更新了链接。您链接到的帖子也很不错,甚至更好。
Tomalak

5
那就是可怕的名字,因为CurrentUICulture实际上意味着CurrentLanguageCulture,而CurrentCulture实际上意味着CurrentDataCulture。
Pxtl

2
@Pxtl:我选择使用CurrentFormattingCulture而不是CurrentDataCulture。不过,请注意,即使您的名字暗示了这些,也可能没有那么明显的脱节。例如,我认为长日期格式(D)可以包含一些“语言”:en-US返回“ 2018年4月6日,星期五”,而ru-RU返回“ 6апреля2018г.”。
OR Mapper


15

除了其他用户所做的出色解释之外,一种使您有所作为的好方法,以及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文件中的本地化表达式)都变为俄语(如果可用翻译)。



8

值得注意的是,CurrentUICulture支持非特定于国家/地区的语言环境,例如“ en”(中性文化),而CurrentCulture仅支持特定国家/地区的特定语言环境,例如“ en-GB”。设置CurrentCulture一种中立的文化将会产生负面影响ArgumentException

我认为这是因为诸如日期和货币之类的格式与国家/地区本身联系更为紧密,但是显示的语言通常在国家/地区之间可以互换。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.