私は、さまざまなサイズの複数のアプリケーションと数十 (場合によっては数百) のアセンブリで構成される .Net ソフトウェア製品に取り組んでいます。すべてを複数の言語に翻訳する必要があります。
どこを見ても、.NET で文字列をローカライズする方法として提案されているのは、リソース文字列を使用してサテライト アセンブリを作成することです。もちろん、これらの例はすべて 1 つのアセンブリと、ローカリゼーションを技術的に機能させる方法を示しているだけです。私の問題は、実際には、これがアセンブリの大規模なセットにどのように拡張されるかがわからないことです。
各アセンブリのアプローチを単純に複製すると、非常に多数のサテライト アセンブリを維持および展開することになり、それを必要とするすべてのアセンブリで 1 つの同じ文字列/翻訳を追跡する必要があります。翻訳が変更されるたびに、すべてのアセンブリでこの文字列の使用箇所をすべて見つけて変更する必要があります。
翻訳を更新する必要があるたびに、多数のリソース ファイルからすべてを抽出して翻訳者に送信し、その結果を適切なリソースに再度配布する必要があります。これはもちろん実行できます。スクリプト化できる (そしてスクリプト化する必要がある) ものもあると思います。ただし、特にスムーズで効率的だとは思いません。
私が考えることができる 1 つの代替手段は、ローカライズされた文字列の中央リポジトリとして機能する専用の翻訳アセンブリ (サテライト アセンブリを含む) を作成することです。すべてのアセンブリのすべての文字列のすべての翻訳がそこに移動し、翻訳を吐き出すために、すべてのアセンブリによって順番に参照されます。
これにより、メンテナンスがはるかに簡単になるように見えますが、もちろん、リソース文字列の膨大なセットを備えたこの中央アセンブリは、実際にはそれらのほんの一部しか必要としない最小のアプリケーションと一緒にデプロイする必要があります。さらに、このアセンブリは多くの開発者によって頻繁に変更される必要があり、競合のリスクが高くなります。
私の質問は次のとおりです。
サテライト アセンブリを介したローカリゼーションのアプローチは、多くのアセンブリを含む大規模なソフトウェア プロジェクトにどのように対応できるのでしょうか? 推奨される戦略とベスト プラクティスは何ですか?