文化与UICulture有什么区别?

有人可以给我一些关于.NET框架中的CultureUICulture之间的区别的信息吗? 他们做什么和什么时候使用什么?

Culture影响文化依赖的数据(date,货币,数字等)的呈现方式。 这里有一些例子:

 var date = new DateTime(2000, 1, 2); var number = 12345.6789; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); Console.WriteLine(date); // 02.01.2000 00:00:00 Console.WriteLine(number.ToString("C")); // 12.345,68 € Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); Console.WriteLine(date); // 2000-01-02 00:00:00 Console.WriteLine(number.ToString("C")); // 12 345,68 $ Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Console.WriteLine(date); // 1/2/2000 12:00:00 AM Console.WriteLine(number.ToString("C")); // $12,345.68 

文化也以同样的方式影响用户input的parsing:

 const string numberString = "12.345,68"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberString); // OK! Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false 

注意parsing成功的情况,但结果不是你所期望的。

 const string numberString = "12.345"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberString); // 12345 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberString); // 12.345, where the . is a decimal point 

UICulture影响哪个资源文件(Resources.lang.resx)将由您的应用程序加载。

因此,加载德国资源(大概是本地化的文本),你将UICulture设置为德国文化,并显示德国格式(没有任何影响加载哪些资源),你会设置Culture

Culture and UICulture

值是一对双字母string,第一个用于定义语言,第二个用于定义区域。 例:

en-GB在这里代表EnglishGB代表Great Briton

en-US在这里代表EnglishUS代表United States

使用Culture的文化依赖function,如date,时间。 和UICulture是为了正确的资源文件加载。

除了@ Vache的真棒解释之外,还有一点需要考虑:您可以在页面级和应用级设置UICulture和Culture。

为了在应用程序级别设置它们,只需在web.config中添加全球化会话即可

例如<globalization uiCulture="es" culture="es-MX" />

要在页面级别设置它们,可以在特定(个人)页面上添加,可以在@ page指令中设置Culture和UICulture属性

例如<%@ Page UICulture="es" Culture="es-MX" %>

UICulture属性可能会改变每个Web浏览器,而文化保持不变。

文化价值可以设置为特定的文化,如en-US或en-GB。 这可以防止识别用于en的正确货币符号的要求,其中en-US和en-GB具有不同的货币符号。 用户可以在浏览器中设置UI文化和文化。

Interesting Posts