2009-11-15 108 views
1

我需要制作一个必须支持两种语言(现在)的表单。 两种语言没有相同的外观,也有一半的形式不是一个像,但它仍然有一些相似的甜头。 在两种不同语言及以上的情况下,处理此问题的最佳方法是什么?顺便说一句,我使用的程序语言是C#。本地化问题

10X

回答

3

首先,配置你的项目的默认语言,你在项目属性做到这一点,在大会信息对话框,有一个“中性语言”在底部设置。

将此设置为您的“默认”语言,如果您愿意,可以使用“主要”语言。

然后,确保现在的表单使用该语言。

要开始翻译和更改表单以符合不同的语言,首先将表单的“Localizable”属性设置为true,然后将Language属性更改为第二个(或第三个,第四个等)语言。

修改完成后,即可开始进行更改。请确保您不要删除上的项目,而只是将它们设置为不可见。删除是为所有语言完成的,但不可见将仅针对当前语言进行设置。

继续在语言之间来回切换以进行调整。

要在特定的语言测试程序,在您的Main方法开始执行此:

Thread.CurrentThread.CurrentCulture = new CultureInfo("code of that other language"); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("code of that other language"); 

例如,与“挪威的,挪威语”的语言,这是我的主要语言测试,你会使用的代码是“nb-NO”。要找到需要使用的代码,一旦将表单的语言更改为要本地化的语言并保存,就会以正确的名称将新文件添加到解决方案资源管理器中。

例如,为Form1,下列文件将出现:

Form1.cs 
    Form1.designer.cs 
    Form1.nb-NO.resx  <-- here's the localized content 
    Form1.resx 

现在,已经做到了这一点,有足够的,你需要知道做一个本地化的应用程序时,其他的事情,我建议你去阅读SO和更多的信息在网络上的其他问题,像这样的:

0

我想为每种语言一个单一的全球资源文件是不必为每个表单为每种语言资源文件更好。
我最近通过以下链接"Globalization of Windows Applications in 20 Minutes"完成了winforms应用程序的全球化。这里是简单的步骤:

  1. 创建一个文本文件说“data.en-US。TXT “在下面的格式在溶液(<文件名> <培养字符串> .txt的):

    你好=你好
    欢迎=欢迎

    此文件” data.en-US.txt “是英语中的一个资源的文本文件。 在您需要的语言创建一个类似的文件说德语,所以它的文件名会data.de-DE.txt

    你好=晕
    欢迎= Willikomen

    第一列是将用作引用文本的键的标签。

  2. 通过使用命令“resgen.exe data.en-US.txt”, 这样做对所有语言文件创建一个“数据烯US.resource”文件出来的文本文件。现在在您的解决方案中,您有2个(或更多,取决于您要支持的语言)
    数据。 <文化字符串>。资源文件

  3. 点击所有.resource文件并将“Build Action”属性设置为“Content”。
  4. 单击所有.resource文件并将“复制到输出目录”属性设置为“始终复制/复制如果新建”。
  5. 在任何形式使用下面的代码获取本地化字符串:
string label = "Hello"; 
string cultureString = "de-DE" // [or "en-US"] 
string strResourcesPath = Application.StartupPath; 
CultureInfo ci = new CultureInfo(cultureString); ['cultureString' represents your desired language] 
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("data", strResourcesPath , null); ["data" is the first part of the filename] 
var answer = rm.GetString(label, ci); // here ans="Halo" as we selected de-DE