JS如何在不同平臺(tái)實(shí)現(xiàn)多語(yǔ)言方式
應(yīng)用場(chǎng)景:
在不同移動(dòng)平臺(tái)(IOS,Android)上,建立一套與HTML頁(yè)面通訊框架;主要業(yè)務(wù)邏輯使用HTML開(kāi)發(fā);想支持多語(yǔ)言開(kāi)發(fā)。
動(dòng)機(jī):
通過(guò)主動(dòng)發(fā)消息的方式,在頁(yè)面完成初始化前,獲取當(dāng)前語(yǔ)言選項(xiàng),并且根據(jù)該語(yǔ)言選項(xiàng),調(diào)用對(duì)應(yīng)的JS文件(每種語(yǔ)言對(duì)應(yīng)一個(gè)JS文件)解析頁(yè)面。
實(shí)現(xiàn)細(xì)節(jié):
向本地語(yǔ)言框架發(fā)請(qǐng)求獲取語(yǔ)言種類;
$(document).on("pageinit",function(){
/*Kaiwii 向本地代碼發(fā)請(qǐng)求獲取當(dāng)前語(yǔ)言種類*/
});
本地語(yǔ)言框架觸發(fā)回調(diào)函數(shù)(JS方法):根據(jù)語(yǔ)言選項(xiàng),動(dòng)態(tài)將對(duì)應(yīng)語(yǔ)言的JS文件嵌入HTML并且觸發(fā)其執(zhí)行;
/*Kaiwii 本地語(yǔ)言框架回調(diào)本方法*/ function GetLanguageCodeCallBack(Jstring,ERROR){ var i18File = $("script[name='i18']"); if(i18File.length==0){//沒(méi)有成功加載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(); } }
不同語(yǔ)言對(duì)應(yīng)的JS文件(如i18.js):
1、使用JSON對(duì)象存儲(chǔ)KEY-VALUE[不同語(yǔ)言版本的JS文件僅僅是VALUE不同(VALUE為對(duì)應(yīng)語(yǔ)言版本中的值)];
2、HTML中的靜態(tài)部分需要調(diào)用JS方法修改DOM對(duì)象的屬性方式完成多語(yǔ)言動(dòng)態(tài)化(通過(guò)調(diào)用updatei18spans()觸發(fā));動(dòng)態(tài)部分直接調(diào)用即可;
/*用于國(guó)際化*/
<pre name="code" class="javascript">/*Kaiwii*/
/*對(duì)應(yīng)關(guān)系表(key為元素的ID,value為國(guó)際化下的顯示內(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"," 開(kāi)始日期":"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)用多語(yǔ)言動(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í)有所幫助,也希望大家多多支持腳本之家。
- NodeJS 實(shí)現(xiàn)多語(yǔ)言的示例代碼
- Thinkphp搭建包括JS多語(yǔ)言的多語(yǔ)言項(xiàng)目實(shí)現(xiàn)方法
- JS(jQuery)實(shí)現(xiàn)聊天接收到消息語(yǔ)言自動(dòng)提醒功能詳解【提示“您有新的消息請(qǐng)注意查收”】
- 實(shí)例說(shuō)明js腳本語(yǔ)言和php腳本語(yǔ)言的區(qū)別
- 易語(yǔ)言調(diào)用JS取隨機(jī)數(shù)
- 易語(yǔ)言調(diào)用JS代碼方法總結(jié)
- Go語(yǔ)言的JSON處理詳解
- 使用Go語(yǔ)言解析動(dòng)態(tài)JSON格式的方法
相關(guān)文章
JavaScript中停止執(zhí)行setInterval和setTimeout事件的方法
這篇文章主要介紹了JavaScript中停止執(zhí)行setInterval和setTimeout事件的方法,本文給出操作實(shí)例代碼和語(yǔ)法介紹,需要的朋友可以參考下2015-05-05Js獲取下拉框選定項(xiàng)的值和文本的實(shí)現(xiàn)代碼
本篇文章主要是對(duì)Js獲取下拉框選定項(xiàng)的值和文本的實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02js實(shí)現(xiàn)帶農(nóng)歷和八字等信息的日歷特效
本文主要介紹了js實(shí)現(xiàn)帶農(nóng)歷和八字等信息的日歷特效,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05關(guān)于ES6新特性最常用的知識(shí)點(diǎn)匯總
日常開(kāi)發(fā)中寫的 JavaScript 代碼,會(huì)用到ES6的部分新特性,所以下面這篇文章主要給大家介紹了關(guān)于ES6新特性最常用的知識(shí)點(diǎn),文章總結(jié)的非常全面,需要的朋友可以參考下2021-11-11