about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-02 19:13:44 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-02 19:13:44 +0300
commit84333daedea4215a0d6b51cfce0f057e86b5477f (patch)
tree21a871ab9566fa1fb2be2dc89f90c95714bea3b0
parentMerge branch 'master' of https://github.com/libredirect/LibRedirect (diff)
downloadlibredirect-84333daedea4215a0d6b51cfce0f057e86b5477f.zip
Added Lingva #16
-rw-r--r--src/assets/javascripts/helpers/google-translate.js82
-rw-r--r--src/pages/background/background.js12
-rw-r--r--src/pages/options/translate.html9
-rw-r--r--src/pages/options/translate.js9
4 files changed, 88 insertions, 24 deletions
diff --git a/src/assets/javascripts/helpers/google-translate.js b/src/assets/javascripts/helpers/google-translate.js
index 025a2446..b9a783ff 100644
--- a/src/assets/javascripts/helpers/google-translate.js
+++ b/src/assets/javascripts/helpers/google-translate.js
@@ -1,19 +1,34 @@
+import commonHelper from './common.js'
+
 const targets = [
   "translate.google.com",
   "translate.google.no"
 ];
 
 const redirects = {
-  "normal": [
-    "https://translate.metalune.xyz",
-    "https://simplytranslate.org",
-    "https://st.alefvanoon.xyz",
-    "https://translate.josias.dev",
-    "https://translate.namazso.eu",
-    "https://translate.riverside.rocks",
-    "https://manerakai.asuscomm.com:447",
-    "https://translate.bus-hit.me"
-  ]
+  "simplyTranslate": {
+    "normal": [
+      "https://simplytranslate.org",
+      "https://st.alefvanoon.xyz",
+      "https://translate.josias.dev",
+      "https://translate.namazso.eu",
+      "https://translate.riverside.rocks",
+      "https://manerakai.asuscomm.com:447",
+      "https://translate.bus-hit.me",
+      "https://simplytranslate.pussthecat.org",
+    ]
+  },
+
+  "lingva": {
+    "normal": [
+      "https://lingva.ml",
+      "https://translate.alefvanoon.xyz",
+      "https://translate.igna.rocks",
+      "https://lingva.pussthecat.org",
+      "https://translate.datatunnel.xyz",
+    ]
+  }
+
 };
 
 let disableSimplyTranslate;
@@ -31,20 +46,53 @@ function setSimplyTranslateInstance(val) {
   browser.storage.sync.set({ simplyTranslateInstance })
 };
 
+let translateFrontend;
+const getFrontend = () => translateFrontend;
+function setFrontend(val) {
+  translateFrontend = val;
+  browser.storage.sync.set({ translateFrontend })
+  console.log("Translate frontend: ", frontend)
+}
+
 async function redirect(url, initiator) {
   await init()
-  if (disableSimplyTranslate)
-    return null;
-  return `${simplyTranslateInstance}/${url.search}`;
+  if (disableSimplyTranslate) {
+    console.log("SImplyTranslte disabled")
+    return null
+  };
+
+  let link;
+  if (translateFrontend == 'simplyTransalte') {
+    link = commonHelper.getRandomInstance(redirects.simplyTranslate.normal);
+    console.log(`${link}/${url.search}`);
+    return `${link}/${url.search}`;
+  }
+  else if (translateFrontend == 'lingva') {
+    let params_arr = url.search.split('&');
+    params_arr[0] = params_arr[0].substring(1);
+    let myMap = new Map();
+    for (let i = 0; i < params_arr.length; i++) {
+      let pair = params_arr[i].split('=');
+      myMap.set(pair[0], pair[1]);
+    }
+    link = commonHelper.getRandomInstance(redirects.lingva.normal);
+    if (myMap.get("sl") && myMap.get("tl") && myMap.get("text"))
+      return `${link}/${myMap.get("sl")}/${myMap.get("tl")}/${myMap.get("text")}`;
+    else
+      return link;
+  }
 }
 
+
 async function init() {
   let result = await browser.storage.sync.get([
     "disableSimplyTranslate",
     "simplyTranslateInstance",
+    "translateFrontend"
   ]);
   disableSimplyTranslate = result.disableSimplyTranslate || false;
   simplyTranslateInstance = result.simplyTranslateInstance;
+  translateFrontend = result.translateFrontend || "simplyTransalte";
 }
 
 export default {
@@ -54,12 +102,8 @@ export default {
   setDisableSimplyTranslate,
   getSimplyTranslateInstance,
   setSimplyTranslateInstance,
+  getFrontend,
+  setFrontend,
   redirect,
   init,
 };
-
-
-
-
-
-
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 05403a88..07335468 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -58,9 +58,11 @@ browser.webRequest.onBeforeRequest.addListener(
 
     else if (mediumHelper.targets.some((rx) => rx.test(url.host))) newUrl = await mediumHelper.redirect(url, initiator);
 
+    else if (googleTranslateHelper.targets.includes(url.host)) newUrl = await googleTranslateHelper.redirect(url, initiator);
+
+
     else if (searchHelper.targets.some((rx) => rx.test(url.href))) newUrl = await searchHelper.redirect(url, initiator)
 
-    else if (googleTranslateHelper.targets.includes(url.host)) newUrl = await googleTranslateHelper.redirect(url, initiator);
 
     else if (url.host.match(wikipediaHelper.targets)) newUrl = await wikipediaHelper.redirect(url, initiator);
 
@@ -93,7 +95,8 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => {
     redditHelper.redirects.mobile,
     ...searchHelper.redirects.searx.normal,
     ...searchHelper.redirects.whoogle.normal,
-    ...googleTranslateHelper.redirects.normal,
+    ...googleTranslateHelper.redirects.simplyTranslate.normal,
+    ...googleTranslateHelper.redirects.lingva.normal,
     ...mediumHelper.redirects.normal,
     ...wikipediaHelper.redirects.normal
   );
@@ -127,7 +130,10 @@ browser.pageAction.onClicked.addListener((tab) => {
     searchHelper.redirects.whoogle.normal.includes(protocolHost)
   ) newUrl = 'https://google.com';
 
-  if (googleTranslateHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://translate.google.com';
+  if (
+    googleTranslateHelper.redirects.simplyTranslate.normal.includes(protocolHost) ||
+    googleTranslateHelper.redirects.lingva.normal.includes(protocolHost)
+  ) newUrl = 'https://translate.google.com';
 
   if (mediumHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://medium.com';
 
diff --git a/src/pages/options/translate.html b/src/pages/options/translate.html
index 7e727c33..b193130a 100644
--- a/src/pages/options/translate.html
+++ b/src/pages/options/translate.html
@@ -33,8 +33,15 @@
                 <input id="simplyTranslate-instance" type="url" placeholder="https://translate.metalune.xyz" />
             </div>
         </div> -->
-    </section>
 
+        <div class="some-block option-block">
+            <h4>Frontend</h4>
+            <select id="translate-frontend">
+                <option value="simplyTransalte">SimplyTransalte</option>
+                <option value="lingva">Lingva</option>
+            </select>
+        </div>
+    </section>
 
     <script type="module" src="./init.js"></script>
     <script type="module" src="./translate.js"></script>
diff --git a/src/pages/options/translate.js b/src/pages/options/translate.js
index c6182fc2..639b87b7 100644
--- a/src/pages/options/translate.js
+++ b/src/pages/options/translate.js
@@ -1,11 +1,18 @@
 import googleTranslateHelper from "../../assets/javascripts/helpers/google-translate.js";
 
 let disableSimplyTranslateElement = document.getElementById("disable-simplyTranslate");
+let translateFrontendElement = document.getElementById("translate-frontend");
+
 
 googleTranslateHelper.init().then(() => {
     disableSimplyTranslateElement.checked = !googleTranslateHelper.getDisableSimplyTranslate();
+    translateFrontendElement.value = googleTranslateHelper.getFrontend();
 });
 
 disableSimplyTranslateElement.addEventListener("change",
     (event) => googleTranslateHelper.setDisableSimplyTranslate(!event.target.checked)
-);
\ No newline at end of file
+);
+
+translateFrontendElement.addEventListener("change",
+    (event) => googleTranslateHelper.setFrontend(event.target.options[translateFrontendElement.selectedIndex].value)
+);