web页面国际化---之js翻译插件
来源:互联网 发布:苏州有mac专柜吗 编辑:程序博客网 时间:2024/06/06 03:39
翻译插件使用cookie获取翻译语音选择
初始化需要加载的文件:translation.js
其他文件为语音包,如:source.js(中文包) en.js(英文包)
附上代码:
translation.js
/** * 翻译插件 版本v1.0 * 创建日期:2015/11/24 * 创建人: 刘鑫 * 功能: * 1.可以翻译指定位置内的内容(传入指定位置id) * 2.可以翻译json数据 * 3.可以翻译字符串 * 以上功能需要jquery支持,和语音包支持 */var lang;/** * 初始化加载语言包 */$(function(){lang= getCookie("HY_LANGUAGE");if(lang==null||lang==""||lang==undefined||lang!="en"){lang="source";}//alert(lang);//------------动态加载语言js文件--------------//var head = document.getElementsByTagName('head')[0];// var script = document.createElement('script');// script.src = ctx+"/js/translation/"+lang+".js?cur="+Math.round(Math.random()*10000);// script.type = 'text/javascript';// head.appendChild(script);var url=ctx+"/js/translation/"+lang+".js?cur="+Math.round(Math.random()*10000);loadJS("",url);//------------动态加载语言js文件--------------});/** * 数组去重 * @param arr * @returns {Array} */function unique(arr) {if(arr!=null&&arr.length>0){var result = [], hash = {};for (var i = 0, elem; (elem = arr[i]) != null; i++) {if (!hash[elem]) {result.push(elem);hash[elem] = true;}}}else{return arr;} return result;}/** * 国际化方法,传入需要翻译的html快id,即可翻译该html里的内容(需要配置语言包) * @param divId */function translationinit(divId){//alert(divId);//$("#"+divId).hide(); var h = $("#"+divId).html();// alert(h); if(h!=undefined){ //var str="我的一(个)(中)国人" var mode=/[\u4e00-\u9faf]+/g var s=h.match(mode); s=unique(s);//去重//alert("s="+s);//var ch = $("#"+divId); var ch = $("#"+divId).children(); recursion(ch,s); }// $("#"+divId).show();}/** * 递归 * @param obj * @param s */function recursion(obj,s){//var ch = $("#"+divId).children();//alert(obj.length);if(s!=null&&obj.length!=0){obj.each(function(i){ for(var i = 0;i < s.length; i++){if(languageMap[s[i]]!=undefined){//alert($(this).html());//$(this).thml().replace(s[i],enMap[s[i]]);//$(this).thml().innerHTML.replace(s[i],enMap[s[i]]);var mode=/[\u4e00-\u9faf]+/var s1=$.trim($(this).text()).match(mode);if(s1==null){return true;}//alert(s1);//if($.trim($(this).text())==s[i]){if(s1==s[i]){//alert($(this).html());var text = $(this).html().replace(s[i],languageMap[s[i]]);$(this).html(text);//$(this).html(languageMap[s[i]]);}}}});recursion(obj.children(),s);}}/** * 国际化方法 传入json,把json里的中文替换成国际化语言(试用与ztree菜单) * @param json数组 内容是object元素 * @returns {Array}返回数组,数组内容是object元素 */function initjsonObj(json){var h = json;var h2=[];for(var j = 0;j < h.length; j++){var str = JSON.stringify(h[j])var mode=/[\u4e00-\u9faf]+/gvar s=str.match(mode)for(var i = 0;i < s.length; i++){if(languageMap[s[i]]!=undefined){var obj= eval("(" + str.replace(s[i],languageMap[s[i]])+ ")");h2.push(obj);}else{var obj= eval("(" + str+ ")");h2.push(obj);}}}return h2;}/** * 国际化方法 传入json,把json里的中文替换成国际化语言 * @param json数组 * @returns {Array}返回数组 */function initjson(json){var h = json;var h2=[];for(var j = 0;j < h.length; j++){var str = h[j]var mode=/[\u4e00-\u9faf]+/gvar s=str.match(mode)for(var i = 0;i < s.length; i++){if(languageMap[s[i]]!=undefined){var obj= str.replace(s[i],languageMap[s[i]]);h2.push(obj);}else{var obj= str;h2.push(obj);}}}return h2;}/** * 国际化方法 传入String,把String替换成国际化语言 * @param str * @returns */function initString(str){var h = str;var mode=/[\u4e00-\u9faf]+/gvar s=str.match(mode)if(s!=null){for(var i = 0;i < s.length; i++){if(languageMap[s[i]]!=undefined){return languageMap[s[i]];}else{return h;}}}return h;}/** * 国际化方法 传入String,把String替换成国际化语言 * @param str * @returns */function initString(str){var h = str;var mode=/[\u4e00-\u9faf]+/gvar s=str.match(mode)if(s!=null){for(var i = 0;i < s.length; i++){if(languageMap[s[i]]!=undefined){return languageMap[s[i]];}else{return h;}}}return h;}// 获取地址栏的参数数组function getUrlParams(){ var search = window.location.search ; // 写入数据字典 var tmparray = search.substr(1,search.length).split("&"); var paramsArray = new Array; if( tmparray != null) { for(var i = 0;i<tmparray.length;i++) { var reg = /[=|^==]/; // 用=进行拆分,但不包括== var set1 = tmparray[i].replace(reg,'&'); var tmpStr2 = set1.split('&'); var array = new Array ; array[tmpStr2[0]] = tmpStr2[1] ; paramsArray.push(array); } } // 将参数数组进行返回 return paramsArray ; }// 根据参数名称获取参数值function getParamValue(name){ var paramsArray = getUrlParams(); if(paramsArray != null) { for(var i = 0 ; i < paramsArray.length ; i ++ ) { for(var j in paramsArray[i] ) { if( j == name ) { return paramsArray[i][j] ; } } } } return null ;} /** * 同步加载js脚本 * @param id 需要设置的<script>标签的id * @param url js文件的相对路径或绝对路径 * @return {Boolean} 返回是否加载成功,true代表成功,false代表失败 */function loadJS(id,url){ var xmlHttp = null; if(window.ActiveXObject)//IE { try { //IE6以及以后版本中可以使用 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { //IE5.5以及以后版本可以使用 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } else if(window.XMLHttpRequest)//Firefox,Opera 8.0+,Safari,Chrome { xmlHttp = new XMLHttpRequest(); } //采用同步加载 xmlHttp.open("GET",url,false); //发送同步请求,如果浏览器为Chrome或Opera,必须发布后才能运行,不然会报错 xmlHttp.send(null); //4代表数据发送完毕 if ( xmlHttp.readyState == 4 ) { //0为访问的本地,200到300代表访问服务器成功,304代表没做修改访问的是缓存 if((xmlHttp.status >= 200 && xmlHttp.status <300) || xmlHttp.status == 0 || xmlHttp.status == 304) { var myHead = document.getElementsByTagName("HEAD").item(0); var myScript = document.createElement( "script" ); myScript.language = "javascript"; myScript.type = "text/javascript"; myScript.id = id; try{ //IE8以及以下不支持这种方式,需要通过text属性来设置 myScript.appendChild(document.createTextNode(xmlHttp.responseText)); } catch (ex){ myScript.text = xmlHttp.responseText; } myHead.appendChild( myScript ); return true; } else { return false; } } else { return false; }}function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null;}
source.js
var languageMap ={}
en.js
var languageMap ={"删除成功":"Delete success","删除失败":"Delete failed","编辑":"Quote","确认":"Confirm"}
0 0
- web页面国际化---之js翻译插件
- openfire 插件web 页面显示国际化
- 谷歌/微软/必应web页面免费翻译插件
- nagios插件之监控web页面登陆
- java web之国际化
- js 利用谷歌翻译实现国际化
- 响应式WEB页面布局插件——XMlayout.js
- SpringMVC之国际化插件-yellowcong
- 安卓国际化之翻译编辑器
- Android studio 一键国际化翻译插件最新版
- 页面Loading js插件
- web页面跳转 JS
- js 打印web页面
- 翻译:Gradle之 Java插件
- 插件国际化
- 国际化插件
- 基于jQuery.i18n.properties插件实现前端页面国际化
- 翻译www.djangobook.com之第三章:动态Web页面基础
- POJ 2352 Stars
- php脚本命令行运行正确,浏览器运行错误
- C/C++堆与栈详悉
- Linux下文件的复制、移动与删除命令
- BZOJ 3679 数位DP,离散化
- web页面国际化---之js翻译插件
- 十四届浙江省赛 E题(数位DP)
- 鼠标拖动面板
- 结构型模式之享元模式(FlyWeight)
- NYOJ 一个简单的数学题
- 正则表达式表匹配所有的两位数字,并且十位为1
- andorid bionic简介
- 点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)
- 关于filebieat和IngestNode的一些配置