实践记录:NTR传说安卓汉化
我跟你们说,最近这个活儿,搞得我头皮发麻,但成功了那叫一个爽。很多老朋友都嚷嚷着要这个《NTR传说》的安卓汉化版,说市面上那几个流传的版本不是错别字成堆,就是玩到一半儿直接崩给你看,根本没法玩。
我这个老骨头被架上了,那必须得给办漂亮了。这个活儿,最开始的步骤跟以往那些Ren’Py或者Unity套皮的不一样,难度直接拉满。
上手开干:解剖工程
第一步:扒拉文件,找入口。
我先把那原始的日文APK逮住了,用常规的解包工具一通乱砸。本以为能看到熟悉的文件夹结构,结果好家伙,加密混淆得跟个铁桶似的。我来回折腾了两三次,才确定这玩意儿不是跑在常见的虚拟机里,而是用了一个比较冷门的开发框架封起来的,里头一堆JNI调用,native层的东西特别多。我当时气得差点把键盘给砸了。
第二步:定位资源,抠文本。
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
既然常规方法不行,只能硬着头皮往深处钻了。我用逆向工具把里面的动态链接库(就是那个.so文件)给拉出来,像个盲人在黑暗里摸索一样,一点点找那些字符串、那些资源ID。我怼了好几天,眼睛都快瞎了,终于在某个深不见底的DLL文件里,把那些乱七八糟的日文文本给抠了出来。
这些文本不是标准的UTF-8,一看就是古老的Shift-JIS编码。我直接用工具一把梭,强行把它们转成了UTF-8格式,然后交给翻译组的朋友去处理。
撞墙记录:编码与字库的麻烦事
文本是拿到了,翻译也回来了。我当时心想,这下简单了,直接替换回去,重新打包完事儿!结果,天真!
替换回文件,重新打包,安装。一启动,画面是出来了,但所有的中文字都是方块!一堆方块!
我当时就懵了。这说明什么?说明它根本就没有加载中文字库!只能显示日文字库里有的那些字符,中文的根本就找不到。我赶紧又钻回去看。果然,这破框架为了节省空间,只塞了一个简陋的日文点阵字库。我必须想办法把一个能用的中文字库(比如思源黑体那种大块头)给塞进去,还得让程序知道去调用它。
中文字库那体积可大了,程序原本的资源包根本装不下。我只好动手脚,在native层找了一个加载外部资源文件的函数,强行指定它去读取我放在SD卡根目录下的中文字体文件。折腾了好几个晚上,总算是把字能显示出来了。
的大坑:界面布局崩了
字显示出来了,我正在高兴。结果一进游戏,对话框里的中文内容直接爆框了!
你们知道的,中文跟日文不一样,尤其一些词语,中文占的像素宽度比日文要长得多。那破日文对话框本来设计的就小家子气,中文文本一进去,直接把底下的按钮、立绘全都给挤变形了。
这个就没法偷懒了。我得把代码找出来,定位到渲染文本的那一段区域。我找了一个周末,终于找到了那一段控制文本框宽度的硬编码数值。我直接加长加宽,把那个数值硬生生改大了三分之一,然后重新调整了对话框内文字的间距和行高。
当我看到替换回来的中文文本,整整齐齐地躺在对话框里,没有错别字,没有乱码,版面完美贴合的时候,我那成就感,比发年终奖还过瘾!
这玩意儿前后磨了我半个月,饭都没好好吃一顿。但现在看成果,值了!以后谁再跟我说这个不好搞,我直接把文件砸他脸上,让他自己体验一下什么叫真·汉化!

