在运行时更改语言

时间:2010-03-11 12:30:16

标签: .net localization culture

如何在.net中运行时更改语言?有可能的? (即英语到印地语或任何其他语言。) 在桌面应用程序中......

2 个答案:

答案 0 :(得分:4)

InitializeComponent()之前使用以下代码:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");

在ASP环境中,您可以使用Request.UserLanguages[0]字符串作为语言代码,自动将语言设置为用户选择。

编辑:如果表单已经打开,则必须进行Dispose并重新加载。或者,您可以使用以下代码,这非常不舒服:

System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(MyFormClas));

this.myButton.Text = resources.GetString("myButton.Text");
this.myButton2.Text = resources.GetString("myButton2.Text");
...

根据您组织资源文件的方式,您可以循环执行此操作。

edti2:另一种方法是自动重启应用程序。根据应用,这可能不合适。

 if (MessageBox.Show(Resources.QWantToRestart, Resources.Warning,
      MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
 {
     System.Diagnostics.Process.Start(Application.ExecutablePath);
     System.Windows.Forms.Application.Exit();
 }    

edti3: 如果经常看到应用程序告诉用户重新启动应用程序以使更改的设置生效。这与第二次编辑相结合可能是许多用例的方法。

答案 1 :(得分:1)

Thread.CurrentThread.CurrentCulture = new CultureInfo("hi-IN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("hi-IN");

当然,如果有该语言的附属程序集,这只会改变语言。