diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-02-02 19:13:44 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-02-02 19:13:44 +0300 |
commit | 84333daedea4215a0d6b51cfce0f057e86b5477f (patch) | |
tree | 21a871ab9566fa1fb2be2dc89f90c95714bea3b0 | |
parent | Merge branch 'master' of https://github.com/libredirect/LibRedirect (diff) | |
download | libredirect-84333daedea4215a0d6b51cfce0f057e86b5477f.zip |
Added Lingva #16
-rw-r--r-- | src/assets/javascripts/helpers/google-translate.js | 82 | ||||
-rw-r--r-- | src/pages/background/background.js | 12 | ||||
-rw-r--r-- | src/pages/options/translate.html | 9 | ||||
-rw-r--r-- | src/pages/options/translate.js | 9 |
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) +); |