用C#更改语言

时间:2010-07-19 08:16:13

标签: c# .net windows multilingual cultureinfo

我正在使用C#在Windows上开发多语言程序

如何在某些操作上更改Windows编写语言...
例如在焦点事件上从英语变为阿拉伯语。

由于

5 个答案:

答案 0 :(得分:13)

要选择全新的文化,请将CurrentThread.CurrentCulture设置为新文化,例如设置为法语:

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

您可以找到预定义CultureInfo个名称herehere的列表。

如果您想要更改默认文化的某些方面,您可以获取当前线程的文化,使用它的名称来创建一个新的CultureInfo实例,并通过一些更改设置线程的新文化,例如更改当前文化以使用“欧元”符号:

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

答案 1 :(得分:3)

Thread.CurrentThread.CurrentCulture = yournewculture;

另请参阅CurrentUICulture属性。

答案 2 :(得分:3)

在加载事件中插入以下代码:

InputLanguage.CurrentInputLanguage =
      InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));

答案 3 :(得分:1)

此外,如果要在运行时刷新所有控件的资源,则需要使用以下内容:

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

如果您想要更好的示例,请检查my blog

答案 4 :(得分:1)

这句话对我有帮助:

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