VB 程序汉化全流程


梁利锋在文章中把 VB 程序的汉化总结为以下几个步骤:
汉化一个 VB 语言程序的基本步骤如下: 
  1、使用“VB 窗体汉化器”进行窗体的汉化; 
  2、使用 LocPlus 进行 VB 字串的查找和替换; 
  3、使用 LocPlus 进行 UniCode 的查找和替换;(在程序使用了控件时) 
  4、使用 LocPlus 进行 ASCII 的查找和替换;(仅在程序使用了 Form 2.0 设计器时) 
  5、进行字体修正。 
下面就以上述步骤详述VB程序汉化的全过程。


一、使用“VB 窗体汉化器”进行窗体的汉化

VB 窗体汉化器界面简介:

VB 窗体汉化器秉承了点睛系列简洁明快的特点。各按钮功能如下:

   窗体导出:用于导出VB程序中的窗体
   字串查找:对导出的窗体进行字串查找
   字串替换:将翻译好的字串替换到窗体中
   窗体导入:将窗体导入到VB程序中

 

VB 窗体汉化器的汉化流程:

窗体导出-->字串查找-->字串翻译-->字串调整-->字串替换-->窗体导入

下面以一个实用的小工具 RegCompare 为例详述 VB 窗体汉化器的使用流程
准备工作:由于VB 窗体汉化器是以窗体为汉化对象,会将所有VB窗体全部导出,因此会生成很多扩展名.BIN的窗体文件,所以先将要汉化的文件复制到一个单独的目录,同时起到备份的作用。此例中 Regcompare 安装于c:\regcompare,在其中建立一个名为 hanzify 的文件夹存放主文件的副本。compare.exe 即为我们要汉化的对象。

1、窗体导出

点击主界面“窗体导出”按钮左边的“...”选取要汉化的主文件 compare.exe,点击“窗体导出”按钮,完成后会有提示:

此时会在同目录中生成扩展名.bin的窗体文件,并有一个扩展名.log的记录文件compare.exe.log,(此文件很重要,VB 窗体汉化器以后的所有操作流程均基于此文件)。很幸运的是RegCompare只有三个窗体文件:aboutbox.bin、Form1.bin、Form3.bin。如下图

2、字串查找

导出窗体后,就要对这些窗体进行字串查找。
点击“字串查找”按钮,VB 窗体汉化器将对所有导出的窗体进行字串查找,并生成同名的.a.txt的文本文件,其中包含了我们要汉化的字串资源。如下图

3、整理与翻译字串

此时我们不要关闭“VB 窗体汉化器”直接转到hanzify目录中,用任一文本编辑器打开这些文本(这里以Form1.bin.a.txt为例),将其中很明显不需要翻译以及一些无用的信息删除,形成一个简洁的对照文本,然后按照字串替换器的对照文本格式对文本进行翻译。特别强调的是,在翻译过程中我们一定要忘记“借字”、“挖字”等概念,我们所要专注的就是翻译,也无需要担心什么“超长截断”,VB 窗体汉化器将会帮我们检查翻译后的字串长度是否符合要求,这就是VB 窗体汉化器的优越之处。



4、字串替换

(1)检查字串长度

所有文本翻译完毕后,点击“字串替换”按钮。会提示我们翻译后的字串总长度与原字串总长度之差。这一步一定要注意:每个窗体翻译后的字串总长度与原字串总长度相等时才能进行替换。记住每个相差的数字。选“取消”


(2)调整字串长度

我们要尽可能选择那些不影响界面效果的字串来进行调整,而且尽可能只在同一字串中进行调整。
仍以Form1.bin.a.txt为例,上面提示翻译后的字串比原字串少32个字符,因此我们要设法在某一或某几个字串后总计添加32个字符,以保持“窗体平衡”。这里建议最好添加空格,这样的好处是如果替换后不影响程序运行且不影响界面效果,则可以省去后期用16进制工具填充00的过程。图中“欢迎使用 KMCS Registry Compare!”为状态栏显示的文字,补空格后不会影响到程序的运行及界面效果。因此,在此字串后添加32个空格符(也可以添加其它易于识别的字符:如aaaaa、bbbbb.....等,只是要多做一步后期处理,图见“整理与翻译字串”第二幅图),其它文本类似处理。
如果翻译后窗体中字串总长度大于原字串总长度,则精简译文,以使总长度相等。

(3)替换字串

调整完毕后,点击“替换字串”按钮替换字串,当所有窗体提示“长度相等”时方可“确定”,显示“成功替换!”。


5、窗体导入

字串成功替换后,窗体中的相应字串已被我们翻译的中文字串所替换,此时的窗体已成为“中文窗体”,我们点击“窗体导入”按钮将这些窗体导入原程序。当显示如下信息时则成功。

运行程序,显示中文界面。

测试一下功能:点击“生成第一幅快照”。嗯?状态栏怎么还有英文?
按照梁利锋的步骤,进行下面的操作


二、使用字串替换器进行VB字串的查找与替换

运行“字串替换器”选择“特殊”-->“查找 VB 字串”,选择C:\regcompare\hanzify\compare.exe,选中“英文和符号”(选此项提取得较全面,但会多一些无用信息),点击“查找字串”。查找完毕自动转到“编辑对照文本”,点击“编辑对照文本”

果不其然,字串就在其中。清除一些很明显不用翻译的部分及无用信息,将文本翻译完毕保存。选择“替换字串”,测试,成功。


三、使用字串替换器进行 UniCode 的查找与替换

咦?怎么“关于”对话框中还有一段英文?用Unicode的查找试一下,
“文件”-->“查找Unicode字串”(具体步骤与查找VB字串类似,不详述)

未能找到。只有进行ASCII查找了

四、使用字串替换器进行 ASCII 的查找和替换

“文件”-->“查找ASCII字串”,终于找到了,同样将提取的字串进行整理,然后翻译,替换(类似于VB字串的查找与替换,不再详述),测试成功。(图见“字体的修正”一节最下方左图


五、字体的修正


通过以上操作,RegCompare基本汉化完毕。但有些窗体的字体不太美观,需要进一步修正。
用Hex Workshop打开compare.exe,“编辑”-->“查找”
1、输入VB5!,并注意以下选项,找到后VB5!把后边的从*开始的几个字节改为vb5chs.dll(前提是计算机中有vb5的运行库.) 

                      修正前

                          修正后

2、查找"010000009001 "与"01000000BC02"找到后看看后面有没有字体名,如果有则找对了地方,把010000009001 改为018600009001或把01000000BC02改为01860000BCO2并把找到的十六进制值后面的444201改为905F01,(注:9001,表示常规体,BCO2代表粗体有时改为905F01效果并不怎么样,可再改大一号改为DC7C01)。 至于字体名称可以不用改,偷一下懒吧。当然如果要改成其它特殊字体,还是要改为相应的字体名的。注意要修正的地方有多处,有几处"010000009001 "与"01000000BC02"后面并不是444201,这时千万别随意改为905F01,因为有些是标题,字号相对较大,如果改为905F01,会很难看。

修正前

修正后

修正前

修正后

 

六、控件的调整
字体是美观了,但界面中仍有一些不对齐的地方。
为了完美软件的汉化,还需要进行细微调整,这就是控件的调整。
下面介绍一个工具名叫:VBEitor。用这个工具对控件进行微调十分方便,控件的大小、位置、字体、字号、前景、背景色等属性的调整易如反掌,并可进行图像替换等。

在Regcompare的共享提示对话框中有一段字串没有对齐,很难看。将该控件的属性如图设置后,相对较为美观。

调整前

                 调整后

调整前

           调整后

后记:很早以前就想写一篇关于VB汉化的文章,由于只有极少的VB程序汉化经验,所以迟迟不敢下手。看了拳拳的文章后深受启发,这才决定动手。在此过程中,恰逢世纪被黑,十分痛心。6月30日论坛恢复,欣喜之至,遂放上此文!敬请批评指正!

 

利用字典对 VB 程序升级汉化


有人可能会问了,采用梁利锋的汉化步骤,如果要汉化 VB 程序的升级版本,是否一切都要从头再来?能否用字典对新版本进行升级汉化?
答案是肯定的。我们一样可以实现类似于VL、 LL、 Passolo等本地化工具的字典功能,从而加快升级汉化的进程,提高升级汉化的效率。

大家都知道,利用字典进行升级汉化,其实就是充分利用已有的汉化资源实现对新版本的快速汉化,大幅度减少重复机械的翻译工作。所以字典是我们实现快速升级汉化的基础。
下面就来看看如何制作可用于 VB 程序升级汉化的字典

1、字典的制作

由于我们已经完成了 Regcompare 汉化,那些由“VB窗体汉化器”和“字串替换器”所提取出来,并已经被翻译为英汉对照格式的文本文件就是我们制作字典的来源(以Form1.bin.a为例)。我们要用的字典制作工具就是“点睛字串替换器”

运行“字串替换器”,选择“编辑”-->“分割对照文件”

然后点击“对照文件名”一栏后面的“…”选择Form1.bin.a.txt,此时字串替换器自动检测该文件为“ASCII”类型,以“偏移量方式”,点击“分割对照文件”。

这时会在同目录中分别生成同名的扩展名.dic(Form1.bin.a.txt.dic)和扩展名为.off(Form1.bin.a.txt.off)的两个文件。

用任一文本编辑器打开,其格式如下:

.dic文件

.off文件

其中.dic文件即是我们需要的的文件,其格式就是“开心字典”、“中文化精灵”、“Resource Modifier”等支持的“对照文本格式”,用普通文本编辑器或专用字典工具可对其进行二次编辑。

点睛 DictEditor

同理,将其它的文本按此法生成.dic文件。最后将这些.dic文件合并取名为 regcompare.dic(别告诉我你不会合并文本文件哟),用“点睛DictEditor”或“中文化精灵”等专用字典工具对其进行维护,生成一个相对完美的字典。

中文化精灵

一个专用字典就形成了。接下来就可用这个字典进行升级汉化。


2、利用字典进行升级汉化

首先还是遵循常规流程,将新版本 VB 程序的窗体导出,提取字串,生成新版本的英文对照文本(我们假设 Regcompare 新版本文件位于C:\regcompare\升级版 这个目录中,仍以Form1.bin.a.txt为例)。下面我们刚才制作的字典就派上用场了。
运行“字串替换器”,选择“编辑”-->“翻译新版本”。

“对照文件名”一栏为待翻译文件(此处为新版本的Form1.bin.a.txt);“字典文件名”一栏选择刚才制作的字典 regcompare.dic,点击“翻译新版本”按钮

好了,再打开Form1.bin.a.txt,可以看到与前一版本相同的资源均已被翻译,剩下的就是翻译新版本中增加的字串,清除冗余字串。其余文件同理操作。

原文件

新版本

剩下的操作请参照VB 程序汉化全流程