質問

次の非標準セットアップがあります(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に保存しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top