Android國際化(一)語言、國傢/區域代碼

當你在開發Android應用時或Android系統時,如果希望自己的產品在全球或多國上市進行銷售時,那麼國際化的工作必不可少。Android系統的國際化需要在應用所在目錄res文件夾下建立針對不同語言或地區的values文件夾,那麼具體應該怎樣進行命名,最終結構又是怎麼樣的呢?
例:
AndroidDemo //應用名稱
     |
     |_____res //Android應用資源根目錄
        |
        |_____values
               |_____ strings.xml
               |_____ colors.xml
               |_____ dimens.xml
               |_____ styles.xml
        |
        |_____values-zh-rCN //漢語
               |_____ strings.xml
               |_____ colors.xml
               |_____ dimens.xml
               |_____ styles.xml
        |_____values-de //德語
        |
        |…….

查看AndroidAPI,values可以支持很多屬性,

此處我們隻針對values後添加語言,國傢/區域代碼的情況進行說明
values-zh-rCN:values固定部分,zh:表示語言代碼,rCN:表示區域代碼,其中r為固定保留值。
Android中的語言代碼規范遵循的是ISO639-1,區域代碼遵循的是ISO3166-1
以下我們對ISO639-1及ISO3166-1標準進行一個簡單說明:
1)ISO639-1
從命名中我們也可直接看出ISO639-1是ISO 639國際標準的一部分。ISO639是ISO組織為各語言制定的國際標準。ISO639長期的演變過程中一共出現瞭6個部分,分別為:ISO639-1,ISO 639-2,ISO639-3,ISO 639-4,ISO639-5,ISO 639-6。

2)ISO3166-1
同樣ISO3166-1也是ISO3166國際標準的一部分。ISO3166是ISO組織針對國傢和地區代碼而制訂的國際標準。ISO3166一共有三部分組成:ISO3166-1,ISO 3166-2,ISO3166-3。  www.aiwalls.com

*註意:
在java.utils.Locale.java類中有如下一段註釋:
 * <p>Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language
 * code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This
 * rewriting happens even if you construct your own {@code Locale} object, not just for
 * instances returned by the various lookup methods.
以下幾種語言使用時,Android與ISO 639-1有所有區別,主要是由於歷史問題引起的,要特別註意
 語言中文 語言英文  ISO 639-1   Android
 希伯來語   Hebrew             he              iw
 印尼語      Indonesian        id                in
 依地語      Yiddish               yi                ji
values-he 等價 values-iw
values-id  等價 values-in
value-yi 等價 values-ji
以上三個為物殊情況,其它語言嚴格遵循ISO 639-1規范

 作者:ITMagic_Jack

發佈留言