原文
WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。地域設定の実装の参考にしてください。
関連ファイル
Resxリソースとその動作
Working with Resx Resources
Resxリソースは、.resxファイルに格納されて、Visual Studioで最初のクラス・サポートを享受します。 あなたは、単純に、リソース・ファイルをプロジェクトに追加し、リソース・キーと値を追加することで、Resxリソースを作製することができます。 リソース・ファイルを地域設定するために、単純に、既定のリソース・ファイルをコピーして、場所を一致させるために、その名前を変更します。 地域設定されたリソースは、.resx拡張子の前に場所の識別子が含まれています。 例えば、主要なアセンブリのResources.resxというファイルは、ドイツの場所のバージョンの具体的な(de-DE)や指定されていない(de)ために、 Resources.de-DE.resxやResources.de.resxと名付けられます。 Figure 2は、Visual Studioでのリソースの動作を図で説明します。
FIGURE 2:
Visual StudioのResxリソースのサポートは、高機能です。そして、それを調べるのが比較的、簡単です。 そして、編集/同期サポートが、直接、一緒に存在しませんが、リソースを双方向で変更します。
Resxリソースは、XMLに基づく.resxファイルに格納されて、自動的に、リソースのバイナリ画像を表示する.resourceファイルにコンパイルされています。 このバイナリ画像は、続いて、適切なアセンブリに組み込まれます。 中心となるアセンブリは、すべての既定のリソースが含まれています。プロジェクトに、適切なファイル命名規則による、地域設定されたリソースが含まれている場合、 サテライト・アセンブリは、自動的に、それぞれの場所の下に、\de-DEと\deのような、特定のカルチャのフォルダが作成されます。 これらのサテライト・アセンブリは、適切な地域設定されたリソースが含まれています。 Figure 3は、どのように、サテライト・アセンブリをResxリソースから生成するかを図解します。
FIGURE 3:
Resxリソースは、XMLで書式設定され、具体的なカルチャのために、中心となるアセンブリやサテライト・アセンブリのアセンブリ・リソースにコンパイルされ組み込まれます。
上で述べたように、それぞれの具体的なカルチャのリソースは、アプリケーションの目標とする出力フォルダの下のフォルダに配置される別々のサテライト・アセンブリに格納されます。 それぞれのカルチャは、Figure 4で示されるように、中心となるアセンブリ(.exeや.dll)のような、 .resources.dll拡張子と同じ名前の含まれるサテライト・アセンブリを順番にフォルダを取得します。
FIGURE 4:
地域設定されたResxリソースは、アプリケーション・フォルダの下でサテライト・アセンブリに格納されて、地域設定されたバージョンが含まれています。
Resxリソースは、リソース・キーと値のコレクションであるリソースのまとまりとして、内部に格納されます。それぞれのリソースのまとまりは、 Resxファイルに対応して、地域設定できる、それぞれのリソース・キーの何らかの数字が含まれています。 Figure 4に、3つのリソースのまとまりがあります:既定のResources.resxファイルとある2つの他の選択可能なresxファイルは、 アプリケーションによって使用されます。アプリケーションがコンパイルされるとき、サテライト・アセンブリは、どんな地域設定されたリソースでも自動的に生成されます。 それで、あなたが、Resources.resxを持っている場合、 そして、あなたは、同様に、コンパイラが自動的に作成するサテライト・アセンブリを\deフォルダに、Resource.de.resxを作成しました。 そして、それらのリソースはそれにコンパイルしました。
既定のリソースは、特別な場合であり、あなたのプロジェクトが、どのように設定されているかによります。 それらは、外部サテライト・アセンブリや内部の中心となるアセンブリのどちらかに格納することができます。 先程、述べたように、あなたが、BAML地域設定と組み合わせてResxリソースを使用する場合、 あなたは、既定のリソースをサテライト・アセンブリに格納する必要があります。 Figure 5は、どのようにリフレクタを使用して、コンパイルされたアセンブリとサテライト・アセンブリがリソースに配置されるかを図で示します。
FIGURE 5:
Resxリソースは、アセンブリにコンパイルされて、リソースの設定に格納されます。それは、それぞれのリソース・エントリのResourceSet名は、 どのようにResourceManagerが、これらのリソースを見つけ出し読み込むか決定するために重要である、それぞれのResxファイルのキーと値の組合せを表します。
それぞれのResourceSet名は、既定のプロジェクトの名前空間(WpfLocalizationResx)に加えて、プロジェクトの階層構造(Properties)のリソースのパスに加えて、 すべての切り離された期間のファイル(Resources)の名前で構成されます。:WpfLocalizationResx.Properties.Resources.