首页 网络安全 安全学院 查看内容

汉化技术探讨

2009-6-21 10:58 743 0

摘要:   对于被众多外文(主要是英文等)软件困扰的朋友而言,将它们换成一种简易的中文界面是相当迫切的需求,由此 应运而生了众多的翻译工具,例如东方快车,金山快译等,甚至有专用的外挂汉化,如晴窗。然而众所周知...
关键词: 文件 软件 处理 资源 类型 外文 目标 表单 如果 生成

  对于被众多外文(主要是英文等)软件困扰的朋友而言,将它们换成一种简易的中文界面是相当迫切的需求,由此 应运而生了众多的翻译工具,例如东方快车,金山快译等,甚至有专用的外挂汉化,如晴窗。然而众所周知,目前的计 算机翻译能力离真正的需求有很大距离,而且时常出现翻译软件和被翻译软件出现系统冲突的情况。因此目前最可靠的 汉化是由软件厂家配套发行的中文版软件,实际上它们往往只是永久修改了软件的显示信息,而没有改变软件的运做。 对于单独发行的中文界面修正程序,经常被称之为汉化补丁。  汉化补丁具备了完全不多占系统资源,几乎毫无影响地彻底修改了外文软件界面的特点,并且由于是手工翻译,准 确性远高于机器翻译。不过目前多数用户因为不了解软件的构造,经常认为汉化是种深入编程的专业工作,所以一般只 会使用。然而实际情况不完全如此,做一个相对专业的汉化补丁并非那么困难,只需要你了解些外文并学会如何操作之 后述及的汉化工具,或许很快你就能独立做一个属于你个人作品的汉化补丁,觉得满意的话还可以送给朋友,方便他人 。  在进入工作前必须先谈些简单的知识。这里谈论的被汉化软件通常指运行在win9x/nt下的程序,通称PE程序(它指 专用于win9x/NT/2000下的应用程序),它们和DOS下运行的程序是完全不同的结构,因此其汉化也不适合处理DOS程序。 此外,win32下运行的程序和这类很接近,区别只是16位和32位结构而已,因此基本可以适用。目前的PE程序生成格式 也有很多种,最常见的是使用微软的Visual C++系列和使用Borland的Dephi系列编程系统生成的,其他格式的程序也有 可能类似,当然也可能是在笔者掌握的能力范围以外,也难以一一讨论了。关于它们格式的鉴别办法,将在后文涉及。  现在开始准备工具,一些公用的辅助工具基本是必备的,包括辅助翻译词意的字典软件(推荐使用金山词霸2000) 以及辅助补充汉化的编辑软件(推荐使用UltraEdit 5.0,请注意版本号,目前该版本对汉字支持最完善)。此外很可能 在目标软件被压缩情况下必须先解压才能进行汉化(推荐使用ProcDump32),不过解压技术不在本文讨论范围内,请另 查资料参考。  下面可以开始正式的汉化工作了。首先确定你要汉化的软件系统,之所以称为系统是因为一套软件中可能包含相当 多的文件,通常汉化的目标是可执行文件(.exe)以及相关的函数库(.dll),它们未必都需要汉化,但逐个判断是必须 的。接下来我将根据我的经验选择指定的汉化工具来完成,需要说明的是这只是种推荐,很可能随着你学习的深入和接 触到更多的汉化工具,能够找到比它们更完善和易用的工具,我将很高兴能和你讨论这些。   第一步就是判断目标软件是否可汉化以及其结构类型。推荐使用的软件名为Exescope,该软件使用很简单,你只需 要用它打开目标文件(即.exe和.dll,以后不再重复),然后注意查看左边树状结构。先看是否能读取,不能读取的时 候先检查文件是否只读,如果不是而不能读取,很可能是文件加压或超出可汉化范围,可以尝试先解压。读取后,左边 的树条应该会出现“资源”字样,点开它会出现若干条目。注意条目中是否有“对话框”或“RC数据”:如果都没有, 那很可能是文件不需要汉化(当然也可能是压缩过无法读出);如果只含“对话框”,可以将其归为RC类型处理,它很 可能是用VC编辑的;如果只含“RC数据”,可以将其归为RCData类型处理,它很可能是用Dephi编辑的;当然也可能都 包括,这种情况下往往其中一方仅有一项而另一方则相当多,并且查看另一方资源可以发现程序运行显示字样,那么可 以相应按之前两种情况判断。  判断出文件的类型后(这里仅讨论RC类型和RCData类型,因为它们在目前可汉化软件中占绝大多数比例),下面就 要依据你的判断择类处理。  先讨论RC类型的文件,这类文件具备很明显的资源分类,它们包括了位图(Bitmap),图标(Icon),对话框 (Dialog),菜单(Menu),字串表(String Table),以及通常不需要处理的Wave,Avi,Version等等。实际上之前 使用的Exescope已经可以独立对它们进行汉化处理了,你只需要打开对话框,菜单以及字串表,然后将相应的英文翻译 为中文(当然其他外文也一样),之后保存就可以,不过我不推荐这样做,因为逐个翻译太累了,而且汉化后的界面很 可能乱七八糟。完成这种类型的汉化有多种方式,其中比较成熟的步骤为VC+Seatools+RCShell,最后个RCShell仅用 于在32位文件无法在win9x操作系统中保存时使用,否则有NT系统或16位文件都可以直接在VC中保存。  现在开始的第一步就是打开VC,VC的版本可以是5.0或者6.0甚至更高,当然如果你不需要用它编程,那么最小化安 装就可以进行汉化处理。用VC来打开目标文件,其方式为Resources,然后你可以看到和之前Exescope很类似的表单。 先不急处理,你需要先将它另存为.rc格式的文件,然后弹开你要汉化的资源,包括对话框(Dialog),菜单(Menu), 字串表(String Table),并使用Shift键加鼠标左键的组合方式选中它们包含的全部资源,再点鼠标右键选“属性( Properites)”将它们的语言全部修改为Chinese (P.R.C),然后再一次存盘。请注意这中间的步骤不能有缺漏,否则 VC会报错或者全部处理完你只能看见一堆乱码。  不用关闭VC,请打开Seatools,这是中国软件汉化同盟的老成员Seadvr的作品,它可以帮助你更轻松地完成汉化过 程。从表单顺序上看有五栏,整个的翻译过程基本也按这五步完成。第一步是生成对照文件,总共三个选框,其中第一 个和第二个都选择用VC生成的.rc文件即可,而第三个可任意选择一个文本名称(因为是新生成,所以填写一个即可), 然后按生成,并转移到第二步。第二步的整理是用来祛除重复资源的,按完整理按钮就可以到第三步了。第三步的翻译 是准机器翻译,通常它使用一套常用的字典系统,当然你可以在多次汉化中不断补充和修正它,应该注意的是,被翻译 的文件和翻译后的文件必须是不同的,在选择翻译后你还必须对它进行编辑。编辑这个对照文本说难不难,它的结构很 简单,就是一行原文一行译文,原来机器翻译的很可能不准确和不完全,你必须认真修正它。当然你也可以直接手动翻 译,不过应该注意的是不能破坏一行原文一行译文的结构,你可以删除你认为不需要翻译的语句,但必须一次把两行都 删除,同时不能夹插空行。此外出现双引号时会显示为"",请不要改动它。完成以后回到SeaTools,下一步的繁简转换 是专门用于处理非大陆地区的文本的,可以忽略,直接到最后一步“制作新资源”。同样三大框,分别选择对照文本, 原资源和生成资源。注意后两者必须是不同文件。在完成生成以后,你可以关闭SeaTools了。  回到VC吧,用VC打开新生成的.rc文件。一切顺利的话,你可以读取到和原来的.rc一样的资源,但你打开它们时候 ,会发现它们已经是美观的中文宋体字啦!好了,剩下的事情就是认真地审查它们吧,由于VC强大的可视编辑功能,你 可以很轻松地调整和补充翻译这些资源,调整它们的位置(有可能因为长短问题,它们会显示不全或不整齐),当你确 定你检查完成以后先再保存一次。  然后,看你的操作系统和对象软件了,假如VC打开文件时就提醒过你不能保存就麻烦点,否则的话就简单多了。请 把原文件中要汉化的那几块都删除了,再把汉化好的资源里那几块拉过去,最后存盘;不能直接保存的话,就请把汉化 好的资源另存为.res格式,然后调用RCShell,选择好操作软件和资源(即前述的.res文件),完成保存即可。  可以运行这个新文件看看了,它将是涣然一新的中文软件了,至于你可能会看见一些边角的顽固外文,等下再教你 怎么消灭它。   RC类型的软件汉化最常见的办法基本已经说完了,当然目前出现的办法远不止这一种,我还推荐使用Pebble(它的 特点是小巧和可视编辑)和Visual Localize(它的特点是功能相当强大,接近上述办法),但到目前为止,使用VC处理 的灵活性还是最高的,毕竟处理对象当初可能就是VC制造的么,呵呵。这样说不代表VC就很完美了,值得一提的是有时 候VC会在打开文件时拒绝执行,原因是里面的语言它不认识,例如日文。这时候你只需要先去安装IE使用的相应多语言 支持包即可。此外,VC制作的汉化可能会出现下拉菜单丢失的情况,对这样的问题你可以汉化后再用Pebble处理一下, 实在没办法的时候就换个方法处理吧。  刚才话分两支,让我们再回到分支点上去,学习如何汉化RCData类型的软件。之前已经说明过,典型的生成RCData 的软件是近年迅速兴起的Dephi。为什么不能用处理RC类型的方式来处理它呢,这是出于Dephi生成EXE的方式和VC有所区 别,在Dephi生成的文件中,对应VC里的对话框(Dialog)和菜单(Menu)被合并到RC数据中,了解Dephi的朋友可能很 熟悉,它就是编程中常见的.dfm表单,其他则和RC类型基本是一样的,甚至也可以按RC类型进行处理,但对话框和菜单 包含了太多我们必须汉化的资源,这些用上述的方法基本是无法处理的,必须另寻途径。  之前对付这类软件的处理能力很弱,但随着国内汉化人不懈的研究和新工具的出现,现在基本也有类似处理RC类型 一样系统的处理它。目前我所使用的这套步骤学自中国汉化同盟的另一位成员:阿涛,由于同样使用了三套汉化工具, 我戏称为“三套马车”,它们是Language Localizator+DFMViewer+Restorator,和先前的“三套马车”十分相似, 如果你使用的是NT操作系统,就不需要最后一个Restorator,因为它同样是用于补充Language Localizator无法在win9x 系统下直接存盘的缺陷的。  在你确认目标文件是RCData格式以后,请使用Language Localizator来打开它。请注意在这里非文本资源是不出现 的,而RC数据则显示为表单,而且只有标准格式表单才出现(还有类为二进制格式,通常是不需要汉化的)。打开表单 里的内容,出现的是大量需要翻译的资源,这里的资源目前还不容易引入机器翻译,但它具备的优点是能够自动保存你 的翻译为字典,并在以后的汉化中自动翻译曾经翻译过的资源。对于没能自动翻译的语句,你就需要手动翻译它了,直 到全部资源都翻译了为止。接下去,请在菜单中选择“页面”-“编辑资源”,然后先把每一项里出现的Font.Height 和Font.Name都处理为 Font.Height = -12和 Font.Name = '宋体',其实就是宋体9号字,这样表单会美观很多。做完 这些步骤以后,你将它们全部存盘,并关闭它。   由于缺乏可视编辑,所以光靠Language Localizator难以保证表单的规范,那么就需要下一个软件:DFMViewer来 完成这个工作。DFMViewer的功能不多,它可以读取Language Localizator生成的.dfm文件(很奇怪的是这种文件应该 是Dephi产生的,我却不能用它来处理)。读取出来的内容和Language Localizator进行“编辑资源”的一样,也可以 对其进行编辑,只多了一个功能:按F5可以看见表单的样子,可能是一个对话框,也可能是一组菜单。这里需要比VC 的操作多一些技巧,因为它需要对各项参数进行调整来完成。其中常见的就是Font.Name:字体名称,Font.Height: 字体大小,Font.Style:字体风格以及长宽高等等(都是单词,很简单的),对于原来没有参数的也可以自己添加, 并不断使用F5来判断,直到对每个对话框都满意为止。  接下来又需要根据你的系统来决定步骤了。假如你用的是NT,那么回到Language Localizator吧,恢复刚才的步骤 直接回写就可以;如果不是,启动Restorator吧。Restorator的样子有些古怪,它分成三部分,左边和其他汉化工具一 样,是资源树;右上可以看到选定资源的内容;右下显示的似乎和文件没有什么关系,但关键却在这。因为这套软件的 回写方式毕竟独特,类似于VC回写的步骤,要靠拖的。在右下面的资源框里找到Language Localizator生成的那些 .dfm文件,并弹开RCDATA,将文件拉到同名的表单上去,千万别弄错了!而字符串则不是同样处理的,它被生成到.res 文件中,你需要同时打开它,并按VC的办法拖拉过去,最后进行存盘即可。  现在你已经基本完成了对这个文件的汉化了。到此两类文件的汉化步骤都基本完成了,应该补充说明是非文本资源 的汉化问题,所谓非文本资源包括了图象,图标等(目前我还没动过动画和声音),对它们的处理是非必要的,但如果 处理恰当,可以为汉化版增色不少。简单的说说它们的处理,对于VC而言,是可以直接进行绘制的,而其他工具可能没 有这么强大的功能,但它们多数可以输入输出图象,你可以在中间阶段用绘图软件进行处理,应当注意的是不要改变图 象的大小和调色盘,否则可能会导致错误。  上面说“基本”完成的意思是指我们还没有从根本上完成汉化处理,通常总会有些漏网之鱼,现在需要用到 UltraEdit 5.0(请注意我再次提醒的版本号)。用UltraEdit对汉化后的文件进行搜索(注意使用ASCII模式),通常 你会找到“一群”需要补充汉化的外文,你可以用替代的办法用中文代替它,应该注意中文长度不能超过原文占用的长 度,对于替换剩下的字符可以用空格补充或者用16进制的00进行结束处理。UltraEdit的修正处理必须很小心,完成一 段后就需要再次执行文件看看是否正常,并努力找到其他漏网的外文,重复这个步骤直到你找完了或者实在找不到为止 。  如果对于一套软件使用的所有.exe和.dll都已经处理完成,你的这次汉化也可以宣布结束了(当然你可以对它们的 帮助文件也进行处理,不过那完全是另一套模式了),如果对它很满意的话,你可以做成补丁(关于补丁的制作也是有 许多工具可以选择的),并发布给你的亲朋好友,让大家分享你的作品。  上文中提到的汉化工具都可以在飞龙阁(HTTP://www.longfei.net)的“汉化工具”中找到,而且全部是“汉化” 过的啦,当然也可以找到其他许多软件的汉化了。如果需要更多更具体的汉化资料,也可以到其“汉化学堂”中寻找, 那里有几十篇许多汉化人士留下的经验之谈,一定对你大有裨益。  附:关于汉化作品的使用  对大多数软件用户来说,了解如何使用汉化并找到需要的汉化文件就可以。以下说明一些关于汉化使用的知识。  汉化的使用并不复杂,在种类上多分为汉化包和汉化补丁两种,目的都是使目标程序永久性转换为中文。汉化包是将 被汉化后的文件进行简单的压缩或者制作安装程序,在使用时替换掉原文件;而汉化补丁是一类特殊的程序,英文为 Patch,它们是记录了汉化前后文件的区别,并在汉化时根据区别对目标文件进行修改,从而达到汉化目的。从大小上看 ,汉化补丁通常比较小,因为它们仅记录了区别,然而同时也要求了目标的高精确性,也就是说,假如汉化的是 winamp 2.5e,那么目标就必须是2.5e版本,换个2.5c都不会成功;而汉化包相对大些,它们包含了全部被修改的文件, 因此在较小的版本差异下,一样能够汉化成功,如上例,使用winamp 2.5e的汉化包同样能汉化原本安装的winamp 2.5c, 甚至在汉化同时也完成了升级。当然如果目标软件是宣称不允许修改程序的话,以补丁形式发行则较为正式些,因为它仅 仅类似一种外表更换工具。  汉化之前通常都要认清版本,不同版本的汉化和原软件组合是很容易出现汉化失败的,尽量让软件的版本和汉化的版 本完全一致,特别对于补丁式的汉化,汉化前不要去改动原软件。  在进行汉化前最好先对原文件备份(主要是.exe主文件以及.dll文件),比较优秀的汉化会帮助你进行类似的备份。 当然,通常情况下汉化失败也不会造成对软件的破坏。然后你必须确认目标软件不在占用内存,某些软件是常驻内存,例 如ZipMagic,无法退出的时候,可以考虑在安全模式下汉化,或在DOS模式下进行直接替代。  在确认以上步骤没有问题以后,查看汉化软件的类型。请注意,为了节省软件传播的时间,许多的汉化作品都是先进 行压缩处理的,常见的类型如zip,rar等等,你需要先对它解压缩。然后检查汉化软件中是否包含说明文件,绝大多数的 汉化作品是有带说明文件的,经常为readme.txt,打开说明文件可以看到相关的汉化注意事项等信息。请注意查看说明文 件,特别是当软件有特殊的汉化要求时候,里面的信息就很重要了。  观察其他的文件。有一类是最简单的,就是指定汉化对象的主文件,这样直接将这些文件复制到软件安装目录替换原 来的文件就可以,甚至有如果软件本身很小的话,它就可以当做完整的软件来运行了;另一类则多数是setup.exe或者其 他类似的汉化程序。这时候你就需要运行它,并根据其指示进行汉化,情况和一般软件的安装基本是类似的,按安装向导 指引的步骤来完成即可,一般都很简单的。  完成上面的汉化过程以后,你可以重新启动目标软件了。正常的情形下你就会发现软件已经全部(或大部分)显示为 中文了,如果仍然是英文可以考虑下面几种因素:  一:你没有正确执行上面的汉化步骤,其中最可能出错误的是汉化前软件没有完全退出运行状态,以及汉化的目标路 径不是软件安装的位置。  二:你遇到了比较特殊的汉化要求。例如有少部分软件(象windows command)是使用外挂语言包进行汉化的,你要 在菜单里找到“lauguage”,并选到“中文”。这样特殊的汉化要求都可以在说明文件中找到。  三:你的汉化和原软件版本不一致。虽然说汉化包类型可以接受微小的版本差异,但汉化补丁是无法这样执行的。所 以建议你去寻找一致版本的汉化或软件重新汉化一次。  四:最后的例外,也是最少见的情况,问题出在汉化人制作汉化不够认真,其作品无法正常工作,在上面的可能都排 除以后,你可以到各汉化发布站的留言处、甚至给汉化作者写信来得到解答。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部