國際化很重要! 就算再有困難,再有挫折,該實施時,也要堅定實現國際化!(7.23 動車劫 溫家寶會見中外記者都堅持有翻譯隨同)
說起Android SDK國際化,通常只需要將界面文字翻譯成不同語言,然後將相應的資源文件放到各種語言特定國際化資源目錄
資源的自適應性 主要指單獨為每一種環境設置資源,例如對480*320 和 854 * 480 兩種分辨率的手機設置兩種XML布局文件.
1. 對於界面的字符串國際化,實際就是為應用程序提供不同語言的字符串, 對於開發人員要做的確是,為保存各種語言的字符串資源建立國際化目錄,然後將相應的資源文件放到這些目錄中, 國際化目錄的規則如下:
資源目錄 + 國際化配置選項
其中資源目錄是指 res 目錄中的子目錄,例如 values,layout等,國際化配置選擇項包含很多部分,中間用 " - " 分隔。例如要實現不同語言和地區的國際化,這些配置選項包括語言代號和地區代號。 表示中文和中國的配置選項是 zh-rCN; 表示英文和美國的配置選項是en-rUS. 表示zh 和 en 表示中文和英文;CN 和 US 表示中國和美國; 前面的r 是必須的,
為了區分地區部分,不能單獨指定地區,但可以單獨指定語言。
步驟:
1. 在res 目錄中建立兩個文件夾: values-zh-rCN 和 values-en-rUS。 並在這兩個目錄中各建立一個strings.xml, 內容如下:
values-zh-rCN 目錄中的 strings.xml 文件
<resources>
<string name="ok">確定</string>
<string name="cancel">取消</string>
<string name="ignore">忽略</string>
</resources>
values-en-rUS 目錄中的strings.xml 文件
<resources>
<string name="ok">OK</string>
<string name="cancel">Cancel</string>
<string name="ignore">Ignore</string>
</resources>
包括values目錄下strings.xml文件,雖然有3 個strings.xml文件,但不會沖突。
2. 其他的資源目錄也可以采用同樣的方式處理語言和地區的國際化,例如在res 目錄中建立兩個目錄: drawable-zh-rCN 和 drawable-en-rUS,並在這兩個目錄中分別放一個flag.jpg, 然後可以正常引用這個圖像資源, 代碼:
<ImageView android:id="@+id/iv" android:layout_width="100dp" android:layout_height="80dp" android:src="@drawable/flag" />
如果當前的語言環境未找到相應的資源,如德文,Android 系統會根據具體的資源做出相應的處理,對於字符串資源,如果該資源不存在,會顯示該資源在R類中生成的ID值(以十進制顯示)
可以從如下地址獲得完整的語言和地區的配置選項:
獲得語言配置選項 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
除了可以使用資源目錄的方式外,第二種方式是: 使用 Locale 對象獲得當前的語言環境, 然後根據語言環境決定讀取哪個資源文件中的資源,使用這種方式可以將資源文件存放在 assets 目錄 。要注意,這裡的CN 和 US前面未加前綴 r.代碼也在ch13_i18n中,設置title會隨著當前語言環境的變化而變化
示意圖
具體代碼參見 ch13_i18n 工程