android語言國際化
A. 如何實現android國際化
android多語言實現必須是將strings.xml放在不同的文件夾目錄下,由安卓系統自動去載入文字資源。Android 中要實現國際化比較簡單,字元串國際化:只要在 res 文件夾下新建對應語言的 values 文件夾就好了。
例如:
1.英語環境下的,文件夾命名為:values-en
2.美國英文環境:values-en-rUS
3.中文環境為:values-zh
4.大陸地區中文環境:values-zh-cn
5.eclipse 下新建 Android 項目時,會在 res 目錄下自動創建一個默認語言環境的文件夾 : values 。
6.當某一個資源沒有在語言環境的對應的資源集合中找到時,就會使用 values 下的資源。若某一個語言環境沒有在項目中定義語言環境,那麼也會使用 values 下的資源。
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
B. 親~怎麼編寫多語言Android手機,墨西哥西語。語言列表中目前沒有。---我是一名做手機開發的小菜鳥。。
新建一個文件夾,命名為values-es-MX,在下面新建string.xml文件,添加你需要進行國際化的語言。希望對你有幫助。
C. Android國際化之多語言(配置及應用內設置)✈️
Android系統通過判斷當前系統的Local配置,來使用對應的strings.xml文件
values-->strings.xml 默認語言(簡體中文)
values-zh-rHK-->strings.xml 繁體中文
values-en-->strings.xml 英語
在Android系統中,系統的配置大都通過 Configuration 來管理,包括strings等等。
onCreate() 中注冊
onDestroy() 中取消注冊
setLanguage() 方法
通過上面的設置,可以實現不重啟APP修改語言的效果
以上只是對Android多語言設置的一些小小的總結,可能有理解不周的情況,歡迎給我留言指出😄
D. Android:應用多語言切換,國際化實現
生成多種語言的string.xml,裡面放置對應的語言,修改配置(Configuration),重啟之後就會載入對應語言的string.xml。
1:在res目錄下,生成對應的語言包,比如英語:
在res目錄下生成了可看到生成了:
<string name="hello">你好</string>
英語:
<string name="hello">hello</string>
之後就可以使用getResource.getString(R.string.hello),這個字元串會載入相對應的配置的語言。
3:修改語言配置
修改語言配置後,需要重新啟動進程,並且殺死進程。
1:有些手機是可以在設置里直接切換語言的,這個也就是Configuration改變。用戶重新設置系統語言導致應用的語言也會重新設置。Configuration改變,如果在Manifest中不設置android:configChanges忽略掉配置改變,Activity會重新創建,那麼我們就可以在Activity的onCreate中,重新修改語言配置。
2:切換語言後,退出應用,重新進來,你會發現又是系統設置的語言。所以需要在Application開啟時,需要再次切換語言配置。
E. Android的國際化語言適配(系統語言適配+APP內部適配)
Android國際化語言適配分為兩種
1.更改手機系統語言後,APP的語言也會跟著變化
2.只改變自己APP的語言,不受手機系統語言的影響,不影響其他APP的語言,可以參考微信的切換語言的效果。
只需要創建不同語言的values即可
具體操作參考 簡單的Android客戶端國際化(語言適配)方案
操作的時候要注意: 當選擇所要切換的語言後,則進行修改Config以及重啟APP,一定要將選擇的語言保存到SP中,且在activity中的oncreate中將SP中存儲的語言取出來重新設置Config,否則當重啟APP後,還是會跟系統語言一樣。
具體操作參考 Android應脊敬明用稿轎程序內部切換語櫻告言及自定義語言
F. Android國際化多語言切換
關於App國際化,之前有講到國際化資源、字元換、布局相關,想要了解的猛戳 用力抱一下APP國際化 。借著本次重構多語言想跟大家聊一下多語言切換,多語言切換對於一款國際化App來講是重中之重,並非難事,但是若要做好也是一件不容易的事情。
當我們做了系統的配置更改,比如說切換了系統導航或者說更改了深色模鄭山式,那麼我們一般的處理是也是要對Application作出處理。
如果項目中有用到ApplicationContext去getString(@StringRes int id)實現載入的提示語,那麼如果只是單純的重啟界面則無法讓當前的提示語跟隨當前切換的語言,所以我們要麼重啟整個應用,要麼對ApplicationContext中的Local也作出相應的更新方可,這里有一點問題,雖然Android N之後updateConfiguration是過時方法,官方給出使用createConfigurationContext代替,但是更新ApplicationContext的Local發現無效使用老版本updateConfiguration正常。
如果你發現你的應用廣播通知欄適配無效,那就是context中的Local在切換語言是並未及時更新Local,這里調試一下便知,如果是Applicaiton注冊的廣播,那麼喊高中多半情況下是沒有更新ApplicationContext的Local所導致的。
多語言適配基本步驟大概就是如此了,下面看一下適配的細節問題。
[圖片上傳失敗...(image-b42d06-1640685147639)]
還有一點Android N之後,手機系統的語言配置選項已經不是單選了,改為一個列表了,具體可以參考手機設置中的語言和輸入法,所以 setLocal(@Nullable Locale loc) 方法建議不要再使用了,我相信很多人還在用,正確念謹的用法應該是 setLocals(@Nullable LocaleList locales) ,需要傳遞一個集合。
當你的應用使用的是androidx.appcompat:appcompat:1.2.0及以上時,BaseActivity中需要實現下面方法。
這套方案目前不在推薦,直接去替換attatchBaseContext()中的context則可,經過測試是完全正常的。
以下則是多語言操作的工具類,現在提供出來,需要的朋友可以自行進行改造。
G. Android應用程序的strings.xml文件中只能存放一些字元串常量信息。
一:是為了國際化,當需要國際化時,只需要再提供一個string.xml文件,把裡面的漢子信息都修改為對應的語言(如,English),再運行程序時,android操作系統會根據用戶手機的語言環境和國家來自動選擇相應的string.xml文件,這時手機界面就會顯示出英文。這樣做國際化非常的方便。