Culture和UICulture有什么区别?

时间:2012-02-29 22:22:21

标签: .net culture uiculture

有人可以向我提供有关.NET框架中CultureUICulture之间差异的更多信息吗?他们做什么以及何时使用什么?

4 个答案:

答案 0 :(得分:140)

Culture会影响文化相关数据(日期,货币,数字等)的呈现方式。以下是一些例子:

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

文化也会以同样的方式影响用户输入的解析:

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

请注意解析成功的情况但结果不是您期望的结果。

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。< / p>

答案 1 :(得分:1)

Culture and UICulture

值是两个字母的字符串对,第一个用于定义语言,第二个用于定义区域。 例如:

en-GB此处en代表EnglishGB代表Great Briton

en-US此处en代表EnglishUS代表United States

Culture用于与文化相关的功能,例如日期,时间。 和UICulture用于正确加载资源文件。

答案 2 :(得分:0)

除了@Vache的精彩解释外,还需要考虑一件小事: 您可以在(页面级别和应用程序级别)设置UICulture和Culture。

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

e.g。 <globalization uiCulture="es" culture="es-MX" />

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

e.g。 <%@ Page UICulture="es" Culture="es-MX" %>

答案 3 :(得分:-4)

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

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