·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> VB汉化 >> VB 程序汉化全流程    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

VB 程序汉化全流程

作者: 匆匆 来源:汉化新世纪论坛 时间:2004-02-29 点击:38059

VB 程序汉化全流程

匆匆

梁利锋在文章中把 VB 程序的汉化总结为以下几个步骤:
汉化一个 VB 语言程序的基本步骤如下:
  1、使用“VB 窗体汉化器”进行窗体的汉化;
  2、使用 LocPlus 进行 VB 字串的查找和替换;
  3、使用 LocPlus 进行 UniCode 的查找和替换;(在程序使用了控件时)
  4、使用 LocPlus 进行 ASCII 的查找和替换;(仅在程序使用了 Form 2.0 设计器时)
  5、进行字体修正。
下面就以上述步骤详述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:regcomparehanzifycompare.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的共享提示对话框中有一段字串没有对齐,很难看。将该控件的属性如图设置后,相对较为美观。



chenmy

 

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

补充一下:

在VB6中有些字体设置形式为:“01FF00009001”或“01FF0000BC02 ”,也应该修改为“018600009001”或“01860000BCO2”。

另外,对于那些含有非VB控件的窗体(如 Deiphi)的字体,也要注意调整。

 

附件中为regcompare原版,供大家练习


点击浏览该文件

以下地址是 HTML 格式全文
http://www.freewebsitehosting.net/websites...s/lalacongcong/


 

拳拳

我把上次丢失的帖子(和冯兄讨论的)内容也贴在这里吧:)


冯世磊:
请大家说一下VB加字的经验,就是加字的时候怎么样来判断是否是一个模块?或者是一级的菜单?(排除用观察的方法),最近可能会出个VB的汉化程序


拳拳:
…… 转自 WWP:
如何确定 VB5(6) 中每个窗体的起止位置?
只有在同一窗体内的字串,才可相互借用。如何确定其起止位置?
向上查找“FFCC31”,这就是窗体的起始位。从“FF”往后数到第89个字节处,如果从 89 个字节起后面的 4 个字节是“06180000”(第 89 个字节前面是很多的“00”,“06180000”只是假设),则表示从“06”算起,到 1806h 个字节处是该窗体的终点。


拳拳:
冯兄,如果你只是要判断要修改的某字串是否在同一窗体内,其实可以更简单一点:
比如修改的字串为“About M&#111nkey's Audio”(软件:M&#111nkey's Audio 3.98 alpha 1),
向上搜索“ffcc31”,将此看作窗体的起始,然后再次向下搜索“ffcc31”,在这次查找到
的“ffcc31”前的部分看作窗体的结束(这里的“ffcc31”之前有一个到多个不等的“00”,可以不计在内)。如果向下搜索不到,就要用上法判断了。


冯世磊:
这种方法准确率高不高?


拳拳:
其实原理是一样的,所谓“向下搜索‘ffcc31’”,无非就是找到下一个窗体的起始位置,亦即变相判断了上一个窗体的结束位置。一般我在汉化 VB 程序时经常这样做,方便一点:)
不过,为保险起见,还是用通法吧。
看来冯兄是想把 VB 字串的借字处理方法也整合到功能里面去吧,期待^^


冯世磊:
要做,就要在初期规划主要功能,再慢慢的根据需要增删,第 89 个字节的四个字节怎么是00 00 00 00?怎么回事,我测试用的程序是E-Icons


拳拳:
这个软件是有点奇怪。
好久没碰 VB 汉化了,印象中好像记得:向上查找“FFCC31”时,从“FF”往后数到第 89 个字节处其后的这四个字节前面一定要有很多“00”(包括第 89 个字节往前面数有 36 个“00”),如果没有继续向上搜索直到符合要求为止。
梁老大的 VB 窗体汉化器可以准确导出窗体,你不妨请教一下他。


拳拳:
另外,有关 Unicode 字串的长度计数,有两种:一种是以一个字节为单位进行计数的;一种是以两个字节为单位进行计数的。比如 Unicode 字串“Help”,计数有可能是“08”,也有可能是“04”。
我碰到过几个例子,要汉化的某 Unicode 字串有几处地方,都需要汉化才能正常运行。还是以“Help”为例,长度计数有的为“08”,有的为“04”,汉化为“帮助”之后要相应地将长度分别改为“04”和“02”才行。有的软件却不是这样,例如 M&#111nkey's Audio,依次修改计数之后反而出错。所以最好是要能够自定义修改计数值,这也是我在前面的帖子里提到为什么 Unicode 字串似乎更令人头疼的原因。


 


论坛原贴

VB 程序汉化全流程.chm

点击浏览该文件

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): VB 教程

·上一篇: 瞒天过海汉化WinZip的菜单 ·下一篇: 快速搜索ASCII及Unicode

· 版权申明: 本文引自《汉化新世纪论坛》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《汉化新世纪论坛》[ 作者: 匆匆],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号