2017-01-18 9 views
0

グローバリゼーションをサポートする必要があるリソースファイルを追加しました。 Global.asaxWeb APIでリソースファイル文字列にアクセスする際の問題

enter image description here

私は文化の情報を受け取りました。

protected void Application_BeginRequest() 
    { 
     var cul = Context.Request.Headers["culture"]; 
     if (cul != null && !string.IsNullOrEmpty(cul)) 
     { 
      var culture = new CultureInfo(cul); 
      //Thread.CurrentThread.CurrentCulture = culture; 
      Thread.CurrentThread.CurrentUICulture = culture; 
     } 
    } 

今、私のようにそれにアクセスしようとしている:

ResourceManager rm = new ResourceManager("Resource", System.Reflection.Assembly.GetExecutingAssembly()); 
string err = rm.GetString("ERROR_1"); 

私が手にエラーがある:

{"Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Resource.resources\" was correctly embedded or linked into assembly \"...\" at compile time, or that all the satellite assemblies required are loadable and fully signed."} System.SystemException {System.Resources.MissingManifestResourceException}

コードとリソースが同じ名前空間を持っています。

+0

中立的な文化はありません。 Resource.resxというファイルを追加してください。 – Remy

答えて

0

私はResourceManagerに多くの経験はありませんが、公式のドキュメントからは、アセンブリを取得するためにリフレクションを使用するとは思われません。具体的には、2番目のパラメータであるアセンブリは、 'デフォルトの.resourcesファイルが存在するアセンブリ'である必要があります。後でThread.CurrentThread.CurrentUICultureの設定について話します。これらの情報はすべてmsdnにあります:https://msdn.microsoft.com/en-us/library/system.resources.resourcemanager(v=vs.110).aspx

ただし、asp.net Webページのローカライズについては、msdnのドキュメントを参照してください。https://msdn.microsoft.com/en-us/library/ms227427.aspxそれはあなたに非常に有用かもしれないいくつかの特殊なメカニズムを持っているようです。

+0

デフォルトのリソースファイルが存在しなければならないということは、値を取得するために 'Resource.ERROR_1'でした。対応するリソースファイルはスレッドカルチャに基づいて選択されます。 – benjamin54

関連する問題