我这人有个毛病,看上一个东西,如果不是中文版,心里就痒痒,非得自己动手把它变成中文才舒服。前段时间,我挖到一个挺有意思的安卓小游戏,冷门,只有日文版。网上一搜,没人汉化,得,只能自己来了。
白天我得上班,真要干这活,就只能等到晚上。等孩子和媳妇都睡踏实了,我悄悄摸摸地爬起来,打开电脑,开始我这“夜行”工作。这个过程,就像是一个黑夜里的探险,每一步都得小心翼翼。
第一步:备好家伙事儿和目标
搞汉化,手上的工具得硬,但也不能太复杂,我追求的是效率和傻瓜式操作。我先把那个日文游戏的APK文件给弄到手了,这是原材料,不能丢。然后就是软件准备。
- 我没用那些复杂的命令行工具,我用的是一个叫做APK Easy Tool的玩意儿。这工具把分解、编译、签名都集成到一块儿了,省去你敲各种代码的麻烦,点几下鼠标就能搞定。
- 文本编辑软件,我用的是VS Code,主要是它能自动帮你处理编码,特别是处理那些非英文字符的时候,特别省心,不会乱码。
- 还得有个测试机,我找了台备用的旧安卓机,专门用来安装和调试,免得弄坏我日常用的手机。
家伙事儿准备妥当,我就开始对目标文件下手了。
第二步:暴力拆解与文字挖掘
我把APK文件拖进APK Easy Tool里,选择“分解”,哗,一堆文件夹和文件就弹出来了。这过程就像拆玩具,你得知道文字都藏在哪个零件里。
我先是奔着资源文件去的,这是汉化的第一战场。在安卓应用里,大部分界面文字、提示语什么的,都会放在res/values这个目录里面,文件名通常是。我赶紧进去翻。
打开那个XML文件,果然,里面塞满了日文。我当时就没含糊,直接开干,对着百度翻译和自己那点破日文基础,一个词一个词地往里填中文。这个阶段是最累的,纯体力活,还不能翻错,不然游戏里的提示或者道具名字就全乱套了。
但老实说,光改XML文件肯定不够。有些开发者比较“鸡贼”,把重要的提示或者按钮名字,直接写死在代码里,特别是游戏里的核心提示。这时候,就得去翻Smali代码了。
Smali代码看起来跟天书似的,全是各种指令和寄存器,这是安卓的底层代码表示。我可没那个本事去读懂所有逻辑,我就是用最笨的方法——关键词搜索。
我输入几个常见的日文关键词,比如“开始”、“确定”、“购买”什么的,在Smali文件夹里进行全局搜索。一旦找到了对应的文件,我就打开它。
找到那些被双引号括起来的日文字符串,我小心翼翼地把它们,换成中文的Unicode编码。为什么要用Unicode?因为直接输入中文可能会导致编码错误,而用Unicode编码是最保险的方式。这步操作得非常谨慎,多一个字符少一个字符都不行,不然编译回去直接闪退给你看。
第三步:缝合、编译与签名
所有文字改完了,大半夜的,眼睛都熬红了。接下来就是见证奇迹的时刻,或者说,是准备接受崩溃的时刻——打包回去。
在APK Easy Tool里点“编译APK”,它就开始把那些零碎的代码和资源文件重新缝合起来,生成一个新的文件。这个步骤经常出幺蛾子。
第一次编译,不出我所料,失败了。屏幕上提示一堆红字,说我的Smali文件里有语法错误。我赶紧回去检查我改动的那些地方,发现是中文Unicode编码的格式问题,有些地方的引号或者斜杠处理得不够严谨。
修修补补,来回折腾了三次,总算,它绿了,生成了一个新的APK文件。但这文件还不能直接安装。
因为新生成的APK没有“身份证明”,也就是官方签名,安卓系统不会承认它。我一步是签名。用工具再给它签一次名,让它看起来像一个合法的应用。
第四步:的测试
签完名,我赶紧通过数据线把这个汉化版APK安装到我的测试机上。安装成功,我点开游戏,心都提到嗓子眼了。
启动画面正常,没有闪退,点击“开始游戏”,界面上出现了我翻译的汉字!那一刻,所有的疲惫都一扫而光。我赶紧把游戏里所有的功能和对话都点了一遍,确认没有出现乱码或者程序错误。
虽然整个过程折腾了两个晚上,但看到那个原本看不懂的冷门游戏流畅地显示着我的母语,值了。夜行汉化这事儿,就是耐心和细活的结合体。关键在于,你得有折腾到底的决心,不然半途而废,比没做还难受。