android國際化(多語言)

2021-09-07 03:51:04 字數 3168 閱讀 5871

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...