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 の読み込みが順番に試行され、見つかると停止されます。
GetUserDefaultUILanguage() Win32 API から返される現在のユーザーの既定の UI 言語。
特定のサブ言語がない現在のユーザーの既定の UI 言語 (つまり、ENC [カナダ英語] は ENU [米国英語] になります)。
GetSystemDefaultUILanguage() API から返されるシステムの既定の UI 言語。 他のプラットフォームでは、これは OS 自体の言語です。
特定のサブ言語のない、システムの既定の UI 言語。
3 文字のコード LOC を使用した偽の言語。
MFC でサテライト DLL が検出されない場合は、アプリケーション自体に含まれているリソースが何であろうとそれが使用されます。
たとえば、アプリケーション LangExample.exe が MFC を使用し、複数のユーザー インターフェイス システムで実行しているとします。システム UI 言語は ENU [米国英語] で、現在のユーザーの UI 言語は FRC [カナダフランス語] に設定されています。 MFC では、次の DLL が次の順序で検索されます。
LangExampleFRC.dll (ユーザーの UI 言語)。
LangExampleFRA.dll (サブ言語なしのユーザーの UI 言語、この例では French (France))。
LangExampleENU.dll (システムの UI 言語)。
LangExampleLOC.dll。
これらの DLL が見つからない場合、MFC では LangExample.exe のリソースが使用されます。
関連項目
Visual Studio での C/C++ Dll の作成
テクニカル ノート 57: MFC コンポーネントのローカライズ