| | |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <finalName>wms</finalName> |
| | | <finalName>ddthwms</finalName> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | task.setTaskId(wrkMast.getWrkNo().toString()); |
| | | task.setBarCode(wrkMast.getBarcode()); |
| | | // task.setOrder(i); |
| | | task.setOrder((int) (100 - wrkMast.getIoPri())); |
| | | |
| | | task.setOrder(wrkMast.getIoPri().intValue()); |
| | | String LocNo = null; |
| | | String sourceLocNo = null; |
| | | //优先级排序 15.出库>14.入库>13.空板出库>12.空板入库>11.移库 |
| | | if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){//入库 |
| | | workIssuedResult.setPriorityCode(14);//优先级 |
| | | task.setTaskType(0);//入库 |
| | | task.setStartNode(inDevp); |
| | | task.setEndNode(wrkMast.getLocNo());//目标库位 |
| | | LocNo = Utils.getLocNo(Utils.getRow(wrkMast.getLocNo()),Utils.getBay(wrkMast.getLocNo()),Utils.getLev(wrkMast.getLocNo())); |
| | | task.setEndNode(LocNo);//目标库位 |
| | | |
| | | |
| | | }else if(wrkMast.getIoType() == 10 ){//空板入库 |
| | | workIssuedResult.setPriorityCode(12);//优先级 |
| | | task.setTaskType(0);//入库 |
| | | task.setStartNode(inDevp); |
| | | task.setEndNode(wrkMast.getLocNo());//目标库位 |
| | | LocNo = Utils.getLocNo(Utils.getRow(wrkMast.getLocNo()),Utils.getBay(wrkMast.getLocNo()),Utils.getLev(wrkMast.getLocNo())); |
| | | task.setEndNode(LocNo);//目标库位 |
| | | |
| | | }else if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){//出库 |
| | | workIssuedResult.setPriorityCode(15);//优先级 |
| | | task.setTaskType(1);//出库 |
| | | task.setStartNode(wrkMast.getSourceLocNo());//源库位 |
| | | sourceLocNo = Utils.getLocNo(Utils.getRow(wrkMast.getSourceLocNo()),Utils.getBay(wrkMast.getSourceLocNo()),Utils.getLev(wrkMast.getSourceLocNo())); |
| | | task.setStartNode(sourceLocNo);//源库位 |
| | | task.setEndNode(outDevp); |
| | | |
| | | }else if(wrkMast.getIoType() == 11){//移库 |
| | | workIssuedResult.setPriorityCode(11);//优先级 |
| | | task.setTaskType(2);//移库 |
| | | task.setStartNode(wrkMast.getSourceLocNo());//源库位 |
| | | task.setEndNode(wrkMast.getLocNo());//目标库位 |
| | | sourceLocNo = Utils.getLocNo(Utils.getRow(wrkMast.getSourceLocNo()),Utils.getBay(wrkMast.getSourceLocNo()),Utils.getLev(wrkMast.getSourceLocNo())); |
| | | LocNo = Utils.getLocNo(Utils.getRow(wrkMast.getLocNo()),Utils.getBay(wrkMast.getLocNo()),Utils.getLev(wrkMast.getLocNo())); |
| | | task.setStartNode(sourceLocNo);//源库位 |
| | | task.setEndNode(LocNo);//目标库位 |
| | | |
| | | } else {//空板出库 |
| | | workIssuedResult.setPriorityCode(13);//优先级 |
| | | task.setTaskType(1);//出库 |
| | | task.setStartNode(wrkMast.getSourceLocNo());//源库位 |
| | | sourceLocNo = Utils.getLocNo(Utils.getRow(wrkMast.getSourceLocNo()),Utils.getBay(wrkMast.getSourceLocNo()),Utils.getLev(wrkMast.getSourceLocNo())); |
| | | task.setStartNode(sourceLocNo);//源库位 |
| | | task.setEndNode(outDevp); |
| | | } |
| | | tasks.add(task); |
| | |
| | | return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); |
| | | } |
| | | |
| | | public static String getLocNoToWcs(Integer row, int bay, int lev) { |
| | | return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 2) + zerofill(String.valueOf(lev), 2); |
| | | } |
| | | |
| | | public static List<Integer> getLocGroupAsc(SlaveProperties slaveProperties, String locNo) { |
| | | LocGroupOrder checkOrder = findLocGroupOrder(slaveProperties, locNo); |
| | | List<Integer> rowList = checkOrder.getRowList(); |
| | |
| | | //搜索满托盘库位 |
| | | public LocMast searchMaxPallet(FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto){ |
| | | LocMast targetLocMast = null; |
| | | //查询相同物料 |
| | | List<String> locNos = locDetlService.getSameDetlList(findLocNoAttributeVo.getMatnr()); |
| | | for (String locNo : locNos) { |
| | | //获取通道组 |
| | |
| | | .eq("loc_sts", "O") |
| | | .eq("lev1", lev) |
| | | .eq("loc_type1",locTypeDto.getLocType1()) |
| | | .eq("loc_type2",locTypeDto.getLocType2()) |
| | | .orderBy("bay1", true) |
| | | .orderBy("row1",true)); |
| | | for (LocMast locMast : locMasts) { |
| | |
| | | continue; |
| | | } |
| | | |
| | | if (deepLoc.getLocSts().equals("F")){ |
| | | if (deepLoc.getLocSts().equals("D")){ |
| | | continue; |
| | | }else if (deepLoc.getLocSts().equals("O")){ |
| | | targetLocMast = deepLoc; |
| | |
| | | if (Cools.isEmpty(param.getCargoHeight())) { |
| | | return Re.error("高低检测信号不能为空"); |
| | | } |
| | | if (!param.getBarCode().startsWith("7")&&!param.getBarCode().startsWith("8")){ |
| | | return Re.error("未定义的托盘码规则"); |
| | | } |
| | | // if (!param.getBarCode().startsWith("7")&&!param.getBarCode().startsWith("8")){ |
| | | // return Re.error("未定义的托盘码规则"); |
| | | // } |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true); |
| | | sourceStaNo.setLocType1(param.getCargoHeight().shortValue()); // 高低库位 |
| | | if (param.getBarCode().startsWith("7")){ |
| | | sourceStaNo.setLocType2((short) 1); // 宽窄库位 1.窄库位1200*1000*990 1期库位 |
| | | }else if (param.getBarCode().startsWith("8")){ |
| | | sourceStaNo.setLocType2((short) 2); // 宽窄库位 2.宽库位1200*1000*1270 2期库位 |
| | | } |
| | | // if (param.getBarCode().startsWith("7")){ |
| | | // sourceStaNo.setLocType2((short) 1); // 宽窄库位 1.窄库位1200*1000*990 |
| | | // }else if (param.getBarCode().startsWith("8")){ |
| | | // sourceStaNo.setLocType2((short) 2); // 宽窄库位 2.宽库位1200*1000*1270 |
| | | // } |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | |
| | | StartupDto dto = null; |
| | |
| | | server: |
| | | port: 8090 |
| | | port: 8080 |
| | | servlet: |
| | | context-path: /@pom.build.finalName@ |
| | | |
| | |
| | | #groupCount: 4 |
| | | # 由浅入深 |
| | | locGroupAscOrder: [ |
| | | {rowList: [4,3,2],minBay: 1,maxBay: 49}, |
| | | {rowList: [6],minBay: 3,maxBay: 48}, |
| | | {rowList: [7],minBay: 1,maxBay: 17}, |
| | | {rowList: [8,9,10,11,12,13],minBay: 3,maxBay: 48}, |
| | | {rowList: [6,5,4,3,2,1],minBay: 33,maxBay: 49}, |
| | | {rowList: [8],minBay: 33,maxBay: 49}, |
| | | # {rowList: [7],minBay: 33,maxBay: 49}, |
| | | # {rowList: [8,9,10,11,12,13],minBay: 33,maxBay: 49}, |
| | | ] |
| | | #是否开启wms下发任务给wcs |
| | | workIssued-fig : true |
| | | workIssued-fig : false |
| | | #地址 |
| | | url : localhost:8082 |
| | | #wms下发任务给wcs |
| | |
| | | </select> |
| | | |
| | | <select id="getLevList" resultType="integer"> |
| | | select distinct lev1 from asr_loc_mast |
| | | select distinct lev1 from asr_loc_mast order by lev1 |
| | | </select> |
| | | </mapper> |
| | |
| | | var baseUrl = "/wms"; |
| | | var baseUrl = "/ddthwms"; |
| | | |
| | | // 详情窗口-高度 |
| | | var detailHeight = '80%'; |
| New file |
| | |
| | | /* |
| | | * 多语言翻译,作者:管雷鸣 |
| | | * 开源仓库: 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;a<e.length;a++)void 0!==e[a]&&(e[a].id,1)&&translate.selectLanguageTag.supportLanguageMap.set(e[a].id,e[a])}for(var n=[],r=0;r<t.length;r++)t[r].length>0&&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;r<e.length;r++){var s=document.createElement("option");s.setAttribute("value",e[r].id),null!=n&&void 0!==n&&n.length>0?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;a<t.length;a++){var n=t[a].split("=");if(n[0]==e)return unescape(n[1])}return""},currentLanguage:function(){var e=translate.getCookie("googtrans");return e.length>0?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;a<t.length;a++){const n=t[a],r=n.contentWindow;try{"object"==typeof r.translate&&"string"==typeof r.translate.version&&r.translate.to!=e&&(r.translate.to=e,r.translate.storage.set("to",e),r.translate.changeLanguage(e))}catch(e){"string"==typeof n.src&&translate.log("change sub page iframe exception , iframe src : "+n.src),translate.log(e)}}}},check:function(){"file:"==window.location.protocol&&translate.log("\r\n---WARNING----\r\ntranslate.js 主动翻译组件自检异常,当前协议是file协议,翻译组件要在正常的线上http、https协议下才能正常使用翻译功能\r\n------------")},to:"",autoDiscriminateLocalLanguage:!1,documents:[],inProgressNodes:[],ignore:{tag:["style","script","link","pre","code"],class:["ignore","translateSelectLanguage"],id:[],isIgnore:function(e){if(null==e||void 0===e)return!1;2===e.nodeType?e=e.ownerElement:3===e.nodeType&&(e=e.parentNode);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("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;s<r.length;s++)if(null!=r[s]&&r[s].trim().length>0&&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<e.length;t++)if(!(e[t]instanceof RegExp))throw new Error("第"+t+"项不是RegExp对象");this.textRegex=this.textRegex.concat(e)}},refreshCurrentPage:function(){location.reload()},isTranslate:function(e){return void 0===e&&(e=translate.to),0!==e.length&&(e!==translate.language.getLocal()||!!translate.language.translateLocal)},nomenclature:{data:new Array,old_Data:[],set:function(e){alert("请将 translate.nomenclature.set 更换为 append,具体使用可参考: https://github.com/xnx3/translate ")},append:function(e,t,a){void 0!==e&&null!=e&&"auto"!=e||(null==document.body?translate.log("使用错误!你使用自定义术语 translate.nomenclature.append 时,from 未传值,此时 translate.js 会自动识别当前翻译区域的内容是什么语种,但是你当前吧 translate.nomenclature.append 放在了body之前就加载了,body都还没加载出来,翻译区域当前无内容,所以无法识别当前页面的语种。请将 translate.nomenclature.append 放在翻译内容加载完后再执行 (注意,要将 translate.nomenclature.append 放在 translate.execute() 的前面),建议将 translate.nomenclature.append 放在 </body> 跟 </html> 之间。"):"loading"===document.readyState&&translate.log("使用异常告警:你使用的自定义术语 translate.nomenclature.append 时,from 未传值,此时 translate.js 会自动识别当前翻译区域的内容是什么语种,但页面Dom还未加载完毕时就触发了它,如果翻译区域当前无内容或者内容不是完整的,会造成识别当前页面的语种会有异常不准确,你需要仔细确认这个问题。建议将 translate.nomenclature.append 放在 </body> 跟 </html> 之间。"),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<n.length;r++){var s=n[r].trim();if(!(s.length<1)){var l=s.split("=");if(2==l.length){var o=l[0].trim(),i=l[1].trim();0!=o.length&&0!=i.length&&(translate.nomenclature.data[e][t][o]=i)}}}translate.nomenclature.data[e][t]=translate.util.objSort(translate.nomenclature.data[e][t])},get:function(){return translate.nomenclature.data},replace:function(e,t,a,n){if(0==t.length)return{texts:[e],find:!1,resultText:e};var r=e.indexOf(t);if(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;s<e.length;s++){var l=e[s],o=translate.nomenclature.replace(l,t,a,n);o.find&&(r.find=!0),r.texts=r.texts.concat(o.texts),r.resultText.push(o.resultText)}if(r.texts.length>0)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:'<textarea id="msgPopupsTextarea" style="width:100%; height:100%; color: black; padding: 8px;">loaing...</textarea>',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. 首先将当前语种切换为你要翻译的语种<br/>2. 点击导出按钮,将翻译的配置信息导出<br/>3. 将导出的配置信息粘贴到代码中,即可完成<br/><a href="http://translate.zvo.cn/4076.html" target="_black" style="color: aliceblue; text-decoration: underline;">点此进行查阅详细使用说明</a>',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;r<a.length&&r<10;r++){const e=a[r].match(/^[ \t]+/);var s=e?e[0]:"0",l=1;void 0!==n.get(s)&&(l+=n.get(s)),n.set(s,l)}let o=0,i=null;for(const[e,t]of n.entries())t>o&&(o=t,i=e);n=null;for(r=0;r<a.length;r++){var u=a[r];if("0"!==i)if(a[r].startsWith(i))u=a[r].slice(i.length);else a[r].trim().length>0&&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].addtime<e&&delete translate.listener.ignoreNode[t]},nodeValueChangeNeedTranslate:function(e){var t=!0;return null!=translate.node.get(e)&&(void 0!==translate.node.get(e).whole&&!0===translate.node.get(e).whole?void 0!==translate.node.get(e).resultText&&translate.node.get(e).resultText===e.nodeValue&&(t=!1):"number"==typeof translate.node.get(e).lastTranslateRenderTime&&translate.node.get(e).lastTranslateRenderTime+500>Date.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;n<t.addedNodes.length;n++){var r=translate.element.getNodeName(t.addedNodes[n]).toLowerCase();r.length>0&&-1==translate.ignore.tag.indexOf(r)&&e.push(t.addedNodes[n])}if(t.removedNodes.length>0)for(var s=0;s<t.removedNodes.length;s++)translate.node.delete(t.removedNodes[s])}else if("attributes"===t.type){if("class"===t.attributeName||"style"===t.attributeName)continue;if("placeholder"===t.attributeName||"alt"===t.attributeName||"title"===t.attributeName);else{var l=translate.element.tagAttribute[t.target.nodeName.toLowerCase()];if(!(void 0!==l&&l.attribute.indexOf(t.attributeName)>-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;u<a.length;u++)if(a[u].isSameNode(t)){i=!0;break}if(i)break;a.push.apply(a,[t])}}if(a.length>0){translate.time.log("监听到元素发生变化,"+a.length+"个元素");var d=[];for(let e of a){for(var g=!1,c=0;c<translate.inProgressNodes.length;c++)if(translate.inProgressNodes[c].node.isSameNode(e)){g=!0;break}if(g)continue;let t=nodeuuid.uuid(e);void 0!==translate.listener.ignoreNode[t]&&translate.listener.ignoreNode[t].addtime>Date.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<e.length;t++){var a=e[t];null!=a&&translate.listener.observer.observe(a,translate.listener.config)}"object"==typeof translate.element.tagAttribute.input&&translate.element.tagAttribute.input.attribute.indexOf("value")>-1&&translate.listener.input.start()}},renderTaskFinish:function(e){},execute:{renderStartByApi:[],renderStartByApiRun:function(e,t,a){for(var n=0;n<translate.listener.execute.renderStartByApi.length;n++)try{translate.listener.execute.renderStartByApi[n](e,t,a)}catch(e){translate.log(e)}},renderFinishByApi:[],renderFinishByApiRun:function(e,t,a){for(var n=0;n<translate.listener.execute.renderFinishByApi.length;n++)try{translate.listener.execute.renderFinishByApi[n](e,t,a)}catch(e){translate.log(e)}}}},renderTask:class{constructor(){this.taskQueue=new Map,this.nodes=[]}add(e,t,a,n){var r=translate.element.nodeAnalyse.get(e,n),s=translate.util.hash(r.text);void 0===this.nodes[s]&&(this.nodes[s]=new Array),this.nodes[s].push(e);var l=this.taskQueue.get(e);null!=l&&void 0!==l||(l=new Array);var o=new Array;" "==t.substr(0,1)&&" "!=a.substr(0,1)&&(a=" "+a)," "===t.substr(t.length-1,1)&&" "!=a.substr(0,1)&&(a+=" "),o.originalText=t,o.resultText=a,o.attribute=n,l.push(o),this.taskQueue.set(e,l)}execute(){for(let e of this.taskQueue.keys()){null!=(a=this.taskQueue.get(e))&&("function"!=typeof a&&(a.sort((e,t)=>t.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;t<this.nodes[e].length;t++){var a,n=this.nodes[e][t];if(null!=(a=this.taskQueue.get(n)))for(var r=0;r<a.length;r++){var s=a[r];if("function"!=typeof a){var l=this.nodes[e][r];setTimeout(function(e){for(var t=0;t<translate.inProgressNodes.length;t++)if(translate.inProgressNodes[t].node.isSameNode(e)){translate.inProgressNodes[t].number=translate.inProgressNodes[t].number-1,translate.inProgressNodes[t].number<1&&translate.inProgressNodes.splice(t,1);break}},50,l);var o=null,i="";if("string"==typeof s.attribute&&s.attribute.length>0){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;t<translate.lifecycle.changeLanguage.trigger.length;t++)try{translate.lifecycle.changeLanguage.trigger[t](e)}catch(e){translate.log(e)}for(t=0;t<translate.lifecycle.changeLanguage.old_trigger_array.length;t++)try{translate.lifecycle.changeLanguage.old_trigger_array[t](e.to)}catch(e){translate.log(e)}},old_trigger_array:[],push:function(e){translate.log("提示, translate.lifecycle.changeLanguage.push 方式已过时,但依旧生效,可正常使用。 最新的方式,文档参考 http://translate.zvo.cn/540189.html "),translate.lifecycle.changeLanguage.trigger.push(e),translate.lifecycle.changeLanguage.old_trigger_array.push(e)},resetAfter:[],resetAfter_Trigger:function(e){for(var t=0;t<translate.lifecycle.changeLanguage.resetAfter.length;t++)try{translate.lifecycle.changeLanguage.resetAfter[t](e)}catch(e){translate.log(e)}}},execute:{trigger:[],trigger_Trigger:function(e){for(var t=!0,a=0;a<translate.lifecycle.execute.trigger.length;a++)try{var n=translate.lifecycle.execute.trigger[a](e);"boolean"==typeof n&&!1===n&&(t=!1)}catch(e){translate.log(e)}return t},start:[],start_Trigger:function(e){for(var t=0;t<translate.lifecycle.execute.start.length;t++)if(2===translate.lifecycle.execute.start[t].length)try{translate.lifecycle.execute.start[t](e.uuid,e.to)}catch(e){translate.log(e)}else try{translate.lifecycle.execute.start[t](e)}catch(e){translate.log(e)}},start_old:[],startRun:function(e,t,a){for(var n=0;n<translate.listener.execute.renderStartByApi.length;n++)try{translate.listener.execute.renderStartByApi[n](e,t,a)}catch(e){translate.log(e)}},scanNodesFinsh:[],translateNetworkBefore:[],translateNetworkBefore_Trigger:function(e){for(var t=0;t<translate.lifecycle.execute.translateNetworkBefore.length;t++)if(4===translate.lifecycle.execute.translateNetworkBefore[t].length)try{translate.lifecycle.execute.translateNetworkBefore[t](e.uuid,e.from,e.to,e.texts)}catch(e){translate.log(e)}else try{translate.lifecycle.execute.translateNetworkBefore[t](e)}catch(e){translate.log(e)}},translateNetworkAfter:[],translateNetworkAfter_Trigger:function(e){for(var t=0;t<translate.lifecycle.execute.translateNetworkAfter.length;t++)try{translate.lifecycle.execute.translateNetworkAfter[t](e)}catch(e){translate.log(e)}},renderFinish:[function(e,t){void 0!==translate.visual&&translate.visual.adjustTranslationSpacesByNodequeueUuid(e)}],renderFinish_Trigger:function(e,t){for(var a=0;a<translate.lifecycle.execute.renderFinish.length;a++)try{translate.lifecycle.execute.renderFinish[a](e,t)}catch(e){translate.log(e)}},finally:[],finally_Trigger:function(e){for(var t=0;t<translate.lifecycle.execute.finally.length;t++)try{translate.lifecycle.execute.finally[t](e)}catch(e){translate.log(e)}}}},execute:function(e){translate.executeTriggerNumber=translate.executeTriggerNumber+1;var t,a=translate.executeTriggerNumber,n=translate.util.uuid();if(translate.time.log("创建uuid:"+n),null==translate.to||""==translate.to){var r=translate.storage.get("to");null!=r&&void 0!==r&&r.length>0&&(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;o<l.length;o++)s.length>0&&(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;d<t.length&d<15e3;d++){var g=t[d];translate.element.whileNodes(n,g)}if(translate.time.log("扫描要翻译区域的元素完成"),translate.language.translateLanguagesRange.length>0)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<translate.nodeQueue[n].list[c][f].nodes.length;N++){for(var _=translate.nodeQueue[n].list[c][f].nodes[N].node,q=!1,k=0;k<translate.inProgressNodes.length;k++)translate.inProgressNodes[k].node.isSameNode(_)&&(translate.inProgressNodes[k].number++,q=!0);q||translate.inProgressNodes.push({node:_,number:1});var L=translate.nodeQueue[n].list[c][f].nodes[N].beforeText+w+translate.nodeQueue[n].list[c][f].nodes[N].afterText;e.add(translate.nodeQueue[n].list[c][f].nodes[N].node,y,L,translate.nodeQueue[n].list[c][f].nodes[N].attribute);var C=-1;for(d=0;d<v[c].length;d++)if(translate.nodeQueue[n].list[c][f].nodes[N].node.isSameNode(v[c][d].node)){C=d;break}var A=-1;for(d=0;d<x.length;d++)if(translate.nodeQueue[n].list[c][f].nodes[N].node.isSameNode(x[d].node)){A=d;break}-1==C&&(C=v[c].length,v[c][C]={},v[c][C].node=translate.nodeQueue[n].list[c][f].nodes[N].node,v[c][C].array=[]),-1==A&&(x[A=x.length]={},x[A].node=translate.nodeQueue[n].list[c][f].nodes[N].node,x[A].array=[]);var R=v[c][C].array.length;v[c][C].array[R]=L;var O=x[A].array.length;x[A].array[O]=L}else{h[c].push(T);for(var E=0;E<translate.nodeQueue[n].list[c][f].nodes.length;E++)m.get(c).set(translate.nodeQueue[n].list[c][f].nodes[E].node,1);p[c].push(f)}}e.execute()}if(translate.time.log("对扫描到的元素进行浏览器本地缓存命中-完毕"),"string"!=typeof translate.request.api.translate||null==translate.request.api.translate||translate.request.api.translate.length<1)return translate.state=0,translate.lifecycle.execute.renderFinish_Trigger(n,translate.to),translate.executeNumber++,void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:16,triggerNumber:a});var I=[];for(var c in translate.nodeQueue[n].list)translate.nodeQueue[n].list.hasOwnProperty(c)&&void 0!==h[c]&&(h[c].length<1||c!=translate.to&&I.push(c));if(0==I.length)return translate.lifecycle.execute.renderFinish_Trigger(n,translate.to),translate.state=0,translate.executeNumber++,void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:18,triggerNumber:a});for(var c in p)if(p.hasOwnProperty(c)&&void 0!==p[c]&&!(p[c].length<1))for(var j=0;j<p[c].length;j++){var S=p[c][j];if(void 0!==translate.nodeQueue[n].list[c][S].nodes&&void 0!==translate.nodeQueue[n].list[c][S].nodes.length)for(var Q=0;Q<translate.nodeQueue[n].list[c][S].nodes.length;Q++){for(_=translate.nodeQueue[n].list[c][S].nodes[Q].node,q=!1,k=0;k<translate.inProgressNodes.length;k++)translate.inProgressNodes[k].node.isSameNode(_)&&(translate.inProgressNodes[k].number++,q=!0);q||translate.inProgressNodes.push({node:_,number:1})}else translate.log("translate.nodeQueue['"+n+"']['list']['"+c+"']['"+S+"'].nodes.length is null ,理论上不应该存在,进行异常报出,但不影响使用,已容错。")}for(var D in translate.state=20,translate.time.log("调用翻译接口进行翻译 - 开始"),translate.request.data[n]={time:Date.now(),list:{}},I){if(I.hasOwnProperty(D))if("string"==typeof(c=I[D])){if(void 0===h[c]||h[c].length<1)return translate.log("异常,理论上不应该存在, lang:"+c+", translateTextArray:"),translate.log(h),translate.log("你无需担心,这个只是个提示,它并不影响你翻译的正常进行,只是个异常提示而已,它会自动容错处理的,不会影响翻译的使用。"),translate.state=0,translate.executeNumber++,void translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:21,triggerNumber:a});void 0!==translate.translateRequest[n]&&null!=translate.translateRequest[n]||(translate.translateRequest[n]={}),translate.translateRequest[n][c]={},translate.translateRequest[n][c].executeFinish=0,translate.translateRequest[n][c].addtime=Math.floor(Date.now()/1e3),translate.listener.execute.renderStartByApiRun(n,c,translate.to);var P=[];for(let e of m.get(c).keys())P.push(e);translate.lifecycle.execute.translateNetworkBefore_Trigger({uuid:n,lang:c,to:translate.to,texts:h[c],nodes:P}),void 0===translate.request.data[n].list[c]&&(translate.request.data[n].list[c]={}),translate.request.data[n].list[c][translate.to]={texts:h[c],nodes:P};var M=translate.request.api.translate,B={from:c,to:translate.to,text:encodeURIComponent(JSON.stringify(h[c]))};translate.request.post(M,B,function(e,t){if(1!=e.result){"object"==typeof translate.translateRequest[n]&&"object"==typeof translate.translateRequest[n][t.from]?(translate.translateRequest[n][t.from].result=2,translate.translateRequest[n][t.from].executeFinish=1,translate.translateRequest[n][t.from].stoptime=Math.floor(Date.now()/1e3)):translate.log("WARINNG!!! translate.translateRequest[uuid][requestData.from] is not object");var a="";void 0!==t.from&&null!=t.from&&(a=t.from);var r="";return r=void 0!==t.to&&null!=t.to?t.to:translate.to,translate.waitingExecute.isAllExecuteFinish(n,a,r,0,e.info),translate.log("=======ERROR START======="),translate.log(h[t.from]),translate.log("response : "+e.info),void translate.log("=======ERROR END =======")}if(void 0===translate.nodeQueue[n])return void translate.log("提示:你很可能多次引入了 translate.js 所以造成了翻译本身的数据错乱,这只是个提示,它还是会给你正常翻译的,但是你最好不要重复引入太多次 translate.js ,正常情况下只需要引入一次 translate.js 就可以了。太多的话很可能会导致你页面卡顿");let s=new translate.renderTask;for(var l=0;l<p[e.from].length;l++){var o=e.from,i=e.text[l];if(null!=i){i.toLowerCase().indexOf(h[e.from][l].toLowerCase())>-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;c<translate.nodeQueue[n].list[o][u].nodes.length;c++)s.add(translate.nodeQueue[n].list[o][u].nodes[c].node,g,translate.nodeQueue[n].list[o][u].nodes[c].beforeText+i+translate.nodeQueue[n].list[o][u].nodes[c].afterText,translate.nodeQueue[n].list[o][u].nodes[c].attribute);translate.storage.set("hash_"+e.to+"_"+d,i),translate.offline.fullExtract.isUse&&translate.offline.fullExtract.set(u,g,e.to,i)}}s.execute(),translate.translateRequest[n][o].result=1,translate.translateRequest[n][o].executeFinish=1,translate.translateRequest[n][o].stoptime=Math.floor(Date.now()/1e3),setTimeout(function(){translate.waitingExecute.isAllExecuteFinish(n,e.from,e.to,1,"")},5)},function(e){translate.translateRequest[n][e.data.from].executeFinish=1,translate.translateRequest[n][e.data.from].stoptime=Math.floor(Date.now()/1e3),translate.translateRequest[n][e.data.from].result=3;var t="";t=void 0!==e.status?e.status<1?"Network connection failed. url: "+e.requestURL:"HTTP response code : "+e.status+", url: "+e.requestURL:"Network connection failed. url: "+e.requestURL,translate.waitingExecute.isAllExecuteFinish(n,e.data.from,translate.to,0,t)})}}translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:25,triggerNumber:a})}else translate.lifecycle.execute.finally_Trigger({uuid:n,to:translate.to,state:2,triggerNumber:a})},translateRequest:{},nodeHistory:null,node:{data:null,get:function(e){return translate.node.data.get(e)},find:function(e){return null!=translate.node.get(e)},set:function(e,t){translate.node.data.set(e,t)},setModified:function(e,t){if(void 0===translate.node.data.get(e)||null===translate.node.data.get(e))return translate.log("translate.node.setModified exception: node not find in translate.node, node:"),void translate.log(e);void 0===translate.node.data.get(e).modified&&(translate.node.data.get(e).modified=[]),translate.node.data.get(e).modified.push(t)},delete:function(e){translate.node.data.delete(e)},refresh:function(){const e=new Array;for(let t of translate.node.data.keys()){let a=!1;t.nodeType===Node.ELEMENT_NODE?a=t.isConnected:t.nodeType===Node.ATTRIBUTE_NODE?a=t.ownerElement&&t.ownerElement.isConnected:t.nodeType===Node.TEXT_NODE&&(a=t.isConnected),a||e.push(t)}for(var t=0;t<e.length;t++)translate.node.delete(e[t])}},element:{tagAttribute:{},nodeAnalyse:{get:function(e,t){return translate.element.nodeAnalyse.analyse(e,"","",t)},gets:function(e){var t=[],a=translate.element.getNodeName(e).toUpperCase();switch(a){case"META":var n=e.name.toLowerCase(),r=e.getAttribute("property"),s="";"string"==typeof r&&r.length>0&&(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<e.attributes.length;i++){var u=translate.element.getNodeName(e.attributes[i]).toLowerCase();if(o.attribute.indexOf(u)>-1&&o.condition(e)){for(var d=!1,g=0;g<t.length;g++)t[g].node===e.attributes[i]&&(d=!0);d||t.push({text:e.attributes[i].nodeValue,attribute:u,node:e.attributes[i]})}}if("string"==typeof e.title&&e.title.trim().length>0){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;i<o.length;i++)translate.element.whileNodes(e,o[i]);else translate.element.findNode(e,t)}},findNode:function(e,t){if(null!=t&&void 0!==t){if(2===t.nodeType){if(null==t.ownerElement)return}else if(null==t.parentNode)return;if(!translate.ignore.isIgnore(t))for(var a=translate.element.nodeAnalyse.gets(t),n=0;n<a.length;n++)translate.addNodeToQueue(e,a[n].node,a[n].text,"")}},nodeToElement:function(e){for(var t=new Array,a=0;a<e.length;a++){var n=e[a];if(void 0!==n&&void 0!==n.parentNode)if(2===n.nodeType){if(null==(r=n.ownerElement))continue;t.push(r)}else if(3===n.nodeType){var r;if(null==(r=n.parentNode))continue;t.push(r)}else 1===n.nodeType?t.push(n):(translate.log("translate.element.nodeToElement 中,发现传入的node.nodeType 类型有异常,理论上不应该存在, node.nodeType:"+n.nodeType),translate.log(n))}return t}},addNodeToQueue:function(e,t,a,n){if(null!=t&&null!=a&&0!=a.length){var r=translate.element.getNodeName(t).toLowerCase();if("#comment"!=r){var s;translate.util.hash(a);if(translate.util.findTag(a)){if(null==t.parentNode)return;var l=translate.element.getNodeName(t.parentNode);if("SCRIPT"==l||"STYLE"==l)return}var o="";if("string"==typeof n&&n.length>0?"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;d<translate.ignore.textRegex.length;d++)for(var g=translate.ignore.textRegex[d],c=0;c<i.length;c++){var f=(a=i[c]).match(g)||[];u=u.concat(f)}if(0==u.length)u=translate.ignore.text;else{u.concat(translate.ignore.text);for(var h=0;h<u.length;h++)translate.history.translateText.add(u[h],u[h])}for(h=0;h<u.length;h++)0!=u[h].trim().length&&(i=translate.nomenclature.dispose(i,u[h],u[h],{node:s,attribute:o}).texts);if(void 0===translate.temp_nomenclature&&(translate.temp_nomenclature=new Array),void 0===translate.temp_nomenclature[translate.language.getLocal()]&&(p=new Array),void 0!==translate.nomenclature.data[translate.language.getLocal()]&&void 0!==translate.nomenclature.data[translate.language.getLocal()][translate.to]){var p;for(var m in translate.nomenclature.data[translate.language.getLocal()][translate.to])if(translate.nomenclature.data[translate.language.getLocal()][translate.to].hasOwnProperty(m)){var v=translate.nomenclature.data[translate.language.getLocal()][translate.to][m],x=translate.nomenclature.dispose(i,m,v,{node:s,attribute:o});i=x.texts,x.find,void 0!==p&&p.push(m)}void 0===translate.temp_nomenclature[translate.language.getLocal()]&&(translate.temp_nomenclature[translate.language.getLocal()]=p)}i.length>0&&i[0]!=a?translate.node.get(s).whole=!1:translate.node.get(s).whole=!0;var y=[];for(c=0;c<i.length;c++)if(0!=i[c].trim().length){var T=translate.addNodeToQueueAnalysis(e,t,i[c],n);Array.prototype.push.apply(y,T)}0==y.length&&(translate.node.get(s).lastTranslateRenderTime=Date.now(),translate.node.get(s).translateTexts={},translate.node.get(s).resultText=translate.element.nodeAnalyse.get(t,n).text,translate.history.translateText.add(translate.node.get(s).originalText,translate.node.get(s).resultText))}}}},addNodeToQueueAnalysis:function(e,t,a,n){var r=translate.language.recognition(a),s=r.languageArray;void 0!==s[translate.to]&&delete s[translate.to];var l=[];if(translate.whole.isWhole(t)){o=translate.language.recognition_languageName_force(r);null!=(u=translate.addNodeQueueItem(e,t,a,n,o,"",""))&&l.push(u)}else for(var o in s)if(s.hasOwnProperty(o))for(var i=0;i<s[o].list.length;i++)if(void 0!==s[o].list[i]&&void 0!==s[o].list[i].text){var u,d=s[o].list[i].text,g=s[o].list[i].beforeText,c=s[o].list[i].afterText;null!=(u=translate.addNodeQueueItem(e,t,d,n,o,g,c))&&l.push(u)}return l},addNodeQueueItem:function(e,t,a,n,r,s,l){null!=translate.nodeQueue[e].list[r]&&void 0!==translate.nodeQueue[e].list[r]||(translate.nodeQueue[e].list[r]=new Array);var o=translate.util.hash(a);null!=translate.nodeQueue[e].list[r][o]&&void 0!==translate.nodeQueue[e].list[r][o]||(translate.nodeQueue[e].list[r][o]=new Array,translate.nodeQueue[e].list[r][o].nodes=new Array,translate.nodeQueue[e].list[r][o].original=a,translate.nodeQueue[e].list[r][o].translateText=a);var i=!1;if(void 0!==t.isSameNode)for(var u=0;u<translate.nodeQueue[e].list[r][o].nodes.length;u++)t.isSameNode(translate.nodeQueue[e].list[r][o].nodes[u].node)&&n===translate.nodeQueue[e].list[r][o].nodes[u].attribute&&(i=!0);if(i)return null;var d=translate.nodeQueue[e].list[r][o].nodes.length;return translate.nodeQueue[e].list[r][o].nodes[d]=new Array,translate.nodeQueue[e].list[r][o].nodes[d].node=t,translate.nodeQueue[e].list[r][o].nodes[d].attribute=n,translate.nodeQueue[e].list[r][o].nodes[d].beforeText=s,translate.nodeQueue[e].list[r][o].nodes[d].afterText=l,translate.nodeQueue[e].list[r][o].nodes[d]},whole:{isEnableAll:!1,enableAll:function(){translate.whole.isEnableAll=!0},class:[],tag:[],id:[],executeTip:function(){0==translate.whole.class.length&&0==translate.whole.tag.length&&0==translate.whole.id.length||translate.log("您开启了 translate.whole 此次行为避开了浏览器端的文本语种自动识别,而是暴力的直接对某个元素的整个文本进行翻译,很可能会产生非常大的翻译量,请谨慎!有关每日翻译字符的说明,可参考: http://translate.zvo.cn/42557.html "),translate.whole.tag.indexOf("html")>-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;s<r.length;s++)if(null!=r[s]&&r[s].trim().length>0&&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;a<translate.language.systems[t].languages.length;a++)e.set(translate.language.systems[t].languages[a],{system:t});return e},map_data:null,map:function(){return null==translate.language.map_data&&(translate.language.map_data=translate.language.generateLanguageNameObject()),translate.language.map_data},local:"",translateLocal:!1,translateLanguagesRange:[],setLocal:function(e){translate.useVersion="v2",translate.language.local=e},getLocal:function(){return(null==translate.language.local||translate.language.local.length<1)&&translate.language.autoRecognitionLocalLanguage(),translate.language.local},getCurrent:function(){var e=translate.storage.get("to");return null!=e&&void 0!==e&&e.length>0?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;a<translate.documents.length;a++){var n=translate.documents[a];void 0!==n&&null!=n&&void 0!==n.innerText&&null!=n.innerText&&n.innerText.length>0&&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;r<translate.ignore.tag.length;r++)for(var s=translate.ignore.tag[r],l=t.querySelectorAll(s),o=Array.prototype.slice.call(l),i=0;i<o.length;i++){var u=o[i];u.parentNode&&u.parentNode.removeChild(u)}if(!(null==(e=t.innerText)||void 0===e||e.length<1))return e=e.replace(/\s/g,"");translate.language.local="chinese_simplified"},autoRecognitionLocalLanguage:function(){if(null!=translate.language.local&&translate.language.local.length>2)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<e.length;s++){var l=e.charAt(s),o=translate.language.getCharLanguage(l);""==o&&(o="unidentification");var i=translate.language.analyse(o,a,n,r,l);a=i.langStrs,void 0!==n.language&&(r.language=n.language,r.charstr=n.charstr,r.storage_language=n.storage_language),n.language=i.storage_language,n.charstr=l,n.storage_language=i.storage_language,t.push(o)}return void 0!==a.unidentification&&delete a.unidentification,void 0!==a.specialCharacter&&delete a.specialCharacter,void 0!==a.number&&delete a.number,a},recognitionAlgorithm:function(e,t,a,n){if(void 0!==a.english&&void 0!==a.romance&&"english"==t.languageName&&a.romance/a.english>.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;o<t[s].length;o++)l+=t[s][o].text.length;r+=l,a[s]=l,n[s]=l}var i="",u=0;for(var d in a)a.hasOwnProperty(d)&&a[d]>u&&(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<e.length;a++){const n=e[a].toLowerCase();if(Object.keys(t).forEach(e=>{t[e].chars.includes(n)&&(t[e].score+=1)}),a<e.length-1){const n=e.slice(a,a+2).toLowerCase();Object.keys(t).forEach(e=>{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<g.length;h++)e.indexOf(g[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(o<e.length){let a=e.charAt(o);/。/.test(a)?(i+=". ",u=t+"。"):/,/.test(a)?(i+=", ",u=t+","):/:/.test(a)?(i+=": ",u=t+":"):-1!==[" ","\n","\t","]","|","_","-","/"].indexOf(a)||i.length>0&&" "==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;s<a.length;s++)-1!=a[s].indexOf(t)&&a[s].length>t.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<r.length;d++){var g=r[d].indexOf(t),c=r[d].length;if(e.substring(i-g,i-g+c)==r[d]){u=!0;break}}u||n.push(i),l=i+t.length}return n},replaceFromIndex:function(e,t,a,n){const r=e.slice(0,t),s=e.slice(t),l=s.indexOf(a);if(l>-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;r<s;r++)t[e[r]]?t[e[r]]++:t[e[r]]=1,t[e[r]]>n&&(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<e.length;t++)a=(a<<5)-a+e.charCodeAt(t),a|=0;return a+""},charReplace:function(e){return null==e?"":e=(e=e.trim()).replace(/\t|\n|\v|\r|\f/g,"")},regExp:{pattern:function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/\"/g,'\\"')).replace(/\?/g,"\\?")).replace(/\$/g,"\\$")).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")).replace(/\|/g,"\\|")).replace(/\+/g,"\\+")).replace(/\*/g,"\\*")).replace(/\[/g,"\\[")).replace(/\]/g,"\\]")).replace(/\^/g,"\\^")).replace(/\{/g,"\\{")).replace(/\}/g,"\\}")},resultText:function(e){return e}},getUrlParam:function(e){var t=new RegExp("(^|&)"+e+"=([^&]*)(&|$)"),a=window.location.search.substr(1).match(t);return null!=a?unescape(a[2]):""},synchronizesLoadJs:function(e){var t=null;if(window.ActiveXObject)try{t=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){t=new ActiveXObject("Microsoft.XMLHTTP")}else window.XMLHttpRequest&&(t=new XMLHttpRequest);if(t.open("GET",e,!1),t.send(null),4==t.readyState){if(t.status>=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<t.length;e++)e%2==0?""!==t[e]&&(a[t[e]]="0"):a[t[e]]="1";return a},getElementPosition:function(e){const t=e.getBoundingClientRect(),a=window.scrollX||document.documentElement.scrollLeft,n=window.scrollY||document.documentElement.scrollTop,r=t.left+a,s=t.top+n,l=t.right-t.left,o=t.bottom-t.top;return{startX:r,startY:s,endX:r+l,endY:s+o,width:l,height:o}},compareStringsIgnoringNumbers:function(e,t){let a=0,n=0;const r=e.length,s=t.length;for(;a<r||n<s;){for(;a<r&&e.charCodeAt(a)>=48&&e.charCodeAt(a)<=57;)a++;for(;n<s&&t.charCodeAt(n)>=48&&t.charCodeAt(n)<=57;)n++;if(a<r!=n<s)return!1;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;e<translate.service.edge.language.json.length;e++){var t=translate.service.edge.language.json[e];translate.service.edge.language.map[t.id]=t.serviceId}}return translate.service.edge.language.map}},translate:function(e,t,a,n){var r=JSON.parse(decodeURIComponent(t.text));let s=translate.util.split(r,4e4,900);var l={from:t.from+"",to:t.to,text:t.text},o=t.from;"auto"!=o&&(o="romance"==o?"fr":translate.service.edge.language.getMap()[t.from]);for(var i=translate.service.edge.language.getMap()[t.to],u=translate.service.edge.api.translate.replace("{from}",o).replace("{to}",i),d=0;d<s.length;d++)translate.request.send(u,JSON.stringify(s[d]),l,function(e){var n={info:"SUCCESS",result:1};n.from=t.from,n.to=t.to,n.text=[];for(var r=0;r<e.length;r++)n.text.push(e[r].translations[0].text);if(s.length>1){for(var l=-1,o=0;o<s.length;o++)if(s[o].length-n.text.length==0){l=o;break}l<0&&(translate.log("------ERROR--------"),translate.log("翻译内容过多,进行拆分,但拆分判断出现异常,currentIndex:-1 请联系 http://translate.zvo.cn/43006.html 说明"));for(var i=0;i<l;i++)for(var u=s[i].length,d=0;d<u;d++)n.text.unshift(null);for(var g=s.length-1;g>l;g--){var c=s[g].length;for(d=0;d<c;d++)n.text.push(null)}}a(n)},"post",!0,{"Content-Type":"application/json"},n,!0)}}},request:{data:{},api:{host:["https://api.translate.zvo.cn/","https://america.api.translate.zvo.cn/"],language:"language.json",translate:"translate.json",ip:"ip.json",connectTest:"connectTest.json",init:"init.json"},setHost:function(e){translate.service.use("translate.service"),"string"==typeof translate.request.api.host?translate.request.api.host=[e]:translate.request.api.host=e,translate.request.speedDetectionControl.state=0,translate.storage.set("speedDetectionControl_hostQueue",""),translate.request.speedDetectionControl.hostQueue=[],translate.request.speedDetectionControl.checkHostQueue=new Array,translate.request.speedDetectionControl.checkResponseSpeed(),translate.temp_request_init=void 0,setTimeout(function(){translate.request.initRequest()},3e3)},initRequest:function(){if("string"==typeof translate.request.api.init&&null!=translate.request.api.init&&translate.request.api.init.length>0){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;t<translate.request.api.host.length;t++){var a=translate.request.api.host[t];translate.request.speedDetectionControl.hostQueue[t]={host:a,time:0}}}else translate.request.speedDetectionControl.hostQueue=JSON.parse(e);var n=translate.storage.get("speedDetectionControl_lasttime");null!=n&&void 0!==n||(n=0);(new Date).getTime()-n>6e4&&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;t<translate.request.api.host.length;t++){var a=translate.request.api.host[t];translate.request.speedDetectionControl.checkHostQueueMap[a]={start:(new Date).getTime()};try{translate.request.send(a+translate.request.api.connectTest,{host:a},{host:a},function(e){translate.request.speedDetectionControl.state=2;var t=e.info,a=translate.request.speedDetectionControl.checkHostQueueMap[t],n=(new Date).getTime()-a.start;translate.request.api.host[0]==t&&(n-=translate.request.speedDetectionControl.hostMasterNodeCutTime)<0&&(n=0),translate.request.speedDetectionControl.checkResponseSpeed_Storage(t,n)},"post",!0,e,function(e){translate.request.speedDetectionControl.state=2;var t=e.requestURL.replace(translate.request.api.connectTest,"");translate.request.speedDetectionControl.checkResponseSpeed_Storage(t,translate.request.speedDetectionControl.disableTime)},!1)}catch(e){translate.log(e)}}}},getHostQueueIndex:function(){if(translate.request.speedDetectionControl.hostQueueIndex<0){var e=translate.storage.get("speedDetectionControl_hostQueueIndex");void 0===e||null==e?(translate.request.speedDetectionControl.hostQueueIndex=0,translate.storage.set("speedDetectionControl_hostQueueIndex",0)):translate.request.speedDetectionControl.hostQueueIndex=e}return translate.request.speedDetectionControl.hostQueueIndex},getHost:function(){var e=translate.request.speedDetectionControl.getHostQueue(),t=translate.request.speedDetectionControl.getHostQueueIndex();return e.length>t||(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;d<n.length;d++){var g=translate.util.hash(n[d]),c=translate.storage.get("hash_"+s+"_"+g);null!=c&&c.length>0?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;r<e.text.length;r++){var l=translate.util.hash(i[r]);translate.storage.set("hash_"+s+"_"+l,e.text[r]),translate.offline.fullExtract.isUse&&translate.offline.fullExtract.set(l,i[r],h.to,e.text[r]),o[u[l]]=e.text[r]}e.text=o,t(e)},function(e){a&&"function"==typeof a&&a(e)})}}else t(h={from:r,to:s,text:o,result:1})},listener:{isStart:!1,use:!1,minIntervalTime:800,lasttime:0,executetime:0,delayExecuteTime:200,addExecute:function(){var e=Date.now();0==translate.request.listener.lasttime?(translate.request.listener.executetime=e,translate.request.listener.lasttime=1):translate.request.listener.executetime>1||(e<translate.request.listener.lasttime+translate.request.listener.minIntervalTime?translate.request.listener.executetime=translate.request.listener.lasttime+translate.request.listener.minIntervalTime:translate.request.listener.executetime=e)},trigger:function(e){return!0},start:function(){translate.request.listener.use=!0},addListener:function(){if(0==translate.request.listener.use)return;if(void 0!==translate.request.listener.isStart&&1==translate.request.listener.isStart)return;if(translate.request.listener.isStart=!0,setInterval(function(){var e=Date.now();if(translate.request.listener.executetime>1&&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<e.getEntries().length;a++){var n=e.getEntries()[a];if("fetch"===n.initiatorType||"xmlhttprequest"===n.initiatorType){var r=n.name;"string"==typeof translate.request.api.host&&(translate.request.api.host=[translate.request.api.host]);for(var s=!1,l=0;l<translate.request.api.host.length;l++)if(r.indexOf(translate.request.api.host[l])>-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<t.length;n++)if("resource"===t[n]){a=!0;break}if(a)try{return void e.observe({entryTypes:["resource"]})}catch(e){translate.log("PerformanceObserver entryTypes 失败,尝试 type 参数")}}try{e.observe({type:"resource",buffered:!0}),translate.log("使用 PerformanceObserver type")}catch(e){translate.log("当前浏览器不支持 PerformanceObserver 的任何参数, translate.request.listener.start() 未启动")}}}},storage:{IndexedDB:{db:null,initDB:function(){const e=this;return new Promise((t,a)=>{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<e.length;t++){var a=e[t];if(void 0!==a.src&&null!=a.src&&0!=a.src.length){var n=a.getAttribute("src");for(var r in translate.images.queues){var s=r,l=translate.images.queues[r];s==n&&(l=l.replace(new RegExp("{language}","g"),translate.to),a.src=l)}}}var o=document.getElementsByTagName("*");for(t=0;t<o.length;t++){var i=o[t],u=window.getComputedStyle(i,null).backgroundImage;if("none"!=u){var d=translate.images.gainCssBackgroundUrl(u);if(void 0!==translate.images.queues[d])l=(l=translate.images.queues[d]).replace(new RegExp("{language}","g"),translate.to),i.style.backgroundImage='url("'+l+'")'}}}},gainCssBackgroundUrl:function(e){var t=e.indexOf('"'),a=e.lastIndexOf('"');return-1!=t&&-1!=a?e.substring(t+1,a):e}},reset:function(e){void 0===e&&(e={}),void 0===e.selectLanguageRefreshRender&&(e.selectLanguageRefreshRender=!0),void 0===e.notTranslateTip&&(e.notTranslateTip=!0),translate.listener.reset(),translate.init_first_trigger_execute=void 0;for(let e of translate.node.data.keys())if(null!=!translate.node.get(e)&&"string"==typeof translate.node.get(e).originalText){var t=!1;if("string"==typeof translate.node.get(e).attribute&&"value"===translate.node.get(e).attribute){var a=translate.element.getNodeName(e).toLowerCase();"input"!==a&&"textarea"!==a||(e.value=translate.node.get(e).originalText,t=!0)}t||(e.nodeValue=translate.node.get(e).originalText)}null!=translate.node.data&&translate.node.data.clear(),translate.nodeQueue={},void 0!==translate.time.execute.data&&(translate.time.execute.data={}),translate.storage.set("to",""),translate.to=null,null!==translate.history.translateText.originalMap&&translate.history.translateText.originalMap.clear(),null!==translate.history.translateText.resultMap&&translate.history.translateText.resultMap.clear(),e.selectLanguageRefreshRender&&translate.selectLanguageTag.refreshRender(),translate.state=0},selectionTranslate:{selectionX:0,selectionY:0,callTranslate:function(e){let t=window.getSelection();if(t.anchorOffset==t.focusOffset)return;let a=window.getSelection().toString();if("string"!=typeof translate.request.api.translate||null==translate.request.api.translate||translate.request.api.translate.length<1)translate.log("已设置了不使用 translate 翻译接口,翻译请求被阻止");else{var n=translate.request.api.translate,r={from:translate.language.getLocal(),to:translate.to,text:encodeURIComponent(JSON.stringify([a]))};translate.request.post(n,r,function(e,t){if(1!=e.result)return void translate.log("translate.selectionTranslate network response error : "+e.info);let a=document.querySelector("#translateTooltip");a.innerText=e.text[0],a.style.top=selectionY+20+"px",a.style.left=selectionX+50+"px",a.style.display=""},null)}},start:function(){let e=document.createElement("span");e.innerText="",e.setAttribute("id","translateTooltip"),e.setAttribute("style","background-color:black;color:#fff;text-align:center;border-radius:6px;padding:5px;position:absolute;z-index:999;top:150%;left:50%; "),document.body.appendChild(e),document.addEventListener("mousedown",e=>{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<a.length;n++)translate.progress.api.removeChildClass(a[n],t+1);1!=t&&void 0!==e&&"string"==typeof e.className&&(e.className.indexOf("translate_api_in_progress")<-1||(e.className=e.className.replace(/translate_api_in_progress/g,"")))},startUITip:function(e){void 0===e&&(e={}),"number"!=typeof e.maskLayerMinWidth&&(e.maskLayerMinWidth=10);var t=document.getElementById("translatejs-text-element-hidden");if(void 0===t||null==t){const e=document.createElement("style");e.textContent=' .translatejs-text-element-hidden, .translatejs-text-element-hidden[type="text"]::placeholder{color: transparent !important; -webkit-text-fill-color: transparent !important; text-shadow: none !important;} ',e.id="translatejs-text-element-hidden",document.head.appendChild(e)}var a=document.getElementById("translatejs-mask-layer-animation");if(void 0===a||null==a){const e=document.createElement("style");e.textContent=translate.progress.style,e.id="translatejs-mask-layer-animation",document.head.appendChild(e)}translate.progress.api.isTip&&(translate.lifecycle.execute.translateNetworkBefore.push(function(t){(new Date).getTime();for(var a=translate.element.nodeToElement(t.nodes),n=0;n<a.length;n++)a[n].className=a[n].className+" translatejs-text-element-hidden";var r=translate.visual.getRects(a),s=translate.visual.rectsToOneArray(r),l=translate.visual.coordinateSort(s);const o=[];for(let t=0;t<l.length;t++)l[t].width<e.maskLayerMinWidth&&o.push(t);for(var i=o.length-1;i>-1;i--)l.splice(o[i],1);var u=translate.visual.rectsSpaceEliminateOverlap(l).rects;for(n=0;n<u.length;n++){var d=u[n].node.parentNode;void 0!==d&&"string"==typeof d.className&&d.className.indexOf("translate_api_in_progress")>-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<t.length;a++)"string"==typeof t[a].className&&(t[a].className.indexOf("translatejs-text-element-hidden")>-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<translate.ignore.text.length;g++)if(0!=translate.ignore.text[g].trim().length){var c=translate.ignore.text[g];c.indexOf(".")>-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;h<l.length;h++){var p=l[h].split(f);if(p.length>1){!0;for(var m=0;m<p.length;m++)p[m].length>0&&(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<t.text.length;u++){var d=o[u].index;i.length<d+1&&i.push(l[d]),i[d]=translate.util.textReplace(i[d],o[u].original,t.text[u],t.to)}}else i=t.text;if(i&&i.length===l.length?l.forEach((t,a)=>{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<n.length-1;e++)r=r[n[e]];r[n[n.length-1]]=a},find:function(e,t=""){let a={},n={};if("object"==typeof e&&null!==e)if(Array.isArray(e))e.forEach((e,r)=>{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;n<t.length;n++)if(t[n].includes("___TRANSLATEJS_LINE_BREAK___")){t[n]=t[n].replace(/___TRANSLATEJS_LINE_BREAK___/g,"\n");const a=t[n].match(/"[^"]+":\s*"([^"]+)"/);if(a&&a[1]){let o=a[1].replace(/___TRANSLATEJS_LINE_BREAK___/g,"\n");try{const i=o.match(/function\s*([^\(]*)\(([^)]*)\)\s*\{([\s\S]*)\}/);if(i){var[,r,s,l]=i;"function"==typeof e.functionBodyHandle&&(l=e.functionBodyHandle(l)),t[n]=t[n].replace(`"${a[1]}"`,`function${r}(${s}){${l}}`)}}catch(e){console.error("转换函数时出错:",e)}}}a=t.join("\n")}return a}},network:{originalOpen:XMLHttpRequest.prototype.open,originalSend:XMLHttpRequest.prototype.send,setRequestHeaderOriginal:XMLHttpRequest.prototype.setRequestHeader,rules:[{url:/https:\/\/www\.guanleiming\.com\/a\/b\/.html/,methods:["GET","POST"],params:["a","b1"]}],getRuleMatch:function(e,t){for(let a=0;a<translate.network.rules.length;a++){const n=translate.network.rules[a];if(void 0!==n.url||""!=n.url){if(n.url.test(e)&&n.methods.includes(t.toUpperCase()))return n}else translate.log("WARINNG : translate.network.rule find url is null:"),translate.log(n)}return null},use:function(){XMLHttpRequest.prototype.open=function(...e){return translate.network.hookOpen.apply(this,e)},XMLHttpRequest.prototype.send=function(...e){return translate.network.hookSend.apply(this,e)},XMLHttpRequest.prototype.setRequestHeader=function(...e){return translate.network.setRequestHeader.apply(this,e)},translate.network.fetch.use()},_translateText:e=>translate.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<t.params.length;a++){var n=t.params[a];if(s.has(n)){const e=s.get(n),t=await translate.network._translateText(e);void 0===t?translate.log("WARINNG: translateResultData is undefined"):void 0===t.result?translate.log("WARINNG: translateResultData.result is undefined"):1!=t.result?translate.log("WARINNG: translateResultData.result failure : "+t.info):s.set(n,decodeURIComponent(t.text[0]))}}return r.toString()}catch(t){return console.warn("GET处理失败:",t),e}},async handleForm(e,t){try{const a=new URLSearchParams(e),n={...a};for(const e of t.params)if(a.has(e)){const t=a.get(e),r=await translate.network._translateText(t);n[e]=r}return new URLSearchParams(n).toString()}catch(t){return console.warn("表单处理失败:",t),e}},async handleJson(e,t){try{const a={...JSON.parse(e)};for(const e of t.params)if(a.hasOwnProperty(e)){const t=a[e];a[e]=await translate.network._translateText(t)}return JSON.stringify(a)}catch(t){return console.warn("JSON处理失败:",t),e}}},_requestContext:null,hookOpen(e,t,a,n,r){return this._requestContext={method:e.toUpperCase(),originalUrl:t,async:a,user:n,password:r,matchedRule:translate.network.getRuleMatch(t,e)},translate.network.originalOpen.call(this,e,t,a,n,r)},hookSend(e){const t=this._requestContext;if(!t||!t.matchedRule)return translate.network.originalSend.call(this,e);const a=async()=>{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;a<e.length;a++)for(var n=0;n<e[a].length;n++)t.push(e[a][n]);return t},filterRectsByLineInterval:function(e,t){if(!Array.isArray(e)||"number"!=typeof t||t<1)return console.error("输入参数无效,请确保rects是数组且line是大于0的数字"),[];const a=e.map(e=>e&&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 r<a&&([a,r]=[r,a]),s<n&&([n,s]=[s,n]),{r:{left:a,top:n,right:r,bottom:s},idx:t}});a.sort((e,t)=>Math.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;e++){if(r[e])continue;const l=a[e].r,o=s[e];for(let i=e+1;i<n;i++){if(r[i])continue;const n=a[i].r,u=l.left<=n.left+2&&l.top<=n.top+2&&l.right>=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;e<n;e++)u.set(i[e],e);for(let t=0;t<e.length;t++){const a=u.get(t);void 0!==a&&r[a]?o.push(e[t]):l.push(e[t])}return{rects:l,removes:o}},coordinateSort:function(e){return e.filter(e=>null!==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<e.length;t++)for(let n=t+1;n<e.length;n++){const r=e[t],s=e[n];if(!translate.visual.areHorizontallyAdjacent(r,s))break;a.push({before:r,after:s})}}),a},groupRectsByLine:function(e){const t=[];let a=[];return e.forEach(e=>{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<translate.time.printTime)){var n="";try{var r=(new Error).stack.split("\n"),s=(r[2]||r[3]).match(/at (\S+)/);s&&s[1]&&(n=s[1])}catch(e){translate.log(e)}n=n.replace("Object.","translate."),translate.log(n+"() "+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+120<e&&t.push(a)}for(var n=0;n<t.length;n++)delete translate.nodeQueue[t[n]];translate.node.refresh();var r=[];for(var a in translate.time.execute.data){if(translate.time.execute.data.hasOwnProperty(a))if(void 0!==translate.time.execute.data[a].finishTime)translate.time.execute.data[a].finishTime+120<e&&r.push(a)}for(var s=0;s<r.length;s++)delete translate.time.execute.data[r[s]]},init:function(){void 0===translate.init_execute&&(translate.init_execute="已进行",null==translate.node.data&&(translate.node.data=new Map),null==translate.history.translateText.resultMap&&(translate.history.translateText.resultMap=new Map),null==translate.history.translateText.originalMap&&(translate.history.translateText.originalMap=new Map),null==translate.language.name&&translate.language.generateLanguageNameObject(),translate.lifecycle.execute.start.push(function(e,t){if(void 0===translate.init_first_trigger_execute){for(var a in translate.init_first_trigger_execute=1,translate.nomenclature.data)if(translate.nomenclature.data.hasOwnProperty(a))for(var n in translate.nomenclature.data[a])if(translate.nomenclature.data[a].hasOwnProperty(n))for(var r in translate.nomenclature.data[a][n])translate.nomenclature.data[a][n].hasOwnProperty(r)&&translate.history.translateText.add(r,translate.nomenclature.data[a][n][r]);for(var s=0;s<translate.ignore.text.length;s++)translate.history.translateText.add(translate.ignore.text[s],translate.ignore.text[s]);"loading"==document.readyState&&(translate.log("WARNING : The dom triggered translate.exece() before it was fully loaded, which does not comply with usage standards. The execution of translate.exece() should be done after the DOM is loaded"),translate.log("警告:DOM 在完全加载之前触发了 translate.execute() ,这不符合使用规范,容易出现异常。你应该检查一下你的代码,translate.execute() 的执行应该在DOM加载完成后")),1==translate.listener.use&&0==translate.listener.isStart&&void 0!==translate.listener.start&&translate.listener.addListener(),1==translate.request.listener.use&&0==translate.request.listener.isStart&&translate.request.listener.addListener()}}),void 0!==translate.recycle&&setInterval(translate.recycle,6e4))}},nodeuuid={index:function(e){var t,a=e.parentElement;if(null==a)return"";if(void 0===e.tagName)t=a.childNodes;else{t=[];for(var n=a.childNodes,r=0;r<n.length;r++)n[r].tagName===e.tagName&&t.push(n[r])}var s=Array.prototype.indexOf.call(t,e);return e.nodeName+""+(s+1)},uuid:function(e){for(var t="",a=e;null!=a;){var n=nodeuuid.index(a);""!=n&&(""!=t&&(t="_"+t),t=n+t),a=a.parentElement}return t}};setTimeout(function(){translate.log("------ translate.js ------\nTwo lines of js html automatic translation, page without change, no language configuration file, no API Key, SEO friendly! Open warehouse : https://github.com/xnx3/translate \n两行js实现html全自动翻译。 无需改动页面、无语言配置文件、无API Key、对SEO友好!完全开源,代码仓库:https://gitee.com/mail_osc/translate")},3e3);try{translate.init()}catch(e){}!function(e,t){"function"==typeof define&&define.amd?define([],()=>t()):"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); |
| | | }); |
| | |
| | | <link rel="stylesheet" href="../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../static/css/loader.css" media="all"> |
| | | <!-- 引入 AutoTranslate 模块 --> |
| | | <script src="https://cdn.jsdelivr.net/gh/Mr-vero/AutoTranslate@v.1.0.1/dist/autoTranslate.js"></script> |
| | | |
| | | <style> |
| | | .layui-logo img { |
| | | width: 25px; |
| | |
| | | </li> |
| | | </ul> |
| | | <ul class="layui-nav layui-layout-right"> |
| | | <li class="layui-nav-item" lay-unselect> |
| | | <a><i class="layui-icon layui-icon-website"></i> <span id="currentLang">语言</span></a> |
| | | <dl class="layui-nav-child"> |
| | | <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('chinese_simplified', '简体中文')">简体中文</a></dd> |
| | | <!-- <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('chinese_traditional', '繁體中文')">繁體中文</a></dd>--> |
| | | <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('english', 'English')">English</a></dd> |
| | | <!-- <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('japanese', '日本語')">日本語</a></dd>--> |
| | | <!-- <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('korean', '한국어')">한국어</a></dd>--> |
| | | </dl> |
| | | </li> |
| | | <li class="layui-nav-item" lay-unselect id="licenseShow" style="display: none;user-select: none;"> |
| | | <div style="color: red;">临时许可证有效期:<span id="licenseDays">29</span>天</div> |
| | | </li> |
| | |
| | | <script type="text/javascript" src="../static/layui/layui.js"></script> |
| | | <script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script> |
| | | <script type="text/javascript" src="../static/js/common.js"></script> |
| | | <!-- 自动翻译 --> |
| | | <script> |
| | | document.addEventListener("DOMContentLoaded", async () => { |
| | | const targetLanguage = "English"; // 目标语言代码,可以修改为其他语言 |
| | | await autoTranslate("Mandarin Chinese (Selected)", targetLanguage); // 从英语翻译为简体中文 |
| | | }); |
| | | </script> |
| | | <script> |
| | | console.log('%c 中扬立库平台 %c 1.0.0','background-color:rgb(53,73,94);color: #fff;border-radius:2px 0 0 2px;padding:2px 4px;','background-color:rgb(25,190,107);color: #fff;border-radius:0 2px 2px 0;padding:2px 4px;font: 9pt "Apercu Regular", Georgia, "Times New Roman", Times, serif;'); |
| | | $(function () { |
| | |
| | | </li> |
| | | {{/each}} |
| | | </script> |
| | | <script src="../static/js/translate.js"></script> |
| | | <!-- 引入 layui 的 translate.js AI翻译模块,自行下载这个js放到你自己项目里。 js下载地址: https://raw.githubusercontent.com/xnx3/translate/refs/heads/master/extend/layui/layui_exts/translate/translate.js --> |
| | | <script> |
| | | translate.language.setLocal('chinese_simplified'); //设置本地语种,如果不设置会自动识别 http://translate.zvo.cn/4066.html |
| | | translate.service.use('client.edge'); //设置翻译通道 http://translate.zvo.cn/4081.html |
| | | translate.visual.webPageLoadTranslateBeforeHiddenText(); //网页打开时自动隐藏文字,翻译完成后显示译文。 参考文档 http://translate.zvo.cn/549731.html |
| | | translate.progress.api.startUITip(); //启用翻译中的遮罩层 参考文档 http://translate.zvo.cn/407105.html |
| | | translate.selectLanguageTag.show = false; //不出现的select的选择语言 |
| | | translate.ignore.class.push('notranslate'); //添加 notranslate 类到忽略列表,使语言下拉框不参与翻译 |
| | | window.onload = function () { //当页面DOM加载完后执行翻译操作 |
| | | translate.execute(); //进行翻译的执行 |
| | | }; |
| | | |
| | | // 切换语言函数 |
| | | function changeLanguage(lang, displayName) { |
| | | translate.changeLanguage(lang); |
| | | } |
| | | </script> |
| | | </body> |
| | | </html> |
| | | |
| | |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <title>wms</title> |
| | | <title>ddthwms</title> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1"> |
| | | <meta name="description" content="study of Instancing with three.js"> |
| | | <meta name="keywords" content="undefined, Yoichi Kobayashi, WebGL, three.js"> |