私は私たちのサイトのコントロールを備えたコンポーネントプロジェクトを持っています-それは今ローカライズ可能でなければなりません。サイトの残りの部分のローカリゼーションを設定することは問題ではありませんでした(.resx
ファイルをApp_GlobalResources
ディレクトリにドロップしました。すべてが厄介でした)が、コンポーネントプロジェクト内でローカルにリソースにアクセスする方法に関する情報を見つけるのに苦労しています。
- フォルダは
App_Local[/Global]Resources
機能したくない-メインプロジェクトからできるように「ASP.NETフォルダを追加」することはできません。 - 自分で生成して.resxファイルをドロップすると、サイトで行ったようにそれらにアクセスする方法がわかりません。
ThisWidget.cs
コンポーネントプロジェクトに完全に含まれるいくつかの省略された制御コード:
namespace site.shop {
[ToolboxData("<{0}:ThisWidget runat=server></{0}:ThisWidget>")]
public class ThisWidget : WebControl {
protected override void CreateChildControls() {
if (ChildControlsCreated) { return; }
this.Controls.Clear();
Label head = new Label();
head.CssClass = "header";
// fails: ThisWidget does not exist in namespace
head.Text = System.Resources.ThisWidget.Label_head;
// fails: can't find GetLocalResourceObject
head.Text = new System.Web.UI.TemplateControl.GetLocalResourceObject("Label_head");
// fails: can't find linked or embedded resources
System.Resources.ResourceManager rm = new ResourceManager();
head.Text = Convert.ToString(rm.GetObject("Label_head"));
this.Controls.Add(head);
}
}
}
new
、、System.Web.UI.TemplateControl
などの/なしのいくつかのバリエーション。
コンポーネントプロジェクトには(a)いくつかの関連するコントロールがあり、(b)はソートされているため、これをサテライトアセンブリとしてコンパイルしてから、元に戻す必要はありません(これは他のオプションのようです)。すでに衛星依存のですよね?私の望みは、.resx
ファイルをドロップしてコンパイルし.DLL
、プロジェクトの残りの部分が機能するようにすることでした。
[編集] 答えに近づいているような気がしますが、まだそこにはいません...
何か案は?私は何が欠けていますか?
ありがとう!