這篇文章只針對(duì)后臺(tái)返回的數(shù)據(jù), 本地?cái)?shù)據(jù)除外
創(chuàng)新互聯(lián):于2013年開(kāi)始為各行業(yè)開(kāi)拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為1000多家公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需定制制作由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺(jué)效果,策劃師分析客戶的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
我們發(fā)送網(wǎng)絡(luò)請(qǐng)求的時(shí)候, 帶一個(gè)語(yǔ)言類型參數(shù), 例如 map.put("language", "ZH"), 我們需要什么語(yǔ)言就傳什么語(yǔ)言類型, 正常接收返回值就可以了.
這樣做的好處:
①. 對(duì)于android端, 新增、修改、刪除語(yǔ)言 時(shí)也只需改變一個(gè)字段的值即可, 這個(gè)字段可以使用接口來(lái)控制值, App完全可以不用任何修改, 靈活性較高.
②. 對(duì)于整個(gè)項(xiàng)目而言: 前端("android", "IOS", "小程序", "公眾號(hào)") 等多個(gè)端, 完全無(wú)需做任何判斷, 只需后臺(tái)處理好即可, 總體可以節(jié)約不少時(shí)間.
后臺(tái)把所有的語(yǔ)言數(shù)據(jù)一起返回 , 可能出現(xiàn)如下格式:
同行的人看到了肯定會(huì)說(shuō): 叫后臺(tái)改成第一種方式啊.
如果是項(xiàng)目剛剛開(kāi)始開(kāi)發(fā), 可能比較好改.
我碰到的情況是: 一開(kāi)始項(xiàng)目沒(méi)有做android端, 后臺(tái)和web端已經(jīng)上線了不知道多少個(gè)版本了, 反正就是后臺(tái)架構(gòu)已經(jīng)確定了, 這個(gè)時(shí)候改成本會(huì)比較大. 只能自己處理了.
這個(gè)時(shí)候處理方式:
① 如果按照原來(lái)的方式: GsonFormat.如下圖:
這樣是可以解析出來(lái)的, 看起來(lái)項(xiàng)目也能正常運(yùn)行, 但是每個(gè)接口都這么做的話, 維護(hù)起來(lái)難度太大了, 項(xiàng)目越大越難維護(hù) , 例如:新增一種語(yǔ)言, 竟然要全局大改. 有100個(gè)接口就要改100個(gè)實(shí)體類, 等等.
②. 特殊處理
思考: 有什么辦法可以和第一種方式一樣, 修改一個(gè)參數(shù)就可以全局改變語(yǔ)言?
觀察: 共同點(diǎn): 多語(yǔ)言的實(shí)體類里面都會(huì)有 變量名為"ZH" "EN" 的對(duì)象 , 對(duì)象不確定類型, 這個(gè)時(shí)候想到用泛型. 于是有下面的寫(xiě)法:
我們的實(shí)體類都有這個(gè)特性, 所以直接繼承即可.
解析
解析數(shù)據(jù)類型2
特殊處理步驟:
①. 封裝好多語(yǔ)言基類LanguageBeanT
②. 多語(yǔ)言實(shí)體類繼承LanguageBeanT
③. 獲取多語(yǔ)言實(shí)體數(shù)據(jù)時(shí), 要用bean.get()獲取對(duì)象.
好處
①. 增刪改語(yǔ)言, 只需在基類LanguageBeanT修改即可, 其它地方完全不需要修改.
②. 切換語(yǔ)言時(shí): 只需賦值給languageType即可.
③.可切換回方式1 (網(wǎng)絡(luò)請(qǐng)求的時(shí)候, 帶一個(gè)語(yǔ)言類型參數(shù)) , 只需languageType = "" 即可.
封裝好以后, 即使后臺(tái)要重構(gòu), 使用方式1處理多語(yǔ)言, 我們也只需修改一個(gè)字段即可.
1.添加字符串資源:
修改strings.xml,新定義一個(gè)字符串資源(變量)show_info.
2.修改布局文件activity_main.xml和navigation.xml;
3.在res下添加一個(gè)新的目錄(dictionary),目錄名為values-zh-rCN;
將工程顯示由Android改為project,
復(fù)制values目錄到res中,復(fù)制時(shí)將名稱改為values-zh-rCN;
4.修改strings。Xml(values-zh-rCN)的內(nèi)容
這幾天突然要發(fā)一個(gè)中國(guó)臺(tái)灣版本,做法比較硬:復(fù)制一個(gè)工程,改包名,改圖標(biāo),改api接口。語(yǔ)言全部都是繁體就行:
Android studio添加新語(yǔ)言資源文件(res/values/....)如下:
然后回車即可:
把對(duì)應(yīng)的字符串翻譯成繁體就行。至于翻譯,有一些工具可以借鑒。同時(shí)網(wǎng)上也有很多多語(yǔ)言切換的方式,就是一個(gè)工程,一個(gè)app進(jìn)行內(nèi)部切換多語(yǔ)言支持的方式(像微信就是。不過(guò)微信繁體有些不一定都支持了...)。具體看情況啦。。。
因?yàn)槲覀兪钦麄€(gè)app就是中國(guó)臺(tái)灣臺(tái)北版本,所以就都是繁體,不管系統(tǒng)是簡(jiǎn)體還是繁體還是別的,就是繁體!!!
簡(jiǎn)單記錄下。好多東西沒(méi)怎么關(guān)注或者使用,至于是否要深入,可能要看情況....
參考o(jì): android--實(shí)現(xiàn)多語(yǔ)言支持 - snow_flower - 博客園
Android系統(tǒng)通過(guò)判斷當(dāng)前系統(tǒng)的Local配置,來(lái)使用對(duì)應(yīng)的strings.xml文件
values--strings.xml 默認(rèn)語(yǔ)言(簡(jiǎn)體中文)
values-zh-rHK--strings.xml 繁體中文
values-en--strings.xml 英語(yǔ)
在Android系統(tǒng)中,系統(tǒng)的配置大都通過(guò) Configuration 來(lái)管理,包括strings等等。
onCreate() 中注冊(cè)
onDestroy() 中取消注冊(cè)
setLanguage() 方法
通過(guò)上面的設(shè)置,可以實(shí)現(xiàn)不重啟APP修改語(yǔ)言的效果
以上只是對(duì)Android多語(yǔ)言設(shè)置的一些小小的總結(jié),可能有理解不周的情況,歡迎給我留言指出????
分享文章:android多語(yǔ)言,android多語(yǔ)言占網(wǎng)絡(luò)圖片
網(wǎng)頁(yè)網(wǎng)址:http://jinyejixie.com/article16/dsseedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、靜態(tài)網(wǎng)站、網(wǎng)站收錄、面包屑導(dǎo)航、App設(shè)計(jì)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)