应用场景:
在不同移动平台(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>";
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Thinkphp搭建包括JS多语言的多语言项目实现方法,包括了Thinkphp搭建包括JS多语言的多语言项目实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Thinkphp搭建包括JS多语言的多语言项目实现方法。分享给大家供大家参考。具体实现方法如下: 一、问题: 项目需要开发英文版,于是需要搭建多语言项目. 项目使用Thinkphp框架,隐约记得Thinkphp有多
本文向大家介绍使用Go语言实现微信公众平台,包括了使用Go语言实现微信公众平台的使用技巧和注意事项,需要的朋友参考一下 这个不是全部的代码哦,只是一个演示可以验证跟接受post传过来的消息并且能返回消息,中间的回复逻辑就待需要各位同志们自己写了哈
本文向大家介绍Java通过SMS短信平台实现发短信功能 含多语言,包括了Java通过SMS短信平台实现发短信功能 含多语言的使用技巧和注意事项,需要的朋友参考一下 Java通过SMS短信平台实现发短信功能 在项目中使用过发短信的功能,但那个由于公司内部的限制很麻烦,今天在网上找到一个简单的,闲来无事就把它记录如下: 本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条
我使用的是IntelliJ IDEA多平台项目,jsTest Gradle任务不检测任何测试。jvmTest测试运行没有问题。当我使用调试输出运行jsTest任务时,我可以看到任务运行并立即完成。 Gradle版本4.10.1。科特林版本1.3.0-eap。 如何纠正Gradle配置,或者我可以运行什么命令,以便实际检测到测试,并且(如所写)失败? build.gradle: test-proje
我正在开发一个小型交易机器人作为练习。他日复一日地接收股票价格(表示为迭代)。 这是我的类的样子: 正如您从我的最后两个属性中所看到的,我希望实现指数移动平均值,作为趋势跟踪算法的一部分。 但我想我不太明白如何实施它;这是我的calcEMA函数,它只计算EMA: 但是当我的股票价值(在文件中传递)是这样的: 以确保我的均线是有意义的,嗯...它没有! 我在手术中哪里出错了? 另外,如果这是我第一次
问题内容: 一些旧代码依赖于平台的默认字符集进行翻译。对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。但是考虑到俄罗斯或亚洲平台,我完全不确定其平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道执行以下代码行会得到什么: PS: 我不想在这里讨论字符集的问题及其与Unicode的区别。我只想收集什么操作系统会导致什么特定字符集。请仅发布具体值! 问题答案: 这是