.Net中的多语言Winforms - 意见和建议

时间:2008-11-14 19:34:21

标签: c# winforms multilingual

所以我有一个需要多语言的程序。我需要的东西和我在网上找到的东西之间的唯一区别是我的程序运行的所有计算机都设置为EN的本地化。

我们有讲西班牙语的员工,他们会像讲英语的员工一样使用该计划。因此,我无法根据计算机的本地化进行设置,所有这些都必须在代码中完成。

我正在考虑尝试为每个表单创建一个XML文件(实际上只是一个数据集),并让每个数据表都是可选语言。在每个表中,它将具有设置所需的标签/复选框/等信息(控件名称,属性和文本)。我将不得不创建一个新的表单控件,以便我可以通过一个通用函数重命名所有这些控件。

<DataSet>
   <English>
     <ControlName>labelHello</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Hello</Text>
   </English>
   <English>
     <ControlName>labelBye</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Bye</Text>
   </English>
   <Spanish>
     <ControlName>labelHello</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Hola</Text>
   </Spanish>
</DataSet>

另外,我对每个表单的资源文件中的字符串知之甚少。我可以从那里开始使用.Net功能来实现这个目标吗?

所以我提出了很多建议,因为我真的不想回到我刚刚编写的程序并将其放入其中,我讨厌回过头来添加更多功能一旦我已经花了这么多时间与这个傻逼......

由于

3 个答案:

答案 0 :(得分:2)

您可以在代码中设置所需的文化,例如:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-ES");

有关详细信息,请参阅this MSDN article

答案 1 :(得分:1)

这是一种痛苦,但并不难。在VS2008的WinForm设计器中,选择表单,查看其属性并设置Localizable = True(如果查看文件后面的部分类/代码,您将看到一个类似于

的新行。
  resources.ApplyResources(this, "$this")

然后,对于您要支持的每个区域设置,请选择“语言”,并将默认本地所需的任何更改本地化。

我相信Windows允许用户为指定的应用程序指定不同的区域设置。我上次尝试使用Windows 2000。

答案 2 :(得分:0)

使用Windows,您可以拥有机器文化EN,但对于浏览器,PC的各个用户可以选择首选文化(无论如何都是IE和Firefox)。 PC上的其他所有内容都是英语 在IE中,转到工具,选项,单击常规选项卡上的语言按钮。 您可以指定首选的语言层次结构。

否则请与Joes回答。