有两种方式,一种是提供多语言的资源DLL,一种是字符串资源全部从配置文件读取,前者开发起来比较方便直观,后者灵活性大,可以由不同语言国家的人自行翻译文字,但所有有文件的地方都需要动态设置,比如对话框,菜单等。后者还有一个好处就是可以比较容易地支持unicode。因为配置文件就可以是unicode的,而且unicode应该是多语言版本软件所必须支持的。
第二种方式做起来比较简单,但实施起来很麻烦,这里不讲。下面主要讲一下使用资源DLL的方式应该如何来做。而又特殊以繁体中文为例来讲,因为如果是英文版的话,太容易了,因为我们的操作系统就支持英文,但不支持繁体中文。
先准备繁体中文的资源,按前面的说法,最好是UNICODE版本的,我们怎么做呢?
1、将简体中文的资源拷贝一份,用常用的文本编辑工具打开后另存为unicode版本。
2、修改资源的codepage。因为简体中文的codepage为936,繁体中文的codepage为950。用文本编辑器打开rc资源文件,将里面的936改为950。为什么要用文件编辑工具来改呢。因为在VC6中资源编辑器不支持UNICODE,据说高版本的VC已经支持了。
3、用word打开资源文件,通过“工具”菜单下的“语言”工具中的简繁转换功能将简体转换为繁体。用word转换的一个好处是它自动对一些语言习惯进行的转换,比如将软件转换成了软体。将转码后的资源文件保存。
4、修改字体,通常在简体中文操作系统中,使用宋体9号字体是比较漂亮的,但宋体在繁体中文操作系统中不一定有,如果操作系统中没有这个字体就会使用默认的system字体,很丑。这个时候可以在资源文件中把宋体改成“Tahoma”字体,经搜索发现,繁体中文操作系统的默认字体与简体一样,都是Tahoma。
5、OK,改完后编译即可。编译过程中会有很多警告,不用管它,反正就得到了UNICODE版的繁体中文资源了。
在代码中切换语言很简单,通过AfxSetResourceHandle设置资源DLL即可。 |