android多語言實現(xiàn)必須是將strings.xml放在不同的文件夾目錄下,由安卓系統(tǒng)自動去加載文字資源。
目前創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、順德網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1.Android
中要實現(xiàn)國際化比較簡單,字符串國際化:只要在
res
文件夾下新建對應語言的
values
文件夾就好了。
例如:
英語環(huán)境下的,文件夾命名為:values-en
美國英文環(huán)境:values-en-rUS
中文環(huán)境為:values-zh
大陸地區(qū)中文環(huán)境: values-zh-cn
2.eclipse
下新建
Android
項目時,會在
res
目錄下自動創(chuàng)建一個默認語言環(huán)境的文件夾
:
values
。
3.當某一個資源沒有在語言環(huán)境的對應的資源集合中找到時,就會使用
values
下的資源。 若某一個語言環(huán)境沒有在項目中定義語言環(huán)境,那么也會使用
values
下的資源。
這篇文章只針對后臺返回的數(shù)據(jù), 本地數(shù)據(jù)除外
我們發(fā)送網(wǎng)絡請求的時候, 帶一個語言類型參數(shù), 例如 map.put("language", "ZH"), 我們需要什么語言就傳什么語言類型, 正常接收返回值就可以了.
這樣做的好處:
①. 對于android端, 新增、修改、刪除語言 時也只需改變一個字段的值即可, 這個字段可以使用接口來控制值, App完全可以不用任何修改, 靈活性較高.
②. 對于整個項目而言: 前端("android", "IOS", "小程序", "公眾號") 等多個端, 完全無需做任何判斷, 只需后臺處理好即可, 總體可以節(jié)約不少時間.
后臺把所有的語言數(shù)據(jù)一起返回 , 可能出現(xiàn)如下格式:
同行的人看到了肯定會說: 叫后臺改成第一種方式啊.
如果是項目剛剛開始開發(fā), 可能比較好改.
我碰到的情況是: 一開始項目沒有做android端, 后臺和web端已經(jīng)上線了不知道多少個版本了, 反正就是后臺架構(gòu)已經(jīng)確定了, 這個時候改成本會比較大. 只能自己處理了.
這個時候處理方式:
① 如果按照原來的方式: GsonFormat.如下圖:
這樣是可以解析出來的, 看起來項目也能正常運行, 但是每個接口都這么做的話, 維護起來難度太大了, 項目越大越難維護 , 例如:新增一種語言, 竟然要全局大改. 有100個接口就要改100個實體類, 等等.
②. 特殊處理
思考: 有什么辦法可以和第一種方式一樣, 修改一個參數(shù)就可以全局改變語言?
觀察: 共同點: 多語言的實體類里面都會有 變量名為"ZH" "EN" 的對象 , 對象不確定類型, 這個時候想到用泛型. 于是有下面的寫法:
我們的實體類都有這個特性, 所以直接繼承即可.
解析
解析數(shù)據(jù)類型2
特殊處理步驟:
①. 封裝好多語言基類LanguageBeanT
②. 多語言實體類繼承LanguageBeanT
③. 獲取多語言實體數(shù)據(jù)時, 要用bean.get()獲取對象.
好處
①. 增刪改語言, 只需在基類LanguageBeanT修改即可, 其它地方完全不需要修改.
②. 切換語言時: 只需賦值給languageType即可.
③.可切換回方式1 (網(wǎng)絡請求的時候, 帶一個語言類型參數(shù)) , 只需languageType = "" 即可.
封裝好以后, 即使后臺要重構(gòu), 使用方式1處理多語言, 我們也只需修改一個字段即可.
Android系統(tǒng)通過判斷當前系統(tǒng)的Local配置,來使用對應的strings.xml文件
values--strings.xml 默認語言(簡體中文)
values-zh-rHK--strings.xml 繁體中文
values-en--strings.xml 英語
在Android系統(tǒng)中,系統(tǒng)的配置大都通過 Configuration 來管理,包括strings等等。
onCreate() 中注冊
onDestroy() 中取消注冊
setLanguage() 方法
通過上面的設置,可以實現(xiàn)不重啟APP修改語言的效果
以上只是對Android多語言設置的一些小小的總結(jié),可能有理解不周的情況,歡迎給我留言指出????
網(wǎng)頁名稱:android多語言開發(fā),android多語言適配
文章鏈接:http://aaarwkj.com/article4/dssjooe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、品牌網(wǎng)站設計、移動網(wǎng)站建設、云服務器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)