commit e3ef922805b49a0c56d9ab7afa50324feb7f022b Author: OverPoweredDev Date: Wed Jun 2 20:44:27 2021 +0530 added a globalSettings object that is saved locally - this contains the apertium source for now, but more will be added later - added a langPairs.json that is also saved locally - a lot more settings actually work now diff --git a/background/background.js b/background/background.js index e69de29..061c5d8 100644 --- a/background/background.js +++ b/background/background.js @@ -0,0 +1,14 @@ +window.browser = (function () { + return window.browser || + window.chrome; +})(); + + +browser.runtime.onInstalled.addListener(function () { + browser.contextMenus.create({ + "id": "enableTranslation", + "title": "Enable Hover-On Translation", + "documentUrlPatterns": [""], + "contexts": ["page"] + }); +}) \ No newline at end of file diff --git a/language-pairs.json b/language-pairs.json deleted file mode 100644 index 2f8febf..0000000 --- a/language-pairs.json +++ /dev/null @@ -1,486 +0,0 @@ -{ - "last_updated": "June 1 at 11:23 UTC", - "source": "Apertium Release", - "langpairs": [ - { - "sourceLanguage": "afr", - "targetLanguage": "nld" - }, - { - "sourceLanguage": "ara", - "targetLanguage": "mlt" - }, - { - "sourceLanguage": "ara", - "targetLanguage": "mlt_translit" - }, - { - "sourceLanguage": "arg", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "arg", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "bel", - "targetLanguage": "rus" - }, - { - "sourceLanguage": "bre", - "targetLanguage": "fra" - }, - { - "sourceLanguage": "bul", - "targetLanguage": "mkd" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "epo" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "oci" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "oci_aran" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "arg" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "eng_US" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "fra" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "ita" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "por" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "por_BR" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "por_PTpre1990" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "ron" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "cat", - "targetLanguage": "srd" - }, - { - "sourceLanguage": "crh", - "targetLanguage": "tur" - }, - { - "sourceLanguage": "cym", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "dan", - "targetLanguage": "nno" - }, - { - "sourceLanguage": "dan", - "targetLanguage": "nob" - }, - { - "sourceLanguage": "dan", - "targetLanguage": "swe" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "epo" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "glg" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "cat_iec2017" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "cat_valencia" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "hbs" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "hbs_BS" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "hbs_HR" - }, - { - "sourceLanguage": "eng", - "targetLanguage": "hbs_SR" - }, - { - "sourceLanguage": "epo", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "eng_US" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "epo" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "fra" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "glg" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "oci" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "oci_aran" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "por" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "por_BR" - }, - { - "sourceLanguage": "eus", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "eus", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "fra", - "targetLanguage": "epo" - }, - { - "sourceLanguage": "fra", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "fra", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "fra", - "targetLanguage": "frp" - }, - { - "sourceLanguage": "fra", - "targetLanguage": "oci" - }, - { - "sourceLanguage": "frp", - "targetLanguage": "fra" - }, - { - "sourceLanguage": "glg", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "glg", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "glg", - "targetLanguage": "por" - }, - { - "sourceLanguage": "hbs", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "hbs", - "targetLanguage": "mkd" - }, - { - "sourceLanguage": "hbs", - "targetLanguage": "slv" - }, - { - "sourceLanguage": "hin", - "targetLanguage": "urd" - }, - { - "sourceLanguage": "ind", - "targetLanguage": "zlm" - }, - { - "sourceLanguage": "isl", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "isl", - "targetLanguage": "swe" - }, - { - "sourceLanguage": "ita", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "ita", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "ita", - "targetLanguage": "srd" - }, - { - "sourceLanguage": "kaz", - "targetLanguage": "tat" - }, - { - "sourceLanguage": "mkd", - "targetLanguage": "bul" - }, - { - "sourceLanguage": "mkd", - "targetLanguage": "eng" - }, - { - "sourceLanguage": "mkd", - "targetLanguage": "hbs_BS" - }, - { - "sourceLanguage": "mkd", - "targetLanguage": "hbs_HR" - }, - { - "sourceLanguage": "mkd", - "targetLanguage": "hbs_SR" - }, - { - "sourceLanguage": "mlt", - "targetLanguage": "ara" - }, - { - "sourceLanguage": "nld", - "targetLanguage": "afr" - }, - { - "sourceLanguage": "nno", - "targetLanguage": "dan" - }, - { - "sourceLanguage": "nno", - "targetLanguage": "nno_e" - }, - { - "sourceLanguage": "nno", - "targetLanguage": "nob" - }, - { - "sourceLanguage": "nno", - "targetLanguage": "swe" - }, - { - "sourceLanguage": "nno_e", - "targetLanguage": "nno" - }, - { - "sourceLanguage": "nob", - "targetLanguage": "dan" - }, - { - "sourceLanguage": "nob", - "targetLanguage": "nno" - }, - { - "sourceLanguage": "nob", - "targetLanguage": "nno_e" - }, - { - "sourceLanguage": "nob", - "targetLanguage": "seg" - }, - { - "sourceLanguage": "nob", - "targetLanguage": "swe" - }, - { - "sourceLanguage": "oci", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "oci", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "oci_aran", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "oci_aran", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "pol", - "targetLanguage": "szl" - }, - { - "sourceLanguage": "por", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "por", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "por", - "targetLanguage": "glg" - }, - { - "sourceLanguage": "ron", - "targetLanguage": "spa" - }, - { - "sourceLanguage": "ron", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "ron", - "targetLanguage": "cat_iec2017" - }, - { - "sourceLanguage": "rus", - "targetLanguage": "bel" - }, - { - "sourceLanguage": "rus", - "targetLanguage": "ukr" - }, - { - "sourceLanguage": "slv", - "targetLanguage": "hbs" - }, - { - "sourceLanguage": "slv", - "targetLanguage": "hbs_BS" - }, - { - "sourceLanguage": "slv", - "targetLanguage": "hbs_HR" - }, - { - "sourceLanguage": "slv", - "targetLanguage": "hbs_SR" - }, - { - "sourceLanguage": "sme", - "targetLanguage": "nob" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "arg" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "ast" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "cat" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "cat_iec2017" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "cat_valencia" - }, - { - "sourceLanguage": "spa", - "targetLanguage": "ita" - }, - { - "sourceLanguage": "swe", - "targetLanguage": "dan" - }, - { - "sourceLanguage": "swe", - "targetLanguage": "isl" - }, - { - "sourceLanguage": "swe", - "targetLanguage": "nno" - }, - { - "sourceLanguage": "swe", - "targetLanguage": "nob" - }, - { - "sourceLanguage": "szl", - "targetLanguage": "pol" - }, - { - "sourceLanguage": "tat", - "targetLanguage": "kaz" - }, - { - "sourceLanguage": "tur", - "targetLanguage": "crh" - }, - { - "sourceLanguage": "ukr", - "targetLanguage": "rus" - }, - { - "sourceLanguage": "urd", - "targetLanguage": "hin" - }, - { - "sourceLanguage": "zlm", - "targetLanguage": "ind" - } - ] -} \ No newline at end of file diff --git a/manifest.json b/manifest.json index dbb1e7c..26cc0fc 100644 --- a/manifest.json +++ b/manifest.json @@ -26,9 +26,11 @@ "scripts": [ "background/jquery.min.js", "background/background.js" - ] + ], + "persistent": false }, "permissions": [ - "tabs" + "tabs", + "contextMenus" ] } \ No newline at end of file diff --git a/popup/options.html b/popup/options.html index 64958a0..8b8f9fb 100644 --- a/popup/options.html +++ b/popup/options.html @@ -27,7 +27,7 @@
Default Language to Translate to -
+
-
+
Default Language to Translate to
@@ -28,20 +29,20 @@
-
- Select Apertium Source - -
-
+
Last Updated: Yesterday at 13.00 UTC
- +
+
+ Select Apertium Source + +
diff --git a/settings/settings.js b/settings/settings.js index e69de29..d0dbd15 100644 --- a/settings/settings.js +++ b/settings/settings.js @@ -0,0 +1,64 @@ +globalSettings = getGlobalSettings(); + +$("#update-button").click(async function () { + let languageList = await fetchLanguageList(getLangPairsEndpoint()); + let languagePairsJSON = JSON.stringify(createLanguagePairs(languageList)); + + localStorage.setItem("apertium.langPairs", languagePairsJSON); + + console.log(localStorage.getItem("apertium.langPairs")); +}); + +$("#source-select").change(function () { + let selectedSource = $("#source-select option:selected").text(); + switch (selectedSource) { + case "Apertium Release": + globalSettings.ApertiumSource = "https://apertium.org/apy/"; + saveGlobalSettings(); + break; + case "Apertium Beta": + globalSettings.ApertiumSource = "https://beta.apertium.org/apy/"; + saveGlobalSettings(); + break; + case "Local/Custom Source": + alert("Option not available yet"); + break; + } +}); + +function getGlobalSettings() { + let settings = localStorage.getItem("apertium.settings") + + if (settings === null) { + return { + ApertiumSource: "https://beta.apertium.org/apy/" + } + } else { + return settings; + } +} + +function saveGlobalSettings(settings) { + let settingsJSON = JSON.stringify(createLanguagePairs(settings)); + localStorage.setItem("apertium.settings", settingsJSON); +} + +function getLangPairsEndpoint() { + return globalSettings.ApertiumSource + "listPairs"; +} + +async function fetchLanguageList(listPairURL) { + return fetch(listPairURL) + .then(response => response.json()) + .then(data => data.responseData); +} + +function createLanguagePairs(languageList){ + let current = new Date() + + return { + last_updated: current.toLocaleString(), + source: globalSettings.ApertiumSource, + langPairs: languageList + } +} \ No newline at end of file