Android代码资源的国际化

   internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。

一般用语言_地区的形式表示一种语言,如  zh_CN, zh_TW.

各国语言缩写  http://www.loc.gov/standards/iso639-2/php/code_list.php

国家和地区简写 http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

国家_地区语言速查表:http://www.cnblogs.com/Mien/archive/2008/08/22/1273950.html

 

常见的有:

zh_cn: 简体中文

zh_hk: 繁体中文(中国香港)  

zh_tw: 繁体中文(中国台湾地区)

en-hk: 英语(香港)

en_us: 英语(美国)

en_gb: 英语(英国)

en_ww: 英语(全球)

ja_jp: 日语(日本)

ko_kr: 韩文(韩国)

      把UI中的字符串存储在外部文件,通过代码提取,这是一种很好的做法。Android可以通过工程中的资源目录轻松实现这一功能。

      你一创建工程,则在工程的根目录会创建一个res/的目录,目录中包含所有资源类型的子目录。其中包含工程的默认文件比如res/values/strings.xml,用于保存字符串值。

 

创建区域设置目录及字符串文件

          为支持多国语言,在res/中创建一个额外的values目录以连字符和ISO国家代码结尾命名,比如values-es/是为语言代码为"es"的区域设置的简单的资源文件的目录。Android会在运行时根据设备的区域设置,加载相应的资源。

 

详见Providing Alternative Resources

若决定支持某种语言,则需要创建资源子目录和字符串资源文件,例如:

 

YouProject/        res/        values/        strings.xml        values-es/        strings.xml        values-fr/        strings.xml

 

添加不同区域语言的字符串值到相应的文件。

Android系统运行时会根据用户设备当前的区域设置,使用相应的字符串资源。

例如,下面列举了几个不同语言对应不同的字符串资源文件。

英语(默认区域语言),/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>My ApplicationHello World!

法语,/values-fr/strings.xml:

 

 

 

<?xml version="1.0" encoding="utf-8"?>Mon ApplicationBonjour le monde !

使用字符资源

 

我们可以在源代码和其他XML文件中通过元素的name属性来引用自己的字符串资源。

 

 

在源代码中可以通过R.string.语法来引用一个字符串资源,很多方法都可以通过这种方式来接受字符串。

例:

// 从资源文件通过id获取你要的string资源String tv_title= getResources().getString(R.string.title);TextView textView = new TextView(this);textView.setText(tv_title);

然而这是我们传统的处理方法,现在我们有了一个AndroidStudio的新插件,让我们一键生成索要使用的资源文件和目录,并且里面的语言也是相对应的国际化语言,是不是方便很多,我们就不再需要自己去生成目录和文件,并且拿词典去翻译某一段文字(有时翻译的还不对)。

         听起来是不是很爽的感觉,当然一般的app是不要实现语言国际化的,但是要实现也是个很大的工程,所以我们通过一键实现语言国际化是不是很给力。

一键实现语言国际化

  我们要装的插件是:AndroidLocalizationer,从github上down后,集成到studio里面就好了,看图:

把下好的zip包解压,里面有个同名的压缩包就是我们的插件包。

这样我们就把插件集成好了。然后找到string.xml--->右键————》

这时我们就可以勾选自己要实现的国家的语言了。(这几十种语言应该涵盖了所有的吧,猜的

然后我们就来看下成果》》》》》

看见这几面旗子是不是感觉很开心啊,然后我们来看下strings.xml的内容,果然不负我望:

strings.xml

 

    MyZhihuapp    Hello world!    Settings    multidownload    imageData

再看下values-ja (小日本鬼子的 ) strings.xml

 

 

   MyZhihuapp   ハローワールド!   設定   multidownload   imagedata を扱う

接下来看下values-ko(韩国绊子的)strings.xml

 

 

MyZhihuapp전 세계 여러분 안녕하세요!설정multidownloadimageData

哈哈,说多了也没有意思,就是一个studio的插件,然后主要也是给大家看看效果,感觉还是为开发带来了很多的便利。个人感觉唯一不足的就是:我们改了values/string.xml里面的内容其他语言国际化语言不会自动重新编译(或clean重新编译),要是这样都实现了就更完美了。。。

 

新发现(以上插件不能用了,现提供AndroidLocalizePlugin实现一健国际化)

鉴于这个插件现在不能用了,有了新的插件可以取试下,可能有点小问题(不是我写的)但是测了一下好像是可以的:

项目地址:AndroidLocalizePlugin

 

功能

  • 支持 104 种语言。
  • 无需申请 KEY。
  • 一键生成所有翻译文件。
  • 支持对指定的文本不参与翻译。

预览

安装

在线安装

  • 第一步:打开 AndroidStudio 或 IDEA。
  • 第二步:打开 Preferences -> Plugins -> Browse repositories。
  • 第三步:搜索 AndroidLocalize 并安装,然后重新启动 IDE。

本地安装

  • 第一步:下载 AndroidLocalizePlugin.zip 文件。
  • 第二步:打开 AndroidStudio 或 IDEA。
  • 第三步:打开 Preferences -> Plugins -> Install plugin from disk。
  • 第四步:选择 AndroidLocalizePlugin.zip 文件安装,并重新启动 IDE。

使用

  • 第一步:选择 values/strings.xml 文件。
  • 第二步:右键选择 Convert to other languages。
  • 第三步:勾选上需要翻译的语言。
  • 第四步:点击 OK。

 

更多相关文章

  1. android 源码编译导入library project
  2. APK的Platform签名的权限
  3. Android通过URL获取网络数据
  4. Android(安卓)build过程中already defined by packages/apps 的
  5. Mac android studio升级时提示 :Connection failed. Please chec
  6. Android自定义按钮样式
  7. Android存储字符串数据到txt文件
  8. [置顶] cocos2d-x 2.x版本之win32 window移植android 环境搭配
  9. Android(安卓)Telephony主要模块及功能

随机推荐

  1. android几种开源项目源码地址
  2. Android(安卓)布局之RelativeLayout
  3. android View的快照与屏幕的截屏
  4. Android(安卓)Fire Project(1)Recall Env
  5. Android(安卓)Screen Monitor抓取真机屏
  6. Android(安卓)P图形架构之三屏异显实现
  7. 新说android launch mode
  8. Android单元测试
  9. RelativeLayout重要属性
  10. Android(安卓)Map开发基础知识学习笔记