3

ユーザーのウェルカム文字列など、いくつかの文字列リソースがあります。デフォルトでは「Hello」ですが、顧客 X の場合は「Greetings」にする必要があります。

.NET のリソース実装を使用し、文字列を定数またはファイルまたは好きな場所に配置したいと考えています。さらに、階層モデルが私のニーズに適合しています。顧客 X のリソースは、ユーザーのウェルカム文字列をオーバーライドします。

唯一の問題 - .NET のリソースは i18n 向けであり、現在の文化に基づいた階層から選択されているようです。

今のところ、顧客ごとにフラットなリソースを維持し、自分で階層をマッピングしますが、より良い解決策はありますか?

4

1 に答える 1

2

複数の ResourceManager を持つことを妨げるものは実際には何もありませんが、あなたが言うように、l18n 用に設計されています。個人的には、特にサテライト アセンブリの GAC と展開に関しては、resx に関する多くの問題がありました。私が抱えているもう1つの問題は、このシステムの硬直性です.dllを再コンパイルしてxmlをいじる必要がある新しい文字列が必要な場合、顧客はものを修正する柔軟性がなく、時間をサポートする.

resx が持つ階層ベースのソリューションは、「en-US」から「en」にフォールバックし、最終的に不変にフォールバックすることを意味します。それ以上のフォールバックはなく、2 つの異なる「en-US」を定義することはできません。同じ文字列に対して 1 つのリソース ファイル。このソリューションをハックして、顧客 X に「en-US」を使用し、顧客 Y に「en-AU」を使用して、1 つのリソースとして出荷することもできますが、これは非常に面倒です。

顧客ごとに異なるサテライト アセンブリをコンパイルし、これを何らかの形で機能させることができます。

個人的には、sqlite または mssql のいずれかを使用してローカリゼーションを行い、最初の文字列検索後にキャッシュを実行することを保証する、データベースに基づくソリューションを非常に好みます。

于 2009-01-15T13:01:04.050 に答える