今天得空,跟大家唠唠我前段时间折腾“精灵谷”这款安卓游戏汉化的事儿。起因也简单,朋友推荐的,说这游戏不错,就是没中文,玩着费劲。我寻思着,闲着也是闲着,干脆自己动手试试,权当练手了。
准备工作与初步尝试
老规矩,先整个APK下来。这游戏,网上搜了下,发现有叫“精灵谷国服”的,也有叫“Elf Valley”的,看介绍是个RPG奇幻冒险类的。我找了个最新版的,估摸着内容全一些。第一步,当然是反编译。 我用的还是那几个老伙计,什么APKTool之类的,把APK文件给拆开,看看里面的家当。
拆开之后,就开始翻找那些可能的文本文件。一般来说,安卓游戏的文本会放在像是assets
目录下的某些文件里,或者res/values
目录下的。我先奔着去的,果然找到一些,但不多,零零散散的,看着不像主要剧情和界面的文本。
攻坚克难:寻找核心文本
这时候我就知道,这活儿估计没那么简单了。有些游戏的文本可能藏得比较深,比如打包在特定的资源文件里,或者干脆就是硬编码在代码里。我就开始在assets
目录里翻箱倒柜,找那些看着像是数据文件或者脚本文件的东西。什么.json
、.txt
、.dat
后缀的,都打开瞅瞅。
你猜怎么着?在一个看起来不起眼的.dat
文件里,我发现了一大堆英文文本,格式还挺规整,一条条的,前面还有编号。我当时心里就“咯噔”一下,感觉是找对地方了! 但这文件直接用记事本打开有点乱码,估计有它自己的编码方式或者加密。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
这时候就得祭出我的另一个宝贝疙瘩——一个十六进制编辑器。用它打开那个.dat
文件,切换不同的编码看看,再结合之前看到的那些英文片段,慢慢摸索。折腾了小半天,总算是搞明白了它大概的结构,虽然没完全弄懂加密(如果它有的话),但至少能定位到文本区域,也能看懂怎么替换了。
然后就是最枯燥的一步了:翻译。一条条对着英文啃,再翻成中文。这游戏文本量还真不小,剧情对话、物品描述、技能说明啥的,密密麻麻。我一边翻译,一边还得注意中文的长度,别超了原来的英文太多,不然游戏里显示可能会出问题,比如文字溢出什么的。
字体问题与打包测试
文本替换得差不多了,我就寻思着回编译打包,装手机上看看效果。结果一运行,傻眼了。 中文的地方,一部分显示成了方块“□□□”,一部分干脆就没了。我当时就感觉脑袋嗡嗡的,白忙活半天?
冷静下来想了想,这肯定是字体问题。游戏内置的英文字体,十有八九是不包含中文字形的。这就得给它换个支持中文的字体。我又把APK拆开,去找游戏用的字体文件,一般是.ttf
或者.otf
格式的。找到了几个,挑了个看着像主字体的,从我电脑里找了个大小合适、也比较美观的微软雅黑或者思源黑体之类的中文字体,改成和原字体一样的名字,替换掉。
替换完字体,重新打包,签名,再安装。 这回进游戏,中文出来了!虽然有些地方排版可能因为中英文宽度不一样,看着有点挤,但总算是能看懂了!
后面就是一些修修补补的活儿了。比如,有些地方翻译得不太行,得重新润色;有些地方因为长度问题,显示不全,就得想办法精简文字,或者看看能不能调整一下UI布局(这个一般比较难,我没深入搞)。
我记得特别清楚,有个按钮上的文本,死活找不到对应的文本条目。后来琢磨了半天,又去翻那些反编译出来的代码文件,就是那些看着像天书一样的smali文件。硬着头皮,靠着搜索大法和连蒙带猜,总算在一个smali文件里找到了那句英文,它是直接写在代码里的!我当时就想骂娘,这也太坑了,只能小心翼翼地把对应的Unicode码改成中文的,再重新编译smali。这种硬编码的文本,汉化起来最麻烦,也最容易出错。
最终成果与总结
经过这么一番折腾,反反复复编译、测试、修改,总算是把“精灵谷”这款游戏的主要内容都汉化了。虽然肯定比不上官方汉化那么完美,有些地方可能还有瑕疵,但自己玩或者给朋友玩是足够了。
这回汉化精灵谷,过程挺折腾,尤其是找文本和解决字体问题那块儿,花了不少时间。但看到自己弄出来的中文界面,那感觉还是不赖的。也算是给自己找了个事儿干,顺便活动活动脑子,温习了一下安卓逆向那点三脚猫功夫。分享出来,也给有类似想法的朋友们一个参考,很多时候,只要肯花时间琢磨,很多问题都能解决。