572
技術社區[雲棲]
Android代碼資源的國際化
internationalization (國際化)簡稱 i18n,因為在i和n之間還有18個字符,localization(本地化 ),簡稱L10n。
一般用語言_地區的形式表示一種語言,如 zh_CN, zh_TW.
各國語言縮寫 https://www.loc.gov/standards/iso639-2/php/code_list.php
國家和地區簡寫 https://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
國家_地區語言速查表:https://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的係統中進行語言切換,所開發的程序也會跟著切換語言。
- Resources resources = getResources();//獲得res資源對象
- Configuration config = resources.getConfiguration();//獲得設置對象
- DisplayMetrics dm = resources .getDisplayMetrics();//獲得屏幕參數:主要是分辨率,像素等。
- config.locale = Locale.SIMPLIFIED_CHINESE; //簡體中文
- 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裏的內容。
原文:https://www.cnblogs.com/bluestorm/archive/2013/04/01/2993554.html
最後更新:2017-04-03 18:51:45