在.NET CultureInfo
中,System.Globalization
名称空间中有类。它具有两个相似的属性,均返回CultureInfo
类型的值:CurrentCulture
和CurrentUICulture
。
它们之间有什么区别?
什么时候以及为什么要使用哪一个?
CurrentCulture
是“ en-GB”,但是CurrentUICulture
是“ en-US”。
在.NET CultureInfo
中,System.Globalization
名称空间中有类。它具有两个相似的属性,均返回CultureInfo
类型的值:CurrentCulture
和CurrentUICulture
。
它们之间有什么区别?
什么时候以及为什么要使用哪一个?
CurrentCulture
是“ en-GB”,但是CurrentUICulture
是“ en-US”。
Answers:
CurrentCulture
是系统默认用户区域设置的.NET表示形式。这控制默认的数字和日期格式等。
CurrentUICulture
指默认的用户界面语言,Windows 2000中引入的一种设置。这主要与应用程序的UI本地化/翻译部分有关。
系统配置为具有的任何区域选项将是.NET应用程序中的“当前”值。
通常,它们都是相同的。但是在我的系统上,它们会有所不同:我更喜欢用德语格式的数字和日期,所以CurrentCulture
将是德语,但是我也更喜欢我所有使用英语的应用程序,所以CurrentUICulture
将是英语。
关于该主题有一篇不错的文章:全部整理:为什么我们同时拥有CurrentCulture和CurrentUICulture
D
)可以包含一些“语言”:en-US
返回“ 2018年4月6日,星期五”,而ru-RU
返回“ 6апреля2018г.”。
这是我用来记住要使用的简单技巧:
(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
每个请求都需要设置。相似度:
CurrentUICulture
无论CurrentCulture
将设置为本地化“区域设置” 如何,它将始终在英语计算机上使用en-US 。