2017-12-13 10 views
1

App_GlobalResourcesフォルダを作成し、該当する国の関連するresxファイルをASP Netサイトに追加しました。クラスライブラリのresxから値を取得

次に、キーと値をファイルに追加します。必要に応じてサイト上のすべての表示。

私は今、主にエラー

に以下のコード

ResourceManager lang = new ResourceManager("Resource.en-AU", Assembly.Load("App_GlobalResources")); 
string value = lang.GetString(Key); 
return value; 

が、コードがクラッシュした(第2ライン)を使用して、クラスライブラリからこのRESXファイルから値を取得しようとしています追加情報:指定された文化または中立文化に適したリソースを見つけることができませんでした。コンパイル時に "Resource.en-AU.resources"が正しく埋め込まれているか、アセンブリ "App_GlobalResources.ufgcy-ty"にリンクされていること、または必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください。

私はその後、

ResourceManager myManager = new ResourceManager(typeof("NOTHING AVAILABLE HERE")); // Seems like its expecting a resource file but since its a class library i cant do this 
string myString = myManager.GetString("StringKey"); 

を試してみましたので、これは私がクラス・ライブラリで国のRESXファイルから値を取得するために別の方法が必要ですが、これを行う方法のいずれかの例を見ていないと信じて私をリードまたは、私はウェブサイトからクラスライブラリに既存のリソースファイルを移動し、私が変更を行うたびにサイトにコピーする必要がありますが、これが正しいアプローチであるかどうかわかりません。

答えて

2

すると、このようにしてみてください。xxxは(あなたのケースでは、名前が.en-auなしResource(あるべき).resx拡張子なしとカルチャ名なしで、あなたのリソースファイルの名前です

ResourceManager resourceManager = 
    new ResourceManager("Resources.xxx", Assembly.Load("App_GlobalResources")); 
string myString = resourceManager.GetString("StringKey"); 

のResourceManager CurrentUICultureに応じて、指定されたリソースファイルを現在のカルチャにロードしようとします。サーバーが英語(オーストラリア)言語/地域設定/ Cultureに設定されている場合は、文化が「Ro」と設定されている場合はResource.en-auマニア、それはResource.roを見つけることを試みる。そのようなファイルが見つからない場合は、カルチャ名のないデフォルトファイルにフォールバックします。

[Resources namespace].[Resource file name].ResourceManager.GetString("StringKey") 

Resources namespaceは、あなたのリソースファイルの名前空間である(デフォルトResourcesていますが、リソースファイルの.Designer.csファイルの本当の名前空間を見ることができる)とresource file name.resxのファイル名です:

また、あなたはこのようにリソースをロードすることができますファイル、拡張子や文化なし。

だから、あなたは次のように試すことができます:

string myString = Resources.Resource.ResourceManager.GetString("StringKey"); 
関連する問題