对于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