「メイン」というプロジェクトがあります。このプロジェクトでは、すべてのリソースは Ress というフォルダーにあります。これらのリソースを呼び出すときは、作成した Translator クラスを使用しています。
public class Translator
{
ResourceManager m_ressourceManager;
string m_completeRessourceName;
public Translator(string ressourceName)
{
m_completeRessourceName = String.Format("Main.Ressources.{0}", ressourceName);
m_ressourceManager = new ResourceManager(m_completeRessourceName, Assembly.GetExecutingAssembly());
}
public string GetString(string name)
{
string retString = "";
try
{
retString = m_ressourceManager.GetString(name);
}
catch
{
retString = m_completeRessourceName + "." + name;
}
return retString;
}
}
そのプロジェクトではすべてが正しく読み込まれています。これで、「ホーム」という 2 番目のプロジェクトができました。そのプロジェクトでは、traduction クラスをリンクとして追加しました。ご覧のとおり、トランスレータ コンストラクタは、「メイン」プロジェクトのサブフォルダ「リソース」にリソースをロードするようにビルドされています。「ホーム」プロジェクトの about.aspx ページでは、Main/Ressources 内に About.en-CA.resx という名前のリソース ファイルを作成しました。コードを実行すると、エラーは発生しませんが、リソースは読み込まれません。両方のプロジェクト再建されました。
protected override void setPageTranslator()
{
base.setPageTranslator();
m_pageTranslator = new Translator("About");
}
protected override void LoadStrings()
{
m_aboutTitle.Text = m_pageTranslator.GetString("AboutTitle");
}