杉宫竹苑工作室

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

一步一步学做软件汉化(VC++篇)

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

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

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

x
作者: 阿涛
来源:新起点汉化
源地址:http://teach.hanzify.org/article/85-1059580800.html

前言:

承蒙各位的抬举,本人拙作《一步一步学做软件汉化》在杂志上发表后,得到了不少朋友的喜爱!我想这应该得益于许多汉化前辈的宝贵经验,我所做的只是对他们的经验进行了更通俗化的解说并加上了一些自己在汉化过程中的感受和小技巧,以便让更多初识“软件汉化”这个事物的朋友们能够更快的了解和吸收,大家在阅读它的同时,也请不要忘了诸多汉化人不懈的努力和付出!
  
如今文章已经发表了,为了让更多的网友了解它,我也决定把文章放在主页上,供大家自由浏览。另外,从我写这篇文章至今也有很长时间了,在这段时间中,随着自己汉化经验的积累和一些同行的帮助,我对汉化又有了一些新的了解,也想起了一些被遗漏的东西,这些都一并写在了下面。总之目的只有一个,希望各位朋友能够更好更快的熟练掌握汉化的操作方法,下次给我寄来的汉化补丁质量更好些,呵呵^O^

一、汉化方法简介:
  
先介绍一些软件汉化的方法吧。目前网上出现的汉化方法有许多种,例如VC++、BC++、Pebble、RRC、CPatch、Exescope 等。对于一般用VC,BC等语言编制的程序,通常采用的方法就是VC++、BC++等,它们的优点是可以采用批量汉化的方法来简化汉化过程,界面直观;缺点是不能对付用Dephi、BC Builder或VB编写的程序。而对付这些个程序需要采用Ultraedit、RRC 或Exescope之类的工具。Pebble是一个与VC++功能类似的工具,优点是不需要NT系统,而且程序小巧,仅一个文件;缺点是不能批量汉化,界面不够直观。CPatch是一种基于批量汉化设想的简易汉化工具,但功能及直观性实在太差,只能做为辅助工具。Ultraedit 是一个文本编辑工具,当然它可以编辑的不仅是普通文本,还有16进制的代码,用它做汉化需要很小心,而且麻烦和不直观,但它的优点在于能够根据情况控制汉化的质量和方式,并且只要一存盘随时都可以看到汉化的效果。RRC是Ultraedit的替代品,操作要比Ultraedit 方便许多,而且在一定程度上可以批量汉化,节省时间和精力,但它的缺点是不能完全把需要汉化的字串提取出来,所以单靠它是不能完全汉化的。Exescope是一个很不错的汉化工具,具有窗口界面,对于所有语言编的程序都可以汉化,有一定的直观性;要说缺点可能是操作上有些复杂,在汉化VC或BC编的程序上还是不如VC++来的方便,这个软件目前我还不怎么用,今后若摸熟了再给大家详细介绍吧!
  
软件汉化要根据不同的软件来决定汉化工具,这这里我要演示的是用VC++进行汉化的过程。我为什么要介绍VC++汉化这种方法呢?这种方法还需要NT操作系统,应该是比较麻烦的呀!不能介绍别的简单一些的方法吗?当然可以!只是我觉得用VC++汉化这种方法在目前还是比较流行的而且最完美的汉化方法,适用的软件很多,出错少,汉化质量容易得到保证,既然大家要学汉化,学一种最好的方法难道不好吗?本着为使用者负责的态度我想大家也应该尽可能地采用最好的汉化方法。虽然它相对要麻烦一些,但若看了我下面的介绍,你会发现其实它也并不是很麻烦的!当然其他的汉化方法如果今后有机会和时间我也会再做介绍的。
  
二、汉化前的准备:
  
1、系统准备:Windows 95/98简体中文版和WinNT 4.0简体中文版。
  
2、软件准备:Vusial C++ 5.0,UltraEdit-32 5.0(或更高版本),CPatch 1.3b,SeaTools 1.0,WinZip7.0等。另外准备一个翻译软件(如金山词霸 3)和一本好的英汉字典是必要的(除非你的英语水平稳盖!)

3、系统及软件安装的注意事项:
   
还是先谈谈系统的安装吧。因为用VC++做汉化只有在NT系统中才能保存对文件所做的更改,所以需要安装NT系统。对于普通的电脑用户来说,平时是不需要NT操作系统的,所以仅仅为了做汉化而安装NT的话,当然是希望尽量节俭地安装了,以免浪费磁盘空间!我们可以在同一台电脑中安装WIN95 和NT 4.0,但是要注意现在的大硬盘采用的 FAT32格式是不支持WIN95 和NT双重系统启动的,而且NT系统也不能识别采用了 FAT32格式的硬盘,所以在安装系统之前,我们有必要对硬盘进行一些分区和格式化工作。具体的方法是:
   
首先用WIN95 的启动盘启动电脑,运行“Fdisk”命令进行硬盘分区。在被询问是否采用大磁盘支持(也就是采用FAT32格式)时,如果选择“NO”,就是采用FAT16的文件系统格式,安装WINNT肯定可以,每个分区的大小也可以随意设置。但这也有个问题,就是如果你的硬盘比较大的话,采用FAT16格式是划不来的!因此为了达到即采用FAT32格式又能够安装 WINNT的目的,你可这样折衷:就是选择“YES”,这样你的硬盘就采用FAT32格式了。请至少分三个区,一个安装WIN95(最好在 C 区上),一个安装WINNT4.0。另一个大一些的分区可以存放你自己的数据。但记住在选择 C 区(即主引导区)的大小时,将它定为500MB,一定别大于 510MB,用于安装NT的 D 区也同样不要大于 510MB,这样的话虽然你采用的是FAT32文件格式,但它对小于510MB的分区仍会自动采用FAT16格式进行格式化,如此一来你就可以进行双重系统启动了!
   
分区分好之后,重启动系统,再运行格式化命令,将每个分区进行格式化,你会发现 C 区和 D 区采用的是 FAT16格式,而其他的大分区采用的则是FAT32格式,这样就既保证了WIN95和NT的双重启动,又减小了磁盘簇的大小,是一个很好的方案!

格式化之后,就可以安装操作系统了。请记住,在要同时安装WIN95和WINNT时,一定要先安装WIN95,再安装WINNT!如果一个软件在WIN95和WINNT中都需要安装的话,也应该先在WIN95中安装,然后在WINNT中重新安装一次,可安装在同一个目录中。关于 WIN95的安装我不多说,大家已经驾轻就熟了。关于WINNT的安装,为达到精简安装的目的,可这样:在 WIN95安装完成之后,换用WINNT的启动软盘启动计算机,将WINNT安装在 D 区,采用的是 FAT16的文件格式,安装中有一步是选择“域控制器”的,请选择“独立域控制器”,之中还有一步请选“每服务器 0 客户”(好象是这句),安装到网络时, 请选择“此时不要与网络连接”,对于一些诸如附件之类的选项,也一概不要选。安装好之后,也不要再安装些什么“Server Pack”之类的补丁,只要使用了WINNT自带的“Server Pack 1”就够了。这样安装下来,整个WINNT大概只有130MB左右,不算大吧:-)
  
接下来的步骤就是安装IE,NT系统自带了一个IE 3.0,但安装VC++ 5.0需要的是IE3.01或更高版本的支持,我推荐大家安装微软的OFFICE97光盘中的IE3.01简体中文版,也不必安装更高版本的IE,免得多占地方,够用就行了!
  
WINNT虽然装好了,但如果你还有一个分区采用了FAT32格式的话,它是识别不了的,读不了上面的数据,怎么办?你可以在NT中安装一个名为“FAT32 for Windows NT 4.0”的小软件(在华军主页上就有),一切都会搞定的!
   
到此,整个操作系统已经全部安装完成,至于WINNT能不能与WIN95安装在同一个C 区,好象有些问题,不过具体我也不清楚,哪位高手知晓的还请指点一二!不过 C 区仅有 500MB大小,即使能同时安装WINNT,也最好别这样,因为你还要安装其他软件呀,如果塞得太满了会影响运行速度的!
   
接下来我再说说软件的安装:在“软件准备”中提及的软件请在两个系统都安装一下,次序仍是先WIN95再WINNT,不要搞反!需要特别提到的是VC++,这么个大软件如果仅为了汉化而装的话实在是没必要全部装上去,因此你可按下列方法安装,还不到30MB呢:
   
安装VC++时,选择“Custon”(定制安装),在接下来的一步中将“Microsoft Developer Studio”选中,其他的选项都不选,然后按步骤安装完成。安装完成之后,请将 VC++光盘中的三个文件“dlg.h”、“winver.h”、“winresrc.h”找出来,它们在光盘上的目录是“DevstudioVcInclude”,请将其拷到硬盘VC++所在分区的“Program FilesDevstudioVcMfcInclude”目录中即可。
  
系统装完了,软件装完了,但还有一样东西可千万别忘了安装,那就是多语言支持的语言包,通常需要安装的语言包有“日文”、“韩文”、“繁体中文”、“泛欧洲语言”等。在NT系统中,由于IE是3.01版的,你可以安装 WINNT光盘中自带的语言包,也可以安装OFFICE97光盘中的语言包,另外在《电脑报》光盘97年第三期中也有(一个语言包就是一个压缩文件,具体名称我记不得了,自己找找吧)。在WIN95系统中,如果你安装的是IE40,你可以用OFFICE光盘或《电脑报》光盘中的语言包,如果安装的是 IE50,则其自身就有语言包可供选择安装。有一点需要注意的是,若是IE40,安装多语言包后有些地方的字会变成乱码,你可在纯DOS 状态下删除WIN95下的“System”目录中的“cp_950.nls”文件即可(乱码的情况在Win98或IE50的情况下不会发生)。


三、用VC++进行第一阶段汉化:

1、通常软件中可以汉化的资源是放在.exe和.dll格式的文件中的,使用VC++也就是对这两种格式的文件进行汉化。为了汉化时的方便,请在汉化一个软件之前,先在此软件的安装目录下再新建两个目录,一个名为“new”,一个为“old”。将安装目录下的所有.exe和.dll文件都复制一份到old子目录中。
  
另外,在用VC++汉化时,请在WinNT系统中进行。因为只有在WinNT中,汉化后的.exe或.dll文件才能存盘,而在Win95/98中,是不能存盘的。
  
2、打开文件:在WinNT 4.0系统中,启动VC++,选择菜单“File”中的“open...”后如图:
P1000002.gif
  
按顺序选定“old”文件夹中的一个文件,然后按“打开”按钮,如下图:

P2000002.gif

  
把old目录中的所有文件都照此法打开看一下,把那些不含有“Menu”、“Dialog”、“String Table”任何之一的文件从old目录中删除,然后把未改动的剩余的文件复制一份到new目录中,我们要汉化的就是new目录中的文件,old 目录中的文件就留作备份,别动了。
  
3、修改语系:现在就逐个汉化new目录中的文件,按上述方式打开一个文件,先修改“Version”的语系,如图:
P3000002.gif

  
P4000001.gif

  
P5000001.gif


这样改后,再如下图继续修改:
  
P6000001.gif

  
P7000001.gif

  
经过这些步骤的修改,“Version”的设置就改好了,看看效果吧:
  
P8000001.gif

需要说明的是,并不是每个文件中都有“Version” 这一项,如果没有的话,上面所做的修改就可以免了,开不开心:-) 另外,有些软件的“Version” 下面有两个代号相同但语系不同的项目,例如“1 [English(U.S)]”和“1 [English(U.K)]”,这时你可以根据整个软件的情况将一个主要的项目的语系按上面的方法修改掉,另一个就不要动它了。还有一种情况,就是在某些软件中,如果你修改了“Version”的语系,软件汉化后就不能正常运行,这时你就不要修改其语系,但其他资源如“Dialog”、“Menu” 等的语系还是照改不误!这种软件的代表是“WinZip 7.0 SR1”。


接下来,我们再修改“Dialog”项目的语系,与修改“Version“ 语系不同的是,它的方法有些区别,如图:
  

P9000001.gif

  
这些对话框打开后不要做任何修改,只需直接关闭它们。如果对话框很多的话,一个一个地关闭就太费时间了,你可以用以下方法去一次性全部关闭:
  
在菜单栏中选择“Window”,并在出现的下拉菜单中选择最后一项“Windows...”,就会出现如下对话框:
  
P1000003.gif
  
这些对话框关闭后,继续按下图操作:
  
P1100001.gif
  
这是选择了“Properties”后出现的对话框:
  

  
“Dialog”的语系改好了,看看效果吧:
  
P1200001.gif


剩下的就是修改“Menu”和“String Table”的语系,修改方法与修改“Dialog”相同,同样需要先打开再关闭然后修改。当然关闭窗口时因为项目不多,你可以直接关闭,不需要采用上面的方法。顺便提一句:修改前先打开一下是为了避免汉化后中文字变成乱码,所以不要免掉这一步!另外,“String Table”中的项目最好是在修改“Version”的语系之前先打开看一下然后关闭。
  

4、汉化:语系修改完成后,就可以开始正式汉化了,对于一些较小的软件,它里面要汉化的资源不多,你就可以直接打开每一个项目逐字逐句进行汉化了,也费不了多少时间,我把这种方式叫做“直接汉化”方式。
  
但现在也有很多大的软件呀,里面要汉化的资源很多,如果就这么一句一句的翻译,哪年哪月才做的完呢?而且,如果以后软件出了新版本,你又得重新逐字翻译,一点借用都没有,岂不太冤了!?所以对付这种情况也应该有一种方法,我称之为“批量汉化”方式,在后面会讲到的。现在先说一下“直接汉化”的具体操作:
  
我们首先汉化“Menu”中的项目,用左键双击一个项目将它打开,出现在你目前的就是一个虚拟的菜单栏了,如图:
  

P1300001.gif
  
P1400001.gif
  
汉化“Menu”项目要注意一些问题,如下图所示:
  
P1500001.gif

  
接下来再汉化“Dialog”中的项目。汉化“Dialog”项目时有一个需要更改字体的问题,通常在英文软件界面中采用的标准字体是“MS Sans Serif”8 号字,而中文软件常采用“宋体”9号字,所以应该进行修改,以免汉化后的字太小。首先打开一个对话框项
目,如下图:
  

P1600001.gif
  
这是左键双击后出现的对话框:
  
P1700001.gif

  
字体改好后,就可以翻译对话框中其他的词条。用左键双击要翻译的词条,就会出现类似上图的对话框,“Caption:”右边的横框中就是你要翻译的词条,翻译它。要注意的是,有一些“”、“”之类的符号是表示换行的,你可以根据需要去添加或删除它以使界面安排的更美观一些,如果没有把握就保留它吧。

词条翻译完后,进行些微调工作,将字符对对齐、间距调整适当些,让每个词条都能完整地显示出来就行了。看看下面的效果吧:
  

P1800001.gif

   
你发现了上图中的一个问题吗?没有?那告诉你吧:我把“Static”翻译成了“注册信息”,刚刚不是说Static这种字符不要翻译吗?怎么又翻译了呢?事情是这样的:通常做汉化时看见的“Static”等字符在软件运行时是看不见的,它会被其他有意义的信息所代替,因此它仅类似于定位或识别符。不翻译它也就是怕改动后软件出现问题。但上面这个软件也许是设计上的疏忽,运行后显示出来的仍是“Static”,失去了其应有的功能,所以就根据场合把它翻过来了。
  
顺便提一下,在所有的对话框中,有一个对话框是很受汉化人欢迎的,这就是“关于”对话框。看看下图:
  

P1900001.gif

  
这个对话框通常记录了一些软件版本、版权及编写者的信息。快找个地方把你大名署上吧!地方宽敞的话,再顺便署上你的E-Mail和主页URL,这样全中国的人都知道这是大虾您的杰作了,呵呵^_^不过,可得给原作者留些位置哦,如果把他们给挤掉就不太好意思咯。
  
好了,对话框都汉化完了吧,那么就开始汉化最后一项:“String Table”中的项目。同样是双击去打开这个项目,如图:
  

P2000003.gif
  
P2100001.gif

  
就这样逐条翻译,请特别注意在“String Table”项目中出现的“”、“d”、“” 等特殊字符不要随意删除、添加和移动它们。
  
至此一个文件需要用VC++汉化的部分已经完成了,存盘吧。且慢!还有一个地方你可能漏掉了。有些软件把不少有用的信息居然放在了图片中,这些软件中做的最过分的要算 Remove-IT 95 了,它把整个一面板的信息都做成了一张图片,看看下图:
  

P2200001.gif

  
这么一大片洋文放在汉化版本中实在是碍眼!所以为了汉化的完美,你应该利用VC++自带的图形编辑器将它们翻译过来。下面是汉化后的图片:
  

P2300001.gif

  
那么到哪去找这样的图片呢?实际上它们都在“Bitmap”项目中,你可以在VC++中把“Bitmap”项目中的图片都打开看看,把你认为应该修改的图片处理一下就行了,举手之劳却作用不小:-)
  
妥了,直接汉化完成,现在可以存盘了。这里再强调一次:只有在WinNT 系统中,汉化后的文件才能够存盘,而在Windows95/98系统中,是不能够保存汉化结果的!
  
“直接汉化”的具体操作讲完了,接下来再看看“批量汉化”是怎么做的吧:首先同样需要象前面一样修改各项目的语系,然后就是把它另存为 .RC格式的文件,这一步是关键!另存为.RC文件不仅在WinNT系统中可以做,在Windows95/98系统中同样也可以做。存为.RC格式的方法是:先在菜单栏的“File”中选择“Save as...”,然后在“Save As”对话框中,将“文件类型”这项选择为“Resource Script (.rc)”,再在“文件名”空格中填入你希望的名称,按“保存”按钮就妥了。
  
存为.RC格式时也有一些小技巧,看看下面:
  

P2400001.gif
  
P2500001.gif
  
RC文件得到后,需要用到另一个辅助工具SeaTools 1.0了,这是它运行后的界面:
  
P2600001.gif

  
可以看出它有〖生成对照文件〗〖整理对照文件〗〖翻译文件〗〖繁简字符转换〗、〖制作新资源文件〗等五大块。它的基本原理就是先用原始的资源文件(就是我们刚刚存盘得到的RC文件)去生成一个.txt格式的对照文本,这个文本中的每句词条都是分成奇偶两行成对出现的。将此文本中的偶数行翻译成中文,奇数行不动,就得到了一个翻译后的对照文本,然后用这个新的对照文件去套原始资源文件,就能生成一个被汉化了的新的资源文件,这就是它的目的。如果要汉化一个软件的新版本,你就可以用老版本生成的对照文本去套新版本的原始资源文件,得到一个新的资源文件后,将那些没有被汉化的词条翻译一下,就能马上得到新版本软件的汉化文件了,省了你不少力气!明白吗?说的不如看的,还是按下面步骤来吧:
  
如果你还没有一个现成的对照文本文件,那就看下面:
  

P2700001.gif

  
生成了对照文本后,最好在〖整理对照文件〗这一块中,将这个对照文件整理一个,删除那些重复的词条并排序,这样做可以使你的对照文本变小一些。
  
接下来的工作就是翻译这个对照文本了。如果嫌麻烦,你也可以在〖翻译文件〗这一块中让它替你自动翻译大部分。不过这样翻译的质量实在不敢恭维!我更喜欢的方式是用写字板打开它,然后一句一句的翻译。虽然速度慢点,也累,但是质量能够得到控制。毕竟嘛,搞汉化总想搞的好一些,如果翻出来的东西让人家看了哭笑不得,实在是拿不出手,还不如歇着呢!您说是不是?翻译的原则是:奇数行不翻译,偶数行翻译。
  
对照文本翻译完成后,就可以利用它去产生一个翻译了的新资源文件,看下图:
  

P2800001.gif

  
新的RC文件可以和原来的RC文件放在同一目录下,不必另建目录。
  
如果你做汉化做久了,就会积攒下一些翻译好了的对照文本,这样以后做汉化时,可以节省不少的时间和体力。如果你有现成的对照文本,你可以在上图中,在“对照文本文件”空格内填上它,其他的还照上面一样填就行了,同样能生成新的RC文件。
  
那么对照文本怎样积攒呢?如果你汉化了一个新软件后,请按下图方式制作对照文本吧:
  

P2900001.gif

  
每汉化一个新软件,都这样处理一下,并把得到的对照文本文件通过剪贴集中到一个文件中,当然每次都别忘了利用“整理对照文本”的功能整理一下这个越来越庞大的文件哦。还有一点要特别注意:请一定保证你的对照文本中是“奇数行英文。偶数行中文”这样严格对照排列的,否则...很惨咯!
  
题外话说完了,再看看新的RC文件得到后,接下来该怎么做呢?回到WinNT系统,在VC++中打开这个新的 RC文件,把每个对话框,菜单或其他项目都打开看看。把还有些没翻译的词条译过来,翻译的不够准确的词再改改,对话框中如果有些词条的位置乱就调整一下,以使界面美观,还有些词条因过长而没有完全显示出来的也处理一下,让它全部显示出来。所有的微调工作确认都做完后,存盘但不要关闭这个RC文件。
  
这时我们再打开原版文件,将文件中“Version”、“Menu”、“Dialog”、以及“String Table”所含的项目统统用Del键删除,然后把RC文件中对应的项目全部拖过来或复制过来,存盘,这个文件就算汉化好了。
  
5、BUG问题:第一阶段用VC++汉化的工作到此可以告一段落了。这时候你应该检查一下这个汉化文件是否存在问题。软件汉化由于直接对软件本身进行了修改,所以也就有了出现错误的可能。通常一个文件汉化完后,应该用它替换原版文件,然后运行该软件,看看是否有问题。若没有问题,再继续汉化剩余的文件,若软件运行出现不正常的情况,可以用排除法去查错。具体的做法就是先用原版中“Menu”包含的项目替换汉化版本中的相同项目,如果错误仍存在,就再用原版中“Dialog”包含的项目替换汉化版本中的相同项目,如果错误没有了,证明问题出在这些对话框中,你就可以继续缩小范围查出具体是哪个对话框的问题了,如果错误仍存在,便再用原版中“String Table”包含的项目来替换,总之,要一步一步地,直到查出问题为止!
  
说到出 BUG,我又要多说几句了,首先是有一些软件采用了自校验等某些加密技术(通常用在了主程序上)。如果你改动了它,就会出现无法运行的情况,程序彻底玩完!你忙了大半天的成果成为徒劳。所以为避免出现这种现象,建议你在汉化之前,把此软件的主程序打开后改一下语系就存盘,然后运行运行。如果没问题,恭喜你,OK啦!继续前进!否则还是趁早拉倒吧:-) 如果大虾你现在正在边拜读着我的大作边同步做着汉化,做到这里什么都做完了才发现给堵咯,那我实在是太抱歉了!知道是这样还不如把这些话放在最前面说呢,也省了你白跑一趟不是^_^
  
还有一个BUG是很有名的,它在汉化界的名气不亚于AcdSee呢:-) 这个BUG出现在一些特殊的对话框中,现象如下图:
  

P3000003.gif
  
P3100001.gif

  
对这两种情况现在都有了解决的方法,这里向朋友们推荐三种解决方法:第一种方法最简单,首先用VC++打开被汉化过的文件,找到那些有问题的对话框,从而确定这些对话框是在哪个被汉化了的文件中,然后用汉化工具 Pebble 3.10打开这个汉化文件,不需要作任何改动,直接存盘即可。再运行运行程序,问题是不是解决了呢?这种方法的优点就是简单,但由于在Pebble中存盘的文件会改变文件的字节数大小,所以对于一些具有文件长度自检验的程序而言,可能会出现程序存盘后无法运行的问题。
  
第二种方法只需 VC++,不需要其他工具。首先也是用VC++的“Resources”方式打开这个已被汉化并且包含这些有问题的对话框的文件,同时把这个文件的英文原版也按此法打开。在英文原版中,将“Version”、“Menu”、“Dialog”、 及“String Table”中的所有项目统统删除(删除的方法很简单,就是选中这些项目然后按一下 Del键就OK了),但留下那些汉化后就出问题的对话框不要删除,也不要修改它的语系或翻译它里面的词句,总之就是不要对它做任何改动,这一点很重要,切记!删除完毕后,再把汉化版本中与所删除项目对应的资源(包含那些出问题的对话框)复制一份到英文原版中。注意:是将汉化版的项目复制到原版中,不能逆向操作!这样,英文原版中现在包含的除了所有被汉化的资源之外,还有那些出问题的对话框的英汉两个版本。好了,存盘吧,问题解决了!这种方法也是很简单的,但其局限性在于它只在语系为英语[English(U.S)]的程序中有效,对其他语系的程序就不行了。
  
第三种方法相比之下,可能是最麻烦的一种方法,而且处理后的效果也不如以上两种方法。但它的优点在于没有什么局限性,什么场合都可用,所以如果你使用上面两种方法都不成功的话,不妨试试它吧!
  
这种方法的第一步与第二种方法相同,也是用VC++同时打开出问题的那个文件的原版和汉化版,并把原版中的资源删除,只留下那些出问题的对话框,并且不要改动它们,然后把汉化版中与被删除项目所对应的资源复制过来,这里要注意的是,不要把那些出问题的对话框的汉化版本复制过来,这一点与第二种方法不同!然后将这个处理后的原版存盘,第一步就完成了。
  
第二步:你也知道刚才存盘的原版中除了那个有问题的对话框之外,其他的资源都已经汉化了。现在就用CPatch 1.3b 来汉化那个对话框。CPatch 是基于命令行操作的,是一个在DOS方式下运行的软件。首先打开Windows的 DOS窗口,然后进入到 CPatch所在的目录中,将那个存盘后的原版文件拖到此目录中。这样做没别的意思,只是为了写命令时写得短一些。键入命令:cread kkk.exe (kkk.exe表示原版文件名),随后会生成一个.Pat格式的文本文件kkk.pat,用记事本打开这个文件,如下图:
  

P3200001.gif

  
这个.PAT文件中除文件头外,其他所有项目都是按“奇数行为英文,偶数行为中文”的规律排列的。通常它是以“############”来分隔每个对话框或其他资源项目,因此你只要保留那个有问题的对话框部分即可,其他文字一律删除。同时把漏检的字补上去,并把翻译不准确和不规范的地方改好。还有一点很重要:这里的英文字符和汉字是一比一计算的,即一个汉字等于一个英文字符,如果翻译后的汉字数多于英文字符,则汉字多余部分被自动切掉;如果汉字数少于英文数,则汉化后的界面中汉字不足部分会用空格填满,相当的难看!因此只要有可能,你都应该尽量使英文字和汉字数相当,特别是对于按钮上的文字。看看上图修改后的结果吧:
  

P3300001.gif

  
将这个修改后的kkk.pat文件存盘,然后在CPatch目录下运行:cpatch kkk.pat ,就会生成新的 kkk.exe文件了,运行运行,看看汉化效果如何。如果效果不够理想,可以反复修改文件 kkk.pat并运行命令:cpatch kkk.pat ,直到较满意为止。当然,这样汉化的效果是比不上VC++,但这也是没有办法的办法呀!

四、用UltraEdit-32进行第二阶段汉化:
  
这个阶段的汉化并不是一定需要的,但是从我汉化的经历来看,绝大多数情况下都要经过这一阶段。做过汉化的人大都遇到这样的情况:已经在VC++把所有的词条都汉化了,但是软件运行后仍然有一些词句是英文,甚至是大段大段的英文。而且有些词在VC++中明明是汉化了的,运行后却还是英文!
  
遇到这种情况,VC++就无能为力了,只能用UltraEdit-32或其他可编辑16进制码的工具去翻译修改。如何翻译修改各人有各人的习惯,我比较喜欢的是下面的方法,首先在UltraEdit打开要汉化的文件,如图:
  

P3400001.gif

  
左边窗口中的16进制代码是与右边窗口中的字符对应着的,通常一个英文字符与一个16进制代码对应,一个汉字则对应两个16进制码,例如"r"对应的16进制代码为"72","宋"对应的代码为"CB CE"。在左边的16进制窗口中,有许多特殊的代码应该知道它们的含义:20表示一个空格位,2E表示英文句点,0D 0A 表示回车符,0A为换行符,00则无法用英文字符表示,它相当于一个断点,起隔断作用。在汉化时,这些代码你可以根据场合灵活应用。
  
按键盘上的“Ins”键,将写入方式置为“OVR”(覆盖方式),然后用“PgUp”或“PgDn”键从头到尾逐屏往下翻,在右边的英文字符窗口中,将出现的英文词句直接翻译即可。
  
这种翻译方式的好处在于能够比较彻底的翻译剩余的英文词条,因为在运行软件时,虽然可以发现一些未翻译的词条,但你并不能检查软件运行遇到的各种情况,所以可能有更多未翻译的词条是你发现不了的,如果你仅仅用查找替换功能去翻译你发现的词条,这些未发现的词条就会给漏了,是不是有些遗憾呢?不过这种方式也有不足,就是速度慢!试想一下,如果软件较大的话,你逐屏往下翻可是很累的哦!
  
虽然这种方式较慢,我还是要向大家推荐它!它的好处还有不少,下面会说到的。另外,还要提醒一句的是:不管你运行软件时发没发现未翻译的词条,最好都用这种方式查一遍,以免一些未翻译的词条漏网。
  
在具体的操作时,有许多需要特别注意的地方,我一条一条地说给你听吧:
  
1、翻译时不能增加或减少文件的字节数,而且由于每一句词条或每一个单元都是用“00”(是指左边16进制窗口中的代码,以下同)隔开的,所以你也不能更改每一句词条的起始位置;
  
2、翻译一句词条时,翻译后的汉字数一般不能超过英文词条的长度(这里一个汉字等于两个英文字符的长度),如果这句英文词条的后面有许多“00”(16进制代码),那么也可以超过英文词条的长度,超出部分填充那些“00”的位置,但必须至少保留一个“00”;
  
3、如果翻译后的汉字数少于原英文词条的长度,则在汉字后面至少用一个“00”(16进制代码)将其与剩余的英文字符隔开,如下图:
  

P3500001.gif

  
在极少数场合,用00隔开的做法会导致软件的小问题,这时你可以用空格替换剩余的英文字符,不过这样做会使软件运行后这个界面难看一些,如下图:
  

P3600001.gif

  
有一种情况是基本上不能用00进行断句的,这种情况就是在英文字串后面接了一些类似于“YYYY”之类的字符,这些奇怪的字符也是一种变量,在程序运行时会根据情况被有用的信息代替。如果用00隔断,那么程序运行时就会丢失这些“YYYY”所表示的信息,所以只能用20替代多余的位置了!难看一些也是没办法的,不知哪位高手有更好的方案?
  
4、诸如“%s”、“%d”等奇怪的字符千万不要删除或改动,它们通常是一些变量。如果在一个词条中有一个这样的字符,你可以在这个词条内移动它的位置,但不得移出这个词条;如果词条中有两个或更多这样的字符,那么它们之间的前后关系不能更改。

5、如图所示的文字可以不翻译:
  

P3700001.gif

  
类似于这样的与软件并无任何直接关系的段落还有一些,通常你可以不翻译,自己掌握吧:-)
  
6、通常需要翻译的词句都是集中在一起的,所以先找那些词句集中出现的地方进行翻译,这种集中出现的情形可能不止一处,耐心的找吧:-) 对于那些零散出现的单词,要小心,它们中很多是不能动的,何况需要汉化的词条也大多不在这里,实在要翻译的也应尽量放在翻译完比较集中的词句后再根据需要去做,这样容易确定哪些单词是可以动的。
  
7、应该养成每翻译几句就存一下盘的习惯,这主要是防止若遇到系统崩溃等意外现象时,不至于损失太大。而且每次存盘后,及时运行运行软件,如果发现有问题,也方便你能快速找到出错的地方。
  
其实用UltraEdit 进行翻译是件很费功夫的事情,翻译时很容易导致软件错误,除了上面所说的一些注意事项之外,还要许多的现象需要你在实践中摸索出应对的方法。总之,翻译时一是要十分小心,二就是要经常存盘检查。
  
一个文件到此就算全部汉化完了,最后一步就是将所有汉化好的文件制成一个补丁程序送到网上供大伙分享咯。制作补丁程序有一些工具可用,我通常喜欢的做法是把这些文件用WinZip制成一个自解压包就行了,虽然制成的包大了点,但图的是个简单好用,怎么样,试试吧:-)

五、后记:
  
看了上面的介绍后,我想你知道了:其实搞汉化也不是很难嘛,关键是要多动手做做。的确,不管什么事情都需要亲自做了才能掌握它的技巧的。做汉化的人,首先应该努力把自己的汉化做好,水平不足可以在实践中不断学习,只要你尽力了,即使暂时做的差点也会得到大家的认可的!其实谁都是这样过来的呀。但千万不应该为了图省事或快速出名而粗制滥造撒下一地垃圾。更不能将别人汉化好的资源大把大把地套出来,然后署上自己的大名!做汉化应该有一种娱人娱己的心情,不要光想着出名。其实你的汉化只要做的好了,自然会得到大家的认可;而如果你总是粗制滥造赶速度,那只能让大家越来越不愿意用你的成果了,你说是不是这个道理呢?
  
说了一大堆套话,该转入正题了。这篇文章主要是为那些很想做汉化却又不得要领的朋友而写的。凭心而论,本人目前也是处于边汉化边学习别人经验的时期,也许永远都是这样子,所以文章中难免有些罗嗦或错误之处是我没有发现的,还请大家多多见谅并来信告知,同时更希望它不会误导你前进的方向:-)




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 13:16 , Processed in 0.136476 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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