1

これは、今日の私の初期の投稿に関連しています:リンク テキスト

これで、英語とスペイン語の 2 つの異なるローカリゼーションを備えたデモ用の winforms アプリができました。大きなアプリがあり、15 の異なる言語でのローカリゼーションをサポートしているとしましょう。前回の投稿で、フォームを初期化してローカライズを設定するときに数行追加するよう提案されました。現在、クリック ワンスを使用してアプリケーションをデプロイしています。アプリの 15 種類のフレーバーを使用せずに展開する方法を見つけようとしています。現在のユーザーのローカリゼーションを確認する方法はありますか?それが画面を使用するために使用した言語の 1 つと一致する場合、それ以外の場合はデフォルトを使用しますか?

4

1 に答える 1

2

.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 システムに依存しないことを選択した場合は、選択した方向性に合ったものを考え出す必要があります。

于 2009-06-25T17:58:30.940 に答える