咱们今天聊聊这个《蜉蝣》的安卓汉化。说起来,我一开始真没想折腾这个事。一个挺小众的独立应用,主要是日文和一点点英文,国内也没几个人玩。但是,架不住我那邻居家的老李头,他非说这软件非得让我给他弄个中文版。
老李头以前在国企当过会计,退休了就喜欢捣鼓点新奇的。他英文日文一窍不通,抱着手机天天跟我抱怨看不懂界面。市场上那些所谓的“第三方汉化包”他试了,要么是机翻得狗屁不通,要么就是带着一堆广告病毒。我一看他那可怜巴巴的样子,心一软,得了,自己动手,丰衣足食。
第一步:摸底与拆包,搞清楚家底
我这人做事情,讲究个从头开始。既然决定要干,那就得搞得像模像样。
我先是找到了原始的安卓安装包,就是那个APK文件。这玩意儿就像个密封的快递箱子,里头装着程序、图片、还有那些密密麻麻的文字。
- 我找了个拆包工具,直接把这个“箱子”给撬开了。
- 我开始翻腾里面的文件,主要目标是资源文件,特别是那种叫‘res’和‘assets’的文件夹。我心想文字肯定藏在XML或者是一些代码文件里。
- 我挨个点进去看,发现大部分显示出来的文字,都藏在一些像是Java编译出来的包(dex文件)里头,还有一部分是在一些Smali代码块里。一看就知道,这跟常规的App汉化不太一样,那些简单的字符串替换法肯定行不通。
这可给我愁坏了。要是文字都嵌在代码里,那得动大手术。我不是专业的逆向工程师,只能硬着头皮往里钻。
第二步:定位字符串,土法炼钢
既然躲着,那我就想办法把你揪出来。我采用了一个比较笨,但是很有效的办法——关键字搜索。
我先运行了应用,截了几张图,记住了一些关键的日文提示语,比如“設定”或者“開始”。
我然后回到拆出来的文件堆里,用一个文本搜索工具,把那些日文关键字往里扔。这个过程特别像大海捞针,电脑吭哧吭哧跑了半小时,总算是给我定位到了几个关键的代码文件。
- 我锁定了那几个文件,发现里面的文字确实是硬编码在程序逻辑里的,不是简单的资源调用。
- 我把这些文件拿出来,开始对照着翻译。为了保证翻译质量,我没有完全依赖机翻,而是自己一句一句地抠。毕竟是给老李头用的,不能弄得太生硬。
- 我用Excel表格做了个对照清单,左边是原文,右边是我翻译好的中文。这个过程特别枯燥,足足花了两个晚上才把所有主界面的内容搞定。
最麻烦的是,文字的长度对显示界面影响很大。日文通常比较短,中文翻译过来字符数多了,很可能就超出显示框,导致乱码或者界面错位。我不得不修改了一些翻译,尽量用短语来表达,尽量保证字符数跟原文接近。
第三步:回装、打包与签名,搞定收工
文字搞定,接下来就是把它们塞回原来的位置,让程序认得我的中文。
我小心翼翼地把修改后的代码文件替换掉原来的文件,生怕少了一个逗号或者多了一个空格,那应用就直接崩给你看。
然后就是重新打包。我用之前那个拆包工具自带的重新编译功能,把散落的文件又组装成了一个新的APK。这个过程可不是一帆风顺,第一次打包就报错了,提示说签名校验不对。安卓系统很聪明,它知道你动了手脚。
- 我查了半天资料,发现必须给这个新生成的APK重新签名,让系统认为这是个合法的应用。
- 我下载了一个签名工具,找了一个通用的调试密钥,给它签了个名。
一步,就是安装测试。我把这个新鲜出炉的“蜉蝣中文版”传到手机上,然后看着老李头,小心翼翼地点了安装。那一刻,比我自己拿到年终奖都紧张。
应用启动,我看到界面上的文字清清楚楚地显示着“设置”、“开始游戏”、“关于我们”等中文选项。虽然有几个地方因为我翻译得太长,挤到了一起,但我很快在代码里微调了几个字,又重新打包了一次,完美解决。
老李头拿到手机,乐得见牙不见眼,说这下他能好好研究研究这个“高科技”了。虽然过程坎坷,花了我好几个周末,但看到自己从零开始,硬是把一个外国应用变成了中文版,那种成就感,真是无与伦比。以后谁再跟我抱怨没汉化,我就跟他说,自己干!