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 相关文章推荐
Prototype源码浅析 String部分(二)
Jan 16 Javascript
JQuery实现表格中相同单元格合并示例代码
Jun 26 Javascript
获取鼠标在div中的相对位置的实现代码
Dec 30 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
AngularJS通过$location获取及改变当前页面的URL
Sep 23 Javascript
微信小程序 canvas API详解及实例代码
Oct 08 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
AngularJS中的作用域实例分析
May 16 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
详解JS数组方法
Nov 20 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
php流量统计功能的实现代码
2012/09/29 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
全面了解python中的类,对象,方法,属性
2016/09/11 Python
浅谈Python中的bs4基础
2018/10/21 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
python进行文件对比的方法
2018/12/24 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
C#面试问题
2016/07/29 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
大学生毕业个人总结
2015/02/15 职场文书
电影复兴之路观后感
2015/06/02 职场文书
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL