JS如何在不同平臺(tái)實(shí)現(xiàn)多語言方式
應(yīng)用場(chǎng)景:
在不同移動(dòng)平臺(tái)(IOS,Android)上,建立一套與HTML頁面通訊框架;主要業(yè)務(wù)邏輯使用HTML開發(fā);想支持多語言開發(fā)。
動(dòng)機(jī):
通過主動(dòng)發(fā)消息的方式,在頁面完成初始化前,獲取當(dāng)前語言選項(xiàng),并且根據(jù)該語言選項(xiàng),調(diào)用對(duì)應(yīng)的JS文件(每種語言對(duì)應(yīng)一個(gè)JS文件)解析頁面。
實(shí)現(xiàn)細(xì)節(jié):
向本地語言框架發(fā)請(qǐng)求獲取語言種類;
$(document).on('pageinit',function(){ /*Kaiwii 向本地代碼發(fā)請(qǐng)求獲取當(dāng)前語言種類*/ });
本地語言框架觸發(fā)回調(diào)函數(shù)(JS方法):根據(jù)語言選項(xiàng),動(dòng)態(tài)將對(duì)應(yīng)語言的JS文件嵌入HTML并且觸發(fā)其執(zhí)行;
/*Kaiwii 本地語言框架回調(diào)本方法*/ function GetLanguageCodeCallBack(Jstring,ERROR){ var i18File = $('script[name=’i18’]'); if(i18File.length==0){//沒有成功加載js文件 var i18FileLink = '<script name=’i18’ src=’../../js/i18.js’></script>'; switch (Jstring){ case 'EN': i18FileLink = '<script name=’i18’ src=’../../js/i18.js’></script>'; break; case 'CN': i18FileLink = '<script name=’i18’ src=’../../js/i18_CN.js’></script>'; break; } $('head').append(i18FileLink); }else{//成功加載js文件 switch (Jstring){ case 'EN': $(i18File).attr('src','../../js/i18.js'); break; case 'CN': $(i18File).attr('src','../../js/i18_CN.js'); break; } /*主動(dòng)觸發(fā)更新HTML*/ updatei18Spans(); } }
不同語言對(duì)應(yīng)的JS文件(如i18.js):
1、使用JSON對(duì)象存儲(chǔ)KEY-VALUE[不同語言版本的JS文件僅僅是VALUE不同(VALUE為對(duì)應(yīng)語言版本中的值)];
2、HTML中的靜態(tài)部分需要調(diào)用JS方法修改DOM對(duì)象的屬性方式完成多語言動(dòng)態(tài)化(通過調(diào)用updatei18spans()觸發(fā));動(dòng)態(tài)部分直接調(diào)用即可;
/*用于國際化*/ <pre name='code' class='javascript'>/*Kaiwii*/
/*對(duì)應(yīng)關(guān)系表(key為元素的ID,value為國際化下的顯示內(nèi)容*//*span 部分*/var spans = {'DemandDepositAccountTitle':'CCB Current Account'};//本地代碼交互的部分var locale_vars = {'enquiryTitle':'Account Info Inquiry'};var i18placeholder = {'請(qǐng)輸入單位名稱或賬號(hào)':'Organization’s Name/Account',' 開始日期':'Start Date',' 截止日期':'End Date'};function updatei18Spans(){ for(index in spans){ $('span[i18Id=’'+index+'’]').html(spans[index]); } for(index in i18placeholder){ $('input[placeholder=’'+index+'’]').attr('placeholder',i18placeholder[index]); }}$(function(){//加載顯示內(nèi)容方法 updatei18Spans(); });
調(diào)用多語言動(dòng)態(tài)框架修改:
1、靜態(tài)部分:
HTML上:
<span i18Id='DemandDepositAccountTitle'></span>
2、動(dòng)態(tài)部分:
JS代碼中:
liElement += '<span ACC_NO=’'+ACC_NO+'’ CshEx_Cd=’'+CshEx_Cd+'’ CcyCd=’'+CcyCd+'’ onclick=’renderBAL(this)’ class=’font14’ style=’color:#306ed2’>'+locale_vars.enquiryTitle+'</span>';
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 告別AJAX實(shí)現(xiàn)無刷新提交表單2. 封裝一個(gè)vue中也可使用的uniapp的全局彈窗組件(任何頁面都可以彈出)3. css列表標(biāo)簽list與表格標(biāo)簽table詳解4. webpack高級(jí)配置與優(yōu)化詳解5. 阿里前端開發(fā)中的規(guī)范要求6. html小技巧之td,div標(biāo)簽里內(nèi)容不換行7. XML入門的常見問題(一)8. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案9. 讀寫xml文件的2個(gè)小函數(shù)10. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案
