1/* 2 3 å½é åï¼ç½é¡µèªå¨ç¿»è¯ã 4 ä½è ï¼ç®¡é·é¸£ 5 å¼åä»åºï¼https://github.com/xnx3/translate 6 7 */ 8var translate = { 9 /** 10 * å½åççæ¬ 11 * ç± npm èæ¬èªå¨æ´æ°ï¼æ éæå¨ä¿®æ¹ 12 * æ ¼å¼ï¼major.minor.patch.date 13 */ 14 // AUTO_VERSION_START 15 version: '3.12.0.20241210', 16 // AUTO_VERSION_END 17 /* 18 å½å使ç¨ççæ¬ï¼é»è®¤ä½¿ç¨v2. å¯ä½¿ç¨ setUseVersion2(); 19 æ¥è®¾ç½®ä½¿ç¨v2 ï¼å·²åºå¼ï¼ä¸»è¦æ¯åºåæ¯å¦æ¯v1çæ¬æ¥çï¼v2è·v3çæ¬æ¯åæ ·çä½¿ç¨æ¹å¼ 20 */ 21 useVersion:'v2', 22 setUseVersion2:function(){ 23 translate.useVersion = 'v2'; 24 console.log('æç¤ºï¼èª v2.10 ä¹åççæ¬é»è®¤å°±æ¯ä½¿ç¨V2çæ¬ï¼å½åçæ¬ä¸º:'+translate.version+'ï¼ï¼ translate.setUseVersion2() å¯ä»¥ä¸ç¨åå è¿ä¸è¡äºãå½ç¶å äºä¹æ æè°ï¼åªæ¯å äºè·ä¸å æ¯å®å ¨ä¸æ ·çã'); 25 }, 26 /* 27 * ç¿»è¯ç对象ï¼ä¹å°±æ¯ new google.translate.TranslateElement(...) 28 * å·²åºå¼ï¼v1使ç¨ç 29 */ 30 translate:null, 31 /* 32 * æ¯æåªäºè¯è¨åæ¢ï¼å æ¬ï¼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 33 * å·²åºå¼ï¼è¯·ä½¿ç¨ translate.selectLanguageTag.languages 34 */ 35 includedLanguages:'zh-CN,zh-TW,en', 36 /* 37 * èµæºæä»¶urlçè·¯å¾ 38 * å·²åºå¼ï¼v1使ç¨ç 39 */ 40 resourcesUrl:'//res.zvo.cn/translate', 41 42 /** 43 * é»è®¤åºç°çéæ©è¯è¨ç select éæ©æ¡ï¼å¯ä»¥éè¿è¿ä¸ªéæ©åæ¢è¯è¨ã 44 */ 45 selectLanguageTag:{ 46 /* 47 v3.1 å¢å ï¼å° select忢è¯è¨çéæ©æ¡èµäºåªä¸ªidï¼è¿éæ¯å ·ä½çidçååã 48 妿è¿ä¸ªidä¸åå¨ï¼ä¼å建è¿ä¸ªidçå ç´ 49 */ 50 documentId:'translate', 51 /* æ¯å¦æ¾ç¤º selectéæ©è¯è¨çéæ©æ¡ï¼trueæ¾ç¤ºï¼ false䏿¾ç¤ºãé»è®¤ä¸ºtrue */ 52 show:true, 53 /* 54 æ¯æåªäºè¯è¨åæ¢ 55 v1.x çæ¬å æ¬ï¼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 56 v2.x çæ¬æ ¹æ®åç«¯ç¿»è¯æå¡ä¸åï¼æ¯æçè¯è¨ä¹ä¸åãå ·ä½æ¯æåªäºï¼å¯éè¿ http://api.translate.zvo.cn/doc/language.json.html è·å ï¼å¦ææ¨ç§æé¨ç½²çï¼å°è¯·æ±ååæ¢ä¸ºæ¨èªå·±ç§æé¨ç½²çååï¼ 57 */ 58 languages:'', 59 alreadyRender:false, //å½åæ¯å¦å·²æ¸²æè¿äº trueä¸ºæ¯ v2.2å¢å 60 selectOnChange:function(event){ 61 var language = event.target.value; 62 translate.changeLanguage(language); 63 }, 64 //éæ°ç»å¶ select è¯ç§ä¸æéæ©ãæ¯å¦è¿è¡äºæ¬¡å¼åè¿translate.jsï¼æå¨è¿è¡äºè®¾ç½® translate.to ï¼ä½æ¯æå¨æ¹å¨åçï¼å¨selectè¯ç§éæ©æ¡ä¸å¹¶ä¸ä¼èªå¨è¿è¡æ¹åï¼è¿æ¯å°±éè¦æå¨éæ°ç»å¶ä¸ä¸ selectè¯ç§éæ©çä¸æéæ©æ¡ 65 refreshRender:function(){ 66 // è·åå ç´ 67 let element = document.getElementById(translate.selectLanguageTag.documentId+"SelectLanguage"); 68 69 // å é¤å ç´ 70 if (element) { 71 element.parentNode.removeChild(element); 72 } 73 74 //è®¾ç½®ä¸ºæª render ç¶æï¼å 许è¿è¡ render 75 translate.selectLanguageTag.alreadyRender = false; 76 77 translate.selectLanguageTag.render(); 78 }, 79 80 /* 81 èªå®ä¹åæ¢è¯è¨çæ ·å¼æ¸²æ v3.2.4 å¢å 82 83 */ 84 customUI:function(languageList){ 85 //selectçonchangeäºä»¶ 86 var onchange = function(event){ translate.selectLanguageTag.selectOnChange(event); } 87 88 //å建 select æ ç¾ 89 var selectLanguage = document.createElement("select"); 90 selectLanguage.id = translate.selectLanguageTag.documentId+'SelectLanguage'; 91 selectLanguage.className = translate.selectLanguageTag.documentId+'SelectLanguage'; 92 for(var i = 0; i<languageList.length; i++){ 93 var option = document.createElement("option"); 94 option.setAttribute("value",languageList[i].id); 95 96 //夿 selectLanguageTag.languages ä¸å 许使ç¨åªäº 97 98 if(translate.selectLanguageTag.languages.length > 0){ 99 //设置äºèªå®ä¹æ¾ç¤ºçè¯è¨ 100 101 //é½è½¬å°å夿 102 var langs_indexof = (','+translate.selectLanguageTag.languages+',').toLowerCase(); 103 //console.log(langs_indexof) 104 if(langs_indexof.indexOf(','+languageList[i].id.toLowerCase()+',') < 0){ 105 //没åç°ï¼é£ä¸æ¾ç¤ºè¿ä¸ªè¯ç§ï¼è°åº 106 continue 107 } 108 } 109 110 /*夿é»è®¤è¦éä¸åªä¸ªè¯è¨*/ 111 if(translate.to != null && typeof(translate.to) != 'undefined' && translate.to.length > 0){ 112 //设置äºç®æ è¯è¨ï¼é£å°±è¿è¡å¤ææ¾ç¤ºç®æ è¯è¨ 113 114 if(translate.to == languageList[i].id){ 115 option.setAttribute("selected",'selected'); 116 } 117 }else{ 118 //æ²¡è®¾ç½®ç®æ è¯è¨ï¼é£é»è®¤éä¸å½åæ¬å°çè¯ç§ 119 if(languageList[i].id == translate.language.getLocal()){ 120 option.setAttribute("selected",'selected'); 121 } 122 } 123 124 option.appendChild(document.createTextNode(languageList[i].name)); 125 selectLanguage.appendChild(option); 126 } 127 //å¢å onchange äºä»¶ 128 if(window.addEventListener){ // Mozilla, Netscape, Firefox 129 selectLanguage.addEventListener('change', onchange,false); 130 }else{ // IE 131 selectLanguage.attachEvent('onchange',onchange); 132 } 133 134 //å°selectå å ¥è¿ç½é¡µæ¾ç¤º 135 document.getElementById(translate.selectLanguageTag.documentId).appendChild(selectLanguage); 136 137 }, 138 render:function(){ //v2å¢å 139 if(translate.selectLanguageTag.alreadyRender){ 140 return; 141 } 142 translate.selectLanguageTag.alreadyRender = true; 143
144 //夿妿䏿¾ç¤ºselectéæ©è¯è¨ï¼ç´æ¥å°±éèæ 145 if(!translate.selectLanguageTag.show){ 146 return; 147 } 148 149 //夿translate çidæ¯å¦åå¨ï¼ä¸åå¨å°±å建ä¸ä¸ª 150 if(document.getElementById(translate.selectLanguageTag.documentId) == null){ 151 var body_trans = document.getElementsByTagName('body')[0]; 152 var div = document.createElement("div"); //å建ä¸ä¸ªscriptæ ç¾ 153 div.id=translate.selectLanguageTag.documentId; 154 body_trans.appendChild(div); 155 }else{ 156 //åå¨ï¼é£ä¹å¤æä¸ä¸ selectæ¯å¦åå¨ï¼è¦æ¯åå¨å°±ä¸éå¤åå»ºäº 157 if(document.getElementById(translate.selectLanguageTag.documentId+'SelectLanguage') != null){ 158 //selectåå¨äºï¼å°±ä¸éå¤åå»ºäº 159 return; 160 } 161 } 162 163 //仿å¡å¨å è½½æ¯æçè¯è¨åº 164 translate.request.post(translate.request.api.language, {}, function(data){ 165 if(data.result == 0){ 166 console.log('load language list error : '+data.info); 167 return; 168 } 169 170 translate.selectLanguageTag.customUI(data.list); 171 172 /* 173 try{ 174 document.getElementById('translateSelectLanguage').style.width = '94px'; 175 }catch(e){ console.log(e);} 176 */ 177 }); 178 179 180 } 181 }, 182 183 /* 184 * å½åæ¬å°è¯è¨ 185 * å·²åºå¼ï¼v1使ç¨ç 186 */ 187 //localLanguage:'zh-CN', 188 localLanguage:'zh-CN', 189 190 /** 191 * googleç¿»è¯æ§è¡ç 192 * å·²åºå¼ï¼v1使ç¨ç 193 */ 194 googleTranslateElementInit:function(){ 195 var selectId = ''; 196 if(document.getElementById('translate') != null){ // && document.getElementById('translate').innerHTML.indexOf('translateSelectLanguage') > 0 197 //å·²ç»å建è¿äº,åå¨ 198 selectId = 'translate'; 199 } 200 201 translate.translate = new google.translate.TranslateElement( 202 { 203 //è¿åæ°æ²¡ç¨ï¼è¯·å¿½ç¥ 204 pageLanguage: 'zh-CN', 205 //ä¸å ±80ç§è¯è¨éæ©ï¼è¿ä¸ªæ¯ä½ éè¦ç¿»è¯çè¯è¨ï¼æ¯å¦ä½ åªéè¦ç¿»è¯æè¶ååè±è¯ï¼è¿éå°±åªåen,vi 206 //includedLanguages: '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', 207 includedLanguages: translate.selectLanguageTag.languages, 208 //éæ©è¯è¨çæ ·å¼ï¼è¿ä¸ªæ¯é¢æ¿ï¼è¿æä¸ææ¡çæ ·å¼ï¼å ·ä½çè®°ä¸å°äºï¼æ¾ä¸å°api~~ 209 layout: 0, 210 //èªå¨æ¾ç¤ºç¿»è¯æ¨ªå¹ ï¼å°±æ¯ç¿»è¯åé¡¶é¨åºç°çé£ä¸ªï¼æç¹ä¸ï¼è®¾ç½®è¿ä¸ªå±æ§ä¸èµ·ä½ç¨çè¯ï¼è¯·çæç« åºé¨çå ¶ä»æ¹æ³ 211 //autoDisplay: false, 212 //disableAutoTranslation:false, 213 //è¿æäºå ¶ä»åæ°ï¼ç±äºåæä»¶ä¸åç»´æ¤ï¼æ¾ä¸å°è¯¦ç»apiäºï¼å°å°±äºï¼å®å¨ä¸è¡ç´æ¥ä¸domæä½ 214 }, 215 selectId //触åæé®çid 216 ); 217 }, 218 219 /** 220 * åå§åï¼å¦å è½½jsãcssèµæº 221 * å·²åºå¼ï¼v1使ç¨ç 222 */ 223 /* v2.11.11.20240124 å½»åºæ³¨éæï¼ææ°çinitæ¹æ³æ¿ä»£ 224 init:function(){ 225 var protocol = window.location.protocol; 226 if(window.location.protocol == 'file:'){ 227 //æ¬å°çï¼é£å°±ç¨http 228 protocol = 'http:'; 229 } 230 if(this.resourcesUrl.indexOf('://') == -1){ 231 //è¿æ²¡è®¾ç½®è¿ï¼è¿è¡è®¾ç½® 232 this.resourcesUrl = protocol + this.resourcesUrl; 233 } 234 235 //this.resourcesUrl = 'file://G:/git/translate'; 236 237 }, 238 */ 239 /** 240 * æ§è¡ç¿»è¯æä½ 241 * å·²åºå¼ï¼v1使ç¨ç 242 */ 243 execute_v1:function(){ 244 console.log('=====ERROR======'); 245 console.log('The v1 version has been discontinued since 2022. Please use the latest V3 version and refer to: http://translate.zvo.cn/41162.html'); 246 }, 247 248 /** 249 * 设置Cookieï¼å¤±ææ¶é´ä¸å¹´ã 250 * @param name 251 * @param value 252 * * å·²åºå¼ï¼v1使ç¨ç 253 */ 254 setCookie:function (name,value){ 255 var cookieString=name+"="+escape(value); 256 document.cookie=cookieString; 257 }, 258 259 //è·åCookieãè¥æ¯ä¸ååï¼è¿å空å符串 260 //* å·²åºå¼ï¼v1使ç¨ç 261 getCookie:function (name){ 262 var strCookie=document.cookie; 263 var arrCookie=strCookie.split("; "); 264 for(var i=0;i<arrCookie.length;i++){ 265 var arr=arrCookie[i].split("="); 266 if(arr[0]==name){ 267 return unescape(arr[1]); 268 } 269 } 270 return ""; 271 }, 272 273 /** 274 * è·åå½å页é¢éç¨çæ¯ä»ä¹è¯è¨ 275 * è¿åå¼å¦ enãzh-CNãzh-TW ï¼å¦ææ¯ç¬¬ä¸æ¬¡ç¨ï¼æ²¡æè®¾ç½®è¿ï¼é£ä¹è¿åçæ¯ translate.localLanguage 设置çå¼ï¼ 276 * * å·²åºå¼ï¼v1使ç¨ç 277 */ 278 currentLanguage:function(){ 279 //translate.check(); 280 var cookieValue = translate.getCookie('googtrans'); 281 if(cookieValue.length > 0){ 282 return cookieValue.substr(cookieValue.lastIndexOf('/')+1,cookieValue.length-1); 283 }else{ 284 return translate.localLanguage; 285 } 286 }, 287 288 /** 289 * 忢è¯è¨ï¼æ¯å¦åæ¢ä¸ºè±è¯ãæ³è¯ 290 * @param languageName è¦åæ¢çè¯è¨è¯ç§ãä¼ å ¥å¦ english 291 * ä¼èªå¨æ ¹æ®ä¼ å ¥çè¯è¨æ¥å¤æä½¿ç¨åªç§çæ¬ãæ¯å¦ä¼ å ¥ enãzh-CN çï¼åä¼ä½¿ç¨v1.xçæ¬ 292 * ä¼ å ¥ chinese_simplified ãenglish çï¼åä¼ä½¿ç¨ v2.xçæ¬ 293 */ 294 changeLanguage:function(languageName){ 295 //å¤æä½¿ç¨çæ¯å¦æ¯v1.x 296 var v1 = ',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,'; 297 if(v1.indexOf(','+languageName+',') > -1){ 298 //ç¨çæ¯v1.x 299 console.log('æ¨ä½¿ç¨çæ¯v1çæ¬ç忢è¯ç§æ¹å¼ï¼v1å·²å¨2021年就以åºå¼ï¼è¯·æ´æ¢ä¸ºv2ï¼åèææ¡£ï¼ http://translate.zvo.cn/41549.html'); 300 translate.check(); 301 302 var googtrans = '/'+translate.localLanguage+'/'+languageName; 303
304 //å æ¸ 空æ³è§£æååç设置 305 var s = document.location.host.split('.'); 306 if(s.length > 2){ 307 var fanDomain = s[s.length-2]+'.'+s[s.length-1]; 308 document.cookie = 'googtrans=;expires='+(new Date(1))+';domain='+fanDomain+';path=/'; 309 document.cookie = 'googtrans='+googtrans+';domain='+fanDomain+';path=/'; 310 } 311 312 translate.setCookie('googtrans', ''+googtrans); 313 translate.refreshCurrentPage(); 314 return; 315 } 316 317 //ç¨çæ¯v2.xææ´é« 318 //translate.setUseVersion2(); 319 translate.useVersion = 'v2'; 320 //夿æ¯å¦æ¯ç¬¬ä¸æ¬¡ç¿»è¯ï¼å¦ææ¯ï¼é£å°±ä¸ç¨å·æ°é¡µé¢äºã true忝éè¦å·æ°ï¼ä¸æ¯ç¬¬ä¸æ¬¡ç¿»è¯ 321 if(translate.to != null && translate.to.length > 0){ 322 //å½åç®æ 弿å¼ï¼ä¸ç®æ è¯è¨è·å½åè¯è¨ä¸ä¸è´ï¼é£å½åææ¯å·²ç»è¢«ç¿»è¯è¿ç 323 if(translate.to != translate.language.getLocal()){ 324 var isReload = true; //æ è®°è¦å·æ°é¡µé¢ 325 } 326 } 327 328 329 translate.to = languageName; 330 translate.storage.set('to',languageName); //è®¾ç½®ç®æ ç¿»è¯è¯è¨ 331 332 if(isReload){ 333 location.reload(); //å·æ°é¡µé¢ 334 }else{ 335 //ä¸ç¨å·æ°ï¼ç´æ¥ç¿»è¯ 336 translate.execute(); //ç¿»è¯ 337 } 338 }, 339 340 /** 341 * èªæ£æç¤ºï¼éç¨äº v1.xï¼ å¨ v2.xä¸å·²åºå¼ 342 * english 343 * å·²åºå¼ï¼v1使ç¨ç 344 */ 345 check:function(){ 346 if(window.location.protocol == 'file:'){ 347 console.log('\r\n---WARNING----\r\ntranslate.js 主å¨ç¿»è¯ç»ä»¶èªæ£å¼å¸¸ï¼å½ååè®®æ¯fileåè®®ï¼ç¿»è¯ç»ä»¶è¦å¨æ£å¸¸ç线ä¸httpãhttpsåè®®ä¸æè½æ£å¸¸ä½¿ç¨ç¿»è¯åè½\r\n------------'); 348 } 349 }, 350 351 352 /**************************** v2.0 */ 353 to:'', //ç¿»è¯ä¸ºçç®æ è¯è¨ï¼å¦ english ãchinese_simplified 354 //ç¨æ·ç¬¬ä¸æ¬¡æå¼ç½é¡µæ¶ï¼èªå¨å¤æå½åç¨æ·æå¨å½å®¶ä½¿ç¨çæ¯åªç§è¯è¨ï¼æ¥èªå¨è¿è¡åæ¢ä¸ºç¨æ·æå¨å½å®¶çè¯ç§ã 355 //å¦æä½¿ç¨åï¼ç¬¬äºæ¬¡å¨ç¨ï¼é£å°±ä¼å ä»¥ç¨æ·æéæ©ç为主ï¼è¿ä¸ªå°±ä¸ç®¡ç¨äº 356 //é»è®¤æ¯falseï¼ä¸ä½¿ç¨ï¼å¯è®¾ç½®trueï¼ä½¿ç¨ 357 //ä½¿ç¨ setAutoDiscriminateLocalLanguage è¿è¡è®¾ç½® 358 autoDiscriminateLocalLanguage:false, 359 documents:[], //æå®è¦ç¿»è¯çå ç´ çéå,å¯è®¾ç½®å¤ä¸ªï¼å¦è®¾ç½®ï¼ document.getElementsByTagName('DIV') 360 /* 361 v2.11.5å¢å 362 æ£å¨è¿è¡ç¿»è¯çèç¹ï¼ä¼è®°å½å°æ¤å¤ã 363 è¿éæ¯æåºçèç¹äºï¼ä¸ä¼åæä¸çº§äºãè¿ä¹å°±æ¯ç¿»è¯çæç»èç¹ï¼ä¹å°±æ¯ translate.element.findNode() åç°çèç¹ 364 ä¹å°±æ¯æ«æå°è¦è¿è¡ç¿»è¯çèç¹ï¼å¨ç¿»è¯åï¼å å ¥å°è¿éï¼å¨è¿ä¸ªèç¹ç¿»è¯ç»æåï¼å°è¿éé¢è®°å½çèç¹å æã 365 366 æ ¼å¼å¦ 367 [ 368 { 369 node: nodeèç¹ç对象 370 number: 2 (å½åæ£å¨ç¿»è¯è¿è¡ä¸ç次æ°ï¼æ¯å¦ä¸ä¸ªèç¹æä¸è±ææ··åçææ¬ï¼é£ä¹ä¸æãè±æ ä¼åæ¶è¿è¡ä¸¤æ¬¡ç¿»è¯ï¼ä¹å°±æ¯æåè¦è¿è¡ä¸¤æ¬¡æ¿æ¢ï¼ä¼å¯¼è´è¿ä¸ªnode产ç两次æ¹å¨ãæ¯æ¬¡ä¾¿æ¯+1ã-1) 371 }, 372 { 373 ...... 374 } 375 ] 376 377 çå½å¨æï¼ 378 379 translate.execute() æ§è¡åï¼ä¼æ«æè¦ç¿»è¯çåç¬¦ï¼æ«æå®æåé¦å ä¼å¤æç¼å䏿¯å¦æï¼æ¯å¦ä¼å½ä¸ç¼åï¼å¦æç¼å䏿ï¼é£ä¹å¨å å ¥ task.add ä¹åå°±ä¼å°è¿ä¸ªè¿è¡è®°å½ ++ 380 卿µè§å¨ç¼å没æå½ä¸åï¼åä¼éè¿ç½ç»api请æ±è¿è¡ç¿»è¯ï¼æ¤æ¶å¨åèµ·ç½ç»è¯·æ±åï¼ä¼è¿è¡è®°å½ ++ 381 å½ä½¿ç¨ translate.listener.start() åï¼ç½é¡µä¸å¨ææ¸²æçé¨åä¼è§¦åçå¬ï¼è§¦åçå¬åé¦å ä¼å¤æè¿ä¸ªèç¹æ¯å¦åå¨äºè¿é颿£å¨è¢«ç¿»è¯ï¼å¦æåå¨éé¢ï¼é£ä¹å¿½ç¥ï¼ 妿ä¸åå¨éé¢ï¼é£ä¹åè¿è¡ translate.execute(åå¨çèç¹) è¿è¡ç¿»è¯ ï¼å½ç¶æ§è¡è¿ä¸ªç¿»è¯åï¼èªç¶ä¹å°±åæå®å å ¥å°æ¤å¤è¿è¡è®°å½ ++ï¼ 382 ãå¯ä¸çå廿ä½ã å¨task.execute() ä¸ï¼ç¿»è¯å®æå¹¶ä¸æ¸²æå°é¡µé¢æ§è¡å®æåï¼ä¼è§¦åå»¶è¿50毫ç§åå°è¿ä¸ªç¿»è¯çèç¹ä»è¿éåå» 383 */ 384 inProgressNodes:[], 385 //ç¿»è¯æ¶å¿½ç¥çä¸äºä¸è¥¿ï¼æ¯å¦å¿½ç¥æä¸ªtagãæä¸ªclassç 386 ignore:{ 387 tag:['style', 'script', 'link', 'pre', 'code'], 388 class:['ignore','translateSelectLanguage'], 389 id:[], 390 /* 391 ä¼ å ¥ä¸ä¸ªå ç´ ï¼å¤æè¿ä¸ªå ç´ æ¯å¦æ¯è¢«å¿½ç¥çå ç´ ã è¿ä¸ªä¼æ¾ç¶ç±»ï¼ççç¶ç±»ä¸æ¯å¦å å«å¨å¿½ç¥çä¹ä¸ã 392 return trueæ¯å¨å¿½ç¥çä¹ä¸ï¼falseä¸å忽ç¥çä¹ä¸ 393 */ 394 isIgnore:function(ele){ 395 if(ele == null || typeof(ele) == 'undefined'){ 396 return false; 397 } 398 399 var parentNode = ele; 400 var maxnumber = 100; //æå¤§å¾ªç¯æ¬¡æ°ï¼é¿å æ»å¾ªç¯ 401 while(maxnumber-- > 0){ 402 if(parentNode == null || typeof(parentNode) == 'undefined'){ 403 //没æç¶å ç´ äº 404 return false; 405 } 406 407 //夿Tag 408 //var tagName = parentNode.nodeName.toLowerCase(); //tagååï¼å°å 409 var nodename = translate.element.getNodeName(parentNode).toLowerCase(); //tagååï¼å°å 410 if(nodename.length > 0){ 411 //ænodename 412 if(nodename == 'body' || nodename == 'html' || nodename == '#document'){ 413 //ä¸å±å ç´ å·²ç»æ¯é¡¶çº§å ç´ äºï¼é£è¯å®å°±ä¸æ¯äº 414 return false; 415 } 416 if(translate.ignore.tag.indexOf(nodename) > -1){ 417 //åç°ignore.tag å½åæ¯å¤äºè¢«å¿½ç¥ç tag 418 return true; 419 } 420 } 421 422 423 //夿class name 424 if(parentNode.className != null){ 425 var classNames = parentNode.className; 426 if(classNames == null || typeof(classNames) != 'string'){ 427 continue; 428 } 429 //console.log('className:'+typeof(classNames)); 430 //console.log(classNames); 431 classNames = classNames.trim().split(' '); 432 for(var c_index = 0; c_index < classNames.length; c_index++){ 433 if(classNames[c_index] != null && classNames[c_index].trim().length > 0){ 434 //ææçclass nameï¼è¿è¡å¤æ 435 if(translate.ignore.class.indexOf(classNames[c_index]) > -1){ 436 //åç°ignore.class å½åæ¯å¤äºè¢«å¿½ç¥ç class 437 return true; 438 } 439 } 440 } 441 } 442 443 //夿id 444 if(parentNode.id != null && typeof(parentNode.id) != 'undefined'){ 445 //ææçclass nameï¼è¿è¡å¤æ 446 if(translate.ignore.id.indexOf(parentNode.id) > -1){ 447 //åç°ignore.id å½åæ¯å¤äºè¢«å¿½ç¥ç id 448 return true; 449 } 450 } 451 452 //èµäºå¤æçå ç´ åä¸ä¸çº§ 453 parentNode = parentNode.parentNode; 454 } 455 456 return false; 457 }, 458 459 /* 460 * 忽ç¥ä¸è¢«ç¿»è¯çææ¬ï¼è¿éåºç°çææ¬å°ä¸ä¼è¢«ç¿»è¯ã 461 * è¿ä¸ªå ¶å®æ¯åç¨äº èªå®ä¹æ¯è¯ çè½åï¼è®¾ç½®äºèªå®ä¹æ¯è¯çåå符çäºç¿»è¯åçåç¬¦ï¼ äºæ¯è¿ä¸ªå符就ä¸ä¼è¢«ç¿»è¯äº 462 * è¿éå¯ä»¥æ¯å¤ä¸ªï¼æ°ç»ï¼å¦ ['ä½ å¥½','ä¸ç'] 463 */ 464 text:[] 465 466 }, 467 //å·æ°é¡µé¢ï¼ä½ å¯ä»¥èªå®ä¹å·æ°é¡µé¢çæ¹å¼ï¼æ¯å¦å¨ uniapp æå çæ apk æ¶ï¼apkä¸çå·æ°é¡µé¢å°±ä¸æ¯h5çè¿ä¸ªå·æ°ï¼èæ¯appçå·æ°æ¹å¼ï¼å°±éè¦èªå·±è¿è¡éåè¿ä¸ªå·æ°é¡µé¢çæ¹æ³äº 468 refreshCurrentPage:function(){ 469 location.reload(); 470 }, 471 //èªå®ä¹ç¿»è¯æ¯è¯ 472 nomenclature:{ 473 /* 474 æ¯è¯è¡¨ 475 ä¸ç»´ï¼è¦è½¬æ¢çè¯ç§ï¼å¦ english 476 äºç»´ï¼ç¿»è¯è³çç®æ è¯ç§ï¼å¦ english 477 ä¸ç»´ï¼è¦è½¬æ¢çå符串ï¼å¦ "ä½ å¥½" 478 ç»æï¼èªå®ä¹çç¿»è¯ç»æï¼å¦ âHalloâ 479 */ 480 data:new Array(), 481 482 /* 483 åå§æ¯è¯è¡¨ï¼å¯ç¼è¾ç 484 ä¸ç»´ï¼è¦èªå®ä¹ç®æ è¯ 485 äºç»´ï¼éå¯¹çæ¯åªä¸ªè¯ç§ 486 å¼ï¼è¦ç¿»è¯ä¸ºä»ä¹å 容 487 488 å ¶è®¾ç½®å¦ 489 var data = new Array(); 490 data['çæ¬'] = { 491 english : 'banben', 492 korean : 'BanBen' 493 }; 494 data['å½é å'] = { 495 english : 'guojihua', 496 korean : 'GuoJiHua' 497 }; 498 499 ãå·²è¿æ¶ã 500 */ 501 old_Data:[], 502 /* 503 set:function(data){ 504 translate.nomenclature.data = data; 505 }, 506 */ 507 set:function(data){ 508 alert('è¯·å° translate.nomenclature.set æ´æ¢ä¸º appendï¼å ·ä½ä½¿ç¨å¯åèï¼ https://github.com/xnx3/translate '); 509 }, 510 /* 511 åå½åæ¯è¯åºä¸è¿½å èªå®ä¹æ¯è¯ãå¦æè¿½å çæ°æ®éå¤ï¼ä¼èªå¨å»é 512 ä¼ å ¥åæ°ï¼ 513 from è¦è½¬æ¢çè¯ç§ 514 to ç¿»è¯è³çç®æ è¯ç§ 515 properties å±äºé ç½®è¡¨ï¼æ ¼å¼å¦ï¼ 516 ä½ å¥½=Hello 517 ä¸ç=ShiJie 518 519 */ 520 append:function(from, to, properties){ 521 if(typeof(translate.nomenclature.data[from]) == 'undefined'){ 522 translate.nomenclature.data[from] = new Array(); 523 } 524 if(typeof(translate.nomenclature.data[from][to]) == 'undefined'){ 525 translate.nomenclature.data[from][to] = new Array(); 526 } 527 528 //å°propertiesè¿è¡åæ 529 //æè¡æå 530 var line = properties.split('\n'); 531 //console.log(line) 532 for(var line_index = 0; line_index < line.length; line_index++){ 533 var item = line[line_index].trim(); 534 if(item.length < 1){ 535 //空è¡ï¼å¿½ç¥ 536 continue; 537 } 538 var kvs = item.split('='); 539 //console.log(kvs) 540 if(kvs.length != 2){
541 //䏿¯keyãvalueææçï¼å¿½ç¥ 542 continue; 543 } 544 var key = kvs[0].trim(); 545 var value = kvs[1].trim(); 546 //console.log(key) 547 if(key.length == 0 || value.length == 0){ 548 //å ¶ä¸æä¸ªæç©ºï¼åå¿½ç¥ 549 continue; 550 } 551 552 553 //å å ¥ï¼å¦æä¹åæå å ¥ï¼åä¼è¦ç 554 translate.nomenclature.data[from][to][key] = value; 555 //console.log(local+', '+target+', key:'+key+', value:'+value); 556 } 557 558 //追å å®åï¼å¯¹æ´ä¸ªå¯¹è±¡æ°ç»è¿è¡æåºï¼keyè¶å¤§è¶å¨åé¢ 559 translate.nomenclature.data[from][to] = translate.util.objSort(translate.nomenclature.data[from][to]); 560 561 }, 562 //è·åå½åå®ä¹çæ¯è¯è¡¨ 563 get:function(){ 564 return translate.nomenclature.data; 565 }, 566 //å¯¹ä¼ å ¥çstrå符è¿è¡æ¿æ¢ï¼å°å ¶ä¸çèªå®ä¹æ¯è¯æåè¿è¡æ¿æ¢ï¼ç¶åå°æ¿æ¢åçç»æè¿å 567 //v3.11 åæ¤æ¹æ³å·²åºå¼ï¼ä¸åä½¿ç¨ 568 dispose:function(str){ 569 if(str == null || str.length == 0){ 570 return str; 571 } 572 //if(translate.nomenclature.data.length == 0){ 573 // return str; 574 //} 575 //夿å½åç¿»è¯ç两ç§è¯ç§æ¯å¦æèªå®ä¹æ¯è¯åº 576 //console.log(typeof(translate.nomenclature.data[translate.language.getLocal()][translate.to])) 577 if(typeof(translate.nomenclature.data[translate.language.getLocal()]) == 'undefined' || typeof(translate.nomenclature.data[translate.language.getLocal()][translate.to]) == 'undefined'){ 578 return str; 579 } 580 //console.log(str) 581 for(var originalText in translate.nomenclature.data[translate.language.getLocal()][translate.to]){ 582 var translateText = translate.nomenclature.data[translate.language.getLocal()][translate.to][originalText]; 583 if(typeof(translateText) == 'function'){ 584 //è¿è¡å¼å¸¸çé¢å¤çè°åº 585 continue; 586 } 587 588 var index = str.indexOf(originalText); 589 if(index > -1){ 590 //console.log('find -- '+originalText+', \t'+translateText); 591 if(translate.language.getLocal() == 'english'){ 592 //妿æ¬å°è¯ç§æ¯è±æï¼é£ä¹è¿è¦å¤æå®çååï¼é¿å æ¯å¦è¦æ¿æ¢ is å° display ä¸çisç»æ¿æ¢ï¼å°åè¯ç»å¼ºè¡æåäº 593 594 //夿è¿ä¸ªè¯å颿¯å¦ç¬¦å 595 var beforeChar = ''; //åé¢çå符 596 if(index == 0){ 597 //å颿²¡å«çå符äºï¼é£åé¢åé 598 }else{ 599 //å颿å«çå符,夿æ¯ä»ä¹å符ï¼å¦ææ¯è±æï¼é£ä¹è¿ä¸ªæ¯ä¸è½è¢«æåçï¼è¦å¿½ç¥ 600 beforeChar = str.substr(index-1,1); 601 //console.log('beforeChar:'+beforeChar+', str:'+str) 602 var lang = translate.language.getCharLanguage(beforeChar); 603 //console.log(lang); 604 if(lang == 'english'){ 605 //è°åºï¼ä¸è½å¼ºæ 606 continue; 607 } 608 } 609 610 //夿è¿ä¸ªè¯çå颿¯å¦ç¬¦å 611 var afterChar = ''; //åé¢çå符 612 if(index + originalText.length == str.length ){ 613 //å颿²¡å«çå符äºï¼é£åé¢åé 614 //console.log(originalText+'ï¼ meile '+str) 615 }else{ 616 //å颿å«çå符,夿æ¯ä»ä¹å符ï¼å¦ææ¯è±æï¼é£ä¹è¿ä¸ªæ¯ä¸è½è¢«æåçï¼è¦å¿½ç¥ 617 afterChar = str.substr(index+originalText.length,1); 618 var lang = translate.language.getCharLanguage(afterChar); 619 if(lang == 'english'){ 620 //è·³åºï¼ä¸è½å¼ºæ 621 continue; 622 } 623 } 624 625 str = str.replace(new RegExp(beforeChar+originalText+afterChar,'g'), beforeChar+translateText+afterChar); 626 }else{ 627 //å ¶ä»æ åµï¼å¦æ±è¯ãæ±è¯çè¯ç§ 628 str = str.replace(new RegExp(originalText,'g'), translateText); 629 } 630 631 } 632 } 633 634 return str; 635 636 /* 637 //éåä¸ç»´ 638 for(var originalText in translate.nomenclature.data){ 639 var languageResult = translate.nomenclature.data[originalText]; 640 if(typeof(languageResult) == 'function'){ 641 //è¿è¡å¼å¸¸çé¢å¤çè°åº 642 continue; 643 } 644 645 if(typeof(languageResult[translate.to]) == 'undefined'){ 646 //console.log('und'); 647 continue; 648 } 649 650 //var hash = translate.util.hash(originalText); 651 652 //console.log(originalText+',\t'+str); 653 if(str.indexOf(originalText) > -1){ 654 //console.log('find -- '+originalText+', \t'+languageResult[translate.to]); 655 str = str.replace(new RegExp(originalText,'g'),languageResult[translate.to]); 656 } 657 } 658 659 660 return str; 661 */ 662 }, 663 664 }, 665 666 office:{ 667 /* 668 ç½é¡µä¸ç¿»è¯ä¹åï¼èªå¨å¯¼åºå½å页é¢çæ¯è¯åº 669 670 éè¦å æå®æ¬å°è¯ç§ï¼ä¼èªå¨å°æ¬å°è¯ç§è¿è¡é ç½®æ¯è¯åº 671 672 */ 673 export:function(){ 674 if(translate.language.getLocal() == translate.language.getCurrent()){ 675 alert('æ¬å°è¯ç§è·è¦ç¿»è¯çè¯ç§ä¸è´ï¼æ é导åº'); 676 return; 677 } 678 679 var text = ''; 680 for(var uuid in translate.nodeQueue){ 681 var queueValue = translate.nodeQueue[uuid]; 682 for(var lang in translate.nodeQueue[uuid].list){ 683 //console.log('------'+lang) 684 if(typeof(lang) != 'string' || lang.length < 1){ 685 continue; 686 } 687 //if(translate.language.getLocal() == lang){ 688 //console.log(translate.nodeQueue[uuid].list[lang]); 689 for(var hash in translate.nodeQueue[uuid].list[lang]){ 690 //console.log(translate.nodeQueue[uuid].list[lang][hash].original); 691 //console.log(translate.nodeQueue[uuid].list[lang][hash].original); 692 text = text + '\n' + translate.nodeQueue[uuid].list[lang][hash].original + '='+translate.storage.get('hash_'+translate.language.getCurrent()+'_'+hash
692); 693 694 } 695 //} 696 } 697 698 } 699 700 if(text.length > 0){ 701 //æå 容 702 text = 'translate.office.append(\''+translate.language.getCurrent()+'\',`'+text+'\n`);'; 703 //console.log(text); 704 translate.util.loadMsgJs(); 705 msg.popups({ 706 text:'<textarea id="msgPopupsTextarea" style="width:100%; height:100%; color: black; padding: 8px;">loaing...</textarea>', 707 width:'750px', 708 height:'600px', 709 padding:'1px', 710 }); 711 document.getElementById('msgPopupsTextarea').value = text; 712 }else{ 713 msg.alert('æ ææå 容ï¼'); 714 } 715 716 717 }, 718 //æ¾ç¤ºå¯¼åºé¢æ¿ 719 showPanel:function(){ 720 let panel = document.createElement('div'); 721 panel.setAttribute('id', 'translate_export'); 722 panel.setAttribute('class','ignore'); 723 724 //å¯¼åºæé® 725 let button = document.createElement('button'); 726 button.onclick = function() { 727 translate.office.export(); 728 }; 729 button.innerHTML = '导åºé 置信æ¯'; 730 button.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;'); 731 panel.appendChild(button); 732 733 //说ææå 734 let textdiv = document.createElement('div'); 735 textdiv.innerHTML = '1. é¦å å°å½åè¯ç§åæ¢ä¸ºä½ è¦ç¿»è¯çè¯ç§<br/>2. ç¹å»å¯¼åºæé®ï¼å°ç¿»è¯çé 置信æ¯å¯¼åº<br/>3. å°å¯¼åºçé 置信æ¯ç²è´´å°ä»£ç ä¸ï¼å³å¯å®æ<br/><a href="asd" target="_black" style="color: aliceblue;">ç¹æ¤è¿è¡æ¥é 详ç»ä½¿ç¨è¯´æ</a>'; 736 textdiv.setAttribute('style','font-size: 14px; padding: 12px;'); 737 738 panel.appendChild(textdiv); 739 740 panel.setAttribute('style', 'background-color: black; color: #fff; width: 320px; height: 206px; position: fixed; bottom: 50px; right: 50px;'); 741 //æå ç´ èç¹æ·»å å°bodyå ç´ èç¹ä¸æä¸ºå ¶åèç¹ï¼æ¾å¨bodyçç°æåèç¹çæå 742 document.body.appendChild(panel); 743 744 translate.util.loadMsgJs();
745 }, 746 /* 747 追å ç¦»çº¿ç¿»è¯æ°æ®ãå¦æè¿½å çæ°æ®éå¤ï¼ä¼èªå¨å»é 748 ä¼ å ¥åæ°ï¼ 749 from è¦è½¬æ¢çè¯ç§ 750 to ç¿»è¯è³çç®æ è¯ç§ 751 properties å±äºé ç½®è¡¨ï¼æ ¼å¼å¦ï¼ 752 ä½ å¥½=Hello 753 ä¸ç=ShiJie 754 è¿ä¸ªä¼ å ¥åæ°è· translate.nomenclature.append çä¼ å ¥åæ°æ ¼å¼æ¯ä¸è´ç 755 */ 756 append:function(to, properties){ 757 //console.log(properties) 758 //å°propertiesè¿è¡åæ 759 //æè¡æå 760 var line = properties.split('\n'); 761 //console.log(line) 762 for(var line_index = 0; line_index < line.length; line_index++){ 763 var item = line[line_index].trim(); 764 if(item.length < 1){ 765 //空è¡ï¼å¿½ç¥ 766 continue; 767 } 768 var kvs = item.split('='); 769 //console.log(kvs) 770 if(kvs.length != 2){ 771 //䏿¯keyãvalueææçï¼å¿½ç¥ 772 continue; 773 } 774 var key = kvs[0]; 775 var value = kvs[1]; 776 //console.log(key) 777 if(key.length == 0 || value.length == 0){ 778 //å ¶ä¸æä¸ªæç©ºï¼åå¿½ç¥ 779 continue; 780 } 781 //console.log('set---'+key); 782 //å å ¥ storate 783 translate.storage.set('hash_'+to+'_'+translate.util.hash(key), value); 784 } 785 }, 786 }, 787 setAutoDiscriminateLocalLanguage:function(){ 788 translate.autoDiscriminateLocalLanguage = true; 789 }, 790 /* 791 å¾ ç¿»è¯ç页é¢çnodeéå 792 ä¸ç»´ï¼key:uuidï¼ä¹å°±æ¯executeæ¯æ¬¡æ§è¡é½ä¼å建ä¸ä¸ªç¿»è¯éåï¼è¿ä¸ªæ¯ç¿»è¯éåçå¯ä¸æ è¯ã 793 value: 794 k/v 795 äºç»´ï¼å¯¹è±¡å½¢æï¼å ·ä½æï¼ 796 key:expireTime å½åä¸ç»´æ°ç»keyçè¿ææ¶é´ï¼å°è¾¾è¿ææ¶é´ä¼èªå¨å 餿è¿ä¸ªä¸ç»´æ°ç»ã妿<0å代表永ä¸å é¤ï¼å¸¸é©»å å 797 value:list å¾ ç¿»è¯ç页é¢çnodeéå 798 ä¸ç»´ï¼é对äºç»´çvalueï¼ key:englishãchinese_simplifiedçè¯ç§ï¼è¿éçkey便æ¯å¯¹valueç夿ï¼åvalueä¸çè¦ç¿»è¯çè¯æ¯ä»ä¹è¯ç§ï¼å¯¹å ¶è¿è¡äºè¯ç§åç±» value: k/v 799 åç»´ï¼é对ä¸ç»´çvalueï¼ key:è¦ç¿»è¯çè¯ï¼ç»è¿è¯ç§åå²çï¼çhashï¼ value: nodeæ°ç» 800 äºç»´ï¼é对åç»´çvalueï¼ è¿æ¯ä¸ªå¯¹è±¡ï¼ å ¶ä¸ 801 original: æ¯ä¸ç»´çkeyçhashçåå§æåï¼ä¹å°±æ¯ node ä¸çåå§æåã 802 cacheHash: å¦æç¿»è¯æ¶å¹é å°äºèªå®ä¹æ¯è¯åºä¸çè¯ï¼é£ä¹ç¿»è¯å®ååå ¥å°ç¼å䏿¶ï¼å ¶ç¼åçç¿»è¯åå符串已ç»ä¸æ¯originalï¼èæ¯å¹é 宿¯è¯åºåçææ¬çhashäºãæä»¥è¿éé¢å¤å¤å¢å äºè¿ä¸ªå±æ§ã妿å¹é äºæ¯è¯åºï¼é£è¿éå°±æ¯è¦è¿è¡ç¼åçç¿»è¯åææ¬çhashï¼å¦ææªä½¿ç¨æ¯è¯åºï¼è¿éå°±è·å ¶key-hash ç¸åã 803 translateText: é对 original çç»è¿å å·¥è¿çæåï¼æ¯å¦ç»è¿èªå®ä¹æ¯è¯æä½åçï¼å¾ ç¿»è¯çæåã 804 nodes: æåªäºnodeå ç´ ä¸å å«äºè¿ä¸ªè¯ï¼é½ä¼å¨è¿éè®°å½
805 å ç»´ï¼é对äºç»´ç nodesï¼å°åä¸ªå ·ä½ç node 以å å ¶æä½ç attribute 以æ°ç»å½¢å¼ååº 806 ä¸ç»´ï¼é对å ç»´ååºçnodesæ°ç»ï¼å ¶ä¸å å«ï¼ 807 node: å ·ä½æä½çnodeå ç´ 808 attribute: ä¹å°±æ¯ç¿»è¯ææ¬éå¯¹çæ¯ä»ä¹ï¼æ¯nodeæ¬èº«ï¼nodeValueï¼ï¼è¿æ¯ node çæä¸ªå±æ§ï¼æ¯å¦title屿§ï¼è¿åæ¯è®¾ç½®ä¸º "title"ã妿è¿éä¸ä¸ºç©ºï¼é£å°±æ¯é对ç屿§æä½çã 妿è¿é为空æè undefined ï¼é£å°±æ¯é对nodeæ¬èº«ï¼ä¹å°±æ¯ nodeValue çå符串æä½ç 809 beforeText: nodeå ç´ ä¸è¿è¡ç¿»è¯ç»æèµäºæ¶ï¼é¢å¤å¨ç¿»è¯ç»æçåé¢å ä¸çå符串ãå ¶åºç¨åºæ¯ä¸ºï¼å¦æä¸è±ææ··ååºæ¯ä¸ï¼é¿å 䏿è·è±ææ¨ç导è´ç¿»è¯ä¸ºè±è¯åï¼è¿å°ä¸åäºãé»è®¤æ¯ç©ºå符串 '' 810 afterText: nodeå ç´ ä¸è¿è¡ç¿»è¯ç»æèµäºæ¶ï¼é¢å¤å¨ç¿»è¯ç»æçåé¢å ä¸çå符串ãå ¶åºç¨åºæ¯ä¸ºï¼å¦æä¸è±ææ··ååºæ¯ä¸ï¼é¿å 䏿è·è±ææ¨ç导è´ç¿»è¯ä¸ºè±è¯åï¼è¿å°ä¸åäºãé»è®¤æ¯ç©ºå符串 '' 811 812 çå½å¨æï¼ å½execute()æ§è¡æ¶åå»ºï¼ å½executeç»æï¼å ¶ä¸çæærequestæ¥æ¶å°ååºå¹¶æ¸²æå®æ¯ï¼æ¶éæ¯ï¼å½åææ¶ä¸éæ¯ï¼ä»¥æ¹ä¾¿è°è¯ï¼ 813 */ 814 nodeQueue:{}, 815 //æå®è¦ç¿»è¯çå ç´ çéå,å¯ä¼ å ¥ä¸ä¸ªå ç´ æå¤ä¸ªå ç´ 816 //å¦è®¾ç½®ä¸ä¸ªå ç´ ï¼å¯ä¼ å ¥å¦ï¼ document.getElementById('test') 817 //å¦è®¾ç½®å¤ä¸ªå ç´ ï¼å¯ä¼ å ¥å¦ï¼ document.getElementsByTagName('DIV') 818 setDocuments:function(documents){ 819 if (documents == null || typeof(documents) == 'undefined') { 820 return; 821 } 822 823 if(typeof(documents.length) == 'undefined'){ 824 //䏿¯æ°ç»ï¼æ¯å个å ç´ 825 translate.documents[0] = documents; 826 }else{ 827 //æ¯æ°ç»ï¼ç´æ¥èµäº 828 translate.documents = documents; 829 } 830 //æ¸ ç©ºç¿»è¯éåï¼ä¸æ¬¡ç¿»è¯æ¶éæ°æ£ç´¢ 831 translate.nodeQueue = {}; 832 //console.log('set documents , clear translate.nodeQueue'); 833 }, 834 //è·åå½åæå®ç¿»è¯çå ç´ ï¼æ°ç»å½¢å¼ [document,document,...]ï¼ 835 //å¦æç¨æ·æªä½¿ç¨setDocuments æå®çï¼é£ä¹è¿åæ´ä¸ªç½é¡µ 836 //å®è¿åçæ°¸è¿æ¯ä¸ªæ°ç»å½¢å¼ 837 getDocuments:function(){ 838 if(translate.documents != null && typeof(translate.documents) != 'undefined' && translate.documents.length > 0){ 839 // setDocuments æå®ç 840 return translate.documents; 841 }else{ 842 //æªä½¿ç¨ setDocumentsæå®ï¼é£å°±æ¯æ´ä¸ªç½é¡µäº 843 //return document.all; //ç¿»è¯ææç è¿æ¯ v3.5.0ä¹åç 844 //v3.5.0 ä¹åéç¨ æ¿ htmlçæä¸å±çdemoï¼è䏿¯ document.all æ¿å°å¯è½å å个dom 845 var doms = new Array(); 846 doms[0] = document.documentElement; 847 return doms; 848 } 849 }, 850 listener:{ 851 //å½å页颿å¼åï¼æ¯å¦å·²ç»æ§è¡å®execute() æ¹æ³è¿è¡ç¿»è¯äºï¼åªè¦æ§è¡å®ä¸æ¬¡ï¼è¿é便æ¯trueã ï¼å¤ç§è¯è¨çAPI请æ±å®æ¯å¹¶å·²æ¸²æhtmlï¼ 852 //isExecuteFinish:false, 853 //æ¯å¦å·²ç»ä½¿ç¨äº translate.listener.start() äºï¼å¦æä½¿ç¨äºï¼é£è¿é为trueï¼å¤æ¬¡è°ç¨ translate.listener.start() åªæç¬¬ä¸æ¬¡ææ 854 isStart:false, 855 //translate.listener.start(); //å¼å¯html页é¢ååççæ§ï¼å¯¹ååé¨åä¼è¿è¡èªå¨ç¿»è¯ã注æï¼è¿éåååºåï¼æ¯æä½¿ç¨ translate.setDocuments(...) 设置çåºåã妿æªè®¾ç½®ï¼é£ä¹ä¸ºçæ§æ´ä¸ªç½é¡µçåå 856 start:function(){ 857 858 translate.temp_linstenerStartInterval = setInterval(function(){ 859 if(document.readyState == 'complete'){ 860 //domå è½½å®æï¼è¿è¡å¯å¨ 861 clearInterval(translate.temp_linstenerStartInterval);//忢 862 translate.listener.addListener(); 863 } 864 865 //if(translate.listener.isExecuteFinish){ //æ§è¡å®è¿ä¸æ¬¡ï¼é£æè½ä½¿ç¨ 866 /*if(translate.listener.isStart){ 867 //å·²å¼å¯äº 868 return; 869 }*/ 870 871 //console.log('translate.temp_linstenerStartInterval Finish!'); 872 //} 873 }, 300); 874 875 876 }, 877 //å¢å çå¬ï¼å¼å§çå¬ãè¿ä¸ªä¸è¦ç´æ¥è°ç¨ï¼éè¦ä½¿ç¨ä¸é¢ç start() å¼å¯ 878 addListener:function(){ 879 translate.listener.isStart = true; //è®°å½å·²æ§è¡è¿å¯å¨æ¹æ³äº 880 881 // è§å¯å¨çé ç½®ï¼éè¦è§å¯ä»ä¹åå¨ï¼ 882 translate.listener.config = { attributes: true, childList: true, subtree: true, characterData: true, attributeOldValue:true, characterDataOldValue:true }; 883 // å½è§å¯å°å卿¶æ§è¡çåè°å½æ° 884 translate.listener.callback = function(mutationsList, observer) { 885 var documents = []; //æåå¨çå ç´ 886 //console.log('--------- lisetner åå¨'); 887 // Use traditional 'for loops' for IE 11 888 for(let mutation of mutationsList) { 889 let addNodes = []; 890 if (mutation.type === 'childList') { 891 if(mutation.addedNodes.length > 0){ 892 //å¤äºç»ä»¶ 893 addNodes = mutation.addedNodes; 894 //documents.push.apply(documents, mutation.addedNodes); 895 }else if(mutation.removedNodes.length > 0){ 896 //console.log('remove:');
897 //console.log(mutation.removedNodes); 898 }else{ 899 //console.log('not find:'); 900 //console.log(mutation); 901 } 902 }else if (mutation.type === 'attributes') { 903 //console.log('The ' + mutation.attributeName + ' attribute was modified.'); 904 }else if(mutation.type === 'characterData'){ 905 //å 容æ¹å 906 addNodes = [mutation.target]; 907 //documents.push.apply(documents, [mutation.target]); 908 } 909 910 //å»éå¹¶å å ¥ documents 911 for(let item of addNodes){ 912 //console.log(item); 913 914 //夿æ¯å¦å·²ç»å å ¥è¿äºï¼å¦æå·²ç»å å ¥è¿äºï¼å°±ä¸éå¤å äº 915 var isFind = false; 916 for(var di = 0; di < documents.length; di++){ 917 if(documents[di].isSameNode(item)){ 918 isFind = true; 919 break; 920 } 921 } 922 if(isFind){ 923 break; 924 } 925 documents.push.apply(documents, [item]); 926 } 927 } 928 929 //console.log(documents.length); 930 if(documents.length > 0){ 931 //æåå¨ï¼éè¦ççæ¯å¦éè¦ç¿»è¯ï¼å»¶è¿10æ¯«ç§æ§è¡ 932 933 //夿æ¯å¦å±äºå¨æ£å¨ç¿»è¯çèç¹ï¼éæ°ç»ååºæ°çè¦ç¿»è¯çnodeéå 934 var translateNodes = []; 935 //console.log(translate.inProgressNodes.length); 936 for(let ipnode of documents){ 937 //console.log('---type:'+ipnode.nodeType); 938 939 var find = false; 940 for(var ini = 0; ini < translate.inProgressNodes.length; ini++){ 941 if(translate.inProgressNodes[ini].node.isSameNode(ipnode)){ 942 //æè®°å½äºï¼é£ä¹å¿½ç¥è¿ä¸ªnodeï¼è¿ä¸ªnodeæ¯å ä¸ºç¿»è¯æå¯¼è´çåå¨ 943 //console.log('åç°ç¸å'); 944 find = true; 945 break; 946 } 947 } 948 if(find){ 949 continue; 950 } 951 952 //ä¸ç¸åï¼æè¿½å å°æ°ç translateNodes 953 translateNodes.push(ipnode); 954 //console.log('listener ++ '+ipnode.nodeValue); 955 //console.log(ipnode); 956 } 957 if(translateNodes.length < 1){ 958 return; 959 } 960 //console.log('translateNodeslength: '+translateNodes.length); 961 962 963 setTimeout(function() { 964 //console.log(translateNodes); 965 translate.execute(translateNodes); //æå®è¦ç¿»è¯çå ç´ çéå,å¯ä¼ å ¥ä¸ä¸ªæå¤ä¸ªå ç´ ã妿ä¸è®¾ç½®ï¼é»è®¤ç¿»è¯æ´ä¸ªç½é¡µ 966 }, 10); //è¿ä¸ªè¦æ¯ task.execute() ä¸ç settimeout å»¶è¿æ§è¡å é¤ translate.inpr.....nodes çæ¶é´è¦å°ï¼ç®çæ¯åä¸ä¸ªåçåå¨åï¼è®°å ¥ inpr...nodes ç¶åç¿»è¯å®æåèç¹åçååå触åäºlistenerï¼æ¤æ¶ inpr....nodes è¿æï¼é£ä¹è¿ä¸ªååå°ä¸åå¤çï¼ç¶å inp.....nodes åå é¤è¿ä¸ªæ è®° 967 } 968 }; 969 // å建ä¸ä¸ªè§å¯å¨å®ä¾å¹¶ä¼ å ¥åè°å½æ° 970 translate.listener.observer = new MutationObserver(translate.listener.callback); 971 // 以ä¸è¿°é ç½®å¼å§è§å¯ç®æ èç¹ 972 var docs = translate.getDocuments(); 973 for(var docs_index = 0; docs_index < docs.length; docs_index++){ 974 var doc = docs[docs_index]; 975 if(doc != null){ 976 translate.listener.observer.observe(doc, translate.listener.config); 977 } 978 } 979 }, 980 /* 981 æ¯å½æ§è¡å®ä¸æ¬¡æ¸²æä»»å¡ï¼ç¿»è¯ï¼æ¶ä¼è§¦åæ¤ã注æé¡µé¢ä¸æ¬¡ç¿»è¯ä¼è§¦åå¤ä¸ªæ¸²æä»»å¡ãæ®éæ åµä¸ï¼ä¸æ¬¡é¡µé¢çç¿»è¯å¯è½ä¼è§¦å䏤䏿¬¡æ¸²æä»»å¡ã 982 å¦å¤å¦æé¡µé¢ä¸æajaxäº¤äºæ¹é¢çä¿¡æ¯ï¼æ¶ï¼æ¯æ¬¡ajaxä¿¡æ¯å·æ°åï¼ä¹ä¼è¿è¡ç¿»è¯ï¼ä¹æ¯ä¸æ¬¡æ¸²æä»»å¡ã 983 è¿ä¸ªæ¯ä¸ºäºæ¹ä¾¿æ©å±ä½¿ç¨ãæ¯å¦å¨layui䏿©å±ï¼çæ§ select çæ¸²æ 984 */ 985 renderTaskFinish:function(renderTask){ 986 //console.log(renderTask); 987 } 988 }, 989 //对翻è¯ç»æè¿è¡æ¿æ¢æ¸²æçä»»å¡ï¼å°å¾ ç¿»è¯å å®¹æ¿æ¢ä¸ºç¿»è¯å 容çè¿ç¨ 990 renderTask:class{ 991 constructor(){ 992 /* 993 * ä»»å¡å表 994 * ä¸ç»´æ°ç» [hash] = tasks; tasks æ¯å¤ä¸ªtaskçæ°ç»éå 995 * äºç»´æ°ç» [task,task,...]ï¼åæ¾å¤ä¸ª taskï¼æ¯ä¸ªtaskæ¯ä¸ä¸ªæ¿æ¢ãè¿éçæ°ç»æ¯åä¸ä¸ªnodeValueçå¤ä¸ªtaskæ¿æ¢ 996 * ä¸ç»´æ°ç» task['originalText'] ã task['resultText'] åæ¾è¦æ¿æ¢çå符串 997 task['attribute'] åæ¾è¦æ¿æ¢ç屿§ï¼æ¯å¦ aæ ç¾çtitle屿§ã 妿æ¯ç´æ¥æ¿æ¢node.nodeValue ï¼é£è¿ä¸ªæ²¡æ 998 */ 999 this.taskQueue = []; 1000 1001 /* 1002 * è¦è¿è¡ç¿»è¯çnodeå ç´ ï¼ 1003 * ä¸ç»´æ°ç» key:node.nodeValue ç hash ï¼ value:nodeçå ç´ æ°ç»
1004 * äºç»´æ°ç»ï¼ä¹å°±æ¯valueä¸å å«çnodeéå [node,node,...] 1005 */ 1006 this.nodes = []; 1007 } 1008 1009 /** 1010 * åæ¿æ¢éåä¸å¢å æ¿æ¢ä»»å¡ 1011 * node:è¦æ¿æ¢çå符å±äºé£ä¸ªnodeå ç´ 1012 * originalText:å¾ ç¿»è¯çå符 1013 * resultText:ç¿»è¯åçç»æå符 1014 * attribute: è¦æ¿æ¢çæ¯åªä¸ªå±æ§ï¼æ¯å¦ aæ ç¾çtitle屿§ï¼è¿é便æ¯ä¼ å ¥titleã妿䏿¯æ¿æ¢å±æ§ï¼è¿éä¸ç¨ä¼ å ¥ï¼æè ä¼ å ¥null 1015 */ 1016 add(node, originalText, resultText, attribute){ 1017 var nodeAnaly = translate.element.nodeAnalyse.get(node, attribute); //nodeè§£æ 1018 //var hash = translate.util.hash(translate.element.getTextByNode(node)); //nodeä¸å 容çhash 1019 var hash = translate.util.hash(nodeAnaly['text']); 1020 //console.log('--------------'+hash); 1021 //console.log(nodeAnaly); 1022 //console.log(node); 1023 //console.log('originalText:'+originalText+', resultText:'+resultText+', attribute:'+attribute); 1024 /****** å å ¥ç¿»è¯çå ç´ éå */ 1025 if(typeof(this.nodes[hash]) == 'undefined'){ 1026 this.nodes[hash] = new Array(); 1027 } 1028 this.nodes[hash].push(node); 1029 //console.log(node) 1030 1031 /****** å å ¥ç¿»è¯çä»»å¡éå */ 1032 var tasks = this.taskQueue[hash]; 1033 if(tasks == null || typeof(tasks) == 'undefined'){ 1034 //console.log(node.nodeValue); 1035 tasks = new Array(); //ä»»å¡å表ï¼åæ¾å¤ä¸ª taskï¼æ¯ä¸ªtaskæ¯ä¸ä¸ªæ¿æ¢ãè¿éçæ°ç»æ¯åä¸ä¸ªnodeValueçå¤ä¸ªtaskæ¿æ¢ 1036 } 1037 var task = new Array(); 1038 1039 //v2.3.3 å¢å -- å¼å§ 1040 //è¿éè¦è¿è¡å¤çï¼å ä¸ºææ¶åç¿»è¯åï¼å®åæè 忝æç©ºæ ¼çï¼ä½æ¯ç¿»è¯å伿åæè åçç©ºæ ¼ç»èªå¨å¼æ²¡äºï¼å¦ææ¯è¿ç§æ åµï¼è¦æå¨è¡¥ä¸ 1041 if (originalText.substr(0, 1) == ' ') { 1042 //console.log('第ä¸ä¸ªå符æ¯ç©ºæ ¼'); 1043 if(resultText.substr(0, 1) != ' '){ 1044 //ç¿»è¯ç»æç第ä¸ä¸ªåç¬¦ä¸æ¯ç©ºæ ¼ï¼é£ä¹è¡¥ä¸ 1045 resultText = ' ' + resultText; 1046 } 1047 } 1048 if (originalText.substr(originalText.length - 1, 1) === ' ') { 1049 //console.log('æåä¸ä¸ªå符æ¯ç©ºæ ¼'); 1050 if(resultText.substr(0, 1) != ' '){ 1051 //ç¿»è¯ç»æçæåä¸ä¸ªåç¬¦ä¸æ¯ç©ºæ ¼ï¼é£ä¹è¡¥ä¸ 1052 resultText = resultText + ' '; 1053 } 1054 } 1055 //v2.3.3 å¢å -- ç»æ 1056 1057 task['originalText'] = originalText; 1058 task['resultText'] = resultText; 1059 task['attribute'] = attribute; 1060 1061 //console.log(task); 1062 tasks.push(task); 1063 this.taskQueue[hash] = tasks; 1064 /****** å å ¥ç¿»è¯çä»»å¡éå end */ 1065 } 1066 //è¿è¡æ¿æ¢æ¸²æä»»å¡ï¼å¯¹é¡µé¢è¿è¡æ¸²ææ¿æ¢ç¿»è¯ 1067 execute(){ 1068 //å 对tasksä»»å¡éåçæ¿æ¢è¯è¿è¡æåºï¼å°åä¸ä¸ªnodeçæ¿æ¢è¯æå¤§å°å°æåï¼é¿å å æ¿æ¢äºå°çï¼å¤§çæ¿æ¢æ¶æ¾ä¸å° 1069 for(var hash in this.taskQueue){ 1070 var tasks = this.taskQueue[hash]; 1071 if(typeof(tasks) == 'function'){ 1072 //è¿è¡å¼å¸¸çé¢å¤çè°åº 1073 continue; 1074 } 1075 1076 //è¿è¡æåº,å°åå符串é¿çæ¾åé¢ï¼é¿å é ææé¨åä¸ç¿»è¯çæ åµï¼bugæ¯å ç¿»è¯äºççï¼å¯¼è´é¿ç被ææèæ æ³è¿è¡éé ï¼ 1077 tasks.sort((a, b) => b.originalText.length - a.originalText.length); 1078 1079 this.taskQueue[hash] = tasks; 1080 } 1081 1082 //console.log('===========task========='); 1083 //console.log(this.taskQueue); 1084 //console.log(this.nodes); 1085 //console.log('===========task======end==='); 1086 1087 //对nodeQueueè¿è¡ç¿»è¯ 1088 for(var hash in this.nodes){ 1089 var tasks = this.taskQueue[hash]; //ååºå½ånodeå ç´ å¯¹åºçæ¿æ¢ä»»å¡ 1090 //var tagName = this.nodes[hash][0].nodeName; //以ä¸èç¹çtag name 1091 //console.log(tasks); 1092 for(var node_index = 0; node_index < this.nodes[hash].length; node_index++){ 1093 //对è¿ä¸ªnodeå ç´ è¿è¡æ¿æ¢ç¿»è¯å符 1094 for(var task_index=0; task_index<tasks.length; task_index++){ 1095 var task = tasks[task_index]; 1096 if(typeof(tasks) == 'function'){ 1097 //è¿è¡å¼å¸¸çé¢å¤çè°åº 1098 continue; 1099 } 1100 1101 //ç¿»è¯å®æ¯åï¼åå°è¿ä¸ªç¿»è¯çç®æ nodeä» inPro....
1101Nodes ä¸å»æ 1102 var ipnode = this.nodes[hash][task_index]; 1103 //console.log('int-----++'+ipnode.nodeValue); 1104 setTimeout(function(ipnode){ 1105 //console.log('int-----'+ipnode.nodeValue); 1106 for(var ini = 0; ini < translate.inProgressNodes.length; ini++){ 1107 if(translate.inProgressNodes[ini].node.isSameNode(ipnode)){ 1108 //console.log('in progress --'); 1109 //console.log(ipnode); 1110 //æè®°å½äºï¼é£ä¹åºç°æ¬¡æ° +1 1111 translate.inProgressNodes[ini].number = translate.inProgressNodes[ini].number - 1; 1112 //console.log("inProgressNodes -- number: "+translate.inProgressNodes[ini].number+', text:'+ipnode.nodeValue); 1113 if(translate.inProgressNodes[ini].number < 1){ 1114 1115 1116 //console.log('ini-'+ini) 1117 translate.inProgressNodes.splice(ini,1); 1118 //console.log("inProgressNodes -- åå»node length: "+translate.inProgressNodes.length+', text:'+ipnode.nodeValue); 1119 // 1120 } 1121 break; 1122 } 1123 } 1124 }, 50, ipnode); 1125 1126 translate.element.nodeAnalyse.set(this.nodes[hash][task_index], task.originalText, task.resultText, task['attribute']); 1127 1128 1129 1130 1131 1132 /* 1133 //var tagName = translate.element.getTagNameByNode(this.nodes[hash][task_index]);//èç¹çtag name 1134 //console.log(tagName) 1135 //console.log(this.nodes[hash][task_index]) 1136 //var tagName = this.nodes[hash][task_index].nodeName; //èç¹çtag name 1137 var nodename = translate.element.getNodeName(this.nodes[hash][task_index]); 1138 1139 //console.log(this.nodes[hash][task_index]+', '+task.originalText+', '+task.resultText+', tagName:'+tagName); 1140 if(nodename == 'META'){ 1141 if(typeof(this.nodes[hash][task_index].name) != 'undefined' && this.nodes[hash][task_index].name != null){ 1142 //var nodeName = this.nodes[hash][task_index].name.toLowerCase(); //åmeta æ ç¾çname 屿§ 1143 1144 this.nodes[hash][task_index].content = this.nodes[hash][task_index].content.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 1145 } 1146 }else if(nodename == 'IMG'){ 1147 this.nodes[hash][task_index].alt = this.nodes[hash][task_index].alt.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 1148 }else{ 1149 //æ®éç 1150 //console.log('task.originalText : '+task.originalText); 1151 //console.log(translate.util.regExp.pattern(task.originalText)) 1152 //console.log('task.resultText : '+task.resultText); 1153 this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 1154 } 1155 */ 1156 } 1157 } 1158 } 1159 1160 //console.log('---listen'); 1161 1162 //çå¬ - å¢å å°ç¿»è¯åå²éé¢ nodeHistory 1163 if(typeof(this.taskQueue) != 'undefined' && Object.keys(this.taskQueue).length > 0){ 1164 //50毫ç§åæ§è¡ï¼ä»¥ä¾¿é¡µé¢æ¸²æå®æ¯ 1165 var renderTask = this; 1166 setTimeout(function() { 1167 1168 /** æ§è¡å®æåï¼ä¿åç¿»è¯çåå²node **/ 1169 //å°å½åç¿»è¯å®æçnodeè¿è¡ç¼åè®°å½ï¼ä»¥nodeå¯ä¸æ è¯ä¸ºkeyï¼ nodeã以ånodeå½åç¿»è¯ä¹åçå 容为å¼è¿è¡ç¼åãæ¹ä¾¿ä¸ä¸æ¬¡æ§è¡ translate.execute() æ¶ï¼è¥å¼æªåååä¸è¿è¡ç¿»è¯ 1170 for(var hash in renderTask.nodes){ 1171 //console.log(translate.nodeQueue[uuid].list[lang][hash]) 1172 for(var nodeindex in renderTask.nodes[hash]){ 1173 //console.log(translate.nodeQueue[uuid].list[lang][hash].original); 1174 //var nodename = translate.element.getNodeName(translate.nodeQueue[uuid].list[lang][hash].nodes[0].node); 1175 //console.log("nodename:"+nodename); 1176 var analyse = translate.element.nodeAnalyse.get(renderTask.nodes[hash][0]); 1177 //analyse.text analyse.node 1178 var nodeid = nodeuuid.uuid(analyse.node); 1179 1180 if(nodeid.length == 0){ 1181 //忝inputçplaceholder ææ¶æ²¡èèè¿å»ï¼è¿ç§å°±ç´æ¥å¿½ç¥äº 1182 continue; 1183 } 1184 1185 //å å ¥ 1186 /* 1187 if(typeof(translate.nodeHistory[nodeid]) == 'object'){ 1188 //å·²ç»å å ¥è¿äºï¼å¤æå®ç弿¯å¦æåçè¿åå 1189 1190 if(translate.nodeHistory[nodeid].translateText == analyse.text){ 1191 //å¼ç¸åï¼å°±ä¸ç¨åå å ¥äº 1192 continue; 1193 } 1194 } 1195 è¿éå°±ä¸ç¨å¤æäºï¼ç´æ¥åæ¥å°ææ°çï¼å 为åä¸ä¸ªnodeï¼å¯è½ææ¬å°ç¼åç´æ¥æ´æ°ï¼è¿æ ·ä¼é常快ï¼ç½ç»ç伿 ¢2ç§ï¼
1195å æ¶é´å¯¼è´åæ¥ä¸æ¯ææ°ç 1196 */ 1197 //console.log(analyse); 1198 //console.log('add-----'+analyse.text +', uuid:'+nodeid); 1199 //console.log(analyse.node); 1200 translate.nodeHistory[nodeid] = {}; 1201 translate.nodeHistory[nodeid].node = analyse.node; 1202 translate.nodeHistory[nodeid].translateText = analyse.text; 1203 } 1204 1205 } 1206 //console.log(translate.nodeHistory); 1207 1208 /** æ§è¡å®æåï¼è§¦åç¨æ·èªå®ä¹çç¿»è¯å®ææ§è¡å½æ° **/ 1209 translate.listener.renderTaskFinish(renderTask); 1210 1211 }, 50); 1212 1213 }else{ 1214 //console.log(this.taskQueue); 1215 //console.log('---this.taskQueue is null'); 1216 } 1217 } 1218 }, 1219 1220 //æ§è¡ç¿»è¯æä½ãç¿»è¯çæ¯ nodeQueue ä¸ç 1221 //docs å¦æä¼ å ¥ï¼é£ä¹ç¿»è¯çåªæ¯ä¼ å ¥çè¿ä¸ªdocsçãä¼ å ¥å¦ [document.getElementById('xxx'),document.getElementById('xxx'),...] 1222 execute:function(docs){ 1223 if(typeof(docs) != 'undefined'){ 1224 //executeä¼ å ¥åæ°ï¼åªæv2çæ¬ææ¯æ 1225 translate.useVersion = 'v2'; 1226 } 1227 1228 if(translate.useVersion == 'v1'){ 1229 //if(this.to == null || this.to == ''){ 1230 //éç¨1.xçæ¬çç¿»è¯ï¼ä½¿ç¨googleç¿»è¯ 1231 //translate.execute_v1(); 1232 //return; 1233 //v2.5.1å¢å 1234 console.log('æç¤ºï¼https://github.com/xnx3/translate å¨ v2.5 çæ¬ä¹åï¼ç±äºè°·æç¿»è¯è°æ´ï¼å 费翻è¯ééä¸åæ¯æï¼æä»¥v1çæ¬çç¿»è¯æ¥å£ä¸åè¢«æ¯æï¼v1å ¨çº¿ä¸æ¶ãèèå°v1å·²ä¸è½ä½¿ç¨ï¼å½åå·²èªå¨åæ¢å°v2çæ¬ã妿æ¨ä½¿ç¨ä¸åç°ä»ä¹å¼å¸¸ï¼è¯·é对v2çæ¬è¿è¡éé ã'); 1235 translate.useVersion = 'v2'; 1236 } 1237 1238 //çæ¬æ£æµ 1239 try{ 1240 translate.init(); 1241 }catch(e){ } 1242 1243 /****** éç¨ 2.x çæ¬çç¿»è¯ï¼ä½¿ç¨èªæç¿»è¯ç®æ³ */ 1244 1245 1246 //æ¯æ¬¡æ§è¡executeï¼é½ä¼çæä¸ä¸ªå¯ä¸uuidï¼ä¹å¯ä»¥å«åéåçå¯ä¸æ è¯ï¼æ¯ä¸æ¬¡æ§è¡executeé½ä¼å建ä¸ä¸ªç¬ç«çç¿»è¯æ§è¡éå 1247 var uuid = translate.util.uuid(); 1248 //console.log('=====') 1249 //console.log(translate.nodeQueue); 1250 1251 /* v2.4.3 å°åå§åæ¾å°äº translate.element.whileNodes ä¸ï¼å¦æuuid对åºç没æï¼åèªå¨å建 1252 1253 translate.nodeQueue[uuid] = new Array(); //å建 1254 translate.nodeQueue[uuid]['expireTime'] = Date.now() + 120*1000; //å 餿¶é´ï¼10åéåå é¤ 1255 translate.nodeQueue[uuid]['list'] = new Array(); 1256 */ 1257 //console.log(translate.nodeQueue); 1258 //console.log('=====end') 1259 1260 //妿页颿å¼ç¬¬ä¸æ¬¡ä½¿ç¨ï¼å 夿ç¼åä¸ææ²¡æä¸æ¬¡ä½¿ç¨çè¯ç§ï¼ä»ç¼åä¸ååº 1261 if(translate.to == null || translate.to == ''){ 1262 var to_storage = translate.storage.get('to'); 1263 if(to_storage != null && typeof(to_storage) != 'undefined' && to_storage.length > 0){ 1264 translate.to = to_storage; 1265 } 1266 } 1267 1268 //渲æselectéæ©è¯è¨ 1269 try{ 1270 translate.selectLanguageTag.render(); 1271 }catch(e){ 1272 console.log(e); 1273 } 1274 1275 //夿æ¯å¦è¿æªæå®ç¿»è¯çç®æ è¯è¨ 1276 if(translate.to == null || typeof(translate.to) == 'undefined' || translate.to.length == 0){ 1277 //æªæå®ï¼å¤æå¦ææå®äºèªå¨è·åç¨æ·æ¬å½è¯ç§äºï¼é£ä¹è¿è¡è·å 1278 if(translate.autoDiscriminateLocalLanguage){ 1279 translate.executeByLocalLanguage(); 1280 } 1281 1282 //没ææå®ç¿»è¯ç®æ è¯è¨ãåæ²¡èªå¨è·åç¨æ·æ¬å½è¯ç§ï¼åä¸ç¿»è¯ 1283 return; 1284 } 1285 1286 //夿æ¬å°è¯ç§è·è¦ç¿»è¯çç®æ è¯ç§æ¯å¦ä¸æ ·ï¼å¦ææ¯ä¸æ ·ï¼é£å°±ä¸éè¦è¿è¡ä»»ä½ç¿»è¯ 1287 if(translate.to == translate.language.getLocal()){ 1288 return; 1289 } 1290 1291 /********** ç¿»è¯è¿è¡ */ 1292 1293 //å è¿è¡å¾ççç¿»è¯æ¿æ¢ï¼æ¯ç«å¾çè¿æå è½½çè¿ç¨ 1294 translate.images.execute(); 1295 1296 /* 1297 è¿è¡ç¿»è¯æå®çnodeæä½ãä¼å çº§ä¸ºï¼ 1298 1. è¿ä¸ªæ¹æ³å·²ç»æå®çç¿»è¯ nodes 1299 2. setDocuments æå®ç 1300 3. æ´ä¸ªç½é¡µ 1301 å ¶å®2ã3齿¯éè¿ getDocuments() åï¼å¨getDocuments() 就对2ã3è¿è¡äºå¤æ 1302 */ 1303 var all; 1304 if(typeof(docs) != 'undefined'){ 1305 //1. è¿ä¸ªæ¹æ³å·²ç»æå®çç¿»è¯ nodes 1306 1307 if(docs == null){ 1308 //è¦ç¿»è¯çç®æ åºåä¸åå¨ 1309 console.log('translate.execute(...) ä¸ä¼ å ¥çè¦ç¿»è¯çç®æ åºåä¸åå¨ã'); 1310 return; 1311 } 1312 1313 if(typeof(docs.length) == 'undefined'){ 1314 //䏿¯æ°ç»ï¼æ¯å个å ç´ 1315 all = new Array(); 1316 all[0] = docs; 1317 }else{ 1318 //æ¯æ°ç»ï¼ç´æ¥èµäº 1319 all = docs; 1320 } 1321 1322 }else{ 1323 //2ã3 1324 all = translate.getDocuments(); 1325 } 1326 //console.log('----è¦ç¿»è¯çç®æ å ç´ -----'); 1327 //console.log(all) 1328 1329 if(all.length > 500){
1330 console.log('------tip------'); 1331 console.log('translate.execute( docs ) ä¼ å ¥çdocs.length è¿å¤§ï¼è¶ è¿500ï¼è¿å¾ä¸æ£å¸¸ï¼å½å docs.length : '+all.length+' ,å¦æä½ æè§ççæ²¡é®é¢ï¼è¯·èç³»ä½è http://translate.zvo.cn/43006.html è¯´ææ åµï¼æ ¹æ®ä½ çæ åµè¿è¡åæã å½ååªåå500个å ç´ è¿è¡ç¿»è¯'); 1332 } 1333 1334 //æ£ç´¢ç®æ å çnodeå ç´ 1335 for(var i = 0; i< all.length & i < 500; i++){ 1336 var node = all[i]; 1337 translate.element.whileNodes(uuid, node); 1338 } 1339 1340 /***** translate.language.translateLanguagesRange å¼å§ *****/ 1341 if(translate.language.translateLanguagesRange.length > 0){ 1342 //妿大äº0ï¼åæ¯æè®¾ç½®ï¼é£ä¹åªç¿»è¯æè®¾ç½®çè¯ç§ï¼ä¸å¨è®¾ç½®ä¸çè¯ç§ä¸ä¼åä¸ç¿»è¯ 1343 for(var lang in translate.nodeQueue[uuid].list){ 1344 if(translate.language.translateLanguagesRange.indexOf(lang) < 0){ 1345 //å é¤è¿ä¸ªè¯ç§ 1346 delete translate.nodeQueue[uuid].list[lang]; 1347 } 1348 } 1349 } 1350 1351 /***** translate.language.translateLanguagesRange ç»æ *****/ 1352 1353 //ä¿®å¤å¦ætranslateæ¾å¨äºé¡µé¢æé¡¶é¨ï¼æ¤æ¶æ§è¡è¯å®æ«æä¸å°ä»»ä½ä¸è¥¿çï¼é¿å è¿ç§æ åµåºç°æ¥é 1354 if(typeof(translate.nodeQueue[uuid]) == 'undefined'){ 1355 translate.nodeQueue[uuid] = new Array(); 1356 translate.nodeQueue[uuid].list = []; 1357 console.log('--- translate.js warn tip è¦åï¼ï¼ ---');
1358 console.log('æ¨ä½¿ç¨translate.jsæ¶å¯è½æ¾çä½ç½®ä¸å¯¹ï¼ä¸è¦å§ translate.js æ¾å¨ç½é¡µæé¡¶é¨ï¼è¿æ ·å½ translate.js è¿è¡æ§è¡ï¼ä¹å°±æ¯ translate.execute() æ§è¡æ¶ï¼å 为ç½é¡µæ¯ä»ä¸å¾ä¸å è½½ï¼å®æ¾å¨ç½é¡µæé¡¶é¨ï¼é£ä¹å®æ§è¡æ¶ç½é¡µåé¢çå 容é½è¿æ²¡å è½½åºæ¥ï¼è¿ä¸ªæ¯ä¸ä¼è·åå°ç½é¡µä»»ä½å 容çï¼ä¹å°±æ¯å®æ¯ä¸èµ·ä»»ä½ä½ç¨ç'); 1359 } 1360 for(var lang in translate.nodeQueue[uuid].list){ 1361 //console.log('lang:'+lang) 1362 for(var hash in translate.nodeQueue[uuid].list[lang]){ 1363 //console.log(hash) 1364 if(typeof(translate.nodeQueue[uuid].list[lang][hash]) == 'function'){ 1365 //v2.10å¢å ï¼é¿å hashååºä¸ª Contains åºæ¥å¯¼è´forä¸ç.length åºé 1366 continue; 1367 } 1368 for(var nodeindex = translate.nodeQueue[uuid].list[lang][hash].nodes.length-1; nodeindex > -1; nodeindex--){ 1369 //console.log(translate.nodeQueue[uuid].list[lang][hash].nodes); 1370 var analyse = translate.element.nodeAnalyse.get(translate.nodeQueue[uuid].list[lang][hash].nodes[nodeindex].node); 1371 //analyse.text analyse.node 1372 var nodeid = nodeuuid.uuid(analyse.node); 1373 //translate.nodeQueue[uuid].list[lang][hash].nodes.splice(nodeindex, 1); 1374 //console.log(nodeid+'\t'+analyse.text); 1375 if(typeof(translate.nodeHistory[nodeid]) != 'undefined'){ 1376 //åå¨ï¼å¤æå ¶å 容æ¯å¦åçäºæ¹å 1377 //console.log('æ¯è¾---------'); 1378 //console.log(translate.nodeHistory[nodeid].translateText); 1379 //console.log(analyse.text); 1380 if(translate.nodeHistory[nodeid].translateText == analyse.text){ 1381 //å 容æªåçæ¹åï¼é£ä¹ä¸éè¦åç¿»è¯äºï¼ä»translate.nodeQueueä¸å é¤è¿ä¸ªnode 1382 translate.nodeQueue[uuid].list[lang][hash].nodes.splice(nodeindex, 1); 1383 //console.log('åç°ç¸ççnodeï¼å é¤ '+analyse.text+'\t'+hash); 1384 }else{ 1385 //console.log("åç°ååçnode =======nodeid:"+nodeid); 1386 //console.log(translate.nodeHistory[nodeid].translateText == analyse.text); 1387 //console.log(translate.nodeHistory[nodeid].node); 1388 //console.log(translate.nodeHistory[nodeid].translateText); 1389 //console.log(analyse.text); 1390 1391 } 1392 }else{ 1393 //console.log('æªå¨ nodeHistory ä¸åç°ï¼æ°çnode nodeid:'+nodeid); 1394 //console.log(analyse.node) 1395 } 1396 } 1397 if(translate.nodeQueue[uuid].list[lang][hash].nodes.length == 0){ 1398 //妿nodeæ°ç»ä¸å·²ç»æ²¡æäºï¼é£ä¹ç´æ¥æè¿ä¸ªhash廿 1399 delete translate.nodeQueue[uuid].list[lang][hash]; 1400 } 1401 } 1402 if(Object.keys(translate.nodeQueue[uuid].list[lang]).length == 0){ 1403 //妿è¿ä¸ªè¯è¨ä¸æ²¡æè¦ç¿»è¯çnodeäºï¼é£ä¹å é¤è¿ä¸ªè¯è¨ 1404 delete translate.nodeQueue[uuid].list[lang]; 1405 } 1406 } 1407 //console.log('new queuq'); 1408 //console.log(translate.nodeQueue[uuid]) 1409 //translate.nodeHistory[nodeid] 1410 1411 1412 //console.log('-----å¾ ç¿»è¯ï¼----'); 1413 //console.log(translate.nodeQueue); 1414 1415 //translateTextArray[lang][0] 1416 var translateTextArray = {}; //è¦ç¿»è¯çææ¬çæ°ç»ï¼æ ¼å¼å¦ ["ä½ å¥½","欢è¿"] 1417 var translateHashArray = {}; //è¦ç¿»è¯çææ¬çhash,è·ä¸é¢çindexæ¯ä¸è´çï¼åªä¸è¿ä¸é¢æ¯åè¦ç¿»è¯çææ¬ï¼è¿ä¸ªåhashå¼ 1418 1419 1420 /*
1421 è¦è¿è¡ç¬¬äºæ¬¡æ«æçnode - 2023.8.22 è§£å³ç¼åä¼ææ£æ«æå°çç¿»è¯ææ¬ï¼å¯¼è´ç¿»è¯ç»æåæ¾å¯»ä¸å°è导è´ä¸ç¿»è¯çé®é¢ 1422 ä¸ç»´ key: lang 1423 äºç»´ key: hash 1424 ä¸ç»´ key: 1425 node: å½åçnodeå ç´ 1426 åç»´ array: å½åç¼åä¸è¿è¡ç¿»è¯çææ¬æ°ç»ï¼ 1427 cacheOriginal: å·²ç¼åè¢«æ¿æ¢åçææ¬ 1428 cacheTranslateText: å·²ç¼åè¢«æ¿æ¢åçç¿»è¯ææ¬ 1429 1430 */ 1431 var twoScanNodes = {}; 1432 var cacheScanNodes = []; //åä¸é¢ç twoScanNodesï¼åªä¸è¿ twoScanNodes æ¯æç §langåçï¼èè¿ä¸ªä¸åælangåºå 1433 for(var lang in translate.nodeQueue[uuid]['list']){ //äºç»´æ°ç»ä¸ï¼åè¯è¨ 1434 //console.log('lang:'+lang); //lang为englishè¿ç§è¯è¨æ è¯ 1435 if(lang == null || typeof(lang) == 'undefined' || lang.length == 0 || lang == 'undefined'){ 1436 //console.log('lang is null : '+lang); 1437 continue; 1438 } 1439 1440 translateTextArray[lang] = []; 1441 translateHashArray[lang] = []; 1442 1443 let task = new translate.renderTask(); 1444 //console.log(translate.nodeQueue); 1445 1446 twoScanNodes[lang] = []; 1447 //äºç»´æ°ç»ï¼åhashãvalue 1448 for(var hash in translate.nodeQueue[uuid]['list'][lang]){ 1449 if(typeof(translate.nodeQueue[uuid]['list'][lang][hash]) == 'function'){ 1450 //è·³åºï¼å¢å 容éã æ£å¸¸æ åµä¸åºè¯¥ä¸ä¼è¿æ · 1451 continue; 1452 } 1453 1454 //ååå§çè¯ï¼è¿æªç»è¿ç¿»è¯çï¼éè¦è¿è¡ç¿»è¯çè¯ 1455 //var originalWord = translate.nodeQueue[uuid]['list'][lang][hash]['original']; 1456 1457 //åå§çnodeä¸çè¯ 1458 var originalWord = translate.nodeQueue[uuid]['list'][lang][hash]['original']; 1459 //è¦ç¿»è¯çè¯ 1460 var translateText = translate.nodeQueue[uuid]['list'][lang][hash]['translateText']; 1461 //console.log(originalWord); 1462/* 1463 //èªå®ä¹æ¯è¯åçã妿 1464 var nomenclatureOriginalWord = translate.nomenclature.dispose(cache); 1465 if(nomenclatureOriginalWord != originalWord){ 1466 has 1467 } 1468*/ 1469 //console.log(originalWord == translateText ? '1':'xinï¼'+translateText); 1470 //æ ¹æ®hashï¼å¤ææ¬å°æ¯å¦æç¼åäº 1471 var cacheHash = originalWord == translateText ? hash:translate.util.hash(translateText); //妿å¹é å°äºèªå®ä¹æ¯è¯åºï¼é£ç¿»è¯åçhashæ¯è¢«æ¹åäº 1472 translate.nodeQueue[uuid]['list'][lang][hash]['cacheHash'] = cacheHash; //ç¼åçhashã ç¼åæ¶ï¼å ¶hashè·ç¿»è¯çè¯è¨æ¯å®å ¨å¯¹åºçï¼ç¼åçhashå°±æ¯ç¿»è¯çè¯è¨è½¬æ¢æ¥ç 1473 var cache = translate.storage.get('hash_'+translate.to+'_'+cacheHash); 1474 //console.log(cacheHash+', '+cache); 1475 1476 //var twoScanNodes[] = [];
1476 //è¦è¿è¡ç¬¬äºæ¬¡æ«æçnode 1477 if(cache != null && cache.length > 0){ 1478 //æç¼åäº 1479 //console.log('find cacheï¼'+cache); 1480 //ç´æ¥å°ç¼åèµäº 1481 //for(var index = 0; index < this.nodeQueue[lang][hash].length; index++){ 1482 //this.nodeQueue[lang][hash][index].nodeValue = cache; 1483 1484 for(var node_index = 0; node_index < translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; node_index++){ 1485 //console.log(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]); 1486 1487 1488 //å å ¥ translate.inProgressNodes 1489 //åå¾è¿ä¸ªç¿»è¯çnode 1490 var ipnode = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node']; 1491 1492 //夿è¿ä¸ªnodeæ¯å¦å·²ç»å¨ inProgressNodes è®°å½äº 1493 var isFind = false; 1494 for(var ini = 0; ini < translate.inProgressNodes.length; ini++){ 1495 if(translate.inProgressNodes[ini].node.isSameNode(ipnode)){ 1496 //æè®°å½äºï¼é£ä¹åºç°æ¬¡æ° +1 1497 translate.inProgressNodes[ini].number++; 1498 isFind = true; 1499 //console.log('cache - find - ++ '); 1500 //console.log(ipnode); 1501 } 1502 } 1503 //æªåç°ï¼é£ä¹è¿è¦å°è¿ä¸ªnodeå å ¥è¿å» 1504 if(!isFind){ 1505 //console.log('cache - find - add -- lang:'+lang+', hash:'+hash+' node_index:'+node_index); 1506 //console.log(ipnode.nodeValue); 1507 translate.inProgressNodes.push({node: ipnode, number:1}); 1508 } 1509 1510 //console.log(translate.inProgressNodes); 1511 //å å ¥ translate.inProgressNodes -- ç»æ 1512 1513 //ç¿»è¯ç»æçææ¬ï¼å å«äºbefore ã after äº 1514 var translateResultText = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['beforeText']+cache+translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['afterText']; 1515 task.add(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'], originalWord, translateResultText, translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['attribute']); 1516 //this.nodeQueue[lang][hash]['nodes'][node_index].nodeValue = this.nodeQueue[lang][hash]['nodes'][node_index].nodeValue.replace(new RegExp(originalWord,'g'), cache); 1517 //console.log(translateResultText); 1518 1519 //éæ°æ«æè¿ä¸ªnode,é¿å è¿ç§æ åµï¼ 1520 //localstorageç¼å䏿å 个è¯çç¼åäºï¼ä½æ¯ä»ç¼åä¸ä½¿ç¨æ¶ï¼æåæ¬è¯å«çè¦ç¿»è¯çæ°æ®ç»ææ£äºï¼å¯¼è´ç¿»è¯ç»ææ²¡æ³èµäºï¼å¯¼è´ç¨æ·å±ç¤ºæ¶æäºå¥å没æåç¿»è¯çé®é¢ -- 2023.8.22 1521 //console.log('ç»§ç»æ«æ + 1 - '+twoScanNodes.length); 1522 var twoScanIndex = -1; //å½åå ç´ æ¯å¦å¨ twoScan ä¸å·²ç»å å ¥äºï¼å¦æå·²ç»å å ¥äºï¼é£ä¹è¿éèµäºå½åæå¨ç䏿 1523 for(var i = 0; i<twoScanNodes[lang].length; i++){ 1524 if(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'].isSameNode(twoScanNodes[lang][i]['node'])){ 1525 //if(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'].isSameNode(cacheScanNodes[i]['node'])){ 1526 //妿已ç»å å ¥è¿äºï¼é£ä¹è·³è¿ 1527 twoScanIndex = i; 1528 break; 1529 } 1530 } 1531 var twoScanIndex_cache = -1; //å½åå ç´ æ¯å¦å¨ twoScan ä¸å·²ç»å å ¥äºï¼å¦æå·²ç»å å ¥äºï¼é£ä¹è¿éèµäºå½åæå¨ç䏿 1532 for(var i = 0; i<cacheScanNodes.length; i++){ 1533 //if(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'].isSameNode(twoScanNodes[lang][i]['node'])){ 1534 if(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'].isSameNode(cacheScanNodes[i]['node'])){ 1535 //妿已ç»å å ¥è¿äºï¼é£ä¹è·³è¿ 1536 twoScanIndex_cache = i; 1537 break; 1538 } 1539 } 1540 1541 if(twoScanIndex == -1){ 1542 //console.log(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node']); 1543 twoScanIndex = twoScanNodes[lang].length; 1544 twoScanNodes[lang][twoScanIndex] = {}; 1545 twoScanNodes[lang][twoScanIndex]['node'] = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node']; 1546 twoScanNodes[lang][twoScanIndex]['array'] = []; 1547 } 1548 1549 if(twoScanIndex_cache == -1){ 1550 twoScanIndex_cache = cacheScanNodes.length; 1551 cacheScanNodes[twoScanIndex_cache] = {}; 1552 cacheScanNodes[twoScanIndex_cache]['node'] = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node']; 1553 cacheScanNodes[twoScanIndex_cache]['array'] = []; 1554 } 1555 1556 //æªå å ¥è¿ï¼é£ä¹å å ¥ 1557 var arrayIndex = twoScanNodes[lang][twoScanIndex]['array'].length; 1558 twoScanNodes[lang][twoScanIndex]['array'][arrayIndex] = translateResultText; 1559 1560 var arrayIndex_cache = cacheScanNodes[twoScanIndex_cache]['array'].length; 1561 cacheScanNodes[twoScanIndex_cache]['array'][arrayIndex_cache] = translateResultText; 1562 1563 //twoScanNodes[lang][twoScanIndex]['array'][arrayIndex] = translate.nodeQueue[uuid]['list'][lang][hash]['beforeText']+cache+translate.nodeQueue[uuid]['list'][lang][hash]['afterText']; 1564 } 1565 //} 1566 1567 1568 1569 continue; //è·³åºï¼ä¸ç¨å¨ä¼ å ¥ä¸é¢çç¿»è¯æ¥å£äº 1570 } 1571 1572 /* 1573 //ååºæ°ç» 1574 var queueNodes = this.nodeQueue[lang][hash]; 1575 if(queueNodes.length > 0){ 1576 //å 为å¨è¿ä¸ªæ°ç»ä¸çå¼é½æ¯ä¸æ ·çï¼é£ä¹åªéè¦ååºç¬¬ä¸ä¸ªå°±è¡äº 1577 var valueStr = queueNodes[0].nodeValue; 1578 valueStr = this.util.charReplace(valueStr); 1579 1580 translateTextArray[lang].push(valueStr); 1581 translateHashArray[lang].push(hash); 1582 } 1583 */ 1584 1585 //å å ¥å¾ ç¿»è¯æ°ç» 1586 translateTextArray[lang].push(translateText); 1587 translateHashArray[lang].push(hash); //è¿éåå ¥ç便§è¿æ¯ç¨åå§hashï¼æªä½¿ç¨èªå®ä¹æ¯è¯åºåçhashï¼ç®çæ¯ä¸ç ´å
1587 nodeQueue ç key 1588 } 1589 1590 task.execute(); //æ§è¡æ¸²æä»»å¡ 1591 } 1592 //console.log(twoScanNodes); 1593 //console.log('cacheScanNodes:'); 1594 //console.log(cacheScanNodes); 1595 1596 /******* è¿è¡ç¬¬äºæ¬¡æ«æã追å å ¥ç¿»è¯éåãç®çæ¯é²æ¢ç¼åææ£æ«æçå¾ ç¿»è¯ææ¬ ********/ 1597 for(var lang in twoScanNodes){ 1598 //è®°å½ç¬¬ä¸æ¬¡æ«æçæ°æ®ï¼ä»¥ä¾¿è·ç¬¬äºæ¬¡æ«æåçè¿è¡å¯¹æ¯ 1599 var firstScan = Object.keys(translate.nodeQueue[uuid]['list'][lang]); 1600 var firstScan_lang_langth = firstScan.length; //ç¬¬ä¸æ¬¡æ«æåçæ°ç»é¿åº¦ 1601 1602 //console.log(twoScanNodes[lang]); 1603 for(var i = 0; i<twoScanNodes[lang].length; i++){ 1604 1605 //æ¾å°è¿ä¸ªnodeå ç´ å½ä¸ç¼ååçç¿»è¯è®°å½ 1606 for(var ci = 0; ci<cacheScanNodes.length; ci++){ 1607 if(twoScanNodes[lang][i].node.isSameNode(cacheScanNodes[ci]['node'])){ 1608 //妿åç°ï¼é£ä¹èµäº 1609 twoScanNodes[lang][i].array = cacheScanNodes[ci].array; 1610 break; 1611 } 1612 } 1613 1614 twoScanNodes[lang][i].array.sort(function(a, b) { return b.length - a.length; }); 1615 //console.log(twoScanNodes[lang][i].array); 1616 1617 var nodeAnaly = translate.element.nodeAnalyse.get(twoScanNodes[lang][i].node); 1618 //console.log(nodeAnaly); 1619 var text = nodeAnaly.text; 1620 //console.log(text.indexOf(twoScanNodes[lang][i].array[0])); 1621 1622 for(var ai = 0; ai < twoScanNodes[lang][i].array.length; ai++){ 1623 if(twoScanNodes[lang][i].array[ai] < 1){ 1624 continue; 1625 } 1626 text = text.replace(new RegExp(translate.util.regExp.pattern(twoScanNodes[lang][i].array[ai]),'g'), translate.util.regExp.resultText('\n')); 1627 } 1628 1629 //console.log(text); 1630 var textArray = text.split('\n'); 1631 //console.log(textArray); 1632 for(var tai = 0; tai < textArray.length; tai++){ 1633 if(textArray[tai] < 1){ 1634 continue; 1635 } 1636 //console.log(textArray[tai]); 1637 //å°æ°å¢ç追å å° translate.nodeQueue ä¸ 1638 translate.addNodeToQueue(uuid, nodeAnaly['node'], textArray[tai]); 1639 } 1640 } 1641 1642
1643 //åç¬¬äºæ¬¡æ«æè¿½å åçæ°æ® 1644 var twoScan = Object.keys(translate.nodeQueue[uuid]['list'][lang]); 1645 var twoScan_lang_langth = twoScan.length; //ç¬¬äºæ¬¡æ«æåçæ°ç»é¿åº¦ 1646 //console.log(firstScan_lang_langth+ '=='+twoScan_lang_langth); 1647 if(firstScan_lang_langth - twoScan_lang_langth == 0){ 1648 //ä¸è´ï¼æ²¡ææ°å¢ï¼é£ä¹ç´æ¥è·³åºï¼å¿½ç¥ 1649 continue; 1650 } 1651 1652 //console.log(translate.nodeQueue[uuid]['list'][lang]); 1653 //console.log(firstScan); 1654 for(var ti=0; ti<twoScan.length; ti++){ 1655 twoHash = twoScan[ti]; 1656 //console.log(twoHash + '-- '+firstScan.indexOf(twoHash)); 1657 if(firstScan.indexOf(twoHash) == -1){ 1658 //éè¦è¿½å äº 1659 var item = translate.nodeQueue[uuid]['list'][lang][twoHash]; 1660 1661 var cacheHash = item.original == item.translateText ? twoHash:translate.util.hash(item.translateText); //妿å¹é å°äºèªå®ä¹æ¯è¯åºï¼é£ç¿»è¯åçhashæ¯è¢«æ¹åäº 1662 translate.nodeQueue[uuid]['list'][lang][twoHash]['cacheHash'] = cacheHash; //ç¼åçhashã ç¼åæ¶ï¼å ¶hashè·ç¿»è¯çè¯è¨æ¯å®å ¨å¯¹åºçï¼ç¼åçhashå°±æ¯ç¿»è¯çè¯è¨è½¬æ¢æ¥ç 1663 1664 translateTextArray[lang].push(item.translateText); 1665 translateHashArray[lang].push(twoHash); 1666 } 1667 } 1668 1669 }
1670 /******* è¿è¡ç¬¬äºæ¬¡æ«æã追å å ¥ç¿»è¯éå -- ç»æ ********/ 1671 1672 1673 //window.translateHashArray = translateHashArray; 1674 1675 //ç»è®¡åºè¦ç¿»è¯åªäºè¯ç§ ï¼è¿éé¢çè¯ç§ä¼è°ç¨æ¥å£è¿è¡ç¿»è¯ãå ¶å æ ¼å¼å¦ english 1676 var fanyiLangs = []; 1677 //console.log(translateTextArray) 1678 for(var lang in translate.nodeQueue[uuid]['list']){ //äºç»´æ°ç»ä¸åè¯è¨ 1679 if(typeof(translateTextArray[lang]) == 'undefined'){ 1680 continue; 1681 } 1682 if(translateTextArray[lang].length < 1){ 1683 continue; 1684 } 1685 1686 //妿å½åè¯ç§å°±æ¯éè¦æ¾ç¤ºçè¯ç§ï¼ä¹å°±æ¯å¦æè¦åæ¢çè¯ç§ï¼ï¼é£ä¹ä¹ä¸ä¼è¿è¡ç¿»è¯ï¼ç´æ¥å¿½ç¥ 1687 if(lang == translate.to){ 1688 continue; 1689 } 1690 fanyiLangs.push(lang); 1691 } 1692 1693 1694 /******* ç¨ä»¥è®°å½å½åæ¯å¦è¿è¡å®ç¬¬ä¸æ¬¡ç¿»è¯äº *******/ 1695 /* 1696 if(!translate.listener.isExecuteFinish){ 1697 translate.temp_executeFinishNumber = 0; //ä¸é¢è¯·æ±æ¥å£æ¸²æï¼ç¿»è¯æ§è¡å®æçæ¬¡æ° 1698 //夿æ¯å¦æ¯æ§è¡å®ä¸æ¬¡äº 1699 translate.temp_executeFinishInterval = setInterval(function(){ 1700 if(translate.temp_executeFinishNumber == fanyiLangs.length){ 1701 translate.listener.isExecuteFinish = true; //è®°å½å½åå·²æ§è¡å®ç¬¬ä¸æ¬¡äº 1702 clearInterval(translate.temp_executeFinishInterval);//忢 1703 console.log('translate.execute() Finish!'); 1704 //console.log(uuid); 1705 1706 } 1707 }, 50); 1708 } 1709 */ 1710 1711 //console.log(translate.nodeQueue[uuid]['list']) 1712 if(fanyiLangs.length == 0){ 1713 //没æéè¦ç¿»è¯çï¼ç´æ¥éåº 1714 return; 1715 } 1716 1717 //å å ¥ translate.inProgressNodes -- start 1718 for(var lang in translateHashArray){ 1719 if(typeof(translateHashArray[lang]) == 'undefined'){ 1720 continue; 1721 } 1722 if(translateHashArray[lang].length < 1){ 1723 continue; 1724 } 1725 for(var hai = 0; hai<translateHashArray[lang].length; hai++){ 1726 var thhash = translateHashArray[lang][hai]; 1727 //åå¾è¿ä¸ªç¿»è¯çnode 1728 //var ipnode = translate.nodeQueue[uuid]['list'][lang][thhash].nodes[ipni].node; 1729 //console.log('translate.nodeQueue[\''+uuid+'\'][\'list\'][\'chinese_simplified\'][\''+thhash+'\']'); 1730 //console.log(lang); 1731 //console.log(translate.nodeQueue[uuid]['list'][lang][thhash].nodes); 1732 for(var ipni = 0; ipni < translate.nodeQueue[uuid]['list'][lang][thhash].nodes.length; ipni++){ 1733 //åå¾è¿ä¸ªç¿»è¯çnode 1734 var ipnode = translate.nodeQueue[uuid]['list'][lang][thhash].nodes[ipni].node; 1735 1736 //夿è¿ä¸ªnodeæ¯å¦å·²ç»å¨ inProgressNodes è®°å½äº 1737 var isFind = false; 1738 for(var ini = 0; ini < translate.inProgressNodes.length; ini++){ 1739 if(translate.inProgressNodes[ini].node.isSameNode(ipnode)){ 1740 //æè®°å½äºï¼é£ä¹åºç°æ¬¡æ° +1 1741 //console.log('net request ++'); 1742 //console.log(ipnode); 1743 translate.inProgressNodes[ini].number++; 1744 isFind = true; 1745 } 1746 } 1747 //æªåç°ï¼é£ä¹è¿è¦å°è¿ä¸ªnodeå å ¥è¿å» 1748 if(!isFind){ 1749 //console.log('net request add'); 1750 //console.log(ipnode); 1751 translate.inProgressNodes.push({node: ipnode, number:1}); 1752 } 1753 1754 } 1755 1756 } 1757 } 1758 //å å ¥ translate.inProgressNodes -- end 1759 1760 1761 1762 //è¿è¡ææ¥å£ç¿»è¯ 1763 for(var lang_index in fanyiLangs){ //ä¸ç»´æ°ç»ï¼åè¯è¨ 1764 var lang = fanyiLangs[lang_index]; 1765 //console.log(typeof(translateTextArray[lang])) 1766 1767 if(typeof(translateTextArray[lang]) == 'undefined' || translateTextArray[lang].length < 1){ 1768 return; 1769 } 1770 1771 //èªå®ä¹æ¯è¯ 1772 /*var nomenclatureCache = translate.nomenclature.dispose(cache); 1773 for(var ttr_index = 0; ttr_index<translateTextArray[lang].length; ttr_index++){ 1774 console.log(translateTextArray[lang][ttr_index]) 1775 }*/ 1776 1777 /*** ç¿»è¯å¼å§ ***/ 1778 var url = translate.request.api.translate; 1779 var data = { 1780 from:lang, 1781 to:translate.to, 1782 //text:JSON.stringify(translateTextArray[lang]) 1783 text:encodeURIComponent(JSON.stringify(translateTextArray[lang])) 1784 }; 1785 //console.log(data); 1786 translate.request.post(url, data, function(data){ 1787 //console.log(data); 1788 //console.log(translateTextArray[data.from]); 1789 if(data.result == 0){ 1790 console.log('=======ERROR START======='); 1791 console.log(translateTextArray[data.from]); 1792 //console.log(encodeURIComponent(JSON.stringify(translateTextArray[data.from]))); 1793 1794 console.log('response : '+data.info); 1795 console.log('=======ERROR END ======='); 1796 //translate.temp_executeFinishNumber++; //è®°å½æ§è¡å®çæ¬¡æ° 1797 return; 1798 } 1799 1800 //console.log('-----å¾ ç¿»è¯3ï¼----'); 1801 //console.log(translate.nodeQueue); 1802 1803 //console.log('response:'+uuid); 1804 let task = new translate.renderTask(); 1805 //éå translateHashArray 1806 for(var i=0; i<translateHashArray[data.from].length; i++){ 1807 //ç¿»è¯åçè¯ç§ï¼å¦ english 1808 var lang = data.from; 1809 //ç¿»è¯åçå 容 1810 var text = data.text[i]; 1811 //妿text为nullï¼é£ä¹è¿ä¸ªå¯è½æ¯ä¸æ¬¡ç¿»è¯åæ°å¤ªå¤ï¼ä¸ºäºä¿ææ°ç»é¿åº¦ï¼æ¼ä¸çnull 1812 if(text == null){ 1813 continue; 1814 } 1815 1816 // v3.0.3 æ·»å ï¼é¿å 忝 JavaScript 被é误翻è¯ä¸º âJavaScriptçâ ï¼ç¶ååºç°äºå¤ä¸ªå¥åä¸é½åºç°äºJavascriptæ¶ï¼ä¼åºç°ç¿»è¯åææ¬éå¤çé®é¢ 1817 // è¿éå°±æ¯éªè¯ä¸ä¸ï¼ç¿»è¯åçææ¬ï¼æ¯å¦ä¼å®å ¨å å«ç¿»ä»¥åçææ¬ï¼å¦æå å«äºï¼é£ä¹å¼ºå¶å°ç¿»è¯åçææ¬èµäºç¿»è¯åçåå§ææ¬ï¼ä¹å°±æ¯ä¸è¢«ç¿»è¯ï¼ 1818 if(text.toLowerCase().indexOf(translateTextArray[data.from][i].toLowerCase()) > -1){ 1819 //åç°äºï¼é£ä¹å¼ºå¶èµäºç¿»ä»¥åå 容 1820 text = translateTextArray[data.from][i]; 1821 } 1822 1823 1824 //ç¿»è¯åçhash对åºä¸æ 1825 var hash = translateHashArray[data.from][i]; 1826 var cacheHash = translate.nodeQueue[uuid]['list'][lang][hash]['cacheHash']; 1827 1828 1829 1830 //ååå§çè¯ï¼è¿æªç»è¿ç¿»è¯çï¼éè¦è¿è¡ç¿»è¯çè¯ 1831 var originalWord = ''; 1832 try{ 1833 originalWord = translate.nodeQueue[uuid]['list'][lang][hash]['original']; 1834 //console.log('bef:'+translate.nodeQueue[uuid]['list'][lang][hash]['beforeText']); 1835 }catch(e){ 1836 console.log('uuid:'+uuid+', originalWord:'+originalWord+', lang:'+lang+', hash:'+hash+', text:'+text+', queue:'+translate.nodeQueue[uuid]); 1837 console.log(e); 1838 continue; 1839 } 1840 1841 //for(var index = 0; index < translate.nodeQueue[lang][hash].length; index++){ 1842 for(var node_index = 0; node_index < translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; node_index++){ 1843 //translate.nodeQueue[lang][hash]['nodes'][node_index].nodeValue = translate.nodeQueue[lang][hash]['nodes'][node_index].nodeValue.replace(new RegExp(originalWord,'g'), text); 1844 //å å ¥ä»»å¡ 1845 task.add(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'], originalWord, translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['beforeText']+text+translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['afterText'], translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['attribute']); 1846 } 1847 //} 1848 /* 1849 for(var index = 0; index < translate.nodeQueue[data.from][hash].length; index++){ 1850 translate.nodeQueue[data.from][hash][index].nodeValue = text; 1851 } 1852 */ 1853 1854 //å°ç¿»è¯ç»æä»¥ keyï¼hash valueç¿»è¯ç»æçå½¢å¼ç¼å 1855 translate.storage.set('hash_'+data.to+'_'+cacheHash,text); 1856 } 1857 task.execute(); //æ§è¡æ¸²æä»»å¡ 1858 //translate.temp_executeFinishNumber++; //è®°å½æ§è¡å®çæ¬¡æ° 1859 1860 }); 1861 /*** ç¿»è¯end ***/ 1862 1863 1864 } 1865 }, 1866 /* 1867 å°å·²æåç¿»è¯å¹¶æ¸²æçnodeèç¹è¿è¡ç¼åè®°å½ 1868 key: nodeèç¹çå¯ä¸æ è¯ç¬¦ï¼éè¿ nodeuuid.uuid() çæ 1869 value: 1870 node: nodeèç¹ 1871 translateText: ç¿»è¯å®æåï¼å½ånodeèç¹çå å®¹ææ¬ï¼æ¯å·²ç»ç¿»è¯æ¸²æè¿çï¼ 1872 */ 1873 nodeHistory:{}, 1874 element:{ 1875 1876 /* 1877 注æï¼éé¢å ¨é¨çå¿ é¡»å°åã 1878 第ä¸ä¸ªæ¯tagï¼ç¬¬äºä¸ªæ¯tagç屿§ãæ¯å¦è¦ç¿»è¯ input ç value 屿§ï¼é£ä¹å¦ä¸ï¼ 1879 translate.element.tagAttribute['input']=['value']; 1880 æ¯å¦è¦ç¿»è¯ input ç value ã data-value è¿ä¸¤ä¸ªå±æ§ï¼é£ä¹å¦ä¸ï¼ 1881 translate.element.tagAttribute['input']=['value','data-value']; 1882 æå 个è¦ç¿»è¯ç屿§ï¼å°±åä¸å 个ã 1883 åæ ·ï¼æå 个è¦é¢å¤ç¿»è¯çtagï¼å°±å ä¸å è¡ã 1884 è¯¦ç»ææ¡£åèï¼ http://translate.zvo.cn/231504.html 1885 */ 1886 tagAttribute : {}, 1887 1888 //对翻è¯ååçnodeå ç´ çåæï¼ç¿»ä»¥åï¼å渲æï¼ç¿»è¯åï¼ 1889 nodeAnalyse:{ 1890 /* 1891 è·ånodeä¸çè¦è¿è¡ç¿»è¯çææ¬å 容ã以åè¦æä½çå®é node对象ï¼è¿ä¸ªnode对象å¾å¯è½æ¯ä¼ å ¥çnodeä¸çæä¸ªånodeï¼ 1892 node 1893 attribute è¦è·åçæ¯æä¸ªå±æ§çå¼ï¼è¿æ¯nodeæ¬èº«çå¼ãæ¯å¦ aæ ç¾çtitle屿§çå¼ï¼åä¼ å ¥ titleã 妿æ¯ç´æ¥è·ånode.nodeValue ï¼é£è¿ä¸ªæ²¡æ 1894 1895 è¿åç»ææ¯ä¸ä¸ªæ°ç»ãå ¶ä¸ï¼ 1896 ['text']:è¦è¿è¡ç¿»è¯çtextå å®¹ææ¬ 1897 ['node']:è¦è¿è¡ç¿»è¯çç®æ node 1898 1899 */ 1900 get:function(node, attribute){ 1901 return translate.element.nodeAnalyse.analyse(node,'','', attribute); 1902 }, 1903 /* 1904 è¿è¡ç¿»è¯ä¹åçæ¸²ææ¾ç¤º 1905 åæ°ï¼ 1906 node å½åç¿»è¯çnodeå ç´ 1907 originalText ç¿»è¯ä¹åçå å®¹ææ¬ 1908 resultText ç¿»è¯ä¹åçå å®¹ææ¬ 1909 attribute åæ¾è¦æ¿æ¢ç屿§ï¼æ¯å¦ aæ ç¾çtitle屿§ã 妿æ¯ç´æ¥æ¿æ¢node.nodeValue ï¼é£è¿ä¸ªæ²¡æ 1910 */ 1911 set:function(node, originalText, resultText, attribute){ 1912 translate.element.nodeAnalyse.analyse(node,originalText,resultText, attribute); 1913 }, 1914 /* 1915 1916 注æï¼è¿ä¸ªä¸ä½¿ç¨ï¼åªæ¯æå¡äºä¸é¢çgetãset使ç¨ãå ·ä½ä½¿ç¨ç¨ä¸é¢çgetãset 1917 1918 1. åªä¼ å ¥ nodeï¼ 1919 è·ånodeä¸çè¦è¿è¡ç¿»è¯çææ¬å 容ã以åè¦æä½çå®é node对象ï¼è¿ä¸ªnode对象å¾å¯è½æ¯ä¼ å ¥çnodeä¸çæä¸ªånodeï¼ 1920 è¿åç»ææ¯ä¸ä¸ªæ°ç»ãå ¶ä¸ï¼ 1921 ['text']:è¦è¿è¡ç¿»è¯çtextå å®¹ææ¬ 1922 ['node']:è¦è¿è¡ç¿»è¯çç®æ node 1923 2. ä¼ å ¥ nodeãoriginalTextã resultText 1924 忝è¿è¡ç¿»è¯ä¹åçæ¸²ææ¾ç¤º 1925 1926 attribute : è¿è¡æ¿æ¢æ¸²ææ¶ä½¿ç¨ï¼åæ¾è¦æ¿æ¢ç屿§ï¼æ¯å¦ aæ ç¾çtitle屿§ã 妿æ¯ç´æ¥æ¿æ¢node.nodeValue ï¼é£è¿ä¸ªæ²¡æ 1927 */ 1928 analyse:function(node, originalText, resultText, attribute){ 1929 var result = new Array(); //è¿åçç»æ 1930 result['node'] = node; 1931 result['text'] = ''; 1932 1933 var nodename = translate.element.getNodeName(node); 1934 1935 if(attribute != null && typeof(attribute) == 'string' && attribute.length > 0){ 1936 //è¿ä¸ªnodeæå±æ§ï¼æ¿æ¢çæ¯nodeç屿§ï¼è䏿¯nodeValue 1937 result['text'] = node[attribute]; 1938 1939 //æ¿æ¢æ¸²æ 1940 if(typeof(originalText) != 'undefined' && originalText.length > 0){ 1941 if(typeof(node[attribute]) != 'undefined'){ 1942 //è¿ç§å°å¨ v3.9.2 ä¹ååºå¼ï¼æä¸é¢çsetAttributeçæ¹å¼å代 1943 node[attribute] = node[attribute].replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 1944 } 1945 if(typeof(node.getAttribute(attribute)) != 'undefined'){ 1946 //è¿ä¸ªææ¯å¨v3.9.2 åè¦ç¨çï¼ä¸é¢çççåªæ¯ä¸ºäºéé 以åç 1947 node.setAttribute(attribute, node.getAttribute(attribute).replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText))); 1948 } 1949 } 1950 return result; 1951 } 1952 1953 //æ£å¸¸çnode ï¼typeof 齿¯ object 1954 1955 //console.log(typeof(node)+node); 1956 if(nodename == '#text'){ 1957 //å¦ææ¯æ®éææ¬ï¼å¤æä¸ä¸ä¸å±æ¯å¦æ¯å å«å¨textareaæ ç¾ä¸ 1958 if(typeof(node.parentNode) != 'undefined'){ 1959 var parentNodename = translate.element.getNodeName(node.parentNode); 1960 //console.log(parentNodename) 1961 if(parentNodename == 'TEXTAREA'){
1962 //æ¯textareaæ ç¾ï¼é£å°nodename çº³å ¥ textareaç夿ä¸ï¼åæ¶å°å¤æå¯¹è±¡äº¤äºä¸çº§ï¼ä¹å°±æ¯textareaæ ç¾ 1963 nodename = 'TEXTAREA'; 1964 node = node.parentNode; 1965 } 1966 } 1967 } 1968 1969 1970 1971 //console.log(nodename) 1972 //console.log(translate.element.getNodeName(node.parentNode)) 1973 //console.log(node) 1974 if(nodename == 'INPUT' || nodename == 'TEXTAREA'){ 1975 //console.log(node.attributes) 1976 /* 1977 1. inputãtextarea è¾å ¥æ¡ï¼è¦å¯¹ placeholder åç¿»è¯ 1978 2. input è¦å¯¹ type=button çæ åµè¿è¡ç¿»è¯ 1979 */ 1980 if(node.attributes == null || typeof(node.attributes) == 'undefined'){ 1981 result['text'] = ''; 1982 return result; 1983 } 1984 1985 //inputï¼è¦å¯¹ type=buttonãsubmit çæ åµè¿è¡ç¿»è¯ 1986 if(nodename == 'INPUT'){ 1987 if(typeof(node.attributes.type) != 'undefined' && typeof(node.attributes.type.nodeValue) != null && (node.attributes.type.nodeValue.toLowerCase() == 'button' || node.attributes.type.nodeValue.toLowerCase() == 'submit')){ 1988 //console.log('----æ¯ <input type="button"'); 1989 //åå®çvalue 1990 var input_value_node = node.attributes.value; 1991 if(input_value_node != null && typeof(input_value_node) != 'undefined' && typeof(input_value_node.nodeValue) != 'undefined' && input_value_node.nodeValue.length > 0){ 1992 //æ¿æ¢æ¸²æ 1993 if(typeof(originalText) != 'undefined' && originalText.length > 0){ 1994 //this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 1995 input_value_node.nodeValue = input_value_node.nodeValue.replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 1996 } 1997 1998 result['text'] = input_value_node.nodeValue; 1999 result['node'] = input_value_node; 2000 return result; 2001 } 2002 } 2003 } 2004 //console.log(node) 2005 2006 //input textarea ç placeholder æ åµ 2007 if(typeof(node.attributes['placeholder']) != 'undefined'){ 2008 //console.log(node); 2009 //æ¿æ¢æ¸²æ 2010 if(typeof(originalText) != 'undefined' && originalText.length > 0){ 2011 //this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 2012 node.attributes['placeholder'].nodeValue = node.attributes['placeholder'].nodeValue.replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 2013 } 2014 2015 result['text'] = node.attributes['placeholder'].nodeValue; 2016 result['node'] = node.attributes['placeholder']; 2017 return result; 2018 //return node.attributes['placeholder'].nodeValue; 2019 } 2020 //console.log(node) 2021 result['text'] = ''; 2022 return result; 2023 } 2024 if(nodename == 'META'){
2025 //metaæ ç¾ï¼å¦æ¯å ³é®è¯ãæè¿°ç 2026 if(typeof(node.name) != 'undefined' && node.name != null){ 2027 var nodeAttributeName = node.name.toLowerCase(); //åmeta æ ç¾çname 屿§ 2028 var nodeAttributePropertyOri = node.getAttribute('property'); //å propertyçå¼ 2029 var nodeAttributeProperty = ''; 2030 if(typeof(nodeAttributePropertyOri) != 'undefined' && nodeAttributePropertyOri != null && nodeAttributePropertyOri.length > 0){ 2031 nodeAttributeProperty = nodeAttributePropertyOri.toLowerCase(); 2032 } 2033 if(nodeAttributeName == 'keywords' || nodeAttributeName == 'description' || nodeAttributeName == 'sharetitle' || nodeAttributeProperty == 'og:title' || nodeAttributeProperty == 'og:description' || nodeAttributeProperty == 'og:site_name' || nodeAttributeProperty == 'og:novel:latest_chapter_name'){ 2034 //æ¿æ¢æ¸²æ 2035 if(typeof(originalText) != 'undefined' && originalText != null && originalText.length > 0){ 2036 //this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 2037 node.content = node.content.replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 2038 } 2039 2040 result['text'] = node.content; 2041 return result; 2042 } 2043 } 2044 2045 result['text'] = ''; 2046 return result; 2047 } 2048 if(nodename == 'IMG'){ 2049 if(typeof(node.alt) == 'undefined' || node.alt == null){ 2050 result['text'] = ''; 2051 return result; 2052 } 2053 2054 //æ¿æ¢æ¸²æ 2055 if(typeof(originalText) != 'undefined' && originalText.length > 0){ 2056 //this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 2057 node.alt = node.alt.replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 2058 } 2059 result['text'] = node.alt; 2060 return result; 2061 } 2062 2063 2064 //å ¶ä»ç 2065 if(node.nodeValue == null || typeof(node.nodeValue) == 'undefined'){ 2066 result['text'] = ''; 2067 }else if(node.nodeValue.trim().length == 0){ 2068 //é¿å å°±æ¯å纯çç©ºæ ¼æè æ¢è¡ 2069 result['text'] = ''; 2070 }else{ 2071 //æ¿æ¢æ¸²æ 2072 if(typeof(originalText) != 'undefined' && originalText != null && originalText.length > 0){ 2073 //this.nodes[hash][task_index].nodeValue = this.nodes[hash][task_index].nodeValue.replace(new RegExp(translate.util.regExp.pattern(task.originalText),'g'), translate.util.regExp.resultText(task.resultText)); 2074 node.nodeValue = node.nodeValue.replace(new RegExp(translate.util.regExp.pattern(originalText),'g'), translate.util.regExp.resultText(resultText)); 2075 } 2076 result['text'] = node.nodeValue; 2077 } 2078 return result; 2079 } 2080 }, 2081 //è·åè¿ä¸ªnodeå ç´ çnode name ,妿æªåç°ï¼åè¿å''空å符串 2082 getNodeName:function(node){ 2083 if(node == null || typeof(node) == 'undefined'){ 2084 return ''; 2085 } 2086 2087 if(node.nodeName == null || typeof(node.nodeName) == 'undefined'){ 2088 return ''; 2089 } 2090 2091 var nodename = node.nodeName; 2092 //console.log('nodename:'+nodename+', node:'+node); 2093 return nodename; 2094 }, 2095 //åä¸éånode 2096 whileNodes:function(uuid, node){ 2097 if(node == null || typeof(node) == 'undefined'){ 2098 return; 2099 } 2100 2101 //妿è¿ä¸ªuuid没æï¼åå建 2102 if(typeof(translate.nodeQueue[uuid]) == 'undefined' || translate.nodeQueue[uuid] == null){ 2103 translate.nodeQueue[uuid] = new Array(); //å建 2104 translate.nodeQueue[uuid]['expireTime'] = Date.now() + 120*1000; //å 餿¶é´ï¼10åéåå é¤ 2105 translate.nodeQueue[uuid]['list'] = new Array(); 2106 //console.log('å建 --- '); 2107 //console.log(uuid) 2108 } 2109 2110 //console.log('---'+typeof(node)+', '); 2111 //夿æ¯å¦æ¯ætitle屿§ï¼title屿§ä¹è¦ç¿»è¯ 2112 if(typeof(node) == 'object' && typeof(node['title']) == 'string' && node['title'].length > 0){ 2113 //å°titleå å ¥ç¿»è¯éå 2114 //console.log('---'+node.title+'\t'+node.tagName); 2115 //console.log(node) 2116 //console.log('------------'); 2117 2118 //夿å½åå ç´ æ¯å¦å¨ignore忽ç¥çtagãidãclass nameä¸ 2119 if(!translate.ignore.isIgnore(node)){ 2120 //ä¸å¨å¿½ç¥çéé¢ï¼æä¼å å ¥ç¿»è¯ 2121 translate.addNodeToQueue(uuid, node, node['title'], 'title'); 2122 } 2123 } 2124 2125 //v3.9.2 å¢å , ç¨æ·å¯èªå®ä¹æ ç¾å attribute çç¿»è¯ 2126 var nodeNameLowerCase = translate.element.getNodeName(node).toLowerCase(); 2127 if(typeof(translate.element.tagAttribute[nodeNameLowerCase]) != 'undefined'){ 2128 //console.log('find:'+nodeNameLowerCase); 2129 //console.log(translate.element.tagAttribute[nodeNameLowerCase]); 2130 2131 for(var attributeName_index in translate.element.tagAttribute[nodeNameLowerCase]){ 2132 2133 var attributeName = translate.element.tagAttribute[nodeNameLowerCase][attributeName_index]; 2134 if(typeof(node.getAttribute(attributeName)) == 'undefined'){ 2135 //è¿ä¸ªtagæ ç¾æ²¡æè¿ä¸ª attributeï¼å¿½ç¥ 2136 continue 2137 } 2138 //å å ¥ç¿»è¯ 2139 translate.addNodeToQueue(uuid, node, node.getAttribute(attributeName), attributeName); 2140 } 2141 2142 } 2143 2144 2145 var childNodes = node.childNodes; 2146 if(childNodes == null || typeof(childNodes) == 'undefined'){ 2147 return; 2148 } 2149 if(childNodes.length > 0){ 2150 for(var i = 0; i<childNodes.length; i++){ 2151 translate.element.whileNodes(uuid, childNodes[i]); 2152 } 2153 }else{ 2154 //åä¸ªäº 2155 translate.element.findNode(uuid, node); 2156 } 2157 }, 2158 findNode:function(uuid, node){ 2159 if(node == null || typeof(node) == 'undefined'){ 2160 return; 2161 } 2162 //console.log(node) 2163 if(node.parentNode == null){ 2164 return; 2165 } 2166 2167 //console.log('-----parent') 2168 var parentNodeName = translate.element.getNodeName(node.parentNode); 2169 //node.parentNode.nodeName; 2170 if(parentNodeName == ''){ 2171 return; 2172 } 2173 if(translate.ignore.tag.indexOf(parentNodeName.toLowerCase()) > -1){ 2174 //忽ç¥tag 2175 //console.log('忽ç¥tagï¼'+parentNodeName); 2176 return; 2177 } 2178 2179 /****** å¤æå¿½ç¥çclass ******/ 2180 /* 2181 è¿æ®µç论ä¸ä¸éè¦äºï¼å ä¸ºå¨ translate.ignore.isIgnore å¤æäº 2182 var ignoreClass = false; //æ¯å¦æ¯è¢«å¿½ç¥çclassï¼trueæ¯ 2183 var parentNode = node.parentNode; 2184 while(node != parentNode && parentNode != null){ 2185 //console.log('node:'+node+', parentNode:'+parentNode); 2186 if(parentNode.className != null){ 2187 if(translate.ignore.class.indexOf(parentNode.className) > -1){ 2188 //åç°ignore.class å½åæ¯å¤äºè¢«å¿½ç¥ç class 2189 ignoreClass = true; 2190 } 2191 } 2192 2193 parentNode = parentNode.parentNode; 2194 } 2195 if(ignoreClass){ 2196 //console.log('ignore class : node:'+node.nodeValue); 2197 return; 2198 } 2199 */ 2200 /**** å¤æå¿½ç¥çclassç»æ ******/ 2201 2202 2203 2204 /**** é¿å ä¸éå±é¨ç¿»è¯ï¼å¨å¤æä¸ä¸ ****/ 2205 //夿å½åå ç´ æ¯å¦å¨ignore忽ç¥çtagãidãclass nameä¸ 2206 if(translate.ignore.isIgnore(node)){ 2207 //console.log('nodeå å«å¨è¦å¿½ç¥çå ç´ ä¸ï¼'); 2208 //console.log(node); 2209 return; 2210 } 2211 2212 //nodeåæ 2213 var nodeAnaly = translate.element.nodeAnalyse.get(node); 2214 if(nodeAnaly['text'].length > 0){ 2215 //æè¦ç¿»è¯çç®æ å 容ï¼å å ¥ç¿»è¯éå 2216 //console.log('addNodeToQueue -- '+nodeAnaly['node']+', text:' + nodeAnaly['text']); 2217 translate.addNodeToQueue(uuid, nodeAnaly['node'], nodeAnaly['text']); 2218 } 2219 //console.log(nodeAnaly); 2220 /* 2221 //console.log(node.nodeName+', type:'+node.nodeType+', '+node.nodeValue); 2222 var nodename = translate.element.getNodeName(node); 2223 if(nodename == 'INPUT' || nodename == 'TEXTAREA'){
2224 //input è¾å ¥æ¡ï¼è¦å¯¹ placeholder åç¿»è¯ 2225 console.log('input---'+node.attributes); 2226 if(node.attributes == null || typeof(node.attributes) == 'undefined'){ 2227 return; 2228 } 2229 2230 if(typeof(node.attributes['placeholder']) != 'undefined'){ 2231 //console.log(node.attributes['placeholder'].nodeValue); 2232 //å å ¥è¦ç¿»è¯çnodeéå 2233 //translate.nodeQueue[translate.hash(node.nodeValue)] = node.attributes['placeholder']; 2234 //å å ¥è¦ç¿»è¯çnodeéå 2235 //translate.addNodeToQueue(translate.hash(node.attributes['placeholder'].nodeValue), node.attributes['placeholder']); 2236 translate.addNodeToQueue(uuid, node.attributes['placeholder'], node.attributes['placeholder'].nodeValue); 2237 } 2238 2239 //console.log(node.getAttribute("placeholder")); 2240 }else if(nodename == 'META'){ 2241 //metaæ ç¾ï¼å¦æ¯å ³é®è¯ãæè¿°ç 2242 if(typeof(node.name) != 'undefined' && node.name != null){ 2243 var nodeAttributeName = node.name.toLowerCase(); //åmeta æ ç¾çname 屿§ 2244 //console.log(nodeName); 2245 if(nodeAttributeName == 'keywords' || nodeAttributeName == 'description'){ 2246 //å ³é®è¯ãæè¿° 2247 translate.addNodeToQueue(uuid, node, node.content); 2248 } 2249 } 2250 //console.log(node.name) 2251 }else if(nodename == 'IMG'){ 2252 //console.log('-------'+node.alt); 2253 translate.addNodeToQueue(uuid, node, node.alt); 2254 }else if(node.nodeValue != null && node.nodeValue.trim().length > 0){ 2255 2256 //è¿æ»¤ææ æçå¼ 2257 if(node.nodeValue != null && typeof(node.nodeValue) == 'string' && node.nodeValue.length > 0){ 2258 }else{ 2259 return; 2260 } 2261 2262 //console.log(node.nodeValue+' --- ' + translate.language.get(node.nodeValue)); 2263 2264 //console.log(node.nodeName); 2265 //console.log(node.parentNode.nodeName); 2266 //console.log(node.nodeValue); 2267 //å å ¥è¦ç¿»è¯çnodeéå 2268 translate.addNodeToQueue(uuid, node, node.nodeValue); 2269 //translate.addNodeToQueue(translate.hash(node.nodeValue), node); 2270 //translate.nodeQueue[translate.hash(node.nodeValue)] = node; 2271 //translate.nodeQueue[translate.hash(node.nodeValue)] = node.nodeValue; 2272 //node.nodeValue = node.nodeValue+'|'; 2273 2274 } 2275 */ 2276 2277 }, 2278 }, 2279 2280 2281 2282 2283 2284 /* 2285 * å°åç°çå ç´ èç¹å å ¥å¾ ç¿»è¯éå 2286 * uuid executeæ¹æ³æ§è¡çå¯ä¸id 2287 * node å½åtextæå¨çnode 2288 * text å½åè¦ç¿»è¯çç®æ ææ¬ 2289 * attribute æ¯å¦æ¯å ç´ çæä¸ªå±æ§ãæ¯å¦ aæ ç¾ä¸çtitle屿§ï¼ a.title å以nodeåæ°ä¼ å ¥æ¶æ¯stringç±»åçï¼æ¬èº«å¹¶ä¸æ¯nodeç±»åï¼æä»¥å°±è¦ä¼ å ¥è¿ä¸ª attribute=title æ¥ä»£è¡¨è¿æ¯aæ ç¾çtitle屿§ãåæ ·ç¬¬äºä¸ªåæ°nodeä¼ å ¥çä¹ä¸è½æ¯a.titleï¼èæ¯ä¼ å ¥aè¿ä¸ªnodeå ç´ 2290 */ 2291 addNodeToQueue:function(uuid, node, text, attribute){ 2292 if(node == null || text == null || text.length == 0){ 2293 return; 2294 } 2295 2296 2297 //console.log('find tag ignore : '+node.nodeValue+', '+node.nodeName+", "+node.nodeType+", "+node.tagName); 2298 //console.log('addNodeToQueue into -- node:'+node+', text:'+text+', attribute:'+attribute); 2299 var nodename = translate.element.getNodeName(node); 2300 2301 //夿妿æ¯è¢« <!-- --> 注éçåºåï¼ä¸è¿è¡ç¿»è¯ 2302 if(nodename.toLowerCase() == '#comment'){ 2303 return; 2304 } 2305 //console.log('\t\t'+text); 2306 //åè¦ç¿»è¯å符çhash 2307 var key = translate.util.hash(text); 2308 /* 2309 妿æ¯input ç placeholder ,å°±ä¼åºç°è¿ä¸ªæ åµ 2310 if(node.parentNode == null){ 2311 console.log('node.parentNode == null'); 2312 return; 2313 } 2314 */ 2315 2316 //console.log(node.parentNode); 2317 //console.log(node.parentNode.nodeName); 2318 2319 //å¤æå ¶å 容æ¯å¦æ¯ scriptãstyle çç¼ç¨çææ¬ï¼å¦ææ¯ï¼åä¸è¿è¡ç¿»è¯ï¼ä¸ç¶ç¿»è¯åè¿ä¼å½±å页颿£å¸¸ä½¿ç¨ 2320 if(translate.util.findTag(text)){ 2321 //console.log('find tag ignore : '+node.nodeValue+', '+node.nodeName+", "+node.nodeType+", "+node.tagName); 2322 //console.log(node.parentNode.nodeName); 2323 2324 //è·åå°å½åææ¬æ¯å±äºé£ä¸ªtagæ ç¾ä¸çï¼å¦ææ¯scriptãstyle è¿æ ·çæ ç¾ä¸ï¼é£ä¹ä¼å¿½ç¥æå®ï¼ä¸è¿è¡ç¿»è¯ 2325 if(node.parentNode == null){ 2326 //没æä¸çº§äºï¼ææ¯æ²¡è·åå°ä¸çº§ï¼å¿½ç¥ 2327 return; 2328 } 2329 //å»ä¸çº§çtag name 2330 var parentNodeName = translate.element.getNodeName(node.parentNode); 2331 //node.parentNode.nodeName;
2332 if(parentNodeName == 'SCRIPT' || parentNodeName == 'STYLE'){ 2333 //妿æ¯scriptãstyleä¸åç°çï¼é£ä¹å¿½ç¥ 2334 return; 2335 } 2336 } 2337 //console.log(node.nodeValue); 2338 2339 2340 //åæ¬ä¼ å ¥çtextä¼è¢«åå²ä¸ºå¤ä¸ªå°å 2341 var textArray = new Array(); 2342 textArray.push(text); //å å°ä¸» text èµäº ï¼åé¢å¦æå¯¹ä¸»textè¿è¡å å·¥åå²ï¼åå²åä¼å°ä¸»textç»å 餿 2343 //console.log(textArray); 2344 2345 /**** v3.10.2.20241206 - å¢å èªå®ä¹å¿½ç¥ç¿»è¯çææ¬ï¼å¿½ç¥ç¿»è¯çææ¬ä¸ä¼è¢«ç¿»è¯ - å½ç¶è¿æ ·ä¼æä¹±ç¿»è¯ä¹åé 读çè¿è´¯æ§ ****/ 2346 for(var ti = 0; ti<translate.ignore.text.length; ti++){ 2347 if(translate.ignore.text[ti].trim().length == 0){ 2348 continue; 2349 } 2350 2351 textArray = translate.addNodeToQueueTextAnalysis(uuid, node, textArray, attribute, translate.ignore.text[ti], translate.ignore.text[ti]); 2352 2353 //console.log(textArray); 2354 } 2355 2356 2357 2358 /**** v3.10.2.20241206 - èªå®ä¹æ¯è¯è½åå ¨é¢ä¼å - å½ç¶è¿æ ·ä¼æä¹±ç¿»è¯ä¹åé 读çè¿è´¯æ§ ****/ 2359 //夿æ¯å¦è¿è¡äºç¿»è¯ï¼ä¹å°±æ¯æè®¾ç½®ç®æ è¯ç§ï¼å¹¶ä¸è·å½åè¯ç§ä¸ä¸è´ 2360 if(typeof(translate.temp_nomenclature) == 'undefined'){ 2361 translate.temp_nomenclature = new Array(); 2362 } 2363 if(typeof(translate.temp_nomenclature[translate.language.getLocal()]) == 'undefined'){ 2364 nomenclatureKeyArray = new Array(); 2365 } 2366 if(typeof(translate.nomenclature.data[translate.language.getLocal()]) != 'undefined' && typeof(translate.nomenclature.data[translate.language.getLocal()][translate.to]) != 'undefined'){ 2367 var nomenclatureKeyArray; 2368 for(var nomenclatureKey in translate.nomenclature.data[translate.language.getLocal()][translate.to]){ 2369 //nomenclatureKey 便æ¯èªå®ä¹æ¯è¯çåå§ææ¬ï¼å¼æ¯è¦æ¿æ¢ä¸ºçææ¬ 2370 //console.log(nomenclatureKey); 2371 //èªå®ä¹å±äºçæå®çç»æå符串 2372 var nomenclatureValue = translate.nomenclature.data[translate.language.getLocal()][translate.to][nomenclatureKey]; 2373 2374 textArray = translate.addNodeToQueueTextAnalysis(uuid, node, textArray, attribute, nomenclatureKey, nomenclatureValue); 2375 2376 if(typeof(nomenclatureKeyArray) != 'undefined'){ 2377 nomenclatureKeyArray.push(nomenclatureKey); 2378 } 2379 2380 } 2381 2382 if(typeof(translate.temp_nomenclature[translate.language.getLocal()]) == 'undefined'){ 2383 translate.temp_nomenclature[translate.language.getLocal()] = nomenclatureKeyArray; 2384 } 2385 } 2386 /**** v3.10.2.20241206 - èªå®ä¹æ¯è¯è½åå ¨é¢ä¼å - end ****/ 2387 2388 2389 2390 2391 2392 2393 for(var tai = 0; tai<textArray.length; tai++){ 2394 if(textArray[tai].trim().length == 0){ 2395 continue; 2396 } 2397 2398 //夿æ¯å¦åºç°å¨èªå®ä¹å¿½ç¥å符串 2399 if(translate.ignore.text.indexOf(textArray[tai].trim()) > -1){ 2400 //console.log(textArray[tai]+' æ¯å¿½ç¥ç¿»è¯çææ¬ï¼ä¸ç¿»è¯'); 2401 continue; 2402 } 2403 2404 //夿æ¯å¦åºç°å¨èªå®ä¹æ¯è¯ç 2405 if(typeof(translate.temp_nomenclature[translate.language.getLocal()]) != 'undefined'){ 2406 if(translate.temp_nomenclature[translate.language.getLocal()].indexOf(textArray[tai].trim()) > -1){ 2407 //console.log(textArray[tai]+' æ¯èªå®ä¹æ¯è¯ï¼ä¸ç¿»è¯'); 2408 continue; 2409 } 2410 } 2411 2412 translate.addNodeToQueueAnalysis(uuid, node, textArray[tai], attribute); 2413 } 2414 2415 //this.nodeQueue[lang][key][this.nodeQueue[lang][key].length]=node; //徿°ç»ä¸è¿½å 2416 }, 2417 2418 /** 2419 * æå¡äºä¸é¢ç addNodeToQueue ï¼ç¨äºåºåä¸åtypeæ åµï¼è¿è¡è°ç¨æ¤å å ¥ translate.nodeQueue 2420 * uuid, node, attribute è¿åä¸ªåæ°è¯´æè§ addNodeToQueue çåæ°è¯´æï¼ç¸å 2421 * textArray è¿è¡å¤ççè¦ç¿»è¯çææ¬æ°ç»ãè¿ä¸ªæå¼å§åªæ¯ä¸ä¸ªï¼ä½æ¯å½ä¸ååå²çå¤äºä¹å°±åæå¤ä¸ªäº 2422 * nomenclatureKey æ¿æ¢çåå§ææ¬ï¼ä¹å°±æ¯èªå®ä¹æ¯è¯çkeyé¨å 2423 * nomenclatureValue æ¿æ¢çç®æ ææ¬ï¼ä¹å°±æ¯èªå®ä¹æ¯è¯çvalueé¨å ã 妿 nomenclatureKey = nomenclatureValue 忝èªå®ä¹å¿½ç¥ç¿»è¯çææ¬ãè¿ä¸ªææ¬ä¸è¢«ç¿»è¯ 2424 * @return å¤çè¿åç textArray å¦ææ²¡æå½ä¸åè¿åçæ¯ä¼ å ¥ç textArray ï¼å½ä¸äºåæ¯åå²ä»¥åå é¤åæ¬å¤æçtextä¹åç textArray 2425 */ 2426 addNodeToQueueTextAnalysis:function(uuid, node,textArray, attribute, nomenclatureKe
2426y, nomenclatureValue){ 2427 var deleteTextArray = new Array(); //è®°å½è¦ä» textArray ä¸å é¤çå符串 2428 2429 for(var tai = 0; tai<textArray.length; tai++){ 2430 var text = textArray[tai]; 2431 2432 if(text.trim() == nomenclatureValue.trim()){ 2433 //è¿éæ¯èªå®ä¹æ¯è¯è¢«æ¿æ¢åï¼éæ°æ«ææ¶æ«åºæ¥çï¼é£ä¹ç´æ¥å¿½ç¥ï¼ä¸åä»»ä½å¤çãå 为èªå®ä¹æ¯è¯çç»æå°±æ¯æç»ç»æäº 2434 continue; 2435 } 2436 2437 //夿ä¸ä¸åå§ææ¬æ¯å¦æåºç°å¨äºè¿ä¸ªwordè¦ç¿»è¯çåç¬¦ä¸²ä¸ 2438 var wordKeyIndex = text.indexOf(nomenclatureKey); 2439 if(wordKeyIndex > -1){ 2440 //åºç°äºï¼é£ä¹éè¦å°å ¶ç«å³è¿è¡æ´æ¹ï¼å°èªå®ä¹æ¯è¯å®ä¹çç»ææ¸²æå°é¡µé¢ä¸ï¼å¹¶ä¸å° word è¦ç¿»è¯çå符串ä¸ï¼èªå®ä¹æ¯è¯é¨åå é¤ï¼åªç¿»è¯é¤äºèªå®ä¹æ¯è¯å©ä½çé¨å 2441 //console.log(text+' --> '+nomenclatureKey); 2442 2443 2444 /* 2445 * 夿ä¸ä¸è¿ä¸ªtextä¸ï¼åºç°å¹é èªå®ä¹æ¯è¯çé¨åï¼æ¯å¦æ¯å·²ç»è¢«æ¿æ¢è¿äºï¼æ¯å¦è¦å° 好 æ¿æ¢ä¸º ä½ å¥½ ï¼è¿éç好ä¼é夿¿æ¢ãè¿éæ¯å¤æè¿ç§æ åµ 2446 * å ¶ä¸è¦å¤æä¸ä¸ key ä¸çäºvalueï¼å 为keyçäºvalueï¼å±äºæ¯æå®è¿ä¸ªkeyä¸è¢«ç¿»è¯çæ åµ 2447 */ 2448 if(nomenclatureKey != nomenclatureValue){ 2449 var substringStart = wordKeyIndex-nomenclatureValue.length; 2450 if(substringStart < 0){ 2451 substringStart = 0; 2452 } 2453 var substringEnd = wordKeyIndex+nomenclatureValue.length; 2454 if(substringEnd > text.length){ 2455 substringEnd = text.length; 2456 } 2457 var nomenclatureValueJudgement = text.substring(substringStart, substringEnd); 2458 //console.log(text+', '+nomenclatureValueJudgement); 2459 if(nomenclatureValueJudgement.indexOf(nomenclatureValue) > -1){ 2460 //å·²ç»æ¿æ¢è¿äºï¼å¯è½ä¼é夿¿æ¢ï¼æä»¥å¿½ç¥æ 2461 continue; 2462 } 2463 } 2464 2465 2466 //夿å½åæ¯å¦æ¯è±è¯ååç§ï¼ä¹å°±æ¯åè¯ä¹é´éè¦æç©ºæ ¼çï¼å¦æååæ²¡æç©ºæ ¼ï¼è¦è¡¥å ä¸ç©ºæ ¼ 2467 if(translate.language.wordBlankConnector(translate.to)){ 2468 if(wordKeyIndex > 0){ 2469 //å®åé¢è¿æææ¬ï¼å¤æå®åé¢çææ¬æ¯å¦æ¯ç©ºæ ¼ï¼å¦æä¸æ¯ï¼é£ä¹è¦è¡¥å ä¸ç©ºæ ¼ 2470 var before = text.charAt(wordKeyIndex-1); 2471 //console.log(before); 2472 if(!(/\s/.test(before))){ 2473 //䏿¯ç©ºç½å符ï¼è¡¥å ä¸ä¸ä¸ªç©ºæ ¼ï¼ç¨äºå°ä¸¤ä¸ªåè¯éå¼ 2474 nomenclatureValue = ' '+nomenclatureValue 2475 } 2476 } 2477 if(wordKeyIndex + nomenclatureKey.length < text.length){ 2478 //å®åé¢è¿æææ¬ï¼å¤æå®åé¢çææ¬æ¯å¦æ¯ç©ºæ ¼ï¼å¦æä¸æ¯ï¼é£ä¹è¦è¡¥å ä¸ç©ºæ ¼ 2479 var after = text.charAt(wordKeyIndex + nomenclatureKey.length); 2480 //console.log(after); 2481 if(!(/\s/.test(before))){ 2482 //䏿¯ç©ºç½å符ï¼è¡¥å ä¸ä¸ä¸ªç©ºæ ¼ï¼ç¨äºå°ä¸¤ä¸ªåè¯éå¼ 2483 nomenclatureValue = nomenclatureValue+' '; 2484 } 2485 } 2486 } 2487 2488 //妿æ¯èªå®ä¹æ¯è¯çkeyçäºvalueï¼åæ¯å±äºæå®çæäºææ¬ä¸è¿è¡ç¿»è¯çæ åµï¼æä»¥è¿éè¦åç¬å¤æä¸ä¸ 2489 //console.log(nomenclatureKey+':'+nomenclatureValue); 2490 if(nomenclatureKey != nomenclatureValue){ 2491 translate.element.nodeAnalyse.set(node, nomenclatureKey, nomenclatureValue, attribute); 2492 } 2493 2494 2495 //ä» text ä¸å°èªå®ä¹æ¯è¯çé¨åå æï¼èªå®ä¹æ¯è¯çä¸è¢«ç¿»è¯ 2496 var wordSplits = text.split(nomenclatureKey); 2497 var isPushTextArray = false; 2498 for(var index = 0; index < wordSplits.length; index++){ 2499 //console.log(index); 2500 var subWord = wordSplits[index]; //åå²åçåå符串 2501 if(subWord.trim().length == 0){ 2502 continue; 2503 } 2504 //console.log(subWord); 2505 2506 //å°å ¶å å ¥ textArray ä¸ 2507 textArray.push(subWord); 2508 deleteTextArray.push(text); 2509 } 2510 2511 //console.log(wordSplits); 2512 //èªå®ä¹æ¯è¯éé å®åå°±ç´æ¥éåºäº 2513 //return wordSplits; 2514 } 2515 2516 } 2517 2518 //console.log(deleteTextArray) 2519 //ä» textArray ä¸å é¤ 2520 if(deleteTextArray.length > 0){ 2521 for(var di = 0; di<deleteTextArray.length; di++){ 2522 let index = textArray.indexOf(deleteTextArray[di]); 2523 if (index > -1) { 2524 //console.log(textArray); 2525 //console.log(deleteTextArray[di]); 2526 textArray.splice(index, 1); 2527 //console.log(textArray); 2528 } 2529 } 2530 } 2531 2532 return textArray; 2533 }, 2534 2535 /* 2536
2537 æå¡äºä¸é¢ç addNodeToQueue ï¼ç¨äºåºåä¸åtypeæ åµï¼è¿è¡è°ç¨æ¤å å ¥ translate.nodeQueue 2538 uuid, node, attribute è¿äºä¸ªåæ°è¯´æè§ addNodeToQueue çåæ°è¯´æï¼ç¸å 2539 2540 word è¦å®é è¿è¡ç¿»è¯çææ¬ï¼ä¹å°±æ¯è¦æå®æ¿æ¥è¿è¡éè¿åç«¯ç¿»è¯æ¥å£è¿è¡ç¿»è¯çææ¬ 2541 lang å½åè¦ç¿»è¯çææ¬çè¯ç§ï¼å¦ english 2542 beforeText åè§ translate.nodeQueue 注éä¸ç¬¬ä¸ç»´çè§£é 2543 afterText åè§ translate.nodeQueue 注éä¸ç¬¬ä¸ç»´çè§£é 2544 2545 */ 2546 addNodeToQueueAnalysis:function(uuid, node, text, attribute){ 2547 //è·åå½åæ¯ä»ä¹è¯ç§ 2548 //var langs = translate.language.get(text); 2549 var textRecognition = translate.language.recognition(text); 2550 langs = textRecognition.languageArray; 2551 //console.log('langs'); 2552 //console.log(langs); 2553 2554 2555 //è¿æ»¤æè¦è½¬æ¢ä¸ºçç®æ è¯ç§ï¼æ¯å¦è¦è½¬ä¸ºè±è¯ï¼é£å°±å°æ¬æ¥æ¯è±è¯çé¨åè¿æ»¤æï¼ä¸ç¨åç¿»è¯äº 2556 if(typeof(langs[translate.to]) != 'undefined'){ 2557 delete langs[translate.to]; 2558 } 2559 2560 var isWhole = translate.whole.isWhole(node); 2561 //console.log('isWhole:'+isWhole+', '+text); 2562 2563 if(!isWhole){ 2564 //å¸¸è§æ¹å¼ï¼è¿è¡è¯ç§åç±» 2565 2566 2567 /* if(this.nodeQueue[lang] == null || typeof(this.nodeQueue[lang]) == 'undefined'){ 2568 this.nodeQueue[lang] = new Array(); 2569 } 2570 //å建äºç»´æ°ç» 2571 if(this.nodeQueue[lang][key] == null || typeof(this.nodeQueue[lang][key]) == 'undefined'){ 2572 this.nodeQueue[lang][key] = new Array(); 2573 } 2574 */ 2575 //console.log(langs); 2576 2577 for(var lang in langs) { 2578 //å建äºç»´æ°ç»ï¼ key为è¯ç§ï¼å¦ english 2579 /* 2580 æ¾å°äº translate.addNodeQueueItem è¿è¡å¤æ 2581 if(translate.nodeQueue[uuid]['list'][lang] == null || typeof(translate.nodeQueue[uuid]['list'][lang]) == 'undefined'){ 2582 translate.nodeQueue[uuid]['list'][lang] = new Array(); 2583 } 2584 */ 2585 //console.log('|'+langs[lang].length); 2586 //éååºè¯¥è¯ç§ä¸æåªäºè¯éè¦ç¿»è¯ 2587 for(var word_index = 0; word_index < langs[lang].list.length; word_index++){ 2588 //console.log('start:'+word_index) 2589 //console.log(langs[lang].list[word_index]); 2590 if(typeof(langs[lang].list[word_index]) == 'undefined' || typeof(langs[lang].list[word_index]['text']) == 'undefined'){ 2591 //ç论ä¸åºè¯¥ä¸ä¼ï¼ä½å¤å ä¸ªå¤æ 2592 continue; 2593 } 2594 var word = langs[lang].list[word_index]['text']; //è¦ç¿»è¯çè¯ 2595 var beforeText = langs[lang].list[word_index]['beforeText']; 2596 var afterText = langs[lang].list[word_index]['afterText']; 2597 2598 //console.log(lang+' - '+word); 2599 translate.addNodeQueueItem(uuid, node, word, attribute, lang, beforeText, afterText); 2600 2601 /* 2602 var hash = translate.util.hash(word); //è¦ç¿»è¯çè¯çhash 2603 //å建ä¸ç»´æ°ç»ï¼ key为è¦éè¿æ¥å£ç¿»è¯çææ¬è¯æå¥åç hash ï¼æ³¨æå¹¶ä¸æ¯nodeçææ¬ï¼èæ¯nodeæååçææ¬ï¼ 2604 if(translate.nodeQueue[uuid]['list'][lang][hash] == null || typeof(translate.nodeQueue[uuid]['list'][lang][hash]) == 'undefined'){ 2605 translate.nodeQueue[uuid]['list'][lang][hash] = new Array(); 2606 2607 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'] = new Array(); 2608 translate.nodeQueue[uuid]['list'][lang][hash]['original'] = word; 2609 translate.nodeQueue[uuid]['list'][lang][hash]['translateText'] = translate.nomenclature.dispose(word); //èªå®ä¹æ¯è¯å¤ç 2610 //translate.nodeQueue[uuid]['list'][lang][hash]['beforeText'] = beforeText; 2611 //translate.nodeQueue[uuid]['list'][lang][hash]['afterText'] = afterText; 2612 //translate.nodeQueue[uuid]['list'][lang][hash]['attribute'] = attribute; //æ¾å ¥ nodes[index][attribute] å ç´ ä¸ 2613 2614 //å ¶ä¸keyï¼ nodes æ¯ç¬¬åç»´æ°ç»ï¼éé¢åæ¾å ·ä½çnodeå ç´ å¯¹è±¡ 2615 2616 2617 //console.log(translate.nodeQueue[uuid]['list'][lang][hash]); 2618 } 2619 2620 var isEquals = false; //queue䏿¯å¦å·²ç»å å ¥è¿è¿ä¸ªnodeäºï¼å½ç¶æ¯åä¸hashåä¸nodeæ åµï¼
2621 if(typeof(node.isSameNode) != 'undefined'){ //æ¯æ isSameNode æ¹æ³å¤æå¯¹è±¡æ¯å¦ç¸ç 2622 for(var node_index = 0; node_index < translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; node_index++){ 2623 if(node.isSameNode(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'])){ 2624 //ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº 2625 //console.log('ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº') 2626 isEquals = true; 2627 //console.log(node) 2628 continue; 2629 } 2630 } 2631 } 2632 if(isEquals){ 2633 //ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº 2634 continue; 2635 } 2636 2637 //å¾äºç»´æ°ç»nodesä¸è¿½å nodeå ç´ 2638 var nodesIndex = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; 2639 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex] = new Array(); 2640 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['node']=node; 2641 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['attribute']=attribute; 2642 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['beforeText'] = beforeText; 2643 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['afterText'] = afterText; 2644 2645 */ 2646 2647 //console.log('end:'+word_index) 2648 } 2649 2650 } 2651 2652 2653 2654 2655 }else{ 2656 //ç´æ¥ç¿»è¯æ´ä¸ªå ç´ å çå 容ï¼ä¸ååè¯ç§åç±»ï¼é¦å å é¤è±æï¼ç¶åå°åºç°æ¬¡æ°æå¤çè¯ç§ä½ä¸ºåæ¬è¯ç§ 2657 var lang = textRecognition.languageName; 2658 //console.log(lang+' - '+text); 2659 translate.addNodeQueueItem(uuid, node, text, attribute, lang, '', ''); 2660 } 2661 2662 2663 }, 2664 2665 /* 2666 2667 æå¡äºä¸é¢ç addNodeToQueue ï¼ç¨äºåºåä¸åtypeæ åµï¼è¿è¡è°ç¨æ¤å å ¥ translate.nodeQueue 2668 uuid, node, attribute è¿äºä¸ªåæ°è¯´æè§ addNodeToQueue çåæ°è¯´æï¼ç¸å 2669 2670 word è¦å®é è¿è¡ç¿»è¯çææ¬ï¼ä¹å°±æ¯è¦æå®æ¿æ¥è¿è¡éè¿åç«¯ç¿»è¯æ¥å£è¿è¡ç¿»è¯çææ¬ 2671 lang å½åè¦ç¿»è¯çææ¬çè¯ç§ï¼å¦ english 2672 beforeText åè§ translate.nodeQueue 注éä¸ç¬¬ä¸ç»´çè§£é 2673 afterText åè§ translate.nodeQueue 注éä¸ç¬¬ä¸ç»´çè§£é 2674 2675 */ 2676 addNodeQueueItem:function(uuid, node, word, attribute, lang, beforeText, afterText){ 2677 //å建äºç»´æ°ç»ï¼ key为è¯ç§ï¼å¦ english 2678 if(translate.nodeQueue[uuid]['list'][lang] == null || typeof(translate.nodeQueue[uuid]['list'][lang]) == 'undefined'){ 2679 translate.nodeQueue[uuid]['list'][lang] = new Array(); 2680 } 2681 //console.log(word) 2682 //var word = text; //è¦ç¿»è¯çææ¬ 2683 var hash = translate.util.hash(word); //è¦ç¿»è¯çææ¬çhash 2684 2685 //å建ä¸ç»´æ°ç»ï¼ key为è¦éè¿æ¥å£ç¿»è¯çææ¬è¯æå¥åç hash ãè¿éç¿»è¯çææ¬ä¹å°±æ¯æ´ä¸ªnodeå ç´ çå 容äºï¼ä¸ç¨å¨åæåäº 2686 if(translate.nodeQueue[uuid]['list'][lang][hash] == null || typeof(translate.nodeQueue[uuid]['list'][lang][hash]) == 'undefined'){ 2687 translate.nodeQueue[uuid]['list'][lang][hash] = new Array(); 2688 2689 /* 2690 * å建åç»´æ°ç»ï¼åæ¾å ·ä½æ°æ® 2691 * key: nodes å å«äºè¿ä¸ªhashçnodeå ç´ çæ°ç»éåï¼array å¤ä¸ªãå ¶ä¸ 2692 nodes[index]['node'] åæ¾å½åçnodeå ç´ 2693 nodes[index]['attribute'] åæ¾å½åhashï¼ä¹å°±æ¯ç¿»è¯ææ¬éå¯¹çæ¯ä»ä¹ï¼æ¯nodeæ¬èº«ï¼nodeValueï¼ï¼è¿æ¯ node çæä¸ªå±æ§ï¼æ¯å¦title屿§ã妿è¿éä¸ä¸ºç©ºï¼é£å°±æ¯é对ç屿§æä½ç 2694 * key: original åå§çè¦ç¿»è¯çè¯æå¥åï¼htmlå è½½å®æä½è¿æ²¡ç¿»è¯åçææ¬ï¼ç¨äºæ¯æå½å页é¢å¤æ¬¡è¯ç§ç¿»è¯åæ¢èæ é跳转 2695 * beforeTextãafterText:è§ translate.nodeQueue ç说æ 2696 */ 2697 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'] = new Array(); 2698 translate.nodeQueue[uuid]['list'][lang][hash]['original'] = word; 2699 //èªå®ä¹æ¯è¯å¤ç卿¤åé¢å·²ç»æ§è¡è¿äºï¼æä»¥è¿ä¸ªåºå¼ï¼ä¸éè¦å¤çèªå®ä¹æ¯è¯é¨åäº 2700 //translate.nodeQueue[uuid]['list'][lang][hash]['translateText'] = translate.nomenclature.dispose(word); 2701 translate.nodeQueue[uuid]['list'][lang][hash]['translateText'] = word; 2702 //console.log(word) 2703 2704 2705 2706 //å ¶ä¸keyï¼ nodes æ¯ç¬¬åç»´æ°ç»ï¼éé¢åæ¾å ·ä½çnodeå ç´ å¯¹è±¡ 2707 } 2708 2709 2710 var isEquals = false; //queue䏿¯å¦å·²ç»å å ¥è¿è¿ä¸ªnodeäºï¼å½ç¶æ¯åä¸hashåä¸nodeæ åµï¼
2711 if(typeof(node.isSameNode) != 'undefined'){ //æ¯æ isSameNode æ¹æ³å¤æå¯¹è±¡æ¯å¦ç¸ç 2712 for(var node_index = 0; node_index < translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; node_index++){ 2713 if(node.isSameNode(translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][node_index]['node'])){ 2714 //ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº 2715 //console.log('ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº') 2716 isEquals = true; 2717 //console.log(node) 2718 continue; 2719 } 2720 } 2721 } 2722 if(isEquals){ 2723 //ç¸åï¼é£å°±ä¸ç¨å¨åå ¥äº 2724 return; 2725 } 2726 2727 //å¾äºç»´æ°ç»nodesä¸è¿½å nodeå ç´ 2728 var nodesIndex = translate.nodeQueue[uuid]['list'][lang][hash]['nodes'].length; 2729 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex] = new Array(); 2730 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['node']=node; 2731 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['attribute']=attribute; 2732 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['beforeText'] = beforeText; 2733 translate.nodeQueue[uuid]['list'][lang][hash]['nodes'][nodesIndex]['afterText'] = afterText; 2734 2735 2736 }, 2737 2738 //å ¨é¨ç¿»è¯ï¼nodeå å®¹å ¨é¨ç¿»è¯ï¼è䏿¯è¿è¡è¯ç§æåï¼ç´æ¥å¯¹nodeæ¬èº«çå ¨é¨å 容æ¿åºæ¥è¿è¡ç´æ¥å ¨é¨ç¿»è¯ 2739 whole:{ 2740 isEnableAll:false, //æ¯å¦å¼å¯å¯¹æ´ä¸ªhtml页é¢çæ´ä½ç¿»è¯ï¼ä¹å°±æ¯æ´ä¸ªé¡µé¢ä¸ææåå¨çè½è¢«ç¿»è¯çå ¨é¨ä¼éç¨æ´ä½ç¿»è¯çæ¹å¼ãé»è®¤æ¯ falseä¸å¼å¯ 2741 2742 enableAll:function(){ 2743 translate.whole.isEnableAll = true; 2744 }, 2745 2746 /* 2747 ä¸ä¸ä¸ä¸ªï¼ä¹å°±æ¯ class tag id åå«åå¨å å ¥çå¼ã使ç¨åèï¼http://translate.zvo.cn/42563.html 2748 */ 2749 class:[], 2750 tag:[], 2751 id:[], 2752 2753 //è¿è¡æ¶åºç°èªæ£å¹¶å¨æµè§å¨æ§å¶å°æç¤ºæ§ææ¬ã 2754 //卿§è¡ç¿»è¯ï¼ä¹å°±æ¯ execute() æ¶ï¼ä¼è°ç¨æ¤æ¹æ³ã 2755 executeTip:function(){ 2756 if(translate.whole.class.length == 0 && translate.whole.tag.length == 0 && translate.whole.id.length == 0){ 2757 2758 }else{ 2759 console.log('æ¨å¼å¯äº translate.whole æ¤æ¬¡è¡ä¸ºé¿å¼äºæµè§å¨ç«¯çææ¬è¯ç§èªå¨è¯å«ï¼èæ¯æ´åçç´æ¥å¯¹æä¸ªå ç´ çæ´ä¸ªææ¬è¿è¡ç¿»è¯ï¼å¾å¯è½ä¼äº§çé常大çç¿»è¯éï¼è¯·è°¨æ ï¼æå ³æ¯æ¥ç¿»è¯å符ç说æï¼å¯åèï¼ http://translate.zvo.cn/42557.html '); 2760 } 2761 2762 if(translate.whole.tag.indexOf('html') > -1){ 2763 console.log('èªæ£åç°æ¨è®¾ç½®äº translate.whole.tag å ¶ä¸æ html ï¼è¿ä¸ªæ¯ä¸çæçï¼æå¤§åªå è®¸è®¾ç½®å° body '); 2764 } 2765 }, 2766 2767 //å½åå ç´ æ¯å±äºå ¨é¨ç¿»è¯å®ä¹çå ç´ 2768 /* 2769 ä¼ å ¥ä¸ä¸ªå ç´ ï¼å¤æè¿ä¸ªå ç´ æ¯å¦æ¯è¢«å å«çã è¿ä¸ªä¼æ¾ç¶ç±»ï¼ççç¶ç±»ä¸æ¯å¦å å«å¨å ¶ä¹ä¸ã 2770 return trueæ¯å¨å ¶ä¸ï¼falseä¸åå ¶ä¸ 2771 */ 2772 isWhole:function(ele){ 2773 2774 //å¦æè®¾ç½®äº class|tag|id å ¶ä¸æä¸ªï¼æè all=true ï¼é£ä¹å°±æ¯å¯ç¨ï¼å乿ªå¯ç¨ 2775 if((translate.whole.class.length == 0 && translate.whole.tag.length == 0 && translate.whole.id.length == 0) && translate.whole.isEnableAll == false){ 2776 //æªè®¾ç½®ï¼é£ä¹ç´æ¥è¿åfalse 2777 return false; 2778 } 2779 if(ele == null || typeof(ele) == 'undefined'){ 2780 return false; 2781 } 2782 if(translate.whole.isEnableAll){ 2783 return true; 2784 } 2785 2786 var parentNode = ele; 2787 var maxnumber = 100; //æå¤§å¾ªç¯æ¬¡æ°ï¼é¿å æ»å¾ªç¯ 2788 while(maxnumber-- > 0){ 2789 if(parentNode == null || typeof(parentNode) == 'undefined'){ 2790 //没æç¶å ç´ äº 2791 return false; 2792 } 2793 2794 //夿Tag 2795 //var tagName = parentNode.nodeName.toLowerCase(); //tagååï¼å°å 2796 var nodename = translate.element.getNodeName(parentNode).toLowerCase(); //tagååï¼å°å 2797 if(nodename.length > 0){ 2798 //ænodename 2799 if(nodename == 'html' || nodename == '#document'){ 2800 //ä¸å±å ç´ å·²ç»æ¯é¡¶çº§å ç´ äºï¼é£è¯å®å°±ä¸æ¯äº 2801 return false; 2802 } 2803 if(translate.whole.tag.indexOf(nodename) > -1){ 2804 //åç°ignore.tag å½åæ¯å¤äºè¢«å¿½ç¥ç tag 2805 return true; 2806 } 2807 } 2808 2809 2810 //夿class name 2811 if(parentNode.className != null){ 2812 var classNames = parentNode.className; 2813 if(classNames == null || typeof(classNames) != 'string'){ 2814 continue; 2815 } 2816 //console.log('className:'+typeof(classNames)); 2817 //console.log(classNames); 2818 classNames = classNames.trim().split(' '); 2819 for(var c_index = 0; c_index < classNames.length; c_index++){ 2820 if(classNames[c_index] != null && classNames[c_index].trim().length > 0){ 2821 //ææçclass nameï¼è¿è¡å¤æ 2822 if(translate.whole.class.indexOf(classNames[c_index]) > -1){ 2823 //åç°ignore.class å½åæ¯å¤äºè¢«å¿½ç¥ç class 2824 return true; 2825 } 2826 } 2827 } 2828 } 2829 2830 //夿id 2831 if(parentNode.id != null && typeof(parentNode.id) != 'undefined'){ 2832 //ææçclass nameï¼è¿è¡å¤æ 2833 if(translate.whole.id.indexOf(parentNode.id) > -1){ 2834 //åç°ignore.id å½åæ¯å¤äºè¢«å¿½ç¥ç id 2835 return true; 2836 } 2837 } 2838 2839 //èµäºå¤æçå ç´ åä¸ä¸çº§ 2840 parentNode = parentNode.parentNode; 2841 } 2842 2843 return false; 2844 } 2845 }, 2846 2847 language:{ 2848 /* 2849 è±è¯çåç§è¯ç§ï¼ä¹å°±æ¯å¨è±è¯26ä¸ªåæ¯çåºç¡ä¸å äºç¹å«çç¹æ®åæ¯å¦æçä¸ç§è¯è¨ï¼èè¿äºè¯è¨æ¯æ²¡æ³ç´æ¥éè¿è¯å«å符æ¥å¤æåºæ¯åªç§è¯ç§ç 2850 v3.4.2 å¢å 2851 å½åå åªå ä¸: 2852 æ³è¯ãæå¤§å©è¯ãå¾·è¯ 2853 */ 2854 englishVarietys : ['french','italian','deutsch'], 2855 2856 //å½åæ¬å°è¯ç§ï¼æ¬å°è¯è¨ï¼é»è®¤æ¯ç®ä½ä¸æãè®¾ç½®è¯·ä½¿ç¨ translate.language.setLocal(...)ãä¸å¯ç´æ¥ä½¿ç¨ï¼ä½¿ç¨éç¨ getLocal() 2857 local:'', 2858 2859 /* 2860 * v3.12å¢å , æ¯å¦ä¼ç¿»è¯æ¬å°è¯ç§ï¼é»è®¤æ¯falseï¼ä¸ä¼ç¿»è¯ã 2861 * æ¯å¦å½åè®¾ç½®çæ¬å°è¯ç§æ¯ç®ä½ä¸æï¼ 使¯ç½é¡µä¸ä¹æä¸æ®µè±æï¼ å¦æè®¾ç½®äºtranslate.to ä¸ºä¸æï¼ä¹å°±æ¯è¦ä»¥ä¸ææ¾ç¤º é»è®¤æ¯falseçæ åµä¸ï¼æ´ä¸ªé¡µé¢æ¯ä¸ä¼è¢«ä»»ä½ç¿»è¯çï¼ä¹å°±æ¯æç飿®µè±æä¹ä¸ä¼è¿è¡ä»»ä½ç¿»è¯ï¼ä¾æ§æ¯æ¾ç¤ºè±æã
2862 * 妿è¿é设置为 trueï¼ åè±æä¹ä¼è¢«ç¿»è¯ï¼åªè¦ä¸æ¯ä¸æçï¼é½ä¼è¢«ç¿»è¯ä¸ºè¦æ¾ç¤ºçè¯ç§ï¼ä¹å°±æ¯é½ä¼è¢«ç¿»è¯ä¸ºä¸æã 2863 */ 2864 translateLocal:false, 2865 2866 /* 2867 ç¿»è¯è¯ç§èå´ 2868 æ¯å¦ä¼ å ¥ ['chinese_simplified','chinese_traditional','english'] åè¡¨ç¤ºä» å¯¹ç½é¡µä¸çç®ä½ä¸æãç¹ä½ä¸æãè±æ è¿è¡ç¿»è¯ï¼èç½é¡µä¸åºç°çå ¶ä»ç忝æ³è¯ãé©è¯åä¸ä¼è¿è¡ç¿»è¯ 2869 å¦æä¸ºç©º []ï¼åæ¯ç¿»è¯æ¶ï¼ç¿»è¯ç½é¡µä¸çææè¯ç§ 2870 设置æ¹å¼ä¸ºï¼ translate.language.translateLanguagesRange = ['chinese_simplified','chinese_traditional'] 2871 */ 2872 translateLanguagesRange: [], 2873 //ä¼ å ¥è¯ç§ãå ·ä½å¯ä¼ å ¥åªäºåèï¼ http://api.translate.zvo.cn/doc/language.json.html 2874 setLocal:function(languageName){ 2875 //translate.setUseVersion2(); //Set to use v2.x version 2876 translate.useVersion = 'v2'; 2877 translate.language.local = languageName; 2878 }, 2879 //è·åå½åæ¬å°è¯ç§ï¼æ¬å°è¯è¨ï¼é»è®¤æ¯ç®ä½ä¸æãè®¾ç½®è¯·ä½¿ç¨ translate.language.setLocal(...) 2880 getLocal:function(){ 2881 //夿æ¯å¦è®¾ç½®äºæ¬å°è¯ç§ï¼å¦ææ²¡è®¾ç½®ï¼èªå¨ç»å ¶è®¾ç½® 2882 if(translate.language.local == null || translate.language.local.length < 1){ 2883 translate.language.autoRecognitionLocalLanguage(); 2884 } 2885 return translate.language.local; 2886 }, 2887 /* 2888 è·åå½åè¯ç§ã 2889 æ¯å¦å½åè®¾ç½®çæ¬å°è¯ç§æ¯ç®ä½ä¸æï¼ç¨æ·å¹¶æªåæ¢å ¶ä»è¯ç§ï¼é£ä¹è¿ä¸ªæ¹æ³å°è¿åæ¬å°å½åçè¯ç§ï¼ä¹å°±æ¯çåäº translate.language.getLocal() 2890 å¦æç¨æ·åæ¢ä¸ºè±è¯è¿è¡æµè§ï¼é£ä¹è¿ä¸ªæ¹æ³å°è¿åç¿»è¯çç®æ è¯ç§ï¼ä¹å°±æ¯ english 2891 */ 2892 getCurrent:function(){ 2893 var to_storage = translate.storage.get('to'); 2894 if(to_storage != null && typeof(to_storage) != 'undefined' && to_storage.length > 0){ 2895 //ä¹åæè¿ä½¿ç¨ï¼å¹¶ä¸ä¸»å¨è®¾ç½®è¿ç®æ è¯ç§ 2896 return to_storage; 2897 } 2898 return translate.language.getLocal(); 2899 }, 2900 //å¦æç¬¬ä¸æ¬¡ç¨ï¼é»è®¤ä»¥ä»ä¹è¯ç§æ¾ç¤ºã 2901 //æ¯å¦æ¬å°å½åè¯ç§æ¯ç®ä½ä¸æï¼è¿é设置为englishï¼é£ä¹ç¨æ·ç¬¬ä¸æ¬¡ä½¿ç¨æ¶ï¼ä¼èªå¨ç¿»è¯ä¸ºenglishè¿è¡æ¾ç¤ºãå¦æç¨æ·æå¨åæ¢ä¸ºå ¶ä»è¯ç§æ¯å¦é©è¯ï¼é£ä¹å°±éµå¾ªç¨æ·æå¨åæ¢çä¸ºä¸»ï¼æ¾ç¤ºé©è¯ã 2902 setDefaultTo:function(languageName){ 2903 var to_storage = translate.storage.get('to'); 2904 if(to_storage != null && typeof(to_storage) != 'undefined' && to_storage.length > 0){ 2905 //ä¹åæè¿ä½¿ç¨ï¼å¹¶ä¸ä¸»å¨è®¾ç½®è¿ç®æ è¯ç§ï¼é£ä¹ä¸è¿è¡å¤ç 2906 }else{ 2907 //没æè®¾ç½®è¿ï¼è¿è¡å¤ç 2908 translate.storage.set('to', languageName); 2909 translate.to = languageName; 2910 } 2911 }, 2912 /* 2913 æ¸ é¤åå²ç¿»è¯è¯ç§çç¼å 2914 */ 2915 clearCacheLanguage:function(){ 2916 translate.to = ''; 2917 translate.storage.set('to',''); 2918 }, 2919 //æ ¹æ®URLä¼ åæ§å¶ä»¥ä½ç§è¯ç§æ¾ç¤º 2920 //设置å¯ä»¥æ ¹æ®å½å访é®urlçæä¸ªgetåæ°æ¥æ§å¶ä½¿ç¨åªç§è¯è¨æ¾ç¤ºã 2921 //æ¯å¦å½åè¯ç§æ¯ç®ä½ä¸æï¼ç½é¡µurlæ¯http://translate.zvo.cn/index.html ,é£ä¹å¯ä»¥éè¿å¨urlåé¢å¢å language åæ°æå®ç¿»è¯è¯ç§ï¼æ¥ä½¿ç½é¡µå å®¹ä»¥è±æå½¢ææ¾ç¤º http://translate.zvo.cn/index.html?language=english 2922 setUrlParamControl:function(paramName){ 2923 if(typeof(paramName) == 'undefined' || paramName.length < 1){ 2924 paramName = 'language'; 2925 } 2926 var paramValue = translate.util.getUrlParam(paramName); 2927 if(typeof(paramValue) == 'undefined'){ 2928 return; 2929 } 2930 if(paramValue == '' || paramValue == 'null' || paramValue == 'undefined'){ 2931 return; 2932 } 2933 2934 translate.storage.set('to', paramValue); 2935 translate.to = paramValue; 2936 }, 2937 //èªå¨è¯å«å½å页颿¯ä»ä¹è¯ç§ 2938 autoRecognitionLocalLanguage:function(){ 2939 if(translate.language.local != null && translate.language.local.length > 2){ 2940 //已设置è¿äºï¼ä¸éè¦å设置 2941 return; 2942 } 2943 2944 var bodyText = document.body.outerText; 2945 if(bodyText == null || typeof(bodyText) == 'undefined' || bodyText.length < 1){ 2946 //æªåå°ï¼é»è®¤èµäºç®ä½ä¸æ 2947 translate.language.local = 'chinese_simplified'; 2948 return; 2949 } 2950 2951 bodyText = bodyText.replace(/\n|\t|\r/g,''); //å°å车æ¢è¡ç廿 2952 2953 //é»è®¤èµäºç®ä½ä¸æ 2954 translate.language.local = 'chinese_simplified'; 2955 var recognition = translate.language.recognition(bodyText); 2956 translate.language.local = recognition.languageName; 2957 return translate.language.local; 2958 /* v3.1ä¼å 2959 var langs = new Array(); //ä¸ä¸ä¸ªå符çè¯ç§æ¯ä»ä¹ï¼å½åå符å䏿°ç¬¬ä¸ä¸ªåç¬¦ãæ ¼å¼å¦ ['language']='english', ['chatstr']='a', ['storage_language']='english' è¿é颿3ä¸ªåæ°ï¼åå«ä»£è¡¨è¿ä¸ªå符å±äºé£ä¸ªè¯ç§ï¼å ¶å符æ¯ä»ä¹ãåå ¥äºåªç§è¯ç§çéåãå ä¸ºåæ¯éå·ï¼å¥å·ï¼ä¸è¬æ¯åå ¥æ¬èº«è¯ç§ä¸ï¼è䏿¯åå ¥ç¹æ®ç¬¦å·ä¸ã 2960 for(var i=0; i<bodyText.length; i++){ 2961 var charstr = bodyText.charAt(i); 2962 var lang = translate.language.getCharLanguage(charstr); 2963 if(lang == ''){ 2964 //æªè·åå°ï¼æªåç°æ¯ä»ä¹è¯è¨ 2965 //continue; 2966 lang = 'unidentification'; 2967 } 2968 langs.push(lang); 2969 } 2970 2971 //仿°ç»ä¸ååºç°é¢çæé«ç 2972 var newLangs = translate.util.arrayFindMaxNumber(langs); 2973 2974 //ç§»é¤æ°ç»ä¸çç¹æ®å符
2975 var index = newLangs.indexOf('specialCharacter'); 2976 if(index > -1){ 2977 newLangs.splice(index,1); //ç§»é¤æ°ç»ä¸çç¹æ®å符 2978 } 2979 2980 if(newLangs.length > 0){ 2981 //æ¾å°æåºåºç°é¢çæå¤ç 2982 translate.language.local = newLangs[0]; 2983 }else{ 2984 //没æï¼é»è®¤èµäºç®ä½ä¸æ 2985 translate.language.local = 'chinese_simplified'; 2986 } 2987 */ 2988 }, 2989 2990 /* 2991 * è·åå½åå符æ¯ä»ä¹è¯ç§ãè¿å弿¯ä¸ä¸ªè¯è¨æ è¯ï¼æ chinese_simplifiedç®ä½ä¸æãjapaneseæ¥è¯ãkoreané©è¯ã 2992 * str : node.nodeValue æ å¾çç node.alt ç 2993 * 妿è¯å¥é¿ï¼ä¼å ¨å¥ç¿»è¯ï¼ä»¥ä¿è¯ç¿»è¯çåç¡®æ§ï¼æé«å¯è¯»æ§ã 2994 * 妿è¯å¥çï¼ä¼èªå¨å°ç¹æ®å符ãè¦ç¿»è¯çç®æ è¯ç§ç»è¿æ»¤æï¼åªååºå ·ä½çè¦ç¿»è¯çç®æ è¯ç§ææ¬ 2995 * 2996 * è¿å åæ¾ä¸åè¯è¨çæ°ç»ï¼æ ¼å¼å¦ 2997 * [ 2998 "english":[ 2999 {beforeText: '', afterText: '', text: 'emoambue hag'}, 3000 ...... 3001 ], 3002 "japanese":[ 3003 {beforeText: ' ', afterText: ' ', text: 'ẽ '}, 3004 ...... 3005 ] 3006 ] 3007 * 3008 */ 3009 get:function(str){ 3010 //å°stræå为å个charè¿è¡å¤æ 3011 3012 var langs = new Array(); //å½åå符串å å«åªäºè¯è¨çæ°ç»ï¼å ¶å å¦ english 3013 var langStrs = new Array(); //åæ¾ä¸åè¯è¨çææ¬ï¼æ ¼å¼å¦ ['english'][0] = 'hello' 3014 var upLangs = []; //ä¸ä¸ä¸ªå符çè¯ç§æ¯ä»ä¹ï¼å½åå符å䏿°ç¬¬ä¸ä¸ªåç¬¦ãæ ¼å¼å¦ ['language']='english', ['chatstr']='a', ['storage_language']='english' è¿é颿3ä¸ªåæ°ï¼åå«ä»£è¡¨è¿ä¸ªå符å±äºé£ä¸ªè¯ç§ï¼å ¶å符æ¯ä»ä¹ãåå ¥äºåªç§è¯ç§çéåãå ä¸ºåæ¯éå·ï¼å¥å·ï¼ä¸è¬æ¯åå ¥æ¬èº«è¯ç§ä¸ï¼è䏿¯åå ¥ç¹æ®ç¬¦å·ä¸ã 3015 var upLangsTwo = []; //ä¸äºä¸ªå符çè¯ç§æ¯ä»ä¹ ï¼å½åå符å䏿°ç¬¬äºä¸ªåç¬¦ã æ ¼å¼å¦ ['language']='english', ['chatstr']='a', ['storage_language']='english' è¿é颿3ä¸ªåæ°ï¼åå«ä»£è¡¨è¿ä¸ªå符å±äºé£ä¸ªè¯ç§ï¼å ¶å符æ¯ä»ä¹ãåå ¥äºåªç§è¯ç§çéåãå ä¸ºåæ¯éå·ï¼å¥å·ï¼ä¸è¬æ¯åå ¥æ¬èº«è¯ç§ä¸ï¼è䏿¯åå ¥ç¹æ®ç¬¦å·ä¸ã 3016 3017 //var upLangs = ''; //ä¸ä¸ä¸ªå符çè¯ç§æ¯ä»ä¹ï¼æ ¼å¼å¦ english 3018 for(var i=0; i<str.length; i++){ 3019 var charstr = str.charAt(i); 3020 //console.log('charstr:'+charstr) 3021 var lang = translate.language.getCharLanguage(charstr); 3022 if(lang == ''){ 3023 //æªè·åå°ï¼æªåç°æ¯ä»ä¹è¯è¨ 3024 //continue; 3025 lang = 'unidentification'; 3026 } 3027 var result = translate.language.analyse(lang, langStrs, upLangs, upLangsTwo, charstr); 3028 //console.log(result) 3029 langStrs = result['langStrs']; 3030 //è®°å½ä¸å 个å符 3031 if(typeof(upLangs['language']) != 'undefined'){ 3032 upLangsTwo['language'] = upLangs['language']; 3033 upLangsTwo['charstr'] = upLangs['charstr']; 3034 upLangsTwo['storage_language'] = upLangs['storage_language']; 3035 } 3036 //upLangs['language'] = lang; 3037 upLangs['language'] = result['storage_language']; 3038 upLangs['charstr'] = charstr; 3039 upLangs['storage_language'] = result['storage_language']; 3040 //console.log(result['storage_language']) 3041 //console.log(upLangs['language']); 3042 langs.push(lang); 3043 } 3044 3045 //console.log(langStrs); 3046 3047 //console.log(langs); 3048 //console.log(langStrs); 3049 3050/* 3051 //仿°ç»ä¸ååºç°é¢çæé«ç 3052 var newLangs = translate.util.arrayFindMaxNumber(langs); 3053 3054 //ç§»é¤å½åç¿»è¯ç®æ çè¯è¨ãå ä¸ºå·²ç»æ¯ç®æ é¢è¨äºï¼ä¸éè¦ç¿»è¯äº 3055 var index = newLangs.indexOf(translate.to); 3056 if(index > -1){ 3057 newLangs.splice(index,1); //ç§»é¤ 3058 } 3059 3060 //ç§»é¤ç¹æ®å符 3061 var index = newLangs.indexOf('specialCharacter'); 3062 if(index > -1){ 3063 newLangs.splice(index,1); //ç§»é¤æ°ç»ä¸çç¹æ®å符 3064 } 3065 3066 if(newLangs.length > 0){ 3067 //è¿å©ä¸ä¸ªæå¤ä¸ªï¼ï¼å¦ææ¯å¤ä¸ªï¼é£åºè¯¥æ¯è¿å 个åºç°çé¢ç䏿 ·ï¼æä»¥åé¢çæé«çæ¶è¿åäºå¤ä¸ªï¼ 3068 return newLangs[0]; 3069 }else{ 3070 //没æ¾å°ï¼ç´æ¥è¿å空å符串 3071 return ''; 3072 } 3073 */ 3074 3075 3076 //å»é¤ç¹æ®ç¬¦å· 3077 //for(var i = 0; i<langStrs.length; i++){ 3078 /* 3079 var i = 0; 3080 for(var item in langStrs) { 3081 if(item == 'unidentification' || item == 'specialCharacter'){ 3082 //langStrs.splice(i,1); //ç§»é¤ 3083 delete langStrs[item]; 3084 } 3085 console.log(item); 3086 i++; 3087 } 3088 */ 3089 3090 //console.log(langStrs); 3091 if(typeof(langStrs['unidentification']) != 'undefined'){ 3092 delete langStrs['unidentification']; 3093 } 3094 if(typeof(langStrs['specialCharacter']) != 'undefined'){ 3095 delete langStrs['specialCharacter']; 3096 } 3097 if(typeof(langStrs['number']) != 'undefined'){ 3098 delete langStrs['number']; 3099 } 3100 3101 3102 //console.log('get end'); 3103 return langStrs; 3104 }, 3105 3106 /* 3107 * è¯å«å符串æ¯ä»ä¹è¯ç§ã宿¯ get() çæ©å±ï¼ä»¥ä»£æ¿getè¿åæ´å¤ 3108 * str : è¦è¯å«çå符串 3109 * 3110 * è¿å åæ¾ä¸åè¯è¨çæ°ç»ï¼æ ¼å¼å¦ 3111 * 3112 { 3113 languageName: 'english', 3114 languageArray:[ 3115 "english":[ 3116 {beforeText: '', afterText: '', text: 'emoambue hag'}, 3117 ...... 3118 ], 3119 "japanese":[ 3120 {beforeText: ' ', afterText: ' ', text: 'ẽ '}, 3121 ...... 3122 ] 3123 ] 3124 } 3125 languageName æ¯å½åå符串æ¯ä»ä¹è¯ç§ãå®çè¯å«æä»¥ä¸ç¹ç¹
3125ï¼ 3126 1. 妿åºç°è±è¯è·ä¸æãæ³è¯ãå¾·è¯çæ··åçæ åµï¼ä¹å°±æ¯ä¸çº¯ç²¹è±è¯çæ åµï¼é£ä¹ä¼ä»¥å ¶ä»è¯ç§ä¸ºåï¼è䏿¯è¯å«ä¸ºè±è¯ãä¸è®ºè±è¯å符åºç°çæ¯ä¾å å¤å°ã 3127 2. 妿åºç°ç®ä½ä¸æè·ç¹ä½ä¸ææ··åçæ åµï¼é£ä¹è¯å«ä¸ºç¹ä½ä¸æãä¸è®ºç®ä½ä¸æå符åºç°çæ¯ä¾å å¤å°ã 3128 3. é¤äºä»¥ä¸ä¸¤ç§è§åå¤ï¼å¦æåºç°äºå¤ä¸ªè¯ç§ï¼é£ä¹ä¼è¯å«ä¸ºåºç°å符æ°éæå¤çè¯ç§å½åå½åå¥åçè¯ç§ãï¼æ³¨ææ¯å符æ°ï¼è䏿¯è¯ç§çæ°ç»æ°ï¼ 3129 languageArray å¯¹ä¼ å ¥å符串è¿è¡åæï¼è¯å«åºé½æåªäºè¯ç§ï¼æ¯ä¸ªè¯ç§çå符æ¯ä»ä¹ 3130 * 3131 */ 3132 recognition:function(str){ 3133 var langs = translate.language.get(str); 3134 //var langkeys = Object.keys(langs); 3135 //console.log(langkeys); 3136 var langsNumber = []; //key è¯è¨åï¼ value è¯è¨åç¬¦æ° 3137 var langsNumberOriginal = []; //åä¸ï¼åªä¸è¿è¿ä¸ªä¸ä¼è¿è¡æ¸ 空åç¬¦æ° 3138 var allNumber = 0;//æ»åæ° 3139 for(var key in langs){ 3140 if(typeof(langs[key]) != 'object'){ 3141 continue; 3142 } 3143 var langStrLength = 0; 3144 for(var ls = 0; ls < langs[key].length; ls++){ 3145 langStrLength = langStrLength + langs[key][ls].text.length; 3146 } 3147 allNumber = allNumber + langStrLength; 3148 langsNumber[key] = langStrLength; 3149 langsNumberOriginal[key] = langStrLength; 3150 } 3151 3152 //è¿æ»¤ è¯ç§çå符æ°å°äºæ»åç¬¦æ° ç¾åä¹äºçï¼ä½äºè¿ä¸ªæ°ï¼å°å¿½ç¥ 3153 var langkeys = []; 3154 for(var lang in langsNumber){ 3155 if(langsNumber[lang]/allNumber > 0.05){ 3156 langkeys[langkeys.length] = lang+''; 3157 } 3158 } 3159 3160 3161 if(langkeys.length > 1 && langkeys.indexOf('english') > -1){ 3162 //console.log('åºç°äºenglish, å¹¶ä¸englishè·å ¶ä»è¯ç§ä¸èµ·åºç°ï¼é£ä¹å é¤englishï¼å 为ä»ä¹æ³è¯å¾·è¯ä¹±ä¸å «ç³ç齿è±è¯ãèä¸ä¸æè·è±æä¸èµ·ï¼å¦æè®¤ä¸ºæ¯è±æçè¯ï¼ææ¶å䏿ä¼ä¸è¢«ç¿»è¯'); 3163 //langkeys.splice(langkeys.indexOf('english'), 1); 3164 langsNumber['english'] = 0; 3165 } 3166 3167 if(langkeys.indexOf('chinese_simplified') > -1 && langkeys.indexOf('chinese_traditional') > -1){ 3168 //妿ç®ä½ä¸æè·ç¹ä½ä¸æä¸èµ·åºç°ï¼é£ä¹ä¼å¤æå½åå¥å为ç¹ä½ä¸æã 3169 //langkeys.splice(langkeys.indexOf('chinese_simplified'), 1); 3170 langsNumber['chinese_simplified'] = 0; 3171 } 3172 3173 3174 //ä» langsNumber 䏿¾åºåæ°æå¤çæ¥ 3175 var maxLang = ''; //åæ°æå¤çè¯ç§ 3176 var maxNumber = 0; 3177 for(var lang in langsNumber){ 3178 if(langsNumber[lang] > maxNumber){ 3179 maxLang = lang; 3180 maxNumber = langsNumber[lang]; 3181 } 3182 } 3183 3184 //éæ°ç»åè¿åå¼ç languageArray 3185 var languageArray = {}; 3186 for(var lang in langs){ 3187 languageArray[lang] = {}; 3188 languageArray[lang].number = langsNumberOriginal[lang]; 3189 languageArray[lang].list = langs[lang]; 3190 } 3191 3192 var result = { 3193 languageName: maxLang, 3194 languageArray: languageArray 3195 }; 3196 3197 //v3.4.2 å¢å ï¼å¢å 对æ³è¯çè±æåç§çå°è¯ç§çè¯å« 3198 if(result.languageName == 'english'){ 3199 //妿è¯å«çè¯ç§æ¯è±è¯ï¼é£ä¾¿ä¸ä» ä» æ¯è±è¯ï¼å 为æ³è¯ãå¾·è¯ãæå¤§å©è¯ä¹æ¯å¨è±è¯éé¢ï¼è¿è¦å¤æä¸ä¸æ¯å¦ç¨æ·èªå·±è®¾ç½®äºå ·ä½è¯ç§æ¯å¦æ¯è±è¯å»¶ä¼¸çå°è¯ç§ 3200 3201 var localLang = translate.language.getLocal(); //æ¬å°è¯ç§ 3202 if(translate.language.englishVarietys.indexOf(localLang) > -1){ 3203 //åç°å½åè®¾ç½®çæ¯å°è¯ç§ï¼é£ä¹å°å½åè¯å«çè¯ç§è¯å«ä¸º æ¬å°è®¾ç½®çè¿ä¸ªå°è¯ç§ã 3204 result.languageName = localLang; 3205 } 3206 } 3207 3208 return result; 3209 }, 3210 // ä¼ å ¥ä¸ä¸ªcharï¼è¿åè¿ä¸ªcharå±äºä»ä¹è¯ç§ï¼è¿åå¦ chinese_simplifiedãenglish 妿è¿å空å符串ï¼é£ä¹è¡¨ç¤ºæªè·åå°æ¯ä»ä¹è¯ç§ 3211 getCharLanguage:function(charstr){ 3212 if(charstr == null || typeof(charstr) == 'undefined'){ 3213 return ''; 3214 } 3215 3216 if(this.russian(charstr)){ 3217 return 'russian'; 3218 } 3219 if(this.english(charstr)){ 3220 return 'english'; 3221 } 3222 if(this.specialCharacter(charstr)){ 3223 return 'specialCharacter'; 3224 } 3225 if(this.number(charstr)){ 3226 return 'number'; 3227 } 3228 3229 //䏿ç夿å å«ä¸¤ç§ï¼ç®ä½è·ç¹ä½ 3230 var chinesetype = this.chinese(charstr); 3231 if(chinesetype == 'simplified'){ 3232 return 'chinese_simplified'; 3233 }else if(chinesetype == 'traditional'){ 3234 return 'chinese_traditional'; 3235 } 3236 3237 if(this.japanese(charstr)){ 3238 return 'japanese'; 3239 } 3240 if(this.korean(charstr)){ 3241 return 'korean'; 3242 } 3243 3244 //æªè¯å«æ¯ä»ä¹è¯ç§ 3245 //console.log('not find is language , char : '+charstr+', unicode: '+charstr.charCodeAt(0).toString(16)); 3246 return ''; 3247 3248 }, 3249 /* 3250 * 对å符串è¿è¡åæï¼åæåç¬¦ä¸²æ¯æåªå ç§è¯è¨ç»æã 3251 * language : å½åå符çè¯ç§ï¼ä¼ å ¥å¦ english 3252 * langStrs : æä½çï¼å¦ langStrs['english'][0] = 'ä½ å¥½' 3253 * upLangs : å½åå符ä¹åçä¸ä¸ä¸ªå符çè¯ç§æ¯ä»ä¹ï¼å½åå符å䏿°ç¬¬ä¸ä¸ªåç¬¦ãæ ¼å¼å¦ ['language']='english', ['chatstr']='a', ['storage_language']='english' è¿é颿3ä¸ªåæ°ï¼åå«ä»£è¡¨è¿ä¸ªå符å±äºé£ä¸ªè¯ç§ï¼å ¶å符æ¯ä»ä¹ãåå ¥äºåªç§è¯ç§çéåãå ä¸ºåæ¯éå·ï¼å¥å·ï¼ä¸è¬æ¯åå ¥æ¬èº«è¯ç§ä¸ï¼è䏿¯åå ¥ç¹æ®ç¬¦å·ä¸ã 3254 * upLangsTwo : å½åå符ä¹åçä¸äºä¸ªå符çè¯ç§æ¯ä»ä¹ ï¼å½åå符å䏿°ç¬¬äºä¸ªåç¬¦ã æ ¼å¼å¦ ['language']='english', ['chatstr']='a', ['storage_language']='english' è¿é颿3ä¸ªåæ°ï¼åå«ä»£è¡¨è¿ä¸ªå符å±äºé£ä¸ªè¯ç§ï¼å ¶å符æ¯ä»ä¹ãåå ¥äºåªç§è¯ç§çéåãå ä¸ºåæ¯éå·ï¼å¥å·ï¼ä¸è¬æ¯åå ¥æ¬èº«è¯ç§ä¸ï¼è䏿¯åå ¥ç¹æ®ç¬¦å·ä¸ã 3255 * chatstr : å½åå符ï¼å¦ h 3256 */ 3257 analyse:function(language, langStrs, upLangs, upLangsTwo, charstr){ 3258 if(typeof(langStrs[language]) == 'undefined'){ 3259 langStrs[language] = new Array(); 3260 } 3261 var index = 0; //å½åè¦åå ¥çæ°ç»ä¸æ 3262 if(typeof(upLangs['storage_language']) == 'undefined'){ 3263 //ç¬¬ä¸æ¬¡ï¼é£ä¹è¿æ²¡åå ¥å¼ï¼indexè¯å®ä¸º0 3264 //console.log('ç¬¬ä¸æ¬¡ï¼é£ä¹è¿æ²¡åå ¥å¼ï¼indexè¯å®ä¸º0') 3265 //console.log(upLangs['language']) 3266 }else{ 3267 //console.log('analyse, charstr : '+charstr+', upLangs :'); 3268 //console.log(upLangs); 3269 //var isEqual = upLangs['storage_language'] == language; //䏿¬¡è·å½åå符æ¯å¦é½æ¯åä¸ä¸ªè¯ç§ï¼è¿ä¸ªå符è·è¿ä¸ªå符åä¸ä¸ªåç¬¦ï¼ 3270 3271 /* 3272 è±è¯æ¯ä¸ªåè¯ä¹é´é½ä¼æç©ºæ ¼åå². 妿æ¯è±æçè¯ï¼è±æè·ç¹æ®å符è¿è¦åç¬å¤æä¸ä¸ï¼é¿å æå¼ï¼é æç¿»è¯ä¸åï¼å个åè¯ç¿»è¯çæ åµ
3273 æä»¥å¦æä¸æ¬¡çå符æ¯è±ææç¹æ®ç¬¦å·ï¼å½åå符æ¯ç¹æ®ç¬¦å·(éå·ãå¥å·ãç©ºæ ¼ï¼ç¶åç´æ¥ç¬¼ç»å°±å§ç¹æ®ç¬¦å·é½ç®ä¸å§)ï¼é£ä¹ä¹å°å½æ¬¡çç¹æ®ç¬¦å·åä¸ºè±ææ¥è¿è¡éé 3274 ç¤ºä¾ 3275 hello word ç "o w" 3276 hello word ç " w" 3277 hello word ç "w " 3278 this is a dog ç " a " 3279 */ 3280 //console.log(language == 'specialCharacter'); 3281 //å¦æä¸¤ä¸ªå符类åä¸ä¸è´ï¼ä½å½åå符æ¯è±ææè¿æ¥ç¬¦æ¶ï¼è¿è¡å¤æ 3282 /* 3283 if(!isEqual){ 3284 if(language == 'english' || translate.language.connector(charstr)){ 3285 console.log('1.'+(language == 'english' || translate.language.connector(charstr))+', upLangs str:'+upLangs['charstr']); 3286 //ä¸ä¸ä¸ªå符æ¯è±ææè¿æ¥ç¬¦ 3287 //console.log('teshu:'+translate.language.connector(upLangs['charstr'])+', str:'+upLangs['charstr']); 3288 if(upLangs['language'] == 'english' || translate.language.connector(upLangs['charstr'])) { 3289 console.log('2'); 3290 //妿ä¸äºä¸ªå符ä¸åå¨ï¼é£ä¹åå¼å§ï¼ä¸åä¸é¢å ç§æ åµä¹ä¸ï¼ç´æ¥ä¸ç¨èè 3291 if(typeof(upLangsTwo['language']) != 'undefined'){ 3292 console.log('3') 3293 //ä¸äºä¸ªå符æ¯ç©ºï¼å符串åå¼å§ï¼ï¼æè æ¯è±æ 3294 if(upLangsTwo['language'] == 'english' || translate.language.connector(upLangsTwo['charstr'])){ 3295 //满足è¿ä¸ä¸ªæ¡ä»¶ï¼é£å°±å°è¿ä¸ä¸ªæ¼æ¥å°ä¸èµ· 3296 console.log('4/5: '+', two lang:'+upLangsTwo['language']+', str:'+upLangsTwo['charstr']) 3297 isEqual = true; 3298 if(language == 'specialCharacter' && upLangs['language'] == 'specialCharacter' && upLangsTwo['language'] == 'specialCharacter'){ 3299 //妿ä¸ä¸ªé½æ¯ç¹æ®åç¬¦ï¼æå两个æ¯ç¹æ®å符ï¼ç¬¬ä¸ä¸ªæ¯ç©ºï¼åå¼å§ï¼ï¼é£å°±å½å ¥ç¹æ®å符 3300 language = 'specialCharacter'; 3301 //console.log('4') 3302 }else{ 3303 //ä¸ç¶å°±é½å½äºè±æä¸ã 3304 //è¿éæ´æ¹æ¯ä¸ºäºè®©ä¸é¢è½å°ç¹æ®å符ï¼åæ¯ç©ºæ ¼éå·çï¼ä¹ä¸èµ·åå ¥æ°ç» 3305 language = 'english'; 3306 console.log(5) 3307 } 3308 } 3309 } 3310 } 3311 } 3312 } 3313 */ 3314 3315 /* 3316 ä¸å¤æå½åå符ï¼è夿ä¸ä¸ªåç¬¦ï¼æ¯å 为å½åå符没æ³è·åæªç¥çä¸ä¸ªå符ã 3317 */ 3318 //if(!isEqual){ 3319 3320 //妿å½åå符æ¯è¿æ¥ç¬¦ 3321 if(translate.language.connector(charstr)){ 3322 language = upLangs['storage_language']; 3323 /* 3324 //夿ä¸ä¸ªå符æ¯å¦åå ¥äºå¾ ç¿»è¯å符ï¼å¦è¦å°ä¸æç¿»è¯ä¸ºè±æï¼èä¸ä¸ªå符æ¯ä¸æï¼å¾ ç¿»è¯ï¼é£å°è¿æ¥ç¬¦ä¸å¹¶å å ¥å¾ ç¿»è¯å符ä¸å»ï¼ä¿æå¥å宿´æ§ 3325 //夿便®æ¯ä¸ä¸ªå符åå¨è³çç¿»è¯å符è¯ç§åºåï¼ä¸æ¯ç¹æ®å符ï¼èä¸ä¹ä¸æ¯è¦ç¿»è¯çç®æ è¯ç§ï¼é£è¯å®å°±æ¯å¾ ç¿»è¯çï¼å°è¿æ¥ç¬¦å å ¥å¾ ç¿»è¯ä¸ä¸èµ·è¿è¡ç¿»è¯ 3326 if(upLangs['storage_language'] != 'specialCharacter' && upLangs['storage_language'] != translate.to){ 3327 3328 language = upLangs['storage_language']; 3329 console.log('teshu:'+charstr+', å½ååç¬¦å¹¶å ¥ä¸ä¸ªå符åå¨ç¿»è¯è¯ç§:'+upLangs['storage_language']); 3330 } 3331 */ 3332 } 3333 //} 3334 3335 //console.log('isEqual:'+isEqual); 3336 /* 3337 if(isEqual){ 3338 //è·ä¸æ¬¡è¯è¨ä¸æ ·ï¼é£ä¹ç´æ¥æ¼æ¥ 3339 index = langStrs[language].length-1; 3340 //使¯è¿æå«çç¹æ®æ åµï¼v2.1éå¯¹è±æç¿»è¯å确度çéé ï¼ä¼æç¹æ®å符çé®é¢ 3341 if(typeof(upLangs['storage_language']) != 'undefined' && upLangs['storage_language'] != language){ 3342 //妿ä¸ä¸ªå符åå ¥çç¿»è¯éåè·å½åè¿ä¸ªè¦åå ¥çéåä¸ä¸ä¸ªçè¯ï¼é£åºè¯¥æ¯ç¹æ®åç¬¦åæ¯éå·å¥å·ç导è´çï¼é£æ ·è¿è¦é¢å¤ä¸ä¸ªæ°ç»ï¼ä¸è½å¨åå ¥ä¹åçæ°ç»äº 3343 index = langStrs[language].length; 3344 } 3345 }else{ 3346 //console.log('æ°å¼'); 3347 //å½åå符è·ä¸æ¬¡è¯è¨ä¸æ ·ï¼é£ä¹æ°å¼ä¸ä¸ªæ°ç» 3348 index = langStrs[language].length; 3349 //console.log('++, inde:'+index+',lang:'+language+', length:'+langStrs[language].length) 3350 } 3351 */ 3352 3353 //å½åè¦ç¿»è¯çè¯ç§è·ä¸ä¸ªå符è¦ç¿»è¯çè¯ç§ä¸æ ·ï¼é£ä¹ç´æ¥æ¼æ¥ 3354 if(upLangs['storage_language'] == language){ 3355 index = langStrs[language].length-1; 3356 }else{ 3357 //console.log('æ°å¼'); 3358 //å½åå符è·ä¸æ¬¡è¯è¨ä¸æ ·ï¼é£ä¹æ°å¼ä¸ä¸ªæ°ç» 3359 index = langStrs[language].length; 3360 } 3361 } 3362 if(typeof(langStrs[language][index]) == 'undefined'){ 3363 langStrs[language][index] = new Array(); 3364 langStrs[language][index]['beforeText'] = ''; 3365 langStrs[language][index]['afterText'] = ''; 3366 langStrs[language][index]['text'] = ''; 3367 } 3368 langStrs[language][index]['text'] = langStrs[language][index]['text'] + charstr; 3369 /* 3370 ä¸æè±ææ··åæ¶ï¼å½ä¸æ+è±æå¹¶æ²¡æç©ºæ ¼é´éï¼ç¿»è¯ä¸ºè±ææ¶ï¼ä¼ä½¿ä¸æç¿»è¯è±æçç»æè·åæ¬çè±æåè¯è¿å°ä¸åãè¿éå°±æ¯è§£å³è¿ç§æ åµ 3371 é对å½åéè±æ(ä¸éè¦ç©ºæ ¼åé符ï¼åæ¯ä¸æãé©è¯)ï¼ä½è¦ç¿»è¯ä¸ºè±æï¼éè¦ç©ºæ ¼ä½ä¸ºåå²ç¬¦å·ï¼åæ¯æ³è¯çï¼æ¶çæ åµè¿è¡å¤æ 3372 */ 3373 //if(translate.language.getLocal() != 'english' && translate.to == 'english'){ 3374 //å½åæ¬å°è¯ç§çè¯è¨æ¯è¿ç»çï¼ä½ç¿»è¯çç®æ è¯è¨ä¸æ¯è¿ç»çï¼ç©ºæ ¼é´éï¼ 3375 if( translate.language.wordBlankConnector(translate.language.getLocal()) == false && translate.language.wordBlankConnector(translate.to)){ 3376 if((upLangs['storage_language'] != null && typeof(upLangs['storage_language']) != 'undefined' && upLangs['storage_language'].length > 0)){ 3377 //ä¸ä¸ªå符åå¨ 3378 //console.log(upLangs['storage_language']); 3379 if(upLangs['storage_language'] != 'specialCharacter'){ 3380 //ä¸ä¸ªåç¬¦ä¸æ¯ç¹æ®å符 ï¼æ¯æ£å¸¸è¯ç§ãä¸ä¸ä¼æ¯è¿æ¥ç¬¦ï¼è¿æ¥ç¬¦é½å¹¶å ¥äºæ£å¸¸è¯ç§ï¼ 3381 3382 //if( upLangs['storage_language'] != 'english' && language == 'english'){ 3383 //ä¸ä¸ªå符çè¯è¨æ¯è¿ç»çï¼ä½å½åå符çè¯è¨ä¸æ¯è¿ç»çï¼ç©ºæ ¼é´éï¼ 3384 if( translate.language.wordBlankConnector(upLangs['storage_language']) == false && translate.language.wordBlankConnector(language) ){ 3385 //ä¸ä¸ªåç¬¦ä¸æ¯è±è¯ï¼å½åå符æ¯è±è¯ï¼è¿ç§æ åµè¦å¨ä¸ä¸ªå符åé¢è¿½å ç©ºæ ¼ï¼å 为å½åå符æ¯è±æï¼å°±ä¸ä¼å¨æ§è¡ç¿»è¯æä½äº 3386 //console.log(upLangs['language']); 3387 langStrs[upLangs['storage_language']][langStrs[upLangs['storage_language']].length-1]['afterText'] = ' '; 3388 }else if(upLangs['storage_language'] == 'english' && language != 'english'){ 3389 //ä¸ä¸ªå符æ¯è±è¯ï¼å½ååç¬¦ä¸æ¯è±è¯ï¼ç´æ¥å¨å½åå符åé¢è¿½å ç©ºæ ¼ 3390 langStrs[language][index]['beforeText'] = ' '; 3391 } 3392 } 3393 3394 3395 } 3396 } 3397 3398 var result = new Array(); 3399 result['langStrs'] = langStrs; 3400 result['storage_language'] = language; //å®é åå ¥äºåªç§è¯ç§éå 3401 //console.log(result); 3402 //console.log(langStrs) 3403 //console.log(charstr); 3404 return result; 3405 }, 3406 3407 /* 3408 * ä¸åäºè¯è¨ï¼è¿ä¸ªåªæ¯å纯çè¿æ¥ç¬¦ãæ¯å¦è±æåè¯ä¹é´æéå·ãå¥å·ãç©ºæ ¼ï¼ æ±åä¹é´æéå·å¥å·ä¹¦åå·çãé¿å ä¸è¡å®æ´çå¥å被åå²ï¼å¯¼è´ç¿»è¯ä¸åç¡® 3409 * åç¬æ¿ä»åºæ¥ï¼ç®çæ¯ä¸ºäºæ´å¥½çå¤æè®¡ç®ï¼æé«ç¿»è¯çåç¡®ç 3410 */ 3411 connector:function(str){ 3412 3413 /* 3414 éç¨çæ ç©ºæ ¼ãé¿æä¼¯æ°å 3415 1.ä¸é´æç©ºæ ¼\u00A0,主è¦ç¨å¨officeä¸,让ä¸ä¸ªåè¯å¨ç»å°¾å¤ä¸ä¼æ¢è¡æ¾ç¤º,å¿«æ·é®ctrl+shift+space ; 3416 2.åè§ç©ºæ ¼(è±æç¬¦å·)\u0020,代ç ä¸å¸¸ç¨ç; 3417 3.å ¨è§ç©ºæ ¼(ä¸æç¬¦å·)\u3000,䏿æç« ä¸ä½¿ç¨; 3418 */ 3419 if(/.*[\u0020\u00A0\u202F\u205F\u3000]+.*$/.test(str)){ 3420 return true; 3421 } 3422 /* 3423 U+0030 0 æ°å 0 3424 U+0031 1 æ°å 1 3425 U+0032 2 æ°å 2 3426 U+0033 3 æ°å 3 3427 U+0034 4 æ°å 4 3428 U+0035 5 æ°å 5 3429 U+0036 6 æ°å 6 3430 U+0037 7 æ°å 7 3431 U+0038 8 æ°å 8 3432 U+0039 9 æ°å 9 3433 */ 3434 if(/.*[\u0030-\u0039]+.*$/.test(str)){ 3435 return true 3436 } 3437 3438 3439 /* 3440 è±æåºæ¯ 3441 è±æéå·ãå¥å· 3442 è¿éä¸å æ¬() å 为è¿éé¢çåºæ¬å±äºè¡¥å ï¼å¯¹è¯å¥ååå¹¶æ 强ä¾è
3442µå ³ç³» 3443 3444 U+0021 ! å¹å· 3445 U+0022 " åå¼å· 3446 U+0023 # äºå· 3447 U+0024 $ ä»·é±/è´§å¸ç¬¦å· 3448 U+0025 % ç¾åæ¯ç¬¦å· 3449 U+0026 & è±æâandâçç®åç¬¦å· 3450 U+0027 ' å¼å· 3451 U+002C , éå· 3452 U+002D - è¿åå·/åå· 3453 U+002E . å¥å· 3454 U+003A : åå· 3455 U+003B ; åå· 3456 U+003F ? é®å· 3457 U+0040 @ è±æâatâçç®åç¬¦å· 3458 3459 3460 */ 3461 if(/.*[\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u002C\u002D\u002E\u003A\u003B\u003F\u0040]+.*$/.test(str)){ 3462 return true; 3463 } 3464 3465 /* 3466 䏿æ ç¹ç¬¦å· 3467 åç§° Unicode ç¬¦å· 3468 å¥å· 3002 ã 3469 é®å· FF1F ï¼ 3470 å¹å· FF01 ï¼ 3471 éå· FF0C ï¼ 3472 é¡¿å· 3001 ã 3473 åå· FF1B ï¼ 3474 åå· FF1A ï¼ 3475 å¼å· 300C ã 3476 300D ã 3477 å¼å· 300E ã 3478 300F ã 3479 å¼å· 2018 â 3480 2019 â 3481 å¼å· 201C â 3482 201D â 3483 æ¬å· FF08 ï¼ 3484 FF09 ï¼ 3485 æ¬å· 3014 ã 3486 3015 ã 3487 æ¬å· 3010 ã 3488 3011 ã 3489 ç ´æå· 2014 â 3490 çç¥å· 2026 ⦠3491 è¿æ¥å· 2013 â 3492 é´éå· FF0E ï¼ 3493 书åå· 300A ã 3494 300B ã 3495 书åå· 3008 ã 3496 3009 ã 3497 é®ç123åé¢çé£ä¸ªç¬¦å· · 00b7 3498 */ 3499 if(/.*[\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(str)){ 3500 return true; 3501 } 3502 3503 3504 3505 3506 //䏿¯ï¼è¿åfalse 3507 return false; 3508 }, 3509 //è¯ç§çåè¯è¿æ¥ç¬¦æ¯å¦éè¦ç©ºæ ¼ï¼æ¯å¦ä¸æç®ä½ãç¹ä½ãé©æãæ¥è¯é½ä¸éè¦ç©ºæ ¼ï¼åè¿åfalse, 使¯åæ¯è±æçåè¯é´éè¦ç©ºæ ¼è¿è¡éå¼ï¼åè¿åtrue 3510 //妿æªå¹é å°ï¼é»è®¤è¿åtrue 3511 //languageï¼è¯ç§ï¼ä¼ å ¥å¦ english 3512 wordBlankConnector:function(language){ 3513 if(language == null || typeof(language) == 'undefined'){ 3514 return true; 3515 } 3516 switch (language.trim().toLowerCase()){ 3517 case 'chinese_simplified': 3518 return false; 3519 case 'chinese_traditional': 3520 return false; 3521 case 'korean': 3522 return false; 3523 case 'japanese': 3524 return false; 3525 } 3526 //å ¶ä»æ åµåè¿åtrue 3527 return true; 3528 }, 3529 //ç¹ä½ä¸æçåå ¸ï¼å¤æç¹ä½ä¸æå°±æ¯éè¿æ¤å¤æ 3530 chinese_traditional_dict: 'çè¹ç¤æç¿ºè¥å¥§å£©ç½·æºæé 辦çµå¹«ç¶éè¬åé£½å¯¶å ±é®è¼©è²éç½åæç¹çç¢æéé編貶è®è¾¯è¾®é¼ççæ¿±è³æ¯é¤ æ¥ç¼½éé§èè£åè ¶æ®æ æ ç¦è¼èåæ»å»å´åæ¸¬å±¤è©«ææ»è¬é¥è®çºéç£é¡é¡«å ´åé·åè ¸å» æ¢éè»å¾¹å¡µé³è¥¯æç¨±æ²èª é¨ç¡é²é¦³æ¥é½ç¾æ²è²å¯µçèºç±ç¶¢éæ«¥å»é¤éç¤å²è§¸èå³ç¡éåµéç´ç¶½è¾è©è³è°è¥åªå¾å¢æ¹ç«é¯é帶貸æå®é²æ£è½æèªå½ç¶æé»¨è©æªæå³¶ç¦±å°ççé§æµæ»éç· é»å¢é»æ¾±é£èª¿è«çéé é è¨æ±åæ£å鬥ç¢ç¨è®è³ééæ·ç·å éå°å¸é é奪éµé¡è¨æ¡é¤å ç¾é¤è²³ç¼ç½°é¥çºç¤¬é©ç ©ç¯è²©é£¯è¨ªç´¡é£å»¢è²»ç´å¢³å¥®æ¤ç³è±æ¥é風ç馮縫諷鳳èè¼»æ«è¼è³¦è¤è² è¨å©¦ç¸è©²é£èå¹¹è¶ç¨è´å²¡åé¼ç¶±å´è¯é¬æ±é´¿é£é»å給é¾å®®éè²¢éæºæ§è³¼å¤ è ±é¡§å®éè§é¤¨æ £è²«å»£è¦ç½æ¸é¾é¨è»è©æ«è²´å輥滾éåéé§éæ¼¢é¡é¶´è³æ©«è½é´»ç´ å¾å£ºè·æ»¬æ¶å©è¯ç«å話æ·å£æ¡ç°éç·©æåçç ¥æ¸é»è¬æ®è¼æ¯è³ç©¢æç´å½è«±èª¨ç¹ªè·æ¸¾å¤¥ç²è²¨ç¦ææ©ç©é¥èéç¸¾ç·æ¥µè¼¯ç´æ å¹¾èåæ¿è¨è¨éç¹¼ç´å¤¾è¢é °è³éå¹é§æ®²ç£å ç®éè±ç·ç¹æª¢å ¿é¹¼ææ¿ç°¡åæ¸è¦æª»éè¸è³¤è¦éµè¦å餿¼¸æ¿ºæ¾æ¼¿è£æ§³çè¬é¬è æ¾é©å¬æªé¸ç¯å¥è ³é¤ç¹³çµè½è¼ç¨éç¯èé©ç¶é ¸éé¡å¾ç競淨糾å»èé§èæé¸æ¼åéµçµ¹åæ½çµèª¡å±ç·é¦å è¬¹é²æç¼ç¡åè覺決訣çµéè»é§¿éå±é¡æ®¼èª²å¢¾ææ³åº«è¤²èªå¡åå¯¬ç¤¦æ æ³è§å·çªºé¥æ½°æ´éè èèä¾è³´èæ¬æç±éèç¾è®æ¬è¦½æ¶çºçæ¿«æåæ¾æ¨é³å£é¡æ·ç±¬é¢è£é¯ç¦®éºå²åµç¤«æçé¸åè¯è®é£é®ææ¼£ç°¾æèéæç ç·´ç³§æ¶¼å ©è¼è«çé¼éçµè¨é°é±åè³é½¡é´æ·©é嶺é 餾åé¾è¾å¨ç± 壿鴿¨å©æç°èç§é¡±å»¬çæé¹µèé¯è³ç¥¿éé¸é©¢åéä¾¶å±¢ç¸·æ ®æ¿¾ç¶ å·æ£å¿ç¤äºæè¼ªå«ä¾æ·ªç¶¸è«è¿ç¾ éé¼ç±®é¨¾é§±çµ¡åª½çªç¢¼è馬罵å買麥賣éèçé¥ è »æ»¿è¬¾è²é¨é貿麽黴æ²ééæ¶åé³å¤¢è¬å½è¦ç¶¿ç·¬å»æ» æ«é©é³´é謬è¬çéç´é£æè ¦æ±é¬§é¤è©ææéé³¥è¶é½§é·é³æª¸ç°ç¯æ°æ¿éç´è¿æ¿è¾²ç§è«¾æé·æ¯åæ¼ç¤é¾åæè³ å´éµ¬é¨é£é »è²§èæè©æ½é æ²éªæ¨¸èèé½é¨è±åæ°£æ£è¨ç½æ¡éºéé·ç°½è¬é¢éæ½æ·ºè´å¡¹æ§åçèå¼·æ¶é¬æ©å¬åç¿¹ç« ç«æ¬½è¦ªè¼æ°«å¾é è«æ ¶ç窮趨åè»é© 齲顴æ¬å¸å»éµ²è®é¥æ¾ç¹ç±éèªç´æ¦®çµ¨è»é³é潤çè©é°è³½ååªé¨·ææ¾æ®ºç´ç¯©æ¬ééè´ç¹å·è³çç´¹è³ææ¾è¨ç´³å¯©å¬¸è 滲è²ç¹©åèå¸«ç æ¿è©©å±æè實èé§å¢é飾è¦è©¦å£½ç¸æ¨è¼¸æ¸è´å±¬è¡æ¨¹è±æ¸å¸¥éèª°ç¨ é 說碩ççµ²é£¼è³æ «é è¨èª¦æ»è訴è éç¶æ²å«æç縮ç£éçºæ»æ¡æ¤è²ªç±çå£èè«ææ¹¯çæ¿¤ç¸§é¨°è¬é»é¡é«å±æ¢è²¼éµå»³è½ç´é çµ±é åå¡åé ¹è»è«é´é¦±é§æ©¢çªªè¥ªå½ç£é è¬ç¶²ééåç²æ¿°ç¶è¦ååç·¯è¬è¡æº«èç´ç©©åçæ¾è¸æ¸¦çª©åé¢ç誣ç¡èªå³å¡¢é§å誤é«ç§è¥²ç¿éæ²ç´°è¦è½å³½ä¿ ç¹å»éé®®çºé¹¹è³¢éé顯éªç¾ç»ç¸£é¤¡ç¾¨æ²ç·å»é²é詳é¿é èé·æå¯è åæ¾æè 諧寫çè¬é éèæ´¶é½ç¹¡èåé 許ç·çºè»æ¸é¸ç¬çµ¢å¸å³è©¢å°é¦´è¨è¨éå£é´é´¨åäºè¨é¹ç é¹½å´é¡é»è±å硯彥諺é©é´¦æ¥æçé½ç¢é¤æ¨£ç¤æå ¯éçª¯è¬ è¥çºé æ¥èé«é¥é ¤éºåå½è»èåæ¶ç¾©è©£è°èª¼è¯ç°ç¹¹èé°é飲櫻嬰鷹æçºç©è¢ççè ç©å²æåç°è¸´è© æ¹§åªæéµé¾ç¶éèªè¼¿éæ¼å¨èå¶¼èªç±²ç¦¦çè½é é¦é´æ·µè½ åå¡åç·£é é¡ç´èºé°å¶½ç²µæ é±é²éå»ééèéæé»éç½è¼æ¢æ«è´è´é«é¿æ£ç«è²¬æå澤è³è´ç´®åè»ééè©é½åµæ°çæ¬è¼¾å¶æ£§æ°ç¶»å¼µæ¼²å¸³è³¬è¹è¶èè½éºéè²éåµè¨ºé®é£æççå¹éèç¹è·å·ç´æ¯æ²å¹è³ªé¾çµç¨®è «è¡è¬ è»¸çºæé©è±¬è«¸èª ççå貯éç¯é§å°ç£è½è³ºæ¨èè£å¦å£¯çéè´ å¢ç¶´è«æ¿è²è³æ¼¬è¹¤ç¶ç¸½ç¸±éè©çµé½ç·»é麼çºé»å æºåé裡éé¤é', 3531 /* 3532 䏿夿 3533 è¿åï¼ 3534 simplifiedï¼ç®ä½ä¸æ 3535 traditionalï¼ç¹ä½ä¸æ 3536 空å符串ï¼ä¸æ¯ä¸æ 3537 */ 3538 chinese:function(str){ 3539 if(/.*[\u4e00-\u9fa5]+.*$/.test(str)){ 3540 if(this.chinese_traditional_dict.indexOf(str) > -1){ 3541 return 'traditional'; 3542 } else { 3543 return 'simplified'; 3544 } 3545 } else { 3546 return ''; 3547 } 3548 }, 3549 //æ¯å¦å å«è±æï¼true:å å« 3550 english:function(str){ 3551 if(/.*[\u0041-\u005a]+.*$/.test(str)){ 3552 return true; 3553 } else if(/.*[\u0061-\u007a]+.*$/.test(str)){ 3554 return true; 3555 } else { 3556 return false; 3557 } 3558 }, 3559 //æ¯å¦å 嫿¥è¯ï¼true:å å« 3560 japanese:function(str){ 3561 if(/.*[\u3040-\u309F\u30A0-\u30FF]+.*$/.test(str)){ 3562 return true 3563 } else { 3564 return false; 3565 } 3566 }, 3567 //æ¯å¦å å«é©è¯ï¼true:å å« 3568 korean:function(str){ 3569 if(/.*[\uAC00-\uD7AF]+.*$/.test(str)){ 3570 return true 3571 } else { 3572 return false; 3573 } 3574 }, 3575 //æ¯å¦å å«ä¿è¯ 3576 russian:function(str){ 3577 //夿å符æ ÐÐÐÐÐÐÐÐÐÐÐÐСТУФХЦЧШЩЪЫЬЮЯÐÐ 3578 if(/.*[\u0411\u0412\u0414\u0416\u0417\u0418\u0419\u041B\u041C\u041D\u041E\u041F\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042E\u042F\u0407\u0406]+.*$/.test(str)){ 3579 return true 3580 } else { 3581 return false; 3582 } 3583 }, 3584 //0-9 é¿æä¼¯æ°å 3585 number:function(str){ 3586 if(/.*[\u0030-\u0039]+.*$/.test(str)){ 3587 return true; 3588 } 3589 return false; 3590 }, 3591 3592 //æ¯å¦å å«ç¹æ®å符ï¼å å«ï¼åæ¯true 3593 specialCharacter:function(str){ 3594 //å¦ï¼â â´ â 3595 if(/.*[\u2460-\u24E9]+.*$/.test(str)){ 3596 return true 3597 } 3598 3599 //å¦ï¼âââ â â â 3600 if(/.*[\u2500-\u25FF]+.*$/.test(str)){ 3601 return true 3602 } 3603 3604 //å¦ï¼ã ã ã ã¡ 3605 if(/.*[\u3200-\u33FF]+.*$/.test(str)){ 3606 return true 3607 } 3608 3609 //å¦ï¼ä¸ANSI对åºçå ¨è§å符 3610 if(/.*[\uFF00-\uFF5E]+.*$/.test(str)){ 3611 return true 3612 } 3613 3614 //å ¶å®ç¹æ®ç¬¦å· 3615 if(/.*[\u2000-\u22FF]+.*$/.test(str)){ 3616 return true 3617 } 3618 3619 // ã><çç¬¦å· 3620 if(/.*[\u3001-\u3036]+.*$/.test(str)){ 3621 return true; 3622 } 3623 3624 /* 3625 //é¿æä¼¯æ°å 0-9 3626 if(/.*[\u0030-\u0039]+.*$/.test(str)){ 3627 return true; 3628 } 3629 */ 3630 3631 /* 3632 U+0020 ç©ºæ ¼ 3633 U+0021 ! å¹å· 3634 U+0022 " åå¼å· 3635 U+0023 # äºå· 3636 U+0024 $ ä»·é±/è´§å¸ç¬¦å· 3637 U+0025 % ç¾åæ¯ç¬¦å· 3638 U+0026 & è±æâandâçç®åç¬¦å· 3639 U+0027 ' å¼å· 3640 U+0028 ( å¼ å·¦åæ¬å· 3641 U+0029 ) å ³ å³åæ¬å· 3642 U+002A * æå· 3643 U+002B + å å· 3644 U+002C , éå· 3645 U+002D - è¿åå·/åå· 3646 U+002E . å¥å· 3647 U+002F / å·¦ææ 3648 */ 3649 if(/.*[\u0020-\u002F]+.*$/.test(str)){ 3650 return true; 3651 } 3652 3653 /* 3654 U+003A : åå· 3655 U+003B ; åå· 3656 U+003C < å°äºç¬¦å·
3657 U+003D = çäºå· 3658 U+003E > 大äºç¬¦å· 3659 U+003F ? é®å· 3660 U+005B [ å¼ æ¹æ¬å· 3661 U+005C \ 峿æ 3662 U+005D ] å ³ æ¹æ¬å· 3663 U+005E ^ ææ¬ï¼éé³ï¼ç¬¦å· 3664 U+005F _ åºçº¿ 3665 U+0060 ` éé³ç¬¦ 3666 U+007B { å¼ å·¦è±æ¬å· 3667 U+007C | ç´çº¿ 3668 U+007D } å ³ å³è±æ¬å· 3669 U+007E ~ 波浪纹 3670 */ 3671 if(/.*[\u003B\u003B\u003C\u003D\u003E\u003F\u005B\u005C\u005D\u005E\u005F\u0060\u007B\u007C\u007D\u007E]+.*$/.test(str)){ 3672 return true; 3673 } 3674 3675 //空ç½å符ï¼\u0009\u000a + https://cloud.tencent.com/developer/article/2128593 3676 if(/.*[\u0009\u000a\u0020\u00A0\u1680\u180E\u202F\u205F\u3000\uFEFF]+.*$/.test(str)){ 3677 return true; 3678 } 3679 if(/.*[\u2000-\u200B]+.*$/.test(str)){ 3680 return true; 3681 } 3682 3683 /* 3684 æä¸åæ¯ 3685 ä»£ç æ¾ç¤º æè¿° 3686 U+00A1 ¡ å转çå¹å· 3687 U+00A2 ¢ ï¼è´§å¸åä½ï¼åé±ã毫å 3688 U+00A3 £ ï¼è´§å¸ï¼è±é 3689 U+00A4 ¤ ï¼è´§å¸ï¼å½è´§å¸æªæç¬¦å·æ¶ä»¥æ¤æ¿ä»£ 3690 U+00A5 Â¥ ï¼è´§å¸ï¼æ¥å 3691 U+00A6 ¦ ä¸¤æ¡æå¼çç´çº¿ 3692 U+00A7 § æä»¶åä¸åé¨å 3693 U+00A8 ¨ ï¼è¯è¨ï¼åé³ 3694 U+00A9 © çæç¬¦ 3695 U+00AA ª ï¼æå¤§å©æãè¡èçæã西ççæï¼é´æ§åºæ° 3696 U+00AB « åéè§å½¢å¼å· 3697 U+00AC ¬ é»è¾é 3698 U+00AE ® åæ 3699 U+00AF ¯ é¿é³ 3700 U+00B0 ° è§åº¦ 3701 U+00B1 ± æ£è´å· 3702 U+00B2 ² äºæ¬¡æ¹ 3703 U+00B3 ³ 䏿¬¡æ¹ 3704 U+00B4 ´ éé³ç¬¦ 3705 U+00B5 µ ç¾ä¸åä¹ä¸ï¼10?6 3706 U+00B6 ¶ æç« åæ®µ 3707 U+00B7 · é´éå· 3708 U+00B8 ¸ 软é³ç¬¦ 3709 U+00B9 ¹ 䏿¬¡æ¹ 3710 U+00BA º ï¼æå¤§å©æãè¡èçæã西ççæï¼é³æ§åºæ° 3711 U+00BB » æåå³çåç®å¤´ 3712 U+00BC ¼ ååä¹ä¸ 3713 U+00BD ½ äºåä¹ä¸ 3714 U+00BE ¾ ååä¹ä¸ 3715 U+00BF ¿ å转çé®å· 3716 U+00C1 Ã å¨æä¸åæ¯ A ä¸å éé³ç¬¦ 3717 U+00C2 Ã å¨æä¸åæ¯ A ä¸å ææ¬ç¬¦â^â 3718 U+00C3 Ã å¨æä¸åæ¯ A ä¸å â~â 3719 U+00C4 Ã å¨æä¸åæ¯ A ä¸å åé³ç¬¦â..â 3720 U+00C5 Ã å¨æä¸åæ¯ A ä¸å è§åº¦ç¬¦â°â 3721 U+00C6 à æä¸åæ¯ AãE çæ··å 3722 U+00C7 Ã å¨æä¸åæ¯ C ä¸å 软é³ç¬¦ 3723 U+00C8 Ã å¨æä¸åæ¯ E ä¸å éé³ç¬¦ 3724 U+00C9 Ã å¨æä¸åæ¯ E ä¸å éé³ç¬¦ 3725 U+00CA Ã å¨æä¸åæ¯ E ä¸å ææ¬ç¬¦ 3726 U+00CB Ã å¨æä¸åæ¯ E ä¸å åé³ç¬¦ 3727 U+00CC Ã å¨æä¸åæ¯ I ä¸å éé³ç¬¦ 3728 U+00CD Ã å¨æä¸åæ¯ I ä¸å éé³ç¬¦ 3729 U+00CE Ã å¨æä¸åæ¯ I ä¸å ææ¬ç¬¦ 3730 U+00CF Ã å¨æä¸åæ¯ I ä¸å åé³ç¬¦ 3731 U+00D0 Ã å¤æä¸åæ¯ï¼ç°åªææ³ç½æåå°å²æåè¶åè¯ä½¿ç¨ 3732 U+00D1 Ã å¨æä¸åæ¯ N ä¸å 波浪纹â~â 3733 U+00D2 Ã å¨æä¸åæ¯ O ä¸å éé³ç¬¦ 3734 U+00D3 Ã å¨æä¸åæ¯ O ä¸å éé³ç¬¦ 3735 U+00D4 Ã å¨æä¸åæ¯ O ä¸å ææ¬ç¬¦ 3736 U+00D5 Ã å¨æä¸åæ¯ O ä¸å 波浪纹â~â 3737 U+00D6 Ã å¨æä¸åæ¯ O ä¸å åé³ç¬¦ 3738 U+00D7 à ä¹å·ï¼äº¦å¯ææâAltâé®ï¼åæ¶æâ41425âäºé® 3739 U+00D8 Ã å¨æä¸åæ¯ O ç±å³ä¸è³å·¦ä¸å å¯¹è§æçº¿â/â 3740 U+00D9 Ã å¨æä¸åæ¯ U ä¸å éé³ç¬¦ 3741 U+00DA Ã å¨æä¸åæ¯ U ä¸å éé³ç¬¦ 3742 U+00DB Ã å¨æä¸åæ¯ U ä¸å ææ¬ç¬¦ 3743 U+00DC Ã å¨æä¸åæ¯ U ä¸å åé³ç¬¦ 3744 U+00DD Ã å¨æä¸åæ¯ Y ä¸å éé³ç¬¦ 3745 U+00DE Ã å¤æä¸åæ¯ï¼ç°å·²è¢«âThâåæ¿ 3746 U+00DF à 德æåæ¯ 3747 U+00E0 Ã å¨æä¸åæ¯ a ä¸å éé³ç¬¦ 3748 U+00E1 á 卿ä¸åæ¯ a ä¸å éé³ç¬¦ 3749 U+00E2 â 卿ä¸åæ¯ a ä¸å ææ¬ç¬¦ 3750 U+00E3 ã 卿ä¸åæ¯ a ä¸å 波浪纹â~â 3751 U+00E4 ä 卿ä¸åæ¯ a ä¸å åé³ç¬¦ 3752 U+00E5 Ã¥ 卿ä¸åæ¯ a ä¸å è§åº¦ç¬¦â°â 3753 U+00E6 æ æä¸åæ¯ aãe çæ··å 3754 U+00E7 ç 卿ä¸åæ¯ c ä¸å 软é³ç¬¦ 3755 U+00E8 è 卿ä¸åæ¯ e ä¸å éé³ç¬¦ 3756 U+00E9 é 卿ä¸åæ¯ e ä¸å éé³ç¬¦ 3757 U+00EA ê 卿ä¸åæ¯ e ä¸å ææ¬ç¬¦ 3758 U+00EB ë 卿ä¸åæ¯ e ä¸å åé³ç¬¦ 3759 U+00EC ì 卿ä¸åæ¯ i ä¸å éé³ç¬¦ 3760 U+00ED Ã å¨æä¸åæ¯ i ä¸å éé³ç¬¦ 3761 U+00EE î 卿ä¸åæ¯ i ä¸å ææ¬ç¬¦ 3762 U+00EF ï 卿ä¸åæ¯ i ä¸å åé³ç¬¦ 3763 U+00F0 ð 夿ä¸åæ¯ 3764 U+00F1 ñ 卿ä¸åæ¯ n ä¸å 波浪纹â~â 3765 U+00F2 ò 卿ä¸åæ¯ o ä¸å éé³ç¬¦ 3766 U+00F3 ó 卿ä¸åæ¯ o ä¸å éé³ç¬¦ 3767 U+00F4 ô 卿ä¸åæ¯ o ä¸å ææ¬ç¬¦ 3768 U+00F5 õ 卿ä¸åæ¯ o ä¸å 波浪纹â~â 3769 U+00F6 ö 卿ä¸åæ¯ o ä¸å åé³ç¬¦ 3770 U+00F7 ÷ é¤å·ï¼äº¦å¯ææâAltâé®ï¼åæ¶æâ41426âäºé® 3771 U+00F8 ø 卿ä¸åæ¯ o ç±å³ä¸è³å·¦ä¸å å¯¹è§æçº¿â/â 3772 U+00F9 ù 卿ä¸åæ¯ u ä¸å éé³ç¬¦ 3773 U+00FA ú 卿ä¸åæ¯ u ä¸å éé³ç¬¦ 3774 U+00FB ? 卿ä¸åæ¯ u ä¸å ææ¬ç¬¦ 3775 U+00FC ü 卿ä¸åæ¯ u ä¸å åé³ç¬¦ 3776 U+00FD ý 卿ä¸åæ¯ y ä¸å éé³ç¬¦ 3777 U+00FE þ 夿ä¸åæ¯ï¼ç°å·²è¢«âthâåæ¿ 3778 U+00FF ü 卿ä¸åæ¯ u ä¸å åé³ç¬¦ 3779 æä¸åæ¯ï¼æ©å± Aï¼ 3780 ä»£ç æ¾ç¤º æè¿° 3781 U+0100 Ä å¨æä¸åæ¯ A ä¸å é¿é³ç¬¦ 3782 U+0101 Ä å¨æä¸åæ¯ a ä¸å é¿é³ç¬¦ 3783 U+0102 Ä å¨æä¸åæ¯ A ä¸å çé³ç¬¦ 3784 U+0103 Ä å¨æä¸åæ¯ a ä¸å çé³ç¬¦ 3785 U+0104 Ä å¨æä¸åæ¯ A ä¸å å尾形符 3786 U+0105 Ä å¨æä¸åæ¯ a ä¸å å尾形符 3787 æä¸åæ¯ï¼æ©å± Cï¼ 3788 ä»£ç æ¾ç¤º æè¿° 3789 U+2C60 â± å¨æä¸åæ¯âLâä¸é´å ä¸¤æ¡æ¨ªçº¿â=â 3790 U+2C61 ⱡ 卿ä¸åæ¯âlâï¼L çå°åï¼ä¸é´å ä¸¤æ¡æ¨ªçº¿â=â 3791 U+2C62 â±¢ 卿ä¸åæ¯âLâï¼å¤§åï¼ä¸é´å 䏿¡æ³¢æµªçº¿â~â 3792 U+2C63 â±£ 卿ä¸åæ¯âPâä¸é´å 䏿¡æ¨ªçº¿â-â 3793 U+2C64 Ɽ 卿ä¸åæ¯âRâä¸å 䏿¡å°¾å·´ 3794 U+2C65 â±¥ 卿ä¸åæ¯âaâä¸å 䏿¡å¯¹è§æçº¿â/â 3795 U+2C66 ⱦ 卿ä¸åæ¯âtâä¸å 䏿¡å¯¹è§æçº¿â/â 3796 U+2C67 â±§ 卿ä¸åæ¯âHâä¸å 䏿¡å°¾å·´ 3797 U+2C68 ⱨ 卿ä¸åæ¯âhâä¸å 䏿¡å°¾å·´ 3798 U+2C69 Ⱪ 卿ä¸åæ¯âKâä¸å 䏿¡å°¾å·´ 3799 U+2C6A ⱪ 卿ä¸åæ¯âkâä¸å 䏿¡å°¾å·´ 3800 U+2C6B Ⱬ 卿ä¸åæ¯âZâä¸å 䏿¡å°¾å·´ 3801 U+2C6C ⱬ 卿ä¸åæ¯âzâä¸å 䏿¡å°¾å·´ 3802 U+2C74 â±´ 卿ä¸åæ¯âvâçèµ·ç¬å ä¸ä¸ªå¼¯å¾ 3803 U+2C75 â±µ æä¸åæ¯âHâçå·¦åé¨ 3804 U+2C76 â±¶ æä¸åæ¯âhâçå·¦åé¨ 3805 U+2C77 â±· å¸è 忝âÏâçä¸åé¨ 3806 */ 3807 if(/.*[\u00A1-\u0105]+.*$/.test(str)){ 3808 return true; 3809 } 3810 if(/.*[\u2C60-\u2C77]+.*$/.test(str)){ 3811 return true; 3812 } 3813 3814 3815 return false; 3816 } 3817 }, 3818 //ç¨æ·ç¬¬ä¸æ¬¡æå¼ç½é¡µæ¶ï¼èªå¨å¤æå½åç¨æ·æå¨å½å®¶ä½¿ç¨çæ¯åªç§è¯è¨ï¼æ¥èªå¨è¿è¡åæ¢ä¸ºç¨æ·æå¨å½å®¶çè¯ç§ã 3819 //å¦æä½¿ç¨åï¼ç¬¬äºæ¬¡å¨ç¨ï¼é£å°±ä¼å ä»¥ç¨æ·æéæ©ç为主 3820 executeByLocalLanguage:function(){ 3821 //å è¯»ç¨æ·èªå·±æµè§å¨çé»è®¤è¯è¨ 3822 var browserDefaultLanguage = translate.util.browserDefaultLanguage(); 3823 if(typeof(browserDefaultLanguage) != 'undefined' && browserDefaultLanguage.length > 0){ 3824 translate.changeLanguage(browserDefaultLanguage); 3825 return; 3826 } 3827 3828 //å¦æç¨æ·æµè§å¨æ²¡è¯»å°é»è®¤è¯è¨ï¼æè é»è®¤è¯è¨æ²¡æå¯¹åºå°translate.jsæ¯æçè¯ç§ï¼é£ä¹å¨éç¨ipè¯å«çæ¹å¼ 3829 translate.request.post(translate.request.api.ip, {}, function(data){ 3830 //console.log(data); 3831 if(data.result == 0){ 3832 console.log('==== ERROR è·åå½åç¨æ·æå¨åºåå¼å¸¸ ===='); 3833 console.log(data.info); 3834 console.log('==== ERROR END ===='); 3835 }else{ 3836 translate.storage.set('to',data.language); //è®¾ç½®ç®æ ç¿»è¯è¯è¨ 3837 translate.to = data.language; //è®¾ç½®ç®æ è¯è¨ 3838 translate.selectLanguageTag 3839 translate.execute(); //æ§è¡ç¿»è¯ 3840 } 3841 }); 3842 }, 3843 3844 util:{ 3845 /* çæä¸ä¸ªéæºUUIDï¼å¤å¶äº https://gitee.com/mail_osc/kefu.js */ 3846 uuid:function() { 3847 var d = new Date().getTime(); 3848 if (window.performance && typeof window.performance.now === "function") { 3849 d += performance.now(); //use high-precision timer if available 3850 } 3851 var uuid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { 3852 var r = (d + Math.random() * 16) % 16 | 0; 3853 d = Math.floor(d / 16); 3854 return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); 3855 }); 3856 return uuid; 3857 }, 3858 3859 //夿åç¬¦ä¸²ä¸æ¯å¦åå¨tagæ ç¾ã trueåå¨ 3860 findTag:function(str) { 3861 var reg = /<[^>]+>/g; 3862 return reg.test(str); 3863 }, 3864 //ä¼ å ¥ä¸ä¸ªæ°ç»ï¼ä»æ°ç»ä¸æ¾åºç°é¢çæå¤çä¸ä¸ªè¿åã 妿å¤ä¸ªé¢çåºç°ç次æ°ä¸æ ·ï¼é£ä¼è¿åå¤ä¸ª 3865 arrayFindMaxNumber:function(arr){ 3866 3867 // å¨åæ¯ä¸ªå ç´ åºç°çæ¬¡æ° 3868 var numbers = {} 3869 3870 // å¨ååºç°æå¤æ¬¡çå ç´ 3871 var maxStr = [] 3872 3873 // å¨åæå¤åºç°çå ç´ æ¬¡æ° 3874 var maxNum = 0 3875 3876 for(var i =0,len=arr.length;i<len;i++){ 3877 if(!numbers[arr[i]]){ 3878 numbers[arr[i]] = 1 3879 }else{ 3880 numbers[arr[i]]++ 3881 } 3882 3883 if(numbers[arr[i]]>maxNum){ 3884 maxNum = numbers[arr[i]] 3885 } 3886 } 3887 3888 for(var item in numbers){ 3889 if(numbers[item]===maxNum){ 3890 maxStr.push(item) 3891 } 3892 } 3893 3894 return maxStr; 3895 }, 3896 //对å符串è¿è¡hashåï¼ç®çåå¯ä¸å¼è¿è¡æ è¯ 3897 hash:function(str){ 3898 if(str == null || typeof(str) == 'undefined'){ 3899 return str; 3900 } 3901 var hash = 0, i, chr; 3902 if (str.length === 0){ 3903 return hash; 3904 } 3905 3906 for (i = 0; i < str.length; i++) { 3907 chr = str.charCodeAt(i); 3908 hash = ((hash << 5) - hash) + chr; 3909 hash |= 0; // Convert to 32bit integer 3910 } 3911 return hash+''; 3912 }, 3913 //å»é¤ä¸äºæå®å符ï¼å¦æ¢è¡ç¬¦ã å¦æä¼ å ¥çæ¯nullï¼åè¿å空å符串 3914 charReplace:function(str){ 3915 3916 if(str == null){ 3917 return ''; 3918 } 3919 str = str.trim(); 3920 str = str.replace(/\t|\n|\v|\r|\f/g,''); //å»é¤æ¢è¡ç¬¦ç 3921 //str = str.replace(/&/g, "%26"); //å ä¸ºå¨æäº¤æ¶å·²ç»è¿è¡äºurlç¼ç äº 3922 return str; 3923 }, 3924 //RegExpç¸å ³ 3925 regExp:{ 3926 // new RegExp(pattern, resultText); ä¸ç pattern å符串çé¢å¤ç 3927 pattern:function(str){ 3928 str = str.replace(/\\/g,'\\\\'); //è¿ä¸ªä¸å®è¦æ¾å¨ç¬¬ä¸ä¸ªï¼ä¸ç¶ä¼è¢«ä¸é¢çå½±å 3929 //str = str.replace(/'/g,'\\\''); 3930 str = str.replace(/\"/g,'\\\"'); 3931 //str = str.replace(/./g,'\\\.'); 3932 str = str.replace(/\?/g,'\\\?'); 3933 str = str.replace(/\$/g,'\\\$'); 3934 str = str.replace(/\(/g,'\\\('); 3935 str = str.replace(/\)/g,'\\\)'); 3936 str = str.replace(/\|/g,'\\\|'); 3937 str = str.replace(/\+/g,'\\\+'); 3938 str = str.replace(/\*/g,'\\\*'); 3939 str = str.replace(/\[/g,'\\\['); 3940 str = str.replace(/\]/g,'\\\]'); 3941 str = str.replace(/\^/g,'\\\^'); 3942 str = str.replace(/\{/g,'\\\{'); 3943 str = str.replace(/\}/g,'\\\}'); 3944 return str; 3945 }, 3946 // new RegExp(pattern, resultText); ä¸ç resultText å符串çé¢å¤ç 3947 resultText:function(str){ 3948 //str = str.replace(/"/g,"\""); 3949 //str = str.replace(/'/g,"\\\'"); 3950 //str = str.replace(/"/g,"\\\""); 3951 return str; 3952 } 3953 }, 3954 //è·åURLçGETåæ°ãè¥æ²¡æï¼è¿å"" 3955 getUrlParam:function (name){ 3956 var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); 3957 var r = window.location.search.substr(1).match(reg); 3958 if(r!=null)return unescape(r[2]); return ""; 3959 }, 3960 /** 3961 * 忥å è½½JSï¼å è½½è¿ç¨ä¸ä¼é»å¡ï¼å è½½å®æ¯åç»§ç»æ§è¡åé¢çã 3962 * url: è¦å è½½çjsçurl 3963 */ 3964 synchronizesLoadJs:function(url){ 3965 var xmlHttp = null; 3966 if(window.ActiveXObject){//IE 3967 try { 3968 //IE6以å以åçæ¬ä¸å¯ä»¥ä½¿ç¨ 3969 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 3970 } catch (e) { 3971 //IE5.5以å以åçæ¬å¯ä»¥ä½¿ç¨ 3972 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 3973 } 3974 }else if(window.XMLHttpRequest){ 3975 //Firefoxï¼Opera 8.0+ï¼Safariï¼Chrome 3976 xmlHttp = new XMLHttpRequest(); 3977 } 3978 //éç¨åæ¥å è½½ 3979 xmlHttp.open("GET",url,false); 3980 //åéåæ¥è¯·æ±ï¼å¦ææµè§å¨ä¸ºChromeæOperaï¼å¿ é¡»åå¸åæè½è¿è¡ï¼ä¸ç¶ä¼æ¥é 3981 xmlHttp.send(null); 3982 //4ä»£è¡¨æ°æ®åé宿¯ 3983 if( xmlHttp.readyState == 4 ){ 3984 //0为访é®çæ¬å°ï¼200å°300ä»£è¡¨è®¿é®æå¡å¨æåï¼304代表没åä¿®æ¹è®¿é®çæ¯ç¼å 3985 if((xmlHttp.status >= 200 && xmlHttp.status <300) || xmlHttp.status == 0 || xmlHttp.status == 304){ 3986 var myBody = document.getElementsByTagName("HTML")[0]; 3987 var myScript = document.createElement( "script" ); 3988 myScript.language = "javascript"; 3989 myScript.type = "text/javascript"; 3990 try{ 3991 //IE8以å以ä¸ä¸æ¯æè¿ç§æ¹å¼ï¼éè¦éè¿text屿§æ¥è®¾ç½® 3992 myScript.appendChild(document.createTextNode(xmlHttp.responseText)); 3993 }catch (ex){ 3994 myScript.text = xmlHttp.responseText; 3995 } 3996 myBody.appendChild(myScript); 3997 return true; 3998 }else{ 3999 return false; 4000 } 4001 }else{ 4002 return false; 4003 } 4004 }, 4005 //å è½½ msg.js 4006 loadMsgJs:function(){ 4007 if(typeof(msg) != 'undefined'){ 4008 return; 4009 } 4010 translate.util.synchronizesLoadJs('https://res.zvo.cn/msg/msg.js'); 4011 }, 4012 /* 4013 对ä¸ä¸ªå¯¹è±¡ï¼æç §å¯¹è±¡çkeyçé¿åº¦è¿è¡æåºï¼è¶é¿è¶å¨åé¢ 4014 */ 4015 objSort:function(obj){ 4016 // è·å对象æ°ç»çææ keyï¼å¹¶è½¬æ¢ä¸ºæ®éæ°ç» 4017 var keys = Array.from(Object.keys(obj)); 4018 4019 // 对 key æ°ç»è¿è¡æåº 4020 keys.sort(function(a, b){ 4021 return b.length - a.length; 4022 }); 4023 4024 // å®ä¹ä¸ä¸ªæ°ç对象æ°ç»ï¼ç¨æ¥å卿åºåçç»æ 4025 var sortedObj = new Array(); 4026 4027 // éåæåºåç key æ°ç»ï¼å°å¯¹åºçå¼å¤å¶å°æ°ç对象æ°ç»ä¸ï¼å¹¶å é¤åæ¥ç对象æ°ç»ä¸çé®å¼å¯¹ 4028 for (var key of keys) { 4029 sortedObj[key] = obj[key]; 4030 } 4031 return sortedObj; 4032 }, 4033 /* 4034 å° 2.11.3.20231232 转å为 2011003 4035 è½¬åæ¶ä¼å»ææåä¸ä¸ªæ¥æçå符 4036 */ 4037 versionStringToInt:function(versionString){ 4038 var vs = versionString.split('\.'); 4039 var result = 0; 4040 result = parseInt(vs[0])*1000*1000 + result; 4041 result = parseInt(vs[1])*1000 + result; 4042 result = parseInt(vs[2]) + result; 4043 4044 return result; 4045 }, 4046 /** 4047 * å°ä¸ä¸ª JSONArray æ°ç»ï¼æç §æåé¿åº¦è¿è¡æåã 4048 * æ¯å¦ä¼ å ¥ç array æ°ç»çæåé¿åº¦æ¯6200ï¼ä¼ å ¥ç size æ¯2000ï¼é£ä¹å°±æ¯å° array æ°ç»æå为å¤ä¸ªé¿åº¦ä¸è¶ åº2000çæ°ç»è¿åã 4049 * 注æï¼è¿ä¸ªé¿åº¦æ¯æ array.toString() åçé¿åº¦ï¼ä¹å°±æ¯å å«äº [""] è¿ç§ç¬¦å·çé¿åº¦ 4050 * @param array è¦è¢«æåçæ°ç»ï¼å ¶å 齿¯Stringç±»åï¼ä¼ å ¥æ ¼å¼å¦ ["ä½ å¥½","ä¸ç"] 4051 * @param size è¦è¢«æåçé¿åº¦ 4052 * @return 被æååçæ°ç»å表 4053 * @author åæè ¾ 4054 */ 4055 split:function(array, size) { 4056 let list = []; 4057 // æ°ç»é¿åº¦å°äºsizeï¼ç´æ¥è¿è¡è¿å 4058 if(JSON.stringify(array).length <= size) { 4059 list.push(array); 4060 } else { 4061 // è½¬æ¢æString 4062 let arrayStr = JSON.stringify(array).trim().substring(1, JSON.stringify(array).length - 1); 4063 4064 // 夿sizeåå符串é¿åº¦çå·®å¼ï¼å¦æä¸º1æè 2ï¼å°±ç´æ¥ææä¸¤æ®µ 4065 if (JSON.stringify(array).length - size <= 2) { 4066 size = size - 4; 4067 // æä¸¤æ®µ 4068 let str1 = arrayStr.substring(0, arrayStr.lastIndexOf("\",\"")+1); 4069 let str2 = arrayStr.substring(arrayStr.lastIndexOf("\",\"")+2); 4070 list.push(JSON.parse("[" + str1 + "]")); 4071 list.push(JSON.parse("[" + str2 + "]")); 4072 } else { 4073 size = size - 2; 4074 // æå¤æ®µ 4075 let index = 0; 4076 while (index - arrayStr.length < 0) { 4077 // æç §æå®å¤§å°æä¸æ®µ 4078 let s = ""; 4079 if ((index+size) - arrayStr.length >= 0) { 4080 s = arrayStr.substring(index); 4081 } else { 4082 s = arrayStr.substring(index, (index+size)); 4083 }
4084 // ç»å°¾é¿åº¦é»è®¤ä¸ºå符串é¿åº¦ 4085 let endIndex = s.length; 4086 // å ä¸ºä¸æ¬¡å¼å§ç第ä¸ä¸ªå符å¯è½ä¼æ¯éå·ï¼æä»¥ä¸æ¬¡å¼å§éè¦+1 4087 let startNeedAdd = 1; 4088 // 夿æåä¸ä¸ªå符æ¯å¦ä¸ºåå¼å· 4089 if (s.endsWith("\"")) { 4090 // å¤æåæ°ç¬¬äºä¸ªæ¯å¦ä¸ºéå· 4091 if (s.endsWith("\",\"")) { 4092 // å é¤ä¸¤ä¸ªå符 4093 endIndex-=2; 4094 } else if (!s.startsWith("\"")) { 4095 // 妿å¼å¤´ä¸æ¯å¼å·ï¼éè¦è¡¥ä¸ä¸ªå¼å·ï¼è¿å°±å¯¼è´ä¼è¶ é¿ï¼æä»¥ç»å°¾å°±è¦æ¾æå®å符ç 4096 // æ¾åºæåä¸ä¸ªæå®å符çä½ç½® 4097 let la = s.lastIndexOf("\",\""); 4098 endIndex = la + 1; 4099 } 4100 } else if (s.endsWith("\",")) { 4101 // 夿æ¯å¦ä¸ºéå·ï¼æ¯çè¯å é¤ä¸ä¸ªå符 4102 endIndex-=1; 4103 } else { 4104 // é½ä¸æ¯ï¼é£å°±æ¯å 容ç»å°¾ 4105 // æ¾åºæåä¸ä¸ªæå®å符çä½ç½® 4106 let la = s.lastIndexOf("\",\""); 4107 endIndex = la + 1; 4108 // å å®¹è¶ é¿ï¼endIndexå°±ä¼åæ0ï¼è¿æ¶éè¦æå¨èµå¼ 4109 if (endIndex <= 0) { 4110 // ççæ¯å¦ä»¥å¼å·å¼å¤´ï¼å¦æä¸æ¯ï¼éè¦æ¼ä¸¤ä¸ªå¼å· 4111 if (s.startsWith("\"")) { 4112 // æ¼ä¸ä¸ªå¼å·ï¼-1 4113 endIndex = s.length() - 1; 4114 } else { 4115 // æ¼ä¸¤ä¸ªå¼å·ï¼-2 4116 endIndex = s.length() - 2; 4117 } 4118 if (!s.endsWith("\"")) { 4119 // å¼å§ä¸æ¯éå·äºï¼ä¸è½-1 4120 startNeedAdd = 0; 4121 } 4122 } 4123 } 4124 // æ ¹æ®å¤ççç»å°¾é¿åº¦è¿è¡ç¬¬äºæ¬¡æå 4125 let s2 = ""; 4126 if (endIndex - s.length > 0 || endIndex - 0 == 0) { 4127 s2 = s; 4128 endIndex = endIndex + s2.length; 4129 } else { 4130 s2 = s.substring(0, endIndex); 4131 } 4132 if (!s2.startsWith("\"") && !s2.startsWith(",\"")) { 4133 // æ¼ä¸ä¸ªå¼å· 4134 s2 = "\"" + s2; 4135 } 4136 if (!s2.endsWith("\"")) { 4137 // æ¼ä¸ä¸ªå¼å· 4138 s2 = s2 +"\""; 4139 } 4140 // 计ç®ä¸æ¬¡å¾ªç¯å¼å§çé¿åº¦ 4141 index += (endIndex + startNeedAdd); 4142 // å å°list 4143 s2 = "[" + s2 + "]"; 4144 try { 4145 list.push(JSON.parse(s2)); 4146 } catch (e) { 4147 // éå°é误ï¼ç¥è¿ä¸ä¸ªå符 4148 index = index - (endIndex + startNeedAdd) + 1; 4149 } 4150 } 4151 } 4152 } 4153 return list; 4154 }, 4155 /* 4156 æµè§å¨çè¯ç§æ è¯è·translate.jsçè¯ç§æ è¯çå¯¹åº 4157 key: æµè§å¨çè¯ç§æ è¯ 4158 value: translate.js çè¯ç§æ è¯ 4159 */ 4160 browserLanguage:{ 4161 'zh-CN':'chinese_simplified', 4162 'zh-TW':'chinese_traditional', 4163 'zh-HK':'chinese_traditional', 4164 'co':'corsican', 4165 'gn':'guarani', 4166 'rw':'kinyarwanda', 4167 'ha':'hausa', 4168 'no':'norwegian', 4169 'nl':'dutch', 4170 'yo':'yoruba', 4171 'en':'english', 4172 'kok':'gongen', 4173 'la':'latin', 4174 'ne':'nepali', 4175 'fr':'french', 4176 'cs':'czech', 4177 'haw':'hawaiian', 4178 'ka':'georgian', 4179 'ru':'russian', 4180 'fa':'persian', 4181 'bho':'bhojpuri', 4182 'hi':'hindi', 4183 'be':'belarusian', 4184 'sw':'swahili', 4185 'is':'icelandic', 4186 'yi':'yiddish', 4187 'tw':'twi', 4188 'ga':'irish', 4189 'gu':'gujarati', 4190 'km':'khmer', 4191 'sk':'slovak', 4192 'he':'hebrew', 4193 'kn':'kannada', 4194 'hu':'hungarian', 4195 'ta':'tamil', 4196 'ar':'arabic', 4197 'bn':'bengali', 4198 'az':'azerbaijani', 4199 'sm':'samoan', 4200 'af':'afrikaans', 4201 'id':'indonesian', 4202 'da':'danish', 4203 'sn':'shona', 4204 'bm':'bambara', 4205 'lt':'lithuanian', 4206 'vi':'vietnamese', 4207 'mt':'maltese', 4208 'tk':'turkmen', 4209 'as':'assamese', 4210 'ca':'catalan', 4211 'si':'singapore',
4212 'ceb':'cebuano', 4213 'gd':'scottish-gaelic', 4214 'sa':'sanskrit', 4215 'pl':'polish', 4216 'gl':'galician', 4217 'lv':'latvian', 4218 'uk':'ukrainian', 4219 'tt':'tatar', 4220 'cy':'welsh', 4221 'ja':'japanese', 4222 'fil':'filipino', 4223 'ay':'aymara', 4224 'lo':'lao', 4225 'te':'telugu', 4226 'ro':'romanian', 4227 'ht':'haitian_creole', 4228 'doi':'dogrid', 4229 'sv':'swedish', 4230 'mai':'maithili', 4231 'th':'thai', 4232 'hy':'armenian', 4233 'my':'burmese', 4234 'ps':'pashto', 4235 'hmn':'hmong', 4236 'dv':'dhivehi', 4237 'lb':'luxembourgish', 4238 'sd':'sindhi', 4239 'ku':'kurdish', 4240 'tr':'turkish', 4241 'mk':'macedonian', 4242 'bg':'bulgarian', 4243 'ms':'malay', 4244 'lg':'luganda', 4245 'mr':'marathi', 4246 'et':'estonian', 4247 'ml':'malayalam', 4248 'de':'deutsch', 4249 'sl':'slovene', 4250 'ur':'urdu', 4251 'pt':'portuguese', 4252 'ig':'igbo', 4253 'ckb':'kurdish_sorani', 4254 'om':'oromo', 4255 'el':'greek', 4256 'es':'spanish', 4257 'fy':'frisian', 4258 'so':'somali', 4259 'am':'amharic', 4260 'ny':'nyanja', 4261 'pa':'punjabi', 4262 'eu':'basque', 4263 'it':'italian', 4264 'sq':'albanian', 4265 'ko':'korean', 4266 'tg':'tajik', 4267 'fi':'finnish', 4268 'ky':'kyrgyz', 4269 'ee':'ewe', 4270 'hr':'croatian', 4271 'kri':'creole', 4272 'qu':'quechua', 4273 'bs':'bosnian', 4274 'mi':'maori' 4275 }, 4276 /* 4277 è·åæµè§å¨ä¸è®¾ç½®çé»è®¤ä½¿ç¨è¯è¨ 4278 è¿åçæ¯ translate.js çè¯è¨å¯ä¸æ è¯ 4279 妿è¿åçæ¯ç©ºå符串ï¼åæ¯æ²¡æå¹é å°ï¼å¯è½æ¯æ²¡æè·åå°æ¬å°è¯è¨ï¼ä¹å¯è½æ¯æ¬å°è¯è¨è·translate.js ç¿»è¯ééæ²¡æå¯¹åºä¸ï¼ 4280 */ 4281 browserDefaultLanguage:function(){ 4282 var language = navigator.language || navigator.userLanguage; 4283 if(typeof(language) == 'string' && language.length > 0){ 4284 var tLang = translate.util.browserLanguage[language]; 4285 if(typeof(tLang) == 'undefined'){ 4286 //没æå¨éé¢ 4287 console.log('browser default language : '+language +', translate.js current translate channel not support this language '); 4288 }else{ 4289 return tLang; 4290 } 4291 } 4292 4293 //å°å ¶è½¬å为 translate.js çè¯è¨idï¼æ¯å¦ç®ä½ä¸ææ¯ chinese_simplified ã è±è¯æ¯ english 4294 return ''; 4295 } 4296 }, 4297 //æºå¨ç¿»è¯éç¨åªç§ç¿»è¯æå¡ 4298 service:{ 4299 /* 4300 nameå¡«åç弿 4301 translate.service æ http://translate.zvo.cn/41160.html æä¾æºå¨ç¿»è¯æå¡ 4302 client.edge æedgeæµè§å¨æ¥å£æä¾ç¿»è¯æå¡ ï¼ä¹å°±æ¯æ§è¡ç¿»è¯æ¶ç´æ¥æ¯ 4303 4304 */ 4305 name:'translate.service', 4306 4307 /* 4308 å ¶å®å°±æ¯è®¾ç½® translate.service.name 4309 4310 */ 4311 use: function(serviceName){ 4312 if(translate.enterprise.isUse == true){ 4313 console.log('æ¨å·²å¯ç¨äºä¼ä¸çº§ç¿»è¯éé translate.enterprise.use(); (ææ¡£ï¼https://translate.zvo.cn/4087.html) , æä»¥æ¨è®¾ç½®ç translate.service.use(\''+serviceName+'\'); (ææ¡£ï¼https://translate.zvo.cn/4081.html) å°å¤±æä¸èµ·ä½ç¨ï¼æä¼ä¸çº§ç¿»è¯ééå ¨é¨æ¥ç®¡ã'); 4314 return; 4315 } 4316 if(typeof(serviceName) == 'string' && serviceName == 'client.edge'){ 4317 translate.service.name = serviceName; 4318 4319 //å¢å å ç´ æ´ä½ç¿»è¯è½å 4320 translate.whole.enableAll(); 4321 } 4322 }, 4323 //客æ·ç«¯æ¹å¼çedgeæä¾æºå¨ç¿»è¯æå¡ 4324 edge:{ 4325 api:{ //edgeæµè§å¨çç¿»è¯åè½ 4326 auth:'https://edge.microsoft.com/translate/auth', //authæææå 4327 translate:'https://api.cognitive.microsofttranslator.com/translate?from={from}&to={to}&api-version=3.0&includeSentenceLength=true' //ç¿»è¯æ¥å£ 4328 }, 4329 4330 language:{ 4331 json:[{"id":"ukrainian","name":"УкÑаÑнÑÑкаName","serviceId":"uk"},{"id":"norwegian","name":"Norge","serviceId":"no"},{"id":"welsh","name":"color name","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":"à°¤à±à°²à±à°à±QFontDatabase","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"}
4331,{"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":"áááááKCharselect unicode block 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"}], 4332 /* 4333 è·åmapå½¢å¼çè¯è¨å表 4334 key为 translate.service ç name 4335 value为serviceId 4336 4337 */ 4338 getMap:function(){ 4339 if(typeof(translate.service.edge.language.map) == 'undefined'){ 4340 translate.service.edge.language.map = new Array(); 4341 for(var i = 0; i < translate.service.edge.language.json.length; i++){ 4342 var item = translate.service.edge.language.json[i]; 4343 translate.service.edge.language.map[item.id] = item.serviceId; 4344 } 4345 } 4346 return translate.service.edge.language.map; 4347 } 4348 }, 4349 /** 4350 * edge è¿è¡ç¿»è¯ã è¿ä¸ªä¼ å ¥åæ°è· translate.request.post æ¯ä¸æ ·ç 4351 * @param path 请æ±çpathï¼pathï¼ä¼ å ¥çæ¯translate.request.api.translate è¿ç§çï¼éè¦ä½¿ç¨ getUrl æ¥ç»åçæ£è¯·æ±çurl ï¼ 4352 * @param data 请æ±çåæ°æ°æ® 4353 * @param func 请æ±å®æçåè°ï¼ä¼ å ¥å¦ function(data){ console.log(data); } 4354 */ 4355 translate:function(path, data, func){ 4356 var textArray = JSON.parse(decodeURIComponent(data.text)); 4357 let translateTextArray = translate.util.split(textArray, 48000); 4358 //console.log(translateTextArray); 4359 4360 4361 translate.request.send(translate.service.edge.api.auth, {}, function(auth){ 4362 var from = translate.service.edge.language.getMap()[data.from]; 4363 var to = translate.service.edge.language.getMap()[data.to]; 4364 var transUrl = translate.service.edge.api.translate.replace('{from}',from).replace('{to}',to); 4365 4366 //å¦æç¿»è¯é大ï¼è¦æåæå¤æ¬¡ç¿»è¯è¯·æ± 4367 for(var tai = 0; tai<translateTextArray.length; tai++){ 4368 var json = []; 4369 for(var i = 0; i<translateTextArray[tai].length; i++){ 4370 json.push({"Text":translateTextArray[tai][i]}); 4371 } 4372 4373 translate.request.send(transUrl, JSON.stringify(json), function(result){ 4374 var d = {}; 4375 d.info = 'SUCCESS'; 4376 d.result = 1; 4377 d.from = data.from; 4378 d.to = data.to; 4379 d.text = []; 4380 for(var t = 0; t < result.length; t++){ 4381 d.text.push(result[t].translations[0].text); 4382 } 4383 4384 4385 //夿å½åç¿»è¯æ¯å¦å被æåè¿ï¼æ¯å¦ä¸æ¬¡è¶ è¿5ä¸å符çè¯å°±è¦æåæå¤æ¬¡è¯·æ±äº 4386 if(translateTextArray.length > 1){ 4387 //è¿ä¸æ¬¡ç¿»è¯åæåäºå¤æ¬¡è¯·æ±ï¼é£ä¹è¦è¿è¡è¡¥å ¨æ°ç»ï¼ä½¿æ°ç»ä¸ªæ°è½ä¸è´ 4388 4389 /* 4390 4391 注æè¿éæ ¹æ®æ°ç»çé¿åº¦æ¥å¤æå½åå±äºç¬¬å 个æ°ç»ï¼ 4392 æå ç伿¯æåçæ°ç»ï¼å ¶ä¸æä¸¤ç»çé¿åº¦æ¯ä¸æ ·çï¼ 4393 è¿æ ·çè¯æ¯æé®é¢çï¼åªä¸è¿å çå¾å°ï¼å°±å è¿æ ·äº 4394 ä½ç»å½è¿æ¯çäºä¸ªå -- è®°å½ 4395 4396 */ 4397 4398 var currentIndex = -1; //å½åç¿»è¯è¯·æ±å±äºè¢«æåç第å ä¸ªçæ°ç»ä¸æ ï¼ä»0å¼å§ç 4399 for(var cri = 0; cri < translateTextArray.length; cri++){ 4400 if(translateTextArray[cri].length - d.text.length == 0){ 4401 currentIndex = cri; 4402 break; 4403 } 4404 } 4405 4406 //è¿è¡å¯¹ååè¿è¡è¡¥é½æ°ç» 4407 if(currentIndex < 0){ 4408 console.log('------ERROR--------'); 4409 console.log('ç¿»è¯å 容è¿å¤ï¼è¿è¡æåï¼ä½æå夿åºç°å¼å¸¸ï¼currentIndexï¼-1 请èç³» http://translate.zvo.cn/43006.html 说æ'); 4410 } 4411 //åæå ¥ç©ºæ°ç»å¡«å 4412 for(var addbeforei = 0; addbeforei<currentIndex; addbeforei++){
4413 var beforeItemArrayLength = translateTextArray[addbeforei].length; 4414 //console.log('beforeItemArrayLength:'+beforeItemArrayLength); 4415 for(var bi = 0; bi < beforeItemArrayLength; bi++){ 4416 d.text.unshift(null); 4417 } 4418 } 4419 //åæå ¥ç©ºæ°ç»å¡«å 4420 for(var addafteri = translateTextArray.length-1; addafteri>currentIndex; addafteri--){ 4421 var afterItemArrayLength = translateTextArray[addafteri].length; 4422 for(var bi = 0; bi < afterItemArrayLength; bi++){ 4423 d.text.push(null); 4424 } 4425 } 4426 4427 } 4428 4429 func(d); 4430 }, 'post', true, {'Authorization':'Bearer '+auth, 'Content-Type':'application/json'}, function(xhr){ 4431 console.log('---------error--------'); 4432 console.log('edge translate service error, http code : '+xhr.status + ', response text : '+xhr.responseText); 4433 }, true); 4434 4435 4436 } 4437 //console.log('translateResultArray') 4438 //console.log(translateResultArray); 4439 4440 4441 }, 'get', true, {'content-type':'application/x-www-form-urlencoded'}, function(xhr){ 4442 console.log('---------error--------'); 4443 console.log('edge translate service error, http code : '+xhr.status + ', response text : '+xhr.responseText); 4444 }, true); 4445 4446 4447 4448 4449 4450 } 4451 } 4452 }, 4453 //requestè¯·æ±æ¥æºäº https://github.com/xnx3/request 4454 request:{ 4455 4456 //ç¸å ³APIæ¥å£æ¹é¢ 4457 api:{ 4458 /** 4459 * ç¿»è¯æ¥å£è¯·æ±çååä¸»æº host 4460 * æ ¼å¼æ³¨æåé¢è¦å¸¦ä¸åè®®å¦ https:// åååè¦å / 4461 * v2.8.2 å¢å æ°ç»å½¢æï¼å¦ ['https://api.translate.zvo.cn/','xxxxx'] 4462 */ 4463 //host:'https://api.translate.zvo.cn/', 4464 host:['https://api.translate.zvo.cn/','https://america.api.translate.zvo.cn/'], 4465 //hostçå¤ç¨æ¥å£ï¼æ ¼å¼åhostï¼å¯ä»¥å¡«åå¤ä¸ªï¼åªä¸è¿è¿éæ¯æ°ç»æ ¼å¼ãåªæå½ä¸» host æ æ³è¿éæ¶ï¼æä¼éç¨å¤hostæ¥æä¾è®¿é®ãå¦æä¸ºç©ºä¹å°±æ¯ [] 忝ä¸éç¨å¤æ¹æ¡ã 4466 //backupHost:['',''], 4467 language:'language.json', //è·åæ¯æçè¯ç§å表æ¥å£ 4468 translate:'translate.json', //ç¿»è¯æ¥å£ 4469 ip:'ip.json', //æ ¹æ®ç¨æ·å½åipè·åå ¶æå¨å°çè¯ç§ 4470 connectTest:'connectTest.json', //ç¨äº translate.js å¤èç¹ç¿»è¯èªå¨æ£æµç½ç»è¿éæ åµ 4471 init:'init.json', //è·åææ°çæ¬å·ï¼è·å½åçæ¬è¿è¡æ¯å¯¹ï¼ç¨äºæéçæ¬å级çä½¿ç¨ 4472 4473 }, 4474 /* 4475 请æ±å端æ¥å£çååºãæ 论æ¯å¦æåï¼é½ä¼è§¦åæ¤å¤ã 4476 å¦å¤å½ xhr.readyState==4 çç¶ææ¶æä¼è§¦åã 4477 æ¤å¤ä¼å¨æ¥å£è¯·æ±ååºåãä¸å¨translate.jså¤çåå°±ä¼è§¦å 4478 @param xhr XMLHttpRequest æ¥å£è¯·æ± 4479 4480 */ 4481 response:function(xhr){ 4482 //console.log('response------'); 4483 //console.log(xhr); 4484 }, 4485 /* 4486 éåº¦æ£æµæ§å¶ä¸å¿ï¼ æ£æµä¸»å¤ç¿»è¯æ¥å£çååºé度è¿è¡æåï¼çæ£è¯·æ±æ¶ï¼æç §æåç顺åºè¿è¡è¯·æ± 4487 v2.8.2å¢å 4488 4489 storageå卿¹é¢ 4490 storageåå¨çkey åçä»ä¹ 4491 speedDetectionControl_hostQueue hostQueue 4492 speedDetectionControl_hostQueueIndex å½åè¦ä½¿ç¨çæ¯ hostQueue ä¸çæ°ç»ä¸æ ãå¦ææ²¡æï¼è¿éé»è®¤è§ä¸º0 4493 speedDetectionControl_lasttime æå䏿¬¡æ§è¡éåº¦æ£æµçæ¶é´æ³ï¼13使¶é´æ³ 4494 4495 4496 4497 */ 4498 speedDetectionControl:{ 4499 /* 4500 4501 è¿è¡ connect主èç¹ç¼©åçæ¶é´ï¼å使¯æ¯«ç§. 4502 è¿ä¸ªæ¯è¿è¡ translate.request.speedDetectionControl.checkResponseSpeed() èç¹æµéæ¶ï¼translate.request.api.host 第ä¸ä¸ªå ç´ æ¯é»è®¤ç主èç¹ã 4503 主èç¹å¨å®é æµéå®åï¼ä¼åå»ä¸å®çæ¶é´ï¼ä»¥ä¾¿è®©ç¨æ·å¤§é¨åæ¶é´å¯ä»¥ä½¿ç¨ä¸»èç¹ï¼èä¸å¿ èµ°åèç¹ã 4504 ä¾å¦ä¸»èç¹å®é ååºé度 3500 毫ç§ï¼é£ä¹ä¼åå»è¿é设置ç2000毫ç§ï¼è®°ä¸º 1500 æ¯«ç§ 4505 å½ç¶å¦ææ¯å°äºè¿é设置ç2000毫ç§ï¼é£ä¹ä¼è®°ä¸º0毫ç§ã 4506 è¿æ ·åè·å ¶ä»åèç¹çååºæ¶é´è¿è¡å¯¹æ¯ï¼ä¸»èç¹åªè¦ä¸æ¯ååºè¶ æ¶ï¼å°±ä¼ææ´å¤§çå ç被éä¸ä¸ºå®é 使ç¨çç¿»è¯çèç¹ 4507 4508 è¿éçå使¯æ¯«ç§ã 4509 v2.10.2.20231225 å¢å 4510 */ 4511 hostMasterNodeCutTime:2000, 4512 4513 /* 4514 ç¿»è¯çéåï¼è¿æ¯æ ¹æ®ç½ç»ç¸åºçé度æåçï¼0䏿 ä¸ºè¯·æ±æå¿«ï¼1次ä¹... 4515 å ¶æ ¼å¼ä¸ºï¼ 4516 [ 4517 { 4518 "host":"xxxxxxxx", 4519 "time":123 //è¿éçå使¯æ¯«ç§ 4520 }, 4521 { 4522 "host":"xxxxxxxx", 4523 "time":123 //è¿éçå使¯æ¯«ç§ 4524 } 4525 ] 4526 */ 4527 hostQueue:[], 4528 hostQueueIndex:-1, //å½å使ç¨ç hostQueueçæ°ç»ä¸æ ï¼ -1è¡¨ç¤ºè¿æªåå§åèµäºå¼ï¼ä¸å¯ç´æ¥ä½¿ç¨ï¼éè¿ getHostQueueIndex() ä½¿ç¨ 4529 disableTime:1000000, //ä¸å¯ç¨çæ¶é´ï¼storageä¸åå¨ç speedDetectionControl_hostQueue å ¶ä¸ time è¿éï¼å¦æå¼æ¯ è¿ä¸ªï¼ä¾¿æ¯ä»£è¡¨è¿ä¸ªhostå¤äºä¸å¯ç¨ç¶æ 4530 4531 4532 //è·å host queue éå 4533 getHostQueue:function(){ 4534 if(translate.request.speedDetectionControl.hostQueue.length == 0){ 4535 //è¿æ²¡æï¼å 仿¬å°åå¨ä¸åï¼çä¹åæ¯å¦å·²ç»è®¾ç½®è¿äº 4536 // åªæç»è¿çæ£çç½ç»æµéåï¼æä¼å å ¥ storage ç hostQueue 4537 var storage_hostQueue = translate.storage.get('speedDetectionControl_hostQueue'); 4538 if(storage_hostQueue == null || typeof(storage_hostQueue) == 'undefined'){ 4539 //æ¬å°åå¨ä¸æ²¡æï¼ä¹å°±æ¯ä¹å没设置è¿ï¼æ¯ç¬¬ä¸æ¬¡ç¨ï¼é£ä¹ç´æ¥è®² translate.request.api.host èµäºä¹ 4540 //translate.request.api.host 4541 //console.log(typeof(translate.request.api.host)) 4542 if(typeof(translate.request.api.host) == 'string'){ 4543 //å个ï¼é£ä¹èµäºæ°ç»å½¢å¼ 4544 //translate.request.speedDetectionControl.hostQueue = [{"host":translate.request.api.host, time:0 }]; 4545 translate.request.api.host = [''+translate.request.api.host]; 4546 } 4547 4548 //console.log(translate.request.api.host) 4549 //æ°ç»å½¢æï¼å¤ä¸ªï¼v2.8.2 å¢å å¤ä¸ªï¼æ ¹æ®ä¼å 级è¿å 4550 translate.request.speedDetectionControl.hostQueue = []; 4551 for(var i = 0; i<translate.request.api.host.length; i++){ 4552 var h = translate.request.api.host[i]; 4553 //console.log(h); 4554 translate.request.speedDetectionControl.hostQueue[i] = {"host":h, time:0 }; 4555 } 4556 //console.log(translate.request.speedDetectionControl.hostQueue); 4557 4558 }else{ 4559 //storage䏿ï¼é£ä¹èµäº 4560 translate.request.speedDetectionControl.hostQueue = JSON.parse(storage_hostQueue); 4561 //console.log(storage_hostQueue); 4562 //console.log(translate.request.speedDetectionControl.hostQueue[0].time); 4563 } 4564 4565 //console.log(translate.request.speedDetectionControl.hostQueue) 4566 4567 /* 4568 å½é¡µé¢ç¬¬ä¸æ¬¡æå¼åå§åè¿ä¸ªæ¶æä¼è¿è¡æµéï¼å¦å¤æµé乿¯è¦å¤ææ¶é´çï¼äºåé䏿¬¡ 4569 è¿è¡æµé 4570 */ 4571 var lasttime = translate.storage.get('speedDetectionControl_lasttime'); 4572 if(lasttime == null || typeof(lasttime) == 'undefined'){ 4573 lasttime = 0; 4574 } 4575 var updateTime = 60000; //1å鿣æµä¸æ¬¡ 4576 if(new Date().getTime() - lasttime > updateTime){ 4577 translate.request.speedDetectionControl.checkResponseSpeed(); 4578 } 4579 4580 } 4581 4582 4583 return translate.request.speedDetectionControl.hostQueue; 4584 }, 4585 4586 /* 4587 æå¡äº checkResponseSpeed ç¨äºå°æµè¯ç»æåå ¥ storage 4588 time: å½åæ¥å£è¯·æ±çèæ¶ï¼å使¯æ¯«ç§ãå¦ææ¯ 1000000 é£ä¹è¡¨ç¤ºè¿ä¸ªæ¥å£ä¸å¯ç¨ 4589 */ 4590 checkResponseSpeed_Storage:function(host, time){ 4591 4592 translate.request.speedDetectionControl.checkHostQueue.push({"host":host, "time":time }); 4593 //æç §timeè¿è¡æåº 4594 translate.request.speedDetectionControl.checkHostQueue.sort((a, b) => a.time - b.time); 4595 4596 //åå¨å° storage æä¹ å 4597 translate.storage.set('speedDetectionControl_hostQueue',JSON.stringify(translate.request.speedDetectionControl.checkHostQueue)); 4598 translate.storage.set('speedDetectionControl_lasttime', new Date().getTime()); 4599 4600 translate.request.speedDetectionControl.hostQueue = translate.request.speedDetectionControl.checkHostQueue; 4601 }, 4602 4603 //æµè¯ååºé度 4604 checkResponseSpeed:function(){ 4605 var headers = { 4606 'content-type':'application/x-www-form-urlencoded', 4607 }; 4608 4609 4610 translate.request.speedDetectionControl.checkHostQueue = []; //ç¨äºå®é åå¨ 4611 translate.request.speedDetectionControl.checkHostQueueMap = []; //åªæ¯mapï¼éè¿keyåå¼ï¼æ å ¶ä»ä½ç¨ 4612 4613 if(typeof(translate.request.api.host) == 'string'){ 4614 //å个ï¼é£ä¹èµäºæ°ç»å½¢å¼ 4615 translate.request.api.host = [''+translate.request.api.host]; 4616 } 4617 4618 for(var i = 0; i < translate.request.api.host.length; i++){ 4619 var host = translate.request.api.host[i]; 4620 // è·åå½åæ¶é´çæ¶é´æ³ 4621 translate.request.speedDetectionControl.checkHostQueueMap[host] = { 4622 start:new Date().getTime() 4623 }; 4624 4625 4626 try{ 4627 translate.request.send( 4628 host+translate.request.api.connectTest, 4629 {host:host}, 4630 function(data){ 4631 var host = data.info; 4632 var map = translate.request.speedDetectionControl.checkHostQueueMap[host]; 4633 var time = new Date().getTime() - map.start; 4634 4635 if(translate.request.api.host[0] == host){ 4636 //console.log('妿æ¯ç¬¬ä¸ä¸ªï¼é£ä¹æ¯ä¸»çï¼é»è®¤å 许缩å2000毫ç§ï¼ä¹å°±æ¯ä¼å 使ç¨ä¸»ç'); 4637 time = time - translate.request.speedDetectionControl.hostMasterNodeCutTime; 4638 if(time < 0){ 4639 time = 0; 4640 } 4641 } 4642 4643 translate.request.speedDetectionControl.checkResponseSpeed_Storage(host, time); 4644 /* 4645 translate.request.speedDetectionControl.checkHostQueue.push({"host":host, "time":time }); 4646 //æç §timeè¿è¡æåº 4647 translate.request.speedDetectionControl.checkHostQueue.sort((a, b) => a.time - b.time); 4648 4649 //åå¨å° storage æä¹ å 4650 translate.storage.set('speedDetectionControl_hostQueue',JSON.stringify(translate.request.speedDetectionControl.checkHostQueue)); 4651 translate.storage.set('speedDetectionControl_lasttime', new Date().getTime()); 4652 4653 translate.request.speedDetectionControl.hostQueue = translate.request.speedDetectionControl.checkHostQueue; 4654 //console.log(translate.request.speedDetectionControl.hostQueue); 4655 */ 4656 }, 4657 'post', 4658 true, 4659 headers, 4660 function(data){ 4661 //translate.request.speedDetectionControl.checkResponseSpeed_Storage(host, time); 4662 var hostUrl = data.requestURL.replace('connectTest.json',''); 4663 translate.request.speedDetectionControl.checkResponseSpeed_Storage(hostUrl, translate.request.speedDetectionControl.disableTime); 4664 }, 4665 false 4666 ); 4667 }catch(e){ 4668 //console.log('e0000'); 4669 console.log(e); 4670 //time = 300000; //æ æ³è¿æ¥çï¼é£ä¹èµäº 300 ç§å§ 4671 } 4672 4673 } 4674 4675 }, 4676 4677 //è·åå½å使ç¨çhostçæ°ç»ä¸æ 4678 getHostQueueIndex:function(){ 4679 if(translate.request.speedDetectionControl.hostQueueIndex < 0){ 4680 //页é¢å½åç¬¬ä¸æ¬¡ä½¿ç¨ï¼èµäºå¼ 4681 //å ä» storage ä¸å 4682 var storage_index = translate.storage.get('speedDetectionControl_hostQueueIndex'); 4683 if(typeof(storage_index) == 'undefined' || storage_index == null){ 4684 //åå¨ä¸ä¸åå¨ï¼å½åç¨æ·ï¼æµè§å¨ï¼ç¬¬ä¸æ¬¡ä½¿ç¨ï¼é»è®¤èµäº0 4685 translate.request.speedDetectionControl.hostQueueIndex = 0; 4686 translate.storage.set('speedDetectionControl_hostQueueIndex',0); 4687 }else{ 4688 translate.request.speedDetectionControl.hostQueueIndex = storage_index; 4689 } 4690 } 4691 return translate.request.speedDetectionControl.hostQueueIndex; 4692 }, 4693 4694 //è·åå½åè¦ä½¿ç¨çhost 4695 getHost:function(){ 4696 var queue = translate.request.speedDetectionControl.getHostQueue(); 4697 //console.log(queue); 4698 var queueIndex = translate.request.speedDetectionControl.getHostQueueIndex(); 4699 if(queue.length > queueIndex){ 4700 //æ£å¸¸ï¼æ²¡æè¶ åºè¶ç 4701 4702 }else{ 4703 //å¼å¸¸ï¼ä¸æ è¶çäºï¼ï¼åºå®è¿åæåä¸ä¸ª 4704 console.log('å¼å¸¸ï¼ä¸æ è¶çäºï¼indexï¼'+queueIndex); 4705 queueIndex = queue.length-1; 4706 } 4707 //console.log(queueIndex); 4708 return queue[queueIndex].host; 4709 }, 4710 4711 }, 4712 //çæpost请æ±çurl 4713 getUrl:function(path){ 4714 var currentHost = translate.request.speedDetectionControl.getHost(); 4715 var url = currentHost+path+'?v='+translate.version; 4716 //console.log('url: '+url); 4717 return url; 4718 }, 4719 /** 4720 * postè¯·æ± 4721 * @param path 请æ±çpathï¼pathï¼ä¼ å ¥çæ¯translate.request.api.translate è¿ç§çï¼éè¦ä½¿ç¨ getUrl æ¥ç»åçæ£è¯·æ±çurl ï¼ 4722 * @param data 请æ±çåæ°æ°æ®ï¼ä¼ å ¥å¦ 4723 * { 4724 * from: "chinese_simplified", 4725 * text: "%5B%22%E4%BD%A0%E5%A5%BD%EF%BC%8C%E6%88%91", 4726 * to: "chinese_traditional 4727 * } 4728 * 4729 * @param func 请æ±å®æçåè°ï¼ä¼ å ¥å¦ function(data){ console.log(data); } 4730 */ 4731 post:function(path, data, func){ 4732 var headers = { 4733 'content-type':'application/x-www-form-urlencoded', 4734 }; 4735 if(typeof(data) == 'undefined'){ 4736 return; 4737 } 4738 4739 //ä¼ä¸çº§ç¿»è¯èªå¨æ£æµ 4740 translate.enterprise.automaticAdaptationService(); 4741 4742 // ------- edge start -------- 4743 var url = translate.request.getUrl(path); 4744 //if(url.indexOf('edge') > -1 && path == translate.request.api.translate){ 4745 if(translate.service.name == 'client.edge'){ 4746 if(path == translate.request.api.translate){ 4747 translate.service.edge.translate(path, data, func); 4748 return; 4749 } 4750 if(path == translate.request.api.language){ 4751 var d = {}; 4752 d.info = 'SUCCESS'; 4753 d.result = 1; 4754 d.list = translate.service.edge.language.json; 4755 func(d); 4756 return; 4757 } 4758 4759 //return; 4760 } 4761 // ------- edge end -------- 4762 4763 this.send(path, data, func, 'post', true, headers, null, true); 4764 }, 4765 /** 4766 * åéè¯·æ± 4767 * url 请æ±çurlæè pathï¼pathï¼ä¼ å ¥çæ¯translate.request.api.translate è¿ç§çï¼éè¦ä½¿ç¨ getUrl æ¥ç»åçæ£è¯·æ±çurl ï¼ 4768 * data 请æ±çæ°æ®ï¼å¦ {"author":"管é·é¸£",'site':'www.guanleiming.com'} 4769 * func 请æ±å®æçåè°ï¼ä¼ å ¥å¦ function(data){} 4770 * method è¯·æ±æ¹å¼ï¼å¯ä¼ å ¥ postãget 4771 * isAsynchronize æ¯å¦æ¯å¼æ¥è¯·æ±ï¼ ä¼ å ¥ true æ¯å¼æ¥è¯·æ±ï¼ä¼ å ¥false æ¯åæ¥è¯·æ±ã å¦æä¼ å ¥falseï¼åæ¬æ¹æ³è¿åxhr 4772 * headers 设置请æ±çheaderï¼ä¼ å ¥å¦ {'content-type':'application/x-www-form-urlencoded'}; 4773 * abnormalFunc ååºå¼å¸¸ææ§è¡çæ¹æ³ï¼ååºç 䏿¯200就伿§è¡è¿ä¸ªæ¹æ³ ,ä¼ å ¥å¦ function(xhr){} å¦å¤è¿éç xhr ä¼é¢å¤æä¸ªåæ° xhr.requestURL è¿åå½å请æ±å¤±è´¥çurl 4774 * showErrorLog æ¯å¦æ§å¶å°æå°åºæ¥é误æ¥å¿ï¼trueæå°ï¼ false ä¸æå° 4775 */ 4776 send:function(url, data, func, method, isAsynchronize, headers, abnormalFunc, showErrorLog){ 4777 //postæäº¤çåæ° 4778 var params = ''; 4779 4780 if(data == null || typeof(data) == 'undefined'){ 4781 data = {}; 4782 } 4783 //å å ¥æµè§å¨é»è®¤è¯ç§ v3.6.1 å¢å ï¼ä»¥ä¾¿æ´å¥½çè¿è¡èªå¨åæ¢è¯ç§ 4784 data.browserDefaultLanguage = translate.util.browserDefaultLanguage(); 4785 4786 if(typeof(data) == 'string'){ 4787 params = data; //payload æ¹å¼ 4788 }else{ 4789 //表åæäº¤æ¹å¼ 4790 for(var index in data){ 4791 if(params.length > 0){ 4792 params = params + '&'; 4793 } 4794 params = params + index + '=' + data[index]; 4795 } 4796 } 4797 4798 if(url.indexOf('https://') == 0 || url.indexOf('http://') == 0){ 4799 //éç¨çurlç»å¯¹è·¯å¾ 4800 }else{ 4801 //ç¸å¯¹è·¯å¾ï¼æ¼æ¥ä¸host 4802 url = translate.request.getUrl(url); 4803 } 4804 4805 var xhr=null; 4806 try{ 4807 xhr=new XMLHttpRequest(); 4808 }catch(e){ 4809 xhr=new ActiveXObject("Microsoft.XMLHTTP"); 4810 } 4811 //2.è°ç¨openæ¹æ³ï¼true----弿¥ï¼ 4812 xhr.open(method,url,isAsynchronize); 4813 //设置headers 4814 if(headers != null){ 4815 for(var index in headers){ 4816 xhr.setRequestHeader(index,headers[index]); 4817 } 4818 } 4819 if(translate.service.name == 'translate.service'){ 4820 xhr.setRequestHeader('currentpage', window
4820.location.href+''); 4821 } 4822 xhr.send(params); 4823 //4.请æ±ç¶ææ¹åäºä»¶ 4824 xhr.onreadystatechange=function(){ 4825 if(xhr.readyState==4){ 4826 translate.request.response(xhr); //èªå®ä¹ååºçæ¦æª 4827 4828 if(xhr.status==200){ 4829 //è¯·æ±æ£å¸¸ï¼ååºç 200 4830 var json = null; 4831 if(typeof(xhr.responseText) == 'undefined' || xhr.responseText == null){ 4832 //ç¸åºå 容为空 4833 }else{ 4834 //ååºå 容æå¼ 4835 if(xhr.responseText.indexOf('{') > -1 && xhr.responseText.indexOf('}') > -1){ 4836 //åºè¯¥æ¯jsonæ ¼å¼ 4837 try{ 4838 json = JSON.parse(xhr.responseText); 4839 }catch(e){ 4840 console.log(e); 4841 } 4842 } 4843 } 4844 4845 if(json == null){ 4846 func(xhr.responseText); 4847 }else{ 4848 func(json); 4849 } 4850 }else{ 4851 if(showErrorLog){ 4852 if(url.indexOf(translate.request.api.connectTest) > -1){ 4853 //æµè¯é¾æ¥é度çä¸å¨æ¥ééé¢ 4854 }else{ 4855 4856 //夿æ¯å¦æ¯v2çæ¬çç¿»è¯ï¼å¦ææ¯ translate.service 模å¼å¹¶ä¸æ²¡æä½¿ç¨ä¼ä¸çº§ç¿»è¯ï¼åä¼æç¤º 4857 //2024.3æåºå¼å§ï¼ç¿»è¯ä½¿ç¨éå¢å ç太快ï¼å¼æºçç¿»è¯æå¡å¨æç¹æä¸ä½ç»å¸¸åºæ éï¼æä»¥ç´æ¥æè¿ä¸ªæç¤ºå å°è¿é 4858 if(translate.service.name == 'translate.service' && !translate.enterprise.isUse){ 4859 console.log('----- translate.js æç¤º -----\néå¸¸æ±æï¼translate.service 弿ºå è´¹çç¿»è¯æå¡å¨å½åå¹¶ååæµé太大导è´é»å¡ï¼\nè¿ä¸ªæ 嵿¯æ¶ä¸æ¶åççï¼å¤§æ¦ä¸å¤©24å°æ¶å¯è½ä¼æä¸äºååéè¿ç§æ åµï¼ä¸»è¦æ¯å 为使ç¨é太大äºï¼æä½¿ç¨éè½è¶ ååäº¿æ¬¡ï¼æä»¥å¨é«åæ¶ä¼åºç°è¿ç§æ åµã\nè§£å³è¿ç§æ åµå¯ä»¥æä¸¤ç§æ¹æ¡ï¼\nãæ¹æ¡ä¸ãï¼ä½¿ç¨éç¨ææ°çæ¬ 3.8.0åæ´é«çæ¬ï¼jså¼ç¨æä»¶ä¸º https://cdn.staticfile.net/translate.js/3.8.0/translate.js å¹¶ä¸ä½¿ç¨ client.edge æ¨¡å¼ ï¼å¢å ä¸è¡è®¾ç½®ä»£ç 就好ï¼å¯åè https://translate.zvo.cn/4081.html ï¼ï¼è¿æ ·å°±ä¸ä¼ååºç°è¿ç§æ åµäºãè¿ä¸ªæ¯æä»¬ç translate.service ééé»å¡å¯¼è´ï¼æ´æ¢å«çééå°±å¯ä»¥é¿å è¿æ ·äºãèä¸è¿ä¸ªæ¹æ¡ä¹æ¯å®å ¨å è´¹çã \nãæ¹æ¡äºãï¼éç¨ä¼ä¸çº§ç¨³å®ç¿»è¯éé ,使¯è¿ä¸ªç¸æ¯äº æ¹æ¡ä¸ æ¥è¯´ï¼æ¯æä¸å®çæ¶è´¹çï¼å¤§æ¦ä¸å¹´600ï¼è¿ä¸ªå°±æ¯ä¸é¨ä¸ºäºé«éåé«ç¨³å®åå¤çï¼èç¸æ¯äºè¿ä¸ªæ¹æ¡äºï¼æ¹æ¡ä¸åæ¯å ¨å è´¹çã å ä¸ºæ¹æ¡äºæä»¬æ¯é¨ç½²äºä¸¤ä¸ªé群ï¼èæ¯ä¸ªé群åä¸åäºæ°ä¸ªç½ç»èç¹ï¼å å«ä¸å½å¤§éã馿¸¯ãç¾å½ã欧洲ã çå¤ä¸ªå·ï¼å åä¿é稳å®ã髿ï¼åæ ·ä¹äº§çäºä¸å°ææ¬ï¼æä»¥æéè¦ä»è´¹ãæ´å¤ä¿¡æ¯è¯´æå¯ä»¥åèï¼ http://translate.zvo.cn/4087.html \n\n-------------'); 4860 } 4861 4862 //console.log(xhr); 4863 console.log('------- translate.js service api response error --------'); 4864 console.log(' http code : '+xhr.status); 4865 console.log(' response : '+xhr.response); 4866 console.log(' request url : '+url); 4867 console.log(' request data : '+JSON.stringify(data)); 4868 console.log(' request method : '+method); 4869 console.log('---------------------- end ----------------------'); 4870 } 4871 4872 } 4873 xhr.requestURL = url; 4874 if(abnormalFunc != null){ 4875 abnormalFunc(xhr); 4876 } 4877 } 4878 } 4879 } 4880 return xhr; 4881 }, 4882 /* 4883 4884 æå¨è¿è¡ç¿»è¯æä½ãåæ°è¯´æï¼ 4885 texts: å¯ä¼ å ¥è¦ç¿»è¯çææ¬ã以忿¬æ°ç»ã æ¯å¦è¦ä¸æ¬¡ç¿»è¯å¤ä¸ªå¥åï¼é£å°±å¯ä»¥ä¼ å ¥æ°ç»çæ¹å¼ 4886 function: ç¿»è¯å®æ¯åçå¤ç彿°ãä¼ å ¥å¦ function(data){ console.log(data); } 4887 注æï¼è¿åçdata.result 为 1ï¼åæ¯ç¿»è¯æåã 为0忝åºéï¼å¯éè¿data.info å¾å°é误åå ã æ´è¯¦ç»è¯´æåèï¼ http://api.zvo.cn/translate/service/20230807/translate.json.html 4888 4889 ä½¿ç¨æ¡ä¾ä¸ï¼ 4890 translate.request.translateText('ä½ å¥½ï¼ææ¯ç¿»è¯çå 容', function(data){ 4891 //æå°ç¿»è¯ç»æ 4892 console.log(data); 4893 }); 4894 4895 ä½¿ç¨æ¡ä¾äºï¼ 4896 var texts = ['ææ¯ç¿»è¯ç第ä¸å¥','ææ¯ç¿»è¯ç第äºå¥','ææ¯ç¿»è¯ç第ä¸å¥']; 4897 translate.request.translateText(texts, function(data){ 4898 //æå°ç¿»è¯ç»æ 4899 console.log(data); 4900 }); 4901 4902 ä½¿ç¨æ¡ä¾ä¸ï¼ 4903 var obj = { 4904 from:'chinese_simplified', 4905 to:'english', 4906 texts: ['ææ¯ç¿»è¯ç第ä¸å¥','ææ¯ç¿»è¯ç第äºå¥','ææ¯ç¿»è¯ç第ä¸å¥'] 4907 } 4908 translate.request.translateText(obj, function(data){ 4909 //æå°ç¿»è¯ç»æ 4910 console.log(data); 4911 }); 4912 */ 4913 translateText:function(obj, func){ 4914 var texts = new Array(); 4915 var from = translate.language.getLocal(); 4916 var to = translate.language.getCurrent(); 4917 4918 if(typeof(obj) == 'string'){ 4919 //æ¡ä¾ä¸çåºæ¯ï¼ä¼ å ¥å个å符串 4920 texts[0] = [obj]; 4921 }else{ 4922 //䏿¯å符串äºï¼èæ¯å¯¹è±¡äºï¼å¤ææ¯æ¡ä¾äºè¿æ¯æ¡ä¾ä¸ 4923 4924 var type = Object.prototype.toString.call(obj); 4925 //console.log(type); 4926 if(type == '[object Array]'){ 4927 //æ¡ä¾äº 4928 texts = obj;
4929 }else if(type == '[object Object]'){ 4930 //æ¡ä¾ä¸ 4931 if(typeof(obj.texts) == 'undefined'){ 4932 console.log('translate.request.translateText ä¼ å ¥çå¼ç±»åå¼å¸¸ï¼å ä¸ºä½ æ²¡æä¼ å ¥ obj.texts è¦ç¿»è¯çå ·ä½ææ¬ï¼ 请æ¥é ææ¡£ï¼ https://translate.zvo.cn/4077.html'); 4933 } 4934 if(typeof(obj.texts) == 'string'){ 4935 //å个å符串 4936 texts = [obj.texts]; 4937 }else{ 4938 //å¤ä¸ªåç¬¦ä¸²ï¼æ°ç»å½¢æ 4939 texts = obj.texts; 4940 } 4941 if(typeof(obj.from) == 'string' && obj.from.length > 0){ 4942 from = obj.from; 4943 } 4944 if(typeof(obj.to) == 'string' && obj.to.length > 0){ 4945 to = obj.to; 4946 } 4947 }else{ 4948 console.log('translate.request.translateText ä¼ å ¥çå¼ç±»åé误ï¼è¯·æ¥é ææ¡£ï¼ https://translate.zvo.cn/4077.html'); 4949 return; 4950 } 4951 } 4952 4953 4954 var url = translate.request.api.translate; 4955 var data = { 4956 from:from, 4957 to: to, 4958 text:encodeURIComponent(JSON.stringify(texts)) 4959 }; 4960 //console.log(data); 4961 translate.request.post(url, data, function(data){ 4962 //console.log(data); 4963 if(data.result == 0){ 4964 console.log('=======ERROR START======='); 4965 console.log('from : '+data.from); 4966 console.log('to : '+data.to); 4967 console.log('translate text array : '+texts); 4968 console.log('response : '+data.info); 4969 console.log('=======ERROR END ======='); 4970 //return; 4971 } 4972 4973 func(data); 4974 }); 4975 }, 4976 listener:{ 4977 minIntervalTime:800, // 两次触åçæå°é´éæ¶é´ï¼å使¯æ¯«ç§ï¼è¿éé»è®¤æ¯800毫ç§ãæå°å¡«åæ¶é´ä¸º 200æ¯«ç§ 4978 lasttime:0,// æå䏿¬¡è§¦åæ§è¡ translate.execute() çæ¶é´ï¼è¿è¡æ§è¡çé£ä¸å»ï¼è䏿¯æ§è¡å®ã13使¶é´æ³ 4979 /* 4980 设置è¦å¨æªæ¥çæä¸æ¶å»æ§è¡ï¼å使¯æ¯«ç§ï¼13使¶é´æ³ã 4981 æ§è¡æ¶å¦æå½åæ¶é´å¤§äºè¿ä¸ªæ°ï¼åæ§è¡ï¼å¹¶ä¸å°è¿ä¸ªæ°ç½®ä¸º0ã 4982 伿ä¸ä¸ªå¾ªç¯æ§è¡å½æ°æ¯é´é200毫ç§è§¦å䏿¬¡ 4983 */ 4984 executetime:0, 4985 /* 4986 è¿è¡ç¿»è¯æ¶ï¼å»¶è¿ç¿»è¯æ§è¡çæ¶é´ 4987 å½ajax请æ±ç»æåï¼å»¶è¿è¿éè®¾ç½®çæ¶é´ï¼ç¶åèªå¨è§¦å translate.execute() æ§è¡ 4988 */ 4989 delayExecuteTime:200, 4990 /* 4991 满足ajaxåºåæ¡ä»¶ï¼è®¾ç½®è¦æ§è¡ç¿»è¯ã 4992 注æï¼è®¾ç½®è¿ä¸ªå并䏿¯ç«é©¬å°±ä¼æ§è¡ï¼èæ¯å å ¥äºä¸ä¸ªæ§è¡éåï¼é¿å 1ç§è¯·æ±äº10次ä¼è§¦å10次æ§è¡çæ åµ 4993 */ 4994 addExecute:function(){ 4995 var currentTime = Date.now(); 4996 if(translate.request.listener.lasttime == 0){ 4997 //æ¯ç¬¬ä¸æ¬¡ï¼lasttimeè¿æ²¡è®¾ç½®è¿ï¼é£ä¹ç´æ¥è®¾ç½®æ§è¡æ¶é´ä¸ºå½åæ¶é´ 4998 translate.request.listener.executetime = currentTime; 4999 translate.request.listener.lasttime = 1; 5000 }else{ 5001 //䏿¯ç¬¬ä¸æ¬¡äº 5002 5003 if(translate.request.listener.executetime > 1){ 5004 //å½åææ§è¡éåçå¾ ï¼ä¸ç¨åå å ¥æ§è¡çå¾ äº 5005 //console.log('已卿§è¡éåï¼ä¸ç¨åå å ¥äº '+currentTime); 5006 }else{ 5007 //æ§è¡éåä¸è¿æ²¡æï¼å¯ä»¥å å ¥æ§è¡å½ä»¤ 5008 5009 if(currentTime < translate.request.listener.lasttime + translate.request.listener.minIntervalTime){ 5010 //妿å½åæ¶é´å°äºæå䏿¬¡æ§è¡æ¶é´+é´éæ¶é´ï¼é£ä¹å°±æ¯ä¸æ¬¡æååæ§è¡è¿ï¼è¿æ¬¡æ§è¡ç太快äºï¼é£ä¹èµäºæªæ¥æ§è¡ç¿»è¯çæ¶é´ä¸ºæå䏿¬¡æ¶é´+é´éæ¶é´ 5011 translate.request.listener.executetime = translate.request.listener.lasttime + translate.request.listener.minIntervalTime; 5012 //console.log('addexecute - < 妿å½åæ¶é´å°äºæå䏿¬¡æ§è¡æ¶é´+é´éæ¶é´ï¼é£ä¹å°±æ¯ä¸æ¬¡æååæ§è¡è¿ï¼è¿æ¬¡æ§è¡ç太快äºï¼é£ä¹èµäºæªæ¥æ§è¡ç¿»è¯çæ¶é´ä¸ºæå䏿¬¡æ¶é´+é´éæ¶é´'); 5013 }else{ 5014 translate.request.listener.executetime = currentTime; 5015 //console.log('addexecute -- OK '); 5016 } 5017 } 5018 5019 5020 } 5021 5022 5023 }, 5024 /* 5025 èªå®ä¹æ¯å¦ä¼è¢«è§¦åçæ¹æ³å¤æ 5026 url å½åajax请æ±çurlï¼æ³¨ææ¯è¿ä¸ªurl请æ±å®æ¯è·åå°200ç¸åºçå å®¹æ¶æä¼è§¦åæ¤æ¹æ³ 5027 è¿åå¼ return true; é»è®¤æ¯ä¸ç®¡ä»ä¹urlï¼å ¨é¨è¿åtrueï¼è¡¨ç¤ºä¼è§¦åç¿»è¯èªå¨æ§è¡ translate.execute; ,å¦æä½ ä¸æ³è®©æä¸ªurl触åç¿»è¯ï¼é£ä¹ä½ å¯ä»¥èªè¡å¨è¿ä¸ªæ¹æ³ä¸ç¨ä»£ç è¿è¡å¤æï¼ç¶åè¿åfalseï¼é£ä¹è¿ä¸ªurlå°ä¸ä¼èªå¨è§¦åç¿»è¯æä½ã 5028 */ 5029 trigger:function(url){ 5030 return true; 5031 }, 5032 /* 5033 å¯å¨æ ¹æ®ajaxè¯·æ±æ¥èªå¨è§¦åæ§è¡ç¿»è¯ï¼é¿å ææ¶åæçæ¡æ¶å卿¼ç¿»è¯çæ åµã 5034 è¿ä¸ªåªéè¦æ§è¡ä¸æ¬¡å³å¯ï¼å¦ææ§è¡å¤æ¬¡ï¼åªæç¬¬ä¸æ¬¡ä¼çæ 5035 */ 5036 start:function(){ 5037 5038 //ç¡®ä¿è¿ä¸ªæ¹æ³åªä¼è§¦å䏿¬¡ï¼ä¸ä¼è¿å¤è§¦å 5039 if(typeof(translate.request.listener.isStart) != 'undefined'){ 5040 return; 5041 }else{ 5042 translate.request.listener.isStart = true; 5043 } 5044 5045 //å¢å ä¸ä¸ªæ²¡100æ¯«ç§æ£æ¥ä¸æ¬¡æ§è¡ä»»å¡ççº¿ç¨ 5046 setInterval(function(){ 5047 var currentTime = Date.now(); 5048 if(translate.request.listener.executetime > 1 && currentTime > translate.request.listener.executetime+translate.request.listener.delayExecuteTime){ 5049 translate.request.listener.executetime = 0; 5050 translate.request.listener.lasttime = currentTime; 5051 try{ 5052 //console.log('æ§è¡ç¿»è¯ --'+currentTime); 5053 translate.execute(); 5054 }catch(e){ 5055 console.log(e); 5056 } 5057 } 5058 }, 100); 5059 5060 const observer = new PerformanceObserver((list) => { 5061 var translateExecute = false; //æ¯å¦éè¦æ§è¡ç¿»è¯ true è¦æ§è¡ 5062 for(var e = 0; e < list.getEntries().length; e++){ 5063 var entry = list.getEntries()[e]; 5064 5065 if (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') { 5066 var url = entry.name; 5067 //console.log(url); 5068 //夿urlæ¯å¦æ¯å½åtranslate.jsæ¬èº«ä½¿ç¨ç 5069 if(typeof(translate.request.api.host) == 'string'){ 5070 translate.request.api.host = [translate.request.api.host]; 5071 } 5072 var ignoreUrl = false; // æ¯å¦æ¯å¿½ç¥çurl trueæ¯ 5073 5074 //translate.service 模å¼å¤æ 5075 for(var i = 0; i < translate.request.api.host.length; i++){ 5076 if(url.indexOf(translate.request.api.host[i]) > -1){ 5077 //æ¯ï¼é£ä¹ç´æ¥å¿½ç¥ 5078 ignoreUrl = true; 5079 break; 5080 } 5081 } 5082 //client.edge 夿 5083 if(url.indexOf(translate.service.edge.api.auth) > -1){ 5084 ignoreUrl = true; 5085 } 5086 if(url.indexOf('.microsofttranslator.com/translate') > -1){ 5087 ignoreUrl = true; 5088 } 5089 5090 if(ignoreUrl){ 5091 //console.log('忽ç¥ï¼'+url); 5092 continue; 5093 } 5094 if(translate.request.listener.trigger()){ 5095 //æ£å¸¸ï¼ä¼è§¦åç¿»è¯ï¼ä¹æ¯é»è®¤ç 5096 }else{ 5097 //ä¸è§¦åç¿»è¯ï¼è·³è¿ 5098 continue; 5099 } 5100 5101 translateExecute = true; 5102 break; 5103 } 5104 } 5105 if(translateExecute){ 5106 //console.log('translate.request.listener.addExecute() -- '+Date.now()); 5107 translate.request.listener.addExecute(); 5108 } 5109 }); 5110 // é ç½®observerè§å¯çç±»å为"resource" 5111 observer.observe({ type: "resource", buffered: true });
5112 } 5113 } 5114 }, 5115 //åå¨ï¼æ¬å°ç¼å 5116 storage:{ 5117 set:function(key,value){ 5118 localStorage.setItem(key,value); 5119 }, 5120 get:function(key){ 5121 return localStorage.getItem(key); 5122 } 5123 }, 5124 //é对å¾çè¿è¡ç¸å ³çè¯ç§å¾çæ¿æ¢ 5125 images:{ 5126 /* è¦æ¿æ¢çå¾çéåï¼æ°ç»å½¢æï¼å ¶ä¸æä¸ªæ°ç»çï¼ 5127 keyï¼"/uploads/allimg/160721/2-160H11URA25-lp.jpg"; //æ§å¾çï¼ä¹å°±æ¯åç½ç«æ¬èº«çå¾çãä¹å¯ä»¥ç»å¯¹è·¯å¾ï¼ä¼èªå¨å¹é img src çå¼ï¼å¹é æ¶ä¼è¿è¡å®å ¨å¹é 5128 valueï¼"https://xxx.com/abc_{language}.jpg" //æ°å¾çï¼è¦è¢«æ¿æ¢ä¸ºçæ°å¾çãæ°å¾çè·¯å¾éè¦ä¸ºç»å¯¹è·¯å¾ï¼è½ç´æ¥è®¿é®å°çãå ¶ä¸ {language} ä¼èªå¨æ¿æ¢ä¸ºå½åè¦æ¾ç¤ºçè¯ç§ãæ¯å¦ä½ è¦å°ä½ 䏿ç½ç«ç¿»è¯ä¸ºç¹ä½ä¸æï¼é£è¿éä¼èªå¨æ¿æ¢ä¸ºï¼https://xxx.com/abc_chinese_traditional.jpg æå ³{language}çåå¼ï¼å¯æ¥é http://api.translate.zvo.cn/doc/language.json.html å ¶ä¸çè¯è¨æ è¯idä¾¿æ¯ 5129 */ 5130 queues:[], 5131 5132 /* 5133 åå¾çæ¿æ¢éåä¸è¿½å è¦æ¿æ¢çå¾ç 5134 ä¼ å ¥æ ¼å¼å¦ï¼ 5135 5136 translate.images.add({ 5137 "/uploads/a.jpg":"https://www.zvo.cn/a_{language}.jpg", 5138 "/uploads/b.jpg":"https://www.zvo.cn/b_{language}.jpg", 5139 }); 5140 5141 åæ°è¯´æï¼ 5142 key //æ§å¾çï¼ä¹å°±æ¯åç½ç«æ¬èº«çå¾çãä¹å¯ä»¥ç»å¯¹è·¯å¾ï¼ä¼èªå¨å¹é img src çå¼ï¼å¹é æ¶ä¼è¿è¡å®å ¨å¹é 5143 value //æ°å¾çï¼è¦è¢«æ¿æ¢ä¸ºçæ°å¾çãæ°å¾çè·¯å¾éè¦ä¸ºç»å¯¹è·¯å¾ï¼è½ç´æ¥è®¿é®å°çãå ¶ä¸ {language} ä¼èªå¨æ¿æ¢ä¸ºå½åè¦æ¾ç¤ºçè¯ç§ãæ¯å¦ä½ è¦å°ä½ 䏿ç½ç«ç¿»è¯ä¸ºç¹ä½ä¸æï¼é£è¿éä¼èªå¨æ¿æ¢ä¸ºï¼https://xxx.com/abc_chinese_traditional.jpg æå ³{language}çåå¼ï¼å¯æ¥é http://api.translate.zvo.cn/doc/language.json.html å ¶ä¸çè¯è¨æ è¯idä¾¿æ¯ 5144 */ 5145 add:function(queueArray){ 5146 /* 5147 translate.images.queues[translate.images.queues.length] = { 5148 old:oldImage, 5149 new:newImage 5150 } 5151 */ 5152 for(var key in queueArray){ 5153 translate.images.queues[key] = queueArray[key]; 5154 } 5155 }, 5156 //æ§è¡å¾çæ¿æ¢æä½ï¼å°åæ¬çå¾çæ¿æ¢ä¸ºè·ç¿»è¯è¯ç§ä¸æ ·çå¾ç 5157 execute:function(){ 5158 //console.log(translate.images.queues); 5159 if(Object.keys(translate.images.queues).length < 1){ 5160 //å¦ææ²¡æï¼é£ä¹ç´æ¥åæ¶å¾ççæ¿æ¢æ«æ 5161 return; 5162 } 5163 5164 /*** 寻æ¾imgæ ç¾ä¸çå¾ç ***/ 5165 var imgs = document.getElementsByTagName('img'); 5166 for(var i = 0; i < imgs.length; i ++){ 5167 var img = imgs[i]; 5168 if(typeof(img.src) == 'undefined' || img.src == null || img.src.length == 0){ 5169 continue; 5170 } 5171 var imgSrc = img.getAttribute('src'); //è¿æ ·è·åå°çææ¯srcåå§çå¼ï¼ä¸ç¶ img.src æ¯æ¿å°ä¸ä¸ªç»å¯¹è·¯å¾ 5172 5173 for(var key in translate.images.queues){ 5174 var oldImage = key; //忬çå¾çsrc 5175 var newImage = translate.images.queues[key]; //æ°çå¾çsrcï¼è¦æ¿æ¢ä¸ºç 5176 //console.log('queue : '+oldImage + ' , img.src: '+imgSrc); 5177 if(oldImage == imgSrc){ 5178 //console.log('åç°å¹é å¾ç:'+imgSrc); 5179 /* 5180 //夿å½åå ç´ æ¯å¦å¨ignore忽ç¥çtagãidãclass nameä¸ 5181 if(translate.ignore.isIgnore(node)){ 5182 console.log('nodeå å«å¨è¦å¿½ç¥çå ç´ ä¸ï¼'); 5183 console.log(node); 5184 continue; 5185 } 5186 */ 5187 5188 //没å¨å¿½ç¥å ç´ éï¼å¯ä»¥æ¿æ¢ 5189 newImage = newImage.replace(new RegExp('{language}','g'), translate.to); 5190 img.src = newImage; 5191 } 5192 } 5193 5194 } 5195 5196 5197 /********** è¿è¦æ¿æ¢styleä¸çèæ¯å¾ */ 5198 // è·åå½åç½é¡µä¸ææçå ç´ 5199 var elems = document.getElementsByTagName("*"); 5200 // éåæ¯ä¸ªå ç´ ï¼æ£æ¥å®ä»¬æ¯å¦æèæ¯å¾ 5201 for (var i = 0; i < elems.length; i++) { 5202 var elem = elems[i]; 5203 // è·åå ç´ ç计ç®åæ ·å¼ 5204 var style = window.getComputedStyle(elem, null); 5205 // è·åå ç´ çèæ¯å¾URL 5206 var bg = style.backgroundImage; 5207 // å¦æèæ¯å¾ä¸ä¸ºç©ºï¼æå°åºæ¥ 5208 if (bg != "none") { 5209 //console.log(bg);
5210 var old_img = translate.images.gainCssBackgroundUrl(bg); 5211 //console.log("old_img:"+old_img); 5212 if(typeof(translate.images.queues[old_img]) != 'undefined'){ 5213 //åå¨ 5214 var newImage = translate.images.queues[old_img]; 5215 newImage = newImage.replace(new RegExp('{language}','g'), translate.to); 5216 //æ´æ¢ç¿»è¯æå®å¾å 5217 elem.style.backgroundImage='url("'+newImage+'")'; 5218 }else{ 5219 //console.log('åç°å¾å'+old_img+', 使ªåè¯ç§éé '); 5220 } 5221 } 5222 } 5223 5224 5225 5226 5227 }, 5228 //åcssä¸çèæ¯å¾ï¼ä¼ å ¥ url("https://xxx.com/a.jpg") è¿åéé¢å纯çurl 5229 gainCssBackgroundUrl:function(str){ 5230 // 使ç¨indexOfæ¹æ³ï¼æ¾å°ç¬¬ä¸ä¸ªåå¼å·çä½ç½® 5231 var start = str.indexOf("\""); 5232 // 使ç¨lastIndexOfæ¹æ³ï¼æ¾å°æåä¸ä¸ªåå¼å·çä½ç½® 5233 var end = str.lastIndexOf("\""); 5234 // 妿æ¾å°äºåå¼å·ï¼ä½¿ç¨substringæ¹æ³ï¼æªåä¸é´çå 容 5235 if (start != -1 && end != -1) { 5236 var url = str.substring(start + 1, end); // +1æ¯ä¸ºäºå»æåå¼å·æ¬èº« 5237 //console.log(url); // https://e-assets.gitee.com/gitee-community-web/_next/static/media/mini_app.2e6b6d93.jpg!/quality/100 5238 return url; 5239 } 5240 return str; 5241 } 5242 }, 5243 //对翻è¯ç»æè¿è¡å¤åãæ¯å¦å½åç½é¡µæ¯ç®ä½ä¸æçï¼è¢«ç¿»è¯ä¸ºäºè±æï¼æ§è¡æ¤æ¹æ³å³å¯å¤å为ç½é¡µæ¬èº«ç®ä½ä¸æçç¶æï¼èæ éå¨éè¿å·æ°é¡µé¢æ¥å®ç° 5244 reset:function(){ 5245 var currentLanguage = translate.language.getCurrent(); //è·åå½åç¿»è¯è³çè¯ç§ 5246 for(var queue in translate.nodeQueue){ 5247 //console.log(queue); 5248 for(var lang in translate.nodeQueue[queue].list){ 5249 //console.log(lang); 5250 5251 for(var hash in translate.nodeQueue[queue].list[lang]){ 5252 var item = translate.nodeQueue[queue].list[lang][hash]; 5253 //console.log(item); 5254 for(var index in item.nodes){ 5255 //console.log(item.nodes[index]); 5256 //item.nodes[index].node.nodeValue = item.original; 5257 var currentShow = translate.storage.get('hash_'+currentLanguage+'_'+hash
5257); //å½åæ¾ç¤ºåºæ¥çæåï¼ä¹å°±æ¯å·²ç»ç¿»è¯åçæå 5258 //console.log('hash_'+lang+'_'+hash+' -- '+currentShow); 5259 if(typeof(currentShow) == 'undefined'){ 5260 continue; 5261 } 5262 if(currentShow == null){ 5263 continue; 5264 } 5265 if(currentShow.length == 0){ 5266 continue; 5267 } 5268/* 5269 if(item.beforeText.length > 0 || item.afterText.length > 0){ 5270 console.log('----'+currentShow); 5271 console.log(item); 5272 } 5273 5274 if(item.beforeText.length > 0){ 5275 currentShow = currentShow.substring(currentShow.lastIndexOf(item.beforeText)+1, currentShow.length); 5276 } 5277 if(item.afterText.length > 0){ 5278 currentShow = currentShow.substring(0, currentShow.lastIndexOf(item.afterText)); 5279 } 5280 if(item.beforeText.length > 0 || item.afterText.length > 0){ 5281 console.log(currentShow); 5282 } 5283*/ 5284 translate.element.nodeAnalyse.analyse(item.nodes[index].node, currentShow, item.original, item.nodes[index].node.attribute); 5285 } 5286 } 5287 } 5288 } 5289 5290 //æ¸ é¤è®¾ç½®storageä¸çç¿»è¯è³çè¯ç§ 5291 translate.storage.set('to', ''); 5292 translate.to = null; 5293 //éæ°æ¸²æselect 5294 translate.selectLanguageTag.render(); 5295 }, 5296 5297 /* 5298 åè¯ç¿»è¯ï¼é¼ æ å¨ç½é¡µä¸éä¸ä¸æ®µæåï¼ä¼èªå¨åºç°å¯¹åºç¿»è¯åçææ¬ 5299 æç½å https://gitee.com/huangguishen æä¾ã 5300 详ç»ä½¿ç¨è¯´æåè§ï¼http://translate.zvo.cn/41557.html 5301 */ 5302 selectionTranslate:{ 5303 selectionX:0, 5304 selectionY:0, 5305 callTranslate:function (event){ 5306 let curSelection = window.getSelection(); 5307 //ç¸ç认为没æåè¯ 5308 if (curSelection.anchorOffset == curSelection.focusOffset) return; 5309 let translateText = window.getSelection().toString(); 5310 5311 //ç®åCopyåæä»£ç äº 5312 var url = translate.request.api.translate 5313 var data = { 5314 from:translate.language.getLocal(), 5315 to:translate.to, 5316 text:encodeURIComponent(JSON.stringify([translateText])) 5317 }; 5318 translate.request.post(url, data, function(data) { 5319 if (data.result == 0) return; 5320 let curTooltipEle = document.querySelector('#translateTooltip') 5321 curTooltipEle.innerText = data.text[0]; 5322 curTooltipEle.style.top =selectionY+20+"px"; 5323 curTooltipEle.style.left = selectionX+50+"px" ; 5324 curTooltipEle.style.display = ""; 5325 }); 5326 }, 5327 start:function () { 5328 //æ°å»ºä¸ä¸ªtooltipå ç´ èç¹ç¨äºæ¾ç¤ºç¿»è¯ 5329 let tooltipEle = document.createElement('span'); 5330 tooltipEle.innerText = ''; 5331 tooltipEle.setAttribute('id', 'translateTooltip'); 5332 tooltipEle.setAttribute('style', 'background-color:black;color:#fff;text-align:center;border-radius:6px;padding:5px;position:absolute;z-index:999;top:150%;left:50%; '); 5333 //æå ç´ èç¹æ·»å å°bodyå ç´ èç¹ä¸æä¸ºå ¶åèç¹ï¼æ¾å¨bodyçç°æåèç¹çæå 5334 document.body.appendChild(tooltipEle); 5335 //çå¬é¼ æ æä¸äºä»¶ï¼ç¹å»èµ·å§ç¹ä½ç½®ä½ä¸ºæ¾ç¤ºç¿»è¯çä½ç½®ç¹ 5336 document.addEventListener('mousedown', (event)=>{ selectionX= event.pageX;selectionY= event.pageY ;}, false); 5337 //çå¬é¼ æ 弹起äºä»¶ï¼ä¾¿äºå¤ææ¯å¦å¤äºåè¯ 5338 document.addEventListener('mouseup', translate.selectionTranslate.callTranslate, false); 5339 //çå¬é¼ æ ç¹å»äºä»¶ï¼éètooltipï¼æ¤å¤å¯ä¼å 5340 document.addEventListener('click', (event)=>{ document.querySelector('#translateTooltip').style.display = "none"}, false); 5341 } 5342 }, 5343 5344 /* 5345 ä¼ä¸çº§ç¿»è¯æå¡ 5346 注æï¼è¿ä¸ªä¼ä¸çº§ç¿»è¯ä¸çä¸å¨å¼æºå è´¹ä¹ä¸ï¼ä¼ä¸çº§ç¿»è¯æå¡è¿½æ±çæ¯é«ç¨³å®ï¼è¿ä¸ªæ¯æ¶è´¹çï¼è¯¦æ å¯åèï¼http://translate.zvo.cn/43262.html 5347 5348 */ 5349 enterprise:{ 5350 //é»è®¤ä¸å¯ç¨ä¼ä¸çº§ï¼é¤éè®¾ç½®äº translate.enterprise.use() è¿éæä¼åætrue 5351 isUse:false, 5352 use:function(){ 5353 translate.enterprise.isUse = true; //设置为使ç¨ä¼ä¸çº§ç¿»è¯æå¡ 5354 5355 //主èç¹é¢å¤æééä½ï¼æ´è¿½æ±ååºé度 5356 translate.request.speedDetectionControl.hostMasterNodeCutTime = 300; 5357 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/']; 5358 5359 if(translate.service.name == 'client.edge'){ 5360 translate.service.name = 'translate.service'; 5361 console.log('æ¨å·²å¯ç¨äºä¼ä¸çº§ç¿»è¯éé translate.enterprise.use(); (ææ¡£ï¼https://translate.zvo.cn/4087.html) , æä»¥æ¨è®¾ç½®ç translate.service.use(\'client.edge\'); (ææ¡£ï¼https://translate.zvo.cn/4081.html) å°å¤±æä¸èµ·ä½ç¨ï¼æä¼ä¸çº§ç¿»è¯ééå ¨é¨æ¥ç®¡ã'); 5362 return; 5363 } 5364 }, 5365 /* 5366 èªå¨éé ç¿»è¯æå¡ééï¼å¦æå½åææç½ç»èç¹åä¸å¯ç¨ï¼ä¼èªå¨åæ¢å° edge.client è¿è¡ä½¿ç¨ 5367 è¿ä¸ªä¼å¨ postè¯·æ± æ§è¡åå¼å§æ¶è¿è¡è§¦å 5368 */ 5369 automaticAdaptationService:function(){ 5370 if(!translate.enterprise.isUse){ 5371 return; 5372 } 5373 var hosts = translate.request.speedDetectionControl.getHostQueue(); 5374 //console.log(hosts); 5375 if(hosts.length > 0){ 5376 if(hosts[0].time + 1 > translate.request.speedDetectionControl.disableTime){ 5377 //ææèç¹é½å¤äºä¸å¯ç¨ç¶æï¼èªå¨åæ¢å° client.edge æ¨¡å¼ 5378 translate.service.name = 'client.edge'; 5379 } 5380 } 5381 } 5382 }, 5383 5384 /* 5385 å¦æä½¿ç¨çæ¯ translate.service ç¿»è¯ééï¼é£ä¹ç¿»è¯åçè¯ç§ä¼èªå¨ä»¥å°åçæ¹å¼è¿è¡æ¾ç¤ºã 5386 å¦æä½ ä¸æ³å°ç¿»è¯åçææ¬å ¨é¨ä»¥å°åæ¾ç¤ºï¼èæ¯é¦åæ¯å¤§åï¼é£ä¹å¯ä»¥éè¿æ¤æ¹æ³è®¾ç½®ä¸ä¸ 5387 v3.8.0.20240828 å¢å 5388 ç®åæè§åºè¯¥ç¨ä¸å°ï¼æä»¥å å¿½ç¥ 5389 */ 5390 /* 5391 notConvertLowerCase:function(){ 5392 5393 }, 5394 */ 5395 5396 /* 5397 åå§åï¼å¦çæ¬æ£æµãåå§æ°æ®å è½½çã v2.11.11.20240124 å¢å 5398 ä¼èªå¨å¨ translate.js å è½½åç 200毫ç§å æ§è¡ï¼è¿è¡åå§åã忶乿¯èç¹æµé 5399 */ 5400 init:function(){ 5401 if(typeof(translate.init_execute) != 'undefined'){ 5402 return; 5403 } 5404 translate.init_execute = 'å·²è¿è¡'; 5405 5406 try{ 5407 translate.request.send( 5408 translate.request.api.init, 5409 {}, 5410 function(data){ 5411 if (data.result == 0){ 5412 console.log('translate.js init åå§åå¼å¸¸ï¼'+data.info); 5413 return; 5414 }else if(data.result == 1){ 5415 //æå¡ç«¯è¿åçææ°çæ¬ 5416 var newVersion = translate.util.versionStringToInt(data.version); 5417 //å½åtranslate.jsççæ¬ 5418 var currentVersion = translate.util.versionStringToInt(translate.version.replace('v','')); 5419 5420 if(newVersion > currentVersion){ 5421 console.log('Tip : translate.js find new version : '+data.version); 5422 } 5423 }else{ 5424 eval(data.info); 5425 } 5426 }, 5427 'post', 5428 true, 5429 null, 5430 function(data){ 5431 //console.log('eeerrr'); 5432 }, 5433 false 5434 ); 5435 }catch(e){ 5436 } 5437 } 5438 5439 5440 5441} 5442/* 5443 å°é¡µé¢ä¸çæænodeèç¹ï¼çæå ¶å¨å½å页é¢çå¯ä¸æ è¯å符串uuid 5444 弿ºä»åºï¼ https://github.com/xnx3/nodeuuid.js 5445 åçï¼ å½åèç¹çnodeName + å½åèç¹å¨ç¶èç¹ä¸ï¼å±äºç¬¬å 个 tagName ï¼ç¶å追个åç¶çº§è¿è¡åï¼å°nodeæ¬èº«+ç¶çº§+ç¶ç¶çº§+.... æ¼æ¥å¨ä¸èµ· 5446 注æï¼å¦æå¨ææ·»å ä¸ä¸ªèç¹å°ç¬¬ä¸ä¸ªï¼é£ä¹å ¶ä»èç¹å°±ä¼æ¤ä¸å»å¯¼è´èç¹æ è®°å¼å¸¸ 5447*/ 5448var nodeuuid = { 5449 index:function(node){ 5450 var parent = node.parentNode; 5451 if(parent == null){ 5452 return ''; 5453 } 5454 5455 var childs; 5456 if(typeof(node.tagName) == 'undefined'){ 5457 //console.log('undefi'); 5458 childs = parent.childNodes; 5459 //console.log(Array.prototype.indexOf.call(childs, node)); 5460 }else{ 5461 // 使ç¨querySelectorAll()æ¹æ³è·åææä¸nodeå ç´ ç¸åæ ç¾åçåèç¹ 5462 //childs = parent.querySelectorAll(node.tagName); 5463 5464 // ä¸ä½¿ç¨querySelectorAllï¼æå¨éååèç¹æ¥æ¾å°ç¸åæ ç¾åçåèç¹ 5465 childs = []; 5466 var allChilds = parent.childNodes; 5467 for (var i = 0; i < allChilds.length; i++) { 5468 if (allChilds[i].tagName === node.tagName) { 5469 childs.push(allChilds[i]); 5470 } 5471 } 5472 } 5473 var index = Array.prototype.indexOf.call(childs, node); 5474 //console.log('--------'+node.tagName); 5475 return node.nodeName + "" + (index+1); 5476 }, 5477 uuid:function(node){ 5478 var uuid = ''; 5479 var n = node; 5480 while(n != null){ 5481 var id = nodeuuid.index(n); 5482 //console.log(id); 5483 if(id != ''){ 5484 if(uuid != ''){ 5485 uuid = '_'+uuid; 5486 } 5487 uuid = id + uuid; 5488 } 5489 //console.log(uuid) 5490 n = n.parentNode; 5491 } 5492 return uuid; 5493 }, 5494 5495} 5496console.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'); 5497 5498/** 5499 * å ¼å®¹ AMDãCMDãCommonJS è§è
5500 * node ç¯å¢ä½¿ç¨ï¼`npm i i18n-jsautotranslate` å®è£ å 5501 */ 5502(function (root, factory) { 5503 if (typeof define === 'function' && define.amd) { 5504 define([], () => factory()); 5505 } else if (typeof module === 'object' && module.exports) { 5506 module.exports = factory(); 5507 } else { 5508 root['translate'] = factory(); 5509 } 5510})(this, function () { 5511 return translate; 5512});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.