アプリケーションがあり、そのアプリケーションで2つの言語を使用する必要があります。例えば :
しかし、どうすればよいのかわかりません。誰でもこれを手伝ってくれる?
C# Windows Forms
に例が必要です。
フォームのLocalizable
およびLanguage
プロパティを使用する
Form
クラスにはLocalizable
およびLanguage
プロパティがあります。 Localizable
プロパティをtrueに設定すると、デフォルト言語のフォームにコントロールを追加し、デフォルト言語のプロパティを設定できます。次に、別の言語を選択して、それらの言語のプロパティを変更できます。このように、値またはローカライズ可能なプロパティは、異なるカルチャの個別のリソースファイルに格納されます。
注:プロパティが [Localizable(true)]
属性で装飾されている場合、ローカライズ可能と見なされます。たとえば、 BackColor
プロパティはローカライズ可能ではありませんが、 Text
プロパティはローカライズ可能です。
Resxリソースファイルを使用してメッセージと画像をローカライズする
プロジェクトのProperties
フォルダーの下にRseources.Resx
ファイルがあり、画像とメッセージのローカライズに使用できます。また、プロジェクトに.resxリソースファイルを追加することもできます。たとえば、Strings.resx
ファイルを作成し、それに文字列キーと値を追加してから、strings.en.resx
およびstrings.fa.resx
としてコピーし、それらの言語の値を編集できます。次に、これらのリソース値を使用できます。次に例を示します。
MessageBox.Show(Properties.Resources.AreYouSure);
現在のUIカルチャ言語でResources.Resx
ファイルからのAreYouSure
の値を表示します。
カルチャのリソースキーが見つからない場合、またはリソースファイルの指定されたカルチャが見つからない場合は、Resx
ファイルのニュートラルカルチャのキーの値が使用されます。
実行時に言語を変更します
次のコマンドを使用して、アプリケーションのカルチャをPersian
に設定できます。
System.Threading.Thread.CurrentThread.CurrentCulture =
System.Globalization.CultureInfo.GetCultureInfo("fa");
System.Threading.Thread.CurrentThread.CurrentUICulture =
System.Globalization.CultureInfo.GetCultureInfo("fa");
上記のコードは、アプリケーションの開始時またはフォームを表示する前に配置する必要があります。
詳細
詳細と例:
リソースファイルを使用する方が簡単な場合があります。
Visual Studioでプロジェクトに新しいリソースファイルを追加します。例えば。 _en.resx
_英語用_fr.resx
_フランス語用。
文字列でリソースファイルを開き、文字列に名前を付けて、値のセルに別の翻訳を入力します。例:_next station
_の値in _en.resx
_は_next station
_ですが、_fr.resx
_では_Prochaine station
_にすることができます。以下の例:
コードでは、public static ResourceManager rm = new ResourceManager("WindowsFormsApp1.en_local", Assembly.GetExecutingAssembly());
を使用して言語リソースを選択します。
アプリケーションに文字列を出力する必要がある場合は、関数GetString()
を使用します(例:label1.Text = rm.GetString("welcome");
)
Wwjih123の回答に欠けている部分があります。
VS2017で
1-まず、プロジェクトのルートフォルダー(リソースフォルダーではない)にリソースを作成します。 lang_en、lang_tr、lang_frなどのように名前を付けます...
2-thenオブジェクトプロパティウィンドウは、ビルドアクションを埋め込みリソースのままにします
3-lang_tr.resxファイル内にトルコ語の新しい文字列lbl_errorと値 "Hata"を追加します(好きなように)
4-クラス内で変数を次のように定義します。
ResourceManager res_man; // declare Resource manager to access to specific cultureinfo
InitializeComponent();の後の5クラスの初期化
Console.WriteLine("You are speaking {0}",
System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName);
res_man = new ResourceManager("MyApp.lang_"+ System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, Assembly.GetExecutingAssembly());
lblError.Text = res_man.GetString("lbl_error");
あなたのUI言語がトルコ語の場合、自動的にlang_tr.resxをロードし、英語の場合、lang_en.resxファイルがロードされます...
幸運を