ローカライズされたC#.NETアプリケーションに取り組んでおり、strings.resx
ファイルを使用して、アプリケーション内のハードコードされた文字列を翻訳しています。次のコードを使用してそれらを抽出します。
using MyNamespace.Resources
...
string someString = strings.someString;
しかし、今では、呼び出しで文字列の名前を定義できるようにしたい、このようなもの:
string someString = GetString("someString");
私はResourceManager
を少しいじっていましたが、それをstrings.resx
ファイルに転送する方法が見つかりません。
それ、どうやったら出来るの?
ちょっとした検索でうまくいきました。 ResourceManager
クラスで使用可能な権利strings
があります。
ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");
ResourceManager.GetString
する必要があります。
MSDNから削除された例:
ResourceManager rm = new ResourceManager("RootResourceName",
typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");
私はASP.NET Core MVCを使用して同じ問題を抱えていましたが、
ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");
@Vladのソリューションに非常に似ていますが、それ以外はMissingManifestResourceException
がありました
これを行うはるかに簡単な方法があります
[NameOfyourResxfile].ResourceManager.GetString("String Name");
あなたの場合
strings.resx.ResourceManager.GetString("someString");
次のような静的メソッドを作成できます。
public static string GetResourceTitle<T>(string key)
{
ResourceManager rm = new ResourceManager(typeof(T));
string someString = rm.GetString(key);
return someString;
}
そしてどこにでも電話してください:
var title= GetResourceTitle<*YouResourceClass*>(key);
任意のリソースファイルの文字列を取得するための汎用関数が必要な場合に便利です。