用VC++6.0汉化软件

发表于:2007-07-04来源:作者:点击数: 标签:
南京海军指挥学院 黄向明 大多数软件的操作界面和信息都是写在resource(资源)中的,所以,只要把exe文件或dll文件中的resource提取出来,就可以轻易地将信息翻译成中文。而Vusial C++中的资源编辑器可以将一个已经编译完成的exe文件或dll文件中的resource提
南京海军指挥学院 黄向明

  大多数软件的操作界面和信息都是写在resource(资源)中的,所以,只要把exe文件或dll文件中的resource提取出来,就可以轻易地将信息翻译成中文。而Vusial C++中的资源编辑器可以将一个已经编译完成的exe文件或dll文件中的resource提取出来进行编辑。如图1所示,现在演示把这个英文项目汉化成图2的过程。
http://www.ltesting.net/uploads/2007/07/1_200707042008361.jpg (10230 字节)
http://www.ltesting.net/uploads/2007/07/1_200707042008362.jpg (10634 字节)

  建立Demo项目

  单击Visual C++File菜单中的New命令,选择Project选项中的MFC AppWizard(exe)图标,键入Demo作为项目名字。单击OK运行AppWizard,创建Demo项目。当指定项目选项时,在AppWizard的步骤1中选择Single Document按钮,其余各步均采用默认设置项,产生如图1的项目,现在对这个英文项目进行汉化处理。但处理前必须注意二个问题:

  1.Visual C++允许你在建立MFC AppWizard程序时选择不同的语系。在使用远东语系支持DLL时(日语、朝鲜语和中文),需要支持双字节的操作系统。这些DLL在缺省安装时并没有安装,需要你自己动手来安装。这些文件在Visual C++光盘的\Bin\IDE目录中(见下表):
http://www.ltesting.net/uploads/2007/07/1_200707042008363.jpg (12791 字节) 

  例如,如果你想在你的软件中支持中文,你可以把上面的appwzchs.dll复制到你安装Vusial C++的目录下相同路径的地方。

  2.必须在WindowsNT下才可以将编辑过的resource存回到原本的exe文件(或dll文件)中,在Windows95中编辑过程一样,但是无法存回去。

  提取resource

  首先,使用File>Open...打开要汉化的exe文件(或dll文件),必须注意的是Open as的地方要选择Resources。

  打开之后,窗口中显示的便是这个程序的resource,包括各种图形使用界面的资源,其中需要编辑的是Dailog(对话框)、Menu(菜单)和String Table(字串表)。

  1.在开始翻译以前,要先修改语系和编码,否则翻译过的中文字会变成乱码。按一下Version项旁边的加号,打开项会出现Version。

  鼠标双击1[English(U.S.)]打开Version的内容,双击BlockHeader的那一行,把LanguageID改为中文,CodePage确定是Unicode没有错,关闭对话框,再关闭Version内容窗口。

  2.接下来单击1[English(U.S.)]让它成为选取状态,按鼠标右键,选择Properties,然后把Language的地方设成Chinese(P.R.C)。

  以后每编辑一项,也都要做这个动作,把Properties里的Language设成Chinese(P.R.C)。但是在做这个动作以前,必须先双击该项目打开内容,然后关闭再来设定Properties,否则有时设定语系后便无法打开内容编辑。

  设定好后,就不会出现[English(U.S.)]的字样。

  编辑Dailog

  按一下Dailog(对话框)项旁边的加号,打开项会出现一系列的Dailog项目,每一个项目是一个对话框(对本例当然只有一个对话框)。

  在编辑以前你要先改变每一个对话框的语系,但在改变语系之前,必须先打开它(双击该项目)然后关闭,以避免改变语系后无法打开编辑。

  这么多对话框一个一个打开关闭非常麻烦,你可先选取全部的对话框项目,然后按下Enter,就可以一次打开全部的对话框内容。要一次全部关闭,选择Vusial C++下拉菜单的Windows>Windows...它会列出所有的窗口,选择所有刚刚打开的对话框窗口(字尾有[Dialog]字的),然后按下Close Window(s),就可以一次全部关闭。注意别把所有的窗口都关闭了。最后按下OK。

  在这些项目都还被选取的时候,按下鼠标右键,选择Properties,然后把Language的地方设成Chinese(P.R.C)。就可以一次把所有的对话框的语系都改了。

  接下来要做的就是一个一个分别去修改对话框的内容(双击该项目打开内容),把信息翻译成中文,再关闭。

  要编辑哪一个字串,就用鼠标双击它打开信息内容,然后把英文字串翻译成中文。对英文字符前有&这个符号的,例如:&Help,在H前面有&,对话框会把H加上底线,表示这是一个快捷键。由于无法在中文字前加&,所以就把&Help翻译成「帮助(&H)」,保留&H这个快捷键,若是Brow &ser...就翻译成「浏览(&s)...」,以此类推。快捷键不一定要有,有时为了美观起见可以省略,若省略快捷键就无法用键盘操作程序,只能用鼠标。

  有一些比较特别的字串,例如:Static,看起来不像是信息的,就不要去翻译或改变它,因为它很可能是程序中传递的参数或记号。有时字串长度可能太长或太短,以致于对话框位置不符合或不好看,为了美观起见,你可以自行调整位置或大小。总之,你此时可根据常规习惯自由发挥。

  编辑Menu

  编辑Menu(菜单)跟编辑Dialog的方法很类似,按一下Menu项旁边的加号,打开项会出现一系列的Menu项目,每一个项目是一个菜单。

  在编辑之前也是一样要修改语系,修改语系的方式跟Dialog是一样的,一个一个修改嫌麻烦,也可以整批一起修改。

  双击一项菜单的项目,打开菜单内容开始编辑翻译,要翻译哪一个字串就双击哪一个字串。菜单一定都有快捷键,最好全部保留。

  字串中有一些特殊符号,例如:t(Tab)、\n(换行),就把它保留下来,翻译信息的部分力求和原本的程序一模一样。

  翻译String Table

  最后就是要翻译String Table(字串表)了,这里要翻译的东西最多。按一下String Table项旁边的加号,打开项会出现String Table,通常只会有一个项目。在翻译前要先修改语系。

  还是一样,要翻译那哪一个字串就双击哪一个字串。快捷键、特殊符号、参数字串最好都完整的保留下来。

  全部都翻译完成后,按下存盘的图标就可以将翻译完成的resource存回到程序中,你再去执行那个程序,会出现图2样式。 

原文转自:http://www.ltesting.net