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

VB类程序汉化-IcoFolder3.0汉化之实验报告

作者: 何知宇 来源:汉化教学 时间:2003-07-31 点击:11463

VB类程序汉化
--IcoFolder3.0汉化之实验报告

何知宇


    其实本不该我来写这篇文章,像梁利锋WeiPing阿涛他们都写过VB汉化的文章,我也是看他们几位的文章才逐渐掌握了一点皮毛,尤其是梁利锋weiping基本上是在网络上“手把手”地帮我解决了一些很关键的问题,在这里,非常感谢上述几位对我的帮助,现在将我的一些体会和心得写出来,由于本人水平实在有限,对于编程基本一无所知,在很多地方难免出秕漏,错误之处在所难免,还望各位高手不吝赐教。
    由于VB程序的特殊性,很长时间VB的汉化一直困扰着汉化人,使用传统的汉化工具要么是找不到资源,要么是用十六进制编辑器汉化时,不仅工作量奇大,容易出错,最常见的是很可能会造成程序的某局部功能丧失。前一段时间,梁兄利锋写了好几篇  关于VB汉化及VB字体字号修改的文章,从编程的角度上加以分析,并开发了字串替换器,为广大汉化人汉化VB类程序提供了崭新的思路及方法。
    今天我们要举的例子是IcoFolder 3.00,是一个改变文件夹图标、可挖掘exe,dll等文件内部图标的工具,先来看看它的主要界面。
    下面的两幅图就是该程序的主要界面,好,现在开始汉化,我使用的工具是梁利锋开发的字串替换器,现在最新版本是0.93,不仅在提取VB字串,在ASCII字串的提取方面也是威力强大,与该工具功能类似的另一强力工具是由香港黄权燊先生编写的CXA 10.2,我这里主要介绍字串替换器,(因为我用的比较熟,嘿嘿)。

图1

    程序还有一个关于界面及一个帮助界面,有两个辅助用法,一个是调用sysinfo32.exe,显示系统信息,另一个显示Windows 版本信息,说这些的原因,是因为我在最初汉化的时候因为过渡汉化或汉化方法不当,而造成部分功能不能调用甚至丧失,大家一定要注意哟,小心变成一个“庸医”哟。
    好了,现在打开字串替换器,界面如下:

图2

    首先确认程序功能处于查找VB字串项内,然后通过浏览键选定程序文件名,就是VB主程序IcoFolder.exe啦,程序会自动生成对照文件名IcoFolder.exe.txt,如图设置为查找“英文与符号”,点击“查找字串”进行查找。

图3

    查找完毕,点击确定键后,程序将自动进入编辑界面(如下图)。

图4

    此时我的习惯是将对照文件分割为字典文件,编辑完后再写入对照文件,所以我的操作如下:点击“编辑”菜单栏内的“分割对照文件”,选择“偏移量方式”,点击分割对照文件,将对照文件分割成字典文件(这种提法我也不知是否恰当,暂且这样称呼吧 ^O^)

图5

    分割完成,将字串替换器最小化在任务栏内,打开程序目录内的 IcoFolder.exe.txt.dic字典文件,开始翻译,这大家都应该知道了,奇数行不能动,偶数行需翻译,注意翻译后的字符个数不要超过奇数文本的长度,若有必须超出的,先不要翻译,留在后面解决。在这里,我想再多说几句,针对该程序在此时翻译时,要注意某些字符不能译,译后会有问题出现,比如下图左显示的“PATH”不能译,译后会导致系统信息调用功能的丧失;“ICONFILE=”也不能自作聪明的译为“图标文件=”,我在测试时当初没有发现,从表面上程序都很正常,到了才发现文件夹图标不能更换了,后来是WeiPing兄帮我找到了原因(多谢!)只好返工,很痛苦。
    那位说了,你太笨了,那是大写,不能翻译的!嘿嘿,您说的也不全对,如下图右的“exit”也不能译为“退出”,否则你的文件夹图标同样不能更换!这是因为该程序在更换文件夹图标时过程中生成了一个bat文件,exit是bat文件的最后一行,DOS能认得“退出”吗?嘿嘿。
    说这么多的原因,还是希望大家在汉化一个软件之前,应尽可能先要用好它,看看它的功能是如何实现的,最关键的时候修改完一部分,一定要进行多次测试,并不是说程序可以运行就万事大吉了,要所有的功能都要能够正常使用,才好进入下一步,要不然...,那位又说了,我所汉化的程序很大,功能也很多,无法一一测试,该怎么办?发给我好了,我帮你测试呀!(你说这可能吗?),或者找个比较简单的软件开始汉化,像我就专找“软柿子”捏,哈哈。
    大块头的软件要一个人汉化确实难度很大,最近我看到在有些汉化论坛里汉化人WISE正在招人准备集体汉化3D max,对人选的甄别及汉化过程的准备等方面考虑得很周到,我认为这种方法很好,这是对付大块头的一条必由之路,不是说“众人拾菜火焰高”嘛。希望他们能够合作成功,让那些办MAX学习班骗钱的家伙们见鬼去吧!
    咦,好象扯远了,对不起,继续我们的翻译工作,一切做好了,我们进入下一步,根据字典文件进行对照文件的翻译,这一步就不用你绞尽脑汁了,交给字串替换器去干吧。

图6

    启动刚才在任务栏待命的字串替换器,点击“编辑”菜单栏内的“翻译新版本”选项,则进入如图界面,点击浏览键盘选定字典文件,也就是你刚才费了九牛二虎之力翻译的那个文件,再点击“翻译新版本”。

图7

瞧下图,这时,程序已根据你的字典文件生成了翻译好的对照文件。

图8

    下一步,我们将利用译好的对照文本进行字串替换,以写入程序,注意替换方式应设为VB字串,否则..哼哼,程序有问题可别怨我:),点击替换字串按钮进行替换。

图9

    字串替换成功后,将会出现提示,源文件被保存为bak文件,好了,打开你的exe文件,运行测试去吧,看看功能是否完整,看看VB替换了哪能些字串,如果有问题,请仔细分析一下,可利用分批导入的功能找出那些字符不能汉化,常做备份是个好习惯,可以降低你的工作量哟。

图10

    那位又说了,程序完全正常,怎么还有这么多的英文字符啊?字体也不对头呀?先说说那些没有汉化的字符就是ASCII字符,我们下一步就来说说ASCII字符的汉化,其实关于ASCII码的汉化也不应该让我写,前几天的三篇关于ASCII码字串的汉化就给我上了极其生动的一课,受益非浅,豁然开朗。建议同志们都去读读,我的这篇三脚猫不读也罢。:)
    好了,大家都回来了,读了的文章吗?再去读读Weiping关于汉化Vopt99的文章,还有梁利锋的几篇VB字体字号的文章。
    噢,都读完了,太好了。这下我可省事了(窃笑状)。
    关于ASCII字符的提取我们仍采用字串替换器,和前面讲的方法及例图类似,需要注意的是,这次提取的不是VB字串,而是ASCII字串,如下图所示,选择“查找ASCII字串”选项。

图11

    ASCII字串查找界面如下,浏览选中程序文件,生成相应的对照文件名,IcoFolder.exe.a.txt,注意,那个a就是表示ASCII字符,默认选项最短为4,最长256。点击“查找ASCII”即可。

图12

    ASCII字串查找完毕,还是用老办法,先把它生成为字典文件,点击“编辑”菜单内的“分割对照文件”,选择“偏移量方式”,点击“分割对照文件”按钮,生成字典文件,如图所示。

图13

    ASCII字串分割完毕后,下一步就又该你自己干了,字典文件的翻译又开始了。等等,我又要开始罗嗦了,大家可能会在这个字典文件里发现有些字符长度不足,无法完美汉化,比如图1右图的菜单,&File,&Open, E&xit,大家如果阅读了上面我提到的几篇文章,应该很清楚解决办法了吧?是的,只要我们保持同一窗体内字符串总长度相等,就可以实现完美汉化。就拿图1举例来说,我们在文本编辑器里将长度不足的字符串排列为一行,将译后的排为一行,长度不够,就去看看同一窗体有那些字符可以拿来一用,经挑选比较结果如下图所示,两行字符长度相等,我们借用了本窗体中的字符串 Icon Selected:及IcoFolder Search,所以在翻译字典文件时,这些字符我就没有翻译(包括那两个“借来的”字符串),准备放在最后再调整。

图14

    在这个程序的其它部分也有类似情况,如在Windows版本信息窗内有一个&Close,在关于对话窗内还有一个&OK,处理方法如上,我就不多说了,需要注意的是“借用的”字串必需来自于同一窗体。有些可能和控件有关,也就是说,不一定是同一窗体的字串拿来就可以用的,因我做的VB汉化还很少,所以不太清楚是否具有普遍性,朋友们可以多试试,有新发现别忘了告诉我哟!另外由于我们设定最长的字符串为256,所以超长的字串提取可能不完整,比如关于窗内的警告信息及帮助窗口内的帮助内容等,在这里也可暂不翻译,留到最后再处理,很轻松的。
    翻译ASCII字典的工作终于完成了,好了我们可以利用字串替换器的“翻译新版本”和“替换字串”功能进行ASCII字串的替换工作了,其方法与替换VB字串的过程相似,注意在选择字典文件和替换方式时注意一下就可以了,这里就不重复了。
    那位又说了,嗯,测试了,功能都完整,可是字体很难看,有些还是英文字体。好,我们再来查找替换一下unicode字符吧。启动字串替换器,如下图,选择查找UniCode选项进行查找。

图15

查找结束后,可采用上述针对VB字串及ASCII字串的翻译编辑及替换方法进行,不再重复。替换结束后,如图所示。

图16

    这里必须强调一下,字体因为我们目前还未修正,所以确实很难看,回顾我们刚才在翻译替换Unicode字串时,在字典文件里翻译的“浏览”及“应用图标”变成了如图16左所示的状况,这是我们不想看到的。并且仍然有英文字符出现,造成这种状况的原因是由于我们只修改了字串的内容,而并未对字串长度进行修改造成的。所以从这个例子来看,用字串替换器替换VB程序中的unicode字串不太理想,(也可能是我不大会用,请高手指正。)
    我的经验是像这种界面外观上很明显也很重要的unicode字串,在翻译字典文件时可暂不翻译,留到下一步用十六进制编辑器进行修正,推荐ChinEase兄汉化的 Hex-workshop来继续修订。假设此时我们已恢复至ASCII字符替换状态,并且已进行了unicode字串的替换,但保留了“Browse”及“Apply Icon”为英文状态。(看出常做备份的好处了吧,另提示一下,查找不同类型字串前,以前的字典文件应该换名保存,以便随时返工),嘿嘿,“你才说?!我都...”,这位兄弟不能怪我哟,我也是个半瓶子瞎晃荡,都是伟@伟乾要我写的,要不你们去找他的算账,他家的地址是.....(话未说完,大宇已被打昏过去...)。
    打开Hex-Workshop,读入exe文件,查找unicode字符“Browse”,方向向下,界面如图所示。

图17

    查找结果如图所示,注意高亮显示部分为查到的unicode字串,在VB程序内,位于字串前与字串以3个00相隔的位置,则是该字串的长度标识符,本例中为06(十六进制),所以我们在修改字符串内容的同时,还需修改字串长度标志符。

图18

    使用Hexworkshop的替换功能进行unicode字串的替换修改,冗余部以零填充,因为我们把browse改为“浏览”,不要忘了把字串长度值由06改为04(十六进制),如图所示。

图19

    我再来举个例子,比如图16中的unicode字串,“Search my computer for more icons”,我们在Hexworkshop中查到如图所示。其中21表示该英文字串的长度。

图20

    使用Hexworkshop的替换功能进行unicode字串内容的替换修改,冗余部以零填充,因为我们把该字串的改为“搜寻计算机以获取更多图标”,所以还需把字串长度值由21改为18(十六进制),就是十进制的24啦,如图所示。

图21

    方法就是这样,依次类推,我们将其余的字符如“About”、“Close”、“Clear”、“ Save as”依次汉化修改后,主界面如下:

图22

    大家请注意,此时unicode字符已悉数处理,好多了吧?什么,那位又讲了,字体很难看,好的,我们下一步就来修改字体,梁利锋兄阿涛在这方面很早就有文章出笼,我只是照样原搬,决无剽窃之意哟!在VB程序内字体字号的修改一般分为两类,第一类是VB可执行文件中的含有字体块的,我们现在根据例子实际来看一下,用hexworkshop打开exe文件,查找Ascii字串“Ms sans serif ”,第一个查到的字串如图23,图24高亮显示的部分表示整个字体块含字体名,图25高亮显示的为字体块。

图23

图24

图25

    为了实现宋体,9号,我借用梁兄及涛兄的方法给大家简要分析一下,图25高亮显示的第一个00指的是语系,英文为00,中文为86;第三个00表示普通字体,02表示斜体,04表示下划线;90 01表示正常字体,BC 02表示粗体,44 42 01表示为8号字,若改为90 5F 01则表示为9号字。好了,我们需要修改的地方就是语系、字体大小,至于后面的字体名好象是不用改的。如果你对此还想多了解一点,就去看梁兄及涛兄的文章,我若在这里继续转述,那可就真的成了剽窃啦!
    如我们碰到的这种情况,只需把0000 0090 0144 4201改为8600 0090 0190 5F01即可,若碰到粗体或斜体时,应保持与原程序的一致性。在本程序中,我们还会碰到如 0000 00BC 0244 4201的情况,只需改为 8600 00BC 0290 5F01即可保持粗体显示。
    大家可自行修改,这里我就不重复了,将程序内所有的“Ms sans serif”字串前的字节按照上述办法修改完毕,存盘即可实现该程序含字体块部分的字体修改。顺便说一句,有些VB程序调用的有可能是“Arial”或者是其它字体,前几天Ronnier兄发来一个VB程序,里面就有什么verdanaf、tahoma等很少见到的字体,查找时可使用“0000 0090 01”进行查找,找到后,往后再看看,就能看到这些怪字体了,然后再利用这些字体查找修改即可实现字体块的修改。将所有字体块字体修改后,如图所示。噢,本程序中就有一个tahoma字体,记着修改前面的字体块哟!

图26

图27

    大家可以看到,如图26,有些字体显示仍不好,如“目录名称”、“图标路径”及“浏览:”,这些字体的修改不能通过上面的办法来实现,因为它们没有字体块可用来修改,所以......,我只好再次引用梁兄的方法来实现字体的修正,[在“IcoFolder.exe”文件中查找“VB5!”,找到后,再向后的第三个字节是“*”,十六进制是“2A”,后面是一大串“00”,只要把从这个“*”开始的地方修改“vb5chs.dll”,程序就可以正常显示“宋体,9”了。],原来这样就行吗?答案是肯定的,我们来实际操作一下。我们将查到及修改后分别如下图所示。

图28

图29

    结果如图27所示,所有的字体都显示为宋体9号了,字体修改完成,留给我们下一步的工作就汉化那些长度不足的字串,见图14,我们只要保持同一窗体的字串总长度与汉化后字串总长度相等就可实现完美汉化,还是以下图为例,当我们用编辑器进行修改时,字串前用一个00相隔的字符则表示该字串的长度,这个也要一同修改,还是放上两几个对照图吧,请大家注意不仅要替换内容,还要根据汉化后字串长度改写程序中字串长度标识符。

图30

图31

图32

    这是修改后的对照图,可以是基本实现完美汉化了,对于其它窗口的字串我就不再举重复了,请大家自行体会。

图33

    就拿这个程序来讲,还有一些较长的ASCII字符尚未汉化,还有一些需要微调,这些都属于最后的修缮和美化,这里我就不多说了。我已经听到有人说这一篇像某某的裹脚布啦,还是就此打住吧。嘿嘿。
    因本人涉足汉化日浅,以前也未曾写过类似的文章,在写作的过程中,自已也被一些概念所迷惑,(一般情况下我会唔唔带过),如果你认为本文有明显错误及值得商榷之处,那是再正常不过的了,欢迎您到我的主页留话或者发信给我,本人感谢不尽。再次强调的是,这不是一篇教学文章,只能算是我汉化icofolder的试验报告吧,期待着各位朋友及高手们的指教。顺便补充一句,这两天我在为国庆献礼制作补丁的测试中,发现汉化后的程序在NT下不能运行,(原程序可以正常运行),这是因为我们在汉化无字体块时调用的vb5chs.dll在NT下无此链接库文件,所以...而98则不存在这种情况,大家只需把98下的vb5chs.dll拷入NT环境下的 winnt/system32目录下即可,谁叫VB不是咱中国人写的呢,呵呵。
    在本报告结束之际,特别感激伟乾梁利锋WeiPing阿涛的教学文章,使我得以初步掌握VB类程序的汉化方法,没有伟@伟乾的一再督促,可能我也会一再偷懒,不知拖到什么时候,才会写这篇试验报告。

 

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): VB 非标 ASCII Unicode

·上一篇: 汉化心得-关于右键资源汉化 ·下一篇: RVA字串乾坤大挪移--偏移量转换器的简单用法

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

· 转载申明: 本文引自《汉化教学》[ 作者: 何知宇],如需转载请直接联系原始作者,并请注明原始出处。

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

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