【问题标题】:How to change the language in my WinForm?如何更改我的 WinForm 中的语言?
【发布时间】:2014-02-22 19:47:54
【问题描述】:

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

这是我的代码

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

【问题讨论】:

  • 您的意思是“似乎没有任何效果”?你想要发生什么?实际上确实发生了什么?
  • 我系统的当前语言是法语。我想要什么 当我打开我的应用程序时,语言应该更改为英语。 @约翰桑德斯
  • “语言应该改为英语”是什么意思?例如,您的意思是说您有一个标有“Bonjour”的标签,并且您需要它说“早上好”吗?
  • 没有兄弟。看我开发了一个应用程序。但是当我将它部署在客户端机器上时,功能无法正常工作,但它在我自己的系统上工作正常,因为我使用英语作为我当前的语言。但我的客户来自荷兰,所以他系统上的语言是荷兰语。这是我的代码,它影响Convert.ToDouble(value); 当语言是英语时它工作正常但是当语言改变时我没有得到正确的值。
  • @FazilMir ,我建议使用用户文化来转换,而不是改变文化。更好地使用double.TryParse(value, userculture, NumberStyles.Any, out result)

标签: c# .net winforms currentculture


【解决方案1】:

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

如果您想更改语言并让当前显示的表单以新语言重新显示其文本,您必须组合一些可以响应正在更改的文化的内容并更新所有标签、单选按钮等开。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      如果你想改变键盘布局 (FR -> EN),那么,虽然也有可能,但最好不要。因为用户可能有他想要默认使用的布局的偏好。

      【讨论】:

        【解决方案4】:

        我无法在此处复制您的问题。该代码在改变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的第二条评论中指出)。

        【讨论】:

          猜你喜欢
          • 2019-08-17
          • 1970-01-01
          • 2012-07-17
          • 2022-09-23
          • 1970-01-01
          • 1970-01-01
          • 2013-07-03
          • 1970-01-01
          相关资源
          最近更新 更多