Visual Studio 对于.NET 程序的本地化提供了完整的支持,这里仅介绍实现多语言版本本地化程序的简单步骤.

注意黑体处为关键点.

. 窗体本地化

对于Windows 窗体,你需要做的第一步是确定你的默认界面语言,默认语言是指当执行程序无法找到已定义的本地化资源时,默认使用的语言,由于.net使用utf-8作为默认编码,一般情况下在任何语言的系统上都能正常显示.

本地化窗体一个关键的步骤是将窗体的本地化属性(Localizable)设置为True,此时窗体代码中自动生成的代码部分的字符串(Text属性)将由原来的this.Text = Form1变为resources.ApplyResources(this $this),并且窗体文件名下面会多出一个资源文件Form1.resx,双击该资源文件可以看到字符串已经生成为资源了

像往常一样在窗体上加入你需要的控件,并设置好属性,控件的Text属性同样会自动生成为资源(双击Form1.resx看看吧~),简单吧,我们来看下一步,本地化窗体.

下面我们来添加英语环境下的窗体.在窗体属性窗口中找到Language属性(挨着Localizable),选择英语(美国),现在我们把窗体上的各个字符串翻译成英文,并修改窗体的默认字体为Arial,字号8,完成后你会看到窗体文件名下面多出一个Form1.en-US.resx,这里用来保存已本地化为英文的资源.编译程序,拷贝到英文系统下执行程序看看,效果怎么样?(什么?你没有英文环境?好吧,后面会提供解决办法)

现在你已经成功的实现了中文简体与英文美国的完美支持,如果需要其他语种的支持,选择Language属性列表中相应的语种重复上述步骤即可.需要注意的是.net使用的是unicode编码,需要用unicode编码其他语种后输入到界面上,否则特别像繁体字容易出现乱码.

需要注意的情况:如果需要在窗体上添加删除控件,必须把窗体语言属性(Language)修改为默认后才可以进行修改.

下面我们来看一下资源文件如何处理

. 资源本地化

在工程名称上右键,选择添加新项目,生成Resource1.resx文件,双击打开该文件,默认为字符串资源器,在这里你可以定义字符串资源,在字符串值中输入Hello World(不包含双引号),现在就可以在代码中直接用Resource1.String1来引用了,注意这里的资源也是同窗体一样,是默认语言下的资源,在解释如何添加其他语言前,我们先介绍一下.net解析资源的步骤

.net 资源文件名(这里是Resource1.resx)由根名称(Resource1),本地语言名称(默认情况下还没有)及扩展名组成,在读取资源时,资源管理器会根据当前环境决定需要的本地语言名称,例如英语,然后试图以全名读取资源,美国英语的本地名称为en-US(语言名称可以从MSDN中查询CultureInfo信息得到),那么资源全名为Resource1.en-US.resx,如果存在该文件,则载入该文件作为资源文件,如果没有则使用默认值Resource1.resx,确定好资源文件后开始查找指定的资源(例如String1),如果在本地资源文件中没有找到,则向上查找上一级的本地资源文件,最终找到根名称Resource1为止.信息参考文章最后所附连接.

现在我们来添加美国英语资源,使用项目菜单添加新项,添加一个新的资源文件,命名为Resource1.en-US.resx,双击打开,把Resource1.resx中的资源翻译成英语填入其中,在代码中添加一个窗体载入事件,在事件处理代码中添加一行MessageBox.Show(Resource1.String1);编译运行程序,观察在中文简体系统和英文系统下的显示内容.

不停的在不同语言系统环境下切换很麻烦,下面提供可以在一台电脑上测试不同语种的解决方案.

. 切换显示语言

C# 窗体程序使用CultureInfo来管理当前语言,这里CultureInfo分为两种,一种决定语言格式,一种决定语言资源(这里我们仅需要后者),只需简单的设置如下两个变量即可改变程序显示语言:

System.Threading.Thread.CurrentThread.CurrentCulture;

System.Threading.Thread.CurrentThread.CurrentUICulture;

在窗体初始化之前,我们设置

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(en-US);

即可把程序执行语言切换为美国英语,编译程序试试看吧

演练:本地化 Windows 窗体

Visual Studio 项目系统为本地化 Windows 窗体应用程序提供相当大的支持。下面是两种使用 Visual Studio 开发环境生成资源文件的方法:

使项目系统为可本地化的用户界面元素(如窗体上的文本和图像)生成资源文件。然后将该资源文件生成到附属程序集中。

添加一个资源文件模板然后使用 XML 设计器该模板。采取后一种方法的原因之一是为了生成在对话框和错误信息中出现的可本地化字符串。然后,必须编写代码以这些资源。

本演练主题在一个 Windows 应用程序项目中演示这两种过程。

还可以将文本文件转换为资源文件;有关信息,请参见文本文件格式中的资源和资源文件生成器 (Resgen.exe)

使 Visual Studio 生成资源文件

1. 创建名为“WindowsApplication1的新 Windows 应用程序。有关详细信息,请参见如何:创建 Windows 应用程序项目。

2. 属性窗口中,将窗体的 Localizable 属性设置为 true

Language 属性已经设置为“(默认值)

3. Button 控件从工具箱的“Windows 窗体选项卡拖到窗体上,然后将其 Text 属性设置为 Hello World

4. 将该窗体的 Language 属性设置为德语(德国)

5. 将该按钮的 Text 属性设置为 Hallo Welt

6. 将该窗体的 Language 属性设置为法语(法国)

7. 将该按钮的 Text 属性设置为 Bonjour le Monde。如果需要的话,可调整该按钮的大小以容纳较长的字符串。

8. 保存和生成解决方案。

9. 单击解决方案资源管理器中的显示所有文件按钮。

资源文件出现在 Form1.vbForm1.cs Form1.jsl 下面。Form1.resx 是默认区域性的资源文件,它将生成到主程序集中。Form1.de-DE.resx 是在德国讲的德语的资源文件。Form1.fr-FR.resx 是在法国讲的法语的资源文件。