Home > C# > 目的別資料 > 地域設定

CultureとUICultureの設定

WPFのための地域設定の手引き Localization Guidance for WPF

原文

WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。
地域設定の実装の参考にしてください。

関連ファイル

CultureとUICultureの設定

Setting Culture and UICulture

先程、説明したように、現在のスレッドのCulture、そして、UICulture設定は、 エンドユーザーのための、特定のカルチャの書式設定と内容の表現を達成するために、 きわめて重要です。次のように、CurrentThreadとCultureInfoの両方の形式は、 現在のCultureとUICultureに、アクセスするために静的プロパティを公開します。:


CultureInfo ci = Thread.CurrentThread.CurrentCulture;
CultureInfo ci = Thread.CurrentThread.CurrentUICulture;
CultureInfo ci = CultureInfo.CurrentCulture;
CultureInfo ci = CultureInfo.CurrentUICulture;

あなたは、以後、一般的に、CurrentThread形式を使用するでしょう。それは、現在のスレッドの設定を変更するために、 新しいCultureInfoインスタンスを割当てることができます。 例えば、次に示すコードは、どのように、現在のCultureとUICultureを、変更できない値に設定するかを具体的に説明します。:


CultureInfo ci = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

既定では、UIスレッドは、アプリケーションが動作しているために、 Cultureと機械の地域設定と一致するUICultureと一緒に初期化されます。 言い換えると、アプリケーションが開始されるとき、それは、オペレーティングシステムからCultureとUICultureを継承します。 書式設定は、単純に、指定されたCulture設定を使用するでしょう。アプリケーションは、UICulture設定の場所に地域設定されたリソースを使用しようとします。 -それらが、存在すると仮定します。それらが、存在しない場合、ランタイムは、ユーザーに適切な存在するリソースを見つけ出すために、 リソース代替処理を使用します。-そして、これは、次のセクションで説明します。

オペレーティングシステムの既定のCultureとUICultureを使用している間、いくつかの場合では役に立ちます。 -すべてのユーザーが、カルチャ環境設定と一致した、オペレーティングシステムのバージョンで実行することを想定するのは、現実的でありません。 それは、常に、ユーザーのために、カルチャ環境設定を設定するための方法を提供することは、アプリケーションのために良い発想です。 -インストール中に、または、アプリケーション構成オプションの何らかの書式を通して。

理想的には、あなたは、使用される場所の設定可能な選択を可能にするために、 アプリケーションの設定ファイルやデータベースの構成の設定を使用することを望みます。

ユーザーのカルチャ選択がわかっていると想定すると、CultureとUICulture設定は、 WPFアプリケーションのライフサイクルのどこで、初期化する必要があるのでしょうか? WPFアプリケーションのための、明示的にアプリケーションのCultureとUICultureを設定する一番良い場所は、 中心となるコンストラクタのアプリケーションの起動中です。 これは、すべてのリソースに含まれるシステム・エラー・メッセージと最初のXAMLドキュメントが、 起動時に適切なカルチャ設定の読み込みを確実に行います。

次に示すコードは、App.xaml.csの中で見つけたアプリケーションのコンストラクタの構成の値からカルチャ設定を初期化します。:

public App()
{
// Set application startup culture based on config settings
//構成設定に基づくアプリケーション起動カルチャを設定します
string culture = ConfigurationManager.AppSettings["Culture"];
if (!string.IsNullOrEmpty(culture))
{
CultureInfo ci = new CultureInfo(culture);
// Force application to work with $ regardless of culture 
// カルチャに関係なく、アプリケーションに$で動作することを強制します
// Demonstrates customization of culture for app (optional)
// アプリ(選択可能な)のカルチャのカスタム化を表示します
ci.NumberFormat.CurrencySymbol = "$";
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
}

この構成は、CultureとUICultureが全く同一であることを想定しています。 -しかし、CultureとUICultureの指定されていないカルチャに、具体的なカルチャを使用できます。 実際に、Cultureは具体的な地域を設定する必要があります。 「en-US」や「fr-CA」のような、UICultureは「en」や「fr」に設定できます。 それは、言語が指定されていない地域設定は、具体的な地域よりも許容できることを示しています。

あなたが、アプリケーションの実行中に、カルチャ設定を変更する方法をユーザーに提供しない限り、 アプリケーション起動時にCultureとUICultureの設定を1度だけ実行する必要があります。 この場合、あなたは、もちろん、あなたのアプリケーション構成と、それに続くアプリケーションの再開をするために、 アプリケーションが適切なカルチャを再読み込みできるように、 どんな変更も保存する必要があります。この白書の後のセクションでは、 同様に、動作中のアプリケーションで動的なカルチャの変更する方法について説明します。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」