如何更改WinForm中的语言?

时间:2014-01-30 13:19:26

标签: c# .net winforms currentculture

我正在用c#开发一个应用程序。我系统的当前语言是法语。我想要的是当我打开我的应用程序时,语言应该改为英语。无论如何,我可以执行此任务。我试图通过代码改变语言,但似乎没有任何作用。

这是我的代码

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

4 个答案:

答案 0 :(得分:3)

我将假设您的表单已本地化为法语和英语。如果是这种情况,那么一旦您在问题中运行代码,您显示的新表单将以新语言显示。

如果您想要更改语言并且当前显示的表单会以新语言重新显示其文本,则必须将响应正在更改的文化的内容放在一起并更新所有标签,单选按钮等等上。

幸运的是,有人已经为你完成了这项工作:

http://www.codeproject.com/Articles/23694/Changing-Your-Application-User-Interface-Culture-O

答案 1 :(得分:1)

Windows不会自动翻译您的应用程序,您需要自己提供这些应用程序并将其加载到特定语言中。

这个article很好地解释了这个过程。您正在更新文化,告诉系统要使用哪些资源文件。现在您需要提供要显示的文本。

答案 2 :(得分:0)

您必须重新加载表单(或在创建任何表单之前切换语言)

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
Form1 form1 = new Form1();
form1.ShowDialog();

这假设您正在使用satellite assemblies并且已经翻译过表单。

如果您想更改键盘布局(FR - > EN),那么,尽管也可以,但最好不要这样做。由于用户可能偏好他默认使用哪种布局。

答案 3 :(得分:0)

我不能在这里复制你的问题。在改变Double.Parse方法的工作方式时,代码应该可以正常工作。以下是我进行测试的方式:

string duit = "1.000.100";  //this is a valid number format in my current culture
string money = "1,000,100"; //but this is not valid
var culture = CultureInfo.CurrentCulture; //my current culture is indonesia (id-ID)
var duitDouble = double.Parse(duit);  //parsed successfully
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
culture = CultureInfo.CurrentCulture;  //now current culture is english (en-US)
var moneyDouble = double.Parse(money); //parsed successfully

此外,我真的建议改写你的问题和标题,以避免误解。这对你和有意帮助的人都有好处。正如您所看到的,发布的大多数答案实际上并未回答问题(OP在问题的第二条评论中指出了实际问题)。