[p:5]
教程用Hex WorkShop实现S60软件或游戏的完美汉化
1、关于S60软件或游戏的汉化
S60软件或游戏都使用基本相同的结构框架,汉化它们,其实就是找出文本资源文件并替换成中文的过程。只需要把在手机上看到的所有英文字符,在程序的文件中查找并全部替换成中文字符,即可实现完美汉化。
2、S60软件的文本资源
S60软件的文本资源一般为.rsc文件,这是S60软件设计框架中的标准资源文件。
在这个资源文件中,常见的情况是,所有的文本字符均为Unicode编码,即不论英文字符、中文字符都占两个字节。相对于ASCII码来说,汉化的难度更小一些,因为英文的Unicode的“OK”是两个字符占四个字节,中文的“确定”也是两个字符占四个字节,直接替换即可。
而如果是ASCII码,“OK”只占两个字节,在不改变原文本长度的情况下,只能把它汉化成“好”,或者留着不汉化,因为如果汉化成“确定”那要占4个字节(实际上Symbian的AscII码形式的中文字库占用的字节数还要多于这个数),改变了整个文件的长度,就会不正常。要在ASCII环境实现完美汉化,就必须修改偏移量,那就麻烦去了。所以Unicode的汉化,相对来说还是省事多了。
但资源文件也有例外,有些软件的资源不在.rsc文件中,这就是为什么发现把整个rsc文件的内容全部汉化了,程序里依然会有英文字符的原因。(如FSCaller来电大头贴软件,在来电的时候,如果是未知的电话号码,显示的就是英文“Not found”,这个词在\\System\Programs\FSCallerD.exe里)
这些不在rsc文件中的文字有时会出现在.app(主程序文件),.dat(程序数据文件)等等文件中,要实现完美汉化,就必须汉化这些文件。
3、Hex WorkShop软件简介与下载:
由于ResEditor只支持打开.rsc文件,这样如果要汉化.app文件,就必须更改.app文件扩展名为.rsc,完成后再改回去,那样比较麻烦,而且每次使用都要调整系统时间、不支持查找替换功能……大致上来说,ResEditor功能比较简单,这里给大家介绍一个16进制的编辑软件:Hex WorkShop。
玩软件汉化的朋友大概不会不知道这个软件,这是一个老牌的16进制编辑工具,功能强大的开发工具,可以方便地进行十六进制编辑、插入、填充、删除、剪切、复制和粘贴工作,配合查找、替换、比较以及计算校验和等命令使工作更加快捷。速度快,算法精确,并附带计算器和转换器工具。其强大卓越的比较功能对于汉化人极其有用!
Hex WorkShop 4.23汉化版下载地址:
http://download.pchome.net/utility/file/editor/5287.html
4、汉化实例:
这里以我汉化的“麻将天堂”为例,来介绍整个汉化过程:
安装完Hex WorkShop以后,Windows资源管理器的右键菜单中会多出一个“用Hex WorkShop编辑(H)”的项目,这样你就可以直接在要汉化的文件上击右键,然后选择“用Hex WorkShop编辑(H)”来打开编辑并汉化了。
我们首先要找到“麻将天堂”的资源文件,有两种方法可以让您得到资源文件:
A、在手机上安装“MajongParadise”,然后把\\system\apps\MajongParadise\这个文件夹用读卡器拷贝到PC里
B、用UnMakeSIS软件,在PC端直接解开MajongParadise.sis安装文件,直接查看资源。
好了,我们得到资源文件后,先在PC上打开MajongParadise.rsc,然后我们就可以在右侧窗口中看到软件的文本资源了,现在我们开始汉化它:按“Ctrl+H”打开替换菜单(见下图),我们把第一个字符串“R.e.s.t.a.r.t”替换成“重新开局”,这里需要:
A、在查找栏里写入要替换的英文字符“Restart”
B、在替换栏里写入汉化后的中文文字“重新开局”
C、“选项”中要选择“Unicode字符串”
D、选中“冗余处填充零值”
为什么要选中“冗余处填充零值”?
这是为了保证文件长度,因为一般汉化Unicode成中文时,字符长度都是比英文字符长度短一些的。但“0000”这个编码在手机上查看是“口”,所以就必须填充空格。切记替换时要在中文字后面补空格。
补多少个空格呢?如果用其它工具,就必须补相同的空格。Restart占7个字符(14b),“重新开局”占4个字符(8b),这样就需要补三个空格。但如果你选中了“冗余处填充零值”,就不用一个一个去数了,只需要按按按多按几个空格就行,程序只会补到与原字符长度相同的空格,比较省事!
另外,如果某一句话,出现了好几次,如果是全句匹配的,直接用“全部替换”就行了,而不必逐句汉化了,这是优于ResEdit的地方。但有些词,在这里出现,在下面又出现,注意不要使用“全部替换”,因为一来会导致一个完整的句子中间被补足的空格间隔开来,二来有时词义在不同的地方会有所不同,注意不要一味地“全部替换”。
接下来把其余的字符全部汉化了,就OK了。保存文件,注意要选择备份原文件选项,然后把生成的新的res文件替换原文件运行测试程序就行了。汉化就是这么简单!
但为了实现完美汉化,就不得不做些额外的工作。
在个别没有出现在rsc文件中的资源,必须用HexWorkShop的查找功能。你可以逐一打开程序中的各个文件,查找没有汉化的英文字符究竟在哪一个文件中。
比如“来电大头贴”汉化版这个软件,虽然绝大部份汉化了,但来电的时候,如果是电话簿里的电话,显示的就是“Not Found”,这个英文并没有汉化。这个词并不在原程序的rsc或app文件中,究竟在哪里呢?
把所有FSCaller的文件大起底查找一遍,最后终于发现原来是在\\System\Programs\FSCallerD.exe里,汉化这个字符串,你的来电大头贴软件就实现完美汉化了。
5、再举一例。
“麻将天堂”里原程序中抓牌用的是“Draw 1”这个资源在哪里呢?
打开原文件逐一查找资源,原来这个不是一个文本,而是一张图片,在安装程序下有个message.bmp的文件,里面的图形就是一系列信息显示时调用的,处理一下这张图片,把“Draw 1”修改成“1 抓”保存图片,回头打开程序看看,是不是已经完美汉化了?
1、16进制编辑器。
16进制编辑器有很多,老牌的还有UltraEditor等等,习惯了用HexWorkShop,而且查找功能中对Unicode的支持较好,所以用了HexWorkShop,大家可以根据自己习惯选择16进制编辑器。
2、判定可不可以汉化
原则上所有的程序都是可以汉化的。但……有些程序汉化后成了乱码或“口口”……这些程序调用的不是系统字体,或者根本没有调用字体(使用了默认英文环境,这样来到中文环境就会显示不正常了),这样的程序要进行汉化,必须重新反编译原程序,修改调用的字体,或者强制压入中文字体调用,那就不全是汉化,有点类似于crack了。所以强烈建议在做全局汉化之前,先汉化一两个单词测试一下显示,再进行下一步。
3、汉化单词的语言环境
OK这个词,在大多数情况下汉化为“确定”,这是官方语言的提法(大家用的windows中文版就是这样的提法),但有一些情况下也必须汉化成“很好”“完成”之类,要视上下文的语境来定。
4、备份资源
千万要经常性的备份“.bak”文件,因为也许你不定在什么地方出错,常常备份汉化文件可以让你不至于出错的时候从头来过。再一个,有时有些地方有问题,要与原文件作对比,也可以使用HexWorkShop的“比较”功能,它会生成完整的“匹配部份”“替换部份”“删除部份”的对照值出来。
5、关于中文Unicode码
中文Unicode码与ASCII码虽然都是占2b,但编码并不相同,而且一旦你替换成中文后,中文的字体是查找不出来的,不像英文的单词可以直接在文件中查找出来。这样只能用“16进制查找”功能,查找中文的Unicode编码值才能找到。
6、关于资源的查找
有些软件,尤其是游戏,就是喜欢调用一些奇怪的资源,比如我上文提到的FSCaller即是,那么要找到所要汉化的资源,只能逐一打开程序的资源文件,不断的查找以寻求资源。需要的是耐心!