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 相关文章推荐
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
JavaScript检测字符串中是否含有html标签实现方法
Jul 01 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
JS如何生成一个不重复的ID的函数
Dec 25 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 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 Smarty 字符比较代码
2011/02/27 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
JSON相关知识汇总
2015/07/03 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
Angular8基础应用之表单及其验证
2019/08/11 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
python迭代器与生成器详解
2016/03/10 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python列表返回重复数据的下标
2020/02/10 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
一年级评语大全
2014/04/23 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
高中数学教学反思范文
2016/02/18 职场文书