软件汉化基础
软件世界
软件资源结构
就像外科大夫首先要了解人体结构一样,在进行实际汉化工作之前,我们首先要弄清楚一个软件程序的基本结构。为了解剖软件结构的需要,首先让我们来熟悉一下第一把“手术刀”──eXeScope。
eXeScope目前最新版为v6.32,有汉化版本。执行eXeScope.exe,打开某程序后的界面如(图1)。

eXeScope具备界面语言即时修改、对话框手动调整、资源(图标、位图、字串、菜单项等)导入导出、宏定义等强大功能,堪称当前资源修改的首选工具。目前市场上的软件主要用VC、BC及VB、Delphi等工具编写,从汉化的角度出发,按照资源数据的分布特点,大致可分为“资源分离型”及“资源混杂型”(注:此分类纯属个人观点,仅为方便讨论汉化),下面我们简单介绍一下这两种类型的资源特征:
1.“资源分离型”软件。以C类语言VC++、BC++等编译,其资源(Resource)一般包含“位图(Bitmap)”、“菜单(Menu)”、“对话框(Dialog)”、“字串(String)”以及小部分“RC数据(RCData)”等,而且几类资源间相对独立。一般界面表现的语言资源大部分包含在主执行文件“*.exe”或链接库文件“*.dll”的菜单、对话框和字串三部分中,汉化时,我们只要将其中可修改的其他语种翻译修改成中文即可。这一类型软件的汉化技术目前已比较成熟,其修改过程一般能实现“所见即所得”。其代表软件有 Winamp、ACDSee、WinZip等。我们看看以eXeScope打开此类型程序Winamp.exe对话框(Dialog)资源的情况((图2))。

2.“资源混杂型”软件。一般以Delphi编译,通常将窗体、菜单包括界面语言等可修改的资源未作分离全部混杂在主执行文件“*.exe”或链接库文件“*.dll”的“RC数据(RCData)”项中,这样就对程序的本地化工作带来极大的不便,汉化难度相对较大。目前,此类软件的本地化技术还不够成熟(当然,也不是完全没办法),尚未能实现“所见即所得”的工作环境。看看以eXeScope打开此类型程序RC数据(RCData)资源的情况吧((图3))。

另外还有相当部分的软件(包括以VB编译的程序),其资源数据形态的信息分配相对无序,或将部分资源转移附加在其他数据文件中,甚至一些程序还进行了加壳或压缩处理,使我们用一般工具很难看到资源所在,给以修改资源为手段的本地化工作带来了种种困难,这些软件程序一般要根据其个别特点进行特别的技术处理,或采用十分繁杂的方式,才能进行资源修改工作,我们在这里暂且不作深入讨论。
就常规的软件程序说来,软件的资源(界面语言等)部分与内核部分相对独立。为了最大程度地保持软件原貌,同时也是为了尊重软件原作者的劳动和程序版权,我们在汉化过程中不应(也不必要)对软件的内核作修改。
常见汉化手段
1.即时界面汉化。如果你根本不想亲自操刀修改程序,仅只是为了能够使用到中文界面的软件,你可以用如下两种方式获得英文软件的中文界面:第一种方式是采用《东方快车》、《金山快译》等即时翻译软件将英文界面转换成中文界面。这种方式不会对软件作任何修改,而且可以随时转换回原来的英文界面。当然,由于智能翻译的准确性限制,其翻译的效果只能说差强人意,有时甚至出现啼笑皆非的译文,如一般会将“Auto”(软件程序中一般为“自动”之意)翻译成“汽车”等等。其使用简单,也不是本文的目的,在这里就不展开说明;第二种方式是安装现成的汉化包进行汉化。你只要到汉化或软件网站以及杂志光盘中找到汉化人士早已为你准备的与外文软件所对应的汉化包即可。汉化包的使用方法很简单,它一般是一个可执行文件。在安装了软件的英文(或其他语种)版后,先确认退出该应用程序,然后执行汉化文件,完成后再启动应用程序时,出现的就是亲切的中文界面了。不过某些汉化包在安装过程中有一些特殊的要求,你只要阅读一下汉化包附带的说明文本,并按照其提示操作即可。
2.资源永久汉化。这是本文要着重介绍的内容,也就是广大汉化人士所说的“汉化”了。对软件程序的界面语言作适度修改后,就可使软件程序成为永久的“中文版”软件。步骤如下:
第一步,判断类型。先了解将要进行工作的对象,做到有的放矢,心中有数。方法:首先用eXeScope打开主程序看看就略知一二。详细地,我们可以利用 FileInfo等软件更准确地判断软件的类型。FileInfo的使用相当简单,就笔者经验,用拖动方式最为快捷。先在Windows中启动MS-DOS方式,然后将FileInfo的主执行文件拖到MS-DOS界面,键入空格,再将要检测的文件也拖到MS-DOS界面,回车即OK!FileInfo立即报告出该文件的类型,甚至还能指出所采用的编译工具及加壳类型等信息。(图4)是FileInfo检测到的可执行文件 Winamp.exe(版本2.79)的有关信息。

从这里我们可以看出,该程序是使用 MS VC++ 6.0 编译。
第二步,选定工具。根据上面的判断结果,选用合适的资源修改工具(工具介绍请看本文下一篇)。由于不同程序与不同的汉化工具之间可能存在适应性与兼容性方面的问题,有时可能需要多试几个工具。
第三步,修改资源。选定汉化工具后,就要开始对我们的汉化对象进行“换肤手术”了。这一步是这个整个汉化过程中最重要、工作量最大的一部分工作,也就是汉化工作的“重头戏” 了。主要任务就是将“菜单”、“对话框”、“字串”中的英文翻译成中文。根据翻译任务工作量的大小,一般以如下方式进行处理:
①纯手工作业。即找到语言资源后,进行逐字逐句人工翻译。该方式适合翻译量不大的小型软件使用。其优点是出错可能性较小,翻译准确(准确程度在于你自己的翻译水平呵);缺点嘛,呵呵,劳动强度较大。不过你要知道,大凡精品,均出自handiwork/handcraft(手工工艺)呵!在工具使用方面,大部分工作用eXeScope即可完成。另外,VC++ 6.0、BC++ 5.02(这两个有简化的汉化版本可用)以及Resource Hacker(资源黑客)、Resource Workshop(资源工厂),还有较早一点的Pebble 3.10均可考虑使用。而直接修改ASCII字符,则推荐使用UltraEdit 5.0及Hex Workshop。
②机器翻译。采用《东方快车》之《永久汉化》、《中文工具箱》等带资源写入功能的智能翻译工具,其优点是快捷。点击几下鼠标即完成过程;不过其缺点也是致命的:质量差,又容易出错(有时修改了不该动的字符,可能导致软件不能正常运行,使你前功尽弃!)。关于质量问题,《东方快车》之《永久汉化》暂无解决方案,而《中文工具箱》有“翻译对照档”及“外挂字典”功能,可通过加强前期准备工作的办法在这方面进行较大程度的弥补。另外,“资源混杂型”软件,采用Language Localizator 的字典功能亦可减轻我们的部分劳动强度。
③先机器,后人工。对于大多数软件,这就是我们的汉化翻译自然而然要采取的工作程序了。在经机器翻译并确认软件运行正常后,再对其中的译文进行修改,最后全面完成界面语言翻译工作。
注意事项
a.不要“过度翻译”。如 List1、$68、Progress、$0A、s%、\n、\r 等或一些莫名其妙的字符,你千万不要一厢情愿地去修改它,否则的话……
b.注意“过程测试”。即每完成一小段工作后,要测试一下程序是否还保持正常运行。否则辛苦几小时后却发现程序根本已经不能运行了,而且连问题出在哪个步骤都搞不清;同时还要时刻注意备份已经完成的有效成果。总之,一旦弄成“白辛苦”,确实是件很痛苦的事呵!
第四步,调整界面。在语言翻译工作完成之后(或在同时),我们需要对软件界面中的字体及各部分的长短高矮等作适当的调整,以适应中文系统的显示特点。英文软件的界面字体大部分为“MS Sans Serif”,字号为8号,而中文系统最佳显示字体(默认字体)为“宋体”,字号为9号(即小五号),我们可在修改对话框资源时将它改过来。不过在这一点上,工具软件一般已为我们考虑得挺周到,如在eXeScope中,你只要点按字号旁边的“改变” 按钮,在出现的字体选择窗口调整即可。
另外,由于即使对于同一个词条,译文与原文的长短一般是不同的,可能需要据此对它们在界面中所占的位置作些许调整。这些调整幅度不宜过大,以界面美观、方便使用为原则。调整方法(eXeScope中):使用“视图”菜单下的“对话框编辑器”,用鼠标实行“铆定拖曳”或“边界拖曳”即可;也可在点选修改对象后,改变编辑区最上方的“X”坐标(自左至右横向起点)、“Y” 坐标(自上而下纵向起点)及“宽度”、“高度”编辑框的数值。
第五步,后期测试。在所有可能的资源修改工作完成之后,我们要对软件的整体作全面的运行测试。虽然在修改的过程中我们也进行了“过程测试”,但最后的测试是必须要进行的。有时候我们修改的文件不止一个,而是几个或更多时,最后的协同测试就变得尤其重要!事实上,当前个别汉化包使软件的部分功能丧失的现象也时有出现。我们要使自己的作品尽量保持原有功能,这是一个成功的汉化作品要具备的基本条件和起码品质。
另外,在后期测试过程中,我们通常会发现还有个别顽固的英文词条还是未修改过来,更奇怪的是,查遍全部的菜单、对话框及字串都发现不了,这是怎么回事?不用急,这一定是作者将这部分资源转移附加在其他代码段或其他数据文件中了。这时候,让我们请出杰出的“16进制编辑器”工具 UltraEdit 5.0(或Hex Workshop等)。呵呵,说UltraEdit是当前汉化人的最后一张“王牌”工具可一点也不过分,因为它的功能实在是太强大了。这里的基本用法是:启动UltraEdit,在其中打开修改对象文件,使用其“搜索”功能将我们要寻找的英文词条查出,在右边的编辑区直接将其修改成中文即可!什么,还搜索不出来?那这个词条可能根本就不在这个文件中,快看看安装目录中是否有其他可能包含资源的文件!
第六步,打包发布。好啦,资源修改工作全部完成了,辛苦吧?如果只是为了自己即时使用,到这里也就可以收工了。不过,辛苦这么久,你就不想把自己的成果与朋友们分享分享?再则,你用了那么多的汉化软件,也不回报一下?好吧,一鼓作气,马上行动。记住首先为你的汉化作品写一个说明文本,向将要使用你的大作的朋友们交代一下使用方法和其他需要交代的事项。简单一点的,用WinZip、WinRAR打个压缩包;酷一点的,使用WinPatch、Patch Maker等专业的补丁工具把它做成补丁文件;或者干脆一酷到底,加上安装程序,直接将软件做成百分之百的中文版!打包的具体方法各不相同,请参看关于所使用打包软件的说明文件或教学文章。
至此,一件完整的汉化作品就诞生了!