私はGlobalization
プロジェクトを解決していますが、別のMainProject
があります。グローバリゼーションの下には、2つのリソースファイル、Resources.resx
とResources.ar.resx
があります。両方のファイルに同じキーがあります。モデル(API)で取得した言語入力に基づいて結果を出力したい。それから私は、モデルから言語入力をチェックし、それに応じてリソースファイルを選択します。この機能を持っている ResourceManager rm;
同じソリューションの別のプロジェクトからリソースファイルにアクセスするC#
:
は、このグローバルとして宣言します。 API関数で
private void CheckResourceManager(string lang)
{
if (lang =="EN")
{
rm = new ResourceManager(
"Globalization.Resources",
Assembly.GetExecutingAssembly());
}
else
{
rm = new ResourceManager(
"Globalization.Resources.ar",
Assembly.GetExecutingAssembly());
}
}
私は最初CheckResourceManager(model.Language);
をチェックし、必要なメッセージがあるとき: throw new Exception(rm.GetString("WrongUserName"));
が今の問題は、機能的に"Globalization.Resources.ar"
でそれができるように、リソースを読み込むされていない; tは探しファイル、私はここで何を使うべきですか?私は同じプロジェクトでリソースファイルを追加する場合、それは動作します。助けてください。ありがとう
適切なアプローチは以下の回答からですが、このメソッドはうまくいきます。宣言
:
private void CheckResourceManager(string lang)
{
if (lang =="EN")
{
System.Threading.Thread.CurrentThread.CurrentCulture = originalCulture;
rm = new ResourceManager("Globalization.Resources", localizeAssembly);
}
else
{
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("ar");
rm = new ResourceManager("Globalization.Resources", localizeAssembly);
}
}
、最終的に私はいくつかの値を取得する必要があります:
ResourceManager rm;
CultureInfo originalCulture = CultureInfo.CurrentCulture;
Assembly localizeAssembly = Assembly.Load("Globalization");
はに機能を変更
throw new Exception(rm.GetString("WrongUserName",CultureInfo.CurrentCulture));
はありがとうございました。
私はエラーを次取得PartnerWebApplication.Globalization.Resources.ar' 'のようなソリューション名を追加したとき。 '指定された文化や中立的な文化に適したリソースを見つけることができませんでした。 「PartnerWebApplication.Globalization.Resources.ar」を確認してください。コンパイル時にアセンブリ "PartnerWebApplication"に正しく埋め込まれているか、または必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください。 ' –
' .resx'ファイルを右クリックして 'Properties'を選択し、' Buildアクション 'を'埋め込みリソース 'に変更 – tchelidze