Twitter外部翻译器

将第三方翻译添加到推特

当前为 2021-12-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Twitter External Translator
  3. // @name:bg Външен преводач на Twitter
  4. // @name:zh Twitter外部翻译器
  5. // @name:zh-CN Twitter外部翻译器
  6. // @name:zh-TW Twitter外部翻译器
  7. // @name:cs Externí překladatel Twitter
  8. // @name:da Twitter ekstern oversætter
  9. // @name:et Twitteri väline tõlkija
  10. // @name:fi Twitter Ulkoinen kääntäjä
  11. // @name:el Εξωτερικός μεταφραστής Twitter
  12. // @name:hu Twitter külső fordító
  13. // @name:lv Twitter Ārējais tulkotājs
  14. // @name:lt "Twitter" išorinis vertėjas
  15. // @name:ro Twitter Traducător extern
  16. // @name:sk Externý prekladateľ Twitter
  17. // @name:sl Twitter Zunanji prevajalec
  18. // @name:sv Twitter Extern översättare
  19. // @name:nl Twitter Externe Vertaler
  20. // @name:fr Traducteur externe Twitter
  21. // @name:de Externer Twitter-Übersetzer
  22. // @name:it Traduttore esterno di Twitter
  23. // @name:ja ツイッター外部翻訳者
  24. // @name:pl Zewnętrzny tłumacz Twittera
  25. // @name:pt Tradutor externo do Twitter
  26. // @name:pt-BR Tradutor externo do Twitter
  27. // @name:ru-RU Twitter Внешний переводчик
  28. // @name:ru Twitter Внешний переводчик
  29. // @name:es Traductor externo de Twitter
  30. // @description Adds external & internal translators
  31. // @description:zh 将第三方翻译添加到推特
  32. // @description:zh-CN 将第三方翻译添加到推特
  33. // @description:zh-TW 將第三方翻譯添加到推特
  34. // @description:bg Добавя преводачи на трети страни в Twitter
  35. // @description:cs Přidává překladatele třetích stran na Twitter
  36. // @description:da Tilføjer tredjepartsoversættere til Twitter
  37. // @description:et Lisab kolmanda osapoole tõlkijad Twitterisse
  38. // @description:fi Lisää kolmannen osapuolen kääntäjiä Twitteriin
  39. // @description:el Προσθέτει μεταφραστές 3ου μέρους στο Twitter
  40. // @description:hu Hozzáadja a 3. féltől származó fordítókat a Twitterhez
  41. // @description:lv Pievieno trešās puses tulkotājus Twitter
  42. // @description:lt Prideda trečiųjų šalių vertėjus į "Twitter
  43. // @description:ro Adaugă traducători de la terțe părți la Twitter
  44. // @description:sk Pridáva prekladateľov tretích strán na Twitter
  45. // @description:sl Dodaja prevajalce tretjih oseb na Twitterju
  46. // @description:sv Lägger till översättare från tredje part till Twitter
  47. // @description:nl Voegt vertalers van derden toe aan Twitter
  48. // @description:fr Ajout de traducteurs tiers à Twitter
  49. // @description:de Fügt Drittanbieter-Übersetzer zu Twitter hinzu
  50. // @description:it Aggiunge traduttori di terze parti a Twitter
  51. // @description:pl Dodaje tłumaczy innych firm do Twittera
  52. // @description:pt Adiciona tradutores de terceiros ao Twitter
  53. // @description:pt-BR Adiciona tradutores de terceiros ao Twitter
  54. // @description:ja サードパーティの翻訳者をツイッターに追加
  55. // @description:ru-RU Добавляет сторонних переводчиков в Twitter
  56. // @description:ru Добавляет сторонних переводчиков в Twitter
  57. // @description:es Añade traductores de terceros a Twitter
  58. // @author Magic <magicoflolis@tuta.io>
  59. // @icon https://abs.twimg.com/favicons/twitter.ico
  60. // @version 0.28
  61. // @license MIT
  62. // @namespace https://github.com/magicoflolis/userscriptrepo/tree/master/ExternalTranslator#twitter-external-translator
  63. // @homepageURL https://github.com/magicoflolis/userscriptrepo/tree/master/ExternalTranslator#twitter-external-translator
  64. // @supportURL https://github.com/magicoflolis/userscriptrepo/issues/new
  65. // @require https://code.jquery.com/jquery-3.6.0.slim.min.js?_=1638935718515
  66. // @match https://mobile.twitter.com/*
  67. // @match https://twitter.com/*
  68. // @match https://tweetdeck.twitter.com/*
  69. // @match https://www.twitlonger.com/show/*
  70. // @match https://nitter.net/*
  71. // @match https://nitter.*/*
  72. // @match https://nitter.*.*/*
  73. // @match https://nitter.domain.glass/*
  74. // @match https://nitter-home.kavin.rocks/*
  75. // @match https://birdsite.xanny.family/*
  76. // @match https://twitr.gq/*
  77. // @exclude https://twitter.com/login
  78. // @exclude https://twitter.com/signup
  79. // @exclude https://twitter.com/i/flow/signup
  80. // @exclude https://twitter.com/teams/*
  81. // @exclude https://twitter.com/*/authorize?*
  82. // @exclude https://twitter.com/*/begin_password_reset
  83. // @grant GM_getValue
  84. // @grant GM.getValue
  85. // @grant GM_setValue
  86. // @grant GM.setValue
  87. // @grant GM_deleteValue
  88. // @grant GM.deleteValue
  89. // @grant GM_info
  90. // @grant GM_xmlhttpRequest
  91. // ==/UserScript==
  92.  
  93. // Uncompressed source code:
  94. // https://github.com/magicoflolis/userscriptrepo/tree/master/ExternalTranslator/src
  95.  
  96.  
  97. "use strict";
  98.  
  99. (async () => {
  100. let twCSS = `.tet{margin-top:1%}.css-1dbjc4n{-moz-box-align:stretch;-moz-box-direction:normal;-moz-box-orient:vertical;align-items:stretch;border:0px solid #000;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;z-index:0}.r-b88u0q{font-weight:700}select{height:auto !important}.r-qvutc0{overflow-wrap:break-word}.r-1adg3ll{display:block}.r-u8s1d{position:absolute}.r-1wbh5a2{flex-shrink:1}.r-1ny4l3l{outline-style:none}.r-1mi75qu{box-shadow:rgba(0,0,0,.02) 0px 0px 2px inset}.r-1udh08x{overflow:hidden}.r-1awozwy{-webkit-box-align:center;-moz-box-align:center;align-items:center}.r-1hwvwag{flex-basis:48px}.r-18kxxzh{-webkit-box-flex:0;flex-grow:0}.r-1777fci{-webkit-box-pack:center;-moz-box-pack:center;justify-content:center}.r-18u37iz{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-direction:normal;-moz-box-orient:horizontal;flex-direction:row}.r-ipm5af{top:0px}.r-1ifxtd0{margin-bottom:16px}.r-6gpygo{margin-bottom:12px !important}.r-1jgb5lz{margin-left:auto;margin-right:auto}.r-1ye8kvj{max-width:600px}.r-16y2uox{-webkit-box-flex:1;-moz-box-flex:1;flex-grow:1}.r-ttdzmv{padding-top:12px !important}.r-1iusvr4{flex-basis:0px}.r-13qz1uu{width:100%}.r-1dye5f7{padding-left:32px;padding-right:32px}.r-9ilb82{color:#6e767d}.r-16dba41{font-weight:400}.r-1vr29t4{font-weight:800}.r-a023e6{font-size:15px}.r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}.r-rjixqe{line-height:20px}.r-1cwl3u0{line-height:16px}.r-bcqeeo{min-width:0px}`,
  101. tetCSS = `#tetMenuButton>span{color:#fff !important}#tetSelector>select{background-color:transparent;border:transparent}.r-kemksi>div#tetName,.r-yfoy6g>div#tetName{color:#6e767d}.tetNitterHover{background-color:#ff6c60}.tetNitter{border-color:#ffaca0;box-shadow:#ffaca0 0px 0px 0px 1px}.tetBtn.nitter{color:#fff;border:transparent;background-color:#ff6c60}h1.tetNTextColor{color:#888889}.nitter{border:1px solid #ff6c60;background-color:#0f0f0f}.nitter #tetName{color:#ff6c60}select.tetNTextColor,div.tetNTextColor{color:#f8f8f2}svg.tetNTextColor{color:#888889}.tetNText{color:#ff6c60 !important}.tetNBackground{background-color:#161616}.Button--primary{border-color:#1da1f2;box-shadow:#1da1f2 0px 0px 0px 1px}.r-tetTD{border-radius:14px;background-color:#15202b}.r-tetTD #tetName{color:#8899a6}.prf-header>div>.tet.tet-td{color:#fff !important}.tet-td{color:#1da1f2}.tet-td#tetName{color:#1da1f2 !important}.tet-td.tet{color:#8899a6}.r-hoverTD{background-color:#005fd1}.r-9ilb82{color:#6e767d}.r-1kqtdi0{border-color:#2f3336}#apifield{border-color:#2f3336}#tetSelector.r-1kqtdi0{border-color:#2f3336}#tetSelector.r-1kqtdi0#tetName{color:#6e767d !important}#tetSelector.r-1kqtdi0.r-tetTD{border-color:#8899a6}.r-urgr8i{background-color:#1da1f2}.r-p1n3y5{border-color:#1da1f2}.r-13gxpu9{color:#1da1f2}.r-13gxpu9#tetName{color:#1da1f2 !important}.r-1q3imqu{background-color:#1a91da}.r-1bih22f{box-shadow:#1da1f2 0px 0px 0px 1px}.r-1vkxrha{background-color:#ffad1f}.r-v6khid{border-color:#ffad1f}.r-61mi1v{color:#ffad1f}.r-61mi1v#tetName{color:#ffad1f !important}.r-1kplyi6{background-color:#e69c1c}.r-cdj8wb{box-shadow:#ffad1f 0px 0px 0px 1px}.r-1dgebii{background-color:#e0245e}.r-1iofnty{border-color:#e0245e}.r-daml9f{color:#e0245e}.r-daml9f#tetName{color:#e0245e !important}.r-1ucxkr8{background-color:#ca2055}.r-jd07pc{box-shadow:#e0245e 0px 0px 0px 1px}.r-168457u{background-color:#7856ff}.r-njt2r9{background-color:#865dca}.r-hy56xe{border-color:#7856ff}.r-11mmphe{box-shadow:#794bc4 0px 0px 0px 1px}.r-xfsgu1{color:#7856ff}.r-xfsgu1#tetName{color:#7856ff !important}.r-18z3xeu{background-color:#f45d22}.r-1kplyi6{background-color:#dc541f}.r-1xl5njo{border-color:#f45d22}.r-b8m25f{box-shadow:#f45d22 0px 0px 0px 1px}.r-1qkqhnw{color:#f45d22}.r-1qkqhnw#tetName{color:#f45d22 !important}.r-b5skir{background-color:#17bf63}.r-zx61xx{background-color:#15ac59}.r-5ctkeg{border-color:#17bf63}.r-1cqwhho{box-shadow:#17bf63 0px 0px 0px 1px}.r-nw8l94{color:#17bf63}.r-nw8l94#tetName{color:#17bf63 !important}.r-yfoy6g{background-color:#15202b}.r-14lw9ot{background-color:#fff}.r-kemksi{background-color:#000}.r-18jsvk2{color:#0f1419}.r-demo{border-style:solid !important;border-radius:16px !important;border-width:1px !important}.demo-TW{border-color:#2f3336 !important}.demo-TD{border:1px solid #8899a6 !important}.demo-NT{border:1px solid #FF6C6091 !important}.r-jwli3a{color:#fff}.tetAvatarFrame,#tetAvatar{align-items:stretch;border:0px solid #000;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;z-index:0}.tet{margin-top:4px;flex-wrap:wrap;line-height:16px;font-size:13px;font-weight:400;overflow-wrap:break-word;width:fit-content;height:min-content;display:flex}.tetAvatarFrame{flex-basis:auto;z-index:0;position:absolute;top:0px;right:0px;left:0px;bottom:0px;overflow:hidden;border-radius:9999px}.tetAvatarFrame #tetAvatar{background-image:url("https://abs.twimg.com/favicons/twitter.ico");background-size:cover;background-repeat:no-repeat;background-position:center center;z-index:-1;background-color:rgba(0,0,0,0);height:100%;width:100%;position:absolute}.tet-main{padding:0px 32px 32px 32px !important;flex-shrink:1;-moz-box-flex:1;flex-grow:1;width:100%;margin-left:auto;margin-right:auto}.tet-options{display:inline-grid;grid-template-rows:1fr 1fr 1fr}.tet-header{min-width:0px;text-align:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;white-space:normal;display:grid;margin:32px 0px 12px 0px !important}.tet-header .css-901oao{line-height:28px;font-size:23px;font-weight:800}.tet-header .tet-info{line-height:20px;font-size:15px;font-weight:400;color:#6e767d;margin-top:1%}.tet-header span{color:inherit;font:inherit;white-space:inherit}.tetAlert{right:0px;left:0px;bottom:0px;position:fixed !important;z-index:10000 !important}.tetAlert h1.tetAlertTxt{line-height:24px;font-size:20px;font-weight:700;min-width:0px}.tetAlert h1.tetAlertTxt span{font-family:inherit}.tetAlert .tetAlertTxt>span,.tetAlert .tetAlertTxt{white-space:normal;text-align:center;overflow-wrap:break-word;font-family:"TwitterChirp",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}.tetAlert div.tetAlertTxt{font-weight:400;font-size:15px;line-height:20px;min-width:0px;width:100%}.tetAlert .tetConfirmation{width:20%;border-radius:16px;left:40%;top:40%;position:fixed}.tetAlert .tetAlertBtns{margin:2% 25% 2% 25%;white-space:nowrap;outline-style:none;transition-property:background-color,box-shadow;transition-duration:.2s;flex-grow:1;user-select:none;border-color:rgba(0,0,0,0);overflow:hidden;border-width:1px;border-style:solid;cursor:pointer}.tetAlert .tetAlertBtns:nth-child(2){margin:0px 25% 4% 25%}.tetAlert .tetAlertBtns>div{font-size:15px;font-weight:700;font-family:"TwitterChirp",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:20px;overflow-wrap:break-word;min-width:0px;align-items:center;justify-content:center;flex-grow:1;flex-direction:row;text-align:center;display:flex}.tetAlert .tetAlertBtns>div>span{font-size:15px;font-family:inherit;line-height:20px;overflow-wrap:break-word;min-width:0px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;font:inherit;border:0px solid #000;box-sizing:border-box;display:inline;margin:0px;padding:0px}.tetAlert .tetAlertBtns>div>span>span{border:0px solid #000;box-sizing:border-box;display:inline;margin:0px;padding:0px}#tetForm{max-width:80vw;max-height:90vh;min-width:600px !important;flex-shrink:1;border-radius:16px;overflow:hidden}#tetForm>div{border-radius:16px}#tetForm .tetBackground .tetTextColor{overflow-wrap:break-word}#tetForm .tetBackground .tetTextColor span{overflow-wrap:break-word}#tetForm .tet-containter{width:100%}#tetForm .tet-containter.tet-fg{margin-left:auto;margin-right:auto}.tet-head,#tetName>span,#tweet-text>span,#tetMenuButton>span{color:inherit;font:inherit;font-family:inherit;white-space:inherit;overflow-wrap:break-word}.rm,button:not(.mini)>#tetSVG,button.mini>span{display:none !important}.tetFreeze{overflow:hidden !important;overscroll-behavior-y:none !important}#tetMenuButton{z-index:10;width:8vw;height:auto;position:fixed;top:65%;left:0px}#tetMenuButton.tetTD{left:90% !important;top:0% !important}#tetMenuButton>svg{position:relative;max-width:100%;height:1.25em;fill:currentcolor;margin-right:12px;user-select:none;right:35% !important}#tetMenuButton,.tetAlertBtns,#tetReload,#tetReset{list-style:none;text-align:inherit;text-decoration:none;border-radius:15px;justify-content:center;display:flex !important;font-family:inherit;font-size:20px !important;font-weight:bold !important;padding:0px !important}button.tetBtn.mini{border:transparent !important;background:transparent !important}#tetMenuButton,.tetAlertBtns,#tetReload,#tetReset,#tet,.tet{cursor:pointer !important}.tet.tet-td{display:inherit}#tet{justify-items:center}input#apifield,#tetName,#tetSelector>select{padding-left:2% !important}#tetReload,#tetReset{margin:2% 25% 0px 25%}#apifield,#tetSelector{border-radius:4px;border-width:1px;margin:2% 6% 0px 6%}.r-demo{outline-style:none;margin:0px 32px 0px 32px !important;padding:12px 0px 12px 0px !important;overflow:hidden;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-direction:normal;-moz-box-orient:horizontal;flex-direction:row !important;flex-shrink:1;-webkit-box-flex:1;-moz-box-flex:1;flex-grow:1}.r-demo .tet-av{width:100%;margin-left:12px !important;margin-right:12px !important;-webkit-box-flex:0;flex-grow:0;flex-shrink:1;flex-basis:48px;-webkit-box-align:center;-moz-box-align:center;align-items:center;height:48px;overflow:hidden;border-radius:9999px;outline-style:none;display:block}.r-demo .tet-txt{flex-basis:0px;-webkit-box-flex:1;-moz-box-flex:1;flex-grow:1;-webkit-box-pack:center;-moz-box-pack:center;justify-content:center}.r-demo .tet-txt .txt-header{margin-bottom:2px;-moz-box-align:start;align-items:start;-moz-box-pack:justify;justify-content:space-between;-moz-box-direction:normal;-moz-box-orient:horizontal;flex-direction:row;max-width:100%}.r-demo .tet-txt .txt-header .tet-at{display:flex;margin-left:4px;color:#6e767d;font-weight:400;font-size:15px;line-height:20px;overflow-wrap:break-word;min-width:0px}#tetDemo{margin:4px 0px 0px 0px;line-height:16px;font-size:13px;flex-wrap:wrap;font-weight:400;min-width:0px;display:flex !important}.btNav{justify-content:center;flex-direction:row;top:0px}.btNav span{font-family:inherit}.btNav,.navbackground{position:fixed !important;width:100vw;height:100vh}.navbackground{top:0;left:0}.navbackground.warn{z-index:10 !important}.mini{min-height:3% !important;overflow:hidden;background:transparent;border-color:transparent}.r-hover{text-decoration-line:underline !important;outline-style:none !important}#tweet-text{font-size:23px !important;font-weight:400 !important;line-height:28px !important}`;
  102.  
  103. typeof GM === "undefined" ? (GM = {}, GM.setValue = GM_setValue, GM.getValue = GM_getValue) : false;
  104. let tetInfo = {
  105. icon: GM_info.script.icon,
  106. name: GM_info.script.name,
  107. version: GM_info.script.version
  108. },
  109. tetAvatar = tetInfo.icon,
  110. enableLogs = false;
  111. tetInfo.name === "[Dev] Twitter External Translator" ? enableLogs = true : false;
  112. const log = (msg, alert) => {
  113. return enableLogs || alert === "error" ? console.log('[TET]', msg) : false;
  114. },
  115. qs = (element, all) => {
  116. return !all ? document.querySelector(element) : document.querySelectorAll(element);
  117. },
  118. ael = (event, callback, elm = document) => {
  119. return elm.addEventListener(event, callback);
  120. },
  121. injectCSS = (css, name = "common") => {
  122. return document.head.insertAdjacentHTML('beforeend', `<style id="tet-${name}">${css}</style>`);
  123. },
  124. autoHide = async () => {
  125. await new Promise(resolve => setTimeout(resolve, 5000));
  126. $('svg#tetSVG').hide();
  127. },
  128. TETObserve = (elm, callback, options = {
  129. subtree: true,
  130. childList: true
  131. }) => {
  132. let observer = new MutationObserver(callback);
  133. callback([], observer);
  134. observer.observe(elm, options);
  135. return observer;
  136. },
  137. TETSave = (key = "Config", value = JSON.stringify(TETConfig)) => {
  138. GM.setValue(key, value);
  139. localStorage.TETConfig = value;
  140. },
  141. lh = document.location.host,
  142. lr = document.location.href,
  143. find = {
  144. twitter: lh === "twitter.com" || lh === "mobile.twitter.com",
  145. tweetdeck: lh === "tweetdeck.twitter.com",
  146. twitlonger: lh === "www.twitlonger.com",
  147. nitter: /nitter/.test(lr) || lh === "twitr.gq" || lh === "birdsite.xanny.family"
  148. },
  149. TETInject = () => {
  150. find.twitter ? TETObserve(document.body, () => {
  151. Twitter();
  152. }) : find.tweetdeck ? TETObserve(document.body, () => {
  153. TweetDeck();
  154. }) : find.twitlonger ? ael("DOMContentLoaded", TwitLonger()) : find.nitter ? TETObserve(document.body, () => {
  155. Nitter();
  156. }) : false;
  157. },
  158. isHTML = (str, doc = new DOMParser().parseFromString(str, "text/html")) => {
  159. return Array.from(doc.body.childNodes).some(node => node.nodeType === 1);
  160. },
  161. icons = {
  162. azure: '<img class="exIcon" width="16" src="data:image/vnd.microsoft.icon;base64,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"/>',
  163. bing: '<img class="exIcon" width="16" src="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFzSURBVDhPrZDLSwJRGEfnXwiiRURkLnpQlNlUo4usQGgjkdXGhVtXPYiglUS1jTYRLtsVRRC1CMI0qEAokFQssBeRhY8ZTRwzK385w5VupKTQgbO4Z777wR2GRuMUvRpHcoYcy0d7kEJekspDs/eKvNxuKk5y6XDbb6AluXS49dxFSpJLp2ctA1qpdR0Cnc6PO3ngL7pt76CVGuvIQnX0jqaTFGrPYk55sBjsUhq0UlM7P5dbjtNQuhKocoeh9Dy45eFCqOdE0JLMNJ6KqDnnUe0JosN/X/zfqKYToCVZptIdMtfv3EB3dQ1j4LKX5J+0WnjQksxwy0F92+wjFOYb1E34QqaAt/CCBtMzaKWm34i+9K5EwFrDaLY8odZ4W/wJuoVwRGG4gyQ3GeQN9iQGNwX0rfLg5gW0j0fRaX2wk/HfjPiyFWP+LEYvPjDsykBesCVgwCZAuxiHaiquJKPFGfJl2e8FYm5BDP02YZ98/m8Y5gsM/AoQ7XCKzQAAAABJRU5ErkJggg=="/>',
  164. deepl: '<img class="exIcon" width="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACNwAAAjcB9wZEwgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGZSURBVDiNjZKxaxRBFMZ/b2ZHbWITUxkRC4PnBUW0k1gkoFlMYmIR8R+w0UZBFAvtLAMS0ipC0guCd0GOa23EJGTPkBRCSCNHKiEgMzvPwmjCuiv3lft97zff7BuhQraWTouJLwE0mmf518a7spwUPxwZvlmLms8B4wWrLZhHPvuwUg44N9afGPcc4T5gK4pFgSUv/jHrre8HgKHJE4nzHWBgn/sZdBuYqQB1Q+5rbLR2DUBy1J89GIbEmNmQNW8DqxWAgcS5IQBT5vqYP3H1Gw9AHyosAKECVA4QuKfIPMhHVKygV4OVU8ByT4BDsiI6rWpusdbYUdgpBpLSMeGTRLYx2o5q9kT0ja2P3xU401ODQJz1neYdVRkT9C1gyob/Ngg/3VbifJf9TVg1L2Q43UC1eo3eb8KfB7O7uRf7T782Yo8hXBG4DFwvaRgFFoP4GTqt7u/bFuTOp5dU9BUw8u/BOhqy5fZ//4HvNL6ErHlNkSmFb4e9YM1WMV+5xjxrvM+P99VBngI/qnK96UI66OrpEhcnThatXx/tiqJJdDA6AAAAAElFTkSuQmCC"/>',
  165. gCloud: '<img class="exIcon" width="16" src="data:image/vnd.microsoft.icon;base64,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AH//AAD//4AB///gB////D//////////////////"/>',
  166. google: '<img class="exIcon" width="16" src="data:image/x-icon;base64,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"/>',
  167. mymemory: '<img class="exIcon" width="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAANoAAADaASIXBHgAAAAHdElNRQfiDAMMISYXlTu8AAABNElEQVQoz2XQP0vUcQAG8M/3J2EU1OCqTqZngmBDYosS3mhFQQ0ivYCGewkNgg6CryECEUQXaSiaokGIOGnxQCNpqaAlTgfrgqfh0oqeZ3r+wANPiS7KoIYpwzqamp7moOtXUKqy6sCAdXPmrKtplkYpIPTacmgm/tCIPc+UEJYduvx3HKHPrkYw6sRMKO6aj/BIPcKEI1dYsRHhho+mI9zyTX+ENYuVaa/BsLd5Bdn2wRB47hptU+Gqlx6e7T+2qT+M+1w51sEP311wiouO/cR55ypf1ch7m+pnhVlP8gUD9ivbboOWyVKHct+QffDADjUdIxFuuhNhwWSEMUcGhSV7+v476pKW1e6TPV7YNfFPPKZlSxVd2WNJx5oF4667Z0Pbst74XYhQs+idT9reWDF66v8CC+SUrxqqgPcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMTItMDNUMTI6MzM6MzgrMDE6MDBxe1dUAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTEyLTAzVDEyOjMzOjM4KzAxOjAwACbv6AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABXelRYdFJhdyBwcm9maWxlIHR5cGUgaXB0YwAAeJzj8gwIcVYoKMpPy8xJ5VIAAyMLLmMLEyMTS5MUAxMgRIA0w2QDI7NUIMvY1MjEzMQcxAfLgEigSi4A6hcRdPJCNZUAAAAASUVORK5CYII="/>',
  168. translate: '<img class="exIcon" width="16" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjEzMCIgdmlld0JveD0iMCAwIDE4MCAxMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTY0LjYwMDYgMjIuMzcyMVYxMjkuNjVIMzcuNDY2NVYyMi4zNzIxSDBWMEgxMDIuMTU3VjIyLjM3MjFINjQuNjAwNlpNMTMxLjUwNCA5NS4zOTA0QzE0MS4xNCA4NS42NDkyIDE0OC40NzIgNzMuNjAzOCAxNTMuODE0IDU4LjgzNUgxMDguOTg0QzExNC4xMTYgNzIuODcwNiAxMjEuNTUzIDg1LjIzMDMgMTMxLjUwNCA5NS4zOTA0Wk0xNzguOTUyIDUxLjE4ODdWNTguODM1SDE2Mi44MjJDMTU2LjY0MiA3Ni4wMTI5IDE0OC4zNjcgODkuODM5IDEzNy40NzQgMTAwLjgzN0MxNDguODkxIDExMC40NzMgMTYzLjAzMSAxMTcuNTk2IDE4MCAxMjEuNTc2QzE3OC4xMTQgMTIzLjM1NyAxNzUuNjAxIDEyNi45MTggMTc0LjQ0OCAxMjkuMTE4QzE1Ni45NTYgMTI0LjYxNCAxNDIuNzExIDExNy4wNzIgMTMxLjE5IDEwNi43MDNDMTE5LjY2OCAxMTYuNTQ4IDEwNS41MjcgMTIzLjc3NiA4OC42NjM4IDEyOS4yMjJDODcuOTMwNiAxMjcuMzM3IDg1LjQxNjggMTIzLjU2NiA4My43NDA5IDEyMS43ODZDMTAwLjM5NSAxMTYuOTY3IDExNC4xMTYgMTEwLjI2NCAxMjUuMzI0IDEwMS4wNDZDMTE0LjUzNSA4OS42Mjk1IDEwNi4zNjUgNzUuNDg5MSAxMDAuMzk1IDU4LjgzNUg4NC45OTc4VjUxLjE4ODdIMTI3LjYyOFYzMy40ODcxSDEzNS40ODRWNTEuMTg4N0gxNzguOTUyWiIgZmlsbD0iIzI3QTJGOCIvPgo8L3N2Zz4K"/>',
  169. yandex: '<img class="exIcon" width="16" src="data:image/x-icon;base64,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"/>',
  170. fn() {
  171. return {
  172. azure: this.azure,
  173. bing: this.bing,
  174. deepl: this.deepl,
  175. gCloud: this.gCloud,
  176. google: this.google,
  177. mymemory: this.mymemory,
  178. translate: this.translate,
  179. yandex: this.yandex
  180. };
  181. }
  182.  
  183. },
  184. defaultLang = $("html").attr("lang"),
  185. defaultTheme = () => {
  186. let b = $("body").attr("style"),
  187. twit = b === "background-color: #FFFFFF;" ? "#FFFFFF" : b === "background-color: #15202B;" ? "#15202B" : "#000000";
  188. return find.twitter ? twit : find.tweetdeck ? "tweetdeck" : find.nitter ? "nitter" : find.twitlonger ? "#FFFFFF" : "#000000";
  189. },
  190. defaultDesc = "Pretend I'm a foreign language.";
  191.  
  192. let TETConfig = {},
  193. en = {
  194. sel: `English (en)`,
  195. tw: `Translate with`,
  196. lg: `Language`,
  197. tr: `Translator`,
  198. ds: `Display`,
  199. menu: `Menu`,
  200. th: `Theme`,
  201. df: `Default`,
  202. di: `Dim`,
  203. lo: `Lights out`,
  204. col: `Color`,
  205. cb: `Blue`,
  206. cy: `Yellow`,
  207. cr: `Red`,
  208. cp: `Purple`,
  209. co: `Orange`,
  210. cg: `Green`,
  211. t: `Text`,
  212. i: `Icon`,
  213. ti: `Text + Icon`,
  214. res: `Restore to Defaults`,
  215. desc: {
  216. language: `Site Language: ${defaultLang}`,
  217. translate: `Full explanation found on GitHub.`,
  218. display: `Prefer text only? How about just an icon instead?`,
  219. color: `A rainbow of choices.`,
  220. theme: `It's best to match your current theme!`
  221. },
  222. quest: {
  223. head: `Are you sure?`,
  224. body: `Website will be reloaded.`,
  225. yes: `Yes`,
  226. no: `No`
  227. },
  228. fn: checkLng
  229. },
  230. zh = {
  231. sel: `中文 (zh)`,
  232. tw: `翻译与`,
  233. lg: `语种`,
  234. tr: `译者`,
  235. ds: `显示`,
  236. ti: `文本+图标`,
  237. menu: `菜单`,
  238. th: `主题`,
  239. df: `默认情况下`,
  240. di: `凹陷`,
  241. lo: `熄灯`,
  242. col: `颜色`,
  243. cb: `蓝色`,
  244. cy: `黄色`,
  245. cr: `红色`,
  246. cp: `紫色`,
  247. co: `橙色`,
  248. cg: `绿色`,
  249. t: `案文`,
  250. i: `图标`,
  251. res: `恢复`,
  252. desc: {
  253. language: `Site Language: ${defaultLang}`,
  254. translate: ` [WIP] Translate`,
  255. display: ` [WIP] Display`,
  256. color: ` [WIP] Color`,
  257. theme: ` [WIP] Theme`
  258. },
  259. quest: {
  260. head: `你确定吗?`,
  261. body: `网站将被重新加载`,
  262. yes: `是的`,
  263. no: `不确定`
  264. },
  265. fn: checkLng
  266. },
  267. bg = {
  268. sel: `Български (bg)`,
  269. tw: `Преведете с`,
  270. lg: `Език`,
  271. tr: `Преводач`,
  272. ds: `Показване на`,
  273. ti: `Текст + икона`,
  274. menu: `Меню`,
  275. th: `Тема`,
  276. df: `По подразбиране`,
  277. di: `Dim`,
  278. lo: `Изгасяне на осветлението`,
  279. col: `Цвят`,
  280. cb: `Синьо`,
  281. cy: `Жълто`,
  282. cr: `Червено`,
  283. cp: `Лилаво`,
  284. co: `Оранжево`,
  285. cg: `Зелено`,
  286. t: `Текст`,
  287. i: `Икона`,
  288. res: `Възстановявам`,
  289. desc: {
  290. language: `Site Language: ${defaultLang}`,
  291. translate: ` [WIP] Translate`,
  292. display: ` [WIP] Display`,
  293. color: ` [WIP] Color`,
  294. theme: ` [WIP] Theme`
  295. },
  296. quest: {
  297. head: `Сигурни ли сте?`,
  298. body: `Уебсайтът ще бъде презареден.`,
  299. yes: `Да`,
  300. no: `Не`
  301. },
  302. fn: checkLng
  303. },
  304. cs = {
  305. sel: esky (cs)`,
  306. tw: `Přeložit pomocí`,
  307. lg: `Jazyk`,
  308. tr: `Překladatel`,
  309. ds: `Zobrazit`,
  310. ti: `Text + ikona`,
  311. menu: `Nabídka`,
  312. th: `Téma`,
  313. df: `Výchozí`,
  314. di: `Dim`,
  315. lo: `Zhasnout světla`,
  316. col: `Barva`,
  317. cb: `Modrá`,
  318. cy: lutá`,
  319. cr: ervená`,
  320. cp: `Fialová`,
  321. co: `Oranžová`,
  322. cg: `Zelená`,
  323. t: `Text`,
  324. i: `Ikona`,
  325. res: `Obnovit`,
  326. desc: {
  327. language: `Site Language: ${defaultLang}`,
  328. translate: ` [WIP] Translate`,
  329. display: ` [WIP] Display`,
  330. color: ` [WIP] Color`,
  331. theme: ` [WIP] Theme`
  332. },
  333. quest: {
  334. head: `Jste si jistý?`,
  335. body: `Webové stránky budou znovu načteny.`,
  336. yes: `Ano`,
  337. no: `Ne`
  338. },
  339. fn: checkLng
  340. },
  341. da = {
  342. sel: `Dansk (da)`,
  343. tw: `Oversæt med`,
  344. lg: `Sprog`,
  345. tr: `Oversætter`,
  346. ds: `Vis`,
  347. ti: `Tekst + ikon`,
  348. menu: `Menu`,
  349. th: `Tema`,
  350. df: `Standard`,
  351. di: `Dim`,
  352. lo: `Lyset slukkes`,
  353. col: `Farve`,
  354. cb: `Blå`,
  355. cy: `Gul`,
  356. cr: `Rød`,
  357. cp: `Lilla`,
  358. co: `Orange`,
  359. cg: `Grøn`,
  360. t: `Tekst`,
  361. i: `Ikon`,
  362. res: `Genskabe`,
  363. desc: {
  364. language: `Site Language: ${defaultLang}`,
  365. translate: ` [WIP] Translate`,
  366. display: ` [WIP] Display`,
  367. color: ` [WIP] Color`,
  368. theme: ` [WIP] Theme`
  369. },
  370. quest: {
  371. head: `Er du sikker?`,
  372. body: `Hjemmesiden vil blive genindlæst.`,
  373. yes: `Ja`,
  374. no: `Nej`
  375. },
  376. fn: checkLng
  377. },
  378. et = {
  379. sel: `Eesti (et)`,
  380. tw: `Tõlge koos`,
  381. lg: `Keel`,
  382. tr: `Tõlkija`,
  383. ds: `Kuva`,
  384. ti: `Tekst + ikoon`,
  385. menu: `Menüü`,
  386. th: `Teema`,
  387. df: `Vaikimisi`,
  388. di: `Dim`,
  389. lo: `Valgus välja lülitatud`,
  390. col: `Värv`,
  391. cb: `Sinine`,
  392. cy: `Kollane`,
  393. cr: `Punane`,
  394. cp: `Lilla`,
  395. co: `Oranž`,
  396. cg: `Roheline`,
  397. t: `Tekst`,
  398. i: `Ikoon`,
  399. res: `Taastada`,
  400. desc: {
  401. language: `Site Language: ${defaultLang}`,
  402. translate: ` [WIP] Translate`,
  403. display: ` [WIP] Display`,
  404. color: ` [WIP] Color`,
  405. theme: ` [WIP] Theme`
  406. },
  407. quest: {
  408. head: `Oled sa kindel?`,
  409. body: `Veebileht laaditakse uuesti.`,
  410. yes: `Jah`,
  411. no: `Ei`
  412. },
  413. fn: checkLng
  414. },
  415. fi = {
  416. sel: `Suomalainen (fi)`,
  417. tw: `Käännä kanssa`,
  418. lg: `Kieli`,
  419. tr: `Kääntäjä`,
  420. ds: `Näytä`,
  421. ti: `Teksti + kuvake`,
  422. menu: `Valikko`,
  423. th: `Teema`,
  424. df: `Oletus`,
  425. di: `Dim`,
  426. lo: `Valot pois päältä`,
  427. col: `Väri`,
  428. cb: `Sininen`,
  429. cy: `Keltainen`,
  430. cr: `Punainen`,
  431. cp: `Violetti`,
  432. co: `Oranssi`,
  433. cg: `Vihreä`,
  434. t: `Teksti`,
  435. i: `Kuvake`,
  436. res: `Palauta`,
  437. desc: {
  438. language: `Site Language: ${defaultLang}`,
  439. translate: ` [WIP] Translate`,
  440. display: ` [WIP] Display`,
  441. color: ` [WIP] Color`,
  442. theme: ` [WIP] Theme`
  443. },
  444. quest: {
  445. head: `Oletko varma?`,
  446. body: `Sivusto ladataan uudelleen.`,
  447. yes: `Kyllä`,
  448. no: `Ei`
  449. },
  450. fn: checkLng
  451. },
  452. el = {
  453. sel: `Ελληνική (el)`,
  454. tw: `Μεταφράστε με`,
  455. lg: `Γλώσσα`,
  456. tr: `Μεταφραστής`,
  457. ds: `Εμφάνιση`,
  458. ti: `Κείμενο + εικονίδιο`,
  459. menu: `Μενού`,
  460. th: `Θέμα`,
  461. df: `Προεπιλογή`,
  462. di: `Dim`,
  463. lo: `Σβήνει τα φώτα`,
  464. col: `Χρώμα`,
  465. cb: `Μπλε`,
  466. cy: `Κίτρινο`,
  467. cr: `Κόκκινο`,
  468. cp: `Μωβ`,
  469. co: `Πορτοκαλί`,
  470. cg: `Πράσινο`,
  471. t: `Κείμενο`,
  472. i: `Εικονίδιο`,
  473. res: `Επαναφορά`,
  474. desc: {
  475. language: `Site Language: ${defaultLang}`,
  476. translate: ` [WIP] Translate`,
  477. display: ` [WIP] Display`,
  478. color: ` [WIP] Color`,
  479. theme: ` [WIP] Theme`
  480. },
  481. quest: {
  482. head: `Είσαι σίγουρος;`,
  483. body: ιστοσελίδα θα επαναφορτωθεί.`,
  484. yes: `Ναι`,
  485. no: `Όχι`
  486. },
  487. fn: checkLng
  488. },
  489. hu = {
  490. sel: `Magyar (hu)`,
  491. tw: `Fordítson a`,
  492. lg: `Nyelv`,
  493. tr: `Fordító`,
  494. ds: `Megjelenítés`,
  495. ti: `Szöveg + ikon`,
  496. menu: `Menü`,
  497. th: `Téma`,
  498. df: `Alapértelmezett`,
  499. di: `Dim`,
  500. lo: `Fények kikapcsolva`,
  501. col: `Szín`,
  502. cb: `Kék`,
  503. cy: `Sárga`,
  504. cr: `Piros`,
  505. cp: `Lila`,
  506. co: `Narancs`,
  507. cg: `Zöld`,
  508. t: `Szöveg`,
  509. i: `Ikon`,
  510. res: `Visszaállítása`,
  511. desc: {
  512. language: `Site Language: ${defaultLang}`,
  513. translate: ` [WIP] Translate`,
  514. display: ` [WIP] Display`,
  515. color: ` [WIP] Color`,
  516. theme: ` [WIP] Theme`
  517. },
  518. quest: {
  519. head: `Biztos vagy benne?`,
  520. body: `A weboldal újratöltődik.`,
  521. yes: `Igen`,
  522. no: `Nem`
  523. },
  524. fn: checkLng
  525. },
  526. lv = {
  527. sel: `Latviešu (lv)`,
  528. tw: `Tulkot ar`,
  529. lg: `Valoda`,
  530. tr: `Tulkotājs`,
  531. ds: `Displejs`,
  532. ti: `Teksts + ikona`,
  533. menu: `Izvēlne`,
  534. th: `Tēma`,
  535. df: `Noklusējuma`,
  536. di: `Dim`,
  537. lo: `Izslēgt gaismu`,
  538. col: `Krāsa`,
  539. cb: `Zils`,
  540. cy: `Dzeltens`,
  541. cr: `Sarkans`,
  542. cp: `Violeta`,
  543. co: `Oranža`,
  544. cg: `Zaļš`,
  545. t: `Teksts`,
  546. i: `Ikona`,
  547. res: `Atjaunot`,
  548. desc: {
  549. language: `Site Language: ${defaultLang}`,
  550. translate: ` [WIP] Translate`,
  551. display: ` [WIP] Display`,
  552. color: ` [WIP] Color`,
  553. theme: ` [WIP] Theme`
  554. },
  555. quest: {
  556. head: `Vai esat pārliecināts?`,
  557. body: `Tīmekļa vietne tiks ielādēta no jauna.`,
  558. yes: `Jā`,
  559. no: `Nē`
  560. },
  561. fn: checkLng
  562. },
  563. lt = {
  564. sel: `Lietuvių kalba (lt)`,
  565. tw: `Išversti su`,
  566. lg: `Kalba`,
  567. tr: `Vertėjas`,
  568. ds: `Rodyti`,
  569. ti: `Tekstas + piktograma`,
  570. menu: `Meniu`,
  571. th: `Tema`,
  572. df: `Numatytoji`,
  573. di: `Dim`,
  574. lo: `Išjungti šviesą`,
  575. col: `Spalva`,
  576. cb: `Mėlyna`,
  577. cy: `Geltona`,
  578. cr: `Raudona`,
  579. cp: `Violetinė`,
  580. co: `Oranžinė`,
  581. cg: alia`,
  582. t: `Tekstas`,
  583. i: `Ikona`,
  584. res: `Atkurti`,
  585. desc: {
  586. language: `Site Language: ${defaultLang}`,
  587. translate: ` [WIP] Translate`,
  588. display: ` [WIP] Display`,
  589. color: ` [WIP] Color`,
  590. theme: ` [WIP] Theme`
  591. },
  592. quest: {
  593. head: `Ar tikrai?`,
  594. body: `Svetainė bus iš naujo įkelta.`,
  595. yes: `Taip`,
  596. no: `Ne`
  597. },
  598. fn: checkLng
  599. },
  600. ro = {
  601. sel: `Românesc (ro)`,
  602. tw: `Tradu cu`,
  603. lg: `Limba`,
  604. tr: `Traducător`,
  605. ds: `Afișați`,
  606. ti: `Text + Icoană`,
  607. menu: `Meniu`,
  608. th: `Tema`,
  609. df: `Implicit`,
  610. di: `Dim`,
  611. lo: `Stinge lumina`,
  612. col: `Culoare`,
  613. cb: `Albastru`,
  614. cy: `Galben`,
  615. cr: `Roșu`,
  616. cp: `Violet`,
  617. co: `Portocaliu`,
  618. cg: `Verde`,
  619. t: `Text`,
  620. i: `Icoană`,
  621. res: `Restaurați`,
  622. desc: {
  623. language: `Site Language: ${defaultLang}`,
  624. translate: ` [WIP] Translate`,
  625. display: ` [WIP] Display`,
  626. color: ` [WIP] Color`,
  627. theme: ` [WIP] Theme`
  628. },
  629. quest: {
  630. head: `Ești sigur?`,
  631. body: `Site-ul va fi reîncărcat.`,
  632. yes: `Da`,
  633. no: `Nu`
  634. },
  635. fn: checkLng
  636. },
  637. sk = {
  638. sel: `Slovenská (sk)`,
  639. tw: `Preložiť s`,
  640. lg: `Jazyk`,
  641. tr: `Prekladateľ`,
  642. ds: `Zobraziť`,
  643. ti: `Text + ikona`,
  644. menu: `Ponuka`,
  645. th: `Téma`,
  646. df: `Predvolené nastavenie`,
  647. di: `Dim`,
  648. lo: `Zhasnuté svetlá`,
  649. col: `Farba`,
  650. cb: `Modrá`,
  651. cy: ltá`,
  652. cr: ervená`,
  653. cp: `Fialová`,
  654. co: `Oranžová`,
  655. cg: `Zelená`,
  656. t: `Text`,
  657. i: `Ikona`,
  658. res: `Obnovenie`,
  659. desc: {
  660. language: `Site Language: ${defaultLang}`,
  661. translate: ` [WIP] Translate`,
  662. display: ` [WIP] Display`,
  663. color: ` [WIP] Color`,
  664. theme: ` [WIP] Theme`
  665. },
  666. quest: {
  667. head: `Ste si istý?`,
  668. body: `Webová stránka bude znovu načítaná.`,
  669. yes: no`,
  670. no: `Nie`
  671. },
  672. fn: checkLng
  673. },
  674. sl = {
  675. sel: `Slovenski (sl)`,
  676. tw: `Prevedi z`,
  677. lg: `Jezik`,
  678. tr: `Prevajalec`,
  679. ds: `Prikaži`,
  680. ti: `Besedilo + ikona`,
  681. menu: `Meni`,
  682. th: `Tema`,
  683. df: `Privzeto`,
  684. di: `Dim`,
  685. lo: `Ugasne luči`,
  686. col: `Barva`,
  687. cb: `Modra`,
  688. cy: `Rumena`,
  689. cr: `Rdeča`,
  690. cp: `Vijolična`,
  691. co: `Oranžna`,
  692. cg: `Zelena`,
  693. t: `Besedilo`,
  694. i: `Ikona`,
  695. res: `Obnovitev`,
  696. desc: {
  697. language: `Site Language: ${defaultLang}`,
  698. translate: ` [WIP] Translate`,
  699. display: ` [WIP] Display`,
  700. color: ` [WIP] Color`,
  701. theme: ` [WIP] Theme`
  702. },
  703. quest: {
  704. head: `Ste prepričani?`,
  705. body: `Spletna stran bo ponovno naložena.`,
  706. yes: `Da`,
  707. no: `Ne`
  708. },
  709. fn: checkLng
  710. },
  711. sv = {
  712. sel: `Svenska (sv)`,
  713. tw: versätt med`,
  714. lg: `Språk`,
  715. tr: versättare`,
  716. ds: `Visa`,
  717. ti: `Text + ikon`,
  718. menu: `Meny`,
  719. th: `Tema`,
  720. df: `Standard`,
  721. di: `Dim`,
  722. lo: `Ljuset släcks`,
  723. col: `Färg`,
  724. cb: `Blå`,
  725. cy: `Gul`,
  726. cr: `Röd`,
  727. cp: `Lila`,
  728. co: `Orange`,
  729. cg: `Grön`,
  730. t: `Text`,
  731. i: `Ikon`,
  732. res: terställ`,
  733. desc: {
  734. language: `Site Language: ${defaultLang}`,
  735. translate: ` [WIP] Translate`,
  736. display: ` [WIP] Display`,
  737. color: ` [WIP] Color`,
  738. theme: ` [WIP] Theme`
  739. },
  740. quest: {
  741. head: r du säker?`,
  742. body: `Webbplatsen kommer att laddas om.`,
  743. yes: `Ja`,
  744. no: `Nej`
  745. },
  746. fn: checkLng
  747. },
  748. nl = {
  749. sel: `Nederlands (nl)`,
  750. tw: `Vertaal met`,
  751. lg: `Taal`,
  752. tr: `Vertaler`,
  753. ds: `Weergave`,
  754. ti: `Tekst + Pictogram`,
  755. menu: `Menu`,
  756. th: `Thema`,
  757. df: `Standaard`,
  758. di: `Dimmen`,
  759. lo: `Licht uit`,
  760. col: `Kleur`,
  761. cb: `Blauw`,
  762. cy: `Geel`,
  763. cr: `Rood`,
  764. cp: `Paars`,
  765. co: `Oranje`,
  766. cg: `Groen`,
  767. t: `Tekst`,
  768. i: `Icoon`,
  769. res: `Herstel`,
  770. desc: {
  771. language: `Site Language: ${defaultLang}`,
  772. translate: ` [WIP] Translate`,
  773. display: ` [WIP] Display`,
  774. color: ` [WIP] Color`,
  775. theme: ` [WIP] Theme`
  776. },
  777. quest: {
  778. head: `Ben je zeker?`,
  779. body: `De website wordt opnieuw geladen.`,
  780. yes: `Ja`,
  781. no: `Nee`
  782. },
  783. fn: checkLng
  784. },
  785. fr = {
  786. sel: `Français (fr)`,
  787. tw: `Traduire avec`,
  788. lg: `Langue`,
  789. tr: `Traducteur`,
  790. ds: `Afficher`,
  791. ti: `Texte + Icône`,
  792. menu: `Menu`,
  793. th: `Thème`,
  794. df: `Défaut`,
  795. di: `Dim`,
  796. lo: `Extinction des lumières`,
  797. col: `Couleur`,
  798. cb: `Bleu`,
  799. cy: `Jaune`,
  800. cr: `Rouge`,
  801. cp: `Violet`,
  802. co: `Orange`,
  803. cg: `Vert`,
  804. t: `Texte`,
  805. i: `Icône`,
  806. res: `Restaurer`,
  807. desc: {
  808. language: `Site Language: ${defaultLang}`,
  809. translate: ` [WIP] Translate`,
  810. display: ` [WIP] Display`,
  811. color: ` [WIP] Color`,
  812. theme: ` [WIP] Theme`
  813. },
  814. quest: {
  815. head: `Vous êtes sûr ?`,
  816. body: `Le site web va être rechargé.`,
  817. yes: `Oui`,
  818. no: `Non`
  819. },
  820. fn: checkLng
  821. },
  822. de = {
  823. sel: `Deutsch (de)`,
  824. tw: bersetzen mit`,
  825. lg: `Sprache`,
  826. tr: bersetzer`,
  827. ds: `Anzeige`,
  828. ti: `Text + Symbol`,
  829. menu: `Menü`,
  830. th: `Thema`,
  831. df: `Standard`,
  832. di: `Dimmen`,
  833. lo: `Licht aus`,
  834. col: `Farbe`,
  835. cb: `Blau`,
  836. cy: `Gelb`,
  837. cr: `Rot`,
  838. cp: `Lila`,
  839. co: `Orange`,
  840. cg: `Grün`,
  841. t: `Text`,
  842. i: `Icon`,
  843. res: `Wiederherstellen`,
  844. desc: {
  845. language: `Site Language: ${defaultLang}`,
  846. translate: ` [WIP] Translate`,
  847. display: ` [WIP] Display`,
  848. color: ` [WIP] Color`,
  849. theme: ` [WIP] Theme`
  850. },
  851. quest: {
  852. head: `Sind Sie sicher?`,
  853. body: `Die Website wird neu geladen.`,
  854. yes: `Ja`,
  855. no: `Nein`
  856. },
  857. fn: checkLng
  858. },
  859. it = {
  860. sel: `Italiano (it)`,
  861. tw: `Tradurre con`,
  862. lg: `Lingua`,
  863. tr: `Traduttore`,
  864. ds: `Visualizza`,
  865. ti: `Testo + icona`,
  866. menu: `Menu`,
  867. th: `Tema`,
  868. df: `Default`,
  869. di: `Dim`,
  870. lo: `Luci spente`,
  871. col: `Colore`,
  872. cb: `Blu`,
  873. cy: `Giallo`,
  874. cr: `Rosso`,
  875. cp: `Viola`,
  876. co: `Arancione`,
  877. cg: `Verde`,
  878. t: `Testo`,
  879. i: `Icona`,
  880. res: `Ripristinare`,
  881. desc: {
  882. language: `Site Language: ${defaultLang}`,
  883. translate: ` [WIP] Translate`,
  884. display: ` [WIP] Display`,
  885. color: ` [WIP] Color`,
  886. theme: ` [WIP] Theme`
  887. },
  888. quest: {
  889. head: `Sei sicuro?`,
  890. body: `Il sito sarà ricaricato.`,
  891. yes: `Sì`,
  892. no: `No`
  893. },
  894. fn: checkLng
  895. },
  896. ja = {
  897. sel: `日本語 (ja)`,
  898. tw: `で翻訳する`,
  899. lg: `言語`,
  900. tr: `翻訳者`,
  901. ds: `ディスプレイ`,
  902. ti: `テキスト+アイコン`,
  903. menu: `メニュー`,
  904. th: `テーマ`,
  905. df: `デフォルト`,
  906. di: `暗い`,
  907. lo: `消灯`,
  908. col: `カラー`,
  909. cb: `青`,
  910. cy: `黄`,
  911. cr: `赤`,
  912. cp: `紫`,
  913. co: `オレンジ`,
  914. cg: `グリーン`,
  915. t: `テキスト`,
  916. i: `アイコン`,
  917. res: `リストア`,
  918. desc: {
  919. language: `Site Language: ${defaultLang}`,
  920. translate: ` [WIP] Translate`,
  921. display: ` [WIP] Display`,
  922. color: ` [WIP] Color`,
  923. theme: ` [WIP] Theme`
  924. },
  925. quest: {
  926. head: `本当にいいの?`,
  927. body: `ウェブサイトが再読み込みされます。`,
  928. yes: `はい`,
  929. no: `いいえ`
  930. },
  931. fn: checkLng
  932. },
  933. pl = {
  934. sel: `Polski (pl)`,
  935. tw: `Tłumaczenie za pomocą`,
  936. lg: `Język`,
  937. tr: `Tłumacz`,
  938. ds: `Wyświetlacz`,
  939. ti: `Tekst + Ikona`,
  940. menu: `Menu`,
  941. th: `Motyw`,
  942. df: `Domyślnie`,
  943. di: ciemniaj`,
  944. lo: `Nie świeci się`,
  945. col: `Kolor`,
  946. cb: `Niebieski`,
  947. cy: `Żółty`,
  948. cr: `Czerwony`,
  949. cp: `Purpurowy`,
  950. co: `Pomarańczowy`,
  951. cg: `Zielony`,
  952. t: `Tekst`,
  953. i: `Ikona`,
  954. res: `Przywróć`,
  955. desc: {
  956. language: `Site Language: ${defaultLang}`,
  957. translate: ` [WIP] Translate`,
  958. display: ` [WIP] Display`,
  959. color: ` [WIP] Color`,
  960. theme: ` [WIP] Theme`
  961. },
  962. quest: {
  963. head: `Czy jesteś pewien?`,
  964. body: `Strona zostanie przeładowana.`,
  965. yes: `Tak`,
  966. no: `Nie`
  967. },
  968. fn: checkLng
  969. },
  970. pt = {
  971. sel: `Português (pt)`,
  972. tw: `Traduzir com`,
  973. lg: `Idioma`,
  974. tr: `Tradutora`,
  975. ds: `Mostrar`,
  976. ti: `Texto + Ícone`,
  977. menu: `Menu`,
  978. th: `Tema`,
  979. df: `Por defeito`,
  980. di: `Dim`,
  981. lo: `Luzes apagadas`,
  982. col: `Cor`,
  983. cb: `Azul`,
  984. cy: `Amarelo`,
  985. cr: `Vermelho`,
  986. cp: `Púrpura`,
  987. co: `Laranja`,
  988. cg: `Verde`,
  989. t: `Texto`,
  990. i: cone`,
  991. res: `Restaurar`,
  992. desc: {
  993. language: `Site Language: ${defaultLang}`,
  994. translate: ` [WIP] Translate`,
  995. display: ` [WIP] Display`,
  996. color: ` [WIP] Color`,
  997. theme: ` [WIP] Theme`
  998. },
  999. quest: {
  1000. head: `Tem a certeza?`,
  1001. body: `O website será carregado de novo.`,
  1002. yes: `Sim`,
  1003. no: `Não`
  1004. },
  1005. fn: checkLng
  1006. },
  1007. ru = {
  1008. sel: `Russisch (ru)`,
  1009. tw: `Перевод с`,
  1010. lg: `Язык`,
  1011. tr: `Переводчик`,
  1012. ds: `Показать`,
  1013. ti: `Текст + иконка`,
  1014. menu: `Меню`,
  1015. th: `Тема`,
  1016. df: `По умолчанию`,
  1017. di: `Приглушить`,
  1018. lo: `Выключить свет`,
  1019. col: `Цвет`,
  1020. cb: `Синий`,
  1021. cy: `Желтый`,
  1022. cr: `Красный`,
  1023. cp: `Фиолетовый`,
  1024. co: `Оранжевый`,
  1025. cg: `Зеленый`,
  1026. t: `Текст`,
  1027. i: `иконка`,
  1028. res: `Восстановить`,
  1029. desc: {
  1030. language: `Site Language: ${defaultLang}`,
  1031. translate: ` [WIP] Translate`,
  1032. display: ` [WIP] Display`,
  1033. color: ` [WIP] Color`,
  1034. theme: ` [WIP] Theme`
  1035. },
  1036. quest: {
  1037. head: `Вы уверены?`,
  1038. body: `Сайт будет перезагружен.`,
  1039. yes: `Да`,
  1040. no: `Нет`
  1041. },
  1042. fn: checkLng
  1043. },
  1044. es = {
  1045. sel: `Español (es)`,
  1046. tw: `Traducir con`,
  1047. lg: `Idioma`,
  1048. tr: `Traductor`,
  1049. ds: `Mostrar`,
  1050. ti: `Texto + Icono`,
  1051. menu: `Menú`,
  1052. th: `Tema`,
  1053. df: `Por defecto`,
  1054. di: `Atenuar`,
  1055. lo: `Luces apagadas`,
  1056. col: `Colores`,
  1057. cb: `Azul`,
  1058. cy: `Amarillo`,
  1059. cr: `Rojo`,
  1060. cp: `Púrpura`,
  1061. co: `Naranja`,
  1062. cg: `Verde`,
  1063. t: `Texto`,
  1064. i: `Icono`,
  1065. res: `Restaurar`,
  1066. desc: {
  1067. language: `Site Language: ${defaultLang}`,
  1068. translate: ` [WIP] Translate`,
  1069. display: ` [WIP] Display`,
  1070. color: ` [WIP] Color`,
  1071. theme: ` [WIP] Theme`
  1072. },
  1073. quest: {
  1074. head: `¿Está seguro?`,
  1075. body: `El sitio web será recargado.`,
  1076. yes: `Sí`,
  1077. no: `No`
  1078. },
  1079. fn: checkLng
  1080. },
  1081. //#endregion
  1082. DefaultConfig = {
  1083. lang: defaultLang,
  1084. translator: 'deepl',
  1085. display: "text + icon",
  1086. colors: "r-urgr8i",
  1087. theme: defaultTheme(),
  1088. api: {
  1089. deepl: "",
  1090. google: "",
  1091. version: "api-free"
  1092. },
  1093. cBG: 'rgba(91, 112, 131, 0.4)',
  1094. cColor: "r-p1n3y5 r-1bih22f",
  1095. cDisplay: `DeepL ${icons.deepl}`,
  1096. cHover: "r-1q3imqu",
  1097. cLang: en.fn().tw,
  1098. cText: "r-jwli3a",
  1099. cTheme: "r-kemksi",
  1100. cSub: "r-13gxpu9"
  1101. },
  1102. sidebar = `<button title="Menu" id="tetMenuButton" class="mini tetDisplayColor css-901oao tetBtn" type="button">\n<svg viewBox="0 0 24 24" id="tetSVG" class="tetTextColor" width="15">\n<g>\n<path d="M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm8.472 9.442c-.242.19-.472.368-.63.486-.68-1.265-1.002-1.78-1.256-2.007-.163-.145-.37-.223-.78-.375-.367-.136-1.482-.55-1.65-.85-.087-.153.136-.602.23-.793.088-.177.164-.33.196-.497.123-.646-.33-1.146-.728-1.59-.066-.072-.153-.17-.23-.26.335-.12.862-.26 1.42-.384 1.95 1.448 3.26 3.704 3.428 6.272zm-9.788-7.83c.076.25.145.5.182.678-.255.15-.663.363-.96.52-.262.136-.522.273-.738.392-.247.137-.442.234-.6.313-.347.174-.598.3-.833.553-.068.073-.26.278-1.02 1.886l-1.79-.656c1.293-1.94 3.362-3.31 5.76-3.685zM12 20.5c-4.687 0-8.5-3.813-8.5-8.5 0-1.197.25-2.335.7-3.37.47.182 1.713.66 2.75 1.035-.107.336-.245.854-.26 1.333-.03.855.502 1.7.562 1.792.053.08.12.15.2.207.303.21.687.5.827.616.063.343.166 1.26.23 1.833.144 1.266.175 1.48.24 1.65.005.012.514 1.188 1.315 1.188.576-.003.673-.206 1.855-2.688.244-.512.45-.95.513-1.058.1-.144.597-.61.87-.83.55-.442.76-1.82.413-2.682-.335-.83-1.92-2.08-2.5-2.195-.17-.033-.43-.04-.953-.053-.497-.01-1.25-.028-1.536-.09-.098-.024-.314-.094-.605-.196.32-.668.627-1.28.71-1.4.05-.052.168-.112.408-.234.17-.086.383-.192.653-.34.208-.116.458-.247.71-.38 1.168-.612 1.484-.8 1.658-1.082.11-.177.263-.44-.04-1.544 1.042.027 2.038.24 2.955.61-.89.32-1.024.595-1.106.77-.367.784.256 1.475.667 1.93.096.107.24.268.32.38l-.017.036c-.234.472-.67 1.35-.196 2.194.406.72 1.384 1.13 2.437 1.52.134.05.25.092.33.126.16.208.496.79 1 1.735l.154.285c.078.14.33.505.842.505.167 0 .363-.04.59-.137.032-.013.083-.035.18-.094C19.72 17.405 16.22 20.5 12 20.5zm-3.812-9.45c.01-.285.102-.646.184-.907l.027.006c.397.09 1.037.11 1.83.13.32.006.59.008.615 0 .326.143 1.355 1 1.483 1.31.113.28.05.812-.034 1.01-.233.197-.845.735-1.085 1.078-.093.13-.212.373-.64 1.274-.133.276-.313.654-.488 1.013-.026-.225-.054-.472-.08-.686-.225-2.003-.273-2.22-.42-2.445-.05-.078-.202-.31-1.135-.973-.117-.213-.268-.564-.26-.813z"></path>\n</g>\n</svg><span class="css-901oao css-16my406 r-bcqeeobuttontc0 r-jwli3a">Menu</span></button>\n<div role="dialog" tabindex="0" id="tetTW" class="btNav css-1dbjc4n r-1awozwy r-18u37iz r-1777fci r-ipm5af r-g6jmlv">\n<div class="navbackground rm"></div>\n<div class="tetAlert rm css-1dbjc4n">\n<div class="tetConfirmation tetBackground css-1dbjc4n">\n<h1 class="tetAlertTxt tetTextColor css-4rbku5 css-901oao"><span class="tet-alert-head css-901oao css-16my406">Are you sure?</span></h1>\n<div class="tetAlertTxt tetTextColor css-901oao"><span class="tet-alert-span css-901oao css-16my406">Website will be reloaded.</span></div>\n<div class="css-1dbjc4n">\n<div role="button" class="tetAlertBtns confirm css-18t94o4 css-1dbjc4n tetBtn" style="background-color:#eff3f4" data-testid="confirmationSheetConfirm">\n<div class="css-901oao" style="color:#0f1419"><span><span class="tet-confirm">Yes</span></span></div>\n</div>\n<div role="button" class="tetAlertBtns deny tetDisplayColor css-18t94o4 css-1dbjc4n tetBtn" data-testid="confirmationSheetCancel">\n<div class="css-901oao" style="color:#eff3f4"><span><span class="tet-deny">No</span></span></div>\n</div>\n</div>\n</div>\n</div>\n<div id="tetForm" class="rm css-1dbjc4n" aria-modal="true">\n<div class="tetBackground css-1dbjc4n r-16y2uox r-1wbh5a2">\n<div class="tetTextColor css-901oao tet-header">\n<span class="css-901oao">${tetInfo.name} Config</span>\n<span class="tetTextColor tet-info">v${tetInfo.version}</span>\n</div>\n<div class="css-1dbjc4n tet-main">\n<div class="demo-TW r-demo css-1dbjc4n">\n<div class="tet-av css-1dbjc4n">\n<div class="r-1adg3ll r-13qz1uu" style="padding-bottom:100%"></div>\n<div class="tetAvatarFrame">\n<div id="tetAvatar"></div>\n</div>\n</div>\n<div class="css-1dbjc4n tet-txt">\n<div class="css-1dbjc4n txt-header">\n<div class="css-1dbjc4n r-1awozwy r-18u37iz r-1wbh5a2 r-dnmrzs r-1ny4l3l">\n<div class="css-1dbjc4n r-1awozwy r-18u37iz r-dnmrzs">\n<div class="tetTextColor css-901oao css-bfa6kz r-1fmj7o5 r-1qd0xha r-a023e6 r-b88u0q r-rjixqe r-bcqeeo r-1udh08x r-3s2u2q r-qvutc0" dir="auto"><span class="css-901oao css-16my406"><span class="css-901oao css-16my406">${tetInfo.name}</span></span></div>\n</div>\n<div class="tet-at css-901oao css-bfa6kz" dir="ltr"><span class="css-901oao css-16my406">@for_lollipops</span></div>\n</div>\n</div>\n<div dir="auto" class="tetTextColor css-901oao r-1fmj7o5 r-1qd0xha r-a023e6 r-16dba41 r-rjixqe r-bcqeeo r-bnwqim r-qvutc0"><span class="css-901oao css-16my406 tet-demotext">${defaultDesc}</span></div>\n<div id="tetDemo" class="css-901oao" dir="auto" aria-expanded="false" role="button" tabindex="0">${TETConfig.cLang} ${TETConfig.cDisplay}</div>\n</div>\n</div>\n<div class="css-1dbjc4n tet-options">\n<div id="tetSelector" class="tetBackground css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Languages</span></div>\n<select id="languages" name="languages" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<option class="tetBackground" value="en">${en.sel}</option>\n<option class="tetBackground" value="es">${es.sel}</option>\n<option class="tetBackground" value="zh">${zh.sel}</option>\n<option class="tetBackground" value="bg">${bg.sel}</option>\n<option class="tetBackground" value="cs">${cs.sel}</option>\n<option class="tetBackground" value="da">${da.sel}</option>\n<option class="tetBackground" value="de">${de.sel}</option>\n<option class="tetBackground" value="el">${el.sel}</option>\n<option class="tetBackground" value="et">${et.sel}</option>\n<option class="tetBackground" value="fi">${fi.sel}</option>\n<option class="tetBackground" value="fr">${fr.sel}</option>\n<option class="tetBackground" value="hu">${hu.sel}</option>\n<option class="tetBackground" value="it">${it.sel}</option>\n<option class="tetBackground" value="ja">${ja.sel}</option>\n<option class="tetBackground" value="lv">${lv.sel}</option>\n<option class="tetBackground" value="lt">${lt.sel}</option>\n<option class="tetBackground" value="nl">${nl.sel}</option>\n<option class="tetBackground" value="pl">${pl.sel}</option>\n<option class="tetBackground" value="pt">${pt.sel}</option>\n<option class="tetBackground" value="ro">${ro.sel}</option>\n<option class="tetBackground" value="ru">${ru.sel}</option>\n<option class="tetBackground" value="sk">${sk.sel}</option>\n<option class="tetBackground" value="sl">${sl.sel}</option>\n<option class="tetBackground" value="sv">${sv.sel}</option>\n</select>\n</div>\n<div id="tetSelector" class="tetBackground css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Translators</span></div>\n<select id="translator" name="translator" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<optgroup class="tetBackground" label="External Translators">\n<option class="tetBackground" value="bing">Bing Translate</option>\n<option class="tetBackground" value="deepl">DeepL Translator</option>\n<option class="tetBackground" value="google">Google Translate</option>\n<option class="tetBackground" value="mymemory">MyMemory</option>\n<option class="tetBackground" value="translate">Translate.com</option>\n<option class="tetBackground" value="yandex">Yandex Translator</option>\n</optgroup>\n<optgroup class="tetBackground" label="Internal Translators">\n<option class="tetBackground" disabled="" value="bingIT">Azure Cognitive Services</option>\n<option class="tetBackground" value="deeplIT">DeepL API</option>\n<option class="tetBackground" value="googleIT">Google Cloud API</option>\n<option class="tetBackground" value="mymemoryIT">MyMemory API</option>\n<option class="tetBackground" disabled="" value="translateIT">Translate.com API</option>\n<option class="tetBackground" disabled="" value="yandexIT">Yandex Translator API</option>\n</optgroup>\n</select>\n</div>\n<div id="tetSelector" class="tetBackground css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Display</span></div>\n<select id="display" name="display" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<option class="tetBackground" value="text + icon">Text + Icon</option>\n<option class="tetBackground" value="text">Text Only</option>\n<option class="tetBackground" value="icon">Icon Only</option>\n</select>\n</div>\n<div id="tetSelector" class="tetBackground css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Color</span></div>\n<select id="colorselect" name="colorselect" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<optgroup class="tetBackground" label="Twitter">\n<option class="tetBackground" value="r-urgr8i">Blue</option>\n<option class="tetBackground" value="r-1vkxrha">Yellow</option>\n<option class="tetBackground" value="r-1dgebii">Red</option>\n<option class="tetBackground" value="r-168457u">Purple</option>\n<option class="tetBackground" value="r-18z3xeu">Orange</option>\n<option class="tetBackground" value="r-b5skir">Green</option>\n<optgroup class="tetBackground" label="Misc">\n<option class="tetBackground" value="tweetdeck">TweetDeck</option>\n<option class="tetBackground" value="nitter">Nitter</option>\n</optgroup>\n</select>\n</div>\n<div id="tetSelector" class="tetBackground css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Theme</span></div>\n<select id="theme" name="theme" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<optgroup class="tetBackground" label="Twitter">\n<option class="tetBackground" value="#FFFFFF">Default</option>\n<option class="tetBackground" value="#15202B">Dim</option>\n<option class="tetBackground" value="#000000">Lights out</option>\n</optgroup>\n<optgroup class="tetBackground" label="Misc">\n<option class="tetBackground" value="tweetdeck">TweetDeck</option>\n<option class="tetBackground" value="nitter">Nitter</option>\n</optgroup>\n</select>\n</div>\n<input id="apifield" type="password" name="apikey" placeholder="PASTE API KEY" class="tetTextColor tetBackground tetFields deepl css-1dbjc4n r-16xksha">\n<div id="tetSelector" class="tetBackground tetFields deepl css-1dbjc4n r-16xksha r-1kqtdi0">\n<div id="tetName" dir="auto" class="css-901oao r-1qd0xha r-n6v787 r-16dba41 r-1cwl3u0 r-bcqeeo r-1pn2ns4 r-tskmnb r-633pao r-u8s1d r-qvutc0"><span class="css-901oao">Version</span></div>\n<select id="api-version" name="api-version" class="tetTextColor r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-1loqt21 r-1qd0xha r-a023e6 r-rjixqe r-crgep1 r-t60dpp r-1pn2ns4 r-ttdzmv">\n<option class="tetBackground" value="api-free">Free</option>\n<option class="tetBackground" value="api-pro">Pro</option>\n</select>\n</div>\n<input id="apifield" type="password" name="apikey" placeholder="PASTE API KEY" class="tetTextColor tetBackground tetFields google css-1dbjc4n r-16xksha">\n<input id="apifield" type="password" name="apikey" placeholder="PASTE API KEY" class="tetTextColor tetBackground tetFields bing css-1dbjc4n r-16xksha">\n</div>\n<button id="tetReset" class="tetDisplayColor css-901oao r-poiln3 r-jwli3a tetBtn" type="button">Defaults</button>\n</div>\n</div>\n</div>\n</div>`,
  1103. get = (url, responseType = 'json', retry = 3) => new Promise((resolve, reject) => {
  1104. try {
  1105. GM_xmlhttpRequest({
  1106. method: 'GET',
  1107. url,
  1108. responseType,
  1109. onerror: e => {
  1110. retry === 0 ? reject(e) : (log('Network error, retry.'), setTimeout(() => {
  1111. resolve(get(url, responseType, retry - 1));
  1112. }, 1000));
  1113. },
  1114. onload: ({
  1115. status,
  1116. response
  1117. }) => {
  1118. status === 200 ? resolve(response) : retry === 0 ? reject(`${status} ${url}`) : (log(status, url), setTimeout(() => {
  1119. resolve(get(url, responseType, retry - 1));
  1120. }, 500));
  1121. }
  1122. });
  1123. } catch (error) {
  1124. reject(error);
  1125. }
  1126. }),
  1127. tetEach = (elm, context, callback) => {
  1128. for (let i = 0; i < elm.length; i++) {
  1129. if (!callback) {
  1130. elm.addClass(context);
  1131. } else {
  1132. ael("mouseenter", callback, elm[i]);
  1133. ael("mouseleave", callback, elm[i]);
  1134. }
  1135.  
  1136. ;
  1137. }
  1138.  
  1139. ;
  1140. }; //#endregion
  1141. //#region Site n Menu Fn
  1142.  
  1143.  
  1144. function checkLng() {
  1145. return {
  1146. tw: this.tw,
  1147. lg: this.lg,
  1148. tr: this.tr,
  1149. ds: this.ds,
  1150. ti: this.ti,
  1151. res: this.res,
  1152. menu: this.menu,
  1153. th: this.th,
  1154. df: this.df,
  1155. di: this.di,
  1156. lo: this.lo,
  1157. col: this.col,
  1158. cb: this.cb,
  1159. cy: this.cy,
  1160. cr: this.cr,
  1161. cp: this.cp,
  1162. co: this.co,
  1163. cg: this.cg,
  1164. t: this.t,
  1165. i: this.i,
  1166. language: this.desc.language,
  1167. translate: this.desc.translate,
  1168. display: this.desc.display,
  1169. color: this.desc.color,
  1170. theme: this.desc.theme,
  1171. head: this.quest.head,
  1172. body: this.quest.body,
  1173. yes: this.quest.yes,
  1174. no: this.quest.no
  1175. };
  1176. };
  1177.  
  1178. function TETDisplayChange(mode = "nonrepeat") {
  1179. let cSel = TETConfig.translator,
  1180. v = icons.fn(),
  1181. disA = cSel == "bingIT" ? TETConfig.cDisplay = v.azure : cSel == "googleIT" ? TETConfig.cDisplay = v.gCloud : cSel == "google" ? TETConfig.cDisplay = v.google : cSel == "bing" ? TETConfig.cDisplay = v.bing : cSel == "mymemory" || cSel == "mymemoryIT" ? TETConfig.cDisplay = v.mymemory : cSel == "translate" ? TETConfig.cDisplay = v.translate : cSel == "yandex" ? TETConfig.cDisplay = v.yandex : TETConfig.cDisplay = v.deepl,
  1182. disB = cSel == "mymemoryIT" ? TETConfig.cDisplay = "MyMemory API" : cSel == "bingIT" ? TETConfig.cDisplay = "Azure Cognitive Services" : cSel == "googleIT" ? TETConfig.cDisplay = "Google Cloud API" : cSel == "deeplIT" ? TETConfig.cDisplay = "DeepL API" : cSel == "bing" ? TETConfig.cDisplay = "Bing" : cSel == "google" ? TETConfig.cDisplay = "Google" : cSel == "mymemory" ? TETConfig.cDisplay = "MyMemory" : cSel == "translate" ? TETConfig.cDisplay = "Translate.com" : cSel == "yandex" ? TETConfig.cDisplay = "Yandex" : TETConfig.cDisplay = "DeepL",
  1183. disC = cSel == "mymemoryIT" ? TETConfig.cDisplay = `MyMemory API ${v.mymemory}` : cSel == "bingIT" ? TETConfig.cDisplay = `Azure Cognitive Services ${v.azure}` : cSel == "googleIT" ? TETConfig.cDisplay = `Google Cloud API ${v.gCloud}` : cSel == "deeplIT" ? TETConfig.cDisplay = `DeepL API ${v.deepl}` : cSel == "bing" ? TETConfig.cDisplay = `Bing ${v.bing}` : cSel == "google" ? TETConfig.cDisplay = `Google ${v.google}` : cSel == "mymemory" ? TETConfig.cDisplay = `MyMemory ${v.mymemory}` : cSel == "translate" ? TETConfig.cDisplay = `Translate.com ${v.translate}` : cSel == "yandex" ? TETConfig.cDisplay = `Yandex ${v.yandex}` : TETConfig.cDisplay = `DeepL ${v.deepl}`;
  1184. TETConfig.cDisplay = TETConfig.display == "icon" ? disA : TETConfig.display == "text" ? disB : TETConfig.display == "text + icon" ? disC : log("Fuck Error", "error");
  1185. return mode == "demo" ? $('#tetDemo').html(`${TETConfig.cLang} ${TETConfig.cDisplay}`) : false;
  1186. }
  1187.  
  1188. ;
  1189.  
  1190. function site(btLang, content) {
  1191. return TETConfig.translator == 'yandex' ? `https://translate.yandex.com/?lang=${btLang}-${TETConfig.lang}&text=${content}` : TETConfig.translator == 'bing' ? `https://www.bing.com/translator/?text=${content}&from=${btLang}&to=${TETConfig.lang}` : TETConfig.translator == 'google' ? `https://translate.google.com/?q=${content}&sl=${btLang}&tl=${TETConfig.lang}` : TETConfig.translator == 'mymemory' ? `https://mymemory.translated.net/${TETConfig.lang}/${btLang}/${TETConfig.lang}/${content}` : TETConfig.translator == 'translate' ? `https://www.translate.com/machine-translation#${btLang}/${TETConfig.lang}/${content}` : `https://www.deepl.com/translator#${btLang}/${TETConfig.lang}/${content}`;
  1192. }
  1193.  
  1194. ;
  1195.  
  1196. function TETBtnClick(source, btLang, content, mode) {
  1197. mode = mode ?? "append";
  1198. btLang = btLang ?? "auto";
  1199. let tetBtn = $(`<div class="tet ${TETConfig.cSub} css-901oao" dir="auto" aria-expanded="false" role="button" tabindex="0">${TETConfig.cLang} ${TETConfig.cDisplay}</div>`);
  1200. mode === "append" ? tetBtn.appendTo(source) : mode === "prepend" ? tetBtn.prependTo(source) : mode === "td" ? source.after(tetBtn) : tetBtn.prependTo(mode);
  1201. tetBtn.on("click", async e => {
  1202. e.preventDefault();
  1203. let vCheck = TETConfig.api.version == "api-pro" ? 'api' : 'api-free';
  1204. TETConfig.translator == 'mymemoryIT' ? get(`https://api.mymemory.translated.net/get?q=${content}&langpair=${btLang}|${TETConfig.lang}`).then(r => {
  1205. let res = r.responseData.translatedText,
  1206. inlineText = $(`<div class="css-1dbjc4n r-14gqq1x"><div dir="auto" class="css-901oao r-1fmj7o5 r-1qd0xha r-bnwqim" id="tweet-text"><span class="css-901oao r-poiln3">${res}</span></div></div>`);
  1207. inlineText.appendTo(source);
  1208. }) : TETConfig.translator == 'googleIT' ? get(`https://translation.googleapis.com/language/translate/v2?q=${content}&target=${TETConfig.lang}&source=${btLang}&key=${TETConfig.api.google}`).then(r => {
  1209. let res = r.data.translations[0],
  1210. inlineText = $(`<div class="css-1dbjc4n r-14gqq1x"><div dir="auto" class="css-901oao r-1fmj7o5 r-1qd0xha r-bnwqim" id="tweet-text"><span class="css-901oao r-poiln3">${res.translatedText}</span></div></div>`);
  1211. inlineText.appendTo(source);
  1212. }) : TETConfig.translator == 'deeplIT' ? get(`https://${vCheck}.deepl.com/v2/translate?auth_key=${TETConfig.api.deepl}&text=${content}&target_lang=${TETConfig.lang}`).then(r => {
  1213. let res = r.translations[0],
  1214. inlineText = $(`<div class="css-1dbjc4n r-14gqq1x"><div dir="auto" class="css-901oao r-1fmj7o5 r-1qd0xha r-bnwqim" id="tweet-text"><span class="css-901oao r-poiln3">${res.text}</span></div></div>`);
  1215. inlineText.appendTo(source);
  1216. }) : window.open(site(btLang, content), '_blank');
  1217. });
  1218. tetBtn.hover(function () {
  1219. $(this).toggleClass("r-hover");
  1220. }, function () {
  1221. $(this).toggleClass("r-hover");
  1222. });
  1223. TETDisplayChange();
  1224. }
  1225.  
  1226. ;
  1227.  
  1228. function Twitter(btContainer, content = '') {
  1229. let translateTweet = $("div[lang]").eq(0).siblings().eq(0).children("span"),
  1230. translateBio = $('div[data-testid="UserDescription"]').eq(0).siblings().eq(0).children("span"),
  1231. source = translateTweet.parent().parent(),
  1232. loggout = document.cookie.includes("twid"),
  1233. tweetbtn = (user = "loggedin") => {
  1234. user === "logout" ? (
  1235. btContainer = $("div[lang]").eq(0), source = btContainer.parent()) : (btContainer = translateTweet.parent().siblings().eq(0), source = translateTweet.parent().parent());
  1236. btContainer.children("span").each((index, item) => {
  1237. let tweet = $(item).html().trim();
  1238. tweet && tweet != '' && !isHTML(tweet) ? content += tweet : false;
  1239. });
  1240. TETBtnClick(source, btContainer.attr("lang"), content);
  1241. },
  1242. biobtn = (user = "loggedin") => {
  1243. user === "logout" ? (
  1244. btContainer = $('div[data-testid="UserDescription"]').eq(0), source = $('div[data-testid="UserDescription"]').eq(0).parent()) : (btContainer = translateBio.parent().siblings().eq(0), source = translateBio.parent().parent());
  1245. btContainer.children("span").each((index, item) => {
  1246. let bio = $(item).html().trim();
  1247. bio && bio != '' && !isHTML(bio) ? content += bio : false;
  1248. });
  1249. TETBtnClick(source, "auto", content);
  1250. },
  1251. checker = () => {
  1252. if (!$('.tet').length) {
  1253. return translateBio.length ? biobtn() : $('div[data-testid="UserDescription"]').length && !loggout ? biobtn("logout") : translateTweet.length ? tweetbtn() : !translateTweet.length && !loggout && $("div[lang]").attr("lang") !== TETConfig.lang ? tweetbtn("logout") : false;
  1254. }
  1255.  
  1256. ;
  1257. };
  1258.  
  1259. /login/.test(window.location.href) || /profile/.test(window.location.href) || /keyboard_shortcuts/.test(window.location.href) || /display/.test(window.location.href) || /video/.test(window.location.href) || /photo/.test(window.location.href) || /compose/.test(window.location.href) ? $('#tetMenuButton').attr('style', 'z-index: -1 !important;') : $('#tetMenuButton').attr('style', '');
  1260. return checker();
  1261. }
  1262.  
  1263. ;
  1264.  
  1265. function TweetDeck(btContainer) {
  1266. let translateTweet = $('a.js-translate-call-to-action'),
  1267. tweetbtn = () => {
  1268. btContainer = translateTweet.siblings().eq(2),
  1269. TETBtnClick(translateTweet, $('p.js-tweet-text[lang]').attr("lang"), btContainer.text(), "td");
  1270. },
  1271. checker = () => {
  1272. !$('.tet').length ? $('div.prf-header').length ? TETBtnClick($('p.prf-bio').parent(), "auto", $('p.prf-bio').text()) : translateTweet.length ? tweetbtn() : $('.tet').attr('style', 'display: flex !important; align-items: end !important;') : false;
  1273. };
  1274.  
  1275. return checker();
  1276. }
  1277.  
  1278. ;
  1279.  
  1280. function Nitter() {
  1281. let trTweet = $('#m > div > div > div.tweet-content.media-body'),
  1282. trBio = $('div.profile-bio > p');
  1283. return !$('.tet').length ? trTweet.length ? TETBtnClick(trTweet, "auto", trTweet.text(), $(".conversation")) : trBio.length ? TETBtnClick(trBio.parent(), "auto", trBio.text()) : false : false;
  1284. }
  1285.  
  1286. ;
  1287.  
  1288. function TwitLonger() {
  1289. let content = $('p#posttext').text(),
  1290. source = $('.actions.text-right');
  1291. return !$(".tet").length && source.length ? TETBtnClick(source, "auto", content, "prepend") : false;
  1292. }
  1293.  
  1294. ;
  1295.  
  1296. function Menu() {
  1297. try {
  1298. log("Menu init");
  1299. let nav = $('.navbackground'),
  1300. menuBtn = $('button#tetMenuButton'),
  1301. selLG = qs('select#languages'),
  1302. selCS = qs('select#colorselect'),
  1303. selTH = qs('select#theme'),
  1304. selTR = qs('select#translator'),
  1305. selDS = qs('select#display'),
  1306. dlAPI = qs('input.deepl'),
  1307. goAPI = qs('input.google'),
  1308. selAPI = qs('select#api-version'),
  1309. dColor = $(".tetDisplayColor"),
  1310. tColor = $(".tetTextColor"),
  1311. tBG = $(".tetBackground"),
  1312. tDesc = $(".tet-demotext"),
  1313. v = en.fn();
  1314. selLG.value = TETConfig.lang;
  1315. selCS.value = TETConfig.colors;
  1316. selTH.value = TETConfig.theme;
  1317. selTR.value = TETConfig.translator;
  1318. selDS.value = TETConfig.display;
  1319. dlAPI.value = TETConfig.api.deepl ?? "";
  1320. goAPI.value = TETConfig.api.google ?? "";
  1321. selAPI.value = TETConfig.api.version;
  1322.  
  1323. const TETLanguageChange = () => {
  1324. let TETSel = selLG.value;
  1325. TETSel == "en" ?? defaultLang == "en-US" ? v = en.fn() : TETSel == "bg" ? v = bg.fn() : TETSel == "cs" ? v = cs.fn() : TETSel == "da" ? v = da.fn() : TETSel == "et" ? v = et.fn() : TETSel == "fi" ? v = fi.fn() : TETSel == "el" ? v = el.fn() : TETSel == "hu" ? v = hu.fn() : TETSel == "lv" ? v = lv.fn() : TETSel == "lt" ? v = lt.fn() : TETSel == "ro" ? v = ro.fn() : TETSel == "sk" ? v = sk.fn() : TETSel == "sl" ? v = sl.fn() : TETSel == "sv" ? v = sv.fn() : TETSel == "zh" ?? defaultLang == "zh-TW" ?? defaultLang == "zh-CN" ?? defaultLang == "zh-Hant" ? v = zh.fn() : TETSel == "nl" ? v = nl.fn() : TETSel == "fr" ? v = fr.fn() : TETSel == "de" ? v = de.fn() : TETSel == "it" ? v = it.fn() : TETSel == "ja" ? v = ja.fn() : TETSel == "pl" ? v = pl.fn() : TETSel == "pt" ? v = pt.fn() : TETSel == "ru" ? v = ru.fn() : TETSel == "es" ? v = es.fn() : (v = en.fn(), TETSel = "en");
  1326. TETConfig.cLang = v.tw;
  1327. $('button#tetMenuButton').attr('title', v.menu);
  1328. $('button#tetMenuButton > span').text(v.menu);
  1329. $('select#languages').siblings().children("span").text(v.lg);
  1330. $('select#translator').siblings().children("span").text(v.tr);
  1331. $('select#display').siblings().children("span").text(v.ds);
  1332. $('select#theme').siblings().children("span").text(v.th);
  1333. $('option[value="#FFFFFF"]').text(v.df);
  1334. $('option[value="#15202B"]').text(v.di);
  1335. $('option[value="#000000"]').text(v.lo);
  1336. $('select#colorselect').siblings().children("span").text(v.col);
  1337. $('option[value="r-urgr8i"]').text(v.cb);
  1338. $('option[value="r-1vkxrha"]').text(v.cy);
  1339. $('option[value="r-1dgebii"]').text(v.cr);
  1340. $('option[value="r-168457u"]').text(v.cp);
  1341. $('option[value="r-18z3xeu"]').text(v.co);
  1342. $('option[value="r-b5skir"]').text(v.cg);
  1343. $('option[value="text + icon"]').text(v.ti);
  1344. $('option[value="text"]').text(v.t);
  1345. $('option[value="icon"]').text(v.i);
  1346. $('button#tetReset').text(v.res);
  1347. $('.tet-alert-head').text(v.head);
  1348. $('.tet-alert-span').text(v.body);
  1349. $('.tet-confirm').text(v.yes);
  1350. $('.tet-deny').text(v.no);
  1351.  
  1352. TETDisplayChange("demo");
  1353. },
  1354. TETMenuUpdate = (cSel, type) => {
  1355. if (type === "theme") {
  1356. return cSel == "#FFFFFF" ? (TETConfig.cBG = "rgba(0, 0, 0, 0.4)", TETConfig.cTheme = "r-14lw9ot", TETConfig.cText = "r-18jsvk2") : cSel == "#15202B" ? TETConfig.cTheme = "r-yfoy6g" : cSel == "nitter" ? (TETConfig.cBG = "rgba(0, 0, 0, 0.4)", TETConfig.cTheme = "nitter", TETConfig.cText = "tetNTextColor") : cSel == "tweetdeck" ? (TETConfig.cBG = "rgba(0, 0, 0, 0.4)", TETConfig.cTheme = "r-tetTD", TETConfig.cText = "r-jwli3a") : TETConfig.cTheme = "r-kemksi";
  1357. } else if (type === "colors") {
  1358. return cSel == "r-urgr8i" ? (TETConfig.cHover = "r-1q3imqu", TETConfig.cColor = "r-p1n3y5 r-1bih22f", TETConfig.cSub = "r-13gxpu9") : cSel == "nitter" ? (TETConfig.cHover = "tetNitterHover", TETConfig.cColor = "tetNitter", TETConfig.cSub = "tetNText") : cSel == "tweetdeck" ? (TETConfig.cHover = "r-hoverTD", TETConfig.cColor = "Button--primary", TETConfig.cSub = "tet-td") : cSel == "r-1vkxrha" ? (TETConfig.cHover = "r-1kplyi6", TETConfig.cColor = "r-v6khid r-cdj8wb", TETConfig.cSub = "r-61mi1v") : cSel == "r-1dgebii" ? (TETConfig.cHover = "r-1ucxkr8", TETConfig.cColor = "r-1iofnty r-jd07pc", TETConfig.cSub = "r-daml9f") : cSel == "r-168457u" ? (TETConfig.cHover = "r-njt2r9", TETConfig.cColor = "r-hy56xe r-11mmphe", TETConfig.cSub = "r-xfsgu1") : cSel == "r-18z3xeu" ? (TETConfig.cHover = "r-1kplyi6", TETConfig.cColor = "r-1xl5njo r-b8m25f", TETConfig.cSub = "r-1qkqhnw") : cSel == "r-b5skir" ? (TETConfig.cHover = "r-zx61xx", TETConfig.cColor = "r-5ctkeg r-1cqwhho", TETConfig.cSub = "r-nw8l94") : (TETConfig.cHover = "r-1q3imqu", TETConfig.cColor = "r-p1n3y5 r-1bih22f", TETConfig.cSub = "r-13gxpu9");
  1359. } else if (type == "translator") {
  1360. return cSel == "bingIT" ? ($('.google').hide(), $('.bing').show(), $('.deepl').hide()) : cSel == "googleIT" ? ($('.google').show(), $('.bing').hide(), $('.deepl').hide()) : cSel == "deeplIT" ? ($('.deepl').show(), $('.google').hide(), $('.bing').hide()) : $('.tetFields').hide();
  1361. }
  1362. };
  1363.  
  1364.  
  1365. TETConfig.theme == "nitter" ? $('.r-demo').toggleClass('demo-TW').toggleClass('demo-NT') : TETConfig.theme == "tweetdeck" ? $('.r-demo').toggleClass('demo-TW').toggleClass('demo-TD') : false;
  1366.  
  1367. if (find.nitter) {
  1368. injectCSS(twCSS, "foreign");
  1369. $('div.btNav').attr("id", "tetNT");
  1370. tetAvatar = $(`link[rel="icon"]`).attr("href");
  1371. $('#tetAvatar').attr('style', `background-image: url(${tetAvatar}) !important;`);
  1372. } else if (find.tweetdeck) {
  1373. injectCSS(twCSS, "foreign");
  1374. $('#tetMenuButton').toggleClass("tetTD");
  1375. tetAvatar = $(`link[rel="shortcut icon"]`).attr("href");
  1376. $('#tetAvatar').attr('style', `background-image: url(${tetAvatar}) !important;`);
  1377. } else if (find.twitlonger) {
  1378. injectCSS(twCSS, "foreign");
  1379. tetAvatar = $(`link[rel="shortcut icon"]`).attr("href");
  1380. $('#tetAvatar').attr('style', `background-image: url(${tetAvatar}) !important;`);
  1381. }
  1382.  
  1383. ;
  1384.  
  1385. nav.attr("style", `background-color:${TETConfig.cBG}`);
  1386. tetEach(tBG, TETConfig.cTheme);
  1387. tetEach(tColor, TETConfig.cText);
  1388. tetEach(dColor, TETConfig.colors);
  1389. tetEach($('#tetDemo'), TETConfig.cSub);
  1390. tBG.toggleClass(TETConfig.cTheme);
  1391. tColor.toggleClass(TETConfig.cText);
  1392. TETMenuUpdate(selTH.value, "theme");
  1393. tBG.toggleClass(TETConfig.cTheme);
  1394. tColor.toggleClass(TETConfig.cText);
  1395. TETMenuUpdate(selTR.value, "translator");
  1396. log("Menu functions");
  1397. tetEach(qs('div#tetSelector', true), false, e => {
  1398. $(e.target).toggleClass(`${TETConfig.cColor} r-1kqtdi0`).children("div#tetName").toggleClass(`${TETConfig.cSub}`);
  1399. });
  1400. ael("click", e => {
  1401. !$('.tetAlert.rm').length ? $('.tetAlert').toggleClass("rm") : false;
  1402. $('html').toggleClass('tetFreeze');
  1403. $('#tetForm').toggleClass("rm");
  1404. $('.btNav').attr('style', 'z-index: -1 !important;');
  1405. $('svg#tetSVG').show();
  1406. menuBtn.attr("style", "");
  1407. menuBtn.toggleClass("mini");
  1408. $('#tetDemo').toggleClass("rm");
  1409. $(e.target).removeClass("warn").toggleClass("rm");
  1410. selLG.value !== "en" ?? defaultLang !== "en" ?? defaultLang !== "en-US" ? tDesc.text("Hey look, I'm a foreign language!") : tDesc.text(defaultDesc);
  1411. TETConfig.api.google = goAPI.value;
  1412. TETConfig.api.deepl = dlAPI.value;
  1413. TETSave();
  1414. autoHide();
  1415. }, qs('.navbackground'));
  1416. ael("click", () => {
  1417. nav.toggleClass("rm");
  1418. $('#tetForm').toggleClass("rm");
  1419. $('.btNav').attr('style', 'z-index: 10000 !important');
  1420. menuBtn.attr("style", "display: none !important;").toggleClass("mini");
  1421. $('html').toggleClass('tetFreeze');
  1422. }, qs("button#tetMenuButton"));
  1423. ael("mouseenter", () => {
  1424. menuBtn.toggleClass(TETConfig.cHover).toggleClass(TETConfig.colors);
  1425. $('svg#tetSVG').hide();
  1426. menuBtn.toggleClass("mini");
  1427. }, qs("button#tetMenuButton"));
  1428. ael("mouseleave", () => {
  1429. menuBtn.toggleClass(TETConfig.cHover).toggleClass(TETConfig.colors);
  1430. $('svg#tetSVG').show();
  1431. menuBtn.toggleClass("mini");
  1432. autoHide();
  1433. }, qs("button#tetMenuButton"));
  1434. ael("change", e => {
  1435. let cSel = e.target.value;
  1436. tBG.toggleClass(TETConfig.cTheme);
  1437. tColor.toggleClass(TETConfig.cText);
  1438. TETConfig.cText = "r-jwli3a";
  1439. TETConfig.cBG = "rgba(91, 112, 131, 0.4)";
  1440. TETMenuUpdate(cSel, "theme");
  1441. TETConfig.theme = cSel;
  1442. tBG.toggleClass(TETConfig.cTheme);
  1443. tColor.toggleClass(TETConfig.cText);
  1444. }, selTH);
  1445. ael("change", e => {
  1446. let cSel = e.target.value;
  1447. dColor.toggleClass(TETConfig.colors);
  1448. $('#tetDemo').toggleClass(TETConfig.cSub);
  1449. $('.tet').toggleClass(TETConfig.cSub);
  1450. TETMenuUpdate(cSel, "colors");
  1451. TETConfig.colors = cSel;
  1452. $('.tet').toggleClass(TETConfig.cSub);
  1453. $('#tetDemo').toggleClass(TETConfig.cSub);
  1454. dColor.toggleClass(TETConfig.colors);
  1455. }, selCS);
  1456. ael("change", e => {
  1457. TETLanguageChange();
  1458. TETConfig.lang = e.target.value;
  1459. }, selLG);
  1460. ael("change", e => {
  1461. let cSel = e.target.value;
  1462. TETConfig.translator = cSel;
  1463. TETMenuUpdate(cSel, "translator");
  1464. TETDisplayChange("demo");
  1465. }, selTR);
  1466. ael("change", e => {
  1467. TETConfig.display = e.target.value;
  1468. TETDisplayChange("demo");
  1469. }, selDS);
  1470. ael("change", e => {
  1471. TETConfig.api.google = goAPI.value;
  1472. TETConfig.api.deepl = dlAPI.value;
  1473. TETConfig.api.version = e.target.value;
  1474. }, selAPI);
  1475. ael("click", () => {
  1476. tDesc.text(v.theme);
  1477. }, selTH);
  1478. ael("click", () => {
  1479. tDesc.text(v.color);
  1480. }, selCS);
  1481. ael("click", () => {
  1482. tDesc.text(v.language);
  1483. }, selLG);
  1484. ael("click", () => {
  1485. tDesc.text(v.translate);
  1486. }, selTR);
  1487. ael("click", () => {
  1488. tDesc.text(v.display);
  1489. }, selDS);
  1490. ael("click", () => {
  1491. $('.tetAlert').toggleClass("rm");
  1492. nav.toggleClass("warn");
  1493. }, qs('button#tetReset'));
  1494. ael("click", () => {
  1495. TETConfig = DefaultConfig;
  1496. TETSave();
  1497. setTimeout(() => window.location.reload(), 200);
  1498. }, qs('.tetAlertBtns.confirm'));
  1499. ael("click", () => {
  1500. $('.tetAlert').toggleClass("rm");
  1501. nav.removeClass("warn");
  1502. }, qs('.tetAlertBtns.deny'));
  1503. log("Checking for language changes");
  1504. TETConfig.lang !== DefaultConfig.lang || TETConfig.lang !== "en" || TETConfig.lang !== "en-US" ? TETLanguageChange() : false;
  1505. autoHide();
  1506. } catch (e) {
  1507. log(e, "error");
  1508. TETConfig = DefaultConfig;
  1509. TETSave();
  1510. }
  1511. }
  1512.  
  1513. ;
  1514.  
  1515. await Promise.all([GM.getValue("Config")]).then(data => {
  1516. if (lh === "tweetdeck.twitter.com" && !document.cookie.includes("twid")) {
  1517. log("Must be login!!! Canceling...", "error");
  1518. return;
  1519. }
  1520.  
  1521. ;
  1522. let res = data[0];
  1523. res || TETConfig === DefaultConfig ? () => {
  1524. try {
  1525. TETConfig = JSON.parse(res);
  1526. } catch (e) {
  1527. log(e, "error");
  1528. TETConfig = res;
  1529. }
  1530. } : (TETConfig = DefaultConfig, log("First time init."));
  1531. const localData = localStorage.TETConfig;
  1532. localData && localData.length > 0 ? TETConfig = JSON.parse(localData) : false;
  1533.  
  1534. for (let key in DefaultConfig) {
  1535. typeof TETConfig[key] ?? (TETConfig[key] = DefaultConfig[key]);
  1536. }
  1537.  
  1538. log("Config Loaded");
  1539. injectCSS(tetCSS);
  1540. let body = $("body");
  1541. body.prepend(sidebar);
  1542. Menu();
  1543. log("Starting TET Injection");
  1544. TETInject();
  1545. }).catch(e => {
  1546. TETConfig = DefaultConfig;
  1547. log(e, "error");
  1548. });
  1549. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址