ほぼすべての運用品質のアプリでリソースを使用する必要があります。 リソースは、アプリと共に論理的にデプロイされる実行可能でないデータです。 リソースは、エラー メッセージとして、またはユーザー インターフェイスの一部としてアプリに表示される場合があります。 リソースには、文字列、イメージ、永続化されたオブジェクトなど、さまざまな形式のデータを含めることができます。 (永続化されたオブジェクトをリソース ファイルに書き込むには、オブジェクトをシリアル化可能にする必要があります)。リソース ファイルにデータを格納すると、アプリ全体を再コンパイルせずにデータを変更できます。 また、1 つの場所にデータを格納でき、複数の場所に格納されているハードコーディングされたデータに依存する必要がなくなります。
.NET では、リソースの作成と ローカライズ を包括的にサポートしています。 さらに、.NET では、ローカライズされたリソースをパッケージ化してデプロイするための単純なモデルがサポートされています。
リソースの作成とローカライズ
ローカライズされていないアプリでは、リソース ファイルをアプリ データのリポジトリとして使用できます。特に、ソース コード内の複数の場所でハードコーディングされる可能性がある文字列に対して使用できます。 最も一般的には、リソースをテキスト (.txt) ファイルまたは XML (.resx) ファイルとして作成し、 Resgen.exe (リソース ファイル ジェネレーター) を使用してバイナリ .resources ファイルにコンパイルします。 これらのファイルは、言語コンパイラによってアプリの実行可能ファイルに埋め込むことができます。 リソースの作成の詳細については、「リソース ファイルの作成」を参照してください。
また、特定のカルチャに合わせてアプリのリソースをローカライズすることもできます。 これにより、ローカライズされた (翻訳された) バージョンのアプリをビルドできます。 ローカライズされたリソースを使用するアプリを開発する場合は、適切なリソースが使用できない場合にリソースが使用されるニュートラルカルチャまたはフォールバック カルチャとして機能するカルチャを指定します。 通常、ニュートラル カルチャのリソースはアプリの実行可能ファイルに格納されます。 個々のローカライズされたカルチャの残りのリソースは、スタンドアロンのサテライト アセンブリに格納されます。 詳細については、「 サテライト アセンブリの作成」を参照してください。
リソースをパッケージ化して配置する
サテライト アセンブリにローカライズされたアプリ リソースをデプロイします。 サテライト アセンブリには、1 つのカルチャのリソースが含まれています。アプリ コードは含まれません。 サテライト アセンブリ 配置モデルでは、アプリがサポートするカルチャごとに 1 つの既定のアセンブリ (通常はメイン アセンブリ) と 1 つのサテライト アセンブリを含むアプリを作成します。 サテライト アセンブリはメイン アセンブリの一部ではないため、アプリのメイン アセンブリを置き換えることなく、特定のカルチャに対応するリソースを簡単に交換または更新できます。
アプリの既定のリソース アセンブリを構成するリソースを慎重に決定します。 これはメイン アセンブリの一部であるため、変更を加えた場合はメイン アセンブリを置き換える必要があります。 デフォルトのリソースを指定しない場合は、リソース フォールバック プロセスが検索を試みたときに、例外が発生します。 適切に設計されたアプリでは、リソースの使用中に例外が発生するべきではありません。
詳細については、 リソースのパッケージ化とデプロイに関する記事を 参照してください。
リソースを取得する
実行時に、アプリは、 CultureInfo.CurrentUICulture プロパティで指定されたカルチャに基づいて、スレッドごとに適切なローカライズされたリソースを読み込みます。 このプロパティ値は、次のように派生します。
ローカライズされたカルチャを表す CultureInfo オブジェクトを Thread.CurrentUICulture プロパティに直接割り当てます。
カルチャが明示的に割り当てられない場合は、 CultureInfo.DefaultThreadCurrentUICulture プロパティから既定のスレッド UI カルチャを取得します。
既定のスレッド UI カルチャが明示的に割り当てられない場合は、ローカル コンピューターで現在のユーザーのカルチャを取得します。 Windows で実行されている .NET 実装では、Windows
GetUserDefaultUILanguage
関数を呼び出すことによってこれを行います。
現在の UI カルチャの設定方法の詳細については、 CultureInfo および CultureInfo.CurrentUICulture リファレンス ページを参照してください。
その後、 System.Resources.ResourceManager クラスを使用して、現在の UI カルチャまたは特定のカルチャのリソースを取得できます。 ResourceManager クラスはリソースの取得に最もよく使用されますが、System.Resources名前空間には、リソースの取得に使用できる追加の型が含まれています。 これらには次のものが含まれます。
ResourceReader クラスを使用すると、アセンブリに埋め込まれたリソースや、スタンドアロンのバイナリ .resources ファイルに格納されているリソースを列挙できます。 実行時に使用可能なリソースの正確な名前がわからない場合に便利です。
ResXResourceReader クラス。XML (.resx) ファイルからリソースを取得できます。
ResourceSet クラス。フォールバック ルールを観察することなく、特定のカルチャのリソースを取得できます。 リソースは、アセンブリまたはスタンドアロンのバイナリ .resources ファイルに格納できます。 IResourceReader クラスを使用して他のソースからリソースを取得できるResourceSet実装を開発することもできます。
ResXResourceSet クラス。XML リソース ファイル内のすべての項目をメモリに取得できます。
こちらも参照ください
.NET