APK文件嵌入式多语言汉化教程

作者:Soyu Zom 2010.9.30

  继上一篇汉化教程——《APK文件简易汉化教程》之后,很久没有写教程了。这里为大家带来了全新的汉化教程,希望对广大汉化爱好者们有所帮助!

众所皆知,很多国外的Android程序支持多语言,而且会根据系统语言而自动选择适当的。为用户带来了很大的方便,不需要单独选择下载对应的地区语言。

为了适应环境,如以前那样针对性的汉化,已经不适合大势所发展了。以前的汉化我们姑且称之为“强制性汉化”吧!

而下面为大家介绍的另一种汉化方式,建立在反编译基础上。当然我们不探讨什么修改编译程序,我们只需要汉化,我们要的是中文。

这种汉化方式,是在APK程序支持原语言的基础上,加入简体中文以及繁体中文(包括图片文字)。而且不会破坏程序的原始结构,做到运行稳定,外观完整。同时还可以根据Android系统语言的改变而自动切换程序语言的汉化效果。我们就称之为“嵌入式汉化”吧。相信大家也没太多意见吧!

  OK!介绍完毕,下面开始实际操作。

  本教程网页地址:http://idoog.me/apk_hh/
  本教程PDF文件:http://idoog.me/apk_hh/apk-hh2.pdf
  本教程软件下载:http://angtalk.com/a/tool/201009/1192.html
  上一篇汉化教程:http://idoog.me//soft/APK-hh.htm

  汉化交流Q群:8023666   新浪微博交流群 http://t.cn/hGuTyT



使用工具

  1.解压缩工具 (很有用处)
  2.反编译工具 (这是必须的)
  3.图像处理工具 (小小的掌握图像处理基础)
  4.APK签名工具 (你懂的)



工具的选择

  虽然,有些软件利用apk反编译工具可以自动解包,但是有可能会不完整,而且就算完整解压后也会破坏原始文件,为了达到更稳定的汉化效果,所以我们必须有一个解压缩工具,一般人会使用WinRAR,但是我不得不说:“这个就不推荐了。”推荐大家使用【7-Zip】,为啥?就是他用起来顺手,对APK压缩和解压缩很合适。

反编译工具,众望所归,选择【AapTool】。不为什么,目前就只知道它能简单的直接的反编译APK文件。

图像处理工具,不跟大家扯什么PS了,就介绍大家使用最容易掌握的【Fireworks】吧。被Adobe收购后,感觉不顺手了,不过还是比较简单的。没有图像处理基础的童鞋可以下载旧的第八版(Fireworks 8)的,很简单容易上手。

至于选择它还有一个重要的原因:PNG图片就Fireworks的专用格式,仅此一家,别无分号。当然PS也支持PNG,不过没它强。它也是大名鼎鼎的网页制作三剑客之一。

签名工具,这里大家都知道。当然我也为大家提供一个简单的签名工具。



反编译APK程序

  首先我们下载一个APK反编译工具【ApkTool】下载地址:

http://code.google.com/p/android-apktool/

至于执行命令我就不多解释了,简单的就是:

java -jar apktool.jar d [文件名.apk] [反编译后文件夹]

有人说要把文件解压到Windows系统文件夹里。这里就不那么麻烦了。直接放到一个文件,把你要反编译的APK文件也房间进。然后打开CMD 找到该目录直接执行命令就可以了。。

  如果你觉得很麻烦,那么就下载我重新修改的一个简单的工具吧,下载地址:

http://angtalk.com/a/tool/201009/1192.html




  操作方式根据提示就可以了,工具上已经详细说明了。




本教程我就直接用这个简易工具操作了,节约时间,低碳环保,利国利民。。。

以下实例教程我选择了含图片文字以及多语言的谷歌图片搜索利器 【Google Goggles v1.2】。

注意,为了方便以后操作,我们要保存一份备份。这是汉化者必须养成的一个习惯,因为汉化的过程中难免非出错。。

首先我们直接用7-zip解压apk文件,点击Goggles.apk文件右键,选择:解压到“Goggles\”




然后,把【goggles.apk】命名为【123.apk】,拉到【Goggles】文件夹里面。

接着,打开APK反编译及编译工具,浏览找到【Goggles】文件夹,点击安装,解压完后会弹出黑色CMD命令符窗口,输入数字:1 【然后敲回车】,开始反编译了:




反编译完成后,打开【Goggles】文件夹,我们会看到一个名为【APK】的文件夹,这里面就是反编译后所得到的文件了:






翻遍后的文件




打开【APK】文件夹,会看到里面的文件跟外面的差不多,不过其实格式已经不同了。里面的XML文件可以直接用记事本编辑,只是普通的文本格式。其中【smali】文件夹里面是classes.dex文件反编译过来的,里面的文件同样可以用记事本类工具编译。【res】文件夹是嵌入式汉化得重点目标,其他的文件和文件夹我们就不用理会它了。

对于【classes.dex】文件的汉化比较麻烦要一点点的查找词条。本来拜托了 汉化浪子 兄弟编写一个专门的汉化工具的,谁知道,那个闷骚小子弄了一半罢工了。如果必须要汉化得话,我们只能用高级的【文本编辑器】查找了,这里推荐使用【Notepad++】可以直接搜索整个文件夹里的文件,异常强悍。

下面我们打开【res】文件夹看看:




哈哈,那么多文件,刚开始接触的童鞋应该会有点晕,没关系我为大家介绍一下。。

drawable】里面主要是放图片之类的东西,【layout】是软件的主体文件,包含框架界面,其中很多软件要去除广告的代码也在里面。【values】这个我们嵌入式汉化的重点对象,它里面包含的就是界面语言,这是软件的主引导语言,以前“强制性汉化”就是汉化这个文件家里面的文件,当然这次我们不能动它,只能利用它。。。

而,其他文件夹包含“values”名称的都是语言文件夹。我们看到最后三个,【values-zh-rCN】、【values-zh-rHK】、【values-zh-rTW】就是简体中文、台香港繁体和湾繁体。其中香港和台湾用的是一样的。如果你汉化得时候喜欢弄些地区语言,也可以分别处理一下。

看到这里大家应该注意到了,很多软件反编译后,不包含这三个文件夹,就是说明他没有中文。而“嵌入式汉化”,就是要为它重新创建这三个文件夹,回编译后,Android系统就能自动识别了。



文本的汉化

  进入【res】文件夹后,如非必要我们可以删掉多余的语言文件夹,只留下中文就可以了。至于【values】就是默认的英文了,不能删除。如果我们反编译的文件不包含其他语言,只有【values】一个语言文件夹,那么我们就直接创建两个文件一个简体一个繁体,如:【values-zh-rCN】、【values-zh-rTW】,一般的ROM所说的繁体不是香港繁体,而是台湾繁体,所以香港繁体文件夹可以不创建。

然后我们打开【values】文件夹,可以看到里面有好几个xml文件。




而,其中主要的是【arrays.xml】和【styles.xml】:
arrays.xml】是选项菜单弹出的复选项;
styles.xml】是主界面和菜单的语言索引。

其它一些是界面颜色配置相关的文件,可以不理他,当然有些个别的APK文件,也有另外一些文件要汉化,如果需要的话我们在选择上它。

那么,我们把这两个文件复制到中文文件夹里面去。接着就可以直接用【编辑器】打开开始汉化了,可以使用记事本,我比较喜欢【EditPlus】这个编辑器。


其中有些数字 或者无法汉化的词条,可以直接删掉,保留可以汉化的就可以了。如下图:




汉化完成后,最重要的是,要保存编码方式为:UTF-8 ,注意不要加BOM

对于繁体,我们可以用相关工具,直接从简体转换成繁体就可以了。



图文的汉化

下面讲讲图片内文字的汉化吧!很多软件都包含图片文字按钮之类的。所以我们汉化时,也需要对其进行处理。

对于【Goggles】也有很多按钮和介绍图片都是包含文字,打开【drawable】看看:




当然,对于图片我们也能实现多语言汉化,图片同样也可以做一个引导文件夹,Android系统也会自动识别。

这里命名有点不同,由于很多软件支持高清屏和普通屏,比如G1N1屏幕的大小规格是不一样的,软件的图片清晰都也有要求。其实无论什么屏幕我们都可以不用理会,直接根据命名规则命名就可以了。比如【drawable】文件夹,我们复制一个出来然后在“drawable”后面加入“-zh-rCN”变成【drawable-zh-rCN】就可以了,如果是【drawable-hdpi】文件夹同样在“drawable”后面加,改成【drawable-zh-rCN-hdpi】,依此类推,繁体也是这样命名,如图:




然后,删除中文图片文件夹里面不含文字的图片,接着我们就可以开始做图片汉化处理了。

运行图像处理工具【Fireworks】打开要处理的图片,如:




这种图片比较简单,只有白色底色,直接用画笔(白色),涂上去就可以了。其实也可以直接选取然后删除,不过前提是要建立一个白色底色图层,或者,导出的时候添加一个白色底色。不然导会有透明框框,很难看。当然,如果遇到有透明背景的图片就不能这样操作了,还是要用白色画笔涂抹掉。

这里要注意一点,图片处理完成后,不要直接保存,要使用导出,然后覆盖原图,或者导出到指定文件夹就可以了。

如果处理的图片含多颜色或者渐变颜色的背景,就是比较复杂的背景图片,为了保持原汁原味。可以使用【图章】工具,如图




【图章】的使用方式是,按键盘Alt ,鼠标右键点击一下选择起始位置,然后松开键盘,在旁边点击一下,就是覆盖位置。一般距离拉得越接近越相似。这也是PS的祛斑,去痘痘必备工具。

处理的时候把图片百分百比放大点,这样处理的工艺更好。

注意,要配合Alt键多选取和多覆盖,熟练后就很简单了。




去除掉英文字后,直接点击【文本】工具,在原位置添加上中文,然后打开编辑窗口右下角的【滤镜】做一下特效处理,如发光,阴影之类的。




处理后效果




处理完后,直接【导出】覆盖到原来的文件,或者导出到别的地方。。

这里我们就处理完图片了。

更加详细的方法可以上网上找找图片处理教程,有什么不明白也可以Q我。

欢迎加入我们的汉化交流群:8023666



回编译APK文件

OK,已经汉化完毕,下面重点说说打包的问题!

在这之前,我们还要检查一下,文本文件是否保存正确,是否把文本编码方式保存为:UTF-8 。检查图片文件夹名称是否命名正确,如,【drawable】对应【drawable-zh-rCN】,【drawable-hdpi】对应【drawable-zh-rCN-hdpi】,看看文件夹内是否有没处理好的图片。

检查完毕,同样打开【APK反编译及编译】工具,找到APK文件所在的上一级路径:




安装后,弹出 黑色窗口后,输入:2 【敲回车】




反编译完成后,那么就可以打包了,虽然回编译后,也生成了一个APK文件。但是,这个文件不一样定有用,因为很多APK程序内的文件不能完全被反编译出来,直接用回编译成功APK文件会丢失很多东西。所以我们需要手动打包,并签名。

那么,我们回到打开的【Goggles】文件夹,找到【123.apk】,右键:用7-Zip打开。






删掉,文件里原来的签名文件夹【META-INF】,这个先放一边。

打开,回编译的文件夹,位置在.APK\build\apk 。找到【resources.arsc】文件,把它拉到刚刚打开的【123.apk】内,替换原文件。

然后再打开 .APK\build\apk ,就会看到我们创建的图片文件夹名称改变了:




  文件夹的名称,地区简称前面的小写字母 r 没了。就这几个文件,把它们拉到,123.apk文件的【res】文件夹里面去。

之所以这样打包前面也说了,主要是反编译工具不能完全反编译所有文件,同时也排除了,其他不稳定因素。总之我们只要把汉化后的文件替换掉就可以了。

下面我们就可以签名了。当然之前说了,会提供一个更加简单的自动前面工具给大家。这里先感谢 汉化浪子 老兄编写的此工具。




为什么说它更加简单,因为可以直接把apk文件直接拉进去就可以了,然后签名后方的【目标】位置。而点击【浏览】是用来批量签名的。




注意,被签名文件,和签名后的文件不能放在同一个位置。。

签名完后就可以直接安装了,测试了。。。



说在最后

由于最近时间比较紧,这个教程就写到这里了。如果有什么补充,过几天我修改一下。。

相关工具可以到这里下载:http://angtalk.com/a/tool/201009/1192.html

同时欢迎大家加入汉化交流QQ群:8023666
  汉化交流Gtlak群:[email protected]