对于C#中的Winform程序,项目会自动在properties文件夹下添加Resources.resx资源文件,并创建一个Resources类来管理资源。
当我们想让界面有多种语言时,其实就是让界面的菜单或是按钮显示不同的文字,即设置它们的Text属性,为此有2种方法:
第一种,将所有的不同语言的字符串放在同一个Resources.resx资源文件中,不同的语言用不同的前缀标识,如enFileName为 “file",
而zhCHSFileName则为 ”文件“,然后在要切换为英语的地方如下设置:fileStripMenuItem.Text = rm.GetString("enFileName");
而在要切换为中文的地方这样设置:fileStripMenuItem.Text = rm.GetString("zhCHSFileName");
这样的缺点是重复的类似代码很多,特别是语言种类很多或是需要不同语言的地方很多时。
第二种,将不同的语言的字符串放在不同的资源文件中,这时也分为两中情况:
1)创建多个Resources类,如Resource1、Resources2等,去分别对应不同的语言字符串资源,这些资源文件将作为嵌入的资源直接
写入exe可执行文件中,这样导致了不需要的其他语言的字符串也加载了,浪费内存。
2)对应于Form1类(继承自Form类)其有一个默认的Form1.resx资源文件,这时我们可以在与同样Form1.resx的位置按规定的命名
规则添加其他语言的资源文件,如Form1.zh-CN.resx、Form1.en-US.resx,
之后我们可以在应用程序的debug目录下看到zh-CN和
en-US文件夹,并且文件夹下都有同一个已编译的资源文件的dll文件:WindowsFormsTest.resources.dll。之后在程序中要改变界面
语言的地方写如下的代码: