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

它们之间有什么区别?

我应该何时使用哪一个以及为什么?

有帮助吗?

解决方案

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

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

不管区域选项的系统被配置为具有将在您的NET应用程序的“当前”值。

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

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

其他提示

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

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

差异:

  1. CurrentCulture 用于格式化日期和货币 CurrentUICulture 与语言/翻译一起使用。它将被使用 ResourceManager 按文化查找资源。
  2. 的命名空间 CurrentCulture 班级在 System.Globalization 尽管 CurrentUICulture 来自 System.Threading.
  3. CurrentCulture 在会话中的不同请求中持续存在 CurrentUICulture 需要根据每个请求进行设置。

相似度:

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

除了其他用户所做的精彩解释之外,还有一个产生影响的好方法,这也是 Web 应用程序开发中的一个重要方面:

  • CurrentCulture 代表网络服务器的设置。例如,如果您的 ASP.NET Web 应用程序托管在德国,则值 CutlureInfo.CurrentCulture 最有可能的是 de-DE. 。因此,默认的 .ToString() 格式化为 IFormattable 类型将使用默认的德语格式,或在服务器操作系统上设置的默认格式。

  • CurrentUICulture 可以从用户代理捕获,并且可以代表连接到网站的客户端的用户界面文化。例如,如果您从俄罗斯加载该网站,则您的本地设置设置为使用俄语,并且您的用户代理将您的区域设置发送到服务器(Opera 和 IE 自动执行此操作,Chrome 和 FireFox 不确定), CurrenUICulture 将代表 ru-RU. 。这将导致任何资源(例如通过 ResourceManager 检索的本地化字符串或 ASP.NET aspx/ascx 文件中的本地化表达式)为俄语(如果有翻译)。

值得注意的是,CurrentUICulture支持非国家特定区域设置如“en”(中性培养物)而CurrentCulture仅支持国家特定区域设置如“en-GB”。设置CurrentCulture到中性培养将引发ArgumentException

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top