WindowsのC#で多言語プログラムを開発しています
特定のアクションでWindowsの記述言語を変更する方法...
例えば。フォーカスイベントで英語からアラビア語に変更します。
ありがとう
まったく新しいカルチャを選択するには、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;
ロードイベントで、以下のコードを挿入します。
InputLanguage.CurrentInputLanguage =
InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
Thread.CurrentThread.CurrentCulture = yournewculture;
CurrentUICulture
プロパティも参照してください。
さらに、実行時にすべてのコントロールのリソースを更新する場合は、次のようなものを使用する必要があります。
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);
}
より良い例が必要な場合は、 私のブログ を確認してください。
このステートメントは私にとって役に立ちました:
string myLanguage = "HE-IL";
InputLanguage.CurrentInputLanguage =
InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage));