愤怒的小鸟文字汉化(2)——文本
了解了字符显示的原理后,我们就可以修改游戏文本来显示出我们希望的字符了。
首先看一下游戏的文本是如何存储的。
怒鸟几乎所有的文本都存放在assets\data\localization目录下的TEXTS_BASIC.dat文件,下面对其结构进行简单说明:
00h~03h:固定00h
04h:语言分类段长度(39h)
05h~3Dh:长度39h字节,语言分类段
3Eh~3Fh:文字项个数(71h)
40h~079Bh:文字项标识(71h个)
079Ch~07BBh:4字节1项,共8项,各语言文字项相对偏移(相对于每项结尾)
07BCh~结尾:各语言文字项顺序存放,每种语言71h项。
注:每个文字项结构为,2字节长度数据+字符串(字符串不带有00h作为结束标记)
其中,相对偏移可能不太好理解,可以自行用16进制编辑器打开该文件进行查看,看下每种语言的文字开始于什么位置,实际操作下有助于理解。
看得出来,这个文件本身包含8种语言的文本,我们需要的是其中的英语和简体中文部分。
下一步就是将文本导出成txt文件,方便直接查看和翻译。
在TEXTS_BASIC.dat中使用的是UTF-8编码,而上一章中我们说过的字库里面用的是Unicode编码,这两种编码是可以比较容易地相互转换的,转换方法如下:
------------------------------------------
| UTF-16 | UTF-8 |
|----------------------------------------|
| 0000-007F | 0xxxxxxx |
| 0080-07FF | 110xxxxx 10xxxxxx |
| 0800-FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
------------------------------------------
之所以要提到转换,是因为我们在翻译结束后还需要对使用的字是否在在库里进行判断(没有的话就需要改变翻译或者添加这个字到字库)。
导出后的文本如下图(仅为例子,这个结构由编写的程序决定,可以根据自己的习惯来设计格式):
下一步是根据游戏进行翻译,因为里面大部分的内容实际上在游戏里并没有显示,我们只选出需要的句子翻译就可以了,翻译内容可以参考下原本自带的中文文本,毕竟是官方翻译。
翻译的时候一般需要确认下对应的句子在游戏里是不是有显示,很多文字在游戏初期设计的时候有,但是后来又会因为各种原因放弃显示,因此在导出的文本中可能会有很多句子是没有用处的。这样的就不需要翻译了。
然后我们根据翻译好的文本重新生成TEXTS_BASIC.dat文件,事实上只需保留原本的英文部分(已翻译),其余语言对应部分留空即可。
文本导入后并不意味着工作结束,前面说过,只有字库所支持的字才能被显示,所以下一步我们需要确认使用的汉字是否都被字库所支持,不支持的话就要在字库里添加。同时原字库的字体略显呆板,和英文的字体风格不一致,也可以一并修改下。此外还要注意,游戏在不同屏幕大小下有两个不同的字库,都要做相应修改才可以。
这样,我们的游戏就基本汉化完成了,可以打包安装试玩一下,看看还有没有哪里遗漏