我正在用 c# 开发一个应用程序。我系统的当前语言是法语。我想要的是当我打开我的应用程序时,语言应该更改为英语。无论如何我可以执行此任务。我试图通过代码更改语言,但似乎没有任何效果。
这是我的代码
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
我正在用 c# 开发一个应用程序。我系统的当前语言是法语。我想要的是当我打开我的应用程序时,语言应该更改为英语。无论如何我可以执行此任务。我试图通过代码更改语言,但似乎没有任何效果。
这是我的代码
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
我将假设您的表单已本地化为法语和英语。如果是这种情况,那么在您运行问题中的代码后,您显示的新表单将以新语言显示。
如果您想更改语言并让当前显示的表单以新语言重新显示其文本,则必须将响应文化更改的内容放在一起并更新所有标签、单选按钮等。
幸运的是,有人已经为您完成了这项工作:
http://www.codeproject.com/Articles/23694/Changing-Your-Application-User-Interface-Culture-O
Windows 不会自动翻译您的应用程序,您需要自己提供这些并将它们加载到特定语言中。
这篇文章很好地解释了这个过程。您正在更新告诉系统要使用哪些资源文件的文化。现在您需要提供要显示的文本。
您必须重新加载表单(或在创建任何表单之前切换语言)
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
Form1 form1 = new Form1();
form1.ShowDialog();
这假设您正在使用附属程序集并且已经翻译了表单。
如果您想更改键盘布局(FR -> EN),那么虽然也可以,但最好不要。因为用户可能有他想要默认使用的布局的偏好。
我无法在这里复制您的问题。就改变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 在问题中的第二条评论中指出)。