回答:
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
リソースファイル(リソース。その影響langは .RESX)アプリケーションによってロードされようとしています。
したがって、ドイツ語のリソース(おそらくローカライズされたテキスト)を読み込むUICulture
には、ドイツのカルチャに設定し、ドイツ語のフォーマットを表示するには(読み込まれるリソースに影響を与えない)を設定しCulture
ます。
CultureInfo
リソースファイルを決定するためだけにオブジェクト全体を使用することの意味は何string
ですか?(例:のLanguage
プロパティFrameworkElement
)
@Vacheのすばらしい説明に加えて考慮すべき小さな問題:(ページレベルとアプリケーションレベル)でUICultureとカルチャーの両方を設定できます。
それらをアプリケーションレベルで設定するには、web.configにグローバリゼーションセッションを追加するだけです。
例えば <globalization uiCulture="es" culture="es-MX" />
そして、特定の(個々の)ページに追加するのに適したページレベルでそれらを設定するには、@ pageディレクティブ内でCulture属性とUICulture属性を設定します。
例えば <%@ Page UICulture="es" Culture="es-MX" %>