最近我是真闲得有点儿慌,手里头翻出了一个老早以前的日式小游戏,叫《35岁魔术师》。这个游戏我一直想玩,但它娘的,除了几个英文菜单,全是一堆日文,我看着跟看天书一样,玩不下去。
这游戏网上也没人放出中文版,我就寻思着,反正闲着也是闲着,干脆自己动手,把它给汉化了。说干就干,我这个人就是这样,一头扎进去就得把事儿弄出来。这篇就给大家伙儿分享一下,我怎么把一个安卓的日文APK给扒皮、换心,再重新塞回去的。
第一步:环境准备和第一次失败
刚开始我就是一通瞎忙活,想着搞个最简单的方法。我先是下载了一个号称“一键反编译”的傻瓜软件,把这个《35岁魔术师》的APK包拖进去。
- 那软件在那儿转了半天,告诉我:格式不支持。白搭!
- 没办法,我只能拿出老本行那套土办法。我跑去翻出了APKTool这个工具,这玩意儿是命令行操作的,看着就专业,但用起来也麻烦。
要用它,得先搞定Java环境,我那台老电脑的Java路径配置不知道多久没动了,又是报错,又是权限不够。我折腾了差不多一整个下午,又是配置环境变量,又是检查各种版本号,终于,那黑乎乎的命令行窗口上,APKTool总算是能跑起来了。
我敲下那个反编译的命令,等了一小会儿,那APK果然被拆散了,变成了一堆文件夹。那一瞬间,成就感就来了,虽然只是个开始。
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第二步:大海捞针找文本
拆是拆了,出来的一堆文件夹,比如`smali`,`res`,`assets`,看得我头皮发麻。我知道游戏里的文本、图片、声音肯定都藏在里面,可具体在哪儿,得凭经验猜。
我的经验告诉我,先去`res`文件夹里的`values`目录看看。通常最简单、最常用的文字,比如游戏的“开始”、“退出”、“设置”啥的,都会老老实实地放在`*`这个文件里面。
我打开一看,果然,找到了一小部分。但大部分游戏对话和剧情文本,根本不在那儿。
接着我就像个老侦探一样,开始在整个文件夹里大海捞针。我用Notepad++这个工具,直接设定成在所有文件里,搜索一些日文假名。结果搜出来一堆文件名,我就一个个点开看,里面是一堆乱七八糟的编码和字符。
我瞄准了`assets`文件夹,这个文件夹一般放一些没加密的原始资源。果不其然! 我在一个叫`data`或者`script`的子目录里,找到了几个文件,后缀名不是`.txt`也不是`.xml`,但用文本编辑器打开,里面竟然整整齐齐地躺着游戏的全部对话文本! 旁边还用标签标记了谁在说话,什么场景。我靠,这游戏作者偷懒,文本都没加密!我真是走运。
第三步:翻译润色和地雷排查
文本找到后,工作就变成了体力活加脑力活。
我把那几个文本文件拉出来,对照着翻译软件,一句一句地翻译成中文。这部分不是最难的,最难的是要翻译出“人味儿”。
- 这日式游戏里,很多中二的、夸张的、或者有些土味的日文台词,你如果直愣愣地翻译,那就太干巴了。我得用一些我们自己的网络口语和梗,把它润色一下,让它看起来更像是国人玩家会接受的对话。
- 更烦人的是,中文文本的长度。我们的中文通常比日文要长得多。这就带来了问题:我生怕我的中文对话框放不下,显示溢出,或者直接被截断。我得不断压缩句子的长度,尽量用最少的字表达完整的意思。
- 还有一个大坑,就是动态调用的文本。有些数字、人名,它是被程序代码在运行的时候临时塞进去的。我一改动,代码就找不着它要塞的地方了,游戏直接闪退。我只能再跑回去看那个像天书一样的`.smali`代码,看它到底是怎么引用的,然后小心翼翼地改动它引用的那个文本标签。这几处地方,我排了好几次雷,简直像是在进行一场精密的外科手术。
第四步:重新打包与的签名
把所有文本都替换成中文,确认没啥大问题之后,就是重新把这堆散沙再粘回去。
我又跑去命令行,敲下APKTool的打包命令。第一次,很不幸,失败了。它报错说啥资源文件索引对不上。我回去检查,发现是自己手贱,有个图片文件不小心移动了位置。没办法,老老实实改回来。
第二次,打包命令终于跑完了,一个看似完整的APK文件出来了。但是,还没完! 安卓系统很讲规矩,没有经过签名的安装包,它是不会让你安装的,或者安装了也打不开。
我得给这个汉化版打上一个“标记”。我找了个叫`JarSigner`的签名工具,给自己随便弄了个自制证书,一顿操作,给这个新的汉化包盖上了我的“私章”。至此,一个新鲜热乎、可以安装的《35岁魔术师》汉化版APK算是正式完成了。
我赶紧传到我的测试手机上,安装,打开。看到游戏启动界面上的“35岁魔术师”那几个中文大字时,那种成就感,真他娘的爽爆了。虽然有些剧情文本还是因为长度问题,在对话框里挤得比较难看,还需要再修修,但这第一版的汉化,算是彻底跑起来了。
整个过程,从动念头到最终在手机上看到中文,我一共折腾了大概三四天,比我平时在公司写那些重复的CRUD代码有意思多了。这就是我做这个博主的原因,分享这些别人觉得没啥用的、但自己弄起来特带劲的实践记录。下次我把那些挤压的文本修再来给大家分享分享我是怎么优化界面排版的。

