131

有人能给我更多关于.NET框架之间Culture和内部的区别的信息吗?UICulture他们做什么以及何时使用什么?

4

4 回答 4

156

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.

于 2012-02-29T22:27:38.387 回答
2

Culture and UICulture

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

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

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

用于Culture文化相关函数,如日期、时间。并且UICulture用于正确加载资源文件。

于 2017-09-06T05:39:19.680 回答
0

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

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

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

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

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

于 2016-05-29T05:57:56.900 回答
-5

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

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

于 2015-08-07T13:32:54.773 回答