diff options
-rw-r--r-- | src/_locales/cs/messages.json | 4 | ||||
-rw-r--r-- | src/_locales/en/messages.json | 2 | ||||
-rw-r--r-- | src/_locales/fr/messages.json | 45 | ||||
-rw-r--r-- | src/_locales/gl/messages.json | 2 | ||||
-rw-r--r-- | src/_locales/hu/messages.json | 137 | ||||
-rw-r--r-- | src/_locales/nl/messages.json | 41 | ||||
-rw-r--r-- | src/_locales/ru/messages.json | 2 | ||||
-rw-r--r-- | src/assets/javascripts/services.js | 11 | ||||
-rw-r--r-- | src/config.json | 8 | ||||
-rw-r--r-- | src/pages/options_src/Services/Instances.svelte | 36 |
10 files changed, 237 insertions, 51 deletions
diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json index e6dddae8..50ad878d 100644 --- a/src/_locales/cs/messages.json +++ b/src/_locales/cs/messages.json @@ -143,7 +143,7 @@ "message": "Přesměrovat" }, "autoPickInstance": { - "message": "Automaticky vybrat instanci" + "message": "Automaticky zvolit instanci" }, "searchService": { "message": "Služba vyhledávání" @@ -152,7 +152,7 @@ "message": "Přesměrovat Google" }, "search_frontend": { - "message": "Frontend vyhledávání" + "message": "Hledat frontend" }, "embedFrontend": { "message": "Vložený frontend" diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 9bcb980e..3fe89cb4 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -143,7 +143,7 @@ "message": "Redirect" }, "autoPickInstance": { - "message": "Auto Pick Instance" + "message": "Auto-pick Instance" }, "redirectGoogle": { "message": "Redirect Google" diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index b2827bf0..76930ce0 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -56,7 +56,7 @@ "description": "used in the settings page" }, "showInPopup": { - "message": "Afficher dans la fenêtre contextuelle", + "message": "Afficher dans la fenêtre contextuelle de l'extension", "description": "used in the settings page" }, "frontend": { @@ -72,11 +72,11 @@ "description": "used in the settings page" }, "onlyEmbedded": { - "message": "uniquement intégré", + "message": "éléments embarqués seulement", "description": "used in the settings page" }, "onlyNotEmbedded": { - "message": "seulement non intégré", + "message": "tout sauf éléments embarqués", "description": "used in the settings page" }, "addYourFavoriteInstances": { @@ -84,7 +84,7 @@ "description": "used in the settings page" }, "copyOriginal": { - "message": "Copy Original" + "message": "Copier l'original" }, "copied": { "message": "Copié" @@ -101,22 +101,22 @@ "message": "À propos" }, "unsupportedIframesHandling": { - "message": "Gestion des iframes non prises en charge" + "message": "Gestion des éléments embarqués non-pris-en-charge" }, "fetchPublicInstances": { - "message": "Rechercher des instances publiques" + "message": "Récupérer des instances publiques" }, "disable": { "message": "Désactiver" }, "pingInstances": { - "message": "Ping Instances" + "message": "Envoyer un ping aux instances" }, "exportSettingsToSync": { - "message": "Export Settings to Sync" + "message": "Exporter les paramètres vers Sync" }, "importSettingsFromSync": { - "message": "Import Settings from Sync" + "message": "Importer les paramètres depuis Sync" }, "services": { "message": "Services" @@ -125,21 +125,36 @@ "message": "Service" }, "bookmarksMenu": { - "message": "Bookmarks menu" + "message": "Menu des marque-pages" }, "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" + "message": "Rediriger seulement en Mode Incognito" }, "bypass": { - "message": "Bypass" + "message": "Laisser tel quel" }, "block": { - "message": "Block" + "message": "Bloquer" }, "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click <a href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here</a>." + "message": "Paramétrez LibRedirect pour être votre moteur de recherche par défaut. Pour savoir comment faire sur un navigateur chromium, cliquez <a href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>ici</a>." }, "redirect": { - "message": "Redirect" + "message": "Rediriger" + }, + "autoPickInstance": { + "message": "Choix d'instance automatique" + }, + "redirectGoogle": { + "message": "Rediriger Google" + }, + "search_frontend": { + "message": "Chercher une interface" + }, + "searchService": { + "message": "Chercher un service" + }, + "embedFrontend": { + "message": "Interface des éléments embarqués" } } diff --git a/src/_locales/gl/messages.json b/src/_locales/gl/messages.json index a95bdef4..2b34545e 100644 --- a/src/_locales/gl/messages.json +++ b/src/_locales/gl/messages.json @@ -143,7 +143,7 @@ "message": "Redirect" }, "autoPickInstance": { - "message": "Selección Autom. de instancia" + "message": "Selecc. automática instancia" }, "redirectGoogle": { "message": "Redirect a Google" diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json new file mode 100644 index 00000000..e5354d11 --- /dev/null +++ b/src/_locales/hu/messages.json @@ -0,0 +1,137 @@ +{ + "settings": { + "message": "Beállítások" + }, + "extensionDescription": { + "message": "Egy webes kiterjesztés, amely népszerű webhelyeket irányít át alternatív, adatvédelemet tiszteletben tartó elő- és háttérprogramokra" + }, + "general": { + "message": "Általános" + }, + "theme": { + "message": "Téma" + }, + "light": { + "message": "Világos" + }, + "exportSettings": { + "message": "Beállítások exportálása" + }, + "both": { + "message": "mindkettő" + }, + "dark": { + "message": "Sötét" + }, + "auto": { + "message": "Automatikus" + }, + "excludeFromRedirecting": { + "message": "Átirányításból kizárt" + }, + "importSettings": { + "message": "Beállítások importálása" + }, + "resetSettings": { + "message": "Beállítások visszaállítása" + }, + "onlyEmbedded": { + "message": "csak beágyazott" + }, + "enable": { + "message": "Engedélyezés" + }, + "showInPopup": { + "message": "Megjelenítés felugró ablakban" + }, + "onlyNotEmbedded": { + "message": "csak nem beágyazott" + }, + "copied": { + "message": "Másolva" + }, + "redirectLink": { + "message": "Kísérlet az átirányításra" + }, + "fetchPublicInstances": { + "message": "Nyilvános példányok lekérése" + }, + "addYourFavoriteInstances": { + "message": "Adja hozzá kedvenc példányait" + }, + "copyOriginal": { + "message": "Eredeti másolása" + }, + "redirectToOriginal": { + "message": "Átirányítás az eredetire" + }, + "about": { + "message": "Rólunk" + }, + "unsupportedIframesHandling": { + "message": "Nem támogatott beágyazások kezelése" + }, + "disable": { + "message": "Tiltás" + }, + "services": { + "message": "Szolgáltatások" + }, + "pingInstances": { + "message": "Példányok pingelése" + }, + "exportSettingsToSync": { + "message": "Beállítások exportálása a szinkronizáláshoz" + }, + "importSettingsFromSync": { + "message": "Beállítások importálása a szinkronizációból" + }, + "service": { + "message": "Szolgáltatás" + }, + "bookmarksMenu": { + "message": "Könyvjelzők menü" + }, + "block": { + "message": "Letiltás" + }, + "redirectOnlyInIncognito": { + "message": "Átirányítás csak inkognitóban" + }, + "redirect": { + "message": "Átirányítás" + }, + "switchInstance": { + "message": "Példány váltása" + }, + "frontend": { + "message": "Előtétprogram" + }, + "redirectType": { + "message": "Átirányítás típusa" + }, + "autoPickInstance": { + "message": "Példány automatikus kiválasztása" + }, + "redirectGoogle": { + "message": "Google átirányítása" + }, + "search_frontend": { + "message": "Előtétprogram keresése" + }, + "extensionName": { + "message": "LibRedirect" + }, + "bypass": { + "message": "Megkerülés" + }, + "searchHint": { + "message": "LibRedirect beállítása alapértelmezett keresőmotornak. A Chromium böngészőkben történő művelethez kattintson <a href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>ide</a>." + }, + "searchService": { + "message": "Szolgáltatás keresése" + }, + "embedFrontend": { + "message": "Beágyazott előtétprogram" + } +} diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index 9078a0b7..8d52901e 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -84,7 +84,7 @@ "description": "used in the settings page" }, "copyOriginal": { - "message": "Copy Original" + "message": "Origineel kopiëren" }, "copied": { "message": "Gekopieerd" @@ -101,7 +101,7 @@ "message": "Over" }, "unsupportedIframesHandling": { - "message": "Niet-ondersteunde iframes-afhandeling" + "message": "Niet-ondersteunde insluitafhandeling" }, "fetchPublicInstances": { "message": "Openbare instanties ophalen" @@ -110,36 +110,51 @@ "message": "Uitschakelen" }, "pingInstances": { - "message": "Ping Instances" + "message": "Instanties pingen" }, "exportSettingsToSync": { - "message": "Export Settings to Sync" + "message": "Instellingen synchroniseren" }, "importSettingsFromSync": { - "message": "Import Settings from Sync" + "message": "Instellingen ophalen uit synchronisatie" }, "services": { - "message": "Services" + "message": "Diensten" }, "service": { - "message": "Service" + "message": "Dienst" }, "bookmarksMenu": { - "message": "Bookmarks menu" + "message": "Bladwijzermenu" }, "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" + "message": "Alleen doorverwijzen in privévensters" }, "bypass": { - "message": "Bypass" + "message": "Omzeilen" }, "block": { - "message": "Block" + "message": "Blokkeren" }, "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click <a href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here</a>." + "message": "Stel LibRedirect in als de standaard zoekmachine. Hoe je dit doet in op Chromium gebaseerde browsers, lees je <a href='' target='_blank' rel='noopener noreferrer'>hier</a>." }, "redirect": { - "message": "Redirect" + "message": "Doorverwijzen" + }, + "autoPickInstance": { + "message": "Automatisch instantie kiezen" + }, + "redirectGoogle": { + "message": "Google doorverwijzen" + }, + "searchService": { + "message": "Zoeken naar dienst" + }, + "search_frontend": { + "message": "Zoeken naar front-end" + }, + "embedFrontend": { + "message": "Front-end insluiten" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 0e7ea4ca..b01d78c6 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -146,7 +146,7 @@ "message": "Перенаправление Google" }, "autoPickInstance": { - "message": "Выбирать сервер автоматически" + "message": "Выбрать сервер автоматически" }, "searchService": { "message": "Служба поиска" diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 80a4851c..e85b5bf1 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -220,15 +220,17 @@ function rewrite(url, originUrl, frontend, randomInstance) { return `${randomInstance}${url.pathname}${url.search}` case "redlib": case "libreddit": { - const subdomain = url.hostname.match(/^(?:(?:external-)?preview|i)(?=\.redd\.it)/) + const subdomain = url.hostname.match(/^(?:((?:external-)?preview|i)\.)?redd\.it/) if (!subdomain) return `${randomInstance}${url.pathname}${url.search}` - switch (subdomain[0]) { + switch (subdomain[1]) { case "preview": return `${randomInstance}/preview/pre${url.pathname}${url.search}` case "external-preview": return `${randomInstance}/preview/external-pre${url.pathname}${url.search}` case "i": return `${randomInstance}/img${url.pathname}` + default: + return `${randomInstance}/comments${url.pathname}` } return randomInstance } @@ -267,8 +269,11 @@ function rewrite(url, originUrl, frontend, randomInstance) { // https://stackexchange.com or https://superuser.com return `${randomInstance}${url.pathname}${url.search}` } - const regex = url.href.match(/https?:\/{2}(?:([a-zA-Z0-9-]+)\.)?stackexchange\.com\//) + const regex = url.href.match(/https?:\/{2}(?:([a-zA-Z0-9-]+)\.(meta\.)?)?stackexchange\.com\//) if (regex && regex.length > 1) { + if (regex[2]) { + return `${randomInstance}/exchange/${url.hostname}${url.pathname}${url.search}` + } const subdomain = regex[1] return `${randomInstance}/exchange/${subdomain}${url.pathname}${url.search}` } diff --git a/src/config.json b/src/config.json index 34b13c7c..340df46c 100644 --- a/src/config.json +++ b/src/config.json @@ -268,8 +268,8 @@ } }, "targets": [ - "^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.)?(reddit|reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad)\\.(com|onion)(?=\\/u(ser)?\\/|\\/r\\/|\\/search|\\/new|\\/?$)", - "^https?:\\/{2}(i|(external-)?preview)\\.redd\\.it" + "^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.)?(reddit|reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad)\\.(com|onion)(?=\\/u(ser)?\\/|\\/r\\/|\\/search|\\/new|\\/comments|\\/?$)", + "^https?:\\/{2}((i|(external-)?preview)\\.)?redd\\.it" ], "name": "Reddit", "options": { @@ -753,7 +753,7 @@ }, "targets": [ "^https?:\\/{2}(www\\.)?([a-zA-Z]+\\.)?stackoverflow\\.com\\/", - "(?!^https?:\\/{2}(api|data|blog)\\.)^https?:\\/{2}([a-zA-Z0-9-]+\\.)stackexchange\\.com\\/", + "^https?:\\/{2}((?!(api|data|blog)\\.)[a-zA-Z0-9-]+\\.(meta\\.)?)?stackexchange\\.com\\/", "^https?:\\/{2}(www\\.)?([a-zA-Z]+\\.)?(askubuntu\\.com|mathoverflow\\.net|serverfault\\.com|stackapps\\.com|superuser\\.com)\\/" ], "name": "Stack Overflow", @@ -1358,4 +1358,4 @@ "url": "https://coub.com" } } -} \ No newline at end of file +} diff --git a/src/pages/options_src/Services/Instances.svelte b/src/pages/options_src/Services/Instances.svelte index 7a04b04e..b37c3904 100644 --- a/src/pages/options_src/Services/Instances.svelte +++ b/src/pages/options_src/Services/Instances.svelte @@ -207,20 +207,34 @@ <span style="color:{pingCache[instance].color}">{pingCache[instance].value}</span> {/if} </span> - <button - class="add" - aria-label="Add instance" - on:click={() => { - if (_options[selectedFrontend]) { - if (!_options[selectedFrontend].includes(instance)) { + {#if !_options[selectedFrontend].includes(instance)} + <button + class="add" + aria-label="Add instance" + on:click={() => { + if (_options[selectedFrontend]) { _options[selectedFrontend].push(instance) options.set(_options) } - } - }} - > - <AddIcon /> - </button> + }} + > + <AddIcon /> + </button> + {:else} + <button + class="add" + aria-label="Remove Instance" + on:click={() => { + const index = _options[selectedFrontend].indexOf(instance) + if (index > -1) { + _options[selectedFrontend].splice(index, 1) + options.set(_options) + } + }} + > + <CloseIcon /> + </button> + {/if} </Row> <hr /> {/each} |