/* * 多语言翻译,作者:管雷鸣 * 开源仓库: https://github.com/xnx3/translate/tree/master/else/layui_exts */ //下行是直接将 https://gitee.com/mail_osc/translate/blob/master/translate.js/translate.js 压缩后粘贴过来 if("object"==typeof translate&&"string"==typeof translate.version)throw new Error("translate.js 已经加载过一次了,当前是重复加载,避免你的翻译出现异常,已帮你拦截此次加载。本信息只是给你一个提示,你可以检查一下你的项目中是否出现了重复引入 translate.js ,当然,这个异常并不会影响到你的具体使用,它已经自动帮你处理拦截了这个异常,只不过提示出来是让你知道,你的代码里出现了重复引入的情况。");var translate={version:"3.18.95.20251111",useVersion:"v2",setUseVersion2:function(){translate.useVersion="v2",translate.log("提示:自 v2.10 之后的版本默认就是使用V2版本(当前版本为:"+translate.version+"), translate.setUseVersion2() 可以不用再加这一行了。当然加了也无所谓,只是加了跟不加是完全一样的。")},translate:null,includedLanguages:"zh-CN,zh-TW,en",resourcesUrl:"//res.zvo.cn/translate",log:function(e){console.log(e)},selectLanguageTag:{documentId:"translate",show:!0,languages:"",alreadyRender:!1,changeLanguageBeforeLoadOfflineFile:function(e){},selectOnChange:function(e){var t=e.target.value;translate.changeLanguage(t)},refreshRender:function(){let e=document.getElementById(translate.selectLanguageTag.documentId+"SelectLanguage");e&&e.parentNode.removeChild(e),translate.selectLanguageTag.alreadyRender=!1,translate.selectLanguageTag.render()},customLanguagesHandle:function(e){if(translate.selectLanguageTag.languages.length>0){var t=translate.selectLanguageTag.languages.toLowerCase().split(",");if(void 0===translate.selectLanguageTag.supportLanguageMap){translate.selectLanguageTag.supportLanguageMap=new Map;for(var a=0;a0&&null!=translate.selectLanguageTag.supportLanguageMap.get(t[r])&&n.push(translate.selectLanguageTag.supportLanguageMap.get(t[r]));return n}return e},customUI:function(e){var t=function(e){translate.selectLanguageTag.selectOnChange(e)},a=document.createElement("select");a.id=translate.selectLanguageTag.documentId+"SelectLanguage",a.className=translate.selectLanguageTag.documentId+"SelectLanguage";for(var n=translate.language.getCurrent(),r=0;r0?n==e[r].id&&s.setAttribute("selected","selected"):e[r].id==translate.language.getLocal()&&s.setAttribute("selected","selected"),s.appendChild(document.createTextNode(e[r].name)),a.appendChild(s)}window.addEventListener?a.addEventListener("change",t,!1):a.attachEvent("onchange",t),document.getElementById(translate.selectLanguageTag.documentId).appendChild(a)},render:function(){if(!translate.selectLanguageTag.alreadyRender&&(translate.selectLanguageTag.alreadyRender=!0,translate.selectLanguageTag.show)){if(null==document.getElementById(translate.selectLanguageTag.documentId)){var e=document.getElementsByTagName("body");if(0==e.length)return void translate.log("body tag not find, translate.selectLanguageTag.render() is not show Select Language");var t=e[0],a=document.createElement("div");a.id=translate.selectLanguageTag.documentId,t.appendChild(a)}else if(null!=document.getElementById(translate.selectLanguageTag.documentId+"SelectLanguage"))return;"string"==typeof translate.request.api.language&&translate.request.api.language.length>0?translate.request.post(translate.request.api.language,{},function(e,t){0!=e.result?(translate.request.api.language=e.list,translate.selectLanguageTag.customUI(translate.selectLanguageTag.customLanguagesHandle(e.list))):translate.log("load language list error : "+e.info)},null):"object"==typeof translate.request.api.language&&translate.selectLanguageTag.customUI(translate.selectLanguageTag.customLanguagesHandle(translate.request.api.language))}}},localLanguage:"zh-CN",googleTranslateElementInit:function(){var e="";null!=document.getElementById("translate")&&(e="translate"),translate.translate=new google.translate.TranslateElement({pageLanguage:"zh-CN",includedLanguages:translate.selectLanguageTag.languages,layout:0},e)},execute_v1:function(){translate.log("=====ERROR======"),translate.log("The v1 version has been discontinued since 2022. Please use the latest V3 version and refer to: http://translate.zvo.cn/41162.html")},setCookie:function(e,t){var a=e+"="+escape(t);document.cookie=a},getCookie:function(e){for(var t=document.cookie.split("; "),a=0;a0?e.substr(e.lastIndexOf("/")+1,e.length-1):translate.localLanguage},changeLanguage:function(e){translate.time.log("触发");if(",en,de,hi,lt,hr,lv,ht,hu,zh-CN,hy,uk,mg,id,ur,mk,ml,mn,af,mr,uz,ms,el,mt,is,it,my,es,et,eu,ar,pt-PT,ja,ne,az,fa,ro,nl,en-GB,no,be,fi,ru,bg,fr,bs,sd,se,si,sk,sl,ga,sn,so,gd,ca,sq,sr,kk,st,km,kn,sv,ko,sw,gl,zh-TW,pt-BR,co,ta,gu,ky,cs,pa,te,tg,th,la,cy,pl,da,tr,".indexOf(","+e+",")>-1){translate.log("您使用的是v1版本的切换语种方式,v1已在2021年就以废弃,请更换为v2,参考文档: http://translate.zvo.cn/41549.html"),translate.check();var t="/"+translate.localLanguage+"/"+e,a=document.location.host.split(".");if(a.length>2){var n=a[a.length-2]+"."+a[a.length-1];document.cookie="googtrans=;expires="+new Date(1)+";domain="+n+";path=/",document.cookie="googtrans="+t+";domain="+n+";path=/"}return translate.setCookie("googtrans",""+t),void translate.refreshCurrentPage()}translate.lifecycle.changeLanguage.trigger_Trigger({to:e}),translate.useVersion="v2";null==translate.node.data&&(translate.node.data=new Map),translate.node.data.size,translate.to=e,translate.storage.set("to",e),translate.visual.webPageLoadTranslateBeforeHiddenText_use&&(void 0!==translate.visual.hideText.first_translate_request_uuid&&(translate.visual.hideText.first_translate_request_uuid=void 0),translate.visual.webPageLoadTranslateBeforeHiddenText({inHeadTip:!1})),translate.reset({selectLanguageRefreshRender:!1});try{window.self!==window.top&&"object"==typeof window.parent.translate&&"string"==typeof window.parent.translate.version&&window.parent.translate.to!==e&&window.parent.translate.changeLanguage(e)}catch(e){translate.log(e)}if(translate.time.log("父级 iframe 触发changeLanguage完成"),translate.to=e,translate.storage.set("to",e),translate.lifecycle.changeLanguage.resetAfter_Trigger({to:e}),translate.selectLanguageTag.refreshRender(),!1)location.reload();else{translate.execute();const t=document.querySelectorAll("iframe");for(let a=0;a0;){if(null==t||void 0===t)return!1;var n=translate.element.getNodeName(t).toLowerCase();if(n.length>0){if("body"==n||"html"==n||"#document"==n)return!1;if(translate.ignore.tag.indexOf(n)>-1)return!0}if(null!=t.className){var r=t.className;if(null==r||"string"!=typeof r)continue;r=r.trim().split(" ");for(var s=0;s0&&translate.ignore.class.indexOf(r[s])>-1)return!0}if(null!=t.id&&void 0!==t.id&&translate.ignore.id.indexOf(t.id)>-1)return!0;t=t.parentNode}return!1},text:[],textRegex:[],setTextRegexs:function(e){if(!Array.isArray(e))throw new Error("参数必须为数组");for(let t=0;t 跟 之间。"):"loading"===document.readyState&&translate.log("使用异常告警:你使用的自定义术语 translate.nomenclature.append 时,from 未传值,此时 translate.js 会自动识别当前翻译区域的内容是什么语种,但页面Dom还未加载完毕时就触发了它,如果翻译区域当前无内容或者内容不是完整的,会造成识别当前页面的语种会有异常不准确,你需要仔细确认这个问题。建议将 translate.nomenclature.append 放在 跟 之间。"),e=translate.language.getLocal()),void 0===translate.nomenclature.data[e]&&(translate.nomenclature.data[e]=new Array),void 0===translate.nomenclature.data[e][t]&&(translate.nomenclature.data[e][t]=new Array);for(var n=a.split("\n"),r=0;r-1){for(var s=[],l=r;-1!==l;)s.push(l),l=e.indexOf(t,l+1);for(var o=new Array,i=e,u=e.length,d=s.length-1;d>=0;d--){var g=s[d];o.unshift(e.substring(g+t.length,u)),i=i.substring(0,g)+a+i.substring(g+t.length),u=g}if(u>0&&o.unshift(e.substring(0,u)),o.length>0)for(var c=o.length-1;c>=0;c--)0==o[c].length&&o.splice(c,1);return null!=n&&void 0!==n.node&&null!==n.node&&(null!=translate.node.get(n.node)&&(translate.node.get(n.node).lastTranslateRenderTime=Date.now()),translate.element.nodeAnalyse.set(n.node,t,a,n.attribute)),{texts:o,find:!0,resultText:i}}return{texts:[e],find:!1,resultText:e}},dispose:function(e,t,a,n){Array.isArray(e)||(e=[String(e)]);var r={find:!1};r.texts=new Array,r.resultText=new Array;for(var s=0;s0)for(var i=r.texts.length-1;i>=0;i--)r.texts.indexOf(r.texts[i])!=i&&r.texts.splice(i,1);return r}},office:{export:function(){console.log("请使用最新版本的 translate.offline.export , 而不是 translate.office.export")},showPanel:function(){console.log("请使用最新版本的 translate.offline.showPanel , 而不是 translate.office.export")},append:function(e,t){translate.offline.append(e,t)},fullExtract:{isUse:!1}},offline:{export:function(){if(translate.language.getLocal()!=translate.language.getCurrent()){var e="";for(var t in translate.nodeQueue)if(translate.nodeQueue.hasOwnProperty(t)){translate.nodeQueue[t];for(var a in translate.nodeQueue[t].list)if(translate.nodeQueue[t].list.hasOwnProperty(a)&&!("string"!=typeof a||a.length<1))for(var n in translate.nodeQueue[t].list[a])if(translate.nodeQueue[t].list[a].hasOwnProperty(n)){var r=translate.storage.get("hash_"+translate.language.getCurrent()+"_"+n);if(null!=r&&0!==r.length)e=e+"\n"+(translate.nodeQueue[t].list[a][n].original+"="+r).replace(/\n/g,"{\\\\n}")}}e.length>0?(e="translate.offline.append('"+translate.language.getCurrent()+"',`"+e+"\n`);",translate.util.loadMsgJs(),msg.popups({text:'',width:"750px",height:"600px",padding:"1px"}),document.getElementById("msgPopupsTextarea").value=e):msg.alert("无有效内容!")}else alert("本地语种跟要翻译的语种一致,无需导出")},showPanel:function(){translate.recycle=function(){};let e=document.createElement("div");e.setAttribute("id","translate_export"),e.setAttribute("class","ignore");let t=document.createElement("button");t.onclick=function(){translate.offline.export()},t.innerHTML="导出配置信息",t.setAttribute("style","margin-left: 72px; margin-top: 30px; margin-bottom: 20px; font-size: 25px; background-color: blue; padding: 15px; padding-top: 3px; padding-bottom: 3px; border-radius: 3px;"),e.appendChild(t);let a=document.createElement("div");a.innerHTML='1. 首先将当前语种切换为你要翻译的语种
2. 点击导出按钮,将翻译的配置信息导出
3. 将导出的配置信息粘贴到代码中,即可完成
点此进行查阅详细使用说明',a.setAttribute("style","font-size: 14px; padding: 12px;"),e.appendChild(a),e.setAttribute("style","background-color: black; color: #fff; width: 320px; height: 206px; position: fixed; bottom: 50px; right: 50px;"),document.body.appendChild(e),translate.util.loadMsgJs()},append:function(e,t){for(var a=t.split("\n"),n=new Map,r=0;ro&&(o=t,i=e);n=null;for(r=0;r0&&translate.log("WAINING : translate.offline.append 异常,发现某行的配置项缩进异常,这行的缩进应该跟其他行的缩进保持一致!异常的这行配置项为:\n"+u);if(!(u.length<1)){var d=(u=u.replace(/\{\\n\}/g,"\n")).split("=");if(2==d.length){var g=d[0],c=d[1];0!=g.length&&0!=c.length&&translate.storage.set("hash_"+e+"_"+translate.util.hash(g),c)}}}},fullExtract:{set:async function(e,t,a,n){if(void 0!==translate.storage.IndexedDB){var r=await translate.storage.IndexedDB.get("hash_"+e);void 0===r&&null==r&&(r={originalText:t}),r[a]=n,await translate.storage.IndexedDB.set("hash_"+e,r)}else translate.log("ERROR: translate.storage.IndexedDB not find")},export:async function(e){if(void 0===translate.storage.IndexedDB)return void translate.log("ERROR: translate.storage.IndexedDB not find");if("string"!=typeof e)return void translate.log('error : to param not find, example: "english"');var t="translate.offline.append('"+e+"',`",a=await translate.storage.IndexedDB.list("hash_*");for(var n in a){if(a.hasOwnProperty(n))if(void 0!==a[n].value&&void 0!==a[n].value[e]&&null!==a[n].value[e]&&0!==a[n].value[e].trim().length)t=t+"\n"+(a[n].value.originalText+"="+a[n].value[e]).replace(/\n/g,"{\\\\n}")}t+="\n`);";const r=new Blob([t],{type:"text/plain"}),s=URL.createObjectURL(r),l=document.createElement("a");l.href=s,l.download=e+".txt",l.click(),URL.revokeObjectURL(s)},isUse:!1}},setAutoDiscriminateLocalLanguage:function(){translate.autoDiscriminateLocalLanguage=!0},nodeQueue:{},setDocuments:function(e){null!=e&&void 0!==e&&(void 0===e.length?translate.documents[0]=e:translate.documents=e,translate.nodeQueue={})},getDocuments:function(){if(null!=translate.documents&&void 0!==translate.documents&&translate.documents.length>0)return translate.documents;var e=new Array;return e[0]=document.documentElement,e},listener:{isStart:!1,use:!1,input:{originalValueDescriptor:null,start:function(){null===translate.listener.input.originalValueDescriptor?(translate.listener.input.originalValueDescriptor=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value"),Object.defineProperty(HTMLInputElement.prototype,"value",{...translate.listener.input.originalValueDescriptor,set(e){const t=this.value;if(translate.listener.input.originalValueDescriptor.set.call(this,e),e!==t){if(translate.node.find(this)){var a=translate.node.get(this);"number"==typeof a.lastTranslateRenderTime&&Date.now()-a.lastTranslateRenderTime<100||translate.node.delete(this)}translate.execute([this])}}})):console.log("已启动过了,无需在启动")},reset:function(){null!==translate.listener.input.originalValueDescriptor&&(Object.defineProperty(HTMLInputElement.prototype,"value",translate.listener.input.originalValueDescriptor),translate.listener.input.originalValueDescriptor=null)}},start:function(){void 0===translate.temp_listenerStartInterval&&(translate.listener.use=!0)},reset:function(){void 0!==translate.listener.observer&&null!=translate.listener.observer&&translate.listener.observer.disconnect(),translate.listener.isStart&&(translate.listener.isStart=!1),translate.listener.input.reset()},ignoreNode:[],translateExecuteNodeIgnoreExpireTime:1e3,addIgnore:function(e,t,a){let n="";n="string"==typeof e?e:nodeuuid.uuid(e),translate.listener.ignoreNode[n]={addtime:Date.now()+t,text:a}},refreshIgnoreNode:function(){var e=Date.now();for(const t in translate.listener.ignoreNode)translate.listener.ignoreNode[t].addtimeDate.now()&&(t=!1)),!0===t&&0===e.nodeValue.trim().length&&(t=!1),t},addListener:function(){if(1!=translate.listener.isStart){translate.listener.isStart=!0,translate.listener.config={attributes:!0,childList:!0,subtree:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0},translate.listener.callback=function(e,t){var a=[];for(let t of e){let e=[];if("childList"===t.type){if(t.addedNodes.length>0)for(var n=0;n0&&-1==translate.ignore.tag.indexOf(r)&&e.push(t.addedNodes[n])}if(t.removedNodes.length>0)for(var s=0;s-1&&l.condition(t.target)))continue}var o=t.target.getAttributeNode(t.attributeName);translate.listener.nodeValueChangeNeedTranslate(o)&&(translate.node.delete(o),e=[o])}else if("characterData"===t.type){translate.listener.nodeValueChangeNeedTranslate(t.target)&&(translate.node.delete(t.target),e=[t.target])}for(let t of e){for(var i=!1,u=0;u0){translate.time.log("监听到元素发生变化,"+a.length+"个元素");var d=[];for(let e of a){for(var g=!1,c=0;cDate.now()&&"string"==typeof e.nodeValue&&e.nodeValue==translate.listener.ignoreNode[t].text||d.push(e)}if(d.length<1)return;translate.time.log("将监听到的发生变化的元素进行整理,得到"+d.length+"个元素,对其进行翻译"),translate.execute(d)}},translate.listener.observer=new MutationObserver(translate.listener.callback);for(var e=translate.getDocuments(),t=0;t-1&&translate.listener.input.start()}},renderTaskFinish:function(e){},execute:{renderStartByApi:[],renderStartByApiRun:function(e,t,a){for(var n=0;nt.originalText.length-e.originalText.length),this.taskQueue.set(e,a)))}for(var e in translate.listener.refreshIgnoreNode(),this.nodes)if(this.nodes.hasOwnProperty(e))for(var t=0;t0){if("value"===s.attribute){var u=translate.element.getNodeName(this.nodes[e][t]).toLowerCase();"input"!==u&&"textarea"!==u||(o=this.nodes[e][t],i="value")}null===o&&(o=this.nodes[e][t].getAttributeNode(s.attribute),i=s.attribute)}else o=this.nodes[e][t];if(void 0===translate.node.data.get(o)||null===translate.node.data.get(o)){translate.log("执行异常,渲染时,node 未在 translate.node 中找到, 这个理论上是不应该存在的,当前异常已被容错。 node:"+o),translate.log(this.nodes[e][r]);var d=translate.element.nodeAnalyse.get(n,s.attribute);translate.node.set(o,{attribute:i,originalText:d.text,whole:!0,translateTexts:{}}),translate.node.setModified(o,"create:translate.renderTask.execute")}translate.node.get(o).lastTranslateRenderTime=Date.now();var g=translate.element.nodeAnalyse.set(n,s.originalText,s.resultText,s.attribute);null!=translate.node.data.get(o)&&(translate.node.get(o).translateTexts[s.originalText]=s.resultText,translate.node.get(o).resultText=g.resultText,translate.history.translateText.add(translate.node.get(o).originalText,g.resultText)),translate.listener.addIgnore(this.nodes[e][r],translate.listener.translateExecuteNodeIgnoreExpireTime,g.resultText)}}else translate.log("WARNING : renderTask.execute 中,this.taskQueue.get(node) == null ,理论上要进行替换任务,就应该会有内容的,数据在理论上出现异常")}if(void 0!==this.taskQueue&&Object.keys(this.taskQueue).length>0){var c=this;setTimeout(function(){translate.listener.renderTaskFinish(c)},5)}}},state:0,waitingExecute:{use:!0,queue:[],add:function(e){translate.waitingExecute.queue.push(e);let t=setInterval(function(){if(0==translate.state){clearInterval(t);var e=translate.waitingExecute.get();translate.execute(e)}},500)},get:function(){return translate.waitingExecute.queue.length>0?translate.waitingExecute.queue.shift():(translate.log("警告, translate.waitingExecute.get 出现异常,quque已空,但还往外取。"),null)},isAllExecuteFinish:function(e,t,a,n,r){translate.listener.execute.renderFinishByApiRun(e,t,a);var s=translate.request.data[e].list[t][a];for(var l in translate.lifecycle.execute.translateNetworkAfter_Trigger({uuid:e,from:t,to:a,texts:s.texts,nodes:s.nodes,result:n,info:r}),translate.translateRequest[e])if(translate.translateRequest[e].hasOwnProperty(l)&&0==translate.translateRequest[e][l].executeFinish)return;translate.lifecycle.execute.renderFinish_Trigger(e,a),translate.state=0,translate.executeNumber++}},executeNumber:0,executeTriggerNumber:0,lifecycle:{changeLanguage:{trigger:[],trigger_Trigger:function(e){for(var t=0;t0&&(translate.to=r)}if(void 0!==e&&null!=e?void 0===e.length?(t=new Array)[0]=e:t=e:t=translate.getDocuments(),translate.lifecycle.execute.trigger_Trigger({to:translate.to,docs:t,executeTriggerNumber:a,uuid:n})){if(translate.waitingExecute.use&&0!=translate.state){var s="";if(void 0!==e&&null!=e){for(var l=e.slice(0,2),o=0;o0&&(s+=", "),1===l[o].nodeType?(s=s+""+l[o].tagName,"string"==typeof l[o].id&&l[o].id.length>0&&(s=s+" id="+l[o].id),null!=l[o].getAttribute("class")&&"string"==typeof l[o].getAttribute("class")&&l[o].getAttribute("class").length>0&&(s=s+" class="+l[o].getAttribute("class"))):2!==l[o].nodeType&&3!==l[o].nodeType||(s+=l[o].nodeValue.replaceAll(/\r?\n/g,"[换行符]"));s=" ("+e.length+")["+s+(e.length>2?", ...":"")+"]"}return translate.log("当前翻译未完结,新翻译任务已加入等待翻译队列,待上个翻译任务结束后便会执行当前翻译任务"+s),translate.waitingExecute.add(e),void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:4,triggerNumber:a})}translate.state=2,translate.time.log("触发"),translate.request.initRequest(),void 0!==e&&(translate.useVersion="v2"),"v1"==translate.useVersion&&(translate.log("提示:https://github.com/xnx3/translate 在 v2.5 版本之后,由于谷歌翻译调整,免费翻译通道不再支持,所以v1版本的翻译接口不再被支持,v1全线下架。考虑到v1已不能使用,当前已自动切换到v2版本。如果您使用中发现什么异常,请针对v2版本进行适配。"),translate.useVersion="v2"),translate.time.log("渲染出选择语言的select窗口-开始");try{translate.selectLanguageTag.render()}catch(e){translate.log(e)}if(translate.time.log("渲染出选择语言的select窗口-已完成"),null==translate.to||void 0===translate.to||0==translate.to.length){if(!translate.autoDiscriminateLocalLanguage)return translate.state=0,void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:6,triggerNumber:a});translate.executeByLocalLanguage()}if(translate.to==translate.language.getLocal()&&!translate.language.translateLocal)return translate.state=0,void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:8,triggerNumber:a});try{for(var i in translate.element.tagAttribute)if(translate.element.tagAttribute.hasOwnProperty(i)&&translate.element.tagAttribute[i]instanceof Array){var u=translate.element.tagAttribute[i];translate.element.tagAttribute[i]={attribute:u,condition:function(e){return!0}}}}catch(e){translate.log(e)}translate.time.log("生命周期-触发翻译进行之前,用户自定义的钩子-开始"),translate.lifecycle.execute.start_Trigger({uuid:n,to:translate.to}),translate.time.log("生命周期-触发翻译进行之前,用户自定义的钩子-完成"),translate.time.log("进行图片翻译-开始"),translate.images.execute(),translate.time.log("进行图片翻译-完成"),t.length>1500&&(translate.log("------tip------"),translate.log("警告 translate.execute( docs ) 传入的docs.length 过大,超过1500,这不正常,当前 docs.length : "+t.length+" , 它依旧会正常进行执行,但会有性能损耗。 这个情况很可能是你用的某些框架,没有等dom渲染完就执行了translate.execute() ,同时启用了dom变动监听,导致监听到页面加载大量的DOM渲染; 另外也有可能你本身页面就是列表页或者什么原因就是有大量的动态元素获取后渲染,如果是这种情况,这是正常的。")),translate.time.log("开始扫描要翻译区域的元素");for(var d=0;d0)for(var c in translate.nodeQueue[n].list)translate.nodeQueue[n].list.hasOwnProperty(c)&&translate.language.translateLanguagesRange.indexOf(c)<0&&delete translate.nodeQueue[n].list[c];for(var c in void 0===translate.nodeQueue[n]&&(translate.nodeQueue[n]=new Array,translate.nodeQueue[n].list=[],translate.log("--- translate.js warn tip 警告!! ---"),translate.log("您使用translate.js时可能放的位置不对,不要吧 translate.js 放在网页最顶部,这样当 translate.js 进行执行,也就是 translate.execute() 执行时,因为网页是从上往下加载,它放在网页最顶部,那么它执行时网页后面的内容都还没加载出来,这个是不会获取到网页任何内容的,也就是它是不起任何作用的")),translate.nodeQueue[n].list)if(translate.nodeQueue[n].list.hasOwnProperty(c)){for(var f in translate.nodeQueue[n].list[c])translate.nodeQueue[n].list[c].hasOwnProperty(f)&&"function"!=typeof translate.nodeQueue[n].list[c][f]&&void 0!==translate.nodeQueue[n].list[c][f].nodes&&void 0!==translate.nodeQueue[n].list[c][f].nodes.length&&0==translate.nodeQueue[n].list[c][f].nodes.length&&delete translate.nodeQueue[n].list[c][f];0==Object.keys(translate.nodeQueue[n].list[c]).length&&delete translate.nodeQueue[n].list[c]}translate.time.log("对扫描到的元素进行预处理完毕");var h={},p={},m=new Map,v={},x=[];for(var c in translate.nodeQueue[n].list){if(!translate.nodeQueue[n].list.hasOwnProperty(c))continue;if(null==c||void 0===c||0==c.length||"undefined"==c)continue;h[c]=[],m.set(c,new Map),p[c]=[];let e=new translate.renderTask;for(var f in v[c]=[],translate.nodeQueue[n].list[c])if(translate.nodeQueue[n].list[c].hasOwnProperty(f)&&"function"!=typeof translate.nodeQueue[n].list[c][f]){var y=translate.nodeQueue[n].list[c][f].original,T=translate.nodeQueue[n].list[c][f].translateText,b=y==T?f:translate.util.hash(T);translate.nodeQueue[n].list[c][f].cacheHash=b;var w=translate.storage.get("hash_"+translate.to+"_"+b);if(null!=w&&w.length>0)for(var N=0;N-1&&(i=h[e.from][l]);var u=p[e.from][l],d=translate.nodeQueue[n].list[o][u].cacheHash,g="";try{g=translate.nodeQueue[n].list[o][u].original}catch(e){translate.log("uuid:"+n+", originalWord:"+g+", lang:"+o+", hash:"+u+", text:"+i+", queue:"+translate.nodeQueue[n]),translate.log(e);continue}for(var c=0;c0&&(s=r.toLowerCase()),"keywords"!=n&&"description"!=n&&"sharetitle"!=n&&"og:title"!=s&&"og:description"!=s&&"og:site_name"!=s&&"og:novel:latest_chapter_name"!=s||"string"==typeof e.content&&e.content.trim().length>0&&t.push({text:e.content,attribute:"content",node:e.getAttributeNode("content")});break;case"IMG":"string"==typeof e.alt&&e.alt.trim().length>0&&t.push({text:e.alt,attribute:"alt",node:e.getAttributeNode("alt")});break;case"INPUT":if(void 0!==e.attributes.type&&null!==e.attributes.type&&"string"==typeof e.attributes.type.nodeValue&&("button"==e.attributes.type.nodeValue.toLowerCase()||"submit"==e.attributes.type.nodeValue.toLowerCase())){var l=e.attributes.value;null!=l&&"string"==typeof l.nodeValue&&l.nodeValue.trim().length>0&&t.push({text:l.nodeValue,attribute:"value",node:l})}void 0!==e.attributes.placeholder&&"string"==typeof e.attributes.placeholder.nodeValue&&e.attributes.placeholder.nodeValue.trim().length>0&&t.push({text:e.attributes.placeholder.nodeValue,attribute:"placeholder",node:e.attributes.placeholder});break;case"TEXTAREA":void 0!==e.attributes.placeholder&&"string"==typeof e.attributes.placeholder.nodeValue&&e.attributes.placeholder.nodeValue.trim().length>0&&t.push({text:e.attributes.placeholder.nodeValue,attribute:"placeholder",node:e.attributes.placeholder})}var o=translate.element.tagAttribute[a.toLowerCase()];if(void 0!==o)for(var i=0;i-1&&o.condition(e)){for(var d=!1,g=0;g0){var c=e.getAttributeNode("title");t.push({text:c.nodeValue,attribute:"title",node:c})}return"string"==typeof e.nodeValue&&e.nodeValue.trim().length>0&&t.push({text:e.nodeValue,attribute:"",node:e}),t},set:function(e,t,a,n){return translate.element.nodeAnalyse.analyse(e,t,a,n)},analyse:function(e,t,a,n){var r=new Array;r.node=e,r.text="";var s=translate.element.getNodeName(e);if(null!=n&&"string"==typeof n&&n.length>0){var l;if(l="INPUT"!==s&&"TEXTAREA"!==s||"value"!=n.toLowerCase()?e[n]:e.value,r.text=l,void 0!==t&&t.length>0&&void 0!==l){var o=translate.util.textReplace(l,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),"INPUT"!==s&&"TEXTAREA"!==s||"value"!=n.toLowerCase()?e[n]=o:e.value=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}return r}if("INPUT"==s||"TEXTAREA"==s){if(null==e.attributes||void 0===e.attributes)return r.text="",r;if("INPUT"==s&&void 0!==e.attributes.type&&null!=typeof e.attributes.type.nodeValue&&("button"==e.attributes.type.nodeValue.toLowerCase()||"submit"==e.attributes.type.nodeValue.toLowerCase())){var i=e.attributes.value;if(null!=i&&void 0!==i&&void 0!==i.nodeValue&&i.nodeValue.length>0){if(void 0!==t&&t.length>0){o=translate.util.textReplace(i.nodeValue,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),i.nodeValue=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}return r.text=i.nodeValue,r.node=i,r}}if(void 0!==e.attributes.placeholder){if(void 0!==t&&t.length>0){o=translate.util.textReplace(e.attributes.placeholder.nodeValue,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),e.attributes.placeholder.nodeValue=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}return r.text=e.attributes.placeholder.nodeValue,r.node=e.attributes.placeholder,r}return r.text="",r}if("META"==s){if(void 0!==e.name&&null!=e.name){var u=e.name.toLowerCase(),d=e.getAttribute("property"),g="";if(void 0!==d&&null!=d&&d.length>0&&(g=d.toLowerCase()),"keywords"==u||"description"==u||"sharetitle"==u||"og:title"==g||"og:description"==g||"og:site_name"==g||"og:novel:latest_chapter_name"==g){if(void 0!==t&&null!=t&&t.length>0){o=translate.util.textReplace(e.content,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),e.content=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}return r.text=e.content,r}}return r.text="",r}if("IMG"==s){if(void 0===e.alt||null==e.alt)return r.text="",r;if(void 0!==t&&t.length>0){o=translate.util.textReplace(e.alt,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),e.alt=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}return r.text=e.alt,r}if(null==e.nodeValue||void 0===e.nodeValue)r.text="";else if(0==e.nodeValue.trim().length)r.text="";else{if(void 0!==t&&null!=t&&t.length>0){o=translate.util.textReplace(e.nodeValue,t,a,translate.to);translate.element.nodeAnalyse.analyseReplaceBefore_DateToTranslateNode(e,n,o),e.nodeValue=o,o.indexOf(a)>-1?r.resultText=o:r.resultText=""}r.text=e.nodeValue}return r},analyseReplaceBefore_DateToTranslateNode:function(e,t,a){var n=null;if("string"==typeof t&&t.length>0){if(null!==t&&"value"===t){var r=translate.element.getNodeName(e).toLowerCase();"input"!==r&&"textarea"!==r||(n=e,"value")}null===n&&(n=e.getAttributeNode(t),t)}else n=e;translate.node.find(n)&&(void 0===translate.node.get(n).translateResults&&(translate.node.get(n).translateResults={}),translate.node.get(n).translateResults[a]=1)}},getNodeName:function(e){if(null==e||void 0===e)return"";if(null==e.nodeName||void 0===e.nodeName)return"";e.nodeName;return"string"==typeof e.nodeName?e.nodeName:"string"==typeof e.tagName&&e.tagName.length>0?e.tagName:(translate.log("warn : get nodeName is null, this node ignore translate. node : "),translate.log(e),"")},whileNodes:function(e,t){if(null!=t&&void 0!==t){void 0!==translate.nodeQueue[e]&&null!=translate.nodeQueue[e]||(translate.nodeQueue[e]=new Array,translate.nodeQueue[e].expireTime=Date.now()+12e4,translate.nodeQueue[e].list=new Array),"object"==typeof t&&"string"==typeof t.title&&t.title.trim().length>0&&(translate.ignore.isIgnore(t)||translate.addNodeToQueue(e,t.getAttributeNode("title"),t.title,""));var a=translate.element.getNodeName(t).toLowerCase();if(void 0!==translate.element.tagAttribute[a])for(var n in translate.element.tagAttribute[a].attribute)if(translate.element.tagAttribute[a].attribute.hasOwnProperty(n)&&(void 0===translate.element.tagAttribute[a].condition||translate.element.tagAttribute[a].condition(t))){var r=translate.element.tagAttribute[a].attribute[n],s=!1;if("input"!==a&&"textarea"!==a||"value"!=r.toLowerCase()){var l=t.getAttribute(r);if(void 0!==l&&null!=l||(l=t[r],"DOMProperty"),void 0===l||null==l)continue}else l=t.value,"DOMProperty",s=!0;translate.ignore.isIgnore(t)||translate.addNodeToQueue(e,s?t:t.getAttributeNode(r),l,s?"value":"")}var o=t.childNodes;if(null!=o&&void 0!==o)if(o.length>0)for(var i=0;i0?"input"!==r&&"textarea"!==r||null===n||"value"!==n?(s=t.getAttributeNode(n),o=n):(s=t,o="value"):s=t,null==translate.node.get(s)&&translate.node.set(s,{}),translate.node.get(s).attribute=o,"string"!=typeof translate.node.get(s).originalText){translate.node.get(s).originalText=a,void 0===translate.node.get(s).translateTexts&&(translate.node.get(s).translateTexts={});var i=new Array;i.push(a);for(var u=[],d=0;d0&&i[0]!=a?translate.node.get(s).whole=!1:translate.node.get(s).whole=!0;var y=[];for(c=0;c-1&&translate.log("自检发现您设置了 translate.whole.tag 其中有 html ,这个是不生效的,最大只允许设置到 body ")},isWhole:function(e){if(translate.whole.isEnableAll)return!0;if(0==translate.whole.class.length&&0==translate.whole.tag.length&&0==translate.whole.id.length&&0==translate.whole.isEnableAll)return!1;if(null==e||void 0===e)return!1;for(var t=e,a=100;a-- >0;){if(null==t||void 0===t)return!1;var n=translate.element.getNodeName(t).toLowerCase();if(n.length>0){if("html"==n||"#document"==n)return!1;if(translate.whole.tag.indexOf(n)>-1)return!0}if(null!=t.className){var r=t.className;if(null==r||"string"!=typeof r)continue;r=r.trim().split(" ");for(var s=0;s0&&translate.whole.class.indexOf(r[s])>-1)return!0}if(null!=t.id&&void 0!==t.id&&translate.whole.id.indexOf(t.id)>-1)return!0;t=t.parentElement}return!1}},language:{englishVarietys:["french","italian","deutsch","portuguese"],systems:{latin:{direction:"left-to-right",coreFeatures:"基础字母26个(A-Z),部分语言添加变音符号(如é、ñ、ü),从左到右书写",languages:["english","latin","french","spanish","deutsch","portuguese","italian","越南语","马来语","印尼语","土耳其语","波兰语","荷兰语","瑞典语","非洲诸语(多数)","美洲诸语(多数)","菲律宾语","哈萨克语(现代拉丁化)"]},chinese:{direction:"left-to-right",coreFeatures:"表意文字,单字独立,可组合成词,笔画复杂,现代多横向书写",languages:["chinese_simplified","chinese_traditional","japanese","korean"]},arabic:{direction:"right-to-left",coreFeatures:"表意文字,单字独立,可组合成词,笔画复杂,现代多横向书写",languages:["阿拉伯语","波斯语","乌尔都语","旁遮普语(巴基斯坦)","豪萨语(西非)","普什图语"]},cyrillic:{direction:"left-to-right",coreFeatures:"源于希腊字母,字母形态独特(如п、в、м),部分字母与拉丁字母形似但发音不同",languages:["俄语","乌克兰语","白俄罗斯语","保加利亚语","塞尔维亚语(官方)"]},thai:{direction:"left-to-right",coreFeatures:"元音附标文字,字母弯曲优美,含音调符号(影响词义)",languages:["thai"]}},generateLanguageNameObject:function(){var e=new Map;for(var t in translate.language.systems)if(translate.language.systems.hasOwnProperty(t))for(var a=0;a0?e:translate.language.getLocal()},setDefaultTo:function(e){var t=translate.storage.get("to");null!=t&&void 0!==t&&t.length>0||(translate.storage.set("to",e),translate.to=e)},clearCacheLanguage:function(){void 0!==translate.language.setUrlParamControl_use&&translate.language.setUrlParamControl_use&&(translate.log("使用提示:"),translate.log("translate.language.setUrlParamControl(...) 的作用是 可以通过URL传一个语种,来指定当前页面以什么语种显示。 参考文档: http://translate.zvo.cn/4075.html"),translate.log("translate.language.clearCacheLanguage() 是清除历史翻译语种缓存,也就是清除之前指定翻译为什么语种。 参考文档:http://translate.zvo.cn/4080.html"),translate.log("如果你执行了 translate.language.setUrlParamControl(...) 那么是要根据url传参来切换语种的,但是后面又出现了 translate.language.clearCacheLanguage() 它会阻止 translate.language.setUrlParamControl(...) 它的设置,即使有url传递翻译为什么语言,也会因为 translate.language.clearCacheLanguage() 给清除掉,使URL传参的语种不起任何作用。")),translate.to="",translate.storage.set("to","")},setUrlParamControl:function(e){translate.language.setUrlParamControl_use=!0,(void 0===e||e.length<1)&&(e="language");var t=translate.util.getUrlParam(e);void 0!==t&&""!=t&&"null"!=t&&"undefined"!=t&&(translate.storage.set("to",t),translate.to=t)},getTranslateAreaText:function(){var e="",t=document.createElement("div");if(null!=translate.documents&&void 0!==translate.documents&&translate.documents.length>0)for(var a=0;a0&&t.appendChild(n.cloneNode(!0))}else void 0!==document.head&&t.appendChild(document.head.cloneNode(!0)),void 0!==document.body&&t.appendChild(document.body.cloneNode(!0));for(var r=0;r2)return translate.language.local;var e=translate.language.getTranslateAreaText();translate.language.local="chinese_simplified";var t=translate.language.recognition(e);return translate.language.local=t.languageName,translate.language.local},get:function(e){for(var t=new Array,a=new Array,n=[],r=[],s=0;s.008&&(void 0!==translate.language.local&&translate.language.local.length>1&&translate.language.englishVarietys.indexOf(translate.language.local)>-1&&(t.languageName=translate.language.local),"english"==t.languageName)){var r=translate.language.romanceSentenceAnaly(e);0==r.length?translate.log("语种识别异常,应该是 法语、西班牙语、葡萄牙语、意大利语 中的一种才是,除非是除了这四种语种之外的别的 罗曼语族 中的语种,当前已将 "+e+"识别为英语。 你可以联系我们求助 https://translate.zvo.cn/4030.html"):t.languageName=r}if(void 0!==a.japanese&&"japanese"!=t.languageName&&a.japanese/n>.08&&(t.languageName="japanese"),(void 0!==a.chinese_simplified||void 0!==a.chinese_traditional)&&void 0!==a.english&&"english"==t.languageName){var s=0;void 0!==a.chinese_simplified&&(s+=a.chinese_simplified),void 0!==a.chinese_traditional&&(s+=a.chinese_traditional),s/a.english>.05&&(t.languageName="chinese_simplified")}return void 0!==a.chinese_simplified&&void 0!==a.chinese_traditional&&"chinese_simplified"==t.languageName&&a.chinese_traditional/a.chinese_simplified>.03&&(t.languageName="chinese_traditional"),t},recognition_languageName_force:function(e){if(!translate.language.translateLocal)return e.languageName;if(translate.language.getLocal()==translate.language.getCurrent()&&!1===translate.language.translateLocal)return e.languageName;var t=translate.language.getCurrent();if(void 0!==translate.language.map().get(t)&&void 0!==translate.language.map().get(translate.language.getLocal())){var a={};for(var n in e.languageArray)e.languageArray.hasOwnProperty(n)&&void 0!==translate.language.map().get(n)&&(a[translate.language.map().get(n).system]=n);if("latin"==translate.language.map().get(t).system){delete a.latin;var r=Object.keys(a);if(r.length>0)return a[r[0]]}}return e.languageName},recognition:function(e){var t=translate.language.get(e),a=[],n=[],r=0;for(var s in t)if(t.hasOwnProperty(s)&&"object"==typeof t[s]){for(var l=0,o=0;ou&&(i=d,u=a[d]);var g={};for(var d in t)t.hasOwnProperty(d)&&(g[d]={},g[d].number=n[d],g[d].list=t[d]);var c={languageName:i,languageArray:g};return translate.language.recognitionAlgorithm(e,c,a,r)},getCharLanguage:function(e){if(null==e||void 0===e)return"";if(this.russian(e))return"russian";if(this.english(e))return"english";if(this.romance(e))return"romance";if(this.specialCharacter(e))return"specialCharacter";if(this.number(e))return"number";var t=this.chinese(e);return"simplified"==t?"chinese_simplified":"traditional"==t?"chinese_traditional":this.japanese(e)?"japanese":this.korean(e)?"korean":this.greek(e)?"greek":this.thai(e)?"thai":this.arabic(e)?"arabic":this.romanian(e)?"romanian":this.hebrew(e)?"hebrew":""},analyse:function(e,t,a,n,r){void 0===t[e]&&(t[e]=new Array);var s=0;void 0===a.storage_language||(translate.language.connector(r)&&(e=a.storage_language),s=a.storage_language==e?t[e].length-1:t[e].length),void 0===t[e][s]&&(t[e][s]=new Array,t[e][s].beforeText="",t[e][s].afterText="",t[e][s].text=""),t[e][s].text=t[e][s].text+r,0==translate.language.wordBlankConnector(translate.language.getLocal())&&translate.language.wordBlankConnector(translate.to)&&null!=a.storage_language&&void 0!==a.storage_language&&a.storage_language.length>0&&"specialCharacter"!=a.storage_language&&(0==translate.language.wordBlankConnector(a.storage_language)&&translate.language.wordBlankConnector(e)?t[a.storage_language][t[a.storage_language].length-1].afterText=" ":"english"==a.storage_language&&"english"!=e&&(t[e][s].beforeText=" "));var l=new Array;return l.langStrs=t,l.storage_language=e,l},connector:function(e){return!!/.*[\u0020\u00A0\u202F\u205F\u3000]+.*$/.test(e)||(!!/.*[\u0030-\u0039]+.*$/.test(e)||(!!/.*[\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u002C\u002D\u002E\u003A\u003B\u003F\u0040]+.*$/.test(e)||!!/.*[\u3002\uFF1F\uFF01\uFF0C\u3001\uFF1B\uFF1A\u300C\u300D\u300E\u300F\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\u3010\u3011\u2014\u2026\u2013\uFF0E\u300A\u300B\u3008\u3009\u00b7]+.*$/.test(e)))},wordBlankConnector:function(e){if(null==e||void 0===e)return!0;switch(e.trim().toLowerCase()){case"chinese_simplified":case"chinese_traditional":case"korean":case"japanese":return!1}return!0},chinese_traditional_dict:"皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊",chinese:function(e){return/.*[\u4e00-\u9fa5]+.*$/.test(e)?this.chinese_traditional_dict.indexOf(e)>-1?"traditional":"simplified":""},japanese:function(e){return!!/.*[\u3040-\u309F\u30A0-\u30FF]+.*$/.test(e)},korean:function(e){return!!/.*[\uAC00-\uD7AF]+.*$/.test(e)},russian:function(e){return!!/^[\u0410-\u044F\u0401\u0451]$/.test(e)},thai:function(e){return!!/^[\u0E01-\u0E59]$/.test(e)},arabic:function(e){return/^[\u0600-\u06FF\u0750-\u077F]$/.test(e)},romanian:function(e){return/^[\u00C0-\u00FF\u0100-\u017F\u0218-\u021B]$/.test(e)},greek:function(e){return!!/^[\u0391-\u03A9\u03B1-\u03C9]$/.test(e)},hebrew:function(e){return/^[\u0590-\u05FF]$/.test(e)},number:function(e){return!!/.*[\u0030-\u0039]+.*$/.test(e)},english:function(e){return!!/.*[\u0041-\u005a]+.*$/.test(e)||!!/.*[\u0061-\u007a]+.*$/.test(e)},romance_dict:["é","è","ê","à","ç","œ","ñ","á","ó","ò","ì","ã","õ"],romance:function(e){return this.romance_dict.indexOf(e)>-1},romanceSentenceAnaly:function(e){const t={french:{score:0,chars:["é","è","ê","à","ç","œ"]},spanish:{score:0,chars:["ñ","á","ó"],pairs:["ll"]},italian:{score:0,chars:["ò","ì"],pairs:["cc","ss"]},portuguese:{score:0,chars:["ã","õ"]}};for(let a=0;a{t[e].chars.includes(n)&&(t[e].score+=1)}),a{const a=t[e].pairs;a&&a.includes(n)&&(t[e].score+=2)})}}let a="",n=-1;return Object.keys(t).forEach(e=>{t[e].score>n&&(n=t[e].score,a=e)}),a||""},specialCharacter:function(e){return!!/.*[\u2460-\u24E9]+.*$/.test(e)||(!!/.*[\u2500-\u25FF]+.*$/.test(e)||(!!/.*[\u3200-\u33FF]+.*$/.test(e)||(!!/.*[\uFF00-\uFF5E]+.*$/.test(e)||(!!/.*[\u2000-\u22FF]+.*$/.test(e)||(!!/.*[\u3001-\u3036]+.*$/.test(e)||(!!/.*[\u0020-\u002F]+.*$/.test(e)||(!!/.*[\u003B\u003B\u003C\u003D\u003E\u003F\u005B\u005C\u005D\u005E\u005F\u0060\u007B\u007C\u007D\u007E]+.*$/.test(e)||(!!/.*[\u0009\u000a\u0020\u00A0\u1680\u180E\u202F\u205F\u3000\uFEFF]+.*$/.test(e)||(!!/.*[\u2000-\u200B]+.*$/.test(e)||!!/.*[\u2C60-\u2C77]+.*$/.test(e))))))))))},textTranslateReplace:function(e,t,a,n){return translate.util.textReplace(e,t,a,n)}},executeByLocalLanguage:function(){var e=translate.util.browserDefaultLanguage();void 0!==e&&e.length>0?translate.changeLanguage(e):"string"!=typeof translate.request.api.ip||null==translate.request.api.ip||translate.request.api.ip.length<1||translate.request.post(translate.request.api.ip,{},function(e,t){1!=e.result?(translate.log("==== ERROR 获取当前用户所在区域异常 ===="),translate.log(data.info),translate.log("==== ERROR END ====")):(translate.storage.set("to",e.language),translate.to=e.language,translate.execute())},null)},util:{textReplace:function(e,t,a,n,r){if(e==t)return a;var s=translate.language.wordBlankConnector(n),l=t,o=[",",":","。"],i=[",",":","."],u=l.charAt(0),d=l.charAt(l.length-1),g=[];if(g.push(t),s){if(o.indexOf(u)>-1){var c=i[o.indexOf(u)]+" "+l.substring(1,l.length);g.push(c),o.indexOf(d)>-1&&g.push(c.substring(0,c.length-1)+i[o.indexOf(d)])}o.indexOf(d)>-1&&g.push(l.substring(0,l.length-1)+i[o.indexOf(d)])}else{if(i.indexOf(u)>-1){var f=o[i.indexOf(u)]+" "+l.substring(1,l.length);g.push(f),i.indexOf(d)>-1&&g.push(f.substring(0,f.length-1)+o[i.indexOf(d)])}i.indexOf(d)>-1&&g.push(l.substring(0,l.length-1)+o[i.indexOf(d)])}for(var h=0;h-1&&(e=translate.util.textReplace_service(e,g[h],a,n,r));return e},textReplace_service:function(e,t,a,n,r){if(e==t)return a;for(var s=translate.util.findParticiple(e,t,r),l=s.length-1;l>-1;l--){let r=s[l],i=""+a,u=""+t;if(translate.language.wordBlankConnector(n)){let a=s[l];var o=s[l]+t.length;if(o0&&" "==i.charAt(i.length-1)||(i+=" ")}if(a>0){let t=e.charAt(a-1);/。/.test(t)?(r--,i=". "+i,u="。"+u):/,/.test(t)?(r--,i=", "+i,u=","+u):/:/.test(t)?(r--,i=": "+i,u=":"+u):-1!==[" ","\n","\t","[","|","_","-","/"].indexOf(t)||i.length>0&&" "==i.charAt(0)||(i=" "+i)}}let d=translate.util.replaceFromIndex(e,r,u,i);d.replaceEndIndex<1?translate.log("translate.util.findParticiple 中已经发现了,但是实际没有替换,出现异常了!理论上这是不应该出现的。 text:"+e+" , index:"+s[l]+", translateOriginal:"+t):e=d.text}return e},findParticiple:function(e,t,a){var n=[];void 0!==a&&null!=a||(a=[]);for(var r=[],s=0;st.length&&r.push(a[s]);for(var l=0,o=30;e.indexOf(t,l)>-1&&o-- >0;){var i=e.indexOf(t,l),u=!1;if(r.length>0)for(var d=0;d-1){return{text:r+s.replace(a,n),replaceEndIndex:t+l+n.length}}return{text:r,replaceEndIndex:0}},uuid:function(){var e=(new Date).getTime();return window.performance&&"function"==typeof window.performance.now&&(e+=performance.now()),"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,function(t){var a=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?a:3&a|8).toString(16)})},findTag:function(e){return/<[^>]+>/g.test(e)},arrayFindMaxNumber:function(e){for(var t={},a=[],n=0,r=0,s=e.length;rn&&(n=t[e[r]]);for(var l in t)t.hasOwnProperty(l)&&t[l]===n&&a.push(l);return a},hash:function(e){if(null==e||void 0===e)return e;var t,a=0;if(0===e.length)return a;for(t=0;t=200&&t.status<300||0==t.status||304==t.status){var a=document.getElementsByTagName("HTML")[0],n=document.createElement("script");n.language="javascript",n.type="text/javascript";try{n.appendChild(document.createTextNode(t.responseText))}catch(e){n.text=t.responseText}return a.appendChild(n),!0}return!1}return!1},loadMsgJs:function(){"undefined"==typeof msg&&translate.util.synchronizesLoadJs("https://res.zvo.cn/msg/msg.js")},objSort:function(e){var t=Array.from(Object.keys(e));t.sort(function(e,t){return t.length-e.length});var a=new Array;for(var n of t)a[n]=e[n];return a},versionStringToInt:function(e){var t=e.split("."),a=0;return a=1e3*parseInt(t[0])*1e3+a,a=1e3*parseInt(t[1])+a,a=parseInt(t[2])+a},split:function(e,t,a){let n=t,r=[];if(JSON.stringify(e).length<=t)r.push(e);else{let a=JSON.stringify(e).trim().substring(1,JSON.stringify(e).length-1);if(JSON.stringify(e).length-t<=2){t-=4;let e=a.substring(0,a.lastIndexOf('","')+1),n=a.substring(a.lastIndexOf('","')+2);r.push(JSON.parse("["+e+"]")),r.push(JSON.parse("["+n+"]"))}else{t-=2;let e=0;for(;e-a.length<0;){let n="",s=(n=e+t-a.length>=0?a.substring(e):a.substring(e,e+t)).length,l=1;if(n.endsWith('"')){if(n.endsWith('","'))s-=2;else if(!n.startsWith('"')){s=n.lastIndexOf('","')+1}}else if(n.endsWith('",'))s-=1;else{(s=n.lastIndexOf('","')+1)<=0&&(s=n.startsWith('"')?n.length-1:n.length-2,n.endsWith('"')||(l=0))}let o="";s-n.length>0||s-0==0?s+=(o=n).length:o=n.substring(0,s),o.startsWith('"')||o.startsWith(',"')||(o='"'+o),o.endsWith('"')||(o+='"'),e+=s+l,o="["+o+"]";try{r.push(JSON.parse(o))}catch(t){e=e-(s+l)+1}}}}return a&&a>0&&(r=translate.util._splitMaxSize(r,n,a)),r},_splitMaxSize:function(e,t,a){let n=[],r=[];if(e.forEach(function(e,s){if((e=r.concat(e)).length>a){let s=e.slice(0,a),l=e.slice(a),o=1;for(;JSON.stringify(s).length>t&&(s=e.slice(0,a-o),l=e.slice(a-o),!(++o>=e.length+1)););n.push(s),r.length=0,r=l}else{let s=e,l=[],o=1;for(;JSON.stringify(s).length>t&&(s=e.slice(0,a-o),l=e.slice(a-o),!(++o>=e.length+1)););n.push(s),r.length=0,r=l}}),r.length>0){let e=[];e.push(r);let s=translate.util._splitMaxSize(e,t,a);n=n.concat(s)}return n},browserLanguage:{zh:"chinese_simplified","zh-CN":"chinese_simplified","zh-TW":"chinese_traditional","zh-HK":"chinese_traditional",co:"corsican",gn:"guarani",rw:"kinyarwanda",ha:"hausa",no:"norwegian",nl:"dutch",yo:"yoruba",en:"english","en-US":"english",kok:"gongen",la:"latin",ne:"nepali",fr:"french",cs:"czech",haw:"hawaiian",ka:"georgian",ru:"russian",fa:"persian",bho:"bhojpuri",hi:"hindi",be:"belarusian",sw:"swahili",is:"icelandic",yi:"yiddish",tw:"twi",ga:"irish",gu:"gujarati",km:"khmer",sk:"slovak",he:"hebrew",kn:"kannada",hu:"hungarian",ta:"tamil",ar:"arabic",bn:"bengali",az:"azerbaijani",sm:"samoan",af:"afrikaans",id:"indonesian",da:"danish",sn:"shona",bm:"bambara",lt:"lithuanian",vi:"vietnamese",mt:"maltese",tk:"turkmen",as:"assamese",ca:"catalan",si:"singapore",ceb:"cebuano",gd:"scottish-gaelic",sa:"sanskrit",pl:"polish",gl:"galician",lv:"latvian",uk:"ukrainian",tt:"tatar",cy:"welsh",ja:"japanese",fil:"filipino",ay:"aymara",lo:"lao",te:"telugu",ro:"romanian",ht:"haitian_creole",doi:"dogrid",sv:"swedish",mai:"maithili",th:"thai",hy:"armenian",my:"burmese",ps:"pashto",hmn:"hmong",dv:"dhivehi",lb:"luxembourgish",sd:"sindhi",ku:"kurdish",tr:"turkish",mk:"macedonian",bg:"bulgarian",ms:"malay",lg:"luganda",mr:"marathi",et:"estonian",ml:"malayalam",de:"deutsch",sl:"slovene",ur:"urdu",pt:"portuguese",ig:"igbo",ckb:"kurdish_sorani",om:"oromo",el:"greek",es:"spanish",fy:"frisian",so:"somali",am:"amharic",ny:"nyanja",pa:"punjabi",eu:"basque",it:"italian",sq:"albanian",ko:"korean",tg:"tajik",fi:"finnish",ky:"kyrgyz",ee:"ewe",hr:"croatian",kri:"creole",qu:"quechua",bs:"bosnian",mi:"maori"},browserDefaultLanguage:function(){var e=navigator.language||navigator.userLanguage;if("string"==typeof e&&e.length>0){var t=translate.util.browserLanguage[e];if(void 0!==t)return t;translate.log("browser default language : "+e+", translate.js current translate channel not support this language ")}return""},urlSplitByText:function(e){const t=e.split(/(https?:\/\/[\w\-._~:\/?#[\]@!$&'()*+;=%]+(?=[\s\u4e00-\u9fa5,。;,!?]|$))/gi);let a={};for(let e=0;e=48&&e.charCodeAt(a)<=57;)a++;for(;n=48&&t.charCodeAt(n)<=57;)n++;if(a=r&&n>=s)return!0;if(e[a]!==t[n])return!1;a++,n++}return!0}},service:{name:"translate.service",use:function(e){if(void 0===translate.enterprise||1!=translate.enterprise.isUse){if("string"==typeof e&&(translate.service.name=e,"translate.service"!=e)){if(translate.whole.enableAll(),"giteeai"==e.toLowerCase())return void(translate.request.api.host=["https://giteeai.zvo.cn/","https://deutsch.enterprise.api.translate.zvo.cn:1000/","https://api.translate.zvo.cn:1000/","https://america.api.translate.zvo.cn:1000/"]);if("siliconflow"==e.toLowerCase())return void(translate.request.api.host=["https://siliconflow.zvo.cn/","https://america.api.translate.zvo.cn:1414/","https://deutsch.enterprise.api.translate.zvo.cn:1414/"])}}else translate.log("您已启用了企业级翻译通道 translate.enterprise.use(); (文档:https://translate.zvo.cn/4087.html) , 所以您设置的 translate.service.use('"+e+"'); (文档:https://translate.zvo.cn/4081.html) 将失效不起作用,有企业级翻译通道全部接管。")},edge:{api:{translate:"https://edge.microsoft.com/translate/translatetext?from={from}&to={to}&isEnterpriseClient=false"},language:{json:[{id:"ukrainian",name:"Україна",serviceId:"uk"},{id:"norwegian",name:"Norge",serviceId:"no"},{id:"welsh",name:"Iaith Weleg",serviceId:"cy"},{id:"dutch",name:"nederlands",serviceId:"nl"},{id:"japanese",name:"日本語",serviceId:"ja"},{id:"filipino",name:"Pilipino",serviceId:"fil"},{id:"english",name:"English",serviceId:"en"},{id:"lao",name:"ກະຣຸນາ",serviceId:"lo"},{id:"telugu",name:"తెలుగుName",serviceId:"te"},{id:"romanian",name:"Română",serviceId:"ro"},{id:"nepali",name:"नेपालीName",serviceId:"ne"},{id:"french",name:"Français",serviceId:"fr"},{id:"haitian_creole",name:"Kreyòl ayisyen",serviceId:"ht"},{id:"czech",name:"český",serviceId:"cs"},{id:"swedish",name:"Svenska",serviceId:"sv"},{id:"russian",name:"Русский язык",serviceId:"ru"},{id:"malagasy",name:"Malagasy",serviceId:"mg"},{id:"burmese",name:"ဗာရမ်",serviceId:"my"},{id:"pashto",name:"پښتوName",serviceId:"ps"},{id:"thai",name:"คนไทย",serviceId:"th"},{id:"armenian",name:"Արմենյան",serviceId:"hy"},{id:"chinese_simplified",name:"简体中文",serviceId:"zh-CHS"},{id:"persian",name:"Persian",serviceId:"fa"},{id:"chinese_traditional",name:"繁體中文",serviceId:"zh-CHT"},{id:"kurdish",name:"Kurdî",serviceId:"ku"},{id:"turkish",name:"Türkçe",serviceId:"tr"},{id:"hindi",name:"हिन्दी",serviceId:"hi"},{id:"bulgarian",name:"български",serviceId:"bg"},{id:"malay",name:"Malay",serviceId:"ms"},{id:"swahili",name:"Kiswahili",serviceId:"sw"},{id:"oriya",name:"ଓଡିଆ",serviceId:"or"},{id:"icelandic",name:"ÍslandName",serviceId:"is"},{id:"irish",name:"Íris",serviceId:"ga"},{id:"khmer",name:"ភាសា​ខ្មែរName",serviceId:"km"},{id:"gujarati",name:"ગુજરાતી",serviceId:"gu"},{id:"slovak",name:"Slovenská",serviceId:"sk"},{id:"kannada",name:"ಕನ್ನಡ್Name",serviceId:"kn"},{id:"hebrew",name:"היברית",serviceId:"he"},{id:"hungarian",name:"magyar",serviceId:"hu"},{id:"marathi",name:"मराठीName",serviceId:"mr"},{id:"tamil",name:"தாமில்",serviceId:"ta"},{id:"estonian",name:"eesti keel",serviceId:"et"},{id:"malayalam",name:"മലമാലം",serviceId:"ml"},{id:"inuktitut",name:"ᐃᓄᒃᑎᑐᑦ",serviceId:"iu"},{id:"arabic",name:"بالعربية",serviceId:"ar"},{id:"deutsch",name:"Deutsch",serviceId:"de"},{id:"slovene",name:"slovenščina",serviceId:"sl"},{id:"bengali",name:"বেঙ্গালী",serviceId:"bn"},{id:"urdu",name:"اوردو",serviceId:"ur"},{id:"azerbaijani",name:"azerbaijani",serviceId:"az"},{id:"portuguese",name:"português",serviceId:"pt"},{id:"samoan",name:"lifiava",serviceId:"sm"},{id:"afrikaans",name:"afrikaans",serviceId:"af"},{id:"tongan",name:"汤加语",serviceId:"to"},{id:"greek",name:"ελληνικά",serviceId:"el"},{id:"indonesian",name:"IndonesiaName",serviceId:"id"},{id:"spanish",name:"Español",serviceId:"es"},{id:"danish",name:"dansk",serviceId:"da"},{id:"amharic",name:"amharic",serviceId:"am"},{id:"punjabi",name:"ਪੰਜਾਬੀName",serviceId:"pa"},{id:"albanian",name:"albanian",serviceId:"sq"},{id:"lithuanian",name:"Lietuva",serviceId:"lt"},{id:"italian",name:"italiano",serviceId:"it"},{id:"vietnamese",name:"Tiếng Việt",serviceId:"vi"},{id:"korean",name:"한국어",serviceId:"ko"},{id:"maltese",name:"Malti",serviceId:"mt"},{id:"finnish",name:"suomi",serviceId:"fi"},{id:"catalan",name:"català",serviceId:"ca"},{id:"croatian",name:"hrvatski",serviceId:"hr"},{id:"bosnian",name:"bosnian",serviceId:"bs-Latn"},{id:"polish",name:"Polski",serviceId:"pl"},{id:"latvian",name:"latviešu",serviceId:"lv"},{id:"maori",name:"Maori",serviceId:"mi"}],getMap:function(){if(void 0===translate.service.edge.language.map){translate.service.edge.language.map=new Array;for(var e=0;e1){for(var l=-1,o=0;ol;g--){var c=s[g].length;for(d=0;d0){if(void 0!==translate.temp_request_init)return;translate.temp_request_init=1;try{translate.request.send(translate.request.api.init,{},{},function(e){0!=e.result?1==e.result&&translate.util.versionStringToInt(e.version)>translate.util.versionStringToInt(translate.version.replace("v",""))&&translate.log("Tip : translate.js find new version : "+e.version):translate.log("translate.js init 初始化异常:"+e.info)},"post",!0,null,function(e){},!1)}catch(e){}}},appendParams:{},appendHeaders:{},response:function(e){},speedDetectionControl:{state:0,hostMasterNodeCutTime:2e3,hostQueue:[],hostQueueIndex:-1,disableTime:1e6,setCurrentHost:function(e){translate.storage.set("speedDetectionControl_hostQueue",""),translate.request.api.host=e,translate.request.speedDetectionControl.checkHostQueue=new Array,translate.request.speedDetectionControl.checkResponseSpeed_Storage(e,0)},getHostQueue:function(){if(0==translate.request.speedDetectionControl.hostQueue.length){var e=translate.storage.get("speedDetectionControl_hostQueue");if(null==e||void 0===e||""==e){"string"==typeof translate.request.api.host&&(translate.request.api.host=[""+translate.request.api.host]),translate.request.speedDetectionControl.hostQueue=[];for(var t=0;t6e4&&translate.request.speedDetectionControl.checkResponseSpeed()}return translate.request.speedDetectionControl.hostQueue},checkResponseSpeed_Storage:function(e,t){translate.request.speedDetectionControl.checkHostQueue.push({host:e,time:t}),translate.request.speedDetectionControl.checkHostQueue.sort((e,t)=>e.time-t.time),translate.storage.set("speedDetectionControl_hostQueue",JSON.stringify(translate.request.speedDetectionControl.checkHostQueue)),translate.storage.set("speedDetectionControl_lasttime",(new Date).getTime()),translate.request.speedDetectionControl.hostQueue=translate.request.speedDetectionControl.checkHostQueue},checkResponseSpeed:function(){translate.request.speedDetectionControl.state=1;var e={"content-type":"application/x-www-form-urlencoded"};if(!("string"!=typeof translate.request.api.connectTest||null==translate.request.api.connectTest||translate.request.api.connectTest.length<1)){translate.request.speedDetectionControl.checkHostQueue=[],translate.request.speedDetectionControl.checkHostQueueMap=[],"string"==typeof translate.request.api.host&&(translate.request.api.host=[""+translate.request.api.host]);for(var t=0;tt||(translate.log("异常,下标越界了!index:"+t),t=e.length-1),e[t].host}},getUrl:function(e){return translate.request.speedDetectionControl.getHost()+e+"?v="+translate.version},post:function(e,t,a,n){if(void 0!==t){void 0!==translate.enterprise&&translate.enterprise.automaticAdaptationService();translate.request.getUrl(e);if("client.edge"==translate.service.name){if(e==translate.request.api.translate)return void translate.service.edge.translate(e,t,a,n);if(e==translate.request.api.language){var r={info:"SUCCESS",result:1};return r.list=translate.service.edge.language.json,void a(r)}}this.send(e,t,t,a,"post",!0,{"content-type":"application/x-www-form-urlencoded"},n,!0)}},send:function(e,t,a,n,r,s,l,o,i){var u="";if(null!=t&&void 0!==t||(t={}),"string"==typeof t)u=t;else{for(var d in t.browserDefaultLanguage=translate.util.browserDefaultLanguage(),translate.request.appendParams)translate.request.appendParams.hasOwnProperty(d)&&(t[d]=translate.request.appendParams[d]);for(var g in void 0!==translate.enterprise&&void 0!==translate.enterprise.key&&"string"==typeof translate.enterprise.key&&translate.enterprise.key.length>0&&(t.key=translate.enterprise.key),t)t.hasOwnProperty(g)&&(u.length>0&&(u+="&"),u=u+g+"="+t[g])}0==e.indexOf("https://")||0==e.indexOf("http://")||(e=translate.request.getUrl(e));var c=null;try{c=new XMLHttpRequest}catch(e){c=new ActiveXObject("Microsoft.XMLHTTP")}if(c.data=a,c.open(r,e,s),null!=l)for(var g in l)l.hasOwnProperty(g)&&c.setRequestHeader(g,l[g]);for(var f in translate.request.appendHeaders)translate.request.appendHeaders.hasOwnProperty(f)&&c.setRequestHeader(f,translate.request.appendHeaders[f]);return"client.edge"!=translate.service.name&&c.setRequestHeader("currentpage",window.location.href+""),c.send(u),c.onreadystatechange=function(){if(4==c.readyState)if(translate.request.response(c),200==c.status){var a=null;if(void 0===c.responseText||null==c.responseText);else if(c.responseText.indexOf("{")>-1&&c.responseText.indexOf("}")>-1)try{a=JSON.parse(c.responseText)}catch(e){translate.log(e)}null===a?n(c.responseText):n(a,c.data)}else i&&(e.indexOf(translate.request.api.connectTest)>-1||("translate.service"==translate.service.name&&translate.log("----- translate.js 提示 -----\n翻译服务响应异常,解决这种情况可以有两种方案:\n【方案一】:使用采用最新版本 3.16.0及更高版本,js引用文件为 https://cdn.staticfile.net/translate.js/3.16.0/translate.js 并且使用 client.edge 模式 (增加一行设置代码就好,可参考 https://translate.zvo.cn/4081.html ),这样就不会再出现这种情况了,而且这个方案也是完全免费的。 \n【方案二】:采用企业级稳定翻译通道 ,但是这个相比于 方案一 来说,是有一定的收费的,大概一年600,这个就是专门为了高速及高稳定准备的,而相比于这个方案二,方案一则是全免费的。 因为方案二我们是部署了两个集群,而每个集群又下分了数个网络节点,包含中国大陆、香港、美国、欧洲、 等多个州,充分保障稳定、高效,同样也产生了不少成本,所以才需要付费。更多信息说明可以参考: http://translate.zvo.cn/4087.html \n【方案三】:私有部署你自己的翻译通道,并且启用内存级翻译缓存,毫秒级响应,但是需要依赖一台1核2G服务器,是最推荐的方式。具体参考:https://translate.zvo.cn/391129.html\n-------------"),translate.log("------- translate.js service api response error --------"),translate.log(" http code : "+c.status),translate.log(" response : "+c.response),translate.log(" request url : "+e),translate.log(" request data : "+JSON.stringify(t)),translate.log(" request method : "+r),translate.log("---------------------- end ----------------------"))),c.requestURL=e,null!=o&&o(c)},c},translateText:function(e,t,a){var n=new Array,r=translate.language.getLocal(),s=translate.language.getCurrent();if("string"==typeof e)n[0]=e;else{var l=Object.prototype.toString.call(e);if("[object Array]"==l)n=e;else{if("[object Object]"!=l)return void translate.log("translate.request.translateText 传入的值类型错误,请查阅文档: https://translate.zvo.cn/4077.html");void 0===e.texts&&translate.log("translate.request.translateText 传入的值类型异常,因为你没有传入 obj.texts 要翻译的具体文本! 请查阅文档: https://translate.zvo.cn/4077.html"),n="string"==typeof e.texts?[e.texts]:e.texts,"string"==typeof e.from&&e.from.length>0&&(r=e.from),"string"==typeof e.to&&e.to.length>0&&(s=e.to)}}for(var o=new Array,i=[],u={},d=0;d0?o[d]=c:(o[d]="",i.push(n[d]),u[g]=d)}if(0!=i.length){if(!("string"!=typeof translate.request.api.translate||null==translate.request.api.translate||translate.request.api.translate.length<1)){var f=translate.request.api.translate,h={from:r,to:s,text:encodeURIComponent(JSON.stringify(i))};translate.request.post(f,h,function(e,a){1!=e.result&&(translate.log("=======ERROR START======="),translate.log("from : "+a.from),translate.log("to : "+a.to),translate.log("translate text array : "+n),translate.log("response error info: "+e.info),translate.log("=======ERROR END ======="));for(var r=0;r1||(e1&&e>translate.request.listener.executetime+translate.request.listener.delayExecuteTime&&(translate.request.listener.executetime=0,translate.request.listener.lasttime=e,translate.executeTriggerNumber>0))try{translate.execute()}catch(e){translate.log(e)}},100),"undefined"==typeof PerformanceObserver)return void translate.log("因浏览器版本较低, translate.request.listener.start() 中 PerformanceObserver 对象不存在,浏览器不支持,所以 translate.request.listener.start() 未生效。");const e=new PerformanceObserver(e=>{for(var t=!1,a=0;a-1){s=!0;break}if(void 0!==translate.service.edge&&r.indexOf("edge.microsoft.com/translate/translatetext")>-1&&(s=!0),s)continue;if(!translate.request.listener.trigger())continue;t=!0;break}}t&&translate.request.listener.addExecute()});var t=PerformanceObserver.supportedEntryTypes;if(t){for(var a=!1,n=0;n{const n=indexedDB.open("translate.js",1);n.onupgradeneeded=function(e){const t=e.target.result;t.objectStoreNames.contains("kvStore")||t.createObjectStore("kvStore",{keyPath:"key"})},n.onsuccess=function(a){e.db=a.target.result,t()},n.onerror=function(e){a("IndexedDB 打开失败")}})},set:async function(e,t){return this.db||await this.initDB(),new Promise((a,n)=>{const r=this.db.transaction("kvStore","readwrite").objectStore("kvStore"),s={key:e,value:t},l=r.put(s);l.onsuccess=(()=>a()),l.onerror=(()=>n("写入失败"))})},get:async function(e){return this.db||await this.initDB(),new Promise((t,a)=>{const n=this.db.transaction("kvStore","readonly").objectStore("kvStore").get(e);n.onsuccess=(()=>{const e=n.result;t(e?e.value:void 0)}),n.onerror=(()=>a("读取失败"))})},list:async function(e=""){return this.db||await this.initDB(),new Promise((t,a)=>{const n=this.db.transaction("kvStore","readonly").objectStore("kvStore").openCursor(),r=[],s="^"+e.replace(/\*/g,".*")+"$",l=new RegExp(s);n.onsuccess=(e=>{const a=e.target.result;a?(l.test(a.key)&&r.push({key:a.key,value:a.value.value}),a.continue()):t(r)}),n.onerror=(()=>a("游标读取失败"))})}},set:function(e,t){localStorage.setItem(e,t)},get:function(e){return localStorage.getItem(e)}},images:{queues:[],add:function(e){for(var t in e)e.hasOwnProperty(t)&&(translate.images.queues[t]=e[t])},execute:function(){if(!(Object.keys(translate.images.queues).length<1)){for(var e=document.getElementsByTagName("img"),t=0;t{selectionX=e.pageX,selectionY=e.pageY},!1),document.addEventListener("mouseup",translate.selectionTranslate.callTranslate,!1),document.addEventListener("click",e=>{document.querySelector("#translateTooltip").style.display="none"},!1)}},enterprise:{isUse:!1,use:function(){if(translate.enterprise.isUse=!0,translate.request.speedDetectionControl.hostMasterNodeCutTime=300,translate.request.api.host=["https://america-enterprise-api-translate.zvo.cn/","https://beijing.enterprise.api.translate.zvo.cn/","https://deutsch.enterprise.api.translate.zvo.cn/","https://america.api.translate.zvo.cn:666/","https://api.translate.zvo.cn:666/","https://api.translate.zvo.cn:888/"],"client.edge"==translate.service.name)return translate.service.name="translate.service",void translate.log("您已启用了企业级翻译通道 translate.enterprise.use(); (文档:https://translate.zvo.cn/4087.html) , 所以您设置的 translate.service.use('client.edge'); (文档:https://translate.zvo.cn/4081.html) 将失效不起作用,有企业级翻译通道全部接管。")},automaticAdaptationService:function(){if(translate.enterprise.isUse){var e=translate.request.speedDetectionControl.getHostQueue();e.length>0&&e[0].time+1>translate.request.speedDetectionControl.disableTime&&(translate.service.name="client.edge")}},key:""},progress:{style:"\n\t\t\t/* CSS部分 */\n\t\t\t/* 灰色水平加载动画 */\n\t\t\t.translate_api_in_progress {\n\t\t\t position: relative;\n\t\t\t overflow: hidden; /* 隐藏超出部分的动画 */\n\t\t\t}\n\n\t\t\t/* 蒙版层 */\n\t\t\t.translate_api_in_progress::after {\n\t\t\t content: '';\n\t\t\t position: absolute;\n\t\t\t top: 0;\n\t\t\t left: 0%;\n\t\t\t width: 100%;\n\t\t\t height: 100%;\n\t\t\t background: rgba(255, 255, 255, 1); /* 半透明白色遮罩 */\n\t\t\t z-index: 2;\n\t\t\t}\n\n\t\t\t/* 水平加载条动画 */\n\t\t\t.translate_api_in_progress::before {\n\t\t\t content: '';\n\t\t\t position: absolute;\n\t\t\t top: 50%;\n\t\t\t left: 0%;\n\t\t\t width: 100%;\n\t\t\t height:100%; /* 细线高度 */\n\t\t\t background: linear-gradient(\n\t\t\t 90deg,\n\t\t\t transparent 0%,\n\t\t\t #e8e8e8 25%, /* 浅灰色 */\n\t\t\t #d0d0d0 50%, /* 中灰色 */\n\t\t\t #e8e8e8 75%, /* 浅灰色 */\n\t\t\t transparent 100%\n\t\t\t );\n\t\t\t background-size: 200% 100%;\n\t\t\t animation: translate_api_in_progress_horizontal-loader 3.5s linear infinite;\n\t\t\t z-index: 3;\n\t\t\t transform: translateY(-50%);\n\t\t\t}\n\n\t\t\t@keyframes translate_api_in_progress_horizontal-loader {\n\t\t\t 0% {\n\t\t\t background-position: 200% 0;\n\t\t\t }\n\t\t\t 100% {\n\t\t\t background-position: -200% 0;\n\t\t\t }\n\t\t\t}\n\t\t",api:{isTip:!0,setUITip:function(e){translate.progress.api.isTip=e},removeChildClass:function(e,t){var a=e.childNodes;if(null==a||void 0===a);else if(a.length>0)for(var n=0;n-1;i--)l.splice(o[i],1);var u=translate.visual.rectsSpaceEliminateOverlap(l).rects;for(n=0;n-1||"string"==typeof u[n].node.className&&u[n].node.className.indexOf("translate_api_in_progress")>-1||(u[n].node.className=u[n].node.className+" translate_api_in_progress")}}),translate.lifecycle.execute.translateNetworkAfter.push(function(e){for(var t=translate.element.nodeToElement(e.nodes),a=0;a-1&&(t[a].className=t[a].className.replace(/translatejs-text-element-hidden/g,"")),t[a].className.indexOf("translate_api_in_progress")>-1&&(t[a].className=t[a].className.replace(/translate_api_in_progress/g,"")))}))}}},js:{transString:function(jsString,targetLanguage,successFunction,failureFunction){let jsObject;try{jsObject=JSON.parse(jsString)}catch(e){try{jsObject=eval("("+jsString+")")}catch(e){return translate.log(e),void failureFunction(e)}}translate.js.transObject(jsObject,targetLanguage,successFunction,failureFunction)},transObject:function(e,t,a,n){let r=translate.js.find(e),s=r.stringResult;var l=new Array;for(const e in s)l.push(e);var o=new Array,i={from:"auto",to:t,texts:l};if(translate.ignore.text.length>0){for(var u=new Array,d="",g=0;g-1&&(c=c.replaceAll(/\./g,"\\.")),c.indexOf("$")>-1&&(c=c.replaceAll(/\$/g,"\\$")),""!=d&&(d+="|"),d+=c}for(var f=new RegExp(d,"g"),h=0;h1){!0;for(var m=0;m0&&(u.push(p[m]),o[u.length-1]={index:h,original:p[m],isSplit:!0})}else u.push(l[h]),o[u.length-1]={index:h,original:l[h],isSplit:!1}}i.texts=u}translate.request.translateText(i,function(t){if(void 0!==t.result&&0!=t.result)if(0!=t.result){var i;if(translate.ignore.text.length>0){i=new Array;for(var u=0;u{const n=i[a],r=s[t];r&&r.length>0&&r.forEach(t=>{translate.js.setValueByPath(e,t,n)})}):console.error("翻译结果长度不匹配或为空"),Object.keys(r.functionResult).length>0)for(var g in r.functionResult)r.functionResult.hasOwnProperty(g)&&translate.js.setValueByPath(e,g,r.functionResult[g]);a(e)}else n(t.info);else n("network connect failure")})},setValueByPath:function(e,t,a){const n=t.replace(/\[(\d+)\]/g,".$1").split(".");let r=e;for(let e=0;e{const s=t?`${t}[${r}]`:`[${r}]`,l=translate.js.find(e,s),o=l.stringResult;for(const[e,t]of Object.entries(o))a[e]||(a[e]=[]),a[e]=a[e].concat(t);const i=l.functionResult;for(var u in i)i.hasOwnProperty(u)&&(n[u]=i[u])});else for(const s in e){const l=t?`${t}.${s}`:s;if("object"==typeof e[s]&&null!==e[s]){const t=translate.js.find(e[s],l),o=t.stringResult;for(const[e,t]of Object.entries(o))a[e]||(a[e]=[]),a[e]=a[e].concat(t);const i=t.functionResult;for(var r in i)i.hasOwnProperty(r)&&(n[r]=i[r])}else"string"==typeof e[s]?(void 0===a[e[s]]&&(a[e[s]]=[]),a[e[s]].push(l)):"function"==typeof e[s]&&(n[l]=e[s])}else"string"==typeof e&&(void 0===a[e]&&(a[e]=[]),a[e].push(t));return{stringResult:a,functionResult:n}},objToString:function(e,t){"object"==typeof e?"object"==typeof e.jsObject||(e={jsObject:e}):e={};"number"==typeof t&&(e.formatSupplementaryCharLength=t),"number"!=typeof e.formatSupplementaryCharLength&&(e.formatSupplementaryCharLength=4);let a=JSON.stringify(e.jsObject,(e,t)=>{if("function"==typeof t){var a=t.toString();return"string"==typeof a&&a.length>0&&(a=a.replace(/\n/g,"___TRANSLATEJS_LINE_BREAK___")),a}return t},e.formatSupplementaryCharLength);if(a.indexOf("___TRANSLATEJS_LINE_BREAK___")>-1){const t=a.split("\n");for(var n=0;ntranslate.language.getLocal()==translate.language.getCurrent()||"string"==typeof e&&e.length>0&&translate.language.recognition(e).languageName==translate.language.getLocal()?new Promise((t,a)=>{t({from:"auto",to:translate.language.getLocal(),text:[e]})}):new Promise((t,a)=>{const n={from:"auto",to:translate.language.getLocal(),texts:[e]};translate.request.translateText(n,function(e){1===e.result?t(e):a(e)})}),setRequestHeader:function(e,t){return this._requestContext&&(this._requestContext.headers=this._requestContext.headers||{},this._requestContext.headers[e]=t),translate.network.setRequestHeaderOriginal.call(this,e,t)},RequestHandler:{async handleGet(e,t){void 0===t.params&&void 0===t.params.length&&t.params.length<1&&(translate.log("WARINNG: rule not find params , rule : "),translate.log(t),t.params=[]);try{const r=new URL(e,window.location.origin),s=r.searchParams;for(var a=0;a{let a=e;const n=t.method;try{const s=await translate.network.RequestHandler.handleGet(t.originalUrl,t.matchedRule);if(translate.network.originalOpen.call(this,n,s,t.async,t.user,t.password),t.headers)for(const e in t.headers)translate.network.setRequestHeaderOriginal.call(this,e,t.headers[e]);if("POST"===n&&void 0!==e&&null!=e&&e.length<2e3){var r=!1;if(0==e.trim().indexOf("[")||0==e.trim().indexOf("{"))try{a=await translate.network.RequestHandler.handleJson(e,t.matchedRule),r=!0}catch(e){r=!1}if(!r)try{a=await translate.network.RequestHandler.handleForm(e,t.matchedRule)}catch(e){}}}catch(e){console.warn("请求处理异常:",e)}translate.network.originalSend.call(this,a)};!1!==t.async?a.call(this):(console.warn("同步请求不支持翻译拦截"),translate.network.originalSend.call(this,e))},fetch:{originalFetch:window.fetch,use:function(){const e=this;window.fetch=function(...t){return e.hookFetch.apply(e,t)}},hookFetch:async function(e,t){const a=new Request(e,t),n=a.url,r=a.method,s=translate.network.getRuleMatch(n,r);if(!s)return this.originalFetch.call(window,a);const l={method:r,url:n,headers:{},rule:s,isModified:!1};a.headers.forEach((e,t)=>{l.headers[t]=e}),this._requestContext=l;try{const e=await translate.network.RequestHandler.handleGet(n,s);if("GET"===r){const t=new Request(e,{method:r,headers:new Headers(l.headers),mode:a.mode,credentials:a.credentials,cache:a.cache,redirect:a.redirect,referrer:a.referrer,referrerPolicy:a.referrerPolicy});return this.originalFetch.call(window,t)}if("POST"===r){let t=null;a.body&&(t=await a.clone().text());a.headers.get("Content-Type");let n=t;if(void 0!==t&&null!=t&&t.length<2e3){var o=!1;if(0==t.trim().indexOf("[")||0==t.trim().indexOf("{"))try{n=await translate.network.RequestHandler.handleJson(t,s),o=!0}catch(e){o=!1}if(!o)try{n=await translate.network.RequestHandler.handleForm(t,s)}catch(e){}}const i=new Request(e,{method:r,headers:new Headers(l.headers),body:n,mode:a.mode,credentials:a.credentials,cache:a.cache,redirect:a.redirect,referrer:a.referrer,referrerPolicy:a.referrerPolicy});return this.originalFetch.call(window,i)}return this.originalFetch.call(window,a)}catch(e){return console.warn("fetch 请求处理异常:",e),this.originalFetch.call(window,a)}},_requestContext:null}},visual:{getRects:function(e){return e.map(e=>{if(!e)return[];let t=[];if(e.nodeType===Node.TEXT_NODE){const a=document.createRange();a.selectNodeContents(e);const n=a.getClientRects();t=Array.from(n).map(t=>({node:e,left:t.left,top:t.top,right:t.right,bottom:t.bottom,width:t.width,height:t.height,lineIndex:Array.from(n).indexOf(t)}))}else if(e.nodeType===Node.ELEMENT_NODE){const a=e.getBoundingClientRect();t=a?[{node:e,left:a.left,top:a.top,right:a.right,bottom:a.bottom,width:a.width,height:a.height}]:[]}return t})},rectsToOneArray:function(e){for(var t=new Array,a=0;ae&&void 0!==e.top?{...e,rowBase:Math.round(e.top)}:null).filter(Boolean),n=new Map;a.forEach(e=>{const t=e.rowBase;n.has(t)||n.set(t,[]),n.get(t).push(e)});const r=Array.from(n.entries()).sort((e,t)=>e[0]-t[0]).map(e=>e[1]),s=[];return r.forEach((e,a)=>{a%t==0&&e.length>0&&s.push(e[0])}),s},rectsSpaceEliminateOverlap:function(e){if(!Array.isArray(e)||0===e.length)return{rects:[],removes:[]};const t=(e,t)=>({w:Math.min(e.right,t.right)-Math.max(e.left,t.left),h:Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)}),a=e.map((e,t)=>{let{left:a,top:n,right:r,bottom:s}=e;return rMath.abs(e.r.left-t.r.left)>1e-6?e.r.left-t.r.left:Math.abs(e.r.top-t.r.top)>1e-6?e.r.top-t.r.top:Math.abs(e.r.right-t.r.right)>1e-6?e.r.right-t.r.right:e.r.bottom-t.r.bottom);const n=a.length,r=new Array(n).fill(!1),s=a.map(e=>(e=>Math.max(0,e.right-e.left)*Math.max(0,e.bottom-e.top))(e.r));for(let e=0;e=n.right-2&&l.bottom>=n.bottom-2,d=n.left<=l.left+2&&n.top<=l.top+2&&n.right>=l.right-2&&n.bottom>=l.bottom-2;if(u||d){if(u&&!d){r[i]=!0;continue}if(d&&!u){r[e]=!0;break}if(!(o>=s[i])){r[e]=!0;break}r[i]=!0}if(n.left>=l.right-1e-6)break;const{w:g,h:c}=t(l,n);if(g<=2||c<=2)continue;const f=s[i];if(o>f)r[i]=!0;else{if(f>o){r[e]=!0;break}r[i]=!0}}}const l=[],o=[],i=a.map(e=>e.idx),u=new Map;for(let e=0;enull!==e).sort((e,t)=>Math.abs(e.top-t.top)<5?e.left-t.left:e.top-t.top)},afterAdjacent:function(e){var t=translate.visual.coordinateSort(e);const a=[];return translate.visual.groupRectsByLine(t).forEach(e=>{for(let t=0;t{if(0===a.length)a.push(e);else{const n=a[a.length-1];Math.abs(e.top-n.top)<5?a.push(e):(t.push(a),a=[e])}}),a.length>0&&t.push(a),t},areHorizontallyAdjacent:function(e,t){const a=Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top),n=t.left-e.right;return a>0&&Math.abs(n)<1},afterAddSpace:function(e){const t=[];return e.forEach(e=>{const{before:a,after:n}=e,r=a.node,s=n.node,l=window.getComputedStyle(r.nodeType===Node.TEXT_NODE?r.parentElement:r),o=window.getComputedStyle(s.nodeType===Node.TEXT_NODE?s.parentElement:s),i=parseFloat(l.marginRight)>0||parseFloat(l.paddingRight)>0,u=parseFloat(o.marginLeft)>0||parseFloat(o.paddingLeft)>0;i||u||"string"==typeof r.textContent&&"string"==typeof s.textContent&&(/\s$/.test(r.textContent)||/^\s/.test(s.textContent)||t.push(r))}),t},adjustTranslationSpaces:function(e){if(!translate.language.wordBlankConnector(translate.to))return;const t=translate.visual.getRects(e);var a=translate.visual.rectsToOneArray(t);const n=translate.visual.afterAdjacent(a);translate.visual.afterAddSpace(n).forEach(e=>{if(e.nodeType===Node.TEXT_NODE)0!==e.textContent.length&&" "===e.textContent.substring(e.textContent.length-1,e.textContent.length)||(null!==translate.node.get(e)&&("string"!=typeof translate.node.get(e).resultText&&(translate.node.get(e).resultText=translate.node.get(e).originalText),translate.node.get(e).resultText=translate.node.get(e).resultText+" ",translate.node.get(e).lastTranslateRenderTime=Date.now()),e.textContent=e.textContent+" ");else if(e.nodeType===Node.ELEMENT_NODE){const t=e.lastChild;t&&t.nodeType===Node.TEXT_NODE&&(0!==t.textContent.length&&" "===t.textContent.substring(t.textContent.length-1,t.textContent.length)||(null!==translate.node.get(t)&&"string"==typeof translate.node.get(t).resultText&&(translate.node.get(t).resultText=translate.node.get(t).resultText+" ",translate.node.get(t).lastTranslateRenderTime=Date.now()),t.textContent=t.textContent+" "))}})},adjustTranslationSpacesByNodequeueUuid:function(e){var t=[];for(var a in translate.nodeQueue[e].list)if(translate.nodeQueue[e].list.hasOwnProperty(a)&&void 0!==translate.nodeQueue[e].list[a])for(var n in translate.nodeQueue[e].list[a])if(translate.nodeQueue[e].list[a].hasOwnProperty(n))for(var r in translate.nodeQueue[e].list[a][n].nodes)if(translate.nodeQueue[e].list[a][n].nodes.hasOwnProperty(r)){var s=translate.nodeQueue[e].list[a][n].nodes[r].node;t.push(s)}translate.visual.adjustTranslationSpaces(t)},adjustTranslationSpacesByLastNodequeueUuid:function(e){e="";for(var t in translate.nodeQueue){e=t;break}"string"==typeof e&&e.length>1&&translate.visual.adjustTranslationSpacesByNodequeueUuid(e)},hideText:{style:"\n\t\t\t\t/* 文本隐藏核心样式 - 仅隐藏文本内容 */\n\n\t\t html.translatejs-text-hidden p, html.translatejs-text-hidden div, html.translatejs-text-hidden small, \n\t\t html.translatejs-text-hidden h1, html.translatejs-text-hidden h2, html.translatejs-text-hidden h3,\n\t\t html.translatejs-text-hidden h4, html.translatejs-text-hidden h5, html.translatejs-text-hidden h6,\n\t\t html.translatejs-text-hidden span, html.translatejs-text-hidden a, html.translatejs-text-hidden b,\n\t\t html.translatejs-text-hidden strong, html.translatejs-text-hidden i, html.translatejs-text-hidden em,\n\t\t html.translatejs-text-hidden mark,\n\t\t html.translatejs-text-hidden blockquote, html.translatejs-text-hidden ul, html.translatejs-text-hidden ol,\n\t\t html.translatejs-text-hidden li, html.translatejs-text-hidden table, html.translatejs-text-hidden th,\n\t\t html.translatejs-text-hidden td, html.translatejs-text-hidden label, html.translatejs-text-hidden button,\n\t\t html.translatejs-text-hidden input, html.translatejs-text-hidden select, html.translatejs-text-hidden textarea {\n\t\t color: transparent !important;\n\t\t text-shadow: none !important;\n\t\t\t\t\ttransition: none !important;\n\t\t }\n\n\t\t /* 隐藏占位符文字 */\n\t\t html.translatejs-text-hidden ::placeholder {\n\t\t color: transparent !important;\n\t\t }\n\n\t\t /* 确保媒体元素不受影响 */\n\t\t img, video, iframe, canvas, svg,\n\t\t object, embed, picture, source {\n\t\t color: initial !important;\n\t\t }\n\n\t\t /* 忽略隐藏的元素保持可见 */\n\t\t .ignore-hidden {\n\t\t color: inherit !important;\n\t\t }\n\t\t\t",hide:function(e){const t=document.createElement("style");void 0===e||null==e||0==e.length?(e="translatejs-text-hidden",t.textContent=translate.visual.hideText.style):(e="translatejs-text-hidden-"+e,t.textContent=translate.visual.hideText.style.replace(/translatejs-text-hidden/g,e).replace(/\/\*(.*)\*\//g," ").replace(/\n/g," ")),t.id=e,document.head.appendChild(t),document.documentElement.classList.add(e)},show:function(e){e=void 0===e||null==e||0==e.length?"translatejs-text-hidden":"translatejs-text-hidden-"+e,document.documentElement.classList.remove(e);var t=document.getElementById(e);null!=typeof t&&null!=t&&t.remove()}},webPageLoadTranslateBeforeHiddenText_use:!1,webPageLoadTranslateBeforeHiddenText:function(e){void 0===e&&(e={}),void 0===e.inHeadTip&&(e.inHeadTip=!0),translate.visual.webPageLoadTranslateBeforeHiddenText_use=!0,void 0===document.body||null==document.body||e.inHeadTip&&translate.log("警告: translate.visual.webPageLoadTranslateBeforeHiddenText() 要在 head 标签中触发才能达到最好的效果!"),""==translate.language.local&&translate.log("提醒:在使用 translate.visual.webPageLoadTranslateBeforeHiddenText() 之前,请先手动设置你的本地语种,参考: http://translate.zvo.cn/4066.html 如果你不设置本地语种,则不管你是否有切换语言,网页打开后都会先短暂的不显示文字"),""!=translate.language.local&&1!=translate.language.translateLocal&&translate.language.local==translate.language.getCurrent()||(translate.visual.hideText.hide(),translate.lifecycle.execute.translateNetworkBefore.push(function(e){void 0===translate.visual.hideText.first_translate_request_uuid&&(translate.visual.hideText.first_translate_request_uuid=e.uuid),translate.visual.hideText.first_translate_request_uuid==e.uuid&&(void 0===translate.visual.hideText.first_translate_request_number&&(translate.visual.hideText.first_translate_request_number=0),translate.visual.hideText.first_translate_request_number++)}),translate.lifecycle.execute.renderFinish.push(function(e,t){if(void 0===translate.visual.hideText.first_translate_request_uuid);else if(translate.visual.hideText.first_translate_request_uuid!=e)return;translate.visual.hideText.show()})),translate.lifecycle.execute.finally.push(function(e){e.triggerNumber<3&&translate.visual.hideText.show()})}},history:{translateText:{resultMap:null,originalMap:null,add:function(e,t){translate.history.translateText.resultMap.set(t,e),translate.history.translateText.originalMap.set(e,t)}}},time:{execute:{isUse:!1,data:{},start:function(){translate.time.execute.isUse&&translate.log("translate.time.execute.start() 已经启动过了,不需要再启动了"),translate.time.execute.data.isUse=!0,translate.lifecycle.execute.start.push(function(e,t){void 0===translate.time.execute.data[e]&&(translate.time.execute.data[e]={}),translate.time.execute.data[e].startTime=(new Date).getTime()}),translate.lifecycle.execute.translateNetworkBefore.push(function(e){translate.time.execute.data[e.uuid].translateNetworkBeforeTime=(new Date).getTime()}),translate.lifecycle.execute.renderFinish.push(function(e,t){translate.time.execute.data[e].finishTime=(new Date).getTime(),translate.time.execute.data[e].allTime=translate.time.execute.data[e].finishTime-translate.time.execute.data[e].startTime;var a=new Array,n=new Array;translate.nodeQueue[e];for(var r in translate.nodeQueue[e].list)if(translate.nodeQueue[e].list.hasOwnProperty(r)&&!("string"!=typeof r||r.length<1))for(var s in n.push(r),translate.nodeQueue[e].list[r])translate.nodeQueue[e].list[r].hasOwnProperty(s)&&a.push(translate.nodeQueue[e].list[r][s].original);translate.time.execute.data[e].translateLanguages=n,translate.time.execute.data[e].translateTexts=a,translate.log("[time][translate.execute()] "+translate.time.execute.data[e].allTime+"ms "+(void 0!==translate.time.execute.data[e].translateNetworkBeforeTime?"(search&cache "+(translate.time.execute.data[e].translateNetworkBeforeTime-translate.time.execute.data[e].startTime)+"ms)":"")+(a.length>0?" , ["+n+"] : ("+a.length+")["+a.slice(0,3)+(a.length>3?", ...":"")+"]":""))})}},use:!1,printTime:0,log:function(e){if(0!=translate.time.use){var t=(new Date).getTime(),a=0;if(void 0!==translate.time.temp_lasttime&&(a=t-translate.time.temp_lasttime),translate.time.temp_lasttime=t,!(a "+e)}}}},faultTolerance:{documentCreateTextNode:{originalCreateTextNode:null,node:null,use:function(){null==translate.faultTolerance.documentCreateTextNode.node&&(translate.faultTolerance.documentCreateTextNode.node=new Map),translate.lifecycle.changeLanguage.push(function(e){translate.isTranslate(e)?translate.faultTolerance.documentCreateTextNode.enable():translate.faultTolerance.documentCreateTextNode.disable()}),translate.lifecycle.execute.start.push(function(e){0===translate.executeNumber&&translate.isTranslate(e.to)&&translate.faultTolerance.documentCreateTextNode.enable()})},enable:function(){null==translate.faultTolerance.documentCreateTextNode.originalCreateTextNode&&(translate.faultTolerance.documentCreateTextNode.originalCreateTextNode=document.createTextNode,document.createTextNode=function(e){var t=!1,a=null;if(translate.executeTriggerNumber>0&&"string"==typeof e&&e.length>0){var n=translate.history.translateText.originalMap.get(e);"string"==typeof n&&n.length>0&&(a=e,e=n,t=!0)}const r=translate.faultTolerance.documentCreateTextNode.originalCreateTextNode.call(this,e);return t&&(translate.faultTolerance.documentCreateTextNode.node.set(r,{originalText:a,resultText:e}),translate.node.set(r,{attribute:"",originalText:a,resultText:e,translateTexts:{},whole:!0,translateResults:{[a]:1},lastTranslateRenderTime:Date.now()})),r})},disable:function(){null!=translate.faultTolerance.documentCreateTextNode.originalCreateTextNode&&(document.createTextNode=translate.faultTolerance.documentCreateTextNode.originalCreateTextNode,translate.faultTolerance.documentCreateTextNode.originalCreateTextNode=null)}}},quickUse:function(){translate.visual.webPageLoadTranslateBeforeHiddenText(),translate.progress.api.startUITip(),translate.listener.start(),translate.request.listener.start(),translate.language.setUrlParamControl(),translate.language.translateLocal=!0,translate.whole.enableAll(),document.addEventListener("DOMContentLoaded",function(){translate.execute(),setTimeout(function(){translate.execute()},500),setTimeout(function(){translate.execute()},2e3)})},recycle:function(){var e=(new Date).getTime(),t=[];for(var a in translate.nodeQueue){if(translate.nodeQueue.hasOwnProperty(a))translate.nodeQueue[a].expireTime+120t()):"object"==typeof module&&module.exports?module.exports=t():void 0!==e&&(e.translate=t())}(this,function(){return translate}); //针对 layui 的 select 选中的值显示出来时,进行翻译 translate.element.tagAttribute['input']={ attribute:['value'], condition:function(element){ if(typeof(element.name) === 'undefined' || element.name.length < 1){ return true; }else{ return false; } } }; translate.lifecycle.changeLanguage.resetAfter.push(function(data){ if(typeof(layui) === 'object' && typeof(layui.form) === 'object' && typeof(layui.form.render) === 'function'){ layui.form.render('select'); } }); //兼容旧版翻译插件导入的方式 - 注意,导入的方式有异步网络请求,会存在一个时间差,导致 translate.visual.webPageLoadTranslateBeforeHiddenText(); 不会从第一时间开始遮挡原文本,会出现原文本一闪的现象,所以拿出来单独运行,而不再依赖layui.define 异步加载 layui.define([], function (exports) { //输出 translate 接口 exports('translate', window.translate); });