web-dev-qa-db-ja.com

C#で言語を変更する

WindowsのC#で多言語プログラムを開発しています

特定のアクションでWindowsの記述言語を変更する方法...
例えば。フォーカスイベントで英語からアラビア語に変更します。

ありがとう

13
Betamoo

まったく新しいカルチャを選択するには、CurrentThread.CurrentCultureを新しいカルチャに設定します。フランス語に設定するには:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-FR");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;

事前定義されたCultureInfo名のリストを見つけることができます ここ および ここ

デフォルトのカルチャの特定の側面を変更する場合は、現在のスレッドのカルチャを取得し、その名前を使用して新しいCultureInfoインスタンスを作成し、スレッドの新しいカルチャにいくつかの変更を加えることができます。 「ユーロ」記号を使用するように現在のカルチャを変更するには:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo( System.Threading.Thread.CurrentThread.CurrentCulture.Name);
ci.NumberFormat.CurrencySymbol = "€";
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
14
Dr Herbie

ロードイベントで、以下のコードを挿入します。

InputLanguage.CurrentInputLanguage =
      InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
3
ali
Thread.CurrentThread.CurrentCulture = yournewculture;

CurrentUICultureプロパティも参照してください。

3
leppie

さらに、実行時にすべてのコントロールのリソースを更新する場合は、次のようなものを使用する必要があります。

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);
}

より良い例が必要な場合は、 私のブログ を確認してください。

2
FvZ

このステートメントは私にとって役に立ちました:

string myLanguage = "HE-IL";
InputLanguage.CurrentInputLanguage =
   InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage));
1
Nir Tsabar