1/** 2 * ç¿»è¯æå¡åæ¢å¨ 3 * å è®¸ç¨æ·å¨ GLM ç¿»è¯å Microsoft ç¿»è¯ä¹é´åæ¢ 4 * 注ï¼Microsoft ç¿»è¯æå¡è½å为 Edge ç¿»è¯ï¼ä½å®é 䏿¯æææç°ä»£æµè§å¨ 5 */ 6 7class TranslationSwitcher { 8 constructor() { 9 this.currentService = 'edge'; // é»è®¤ä½¿ç¨ Microsoft ç¿»è¯ 10 this.init(); 11 } 12 13 init() { 14 // ä» localStorage å è½½ä¿åç设置 15 this.loadSavedSetting(); 16 17 // æ£æ¥ URL åæ°ï¼å 许éè¿ URL åæ¢ç¿»è¯æå¡ 18 this.checkUrlParams(); 19 20 // åå»ºåæ¢æé®ï¼å·²éèï¼ 21 this.createSwitcherUI(); 22 23 // ç»å®äºä»¶ï¼å·²ç¦ç¨ï¼ 24 this.bindEvents(); 25 26 // åå§åå½åæå¡ 27 this.switchToService(this.currentService); 28 } 29 30 checkUrlParams() { 31 // æ£æ¥ URL åæ°ï¼å 许éè¿ ?translation=glm æ ?translation=edge åæ¢ç¿»è¯æå¡ 32 // 注ï¼edge 代表 Microsoft ç¿»è¯æå¡ 33 const urlParams = new URLSearchParams(window.location.search); 34 const translationParam = urlParams.get('translation'); 35 if (translationParam && (translationParam === 'glm' || translationParam === 'edge')) { 36 this.currentService = translationParam; 37 this.saveSetting(translationParam); 38 } 39 } 40 41 loadSavedSetting() { 42 try { 43 const saved = localStorage.getItem('translation_service'); 44 if (saved && (saved === 'glm' || saved === 'edge')) { 45 this.currentService = saved; 46 } 47 } catch (error) { 48 console.warn('å è½½ç¿»è¯æå¡è®¾ç½®å¤±è´¥:', error); 49 } 50 } 51 52 saveSetting(service) { 53 try { 54 localStorage.setItem('translation_service', service); 55 } catch (error) { 56 console.warn('ä¿åç¿»è¯æå¡è®¾ç½®å¤±è´¥:', error); 57 } 58 } 59 60 createSwitcherUI() { 61 // ä¸åå»ºåæ¢å¨ UIï¼æ ¹æ®ç¨æ·è¦æ±éè 62 console.log('Translation switcher UI is hidden as requested'); 63 } 64 65 addStyles() { 66 // 䏿·»å æ ·å¼ï¼å ä¸ºåæ¢å¨ UI 被éè 67 } 68 69 bindEvents() { 70 // ä¸ç»å®äºä»¶ï¼å ä¸ºåæ¢å¨ UI 被éè 71 } 72 73 switchToService(service) { 74 this.currentService = service; 75 this.saveSetting(service); 76 77 // åæ¢ç¿»è¯æå¡ 78 if (service === 'glm') { 79 this.activateGLMTranslation(); 80 } else { 81 this.activateEdgeTranslation(); 82 } 83 } 84 85 activateGLMTranslation() { 86 console.log('åæ¢å° GLM ç¿»è¯æå¡'); 87 88 // ç¡®ä¿ GLM ç¿»è¯å·²åå§å 89 if (window.translateTo) { 90 console.log('GLM ç¿»è¯æå¡å·²å°±ç»ª'); 91 } else { 92 console.log('GLM ç¿»è¯æå¡æªåå§å'); 93 } 94 } 95 96 activateEdgeTranslation() { 97 console.log('åæ¢å° Microsoft ç¿»è¯æå¡'); 98 99 // ç¡®ä¿ Microsoft ç¿»è¯å·²åå§å 100 if (window.translateToEdge) { 101 console.log('Microsoft ç¿»è¯æå¡å·²å°±ç»ª'); 102 } else { 103 // å°è¯åå§å Microsoft ç¿»è¯ 104 if (typeof translate !== 'undefined') { 105 if (typeof initEdgeTranslation === 'function') { 106 initEdgeTranslation(); 107 } 108 } else { 109 console.error('Microsoft ç¿»è¯æå¡ä¾èµç translate.js æªå è½½'); 110 } 111 } 112 } 113} 114 115// åå§åç¿»è¯æå¡åæ¢å¨ 116if (document.readyState === 'loading') { 117 document.addEventListener('DOMContentLoaded', () => { 118 window.translationSwitcher = new TranslationSwitcher(); 119 }); 120} else { 121 window.translationSwitcher = new TranslationSwitcher(); 122}
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.