代码改变世界

Android应用多语言适配工作

2013-03-20 21:53  wiikii#  阅读(2046)  评论(0编辑  收藏  举报

为了使我们所设计出来的应用能够让更多地区的朋友用上,就需要为应用适配各种当地语言,这就是我们所说的多语言适配。

对于Android平台来说(本文涉及到的知识都是基于Android4.0及其以上平台),其多语言适配已经做了大部分工作,对各种语言包的管理及切换工作都不需要自己在代码中做修发,只要应用程序按照Android规范来,基本上适配工作不需要多少时间。

在你的项目目录下,有一个 values目录(这个目录是获取相关字符,数据的默认目录,也就是当找不到最适合的资源时,就会使用这个目录下的资源),如下图所示:

这个目录下面的strings.xml,arrays.xml等是以XML文件格式将程序中用到的所有字符串保存起来的文件。该文件夹下的字串基本上是以英文保存,当然也可以使用其它语种。

当我们要适配一种语言时以简体中文(zh-rCN)为例,我们首先需要建立一个文件夹,其命名规则是values-##-r**,其中##表示语言代号(language codes),**表示国家代号(country codes),也可以只有语言代号。Android的一些开发环境(以Intellij IDEA为例)提供了方便的创建此类文件夹的方法:

  • 在res上右键新建选择Android resource directory(也可以选择直接创建资源文件)

          

  • 在弹出的对话框中resource type选择values,将Language添加到右边,输入"zh",由于中文是分简体中文跟繁体中文,是分地区的,所以也需要将Region添加到右边,输入"cn"

         

         

  • 建好后,会在res目录下生成一个values-zh-rCN的文件夹。
  • 接着在这个文件夹下新建相关的XML文件(如strings.xml,arrays.xml等),其中strings.xml中的string项要跟values目录下的string项名字一样,只是字符串不一样(values==>strings.xml中字串是英文,而values-zh-rCN==>strings.xml中字串则是简体中文)这就初步完成一个简体中文的资源布署工作。

                                 

 

                   

当然,我们这样建文件夹麻烦点,我们也可以直接建个文件夹,文夹名字取对就行。

到目前,运行程序,可以看到在切换语到到简体中文时,我们看到的界面上的文字是显示简体中文的;切换语言到其它语言,我们看到应用的界面是默认语言英文。

对于Language Code可以查看http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes文档。

对于Country Code可以查看http://en.wikipedia.org/wiki/ISO_3166-1文档。

 

适配过程基本上就上面的步骤。最大的问题还是在翻译上面。

一些语言翻译出来可以会比原来的长,这就需要布局中的控件做好调整或者将翻译精简些。

一些特殊的从右至左的语言如阿拉伯语,基本上在布局文件上面下工夫就行,因为Android的TextView跟EditView都是会根据当前的语言来选择显示方式的,适配过程中不需区别对待。

 

后续补充完善,仅供参考。