论坛风格切换切换到宽版
  • 13386阅读
  • 23回复

汉化 VB 程序一点心得 [复制链接]

上一主题 下一主题
离线李应文
 

发帖
1270
金钱
160
威望
16
只看楼主 倒序阅读 0 发表于: 2003-12-20
虽然玩汉化有一年多的历史了,但接触 VB 类程序的汉化还是第一次。鉴于汉化过程中出现了好多的困惑,特将汉化过程简述一下,希望能为和我一样的朋友在汉化 VB 类程序上有所帮助。

第一步,检测一下程序是否被压缩或加密。
用 PE iDentifier v0.91(我习惯用它,其实 FileInfo v3.01 也是不错的选择) 检测到该软件加了 ASPack 2.12 的壳。
用 UnASPack v2.12 脱壳后,再用 freeRes v0.94 处理一下(脱 ASPack 2.12 的壳也可以优先考虑一下 CASPR v1.100 )。
用 PE iDentifier v0.91 再检测一下,可以看到该软件使用 Microsoft Visual Basic 5.0 编译。

第二步,对ASCII 和 Unicode 进行汉化。
用 GetVBRes v0.80 打开程序,程序会自动查找 ASCII 和 Unicode 字符串并以列表的形式呈现给用户(如果你的机子够快的话,可以选择狂风VB语言汉化王 v0.98)。找到需要修改的字符串后双击该行打开字串处理对话框,在这里我们可以对其字串进行翻译。需要说明的是,当汉化后字符串长度少于原字符串的长度时就需要用 00 或 20 添充。究竟该选择哪一种呢,除按钮及一些隐藏提示外建议“用 20 添充”。如图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 1 发表于: 2003-12-20
图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 2 发表于: 2003-12-20
修改完成后单击 [更新当前程序资源] 按钮。
单击[运行当前程序按钮] 测试一下。怎么界面中还有许多英文呢,原来这些英文都是 Unicode 字符串,由于 GetVBRes v0.80 本身的局限性找不到这部分资源,我们接下来手动完成。说到这儿也许有朋友要问,为什么不用《狂风VB语言汉化王 v0.98》呢?其实,由于这部分资源的特殊性,它也无法查找到。另外,它提取的有些资源会重复一两次,而且它的加字功能还不够完善。
还有一个问题,就是界面中字符串后出现了许多小正方形(提示: 如果在汉化时选择“使用 00 添充”遇不会出现这种情况)。不要紧,这是由于字体设置不当引起的,呆会儿我们解决。如图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 3 发表于: 2003-12-20
先修改“Cancel”。用 点睛文本编码查询 v0.90 算出“Cancel”及"取消"的 Unicode 值,用 UltraEdit v10.10b 替换,如图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 4 发表于: 2003-12-20
我们用同样的方法做好其它的按钮。
注意:此处按钮的修改。它是以 Unicode 的形式存在的,但长度标识是以 ASCII 的长度来计算的(好奇怪也),否则字符会显示不全或暂停功能损坏,修改如图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 5 发表于: 2003-12-20
至此,字符串资源的汉化已完毕。
第三步,修改字体及字号。
本来想偷个懒,用《狂风VB语言汉化王 v0.98》修改字体,不料竟出现了如图问题,只好手动来完成。
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 6 发表于: 2003-12-20
VB的字体块一般有个标准的结构,如图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 7 发表于: 2003-12-20
第一个字节表示此字体块所属的控件类型。
第三个字节代表“语系”,英文为“00”,简体中文为“86”。
第五个字节用来指示字体的风格。
第六、七字节共同组成一个双字节整数,表示字体的“粗体因素”。值一般为 90 01(规则) 或 BC 02(粗体)。
第八、九、十、十一字节共同组成一个四字节整数,表示字体的大小。9号字是“90 5F 01 00”。
第十二个字节表示字体名的长度,比如字体名是“Verdana”,则此字节就是“07”。
红色区域所表示的是字体名称。

在汉化中,我们所要做的就是将第三字节改为“86”,将第八、九、十、十一字节改为“90 5F 01 00”,至于字体名称是不需要修改的,软件会调用系统默认的字体显示。
接下来就可以用 UltraEdit v10.10b 等十六进制编辑器来查找修改了(可查找“010000009001”或“01000000BC02”)。
那么,为什么“_”变成“0”和“X”变成“r”呢?原来这些按钮不仅仅使用了图像资源,而且使用了字符“_”和“X”,并使用了很特殊的语系“02”。《狂风VB语言汉化王 v0.98》会自动识别语系代码,并将其全部修改为“86”,导致按钮显示出错。对这一部分我们不作修改(共有5处)。
至此,字体的修改已经完成。完成图:
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 8 发表于: 2003-12-20
当然,如果你觉得汉化后的控件位置不太好的话,还可以使用 VBEditor 调整一下。如图,静态文本和动态文本框的距离也太大了吧?
离线李应文

发帖
1270
金钱
160
威望
16
只看该作者 9 发表于: 2003-12-20
如何使用 VBEditor 调整呢?如图:打开程序后,点击窗体“oneForm4”在其属性下拉列表框中依次选择控件“Text1(1) TextBox”和“Text1(0) TextBox”,对其进行修改。如图: