【Android】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的系統中進行語言切換,所開發的程序也會跟著切換語言。
總結
以上是生活随笔為你收集整理的【Android】Android国际化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android】dip、dp、sp、p
- 下一篇: 【Linux】Linux中at命令详解