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
原创粉丝点击