1. 很大程度上,為什麼我們能如此方便的實現國際化、解析度匹配等?
主要就是得益於 android 中這種獨特的資源管理方式。程式設計師的**可以不直接和資源發生關係。android 中,我們通常通過 r 檔案提供的索引來間接的引用某乙個資源。而如何維護資源索引和真正的資源之間的關係,這個活,卻是 android 系統來做的。
這裡面就可以大作文章了不是麼?
我說過,最了解使用者手機的,不是使用者也不是程式設計師,而是android作業系統。它最了解使用者當前使用的是什麼語言,最了解使用者當前手機的解析度是多少,了解電量,了解記憶體情況...等等。
既然你對自個的情況這麼了解,為什麼不自己把所有能完成的事情都做了?不要麻煩程式設計師好吧?好的,所以 android 在這方面做得非常優秀。
基於這個角度,我們要轉換的觀念為:有可能,r 檔案中的索引,並非是和資源一對一的。例如我們以前認為它就一定是對應了一張,對應了乙個字串,對應了乙個布局檔案。
而很可能,android 其實會根據使用者當前使用的環境對應幾套方案:例如本文所講的主題,從國際化角度,可能對應中文環境方案,英文環境方案?那麼,這時候 r 檔案對應的這個資源便不確定起來,當我們通過 r 檔案呼叫乙個資源顯示在視窗上時,android 作業系統會自動根據使用者當前的環境,而選用最合適的(這個挑選過程卻是透明的)。
程式設計師可以干預的是:英文環境到底對應哪套方案?中文環境對應到底哪套方案?
ok。這就簡單了。
2. android 中要實現國際化比較簡單。
字串國際化:只要在 res 資料夾下新建對應語言的 values 資料夾就好了,
如,英語環境下的,資料夾命名為:values-en
美國英文環境:values-en-rus
中文環境為:values-zh
大陸地區中文環境: values-zh-cn
在 eclipse 下新建 android 專案時,會在 res 目錄下自動建立乙個預設語言環境的資料夾 : values
當某乙個資源沒有在語言環境的對應的資源集合中找到時,就會使用 values 下的資源。
若某乙個語言環境沒有在專案中定義語言環境,那麼也會使用 values 下的資源。
3. 國際化
同理。
在 res 下新建 drawable-zh 資料夾,存放中文環境下的
新建 drawable-en 作為英語環境下的
在 eclipse 下新建 android 專案時,會在 res 目錄下自動建立三個預設語言環境的資料夾:
drawable-hdpi
drawable-ldpi
drawable-mdpi
分別用於存放高、中。低解析度的。android 系統會根據手機的解析度,而自動從不同的對應的某乙個資料夾下去載入。
同樣,它們也可以國際化,命名規則如:
drawable-zh-hdpi
drawable-en-ldpi
drawable-en-rus-mdpi
使用。在 xml 中需要使用到的地方用表示式: @drawable/icon
android多國語言資料夾檔案彙總如下:
中文(中國):values-zh-rcn
中文(台灣):values-zh-rtw
中文(香港):values-zh-rhk
英語(美國):values-en-rus
英語(英國):values-en-rgb
英文(澳大利亞):values-en-rau
英文(加拿大):values-en-rca
英文(愛爾蘭):values-en-rie
英文(印度):values-en-rin
英文(紐西蘭):values-en-rnz
英文(新加坡):values-en-rsg
英文(南非):values-en-rza
阿拉伯文(埃及):values-ar-reg
阿拉伯文(以色列):values-ar-ril
保加利亞文: values-bg-rbg
加泰隆尼亞文:values-ca-res
捷克文:values-cs-rcz
丹麥文:values-da-rdk
德文(奧地利):values-de-rat
德文(瑞士):values-de-rch
德文(德國):values-de-rde
德文(列支敦斯登):values-de-rli
希臘文:values-el-rgr
西班牙文(西班牙):values-es-res
西班牙文(美國):values-es-rus
芬蘭文(芬蘭):values-fi-rfi
法文(比利時):values-fr-rbe
法文(加拿大):values-fr-rca
法文(瑞士):values-fr-rch
法文(法國):values-fr-rfr
希伯來文:values-iw-ril
印地文:values-hi-rin
克羅里亞文:values-hr-rhr
匈牙利文:values-hu-rhu
印度尼西亞文:values-in-rid
義大利文(瑞士):values-it-rch
義大利文(義大利):values-it-rit
日文:values-ja-rjp
韓文:values-ko-rkr
立陶宛文:valueslt-rlt
拉脫維亞文:values-lv-rlv
挪威博克馬爾文:values-nb-rno
荷蘭文(比利時):values-nl-be
荷蘭文(荷蘭):values-nl-rnl
波蘭文:values-pl-rpl
葡萄牙文(巴西):values-pt-rbr
葡萄牙文(葡萄牙):values-pt-rpt
羅馬尼亞文:values-ro-rro
俄文:values-ru-rru
斯洛伐克文:values-sk-rsk
斯洛維尼亞文:values-sl-rsi
塞爾維亞文:values-sr-rrs
瑞典文:values-sv-rse
泰文:values-th-rth
塔加洛語:values-tl-rph
土耳其文:values--r-rtr
烏克蘭文:values-uk-rua
越南文:values-vi-rvn
springboot多語言國際化
實現localresolve介面,定義messageservice bean 自定義messages服務,指定國際化配置路徑 return bean name messagesource public resourcebundlemessagesource getmessageresource co...
iOS APP多語言開發(國際化)
static dispatch once t oncetoken dispatch once oncetoken,objc setassociatedobject nsbundle mainbundle bundle,language nsbundle bundlewithpath nsbundle...
springboot多語言國際化配置
locale l new locale en us en表示國家,us表示語言 需要乙個常量檔案,或者列舉檔案關聯properties檔案中的key 列舉 addfail 10000,msg.addfail properties msg.addfail add failed 工具類方法實現方法 an...