// ==UserScript== // @name Auto Translate — Built for Via · iPhone & Android · 249 Languages // @name:zh-CN 全球最强翻译器🌍 双语+秒翻 · Via完美适配 · 苹果安卓通吃 · 249种语言 · 致敬TWP // @name:zh-TW 全球最強翻譯器🌍 雙語+秒翻 · Via完美適配 · 蘋果安卓通吃 · 249種語言 · 致敬TWP // @name:en World's Best Translator🌍 Bilingual + Instant · Via · iPhone & Android · 249 Langs // @name:ja 世界最強の翻訳🌍 バイリンガル表示+瞬間翻訳 · Via · iPhone & Android · 249言語 · TWP リスペクト // @name:ko 세계최강 번역기🌍 이중언어+즉시번역 · Via · 아이폰/안드로이드 · 249언어 · TWP헌정 // @name:fr Traducteur ultime🌍 Bilingue + Instantané · Via · iPhone & Android · 249 langues · TWP // @name:de Stärkster Übersetzer🌍 Zweisprachig + Sofort · Via · iPhone & Android · 249 Sprachen · TWP // @name:es Traductor más potente🌍 Bilingüe + Instantáneo · Via · iPhone y Android · 249 idiomas · TWP // @name:pt Tradutor mais poderoso🌍 Bilíngue + Instantâneo · Via · iPhone e Android · 249 idiomas · TWP // @name:pt-BR Tradutor mais poderoso🌍 Bilíngue + Instantâneo · Via · iPhone e Android · 249 idiomas · TWP // @name:ru Мощнейший переводчик🌍 Двуязычный + Мгновенный · Via · iPhone/Android · 249 языков · TWP // @name:it Traduttore più potente🌍 Bilingue + Istantaneo · Via · iPhone e Android · 249 lingue · TWP // @name:tr En güçlü çevirmen🌍 İki dilli + Anında · Via · iPhone ve Android · 249 dil · TWP // @name:ar أقوى مترجم🌍 ثنائي اللغة + فوري · Via · آيفون وأندرويد · 249 لغة · تحية TWP // @name:th แปลแรงสุดในโลก🌍 สองภาษา+ทันที · Via · iPhone/Android · 249 ภาษา · TWP // @name:vi Dịch mạnh nhất🌍 Song ngữ + Tức thì · Via · iPhone & Android · 249 ngôn ngữ · TWP // @name:id Penerjemah terkuat🌍 Dwibahasa + Instan · Via · iPhone & Android · 249 bahasa · TWP // @name:ms Penterjemah terkuat🌍 Dwibahasa + Serta-merta · Via · iPhone & Android · 249 bahasa · TWP // @name:hi सबसे शक्तिशाली अनुवादक🌍 द्विभाषी + तुरंत · Via · iPhone/Android · 249 भाषाएँ · TWP // @name:bn সবচেয়ে শক্তিশালী অনুবাদক🌍 দ্বিভাষিক + তাৎক্ষণিক · Via · iPhone/Android · ২৪৯ ভাষা · TWP // @name:ta சக்திவாய்ந்த மொழிபெயர்ப்பாளர்🌍 இருமொழி + உடனடி · Via · iPhone/Android · 249 மொழி · TWP // @name:te శక్తివంతమైన అనువాదకుడు🌍 ద్విభాషా + తక్షణ · Via · iPhone/Android · 249 భాషలు · TWP // @name:ur سب سے طاقتور مترجم🌍 دو زبانی + فوری · Via · آئی فون/اینڈرائیڈ · 249 زبانیں · TWP // @name:fa قوی‌ترین مترجم🌍 دوزبانه + آنی · Via · آیفون/اندروید · 249 زبان · TWP // @name:pl Najpotężniejszy tłumacz🌍 Dwujęzyczny + Natychmiast · Via · iPhone/Android · 249 języków · TWP // @name:uk Найпотужніший перекладач🌍 Двомовний + Миттєвий · Via · iPhone/Android · 249 мов · TWP // @name:ro Cel mai puternic traducător🌍 Bilingv + Instant · Via · iPhone/Android · 249 limbi · TWP // @name:nl Krachtigste vertaler🌍 Tweetalig + Direct · Via · iPhone & Android · 249 talen · TWP // @name:el Ισχυρότερος μεταφραστής🌍 Δίγλωσσο + Άμεσο · Via · iPhone/Android · 249 γλώσσες · TWP // @name:cs Nejsilnější překladač🌍 Dvojjazyčný + Okamžitý · Via · iPhone/Android · 249 jazyků · TWP // @name:hu Legerősebb fordító🌍 Kétnyelvű + Azonnali · Via · iPhone/Android · 249 nyelv · TWP // @name:sv Kraftfullaste översättaren🌍 Tvåspråkig + Direkt · Via · iPhone/Android · 249 språk · TWP // @name:da Mest kraftfulde oversætter🌍 Tosproget + Direkte · Via · iPhone/Android · 249 sprog · TWP // @name:fi Tehokkain kääntäjä🌍 Kaksikielinen + Välitön · Via · iPhone/Android · 249 kieltä · TWP // @name:no Kraftigste oversetter🌍 Tospråklig + Direkte · Via · iPhone/Android · 249 språk · TWP // @name:bg Най-мощният преводач🌍 Двуезичен + Мигновен · Via · iPhone/Android · 249 езика · TWP // @name:hr Najmoćniji prevoditelj🌍 Dvojezičan + Trenutačan · Via · iPhone/Android · 249 jezika · TWP // @name:sr Најмоћнији преводилац🌍 Двојезичан + Тренутан · Via · iPhone/Android · 249 језика · TWP // @name:sk Najsilnejší prekladač🌍 Dvojjazyčný + Okamžitý · Via · iPhone/Android · 249 jazykov · TWP // @name:sl Najmočnejši prevajalnik🌍 Dvojezičen + Takojšen · Via · iPhone/Android · 249 jezikov · TWP // @name:lt Galingiausias vertėjas🌍 Dvikalbis + Momentinis · Via · iPhone/Android · 249 kalbos · TWP // @name:lv Jaudīgākais tulkotājs🌍 Divvalodu + Tūlītējs · Via · iPhone/Android · 249 valodas · TWP // @name:et Võimsaim tõlkija🌍 Kakskeelne + Kohene · Via · iPhone/Android · 249 keelt · TWP // @name:sw Mtafsiri hodari zaidi🌍 Lugha mbili + Papo hapo · Via · iPhone/Android · Lugha 249 · TWP // @name:fil Pinakamakapangyarihan🌍 Dalawahang wika + Agaran · Via · iPhone/Android · 249 wika · TWP // @name:my အစွမ်းကုန်ဘာသာပြန်🌍 နှစ်ဘာသာ+ချက်ချင်း · Via · iPhone/Android · ဘာသာ249 · TWP // @name:km អ្នកបកប្រែខ្លាំងបំផុត🌍 ពីរភាសា+បន្ទាន់ · Via · iPhone/Android · ២៤៩ភាសា · TWP // @name:lo ນັກແປແຮງສຸດ🌍 ສອງພາສາ+ທັນທີ · Via · iPhone/Android · 249 ພາສາ · TWP // @name:ka ძლიერი მთარგმნელი🌍 ორენოვანი + მყისიერი · Via · iPhone/Android · 249 ენა · TWP // @name:hy Ամենusage Թարգմանիչ🌍 Երկլեզու + Արագ · Via · iPhone/Android · 249 Լեzu · TWP // @name:am ኃይለኛ ተርጓሚ🌍 ሁለት ቋንቋ + ፈጣን · Via · iPhone/Android · 249 ቋንቋ · TWP // @name:ne शक्तिशाली अनुवादक🌍 द्विभाषी + तुरुन्त · Via · iPhone/Android · 249 भाषा · TWP // @name:si බලවත්ම පරිවර්තකය🌍 ද්විභාෂා + ක්ෂණික · Via · iPhone/Android · භාෂා 249 · TWP // @name:mn Хүчирхэг орчуулагч🌍 Хос хэл + Шуурхай · Via · iPhone/Android · 249 хэл · TWP // @name:uz Eng kuchli tarjimon🌍 Ikki tilli + Tez · Via · iPhone/Android · 249 til · TWP // @name:kk Ең қуатты аудармашы🌍 Екі тілді + Лезде · Via · iPhone/Android · 249 тіл · TWP // @name:az Ən güclü tərcüməçi🌍 İkidilli + Anlıq · Via · iPhone/Android · 249 dil · TWP // @name:sq Përkthyesi më i fortë🌍 Dygjuhësh + Menjëherë · Via · iPhone/Android · 249 gjuhë · TWP // @name:mk Најмоќен преведувач🌍 Двојазичен + Момент · Via · iPhone/Android · 249 јазици · TWP // @name:bs Najmoćniji prevodilac🌍 Dvojezičan + Trenutan · Via · iPhone/Android · 249 jezika · TWP // @name:is Öflugasti þýðandinn🌍 Tvímála + Samstundis · Via · iPhone/Android · 249 tungumál · TWP // @name:af Kragtigste vertaler🌍 Tweetalig + Dadelik · Via · iPhone/Android · 249 tale · TWP // @name:yo Atúmọ̀ tó lágbára jù🌍 Èdè Méjì + Lẹ́sẹ̀kẹsẹ̀ · Via · iPhone/Android · Èdè 249 · TWP // @name:ha Mafi ƙarfin mai fassara🌍 Harsuna 2 + Nan take · Via · iPhone/Android · Harsuna 249 · TWP // @name:ig Onye ntụgharị kachasị🌍 Asụsụ Abụọ + Ozugbo · Via · iPhone/Android · Asụsụ 249 · TWP // @name:zu Umhumushi onamandla🌍 Izilimi 2 + Ngokushesha · Via · iPhone/Android · Izilimi 249 · TWP // @name:mg Mpandika teny matanjaka🌍 Roa teny + Vetivety · Via · iPhone/Android · 249 fiteny · TWP // @name:eo Plej potenca tradukilo🌍 Dulingva + Tuja · Via · iPhone/Android · 249 lingvoj · TWP // @name:la Potentissimus interpres🌍 Bilinguis + Statim · Via · iPhone/Android · 249 linguae · TWP // @name:he המתרגם החזק🌍 דו-לשוני + מיידי · Via · אייפון/אנדרואיד · 249 שפות · TWP // @name:gu શક્તિશાળી અનુવાદક🌍 દ્વિભાષી + તાત્કાલિક · Via · iPhone/Android · 249 ભાષા · TWP // @name:mr शक्तिशाली अनुवादक🌍 द्विभाषी + तात्काळ · Via · iPhone/Android · 249 भाषा · TWP // @name:pa ਸ਼ਕਤੀਸ਼ਾਲੀ ਅਨੁਵਾਦਕ🌍 ਦੋਭਾਸ਼ੀ + ਤੁਰੰਤ · Via · iPhone/Android · 249 ਭਾਸ਼ਾ · TWP // @name:kn ಶಕ್ತಿಶಾಲಿ ಅನುವಾದಕ🌍 ದ್ವಿಭಾಷಾ + ತಕ್ಷಣ · Via · iPhone/Android · 249 ಭಾಷೆ · TWP // @name:ml ശക്തമായ പരിഭാഷകൻ🌍 ദ്വിഭാഷ + തൽക്ഷണം · Via · iPhone/Android · 249 ഭാഷ · TWP // @namespace https://github.com/user/translate // @version 7.7.7 // @description 全球最强网页翻译器!双语对照+仅译文+原文三模式秒切 · Google/微软/腾讯三大引擎随心换 · Via/Safari/Chrome/Firefox/Edge/Kiwi/Lemur等所有Chromium内核浏览器通用 · 苹果iPhone安卓手机平板电脑全平台通吃 · 249种语言覆盖全球99%人口 · 基于TWP引擎深度重构致敬原作 · 零配置装完即用 // @description:zh-CN 全球最强网页翻译器!双语对照+仅译文+原文三模式秒切 · Google/微软/腾讯三大引擎随心换 · Via/Safari/Chrome/Firefox/Edge/Kiwi/Lemur等所有Chromium内核浏览器通用 · 苹果iPhone安卓手机平板电脑全平台通吃 · 249种语言覆盖全球99%人口 · 基于TWP引擎深度重构致敬原作 · 零配置装完即用 // @description:zh-TW 全球最強網頁翻譯器!雙語對照+僅譯文+原文三模式秒切 · Google/微軟/騰訊三大引擎隨心換 · Via/Safari/Chrome/Firefox/Edge/Kiwi/Lemur等所有Chromium內核瀏覽器通用 · 蘋果iPhone安卓手機平板電腦全平台通吃 · 249種語言覆蓋全球99%人口 · 基於TWP引擎深度重構致敬原作 · 零配置裝完即用 // @description:en The world's most powerful webpage translator! Bilingual side-by-side / translated-only / original — 3 display modes switch instantly · Google/Microsoft/Tencent 3 engines · Works on Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur & all Chromium browsers · iPhone, Android, tablet, desktop — all platforms · 249 languages covering 99% of world population · Rebuilt on TWP engine with deep respect to the original · Zero config, install and go // @description:ja 世界最強のウェブページ翻訳器!バイリンガル並列/翻訳のみ/原文の3表示モードを瞬時に切替 · Google/Microsoft/Tencent 3エンジン · Via、Safari、Chrome、Firefox、Edge、Kiwi、Lemur等全Chromiumブラウザ対応 · iPhone・Android・タブレット・PC全プラットフォーム · 249言語で世界人口の99%をカバー · TWPエンジンを基に深くリスペクトして再構築 · 設定不要、インストールして即使用 // @description:ko 세계 최강 웹페이지 번역기! 이중언어 나란히/번역만/원문 3가지 표시 모드 즉시 전환 · Google/Microsoft/Tencent 3개 엔진 · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur 등 모든 Chromium 브라우저 지원 · 아이폰·안드로이드·태블릿·PC 전 플랫폼 · 249개 언어로 세계 인구 99% 커버 · TWP 엔진 기반 깊은 존경으로 재구축 · 설정 없이 설치 즉시 사용 // @description:fr Le traducteur de pages web le plus puissant au monde ! Bilingue côte à côte / traduction seule / original — 3 modes d'affichage instantanés · 3 moteurs Google/Microsoft/Tencent · Fonctionne sur Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur et tous les navigateurs Chromium · iPhone, Android, tablette, PC — toutes plateformes · 249 langues couvrant 99% de la population mondiale · Reconstruit sur le moteur TWP avec un profond respect · Zéro config, installez et c'est parti // @description:de Der mächtigste Webseiten-Übersetzer der Welt! Zweisprachig nebeneinander / nur Übersetzung / Original — 3 Anzeigemodi sofort umschaltbar · 3 Engines Google/Microsoft/Tencent · Funktioniert auf Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur und allen Chromium-Browsern · iPhone, Android, Tablet, Desktop — alle Plattformen · 249 Sprachen für 99% der Weltbevölkerung · Auf TWP-Engine aufgebaut mit tiefem Respekt · Null Konfiguration, installieren und loslegen // @description:es ¡El traductor de páginas web más potente del mundo! Bilingüe lado a lado / solo traducción / original — 3 modos de visualización instantáneos · 3 motores Google/Microsoft/Tencent · Funciona en Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur y todos los navegadores Chromium · iPhone, Android, tablet, PC — todas las plataformas · 249 idiomas cubriendo el 99% de la población mundial · Reconstruido sobre el motor TWP con profundo respeto · Cero configuración, instala y listo // @description:pt O tradutor de páginas web mais poderoso do mundo! Bilíngue lado a lado / só tradução / original — 3 modos de exibição instantâneos · 3 motores Google/Microsoft/Tencent · Funciona no Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur e todos os navegadores Chromium · iPhone, Android, tablet, desktop — todas as plataformas · 249 idiomas cobrindo 99% da população mundial · Reconstruído sobre o motor TWP com profundo respeito · Zero configuração, instale e use // @description:pt-BR O tradutor de páginas web mais poderoso do mundo! Bilíngue lado a lado / só tradução / original — 3 modos de exibição instantâneos · 3 motores Google/Microsoft/Tencent · Funciona no Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur e todos os navegadores Chromium · iPhone, Android, tablet, desktop — todas as plataformas · 249 idiomas cobrindo 99% da população mundial · Reconstruído sobre o motor TWP com profundo respeito · Zero configuração, instale e use // @description:ru Самый мощный переводчик веб-страниц в мире! Двуязычный бок о бок / только перевод / оригинал — 3 режима отображения мгновенно · 3 движка Google/Microsoft/Tencent · Работает в Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur и всех Chromium-браузерах · iPhone, Android, планшет, ПК — все платформы · 249 языков для 99% населения мира · Перестроен на движке TWP с глубоким уважением к оригиналу · Нулевая настройка, установи и пользуйся // @description:it Il traduttore di pagine web più potente al mondo! Bilingue affiancato / solo traduzione / originale — 3 modalità di visualizzazione istantanee · 3 motori Google/Microsoft/Tencent · Funziona su Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur e tutti i browser Chromium · iPhone, Android, tablet, desktop — tutte le piattaforme · 249 lingue per il 99% della popolazione mondiale · Ricostruito sul motore TWP con profondo rispetto · Zero configurazione, installa e vai // @description:tr Dünyanın en güçlü web sayfası çevirmeni! İki dilli yan yana / sadece çeviri / orijinal — 3 görüntüleme modu anında geçiş · 3 motor Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ve tüm Chromium tarayıcılarda çalışır · iPhone, Android, tablet, masaüstü — tüm platformlar · 249 dil dünya nüfusunun %99'unu kapsar · TWP motoruna derin saygıyla yeniden inşa edildi · Sıfır yapılandırma, kur ve başla // @description:ar أقوى مترجم صفحات ويب في العالم! ثنائي اللغة جنبًا إلى جنب / ترجمة فقط / أصلي — 3 أوضاع عرض فورية · 3 محركات Google/Microsoft/Tencent · يعمل على Via وSafari وChrome وFirefox وEdge وKiwi وLemur وجميع متصفحات Chromium · آيفون وأندرويد وتابلت وسطح المكتب — جميع المنصات · 249 لغة تغطي 99% من سكان العالم · أُعيد بناؤه على محرك TWP مع احترام عميق للأصل · بدون إعداد، ثبّت وانطلق // @description:th ตัวแปลหน้าเว็บที่ทรงพลังที่สุดในโลก! สองภาษาเคียงข้าง / แปลอย่างเดียว / ต้นฉบับ — 3 โหมดแสดงผลสลับทันที · 3 เครื่องยนต์ Google/Microsoft/Tencent · ใช้ได้บน Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur และทุกเบราว์เซอร์ Chromium · iPhone, Android, แท็บเล็ต, เดสก์ท็อป — ทุกแพลตฟอร์ม · 249 ภาษาครอบคลุม 99% ของประชากรโลก · สร้างใหม่บนเครื่องยนต์ TWP ด้วยความเคารพอย่างสุดซึ้ง · ไม่ต้องตั้งค่า ติดตั้งแล้วใช้ได้เลย // @description:vi Trình dịch trang web mạnh nhất thế giới! Song ngữ cạnh nhau / chỉ bản dịch / bản gốc — 3 chế độ hiển thị chuyển đổi tức thì · 3 engine Google/Microsoft/Tencent · Hoạt động trên Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur và mọi trình duyệt Chromium · iPhone, Android, máy tính bảng, PC — mọi nền tảng · 249 ngôn ngữ bao phủ 99% dân số thế giới · Tái xây dựng trên engine TWP với sự kính trọng sâu sắc · Không cần cấu hình, cài là chạy // @description:id Penerjemah halaman web paling kuat di dunia! Dwibahasa berdampingan / hanya terjemahan / asli — 3 mode tampilan beralih instan · 3 mesin Google/Microsoft/Tencent · Berjalan di Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur dan semua browser Chromium · iPhone, Android, tablet, desktop — semua platform · 249 bahasa mencakup 99% populasi dunia · Dibangun ulang di atas mesin TWP dengan penghormatan mendalam · Tanpa konfigurasi, pasang dan langsung pakai // @description:ms Penterjemah halaman web paling berkuasa di dunia! Dwibahasa bersebelahan / terjemahan sahaja / asal — 3 mod paparan serta-merta · 3 enjin Google/Microsoft/Tencent · Berfungsi di Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur dan semua pelayar Chromium · iPhone, Android, tablet, desktop — semua platform · 249 bahasa meliputi 99% populasi dunia · Dibina semula di atas enjin TWP dengan penghormatan mendalam · Sifar konfigurasi, pasang dan guna // @description:hi दुनिया का सबसे शक्तिशाली वेबपेज अनुवादक! द्विभाषी साथ-साथ / केवल अनुवाद / मूल — 3 प्रदर्शन मोड तुरंत बदलें · Google/Microsoft/Tencent 3 इंजन · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur और सभी Chromium ब्राउज़र पर काम करता है · iPhone, Android, टैबलेट, डेस्कटॉप — सभी प्लेटफ़ॉर्म · 249 भाषाएँ विश्व जनसंख्या का 99% कवर करती हैं · TWP इंजन पर गहरे सम्मान के साथ पुनर्निर्मित · शून्य कॉन्फ़िग, इंस्टॉल करें और चलाएँ // @description:bn বিশ্বের সবচেয়ে শক্তিশালী ওয়েবপেজ অনুবাদক! দ্বিভাষিক পাশাপাশি / শুধু অনুবাদ / মূল — 3টি প্রদর্শন মোড তাৎক্ষণিক · Google/Microsoft/Tencent 3 ইঞ্জিন · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur এবং সমস্ত Chromium ব্রাউজারে কাজ করে · iPhone, Android, ট্যাবলেট, ডেস্কটপ — সব প্ল্যাটফর্ম · 249 ভাষা বিশ্ব জনসংখ্যার 99% কভার করে · TWP ইঞ্জিনের উপর গভীর শ্রদ্ধায় পুনর্নির্মিত · শূন্য কনফিগ, ইনস্টল করুন এবং ব্যবহার করুন // @description:ta உலகின் மிக சக்திவாய்ந்த வலைப்பக்க மொழிபெயர்ப்பாளர்! இருமொழி அருகருகே / மொழிபெயர்ப்பு மட்டும் / அசல் — 3 காட்சி முறைகள் உடனடியாக மாறும் · Google/Microsoft/Tencent 3 இயந்திரங்கள் · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur மற்றும் அனைத்து Chromium உலாவிகளிலும் வேலை செய்யும் · 249 மொழிகள் · TWP இயந்திரத்தின் மீது ஆழ்ந்த மரியாதையுடன் மறுகட்டமைக்கப்பட்டது // @description:te ప్రపంచంలోనే అత్యంత శక్తివంతమైన వెబ్‌పేజీ అనువాదకుడు! ద్విభాషా పక్కపక్కన / అనువాదం మాత్రమే / మూలం — 3 ప్రదర్శన మోడ్‌లు తక్షణంగా మారుతాయి · Google/Microsoft/Tencent 3 ఇంజన్‌లు · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur మరియు అన్ని Chromium బ్రౌజర్‌లలో పనిచేస్తుంది · 249 భాషలు · TWP ఇంజన్‌పై లోతైన గౌరవంతో పునర్నిర్మించబడింది // @description:ur دنیا کا سب سے طاقتور ویب پیج مترجم! دو زبانی ساتھ ساتھ / صرف ترجمہ / اصل — 3 ڈسپلے موڈز فوری طور پر تبدیل · Google/Microsoft/Tencent 3 انجن · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur اور تمام Chromium براؤزرز پر کام کرتا ہے · 249 زبانیں · TWP انجن پر گہری عزت کے ساتھ دوبارہ تعمیر // @description:fa قوی‌ترین مترجم صفحات وب در جهان! دوزبانه کنار هم / فقط ترجمه / اصلی — 3 حالت نمایش فوری · 3 موتور Google/Microsoft/Tencent · روی Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur و تمام مرورگرهای Chromium کار می‌کند · 249 زبان · بازسازی شده روی موتور TWP با احترام عمیق · بدون تنظیم، نصب کنید و استفاده کنید // @description:pl Najpotężniejszy tłumacz stron internetowych na świecie! Dwujęzyczny obok siebie / tylko tłumaczenie / oryginał — 3 tryby wyświetlania natychmiastowe · 3 silniki Google/Microsoft/Tencent · Działa na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur i wszystkich przeglądarkach Chromium · 249 języków obejmujących 99% populacji świata · Przebudowany na silniku TWP z głębokim szacunkiem · Zero konfiguracji, zainstaluj i korzystaj // @description:uk Найпотужніший перекладач веб-сторінок у світі! Двомовний поруч / лише переклад / оригінал — 3 режими відображення миттєво · 3 рушії Google/Microsoft/Tencent · Працює у Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur та всіх Chromium-браузерах · 249 мов для 99% населення світу · Перебудовано на рушії TWP з глибокою повагою · Нуль налаштувань, встанови та користуйся // @description:ro Cel mai puternic traducător de pagini web din lume! Bilingv alăturat / doar traducere / original — 3 moduri de afișare instantanee · 3 motoare Google/Microsoft/Tencent · Funcționează pe Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur și toate browserele Chromium · 249 limbi acoperind 99% din populația lumii · Reconstruit pe motorul TWP cu respect profund · Zero configurare, instalează și folosește // @description:nl De krachtigste webpagina-vertaler ter wereld! Tweetalig naast elkaar / alleen vertaling / origineel — 3 weergavemodi direct omschakelen · 3 engines Google/Microsoft/Tencent · Werkt op Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur en alle Chromium-browsers · 249 talen voor 99% van de wereldbevolking · Herbouwd op TWP-engine met diep respect · Nul configuratie, installeer en ga // @description:el Ο πιο ισχυρός μεταφραστής ιστοσελίδων στον κόσμο! Δίγλωσσο δίπλα-δίπλα / μόνο μετάφραση / πρωτότυπο — 3 λειτουργίες εμφάνισης άμεσα · 3 μηχανές Google/Microsoft/Tencent · Λειτουργεί σε Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur και όλους τους Chromium browsers · 249 γλώσσες για το 99% του παγκόσμιου πληθυσμού · Ανακατασκευασμένο στη μηχανή TWP με βαθύ σεβασμό · Μηδενική ρύθμιση, εγκατάσταση και χρήση // @description:cs Nejsilnější překladač webových stránek na světě! Dvojjazyčný vedle sebe / pouze překlad / originál — 3 režimy zobrazení okamžitě · 3 enginy Google/Microsoft/Tencent · Funguje na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur a všech Chromium prohlížečích · 249 jazyků pokrývajících 99% světové populace · Přestavěn na enginu TWP s hlubokým respektem · Nulová konfigurace, nainstaluj a používej // @description:hu A világ legerősebb weblap-fordítója! Kétnyelvű egymás mellett / csak fordítás / eredeti — 3 megjelenítési mód azonnali váltás · 3 motor Google/Microsoft/Tencent · Működik Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur és minden Chromium böngészőben · 249 nyelv a világ népességének 99%-át lefedi · TWP motoron újjáépítve mély tisztelettel · Nulla konfiguráció, telepítsd és használd // @description:sv Världens kraftfullaste webbsideöversättare! Tvåspråkig sida vid sida / bara översättning / original — 3 visningslägen byter omedelbart · 3 motorer Google/Microsoft/Tencent · Fungerar på Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur och alla Chromium-webbläsare · 249 språk som täcker 99% av världens befolkning · Ombyggd på TWP-motorn med djup respekt · Noll konfiguration, installera och kör // @description:da Verdens mest kraftfulde webside-oversætter! Tosproget side om side / kun oversættelse / original — 3 visningstilstande skifter øjeblikkeligt · 3 motorer Google/Microsoft/Tencent · Virker på Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur og alle Chromium-browsere · 249 sprog der dækker 99% af verdens befolkning · Genopbygget på TWP-motoren med dyb respekt · Nul konfiguration, installer og brug // @description:fi Maailman tehokkain verkkosivukääntäjä! Kaksikielinen rinnakkain / vain käännös / alkuperäinen — 3 näyttötilaa vaihtuu välittömästi · 3 moottoria Google/Microsoft/Tencent · Toimii Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ja kaikilla Chromium-selaimilla · 249 kieltä kattaen 99% maailman väestöstä · Rakennettu uudelleen TWP-moottorille syvällä kunnioituksella · Nolla asetuksia, asenna ja käytä // @description:no Verdens kraftigste nettsideoversetter! Tospråklig side ved side / kun oversettelse / original — 3 visningsmodi bytter øyeblikkelig · 3 motorer Google/Microsoft/Tencent · Fungerer på Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur og alle Chromium-nettlesere · 249 språk som dekker 99% av verdens befolkning · Gjenoppbygd på TWP-motoren med dyp respekt · Null konfigurasjon, installer og bruk // @description:bg Най-мощният преводач на уебстраници в света! Двуезичен един до друг / само превод / оригинал — 3 режима на показване мигновено · 3 двигателя Google/Microsoft/Tencent · Работи на Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur и всички Chromium браузъри · 249 езика покриващи 99% от световното население · Преизграден на двигателя TWP с дълбоко уважение · Нулева конфигурация, инсталирай и ползвай // @description:hr Najmoćniji prevoditelj web stranica na svijetu! Dvojezičan jedan pored drugog / samo prijevod / original — 3 načina prikaza trenutačno · 3 motora Google/Microsoft/Tencent · Radi na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur i svim Chromium preglednicima · 249 jezika koji pokrivaju 99% svjetske populacije · Izgrađen na TWP motoru s dubokim poštovanjem · Nula konfiguracije, instaliraj i koristi // @description:sr Најмоћнији преводилац веб страница на свету! Двојезичан један поред другог / само превод / оригинал — 3 режима приказа тренутно · 3 мотора Google/Microsoft/Tencent · Ради на Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur и свим Chromium прегледачима · 249 језика који покривају 99% светске популације · Преизграђен на TWP мотору са дубоким поштовањем · Нула конфигурације, инсталирај и користи // @description:sk Najsilnejší prekladač webových stránok na svete! Dvojjazyčný vedľa seba / iba preklad / originál — 3 režimy zobrazenia okamžite · 3 enginy Google/Microsoft/Tencent · Funguje na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur a všetkých prehliadačoch Chromium · 249 jazykov pokrývajúcich 99% svetovej populácie · Prestavaný na engine TWP s hlbokým rešpektom · Nulová konfigurácia, nainštaluj a používaj // @description:sl Najmočnejši prevajalnik spletnih strani na svetu! Dvojezičen drug ob drugem / samo prevod / izvirnik — 3 načini prikaza takoj · 3 motorji Google/Microsoft/Tencent · Deluje na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur in vseh Chromium brskalnikih · 249 jezikov ki pokrivajo 99% svetovnega prebivalstva · Prenovljen na TWP motorju z globokim spoštovanjem · Nič konfiguracije, namesti in uporabljaj // @description:lt Galingiausias tinklalapių vertėjas pasaulyje! Dvikalbis greta / tik vertimas / originalas — 3 rodymo režimai persijungia akimirksniu · 3 varikliai Google/Microsoft/Tencent · Veikia Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ir visose Chromium naršyklėse · 249 kalbos apimančios 99% pasaulio gyventojų · Perkurtas ant TWP variklio su gilia pagarba · Nulinė konfigūracija, įdiek ir naudok // @description:lv Jaudīgākais tīmekļa lapu tulkotājs pasaulē! Divvalodu blakus / tikai tulkojums / oriģināls — 3 attēlošanas režīmi pārslēdzas tūlīt · 3 dzinēji Google/Microsoft/Tencent · Darbojas Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur un visos Chromium pārlūkos · 249 valodas aptverot 99% pasaules iedzīvotāju · Pārbūvēts uz TWP dzinēja ar dziļu cieņu · Nulles konfigurācija, instalē un lieto // @description:et Maailma võimsaim veebilehtede tõlkija! Kakskeelne kõrvuti / ainult tõlge / originaal — 3 kuvarežiimi lülituvad koheselt · 3 mootorit Google/Microsoft/Tencent · Töötab Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ja kõigis Chromium brauserites · 249 keelt katavad 99% maailma elanikkonnast · Üles ehitatud TWP mootorile sügava austusega · Null konfiguratsiooni, paigalda ja kasuta // @description:sw Mtafsiri wa kurasa za wavuti wenye nguvu zaidi duniani! Lugha mbili bega kwa bega / tafsiri pekee / asili — mitindo 3 ya kuonyesha hubadilika papo hapo · Injini 3 Google/Microsoft/Tencent · Inafanya kazi kwenye Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur na vivinjari vyote vya Chromium · Lugha 249 zinazofunika 99% ya watu duniani · Imejengwa upya kwenye injini ya TWP kwa heshima kubwa · Hakuna usanidi, sakinisha na utumie // @description:fil Pinakamakapangyarihang tagasalin ng mga webpage sa buong mundo! Dalawahang wika magkatabi / salin lang / orihinal — 3 display mode nag-aagad · 3 engine Google/Microsoft/Tencent · Gumagana sa Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur at lahat ng Chromium browser · 249 wika sumasaklaw sa 99% ng populasyon ng mundo · Itinayo muli sa TWP engine na may malalim na paggalang · Zero config, i-install at gamitin // @description:my ကမ္ဘာ့အစွမ်းကုန် ဝဘ်စာမျက်နှာ ဘာသာပြန်! နှစ်ဘာသာ ဘေးချင်းကပ် / ဘာသာပြန်သာ / မူရင်း — ပြသနည်း 3 ခု ချက်ချင်းပြောင်း · Google/Microsoft/Tencent အင်ဂျင် 3 ခု · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur နှင့် Chromium ဘရောက်ဆာအားလုံး · ဘာသာ 249 · TWP အင်ဂျင်ပေါ်တွင် လေးစားစွာ ပြန်လည်တည်ဆောက်ထား // @description:km អ្នកបកប្រែគេហទំព័រដ៏ខ្លាំងបំផុតក្នុងពិភពលោក! ពីរភាសាត្រូវគ្នា / បកប្រែតែប៉ុណ្ណោះ / ដើម — 3 របៀបបង្ហាញប្តូរភ្លាមៗ · ម៉ាស៊ីន 3 Google/Microsoft/Tencent · ដំណើរការលើ Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur និងកម្មវិធីរុករក Chromium ទាំងអស់ · ២៤៩ ភាសា · បង្កើតឡើងវិញលើម៉ាស៊ីន TWP ដោយការគោរពយ៉ាងជ្រាលជ្រៅ // @description:lo ນັກແປໜ້າເວັບທີ່ແຮງທີ່ສຸດໃນໂລກ! ສອງພາສາຄຽງຄູ່ / ແປຢ່າງດຽວ / ຕົ້ນສະບັບ — 3 ໂໝດສະແດງປ່ຽນທັນທີ · 3 ເຄື່ອງຈັກ Google/Microsoft/Tencent · ເຮັດວຽກໃນ Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ແລະບຣາວເຊີ Chromium ທັງໝົດ · 249 ພາສາ · ສ້າງຂຶ້ນໃໝ່ເທິງເຄື່ອງຈັກ TWP ດ້ວຍຄວາມເຄົາລົບ // @description:ka მსოფლიოში ყველაზე ძლიერი ვებგვერდის მთარგმნელი! ორენოვანი გვერდიგვერდ / მხოლოდ თარგმანი / ორიგინალი — 3 ჩვენების რეჟიმი მყისიერად · 3 ძრავი Google/Microsoft/Tencent · მუშაობს Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur და ყველა Chromium ბრაუზერზე · 249 ენა · აღდგენილია TWP ძრავზე ღრმა პატივისცემით // @description:hy Աշխարհի delays delays delays! Երdelays delays / delays delays / delays — 3 delays delays · 3 delays Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur delays Chromium delays · 249 delays · TWP delays delays // @description:am በዓለም ላይ በጣም ኃይለኛ ድረ-ገጽ ተርጓሚ! ሁለት ቋንቋ ከጎን ለጎን / ትርጉም ብቻ / ዋናው — 3 የማሳያ ሁነታዎች ወዲያውኑ · 3 ሞተሮች Google/Microsoft/Tencent · በ Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur እና ሁሉም Chromium አሳሾች ላይ ይሰራል · 249 ቋንቋዎች · በ TWP ሞተር ላይ በጥልቅ ክብር ተገንብቷል // @description:ne संसारको सबभन्दा शक्तिशाली वेबपेज अनुवादक! द्विभाषी छेउछाउ / अनुवाद मात्र / मूल — 3 प्रदर्शन मोड तुरुन्त · 3 इन्जिन Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur र सबै Chromium ब्राउजरमा काम गर्छ · 249 भाषा · TWP इन्जिनमा गहिरो सम्मानका साथ पुनर्निर्माण // @description:si ලෝකයේ බලවත්ම වෙබ් පිටු පරිවර්තකය! ද්විභාෂා පැත්තෙන් පැත්ත / පරිවර්තනය පමණි / මුල් — ප්‍රදර්ශන ආකාර 3ක් ක්ෂණිකව · එන්ජින් 3ක් Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur සහ සියලුම Chromium බ්‍රව්සර්වල ක්‍රියා කරයි · භාෂා 249 · TWP එන්ජිම මත ගැඹුරු ගෞරවයෙන් ප්‍රතිනිර්මාණය // @description:mn Дэлхийн хамгийн хүчирхэг вэб хуудас орчуулагч! Хоёр хэлтэй зэрэгцээ / зөвхөн орчуулга / эх хувилбар — 3 харуулах горим шуурхай · 3 хөдөлгүүр Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur болон бүх Chromium хөтчид дээр ажилладаг · 249 хэл · TWP хөдөлгүүр дээр гүн хүндэтгэлтэйгээр дахин бүтээсэн // @description:uz Dunyodagi eng kuchli veb-sahifa tarjimoni! Ikki tilli yonma-yon / faqat tarjima / asl nusxa — 3 ko'rsatish rejimi bir zumda · 3 dvigatel Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur va barcha Chromium brauzerlarda ishlaydi · 249 til · TWP dvigatelida chuqur hurmat bilan qayta qurilgan // @description:kk Әлемдегі ең қуатты веб-бет аудармашысы! Екі тілді қатар / тек аударма / түпнұсқа — 3 көрсету режимі лезде · 3 қозғалтқыш Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur және барлық Chromium браузерлерде жұмыс істейді · 249 тіл · TWP қозғалтқышында терең құрметпен қайта құрылған // @description:az Dünyanın ən güclü veb səhifə tərcüməçisi! İkidilli yan-yana / yalnız tərcümə / orijinal — 3 göstərmə rejimi anlıq · 3 mühərrik Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur və bütün Chromium brauzerlərdə işləyir · 249 dil · TWP mühərrikində dərin hörmətlə yenidən qurulub // @description:sq Përkthyesi më i fuqishëm i faqeve të internetit në botë! Dygjuhësh krah për krah / vetëm përkthim / origjinal — 3 mënyra shfaqjeje menjëherë · 3 motorë Google/Microsoft/Tencent · Punon në Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur dhe të gjithë shfletuesit Chromium · 249 gjuhë që mbulojnë 99% të popullsisë botërore · I rindërtuar mbi motorin TWP me respekt të thellë // @description:mk Најмоќен преведувач на веб-страници на светот! Двојазичен еден до друг / само превод / оригинал — 3 режими на прикажување моментално · 3 мотори Google/Microsoft/Tencent · Работи на Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur и сите Chromium прелистувачи · 249 јазици · Преизграден на TWP моторот со длабока почит // @description:bs Najmoćniji prevodilac web stranica na svijetu! Dvojezičan jedan pored drugog / samo prijevod / original — 3 načina prikaza trenutno · 3 motora Google/Microsoft/Tencent · Radi na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur i svim Chromium preglednicima · 249 jezika · Izgrađen na TWP motoru s dubokim poštovanjem // @description:is Öflugasti þýðandinn á vefsíðum í heiminum! Tvímála hlið við hlið / aðeins þýðing / upprunalegt — 3 birtingarstillingar skipta samstundis · 3 vélar Google/Microsoft/Tencent · Virkar á Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur og öllum Chromium vöfrum · 249 tungumál · Endurbyggður á TWP vél með djúpri virðingu // @description:af Die kragtigste webblad-vertaler ter wêreld! Tweetalig langs mekaar / slegs vertaling / oorspronklik — 3 vertoonmodusse skakel onmiddellik · 3 enjins Google/Microsoft/Tencent · Werk op Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur en alle Chromium-blaaiers · 249 tale · Herbou op TWP-enjin met diep respek // @description:yo Atúmọ̀ ojú-ìwé wẹ́ẹ̀bù tó lágbára jù lọ ní àgbáyé! Èdè méjì lẹ́gbẹ̀ẹ́ / àtúmọ̀ nìkan / àkọ́kọ́ — Ọ̀nà ìfihàn 3 yí padà lẹ́sẹ̀kẹsẹ̀ · Ẹ̀rọ 3 Google/Microsoft/Tencent · Ó ń ṣiṣẹ́ ní Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur àti gbogbo àwọn aṣàwákiri Chromium · Èdè 249 · A tún kọ́ lórí ẹ̀rọ TWP pẹ̀lú ọlá jíjinlẹ̀ // @description:ha Mafi ƙarfin mai fassara shafukan yanar gizo a duniya! Harsuna biyu gefe da gefe / fassara kawai / asali — hanyoyin nuna 3 nan take · Injuna 3 Google/Microsoft/Tencent · Yana aiki a Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur da duk masu binciken Chromium · Harsuna 249 · An sake gina a kan injin TWP tare da girmamawa mai zurfi // @description:ig Onye ntụgharị asụsụ ibe weebụ kachasị ike n'ụwa! Asụsụ abụọ n'akụkụ / ntụgharị asụsụ naanị / nke mbụ — ụzọ ngosipụta 3 na-agbanwe ozugbo · Injin 3 Google/Microsoft/Tencent · Ọ na-arụ ọrụ na Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur na ihe nchọgharị Chromium niile · Asụsụ 249 · Ewugharịrị na injin TWP nwere nsọpụrụ miri emi // @description:zu Umhumushi wamakhasi ewebhu onamandla kunawo wonke emhlabeni! Izilimi ezimbili eceleni / ukuhumusha kuphela / okwangempela — izindlela zokubonisa ezi-3 zishintsha ngokushesha · Izinjini ezi-3 Google/Microsoft/Tencent · Kusebenza ku-Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur nazo zonke iziphequluli ze-Chromium · Izilimi ezingu-249 · Kwakhiwe kabusha phezu kwenjini ye-TWP ngokuhlonipha okujulile // @description:mg Mpandika fiteny pejy tranonkala matanjaka indrindra eran-tany! Roa teny anilany / dikanteny ihany / tany am-boalohany — fomba fampisehoana 3 mifandimby vetivety · Motera 3 Google/Microsoft/Tencent · Mandeha amin'ny Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur sy ny navigateur Chromium rehetra · 249 fiteny · Naorina teo ambonin'ny motera TWP miaraka amin'ny fanajana lalina // @description:eo La plej potenca tradukilo de retpaĝoj en la mondo! Dulingva flanko ĉe flanko / nur traduko / originalo — 3 montraj reĝimoj ŝanĝiĝas tuje · 3 motoroj Google/Microsoft/Tencent · Funkcias ĉe Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur kaj ĉiuj Chromium retumiloj · 249 lingvoj · Rekonstruita sur TWP-motoro kun profunda respekto // @description:la Potentissimus interpres paginarum interretialium in mundo! Bilinguis iuxta / sola translatio / originale — 3 modi ostendendi statim · 3 motores Google/Microsoft/Tencent · Operatur in Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur et omnibus Chromium navigatris · 249 linguae · Super TWP motore cum profundo honore reconstructum // @description:he המתרגם החזק ביותר בעולם לדפי אינטרנט! דו-לשוני זה לצד זה / תרגום בלבד / מקור — 3 מצבי תצוגה מתחלפים מיידית · 3 מנועים Google/Microsoft/Tencent · עובד ב-Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ובכל דפדפני Chromium · 249 שפות · נבנה מחדש על מנוע TWP עם כבוד עמוק // @description:gu વિશ્વનો સૌથી શક્તિશાળી વેબપેજ અનુવાદક! દ્વિભાષી બાજુ બાજુ / માત્ર અનુવાદ / મૂળ — 3 ડિસ્પ્લે મોડ તાત્કાલિક · 3 એન્જિન Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur અને તમામ Chromium બ્રાઉઝર્સ પર કામ કરે છે · 249 ભાષાઓ · TWP એન્જિન પર ઊંડા સન્માન સાથે પુનર્નિર્મિત // @description:mr जगातील सर्वात शक्तिशाली वेबपेज अनुवादक! द्विभाषी शेजारी शेजारी / फक्त अनुवाद / मूळ — 3 प्रदर्शन मोड तात्काळ · 3 इंजिन Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur आणि सर्व Chromium ब्राउझर्सवर काम करते · 249 भाषा · TWP इंजिनवर खोल आदराने पुनर्निर्मित // @description:pa ਦੁਨੀਆ ਦਾ ਸਭ ਤੋਂ ਸ਼ਕਤੀਸ਼ਾਲੀ ਵੈੱਬਪੇਜ ਅਨੁਵਾਦਕ! ਦੋਭਾਸ਼ੀ ਨਾਲ ਨਾਲ / ਸਿਰਫ਼ ਅਨੁਵਾਦ / ਮੂਲ — 3 ਡਿਸਪਲੇ ਮੋਡ ਤੁਰੰਤ · 3 ਇੰਜਣ Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ਅਤੇ ਸਾਰੇ Chromium ਬ੍ਰਾਊਜ਼ਰਾਂ ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ · 249 ਭਾਸ਼ਾਵਾਂ · TWP ਇੰਜਣ ਤੇ ਡੂੰਘੇ ਸਤਿਕਾਰ ਨਾਲ ਮੁੜ ਨਿਰਮਿਤ // @description:kn ವಿಶ್ವದ ಅತ್ಯಂತ ಶಕ್ತಿಶಾಲಿ ವೆಬ್‌ಪೇಜ್ ಅನುವಾದಕ! ದ್ವಿಭಾಷಾ ಪಕ್ಕಪಕ್ಕ / ಅನುವಾದ ಮಾತ್ರ / ಮೂಲ — 3 ಪ್ರದರ್ಶನ ಮೋಡ್‌ಗಳು ತಕ್ಷಣ · 3 ಎಂಜಿನ್‌ಗಳು Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur ಮತ್ತು ಎಲ್ಲಾ Chromium ಬ್ರೌಸರ್‌ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ · 249 ಭಾಷೆಗಳು · TWP ಎಂಜಿನ್‌ನಲ್ಲಿ ಆಳವಾದ ಗೌರವದಿಂದ ಪುನರ್ನಿರ್ಮಿಸಲಾಗಿದೆ // @description:ml ലോകത്തിലെ ഏറ്റവും ശക്തമായ വെബ്‌പേജ് പരിഭാഷകൻ! ദ്വിഭാഷ അരികിലരികിൽ / പരിഭാഷ മാത്രം / യഥാർത്ഥം — 3 ഡിസ്‌പ്ലേ മോഡുകൾ തൽക്ഷണം · 3 എഞ്ചിനുകൾ Google/Microsoft/Tencent · Via, Safari, Chrome, Firefox, Edge, Kiwi, Lemur എന്നിവയിലും എല്ലാ Chromium ബ്രൗസറുകളിലും പ്രവർത്തിക്കുന്നു · 249 ഭാഷകൾ · TWP എഞ്ചിനിൽ ആഴമായ ആദരവോടെ പുനർനിർമ്മിച്ചു // @match *://*/* // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @connect translate.googleapis.com // @connect translate-pa.googleapis.com // @connect edge.microsoft.com // @connect api-edge.cognitive.microsofttranslator.com // @connect transmart.qq.com // @run-at document-start // @downloadURL none // ==/UserScript== (async () => { 'use strict'; try { if (document.contentType === 'application/xml') return } catch (_) {} // ══════════════════════════════════════════════════════════ // 配置并行读取 // ══════════════════════════════════════════════════════════ const deviceLang = (navigator.language || navigator.userLanguage || 'zh-CN').split('-')[0]; const [ _engine, _targetLang, _autoMode, _excludedHosts, _displayMode ] = await Promise.all([ GM_getValue('engine', 'google'), GM_getValue('targetLang', deviceLang === 'zh' ? 'zh-CN' : deviceLang), GM_getValue('autoMode', true), GM_getValue('excludedHosts', '[]'), GM_getValue('displayMode', 'translated') ]); let currentEngine = _engine; let targetLang = _targetLang; let autoMode = _autoMode; let excludedHosts = JSON.parse(_excludedHosts); let displayMode = _displayMode; // 'translated' | 'bilingual' | 'original' if (excludedHosts.includes(location.host)) return; // ══════════════════════════════════════════════════════════ // 语言列表(原封不动) // ══════════════════════════════════════════════════════════ const ALL_LANGUAGES = { "zh-CN": "中文(简体)", "zh-TW": "中文(繁體)", "en": "English", "ja": "日本語", "ko": "한국어", "fr": "Français", "de": "Deutsch", "es": "Español", "ru": "Русский", "pt": "Português", "pt-PT": "Português (Portugal)", "ar": "العربية", "th": "ไทย", "vi": "Tiếng Việt", "it": "Italiano", "tr": "Türkçe", "id": "Indonesia", "ms": "Bahasa Melayu", "nl": "Nederlands", "pl": "Polski", "uk": "Українська", "cs": "Čeština", "sk": "Slovenčina", "hu": "Magyar", "ro": "Română", "bg": "Български", "hr": "Hrvatski", "sr": "Српски", "sl": "Slovenščina", "lt": "Lietuvių", "lv": "Latviešu", "et": "Eesti", "fi": "Suomi", "sv": "Svenska", "da": "Dansk", "no": "Norsk", "is": "Íslenska", "el": "Ελληνικά", "he": "עברית", "hi": "हिन्दी", "bn": "বাংলা", "ta": "தமிழ்", "te": "తెలుగు", "kn": "ಕನ್ನಡ", "ml": "മലയാളം", "pa": "ਪੰਜਾਬੀ", "gu": "ગુજરાતી", "mr": "मराठी", "ne": "नेपाली", "si": "සිංහල", "ur": "اردو", "fa": "فارسی", "ps": "پښتو", "my": "မြန်မာ", "km": "ខ្មែរ", "lo": "ລາວ", "ka": "ქართული", "hy": "Հայերեն", "az": "Azərbaycan", "kk": "Қазақ", "uz": "Oʻzbek", "mn": "Монгол", "sq": "Shqip", "mk": "Македонски", "be": "Беларуская", "bs": "Bosanski", "ca": "Català", "gl": "Galego", "eu": "Euskara", "mt": "Malti", "cy": "Cymraeg", "ga": "Gaeilge", "gd": "Gàidhlig", "lb": "Lëtzebuergesch", "af": "Afrikaans", "sw": "Kiswahili", "ha": "Hausa", "ig": "Igbo", "yo": "Yorùbá", "zu": "isiZulu", "xh": "isiXhosa", "sn": "chiShona", "st": "Sesotho", "so": "Soomaali", "am": "አማርኛ", "ti": "ትግርኛ", "om": "Oromoo", "mg": "Malagasy", "ny": "Chichewa", "lg": "Luganda", "rw": "Kinyarwanda", "tg": "Тоҷикӣ", "tk": "Türkmen", "ky": "Кыргызча", "tt": "Татар", "eo": "Esperanto", "la": "Latina", "co": "Corsu", "fy": "Frysk", "haw": "ʻŌlelo Hawaiʻi", "sm": "Gagana Samoa", "mi": "Te Reo Māori", "ceb": "Cebuano", "fil": "Filipino", "jv": "Basa Jawa", "su": "Basa Sunda", "hmn": "Hmong", "ht": "Kreyòl Ayisyen", "ku": "Kurdî", "ckb": "کوردی", "sd": "سنڌي", "or": "ଓଡ଼ିଆ", "as": "অসমীয়া", "sa": "संस्कृतम्", "mai": "मैथिली", "bho": "भोजपुरी", "doi": "डोगरी", "ug": "ئۇيغۇرچە", "dv": "ދިވެހި", "ak": "Akan", "ee": "Eʋegbe", "gn": "Guarani", "ay": "Aymar", "bm": "Bamanankan", "ln": "Lingála", "nso": "Sepedi", "ts": "Xitsonga", "qu": "Runasimi", "ilo": "Ilokano", "kri": "Krio", "lus": "Mizo tawng", "mni-Mtei": "ꯃꯤꯇꯩꯂꯣꯟ", "gom": "कोंकणी", "ab": "Аԥсуа", "ace": "Bahsa Acèh", "ach": "Lwo", "aa": "Qafaraf", "alz": "Alur", "av": "Авар", "awa": "अवधी", "ban": "ᬩᬮᬶ", "bal": "بلوچی", "bci": "Baoulé", "ba": "Башҡорт", "btx": "Batak Karo", "bts": "Batak Simalungun", "bbc": "Batak Toba", "bem": "Bemba", "bew": "Betawi", "bik": "Bikol", "br": "Brezhoneg", "bua": "Буряад", "yue": "粵語", "ch": "Chamoru", "ce": "Нохчийн", "chk": "Chuukese", "cv": "Чӑваш", "crh": "Qırımtatar", "prs": "دری", "din": "Thuɔŋjäŋ", "dov": "Dombe", "dyu": "Julakan", "dz": "རྫོང་ཁ", "fo": "Føroyskt", "fj": "Na Vosa Vakaviti", "fon": "Fɔ̀ngbè", "fr-CA": "Français (Canada)", "fur": "Furlan", "ff": "Pulaar", "gaa": "Gã", "cnh": "Lai", "hil": "Hiligaynon", "hrx": "Hunsrik", "iba": "Iban", "iu-Latn": "ᐃᓄᒃᑎᑐᑦ (Latin)", "jam": "Jamaican Patois", "kac": "Jingpo", "kl": "Kalaallisut", "kr": "Kanuri", "pam": "Kapampangan", "kha": "Khasi", "cgg": "Rukiga", "kg": "Kikongo", "mkw": "Kituba", "trp": "Kokborok", "kv": "Коми", "ltg": "Latgaļu", "lij": "Lìgure", "li": "Limburgs", "lmo": "Lombard", "luo": "Dholuo", "mad": "Madhurâ", "mak": "Makassar", "ms-Arab": "بهاس ملايو", "mam": "Mam", "gv": "Gaelg", "mh": "Kajin Majōl", "mwr": "मारवाड़ी", "mfe": "Kreol Morisien", "chm": "Марий", "min": "Minangkabau", "nhe": "Nahuatl", "ndc-ZW": "Ndau", "nr": "isiNdebele", "new": "नेपाल भाषा", "nqo": "ߒߞߏ", "nus": "Thok Nath", "oc": "Occitan", "os": "Ирон", "pag": "Pangasinan", "pap": "Papiamento", "pa-Arab": "پنجابی", "kek": "Qʼeqchiʼ", "rom": "Romani", "rn": "Ikirundi", "se": "Davvisámegiella", "sg": "Sängö", "bo": "བོད་ཡིག", "dsb": "Dolnoserbšćina", "hsb": "Hornjoserbšćina", "ikt": "Inuinnaqtun", "iu": "ᐃᓄᒃᑎᑐᑦ", "lzh": "文言文", "mvf": "ᠮᠣᠩᠭᠣᠯ", "brx": "बर'", "hne": "छत्तीसगढ़ी", "ks": "कॉशुर", "mrj": "Мары", "sa-Latn": "Sanskrit (Latin)", "sc": "Sardu", "scn": "Sicilianu", "szl": "Ślůnski", "su-Latn": "Sunda (Latin)", "tcy": "ತುಳು", "vec": "Vèneto", "war": "Winaray", "wo": "Wolof", "zap": "Zapotec", "ms-Latn": "Malay (Latin)" }; const LANG_GROUPS = { "常用": ["zh-CN","zh-TW","en","ja","ko","fr","de","es","ru","pt","ar","th","vi","it","tr","id"], "欧洲": ["nl","pl","uk","cs","sk","hu","ro","bg","hr","sr","sl","lt","lv","et","fi","sv","da","no","is","el","be","bs","ca","gl","eu","mt","cy","ga","gd","lb","af","eo","la","co","fy","fo","br","oc","sc","scn","szl","fur","lij","lmo","li","vec","ltg","dsb","hsb","gv","se"], "亚洲": ["hi","bn","ta","te","kn","ml","pa","gu","mr","ne","si","ur","fa","ps","my","km","lo","ka","hy","az","kk","uz","mn","tg","tk","ky","tt","ug","dv","or","as","sa","mai","bho","doi","mni-Mtei","gom","awa","ks","brx","hne","mwr","trp","kac","bo","dz","yue","lzh","ms","fil","ceb","jv","su","hmn","ilo","hil","bik","pam","pag","war","ban","mad","mak","min","ace","btx","bts","bbc","bew","iba","ms-Arab","kha"], "非洲": ["sw","ha","ig","yo","zu","xh","sn","st","so","am","ti","om","mg","ny","lg","rw","ak","ee","bm","ln","nso","ts","kri","wo","ff","gaa","fon","bci","dyu","bem","luo","sg","kg","mkw","dov","nus","din","ach","alz","ndc-ZW","nr","rn","mfe"], "美洲/大洋洲": ["pt-PT","fr-CA","ht","qu","gn","ay","haw","sm","mi","fj","mh","ch","chk","jam","nhe","mam","kek","pap","hrx","ikt","iu","iu-Latn","kl"], "其他": ["ab","av","ba","bua","ce","cv","crh","kv","chm","mrj","os","rom","nqo","aa","bal","cnh","kr","prs","pa-Arab","sd","ckb","ku","he"] }; // ══════════════════════════════════════════════════════════ // TWP核心引擎代码(你的原版,一字不动) // ══════════════════════════════════════════════════════════ const GoogleHelper_v2 = { _lastRequestAuthTime: null, _translateAuth: null, _authNotFound: false, _authPromise: null, get translateAuth() { return this._translateAuth; }, _getAlternativeKey() { return new TextDecoder().decode(new Uint8Array([ 65,73,122,97,83,121,65,84,66,88,97,106,118,122,81, 76,84,68,72,69,81,98,99,112,113,48,73,104,101,48, 118,87,68,72,109,79,53,50,48 ])); }, async findAuth() { if (this._authPromise) return await this._authPromise; this._authPromise = new Promise((resolve) => { let needUpdate = false; if (this._lastRequestAuthTime) { const d = new Date(); if (this._translateAuth) d.setMinutes(d.getMinutes() - 20); else if (this._authNotFound) d.setMinutes(d.getMinutes() - 5); else d.setMinutes(d.getMinutes() - 1); if (d.getTime() > this._lastRequestAuthTime) needUpdate = true; } else { needUpdate = true; } if (needUpdate) { this._lastRequestAuthTime = Date.now(); const altKey = this._getAlternativeKey(); GM_xmlhttpRequest({ method: 'GET', url: 'https://translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.en_US.YusFYy3P_ro.O/am=AAg/d=1/exm=el_conf/ed=1/rs=AN8SPfq1Hb8iJRleQqQc8zhdzXmF9E56eQ/m=el_main', timeout: 8000, onload: (r) => { if (r.responseText && r.responseText.length > 1) { const m = r.responseText.match(/['"]x-goog-api-key['"]\s*:\s*['"](\w{39})['"]/i); if (m && m.length === 2) { this._translateAuth = m[1]; this._authNotFound = false; } else { this._authNotFound = true; this._translateAuth = altKey; } } else { this._authNotFound = true; this._translateAuth = altKey; } resolve(); }, onerror: () => { this._translateAuth = altKey; resolve(); }, ontimeout: () => { this._translateAuth = altKey; resolve(); } }); } else { resolve(); } }); const p = this._authPromise; p.finally(() => { this._authPromise = null; }); return await p; } }; // Auth预加载 const authReady = GoogleHelper_v2.findAuth().catch(() => {}); const GoogleHelper = { googleTranslateTKK: "448487.932609646", shiftLeftOrRightThenSumOrXor(num, optString) { for (let i = 0; i < optString.length - 2; i += 3) { let acc = optString.charAt(i + 2); acc = ("a" <= acc) ? acc.charCodeAt(0) - 87 : Number(acc); acc = (optString.charAt(i + 1) === "+") ? num >>> acc : num << acc; num = (optString.charAt(i) === "+") ? (num + acc) & 4294967295 : num ^ acc; } return num; }, transformQuery(query) { const b = []; let idx = 0; for (let i = 0; i < query.length; i++) { let c = query.charCodeAt(i); if (128 > c) { b[idx++] = c; } else { if (2048 > c) { b[idx++] = (c >> 6) | 192; } else { if (55296 === (c & 64512) && i + 1 < query.length && 56320 === (query.charCodeAt(i + 1) & 64512)) { c = 65536 + ((c & 1023) << 10) + (query.charCodeAt(++i) & 1023); b[idx++] = (c >> 18) | 240; b[idx++] = ((c >> 12) & 63) | 128; } else { b[idx++] = (c >> 12) | 224; } b[idx++] = ((c >> 6) & 63) | 128; } b[idx++] = (c & 63) | 128; } } return b; }, calcHash(query) { const s = this.googleTranslateTKK.split("."); const tkkIdx = Number(s[0]) || 0; const tkkKey = Number(s[1]) || 0; const bytes = this.transformQuery(query); let enc = tkkIdx; for (const item of bytes) { enc += item; enc = this.shiftLeftOrRightThenSumOrXor(enc, "+-a^+6"); } enc = this.shiftLeftOrRightThenSumOrXor(enc, "+-3^+b+-f"); enc ^= tkkKey; if (enc <= 0) enc = (enc & 2147483647) + 2147483648; const n = enc % 1000000; return n.toString() + "." + (n ^ tkkIdx); } }; const Utils = { escapeHTML(t) { const d = document.createElement('div'); d.appendChild(document.createTextNode(t)); return d.innerHTML; }, unescapeHTML(t) { const d = new DOMParser().parseFromString(t, 'text/html'); return d.documentElement.textContent; } }; function gmFetch(opts) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ timeout: 20000, ...opts, onload: resolve, onerror: reject, ontimeout: reject }); }); } // ══════════════════════════════════════════════════════════ // 引擎定义(你的原版,一字不动) // ══════════════════════════════════════════════════════════ const Engine = { google_v2: { name: 'Google (TWP v2)', _fixLang(lang) { return lang === "prs" ? "fa-AF" : lang; }, _transformResponse(result, dontSort) { if (result.indexOf("
") !== -1) {
          result = result.replace("
", "");
          const i = result.indexOf(">");
          result = result.slice(i + 1);
        }
        const sentences = [];
        let idx = 0;
        while (true) {
          const s = result.indexOf("", idx);
          if (s === -1) break;
          const e = result.indexOf("", s);
          if (e === -1) { sentences.push(result.slice(s + 3)); break; }
          else { sentences.push(result.slice(s + 3, e)); }
          idx = e;
        }
        result = sentences.length > 0 ? sentences.join(" ") : result;
        result = result.replace(/<\/b>/g, "");
        let resultArray = [];
        let lastEnd = 0;
        for (const r of result.matchAll(/()([^<>]*(?=<\/a>))*/g)) {
          const fl = r[0].length, pos = r.index;
          if (pos > lastEnd) {
            resultArray.push(r[1] + result.slice(lastEnd, pos).replace(/<\/a>/g, "") + (r[2] || ""));
          } else { resultArray.push(r[0]); }
          lastEnd = pos + fl;
        }
        let indexes;
        if (resultArray.length > 0) {
          indexes = resultArray.map(v => parseInt(v.match(/[0-9]+(?=>)/g)?.[0])).filter(v => !isNaN(v));
          resultArray = resultArray.map(v => v.slice(v.indexOf(">") + 1));
        } else { resultArray = [result]; indexes = [0]; }
        resultArray = resultArray.map(v => Utils.unescapeHTML(v));
        if (dontSort) return resultArray;
        const final = [];
        for (const j in indexes) {
          if (final[indexes[j]]) final[indexes[j]] += " " + resultArray[j];
          else final[indexes[j]] = resultArray[j];
        }
        return final;
      },

      async translate(text, toLang) {
        const to = this._fixLang(toLang);
        await GoogleHelper_v2.findAuth();
        if (!GoogleHelper_v2.translateAuth) throw new Error('No auth');
        const r = await gmFetch({
          method: 'POST',
          url: 'https://translate-pa.googleapis.com/v1/translateHtml',
          headers: { 'Content-Type': 'application/json+protobuf', 'X-Goog-Api-Key': GoogleHelper_v2.translateAuth },
          data: JSON.stringify([[[text], "auto", to], "te"]),
        });
        if (r.status !== 200) throw new Error('v2 error: ' + r.status);
        const data = JSON.parse(r.responseText);
        if (data && data[0]) {
          const raw = Array.isArray(data[0]) ? data[0][0] : data[0];
          const parsed = this._transformResponse(raw, false);
          return parsed[0] || raw;
        }
        throw new Error('v2 empty');
      },

      async translateBatch(texts, toLang) {
        const to = this._fixLang(toLang);
        await GoogleHelper_v2.findAuth();
        if (!GoogleHelper_v2.translateAuth) throw new Error('No auth');
        const r = await gmFetch({
          method: 'POST',
          url: 'https://translate-pa.googleapis.com/v1/translateHtml',
          headers: { 'Content-Type': 'application/json+protobuf', 'X-Goog-Api-Key': GoogleHelper_v2.translateAuth },
          data: JSON.stringify([[texts, "auto", to], "te"]),
        });
        if (r.status !== 200) throw new Error('v2 batch error: ' + r.status);
        const data = JSON.parse(r.responseText);
        if (data && data[0] && Array.isArray(data[0])) {
          return data[0].map(item => {
            const p = this._transformResponse(item, false);
            return p[0] || item;
          });
        }
        if (data && data[0]) {
          const p = this._transformResponse(Array.isArray(data[0]) ? data[0][0] : data[0], false);
          return [p[0]];
        }
        throw new Error('v2 batch empty');
      }
    },

    google_legacy: {
      name: 'Google (Legacy)',
      langCode(l) { return l; },
      async translate(text, toLang) {
        const to = toLang;
        const tk = GoogleHelper.calcHash(text);
        const r = await gmFetch({
          method: 'GET',
          url: 'https://translate.googleapis.com/translate_a/single?client=webapp&sl=auto&tl=' + to + '&hl=' + to + '&dt=t&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=at&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=7&tk=' + tk + '&q=' + encodeURIComponent(text),
        });
        if (r.status !== 200) return await this._gtx(text, to);
        const data = JSON.parse(r.responseText);
        return data[0].filter(s => s && s[0]).map(s => s[0]).join('');
      },
      async _gtx(text, to) {
        const r = await gmFetch({ method: 'GET', url: 'https://translate.googleapis.com/translate_a/single?client=gtx&dt=t&sl=auto&tl=' + to + '&q=' + encodeURIComponent(text) });
        if (r.status !== 200) throw new Error('gtx error');
        const data = JSON.parse(r.responseText);
        return data[0].filter(s => s && s[0]).map(s => s[0]).join('');
      }
    },

    google: {
      name: 'Google (Auto)',
      async translate(text, toLang) {
        try { return await Engine.google_v2.translate(text, toLang); }
        catch (e) { return await Engine.google_legacy.translate(text, toLang); }
      },
      async translateBatch(texts, toLang) {
        try { return await Engine.google_v2.translateBatch(texts, toLang); }
        catch (e) {
          const res = [];
          for (const t of texts) {
            try { res.push(await Engine.google_legacy.translate(t, toLang)); }
            catch (_) { res.push(null); }
          }
          return res;
        }
      }
    },

    microsoft: {
      name: 'Microsoft',
      _token: null, _tokenTime: 0,
      async getToken() {
        if (this._token && Date.now() - this._tokenTime < 480000) return this._token;
        const r = await gmFetch({ method: 'GET', url: 'https://edge.microsoft.com/translate/auth' });
        if (r.status !== 200) throw new Error('MS auth');
        this._token = r.responseText; this._tokenTime = Date.now();
        return this._token;
      },
      langCode(l) {
        const m = { 'zh': 'zh-Hans', 'zh-CN': 'zh-Hans', 'zh-TW': 'zh-Hant', 'no': 'nb', 'sr': 'sr-Cyrl', 'pt-PT': 'pt-pt', 'fr-CA': 'fr-ca' };
        return m[l] || l;
      },
      async translate(text, toLang) {
        const token = await this.getToken();
        const to = this.langCode(toLang);
        const r = await gmFetch({
          method: 'POST',
          url: 'https://api-edge.cognitive.microsofttranslator.com/translate?from=&to=' + to + '&api-version=3.0',
          headers: { 'authorization': 'Bearer ' + token, 'Content-Type': 'application/json' },
          data: JSON.stringify([{ Text: text }]),
        });
        if (r.status !== 200) throw new Error('MS error');
        return JSON.parse(r.responseText)[0].translations[0].text;
      },
      async translateBatch(texts, toLang) {
        const token = await this.getToken();
        const to = this.langCode(toLang);
        const results = [];
        for (let b = 0; b < texts.length; b += 25) {
          const chunk = texts.slice(b, b + 25);
          const r = await gmFetch({
            method: 'POST',
            url: 'https://api-edge.cognitive.microsofttranslator.com/translate?from=&to=' + to + '&api-version=3.0',
            headers: { 'authorization': 'Bearer ' + token, 'Content-Type': 'application/json' },
            data: JSON.stringify(chunk.map(t => ({ Text: t }))),
          });
          if (r.status === 200) {
            for (const item of JSON.parse(r.responseText)) results.push(item.translations[0].text);
          } else { for (let i = 0; i < chunk.length; i++) results.push(null); }
        }
        return results;
      }
    },

    tencent: {
      name: 'Tencent',
      _clientKey: null,
      getClientKey() {
        if (this._clientKey) return this._clientKey;
        this._clientKey = 'browser-chrome-120.0-Windows_10-' + crypto.randomUUID() + '-' + Date.now();
        return this._clientKey;
      },
      langCode(l) { const m = { 'zh': 'zh', 'zh-CN': 'zh', 'zh-TW': 'zh-TW' }; return m[l] || l; },
      async translate(text, toLang) {
        const to = this.langCode(toLang);
        const r = await gmFetch({
          method: 'POST', url: 'https://transmart.qq.com/api/imt',
          headers: { 'Content-Type': 'application/json' },
          data: JSON.stringify({ header: { fn: 'auto_translation', session: '', client_key: this.getClientKey(), user: '' }, type: 'plain', model_category: 'normal', text_domain: 'general', source: { lang: 'auto', text_list: [text] }, target: { lang: to } }),
        });
        if (r.status !== 200) throw new Error('Tencent error');
        return JSON.parse(r.responseText).auto_translation[0];
      },
      async translateBatch(texts, toLang) {
        const to = this.langCode(toLang);
        const r = await gmFetch({
          method: 'POST', url: 'https://transmart.qq.com/api/imt',
          headers: { 'Content-Type': 'application/json' },
          data: JSON.stringify({ header: { fn: 'auto_translation', session: '', client_key: this.getClientKey(), user: '' }, type: 'plain', model_category: 'normal', text_domain: 'general', source: { lang: 'auto', text_list: texts }, target: { lang: to } }),
        });
        if (r.status !== 200) throw new Error('Tencent batch error');
        return JSON.parse(r.responseText).auto_translation;
      }
    }
  };

  // ══════════════════════════════════════════════════════════
  // 缓存层(原封不动)
  // ══════════════════════════════════════════════════════════
  const cache = new Map();
  const MAX_CACHE = 3000;
  function cacheGet(t) { return cache.get(t); }
  function cacheSet(t, v) { if (cache.size >= MAX_CACHE) cache.delete(cache.keys().next().value); cache.set(t, v); }

  // ══════════════════════════════════════════════════════════
  // 翻译核心(原封不动)
  // ══════════════════════════════════════════════════════════
  async function translate(text) {
    if (!text || !text.trim()) return null;
    const trimmed = text.trim();
    if (/^\d+$/.test(trimmed)) return null;
    const cached = cacheGet(trimmed);
    if (cached) return cached;
    try {
      const result = await Engine[currentEngine].translate(trimmed, targetLang);
      if (result && result !== trimmed) { cacheSet(trimmed, result); return result; }
    } catch (e) {
      const fallbackEngine = currentEngine === 'google' ? 'microsoft' : 'google_legacy';
      try {
        const result = await Engine[fallbackEngine].translate(trimmed, targetLang);
        if (result && result !== trimmed) { cacheSet(trimmed, result); return result; }
      } catch (_) {}
    }
    return null;
  }

  // ══════════════════════════════════════════════════════════
  // 批量翻译(原封不动)
  // ══════════════════════════════════════════════════════════
  async function batchTranslate(texts) {
    const results = new Array(texts.length).fill(null);
    const uncached = [], uncachedIdx = [];
    for (let i = 0; i < texts.length; i++) {
      const t = texts[i].trim();
      if (!t || /^\d+$/.test(t)) continue;
      const c = cacheGet(t);
      if (c) { results[i] = c; continue; }
      uncached.push(t);
      uncachedIdx.push(i);
    }
    if (uncached.length === 0) return results;

    const engine = Engine[currentEngine];
    if (engine.translateBatch && uncached.length > 1) {
      try {
        const BATCH_SIZE = currentEngine === 'microsoft' ? 25 : 50;
        const chunks = [];
        for (let b = 0; b < uncached.length; b += BATCH_SIZE) {
          chunks.push({ texts: uncached.slice(b, b + BATCH_SIZE), idxs: uncachedIdx.slice(b, b + BATCH_SIZE) });
        }
        await Promise.all(chunks.map(async ({ texts: chunk, idxs }) => {
          try {
            const batchResults = await engine.translateBatch(chunk, targetLang);
            if (batchResults) {
              for (let j = 0; j < batchResults.length; j++) {
                if (batchResults[j] && batchResults[j] !== chunk[j]) {
                  cacheSet(chunk[j], batchResults[j]);
                  results[idxs[j]] = batchResults[j];
                }
              }
            }
          } catch (_) {}
        }));
        return results;
      } catch (e) { /* fallthrough */ }
    }

    const CONCURRENCY = 8;
    for (let i = 0; i < uncached.length; i += CONCURRENCY) {
      const batch = uncached.slice(i, i + CONCURRENCY);
      const batchIdx = uncachedIdx.slice(i, i + CONCURRENCY);
      await Promise.allSettled(batch.map(async (text, j) => {
        const r = await translate(text);
        if (r) results[batchIdx[j]] = r;
      }));
    }
    return results;
  }

  // ══════════════════════════════════════════════════════════
  // DOM遍历(原封不动,只加了 tu-bi 跳过)
  // ══════════════════════════════════════════════════════════
  const SKIP_TAGS = /^(script|style|code|pre|svg|math|noscript|iframe|canvas|video|audio|img|br|hr|input|select|option|textarea)$/i;
  const SKIP_CLASS = /translate-ui|notranslate|katex|mathjax/i;

  function shouldSkip(node) {
    if (!node) return true;
    if (node.nodeType === Node.ELEMENT_NODE) {
      if (SKIP_TAGS.test(node.tagName)) return true;
      if (SKIP_CLASS.test(node.className)) return true;
      if (node.isContentEditable) return true;
      if (node.dataset && node.dataset.translated) return true;
      if (node.classList && node.classList.contains('tu-bi')) return true;
    }
    return false;
  }

  const _langRegex = {};
  function getLangRegex(lang) {
    if (_langRegex[lang]) return _langRegex[lang];
    const patterns = {
      'zh': /^[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff\s\d\p{P}]+$/u,
      'en': /^[a-zA-Z\s\d\p{P}]+$/u,
      'ja': /^[\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\s\d\p{P}]+$/u,
      'ko': /^[\uac00-\ud7af\u1100-\u11ff\s\d\p{P}]+$/u,
      'ar': /^[\u0600-\u06ff\u0750-\u077f\s\d\p{P}]+$/u,
      'th': /^[\u0e00-\u0e7f\s\d\p{P}]+$/u,
      'ru': /^[\u0400-\u04ff\s\d\p{P}]+$/u,
    };
    _langRegex[lang] = patterns[lang] || null;
    return _langRegex[lang];
  }

  function isTargetLang(text) {
    if (!text || !text.trim()) return true;
    const lang = targetLang.split('-')[0];
    const re = getLangRegex(lang);
    return re ? re.test(text.trim()) : false;
  }

  function collectTextNodes(root) {
    const nodes = [];
    const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
      acceptNode(node) {
        if (shouldSkip(node.parentElement)) return NodeFilter.FILTER_REJECT;
        const text = node.textContent.trim();
        if (!text || text.length < 2 || /^\d+$/.test(text)) return NodeFilter.FILTER_REJECT;
        if (isTargetLang(text)) return NodeFilter.FILTER_REJECT;
        if (node.parentElement?.dataset?.translated) return NodeFilter.FILTER_REJECT;
        return NodeFilter.FILTER_ACCEPT;
      }
    });
    while (walker.nextNode()) nodes.push(walker.currentNode);
    return nodes;
  }

  function collectPlaceholders(root) {
    return [...root.querySelectorAll('input[placeholder], textarea[placeholder]')]
      .filter(el => !el.dataset.translated && el.placeholder.trim() && !isTargetLang(el.placeholder));
  }

  // ══════════════════════════════════════════════════════════
  // 翻译执行 — 这里是唯一改动点
  // 原版: node.textContent = results[i]
  // 新增: 双语模式多追加一个span,原文不动
  // ══════════════════════════════════════════════════════════
  let isTranslating = false;
  let pendingRoot = null;

  async function translatePage(root) {
    if (isTranslating) {
      pendingRoot = root || document.body;
      return;
    }
    isTranslating = true;

    try {
      root = root || document.body;

      do {
        pendingRoot = null;
        const textNodes = collectTextNodes(root);
        const placeholders = collectPlaceholders(root);

        if (textNodes.length === 0 && placeholders.length === 0) break;

        const allTexts = [];
        const allMeta = [];

        for (let i = 0; i < textNodes.length; i++) {
          allTexts.push(textNodes[i].textContent.trim());
          allMeta.push({ type: 'text', node: textNodes[i] });
        }
        for (let i = 0; i < placeholders.length; i++) {
          allTexts.push(placeholders[i].placeholder.trim());
          allMeta.push({ type: 'ph', el: placeholders[i] });
        }

        const results = await batchTranslate(allTexts);

        for (let i = 0; i < allMeta.length; i++) {
          if (!results[i]) continue;
          const meta = allMeta[i];
          if (meta.type === 'text') {
            const parent = meta.node.parentElement;
            if (!parent) continue;
            if (!parent.dataset.originalText) parent.dataset.originalText = meta.node.textContent;
            parent.dataset.translated = '1';

            // ★ 这就是唯一的改动 ★
            if (displayMode === 'bilingual') {
              // 双语:原文保留,追加译文span
              const s = document.createElement('span');
              s.className = 'tu-bi';
              s.textContent = results[i];
              if (meta.node.nextSibling) {
                parent.insertBefore(s, meta.node.nextSibling);
              } else {
                parent.appendChild(s);
              }
            } else {
              // 仅译文:原版行为
              meta.node.textContent = results[i];
            }
          } else {
            meta.el.dataset.originalPlaceholder = meta.el.placeholder;
            meta.el.placeholder = results[i];
            meta.el.dataset.translated = '1';
          }
        }

        if (pendingRoot) { root = pendingRoot; }
      } while (pendingRoot);

    } finally {
      isTranslating = false;
    }
  }

  function restorePage() {
    // 移除双语span
    document.querySelectorAll('.tu-bi').forEach(el => el.remove());
    // 恢复原文
    document.querySelectorAll('[data-translated]').forEach(el => {
      if (el.dataset.originalText) {
        for (const child of el.childNodes) {
          if (child.nodeType === Node.TEXT_NODE) { child.textContent = el.dataset.originalText; break; }
        }
        delete el.dataset.originalText;
      }
      if (el.dataset.originalPlaceholder) {
        el.placeholder = el.dataset.originalPlaceholder;
        delete el.dataset.originalPlaceholder;
      }
      delete el.dataset.translated;
    });
  }

  // ══════════════════════════════════════════════════════════
  // 动态内容监听(原封不动)
  // ══════════════════════════════════════════════════════════
  let lastHeight = 0;

  function onScroll() {
    const h = document.documentElement.scrollHeight;
    if (h > lastHeight) {
      lastHeight = h;
      if (autoMode) translatePage();
    }
  }

  let mutationRafId = null;
  const pendingMutationRoots = new Set();

  const observer = new MutationObserver((mutations) => {
    if (!autoMode) return;
    for (const m of mutations) {
      for (const node of m.addedNodes) {
        if (node.nodeType === Node.ELEMENT_NODE && !shouldSkip(node)) {
          pendingMutationRoots.add(node);
        }
      }
    }
    if (pendingMutationRoots.size > 0 && !mutationRafId) {
      mutationRafId = setTimeout(() => {
        mutationRafId = null;
        const roots = [...pendingMutationRoots];
        pendingMutationRoots.clear();
        if (roots.length > 5) {
          translatePage(document.body);
        } else {
          roots.forEach(r => translatePage(r));
        }
      }, 200);
    }
  });

  // ══════════════════════════════════════════════════════════
  // UI
  // ══════════════════════════════════════════════════════════

  function buildLangOptions() {
    let html = '';
    for (const [group, codes] of Object.entries(LANG_GROUPS)) {
      html += '';
      for (const code of codes) {
        const name = ALL_LANGUAGES[code] || code;
        html += '';
      }
      html += '';
    }
    return html;
  }

  function isPageInTargetLang() {
    const lang = (document.documentElement.lang || '').split('-')[0].toLowerCase();
    const target = targetLang.split('-')[0].toLowerCase();
    return lang === target;
  }

  function initWhenBodyReady() {
    if (document.body) {
      init();
    } else {
      requestAnimationFrame(initWhenBodyReady);
    }
  }

  let _initialized = false;
  async function init() {
    if (_initialized) return;
    _initialized = true;

    lastHeight = document.documentElement.scrollHeight;

    // 注入CSS
    GM_addStyle(
      '.translate-ui{position:fixed;bottom:20px;right:20px;z-index:999999;font-family:system-ui,-apple-system,sans-serif}' +
      '.translate-ui *{box-sizing:border-box;margin:0;padding:0}' +
      '.tu-btn{width:42px;height:42px;border-radius:50%;border:none;background:rgba(0,0,0,0.5);color:#fff;cursor:pointer;' +
        'display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);' +
        'box-shadow:0 2px 8px rgba(0,0,0,0.15);transition:transform .2s,background .2s;touch-action:manipulation}' +
      '.tu-btn:active{transform:scale(0.9)}' +
      '.tu-btn.active{background:rgba(34,128,255,0.8)}' +
      '.tu-panel{position:absolute;bottom:52px;right:0;width:240px;max-height:80vh;overflow-y:auto;' +
        'background:rgba(255,255,255,0.97);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);' +
        'border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,0.12);padding:12px;display:none;color:#333;font-size:13px}' +
      '.tu-panel.show{display:block}' +
      '.tu-panel label{display:block;margin:8px 0 4px;font-size:11px;color:#888;text-transform:uppercase;letter-spacing:.5px}' +
      '.tu-panel select{width:100%;padding:6px 8px;border:1px solid #ddd;border-radius:6px;font-size:12px;' +
        'background:#fff;color:#333;outline:none;appearance:auto}' +
      '.tu-panel select:focus{border-color:#4a9eff}' +
      '.tu-panel optgroup{font-weight:bold;color:#666;font-size:11px}' +
      '.tu-panel option{font-weight:normal;color:#333;font-size:12px}' +
      '.tu-status{margin-top:8px;padding:6px;background:#f8f8f8;border-radius:6px;font-size:11px;color:#666;text-align:center}' +
      '.tu-modes{display:flex;margin-top:6px;background:#f0f0f0;border-radius:8px;padding:2px;gap:2px}' +
      '.tu-modes button{flex:1;padding:6px 0;border:none;border-radius:6px;font-size:11px;cursor:pointer;' +
        'background:transparent;color:#999;transition:all .15s;font-weight:500;touch-action:manipulation}' +
      '.tu-modes button.on{background:#fff;color:#333;box-shadow:0 1px 3px rgba(0,0,0,0.1)}' +
      '.tu-row{display:flex;gap:6px;margin-top:10px}' +
      '.tu-row button{flex:1;padding:7px 0;border:none;border-radius:6px;font-size:12px;cursor:pointer;' +
        'transition:background .2s;touch-action:manipulation}' +
      '.tu-row .tu-restore{background:#f0f0f0;color:#555}' +
      '.tu-row .tu-restore:active{background:#ddd}' +
      '.tu-row .tu-go{background:#4a9eff;color:#fff}' +
      '.tu-row .tu-go:active{background:#3080dd}' +
      '.tu-row .tu-exclude{background:#ff6b6b;color:#fff;font-size:11px}' +
      '.tu-row .tu-exclude:active{background:#e55}' +
      // 双语span样式
      '.tu-bi{display:block;margin-top:2px;font-size:.9em;line-height:1.5;color:#5a8fb4;' +
        'border-left:2px solid rgba(74,158,255,0.3);padding-left:8px}' +
      // 行内元素内的双语span改为行内显示
      'a .tu-bi,span .tu-bi,em .tu-bi,strong .tu-bi,b .tu-bi,i .tu-bi,label .tu-bi,' +
        'small .tu-bi,sub .tu-bi,sup .tu-bi,u .tu-bi{display:inline;border-left:none;' +
        'padding-left:0;margin-top:0;margin-left:4px;font-size:.88em}' +
      'a .tu-bi::before,span .tu-bi::before,em .tu-bi::before,strong .tu-bi::before,' +
        'b .tu-bi::before,i .tu-bi::before,label .tu-bi::before,small .tu-bi::before,' +
        'sub .tu-bi::before,sup .tu-bi::before,u .tu-bi::before{content:"(";color:#9ab}' +
      'a .tu-bi::after,span .tu-bi::after,em .tu-bi::after,strong .tu-bi::after,' +
        'b .tu-bi::after,i .tu-bi::after,label .tu-bi::after,small .tu-bi::after,' +
        'sub .tu-bi::after,sup .tu-bi::after,u .tu-bi::after{content:")";color:#9ab}' +
      '@media(prefers-color-scheme:dark){' +
        '.tu-panel{background:rgba(30,30,30,0.97);color:#eee}' +
        '.tu-panel select{background:#2a2a2a;color:#eee;border-color:#444}' +
        '.tu-panel optgroup{color:#aaa}' +
        '.tu-panel option{color:#eee}' +
        '.tu-row .tu-restore{background:#333;color:#ccc}' +
        '.tu-status{background:#222;color:#999}' +
        '.tu-modes{background:#333}' +
        '.tu-modes button{color:#777}' +
        '.tu-modes button.on{background:#444;color:#eee;box-shadow:0 1px 3px rgba(0,0,0,0.3)}' +
        '.tu-bi{color:#7babc8;border-left-color:rgba(100,160,220,0.25)}' +
        'a .tu-bi::before,span .tu-bi::before,em .tu-bi::before,strong .tu-bi::before,' +
          'b .tu-bi::before,i .tu-bi::before,a .tu-bi::after,span .tu-bi::after,' +
          'em .tu-bi::after,strong .tu-bi::after,b .tu-bi::after,i .tu-bi::after{color:#5a7a96}' +
      '}'
    );

    // 注入UI
    const ui = document.createElement('div');
    ui.className = 'translate-ui';
    ui.innerHTML =
      '
' + '' + '' + '' + '' + '' + '
' + '' + '' + '' + '
' + '
Ready
' + '
' + '' + '' + '
' + '
' + '' + '
' + '
' + ''; document.body.appendChild(ui); const btn = document.getElementById('tuBtn'); const panel = document.getElementById('tuPanel'); const engineSelect = document.getElementById('tuEngine'); const langSelect = document.getElementById('tuLang'); const statusEl = document.getElementById('tuStatus'); const modesEl = document.getElementById('tuModes'); engineSelect.value = currentEngine; langSelect.value = targetLang; function setStatus(msg) { if (statusEl) statusEl.textContent = msg; } btn.addEventListener('click', function(e) { e.stopPropagation(); panel.classList.toggle('show'); }); document.addEventListener('click', function(e) { if (!ui.contains(e.target)) panel.classList.remove('show'); }); engineSelect.addEventListener('change', function() { currentEngine = engineSelect.value; GM_setValue('engine', currentEngine); cache.clear(); setStatus('Engine: ' + (Engine[currentEngine] ? Engine[currentEngine].name : currentEngine)); }); langSelect.addEventListener('change', function() { targetLang = langSelect.value; GM_setValue('targetLang', targetLang); cache.clear(); setStatus('Target: ' + (ALL_LANGUAGES[targetLang] || targetLang)); }); // ★ 模式切换 — 走缓存瞬间重渲染,不发网络请求 modesEl.addEventListener('click', async function(e) { var b = e.target.closest('button[data-m]'); if (!b) return; var m = b.dataset.m; if (m === displayMode) return; modesEl.querySelectorAll('button').forEach(function(x) { x.classList.remove('on'); }); b.classList.add('on'); displayMode = m; GM_setValue('displayMode', m); if (m === 'original') { restorePage(); btn.classList.remove('active'); setStatus('显示原文'); } else { // 先还原,再用新模式重新渲染(走缓存,秒完成) restorePage(); btn.classList.add('active'); setStatus(m === 'bilingual' ? '双语翻译中...' : '翻译中...'); var start = performance.now(); await translatePage(); setStatus('完成 (' + ((performance.now() - start) / 1000).toFixed(1) + 's)'); } }); document.getElementById('tuGo').addEventListener('click', async function() { panel.classList.remove('show'); btn.classList.add('active'); autoMode = true; GM_setValue('autoMode', true); restorePage(); cache.clear(); lastHeight = document.documentElement.scrollHeight; setStatus('翻译中...'); var start = performance.now(); await translatePage(); setStatus('完成 (' + ((performance.now() - start) / 1000).toFixed(1) + 's)'); }); document.getElementById('tuRestore').addEventListener('click', function() { panel.classList.remove('show'); btn.classList.remove('active'); autoMode = false; GM_setValue('autoMode', false); restorePage(); setStatus('已还原'); }); document.getElementById('tuExclude').addEventListener('click', function() { if (!excludedHosts.includes(location.host)) { excludedHosts.push(location.host); GM_setValue('excludedHosts', JSON.stringify(excludedHosts)); } restorePage(); ui.remove(); observer.disconnect(); window.removeEventListener('scroll', onScroll); }); // 菜单 GM_registerMenuCommand('翻译当前页面', function() { translatePage(); }); GM_registerMenuCommand('还原当前页面', function() { restorePage(); }); GM_registerMenuCommand('切换Google引擎', function() { currentEngine = 'google'; engineSelect.value = 'google'; GM_setValue('engine', 'google'); cache.clear(); }); GM_registerMenuCommand('切换Microsoft引擎', function() { currentEngine = 'microsoft'; engineSelect.value = 'microsoft'; GM_setValue('engine', 'microsoft'); cache.clear(); }); GM_registerMenuCommand('切换双语/仅译文', function() { var m = displayMode === 'bilingual' ? 'translated' : 'bilingual'; displayMode = m; GM_setValue('displayMode', m); modesEl.querySelectorAll('button').forEach(function(b) { b.classList.toggle('on', b.dataset.m === m); }); restorePage(); translatePage(); }); // 启动监听 window.addEventListener('scroll', onScroll, { passive: true }); observer.observe(document.body, { childList: true, subtree: true }); // 自动翻译 if (autoMode && !isPageInTargetLang() && displayMode !== 'original') { queueMicrotask(async function() { setStatus(displayMode === 'bilingual' ? '双语翻译中...' : '自动翻译中...'); var start = performance.now(); await translatePage(); setStatus('完成 (' + ((performance.now() - start) / 1000).toFixed(1) + 's)'); }); } } initWhenBodyReady(); })();