MFC アプリケーションのローカライズされたリソース: サテライト DLL

MFC バージョン 7.0 以降ではサテライト DLL のサポートが強化されています。これは、混合言語にローカライズされるアプリケーションの作成に役立つ機能です。 サテライト DLL は、特定の言語にローカライズされたアプリケーションのリソースを含むリソースのみの DLL です。 アプリケーションの実行が開始されると、環境に最適なローカライズされたリソースが MFC によって自動的に読み込まれます。 たとえば、リソースのフランス語翻訳とドイツ語翻訳を含む 2 つのサテライト DLL を備えた英語リソースを持つアプリケーションがあるとします。 アプリケーションが英語のシステム上で実行されると、英語のリソースが使用されます。 フランス語のシステム上で実行されると、フランス語のリソースが使用されます。ドイツ語のシステム上で実行されると、ドイツ語のリソースが使用されます。

MFC アプリケーションでローカライズされたリソースをサポートするために、MFC では特定の言語にローカライズされたリソースを含むサテライト DLL の読み込みが試行されます。 サテライト DLL の名前は ApplicationNameXXX.dll です。この ApplicationName は MFC を使用する .exe または .dll の名前であり、XXX はリソースの言語を表す 3 文字のコードで (たとえば、'ENU'、'DEU')。

MFC では、次の各言語のリソース DLL の読み込みが順番に試行され、見つかると停止されます。

  1. GetUserDefaultUILanguage() Win32 API から返される現在のユーザーの既定の UI 言語。

  2. 特定のサブ言語がない現在のユーザーの既定の UI 言語 (つまり、ENC [カナダ英語] は ENU [米国英語] になります)。

  3. GetSystemDefaultUILanguage() API から返されるシステムの既定の UI 言語。 他のプラットフォームでは、これは OS 自体の言語です。

  4. 特定のサブ言語のない、システムの既定の UI 言語。

  5. 3 文字のコード LOC を使用した偽の言語。

MFC でサテライト DLL が検出されない場合は、アプリケーション自体に含まれているリソースが何であろうとそれが使用されます。

たとえば、アプリケーション LangExample.exe が MFC を使用し、複数のユーザー インターフェイス システムで実行しているとします。システム UI 言語は ENU [米国英語] で、現在のユーザーの UI 言語は FRC [カナダフランス語] に設定されています。 MFC では、次の DLL が次の順序で検索されます。

  1. LangExampleFRC.dll (ユーザーの UI 言語)。

  2. LangExampleFRA.dll (サブ言語なしのユーザーの UI 言語、この例では French (France))。

  3. LangExampleENU.dll (システムの UI 言語)。

  4. LangExampleLOC.dll。

これらの DLL が見つからない場合、MFC では LangExample.exe のリソースが使用されます。

関連項目

Visual Studio での C/C++ Dll の作成
テクニカル ノート 57: MFC コンポーネントのローカライズ