杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2875|回复: 0

VB类程序汉化-IcoFolder3.0汉化

[复制链接]
发表于 2015-1-23 17:09:46 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
作者: 何知宇
来源:汉化新世纪
源地址:http://teach.hanzify.org/article/25-1059580800.html

    由于VB程序的特殊性,很长时间VB的汉化一直困扰着汉化人,使用传统的汉化工具要么是找不到资源,要么是用十六进制编辑器汉化时,不仅工作量奇大,容易出错,最常见的是很可能会造成程序的某局部功能丧失。前一段时间,梁兄利锋写了好几篇  关于VB汉化及VB字体字号修改的文章,从编程的角度上加以分析,并开发了字串替换器,为广大汉化人汉化VB类程序提供了崭新的思路及方法。
    今天我们要举的例子是IcoFolder 3.00,是一个改变文件夹图标、可挖掘exe,dll等文件内部图标的工具,先来看看它的主要界面。
    下面的两幅图就是该程序的主要界面,好,现在开始汉化,我使用的工具是梁利锋开发的字串替换器,现在最新版本是0.93,不仅在提取VB字串,在ASCII字串的提取方面也是威力强大,与该工具功能类似的另一强力工具是由香港黄权燊先生编写的CXA 10.2,我这里主要介绍字串替换器,(因为我用的比较熟,嘿嘿)。
hhjxdy21.gif hhjxdy25-a.gif
图1
    程序还有一个关于界面及一个帮助界面,有两个辅助用法,一个是调用sysinfo32.exe,显示系统信息,另一个显示Windows 版本信息,说这些的原因,是因为我在最初汉化的时候因为过渡汉化或汉化方法不当,而造成部分功能不能调用甚至丧失,大家一定要注意哟,小心变成一个“庸医”哟。
    好了,现在打开字串替换器,界面如下:
hhjxdy26.gif
图2
    首先确认程序功能处于查找VB字串项内,然后通过浏览键选定程序文件名,就是VB主程序IcoFolder.exe啦,程序会自动生成对照文件名IcoFolder.exe.txt,如图设置为查找“英文与符号”,点击“查找字串”进行查找。
hhjxdy28.gif
图3

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

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

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

hhjxdy214-d.gif
图8
    下一步,我们将利用译好的对照文本进行字串替换,以写入程序,注意替换方式应设为VB字串,否则..哼哼,程序有问题可别怨我:),点击替换字串按钮进行替换。
hhjxdy216.gif
图9
    字串替换成功后,将会出现提示,源文件被保存为bak文件,好了,打开你的exe文件,运行测试去吧,看看功能是否完整,看看VB替换了哪能些字串,如果有问题,请仔细分析一下,可利用分批导入的功能找出那些字符不能汉化,常做备份是个好习惯,可以降低你的工作量哟。
hhjxdy217.gif
图10
    那位又说了,程序完全正常,怎么还有这么多的英文字符啊?字体也不对头呀?先说说那些没有汉化的字符就是ASCII字符,我们下一步就来说说ASCII字符的汉化,其实关于ASCII码的汉化也不应该让我写,前几天的三篇关于ASCII码字串的汉化就给我上了极其生动的一课,受益非浅,豁然开朗。建议同志们都去读读,我的这篇三脚猫不读也罢。:)
    好了,大家都回来了,读了的文章吗?再去读读Weiping关于汉化Vopt99的文章,还有梁利锋的几篇VB字体字号的文章。
    噢,都读完了,太好了。这下我可省事了(窃笑状)。
    关于ASCII字符的提取我们仍采用字串替换器,和前面讲的方法及例图类似,需要注意的是,这次提取的不是VB字串,而是ASCII字串,如下图所示,选择“查找ASCII字串”选项。
hhjxdy218.gif
图11
    ASCII字串查找界面如下,浏览选中程序文件,生成相应的对照文件名,IcoFolder.exe.a.txt,注意,那个a就是表示ASCII字符,默认选项最短为4,最长256。点击“查找ASCII”即可。
hhjxdy219.gif
图12
    ASCII字串查找完毕,还是用老办法,先把它生成为字典文件,点击“编辑”菜单内的“分割对照文件”,选择“偏移量方式”,点击“分割对照文件”按钮,生成字典文件,如图所示。
hhjxdy222.gif
图13
    ASCII字串分割完毕后,下一步就又该你自己干了,字典文件的翻译又开始了。等等,我又要开始罗嗦了,大家可能会在这个字典文件里发现有些字符长度不足,无法完美汉化,比如图1右图的菜单,&File,&Open, E&xit,大家如果阅读了上面我提到的几篇文章,应该很清楚解决办法了吧?是的,只要我们保持同一窗体内字符串总长度相等,就可以实现完美汉化。就拿图1举例来说,我们在文本编辑器里将长度不足的字符串排列为一行,将译后的排为一行,长度不够,就去看看同一窗体有那些字符可以拿来一用,经挑选比较结果如下图所示,两行字符长度相等,我们借用了本窗体中的字符串 Icon Selected:及IcoFolder Search,所以在翻译字典文件时,这些字符我就没有翻译(包括那两个“借来的”字符串),准备放在最后再调整。
hhjxdy223.gif
图14
    在这个程序的其它部分也有类似情况,如在Windows版本信息窗内有一个&Close,在关于对话窗内还有一个&OK,处理方法如上,我就不多说了,需要注意的是“借用的”字串必需来自于同一窗体。有些可能和控件有关,也就是说,不一定是同一窗体的字串拿来就可以用的,因我做的VB汉化还很少,所以不太清楚是否具有普遍性,朋友们可以多试试,有新发现别忘了告诉我哟!另外由于我们设定最长的字符串为256,所以超长的字串提取可能不完整,比如关于窗内的警告信息及帮助窗口内的帮助内容等,在这里也可暂不翻译,留到最后再处理,很轻松的。
    翻译ASCII字典的工作终于完成了,好了我们可以利用字串替换器的“翻译新版本”和“替换字串”功能进行ASCII字串的替换工作了,其方法与替换VB字串的过程相似,注意在选择字典文件和替换方式时注意一下就可以了,这里就不重复了。
    那位又说了,嗯,测试了,功能都完整,可是字体很难看,有些还是英文字体。好,我们再来查找替换一下unicode字符吧。启动字串替换器,如下图,选择查找UniCode选项进行查找。
hhjxdy2u-2.gif
图15

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

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

hhjxdy2h-5.gif

图18

    使用Hexworkshop的替换功能进行unicode字串的替换修改,冗余部以零填充,因为我们把browse改为“浏览”,不要忘了把字串长度值由06改为04(十六进制),如图所示。
hhjxdy2h-7.gif
图19
    我再来举个例子,比如图16中的unicode字串,“Search my computer for more icons”,我们在Hexworkshop中查到如图所示。其中21表示该英文字串的长度。
hhjxdy2h-10.gif
图20
    使用Hexworkshop的替换功能进行unicode字串内容的替换修改,冗余部以零填充,因为我们把该字串的改为“搜寻计算机以获取更多图标”,所以还需把字串长度值由21改为18(十六进制),就是十进制的24啦,如图所示。
hhjxdy2h-11.gif
图21
    方法就是这样,依次类推,我们将其余的字符如“About”、“Close”、“Clear”、“ Save as”依次汉化修改后,主界面如下:
hhjxdy2h-12.gif
图22
    大家请注意,此时unicode字符已悉数处理,好多了吧?什么,那位又讲了,字体很难看,好的,我们下一步就来修改字体,梁利锋兄阿涛在这方面很早就有文章出笼,我只是照样原搬,决无剽窃之意哟!在VB程序内字体字号的修改一般分为两类,第一类是VB可执行文件中的含有字体块的,我们现在根据例子实际来看一下,用hexworkshop打开exe文件,查找Ascii字串“Ms sans serif ”,第一个查到的字串如图23,图24高亮显示的部分表示整个字体块含字体名,图25高亮显示的为字体块。
hhjxdy2z-3.gif
图23
hhjxdy2z-2.gif
图24
hhjxdy2z-4.gif
图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字体,记着修改前面的字体块哟!
hhjxdy2z-5.gif
hhjxdy2z-8.gif
图26
图27
    大家可以看到,如图26,有些字体显示仍不好,如“目录名称”、“图标路径”及“浏览:”,这些字体的修改不能通过上面的办法来实现,因为它们没有字体块可用来修改,所以......,我只好再次引用梁兄的方法来实现字体的修正,[在“IcoFolder.exe”文件中查找“VB5!”,找到后,再向后的第三个字节是“*”,十六进制是“2A”,后面是一大串“00”,只要把从这个“*”开始的地方修改“vb5chs.dll”,程序就可以正常显示“宋体,9”了。],原来这样就行吗?答案是肯定的,我们来实际操作一下。我们将查到及修改后分别如下图所示。
hhjxdy2z-6.gif
图28
hhjxdy2z-7.gif
图29
    结果如图27所示,所有的字体都显示为宋体9号了,字体修改完成,留给我们下一步的工作就汉化那些长度不足的字串,见图14,我们只要保持同一窗体的字串总长度与汉化后字串总长度相等就可实现完美汉化,还是以下图为例,当我们用编辑器进行修改时,字串前用一个00相隔的字符则表示该字串的长度,这个也要一同修改,还是放上两几个对照图吧,请大家注意不仅要替换内容,还要根据汉化后字串长度改写程序中字串长度标识符。
hhjxdy2z-10.gif
hhjxdy2z-11.gif
图30
hhjxdy2z-12.gif
hhjxdy2z-13.gif
图31
hhjxdy2z-14.gif
hhjxdy2z-15.gif
图32

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

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-16 13:14 , Processed in 0.121857 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表