ローカリゼーション用リソースの階層編成Hierarchical organization of resources for localization

Visual Studio では、ローカライズされたリソース (各カルチャに対応した文字列や画像などのデータ) は、UI カルチャの設定に従って個別のファイルに保存され、読み込まれます。In Visual Studio, localized resources (data such as strings and images appropriate to each culture) are stored in separate files and loaded according to the UI culture setting. ローカライズされたリソースの読み込みの仕組みを理解するには、リソースが階層状に整理されていると考えるとわかりやすくなります。To understand how localized resources are loaded, it is useful to think of them as organized in a hierarchical manner.

階層内のリソースの種類Kinds of resources in the hierarchy

  • 階層の最上部には、既定のカルチャ (英語 ("en") など) のフォールバック リソースが配置されています。The fallback resources for your default culture, for example English ("en"), sit at the top of the hierarchy. これらのフォールバック リソースは独自のファイルを持たない唯一のリソースであり、メイン アセンブリに格納されています。These fallback resources are the only ones that do not have their own file; they are stored in the main assembly.

  • フォールバック リソースの下には、ニュートラル カルチャのリソースがあります。Below the fallback resources are the resources for any neutral cultures. ニュートラル カルチャは、言語に関連付けられ、国や地域には関連付けられません。A neutral culture is associated with a language but not a country/region. たとえば、フランス語 ("fr") はニュートラル カルチャです For example, French ("fr") is a neutral culture. (フォールバック リソースもニュートラル カルチャのリソースですが、特別なものです)。(The fallback resources are also for a neutral culture, but a special one.)

  • ニュートラル カルチャ リソースの下には、特定のカルチャのリソースがあります。Below the neutral culture resources are the resources for any specific cultures. 具体的なカルチャは、言語および国/地域に関連付けられます。A specific culture is associated with a language and a country/region. たとえば、カナダ系フランス語 ("fr-CA") は、具体的なカルチャです。For example, French Canadian ("fr-CA") is a specific culture.

    アプリケーションがローカライズされたリソース (文字列など) を読み込もうとして見つけられなかった場合、要求されたリソースを含むリソース ファイルが見つかるまで上の階層へと移動します。If an application tries to load any localized resource, such as a string, and does not find it, it will travel up the hierarchy until it finds a resource file containing the requested resource.

    リソースを保存する最も良い方法は、できる限り汎用化することです。The best way to store your resources is to generalize them as much as possible. つまり、可能であれば、具体的なカルチャではなくニュートラル カルチャのリソース ファイル内にローカライズされた文字列や画像を保存するということです。That means to store localized strings, images, and so forth in resource files for neutral cultures rather than specific cultures whenever possible. たとえば、ベルギー系フランス語 ("fr-BE") カルチャのリソースがあり、そのすぐ上のリソースが英語のフォールバック リソースであるシステムのアプリケーションがあるとします。このアプリケーションを、別のユーザーがカナダ系フランス語のカルチャで構成されたシステムで開くと、問題が発生する可能性があります。For instance, if you have resources for the French Belgian ("fr-BE") culture and the resources immediately above are the fallback resources in English, a problem may result when someone uses your application on a system configured for the French Canadian culture. システムは "fr-CA" のサテライト アセンブリを検索しますが見つからないため、フランス語のリソースではなく、フォールバック リソース (この場合は英語) が含まれるメイン アセンブリを読み込みます。The system looks for a satellite assembly for "fr-CA" but doesn't find it, so loads the main assembly containing the fallback resource, English, instead of loading French resources. 次の図に、こうした好ましくないシナリオを示します。The following picture shows this undesirable scenario.

    特定のリソースのみSpecific Resources Only

    推奨方法に従って "fr" カルチャのニュートラル リソース ファイル内にできる限り多くのリソースを配置した場合、カナダ系フランス語ユーザーに "fr-BE" カルチャ用のリソースは表示されませんが、文字列はフランス語で表示されます。If you follow the recommended practice of placing as many resources as possible in a neutral resource file for the "fr" culture, the French Canadian user would not see resources marked for the "fr-BE" culture, but would be shown strings in French. 次の状況は、この推奨シナリオを示しています。The following situation shows this preferred scenario.

    NeutralSpecificResources のグラフィックNeutralSpecificResources graphic

関連項目See also