.NET フレームワークの組み込みのローカリゼーション システムは、このフォールバック状況を既に処理しています。フォームとコントロールをローカライズするサテライト DLL をインストールするだけで、適切な DLL がユーザーのロケールと一致する場合は .NET がそれを使用し、一致しない場合は次の関連する親ロケールにフォールバックします。たとえば、アプリケーションのデフォルト言語が en-US であるが、en-GB 翻訳と en 翻訳を提供した場合、フォールバックは次のようになります。
en-GB->en->en-US
つまり、en-GB が利用できない場合は en を探し、そこにない場合はデフォルトの en-US を使用します。
したがって、配布するときは、メインの en-US アプリケーションだけを配布してから、言語パックなどの特定の言語用の追加のサテライト DLL を提供できます。メイン アプリケーション アセンブリが必要なサテライト バージョンを示すことを可能にする 属性がありますSatelliteContractVersionAttribute
。これにより、アセンブリ バージョン間でローカリゼーションを機能させることができます (たとえば、アセンブリ バージョンがビルドと共に増加する場合 - ビルド番号を効果的に無視できます)。 .
MSDN には、グローバリゼーションとローカリゼーション、および ClickOnce 展開のコンテキスト内であっても、そのしくみに関する多くの情報があります。「Windows フォームのグローバル化」セクションを確認してください。
もちろん、グローバル化された製品をサポートするために .NET システムに依存しないことを選択した場合は、選択した方向性に合ったものを考え出す必要があります。