【Android】Android国际化-阿里云开发者社区

开发者社区> 开发与运维> 正文

【Android】Android国际化

简介:
1. Android程序的国际化
-----------------------


       国际化的英文单词是Internationalization,因为这个单词太长了,有时也简称为I18N,其中的I是这个单词的第一个字符,18表示中间省略的字母个数,而N代表这个单词的最后一个字母。所以,I18N也就是国际化的意思。Android程序国际化,也就是程序可以根据系统所使用的语言,将界面中的文字翻译成与之对应的语言。这样,可以让程序更加通用。Android可以通过资源文件非常方便的实现程序的国际化。
在编写Android项目时,通常都是将程序中要使用的字符串资源放置在res/values目录下的strings.xml文件中,为了给这些字符串资源实现国际化,可以在Android项目的res目录下,创建对应于各个语言的资源文件夹(例如,为了让程序兼容简体中文、繁体中文和美式英文,可以分别创建名称为values-zh-rCN、values-zh-rTW和values-en-rUS的文件夹),然后在每个文件夹中创建一个对应的strings.xml文件,并在该文件中定义对应语言的字符串即可。这样,当程序运行时,就会自动根据操作系统所使用的语言来显示对应的字符串信息了。


官方参考API:http://developer.android.com/training/basics/supporting-devices/languages.html




【Supporting Different Languages】步骤


(a)步骤一  Create Locale Directories and String Files


Once you’ve decided on the languages you will support, create the resource subdirectories and string resource files. For example:


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


At runtime, the Android system uses the appropriate set of string resources based on the locale currently set for the user's device.


For example, the following are some different string resource files for different languages.


English (default locale), /values/strings.xml:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>


Spanish, /values-es/strings.xml:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>


French, /values-fr/strings.xml:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>


(b)步骤二  Use the String Resources
【示例】
// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);


// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);


或者:
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="@string/hello_world" />




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

在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持。比如我们的程序兼容 简体中文、日文、英文、法文和德文,在values文件夹中建立默认strings.xml,再建立 values-zh-rCN(zh表示中文rCN表示简体,类似还有美式英语,奥式英语)、values-ja、values、values-fr和values-de文件夹。(可以用开发工具建:见http://www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章