google translate element

Google Translate Elementを自動的にページに挿入する。ページを移動したり新しいタブを開いたりすることなくページ全体を翻訳する。ソースコードを編集して変数"includedlanguages"と"ignorelanguages"を適切に設定するとより便利に使える。

  1. // ==UserScript==
  2. // @name google translate element
  3. // @version 1
  4. // @grant none
  5. // @include http://*
  6. // @include https://*
  7. // @include file://*
  8. // @author zupffwhy
  9. // @homepageURL https://addons.mozilla.org/firefox/user/12942033/
  10. // @description:ja Google Translate Elementを自動的にページに挿入する。ページを移動したり新しいタブを開いたりすることなくページ全体を翻訳する。ソースコードを編集して変数"includedlanguages"と"ignorelanguages"を適切に設定するとより便利に使える。
  11. // @description:en Automatically inserts Google Translate Element into the page. Translate the entire page without leaving page or opening a new tab. You can use it more conveniently by editing the source code and setting the variables "includedlanguages" and "ignorelanguages" appropriately.
  12. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADm0lEQVRYha3XS2idRRTA8V9yU7H4IKLWF6IIPkAXanxg1YW4UxGkUFAs1bY0ira40IUFN1oQmxal4kLQhVALKojahVvxsRDpRlJrq0UXRUFrfTRqk5s0Ls4Z7tyv98YkzQeH72bOzPn+M+c1gdX4CW1M5XshMpXyJk7DoAU+RzB7inIi3/ekzaGFABQD7+IxPIVNlWzAQ1jTGN+MJ/AsJjCD0cUATCXEhj76C3EvVvbRL8fRtLFuMQDtXPwkhnEbRnArbsCu1P9R6W7CLbgSF6duFutPBWAN7hNHWU5lJvWTOXYipZ26j3EO/lwKgIfxgE5MlMDqJdP5/mQpAR7H+cLfW3L8LdyF+3E3XqnAduBGXITflwJgczW2NccOCx8TwbYvAX7Mv6V+SQA2YSAXjwi/z+IgrhX+Li5YlWtbIktqgAEsy/dc0hOAqGZEVpQP/l39fq36OFxQAZQ0nE81bBWQJsDplfFXRbQfz3lfVwaW504vrQA2ihMsun7SquycBFB2MIrvdEf/BD7ER8I1+/F9Qs7i5xw7gG/nkHG8JE+7GYRr8ZXulBvD3gbMUsjGGmAt7mxM+Ax3JNjZSX1MFKWZSuqmNKNTR6Yb84pMpe7lGmCdSKlxfC5yv9fzjU6V7NcV2330zUK2rQbYgjNxGc4VZflqnIcVokhdInzfC6AYfQHX4Dp8UZ1Er7ljKmPH8FtKKa3HRaerpWms3vmEqAvlWd/4YE+AN/oc01xH2JR2QrzfcNcKnRSte0sXAHGTGRVx8LzuYPoAj4qIHRWp1jRYYFeJ4nKz6BGwW6eD9gWonyt0++2Zhn5f46PlfVhkCuwRWTUggrl5oicBtERRKH1gupr0XM4ZTP3+hsGys505bxj/iosMnIEfGmt6nkCp39enslxKtubOhkXvP9AwVnJ+Ze74kRw/IvoEbG/A9nXBoKjju6oFE/gFv6bUEV0g9uo0l8tF8bodZ+XYiJMLVE+A0iYH8XaDtl/0z+LpXLdMp5m18nex+2Vlb84gHEiAGmIumcRVIj4eFDXkKP7CIeGGIRHMBXpOgAJRQLaJ/xnewXtpuN797mrdnh6Aq1M3rHN9L2v7AhSIXs94w8inIgNeFxeXUkOm8/d46nfq1JB5ARSIIeHbIeHTZhouRgrc/wLUIERgHdTdUqdEHEzqBFgt7YZ+Rue+uX2+AOXjxJ1gsTuv5R9x/5j3UwKzJf6P3CECdGwR8qK86PwHULYqSMjoGJwAAAAASUVORK5CYII=
  13. // @namespace https://greasyfork.org/users/417745
  14. // @description Google Translate Elementを自動的にページに挿入する。ページを移動したり新しいタブを開いたりすることなくページ全体を翻訳する。ソースコードを編集して変数"includedlanguages"と"ignorelanguages"を適切に設定するとより便利に使える。
  15. // ==/UserScript==
  16.  
  17. // Specify a list of languages to translate to.
  18. // If the string is empty, all languages, supported by Google Translate Element are displayed.
  19. // Describe language codes separated by commas. Must not contain whitespace.
  20. // The following URL is not a description of Google Translate Element, but many languages in Google Translate Element will be the same language code.
  21. // https://cloud.google.com/translate/docs/languages
  22. // let includedlanguages = "en,ja,zh-CN"; // Specify only English, Japanese, German, and Chinese (mandarin) as the target languages.
  23. let includedlanguages = "";
  24.  
  25. // Specify a language (your native language) that is not automatically translated.
  26. // let ignorelanguages = ["ja", "en"]; // Do not translate pages written in Japanese or English.
  27. // let ignorelanguages = navigator.languages; // See https://developer.mozilla.org/docs/Web/API/NavigatorLanguage/languages
  28. let ignorelanguages = [navigator.language]; // See https://developer.mozilla.org/docs/Web/API/NavigatorLanguage/language
  29.  
  30. // References
  31. // How TO - Google Translate https://www.w3schools.com/howto/howto_google_translate.asp
  32. // List of ISO 639-1 codes https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
  33. // ISO 3166-1 https://en.wikipedia.org/wiki/ISO_3166-1
  34.  
  35.  
  36. // Code
  37. function modify_page(pagelanguage, includedlanguages) {
  38. if (document.querySelector("#google_translate_element")) {
  39. return false;
  40. }
  41. let url = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
  42. let loc = new URL(window.location);
  43. if (loc.protocol != "http:" && loc.protocol != "https:") {
  44. url = "https:" + url;
  45. }
  46. let s = `function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: "${pagelanguage}", includedLanguages: "${includedlanguages}", layout: google.translate.TranslateElement.InlineLayout.SIMPLE, multilanguagePage: true,}, "google_translate_element" );}`;
  47.  
  48. let elem = document.createElement("script");
  49. elem.setAttribute("id", "google_translate_element");
  50. elem.appendChild(document.createTextNode(s));
  51. document.body.appendChild(elem);
  52. elem = document.createElement("script");
  53. elem.setAttribute("src", url);
  54. document.body.appendChild(elem);
  55. }
  56.  
  57. chrome.i18n.detectLanguage(document.body.innerText).then(langs => {
  58. //if (ignorelanguages.length === 0) {
  59. // ignorelanguages = navigator.languages;
  60. //}
  61. if (langs.languages.length === 0 || ignorelanguages.indexOf(langs.languages[0].language) < 0) {
  62. modify_page("", includedlanguages);
  63. }
  64. });