Google Translate Auto Language Enhanced

Automatically set the target language to English based on detected source language changes and auto-trigger translation if page language differs from browser language.

  1. // ==UserScript==
  2. // @name Google Translate Auto Language Enhanced
  3. // @namespace https://greasyfork.org/en/users/1030895-universedev
  4. // @version 2.5
  5. // @author UniverseDev
  6. // @license GPL-3.0-or-later
  7. // @description Automatically set the target language to English based on detected source language changes and auto-trigger translation if page language differs from browser language.
  8. // @match *://translate.google.*/*
  9. // @noframes
  10. // ==/UserScript==
  11.  
  12. "use strict";
  13.  
  14. const targetLang = "en";
  15. const browserLang = navigator.language.split('-')[0];
  16.  
  17. function setTargetLanguage() {
  18. const selector = `[data-language-code="${targetLang}"]`;
  19. const targetTab = document.querySelector(selector);
  20. if (targetTab && targetTab.getAttribute("aria-selected") !== "true") {
  21. targetTab.click();
  22. }
  23. }
  24.  
  25. function observeSourceLanguage() {
  26. const sourceLangTab = document.querySelector("[role=tablist] [aria-selected='true']");
  27. if (sourceLangTab) {
  28. const observer = new MutationObserver(() => {
  29. setTargetLanguage();
  30. });
  31. observer.observe(sourceLangTab, { characterData: true, subtree: true });
  32. }
  33. }
  34.  
  35. function detectPageLanguage() {
  36. const pageLang = document.documentElement.lang || document.querySelector("html").getAttribute("lang");
  37. if (pageLang && pageLang !== browserLang) {
  38. console.log(`Detected page language (${pageLang}) differs from browser language (${browserLang}). Triggering translation.`);
  39. setTargetLanguage();
  40. }
  41. }
  42.  
  43. function init() {
  44. setTargetLanguage();
  45. observeSourceLanguage();
  46. detectPageLanguage();
  47. }
  48.  
  49. window.addEventListener("load", init);