2

次のような文字列を含む.resxファイルTranslate.English.resxに作成しました:Translate.Romanian.resx

MainWindowTitle : English Value

ルーマニア語のファイルでは次のようになります。

MainWindowTitle : Valoarea in Romana.

ここで私の質問は次のとおりです。プログラムに次のようなコードを強制的に解釈させるにはどうすればよいですか。

  • 私は、最初に と等しい をstring呼び出しました。langen
  • 私は持っているMainWindow.Text = Translate.English.MainWindowTitle
  • 実装を簡単にしたいので、次のようにします。

    switch(lang){
        case "ro":
            MainWindow.Text = Translate.English.MainWindowTitle;
        break;
    
        case "en":
            MainWindow.Text = Translate.Romanian.MainWindowTitle;
        break;
    }
    

それで、それに加えて、私はそれが次のようなものになりたいです:

   lang = "ro";
   MainWindow.Text = Translate.(lang value).MainWindowText

これどうやってするの?

4

3 に答える 3

1

この投稿をチェックしてください。 resx ファイルの名前を「translate.en.resx」や「translate.ro.resx」などに変更する必要があります。次に、次のようなことができます。

CultureInfo.GetCultureInfo("en");
or
CultureInfo.GetCultureInfo("ro");
MainWindow.Text = translate.MainWindowText;
于 2012-10-13T12:53:55.937 に答える
0

プロジェクトで [新しい項目と選択したリソース ファイルの追加] を選択します。

String.resx、String.ro.resx、String.tr.resx、String.fr.resx のような名前を付けます。

4 つの異なる言語の使用例:

  Console.WriteLine(Localize("name", "ro"));
  Console.WriteLine(Localize("name", "en"));
  Console.WriteLine(Localize("name", "fr"));
  Console.WriteLine(Localize("name", "tr"));


public static string Localize(string name, string languageCode)
{
  return Strings.ResourceManager.GetString(name, new CultureInfo(languageCode));
}
于 2012-10-13T13:14:21.357 に答える
0

上の人はみんな正しいです。それに加えて、そのようなものでリアルタイムで言語を変更することもできます.

private void RefreshResources(Control ctrl, ComponentResourceManager res)
{
   ctrl.SuspendLayout();
   res.ApplyResources(ctrl, ctrl.Name, CurrentLocale);
   foreach (Control control in ctrl.Controls)
      RefreshResources(control, res); // recursion
   ctrl.ResumeLayout(false);
}

完全な例が必要な場合は、ここで私のブログをチェックしてください

于 2013-01-07T15:20:47.533 に答える