CultureとUICultureの違いは何ですか?


126

誰かが.NETフレームワークCultureとの違いについて、さらに詳しい情報を教えてもらえUICultureますか?彼らは何をし、いつ何を使うのか?

回答:


148

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ます。


39
つまり、英語のラベルとUI(英語のUICulture)、ノルウェーの通貨、日付、時刻、数値のフォーマット(ノルウェーの文化)を使用できるということです。Windows用語では、メニューとダイアログボックスに言語パックがインストールされていると考えてください。 (UICulture)、ただしノルウェーの地域設定で実行(Culture。)
Lasse V. Karlsen

2
これの意味を強調するために:ユーザーの言語をサポートしていない場合でも、フォーマットのためにユーザーの文化をサポートしていることを確認してください!言語にフォールバックするだけでよいのに、文化と言語の両方でアプリが「en-US」にフォールバックするという誤りを見てきました。
ToolmakerSteve 2016

1
CultureInfoリソースファイルを決定するためだけにオブジェクト全体を使用することの意味は何stringですか?(例:のLanguageプロパティFrameworkElement
Wouter

2

Culture and UICulture

値は2文字の文字列のペアで、1つ目は言語を定義するためのもので、2つ目は地域を定義するためのものです。例:

en-GBここをen表しEnglishGB表すGreat Briton

en-USここをen表しEnglishUS表すUnited States

Culture日付、時刻などのカルチャー依存関数に使用します。そしてUICulture、正しいリソースファイルをロードするためです。


0

@Vacheのすばらしい説明に加えて考慮すべき小さな問題:(ページレベルとアプリケーションレベル)でUICultureとカルチャーの両方を設定できます。

それらをアプリケーションレベルで設定するには、web.configにグローバリゼーションセッションを追加するだけです。

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

そして、特定の(個々の)ページに追加するのに適したページレベルでそれらを設定するには、@ pageディレクティブ内でCulture属性とUICulture属性を設定します。

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


-4

UICultureプロパティはWebブラウザーごとに変わる可能性がありますが、Cultureは一定のままです。

文化の値は、en-USやen-GBなどの特定の文化にのみ設定できます。これにより、en-USとen-GBの通貨記号が異なる場合に、enに使用する正しい通貨記号を識別する必要がなくなります。ユーザーは、ブラウザーでUIカルチャとカルチャを設定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.