讓程序支持語言國際化打洼,這是個基礎(chǔ)知識點,做android開發(fā)的或多或少都知道一些炫惩,只是可能大家在做工作的時候阿浓,可能并沒有實際實踐過,做法大家肯定不陌生芭毙。
在res目錄下建立不同名稱的values文件來調(diào)用不同的語言包,這里可能主要就是記不住對應(yīng)國家應(yīng)該創(chuàng)建的文件夾名字是什么粘咖,以下為參照表:
中文(中國):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
如果我們提供多個values目錄之后瓮下,那么程序運行的時候钝域,會根據(jù)默認(rèn)的Local配置進行相應(yīng)的資源讀取。比如你程序提供了中文和英文的支持例证,那么當(dāng)手機通過設(shè)置,將語言系統(tǒng)更改為英文之后再運行程序,程序就會讀取values-en下的資源党涕。
有些程序在內(nèi)部提供了語言切換功能,主要核心原理是更改Resource對象中的Local變量值膛堤,具體步驟參見:
1.在res下創(chuàng)建多個支持的values目錄,比如values-zh-rCN 绿渣; values-en等
2.在功能清單文件中對要進行切換acitivity 進行配置
android:configChanges="locale"
3.更改Resources中的Local變量
// 應(yīng)用內(nèi)配置語言
Resources resources = getResources();// 獲得res資源對象
Configuration config = resources.getConfiguration();// 獲得設(shè)置對象
DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數(shù):主要是分辨率燕耿,像素等。
config.locale = Locale.ENGLISH; // 英文
resources.updateConfiguration(config, dm);
這樣就可以把程序資源的Local更改為英文了誉帅。
這里要說的一點是:Locale提供了一些常用的數(shù)據(jù)右莱,比如Locale.ENGLISH档插,但是假如你需要泰文的話,這個變量里面并沒有提供可以調(diào)用的晨抡,所以這里需要自己new一個则剃,具體代碼:
Locale locale =newLocale("th","TH");
這兩個的參數(shù)值怎么來的耘柱,主要是通過國家語言代碼忍级,比如中國簡體是zh-TW,泰文是th-TH汛蝙。其他的具體見地址:
http://www.cnblogs.com/linlf03/p/3680454.html
這里有個注意的地方就是朴肺,調(diào)用上述代碼之后,已經(jīng)加載了的界面并不會立即更改為對應(yīng)的語言戈稿,需要重啟已經(jīng)加載了的界面,這個其實跟主題切換的概念幾乎是一樣的鞍盗。
當(dāng)然是應(yīng)該是可以采取一些措施實現(xiàn)并不需要重啟就完成語言和主體的切換。