ASP.NET Webフォームリソースとローカリゼーションに関する厄介な問題
-
08-07-2019 - |
質問
次の非標準セットアップがあります(VS2008、.NET 3.5 SP1):
MainSiteというメインWebプロジェクトがあり、いくつかの「プラグイン」があります。異なる名前のWebプロジェクト。
これらのプラグインをビルドするとき、 aspnet_compiler.exe
および aspnet_merge.exe
を呼び出すカスタムビルドステップがあります。これにより、 plugin_name .dllと plugin_name _deploy.dllの2つの.DLLファイルが作成されます。最初のコードには分離コードクラスが含まれ、2番目のコードには.ascxファイルから生成されたコードが含まれています。
これらのプラグイン.DLLは、 / MainSite / bin / Plugins /
フォルダーにコピーされます。実行時(アプリケーションの起動時)、MainSiteアプリケーションはこのフォルダーを検索し、そこにあるすべての.DLLファイルを動的にロードします。
すべてのフォームは、プラグインの.ascxファイルにあります。メインアプリケーションは、これらの.ascxユーザーコントロールを必要に応じて読み込むスケルトンです。
そして今、ローカライズの必要性が来ています。理想的には、次のものが欲しいです:
- Visual Studioでリソースを作成する場合は、フォームごとに個別のリソースファイル(.ascxファイル)を用意して、フォームを並行してローカライズしやすくする必要があります。
- .ascxファイルの素敵な
meta:resourcekey
メソッドは、コントロールのローカライズに非常に快適です。 - .NETの自動リソース言語/カルチャフォールバックメカニズムは使用可能である必要があります。
- コンパイルの結果、すべてのプラグインのファイルを
/ MainSite / bin / Plugins /
フォルダーにコピーできるようになります。すべての言語/文化の.DLLファイルがあり、特定のサブフォルダーに配置する必要がある場合-異なるプラグインの.DLLに名前が衝突しない限り問題ありません。
これを達成する方法についてのアイデアはありますか?
解決
明らかに、.NETでカスタムリソースプロバイダーを実装することが可能です。 こちらは、プロセス全体。実際には、 meta:resourcekey
から値を取得し、どこからでも値を取得します。たとえば、上記の記事では、すべてのローカライズ情報をDBに保存しています。
所属していません StackOverflow