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: 韩文(韩国)

 

在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持。比如我们的程序兼容简体中文、英文,在values文件夹中建立默认strings.xml,再建立values-zh-rCN文件夹。

 

在每个文件夹里放置一个strings.xml,strings.xml里是各种语言字符串。如果涉及到参数配置类xml文件夹名称也要改成xml-zh、xml。这样在android的系统中进行语言切换,所开发的程序也会跟着切换语言。

 

Java代码 
  1. Resources resources = getResources();//获得res资源对象  
  2. Configuration config = resources.getConfiguration();//获得设置对象  
  3. DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。  
  4. config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文  
  5. resources.updateConfiguration(config, dm);  

-------------------

ABOUT:

通常国际化我们只要在res/目录下在重新定义values-国家编号,如values-zh-rCN简体汉语,values-zh-rTW繁体,values-jp日语等。

(配置选项包括语言代号和地区代号。 表示中文和中国的配置选项是 zh-rCN; 表示英文和美国的配置选项是en-rUS.  表示zh 和 en 表示中文和英文;CN  和 US 表示中国和美国;  前面的r 是必须的)

  目录结构如下图所示:

  这里我只在values-zh-rCN作了改动,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, ResourceDemo!</string>

<string name="app_name">ResourceDemo</string>

<string name="land">这是横屏模式.</string>

<string name="port">这是竖屏模式.</string>

</resources>

  我们运行程序之前,把手机语言改成中文,在settings(设置)->language & keyboards(语言与键盘)目录下,选择简体中文,如下图所示:

  最然在运行上述工程,效果如下:

  这时候我们应用的显示内容就为中文了,而不去显示values/strings.xml里的内容。

posted @ 2013-04-01 15:19  petercao  阅读(16735)  评论(0编辑  收藏  举报