那天我琢磨着找点事干,刚好看到有人在群里抱怨那个叫《涟漪》的安卓视觉小说,说官方那英文机翻简直是折磨人。我一听,火气就上来了。倒不是我多喜欢这游戏,而是看那种狗屁不通的翻译,心里堵得慌。既然有时间,不如自己动手,起码能让自己玩得舒服点。这事儿说起来容易,动起手来简直是找罪受。
第一步:硬拆包,把家底都翻出来
我抓下来最新的那个APK安装包,直接用解压缩工具先给它扒了个精光。常规操作,但重点是找文本资源。我翻遍了res目录,但发现大量的对话文本根本不在常见的里。这帮开发者为了防修改,把核心文本全塞进了一个私有格式的文件里,藏在assets或者某个加密的文件夹里。我花了整整一个下午,才定位到那个疑似存有日文原文的文件,它是一个后缀很奇怪的二进制文件。
- 我试着用十六进制编辑器去打开,发现里面夹杂着大量的UTF-8编码的日文文本。
- 然后我判断,这文件结构估计就是简单的Key-Value,只是被做了简单的混淆。
- 我写了个小脚本,专门用来把这些文本对儿提溜出来,清清爽爽地放在一个Excel表格里,方便翻译。
第二步:翻译地狱与格式地雷
文本量大到吓人。我原本以为就几万字,结果导出后一看,妈的,足足有十几万字。我一个人吭哧吭哧地翻,每天晚上都搞到凌晨三点。机器翻译?笑话,那种感情和语气的东西,机翻出来能看吗?我逼着自己一句一句地琢磨,力求把那种微妙的日系语感给转成我们能接受的中文。
最大的问题不是翻译本身,而是格式。因为游戏引擎会读取特定的转义符,比如换行符、角色名调用符。如果我翻译时少了一个符号,或者多了一个空格,游戏里就会直接报错闪退。我必须保证中文翻译的长度不能超过原文太多,不然排版会崩掉。那段时间我感觉自己不是在做汉化,而是在做格式校验员。
第三步:回填,打包,签名,鬼知道经历了什么
文本终于翻完了,接下来就是把中文塞回去。我修改了之前提取文本的那个脚本,让它能把Excel里的中文内容按原先的二进制结构回填进那个私有文件里。文件回填成功后,我用apktool这玩意儿,把修改后的资源文件和代码(主要是为了修改默认语言环境)重新编译成一个新的APK。
噩梦才刚刚开始。第一次编译,报错。第二次,版本号冲突。第三次,签名问题。妈的,我在网上来回查,试了七八种不同的方法,又是生成新密钥,又是用旧密钥重签,始终搞不定。3发现,竟然是我Java环境的路径设置出了个弱智错误,耽误了我四个小时。我气得差点把键盘砸了。
终于,我拿到了那个可以安装的、带有我中文签名的APK。赶紧装上测试。点开游戏,熟悉的画面,然后……中文文本成功显示出来了!字迹清晰,排版舒服。那一刻,所有的怨气和辛苦都烟消云散了。我把这个汉化版分享给了几个群里的朋友,大家试用后都说这比什么都强。这玩意儿就是个体力活,但看到最终成果,觉得自己这几天没白熬。