about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/_locales/cs/messages.json4
-rw-r--r--src/_locales/en/messages.json2
-rw-r--r--src/_locales/fr/messages.json45
-rw-r--r--src/_locales/gl/messages.json2
-rw-r--r--src/_locales/hu/messages.json137
-rw-r--r--src/_locales/nl/messages.json41
-rw-r--r--src/_locales/ru/messages.json2
-rw-r--r--src/assets/javascripts/services.js11
-rw-r--r--src/config.json8
-rw-r--r--src/pages/options_src/Services/Instances.svelte36
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}