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的获取mouse坐标插件的实现代码
Apr 01 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
Apr 11 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 Javascript
AngularJS Controller作用域
Jan 09 Javascript
vue2里面ref的具体使用方法
Oct 27 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
layui导出所有数据的例子
Sep 10 Javascript
vue实现评论列表功能
Oct 25 Javascript
JavaScript setInterval()与setTimeout()计时器
Dec 27 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获取新浪微博数据API实例
2013/11/12 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
Vue实现日历小插件
2019/06/26 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
用python与文件进行交互的方法
2018/03/01 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python 忽略warning的输出方法
2018/10/18 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python绘制热力图示例
2019/09/27 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python中rb含义理解
2020/06/18 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
中专生求职自荐信范文
2013/12/22 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
环保建议书100字
2014/05/14 职场文书