JS如何在不同平台实现多语言方式


Posted in Javascript onJuly 16, 2020

应用场景:

在不同移动平台(IOS,Android)上,建立一套与HTML页面通讯框架;主要业务逻辑使用HTML开发;想支持多语言开发。

动机:

通过主动发消息的方式,在页面完成初始化前,获取当前语言选项,并且根据该语言选项,调用对应的JS文件(每种语言对应一个JS文件)解析页面。

实现细节:

向本地语言框架发请求获取语言种类;

$(document).on("pageinit",function(){
/*Kaiwii 向本地代码发请求获取当前语言种类*/
});

本地语言框架触发回调函数(JS方法):根据语言选项,动态将对应语言的JS文件嵌入HTML并且触发其执行;

/*Kaiwii 本地语言框架回调本方法*/ 
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; 
    } 
    /*主动触发更新HTML*/ 
    updatei18Spans(); 
  } 
}

不同语言对应的JS文件(如i18.js):

1、使用JSON对象存储KEY-VALUE[不同语言版本的JS文件仅仅是VALUE不同(VALUE为对应语言版本中的值)];

2、HTML中的静态部分需要调用JS方法修改DOM对象的属性方式完成多语言动态化(通过调用updatei18spans()触发);动态部分直接调用即可;

/*用于国际化*/
<pre name="code" class="javascript">/*Kaiwii*/

/*对应关系表(key为元素的ID,value为国际化下的显示内容*//*span 部分*/var spans = {"DemandDepositAccountTitle":"CCB Current Account"};//本地代码交互的部分var locale_vars = {"enquiryTitle":"Account Info Inquiry"};var i18placeholder = {"请输入单位名称或账号":"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(){//加载显示内容方法 updatei18Spans(); });

调用多语言动态框架修改:

1、静态部分:

HTML上:

<span i18Id="DemandDepositAccountTitle"></span>

2、动态部分:

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>";

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
JS替换字符串中空格方法
Apr 17 Javascript
用iframe实现不刷新整个页面上传图片的实例
Nov 18 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
async/await优雅的错误处理方法总结
Jan 30 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
JavaScript实现更换背景图片
Oct 18 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
原生js实现随机点名
Jul 05 Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 #Javascript
vue实现自定义多选按钮
Jul 16 #Javascript
vue实现div单选多选功能
Jul 16 #Javascript
vue+AI智能机器人回复功能实现
Jul 16 #Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 #Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 #Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 #Javascript
You might like
神族 Protoss 剧情介绍
2020/03/14 星际争霸
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
网站接入QQ登录的两种方法
2014/07/22 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
python cs架构实现简单文件传输
2020/03/20 Python
Django的models中on_delete参数详解
2019/07/16 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
横幅标语大全
2014/06/17 职场文书
师德师风事迹材料
2014/12/20 职场文书
高中生物教学反思
2016/02/20 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
Python Pandas 删除列操作
2022/03/16 Python