大伙儿晚上今天得空,给大家伙儿唠唠我最近瞎折腾的一个事儿——《家庭的秘密安卓汉化》。也不是啥高深玩意儿,就是自个儿瞎琢磨,顺便记录一下过程,万一有哪个朋友也想搞搞类似的,算是个参考。
起因,纯属手痒
这事儿得从上个礼拜说起。我在一些国外的论坛瞎逛,发现了个叫“家庭的秘密”的安卓应用,瞅着介绍挺有意思的,好像是那种有点剧情互动的小游戏,或者是个啥生活记录类的工具,具体我也没太搞明白,因为全是英文!我这英语水平,也就认识个ABC,看那些复杂的句子,头都大了。想着这玩意儿要是中文的多家里的老人孩子没准也能瞅瞅,或者我自己玩起来也舒坦不是?
一开始想着网上搜搜看有没有大神已经汉化了,结果找了一圈,要么是版本不对,要么就是些乱七八糟的广告链接,根本没法用。这下可把我给急的,心想,求人不如求己,干脆自己动手试试看!以前也零零碎碎接触过一点点安卓应用修改的皮毛,但正儿八经汉化一个完整的应用,这还是头一回。
准备工作,家伙什儿得备齐
决定了要自己动手,那就得先准备工具。我凭着记忆,加上网上东拼西凑找了些资料,大概需要这么几样东西:
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- APK安装包:这个是必须的,就是那个“家庭的秘密”的原版英文APK文件。这个我费老大劲儿才从一个犄角旮旯的网站上扒拉下来的。
- APKTool:这可是个主力工具,用来反编译APK文件,把里面的代码和资源文件给解出来,汉化完了还得用它重新打包。
- 一个好用的文本编辑器:我用的是Notepad++,主要是它支持多种编码,查看和修改文本文件比较方便,尤其是那些包含文字信息的XML文件。
- 翻译工具(可选):虽然我的目标是人工汉化,但遇到一些不认识的单词或者句子,还是得借助一下翻译软件,比如谷歌翻译或者有道词典啥的,作为参考。
- 耐心和时间:这个最重要,汉化是个细致活儿,急不来。
把这些东西都准备我就开始摩拳擦掌,准备大干一场了。
动手开搞,过程有点曲折
第一步,反编译APK。我打开电脑,把APKTool工具包解压然后把那个“家庭的秘密”的APK文件复制到APKTool的文件夹里。接着打开命令行窗口,切换到APKTool的目录,输入反编译命令,大概是这样的:* d *
(*就是那个应用的文件名)。回车一敲,等了一小会儿,屏幕上刷刷刷地跑代码,提示成功,APKTool文件夹里就多出来一个跟APK文件名一样的文件夹,里面就是解开的各种资源和代码文件了。
第二步,找文本,开始翻译。这一步是核心,也是最花时间的。一般来说,安卓应用的文本信息大多都存放在res/values/
目录下的文件里。我打开那个解压出来的文件夹,果然找到了这个路径和文件。用Notepad++打开,好家伙,里面密密麻麻全是英文!
接下来就是苦力活了。我一行一行地看,把
这样的标签里的英文文本,对照着翻译软件的参考,自己再琢磨琢磨,改成中文,比如改成
。有些是菜单项,有些是按钮文字,有些是提示信息。这个过程特别考验耐心,因为文本量还真不小。有些句子比较长,还得考虑翻译后的中文意思是不是通顺,会不会太长导致界面上显示不全。
除了,有时候一些文本也可能藏在其他XML文件里,比如布局文件(layout目录下的XML)或者其他values-xx
(比如values-en
)目录。我都得大概翻翻,确保没啥遗漏。
我还特别注意了,有些字符串可能是格式化的,比如包含%s
、%d
这样的占位符,这些可不能动,翻译的时候得保留原样。不然程序运行时要替换内容进去,找不到占位符就出错了。
遇到点小麻烦,差点放弃
翻译过程中,也不是一帆风顺。遇到过几个头疼的问题:
- 编码问题:一开始没注意,直接用记事本改,结果保存后重新打包,装到手机上一看,中文部分全是乱码!后来才想起来,得用Notepad++,并且把文件编码设置为UTF-8(不带BOM的格式),这样才行。
- 图片里的文字:有些应用的文字不是写在XML里,而是直接做在图片上了。这就麻烦了,得用图像处理软件(比如PS,我用的是一个免费的GIMP)把图片上的英文抹掉,再P上中文。这个更费劲,得找差不多的字体,调整大小和位置,搞得我眼都花了。
- 硬编码的文本:最头疼的是有些文本直接写在Java代码里了(smali文件里)。这个要改就复杂了,得去啃那些天书一样的smali代码。我尝试改了一两处简单的,复杂的就只能先放着了,不然这工程量太大了,我怕是搞不定。
有几次改完打包测试,一打开就闪退,或者某个功能点进去就报错。这时候就得回头仔细检查是哪里改错了,是不是不小心动了不该动的代码,或者某个XML标签没闭合反反复复好几次,差点没把我给整崩溃。
大功告成,小有成就
经过大概两三个晚上的奋战,总算是把大部分能找到的英文都替换成了中文。图片里的文字也处理得七七八八了。接下来就是一步,重新打包签名。
还是在命令行里,用APKTool,输入打包命令:* b xxx
(xxx是之前反编译出来的文件夹名)。等它执行完毕,会在原来的文件夹里生成一个dist
目录,里面就有个未签名的APK文件。
安卓系统不认未签名的APK,所以还得给它签名。我用的是一个叫APKSigner的工具,或者直接用JDK里带的jarsigner也行。签完名,一个新的、理论上是汉化版的APK就诞生了!
我赶紧把这个汉化版的APK传到我的安卓手机上安装。怀着忐忑的心情点开图标,哈!界面果然变成中文的了!虽然有些地方可能翻译得不是那么完美,有几处硬编码的英文也还在,但大部分功能和菜单都成功显示中文了。那一刻,别提多有成就感了!
虽然整个过程磕磕绊绊,但总算是把这个《家庭的秘密安卓汉化》给搞出来了。主要是自己体验一下,也算是学到点东西。现在用起来顺手多了,也算是没白折腾。
好了,今天就先分享到这儿。这就是我这回汉化安卓应用的整个实践过程。希望能给有类似想法的朋友一点小小的启发。下次再有啥好玩的实践,再来跟大家分享!晚安!