From ad806c6808c7feaa6585d22e19700a04fead87c8 Mon Sep 17 00:00:00 2001 From: Pixelcode <52963327+realpixelcode@users.noreply.github.com> Date: Sat, 2 Apr 2022 15:23:43 +0000 Subject: Add i18n * add i18n for translation * German translation * Arabic translation * RTL support --- src/_locales/ar/messages.json | 586 ++++++++++++++++++++ src/_locales/de/messages.json | 586 ++++++++++++++++++++ src/_locales/en/messages.json | 591 +++++++++++++++++++++ src/assets/javascripts/helpers/common.js | 16 +- src/assets/javascripts/localise.js | 4 + src/manifest.json | 13 +- src/pages/background/background.js | 8 +- src/pages/errors/instance_offline.html | 11 +- src/pages/errors/instance_offline.js | 4 +- src/pages/options/general/general.html | 78 +-- src/pages/options/imgur/imgur.html | 58 +- src/pages/options/init.js | 3 + src/pages/options/instagram/instagram.html | 68 ++- src/pages/options/lbry/lbry.html | 77 ++- src/pages/options/maps/maps.html | 47 +- src/pages/options/medium/medium.html | 58 +- src/pages/options/peertube/peertube.html | 59 +- src/pages/options/pixiv/pixiv.html | 62 +-- src/pages/options/reddit/reddit.html | 72 +-- src/pages/options/search/search.html | 68 +-- src/pages/options/sendTargets/sendTargets.html | 79 +-- src/pages/options/spotify/spotify.html | 59 +- src/pages/options/tiktok/tiktok.html | 59 +- src/pages/options/translate/translate.html | 237 +++++---- src/pages/options/twitter/twitter.html | 258 ++++----- src/pages/options/wikipedia/wikipedia.html | 235 ++++---- src/pages/options/youtube/youtube.html | 243 +++++---- src/pages/options/youtubeMusic/youtubeMusic.html | 292 +++++----- src/pages/popup/popup.html | 44 +- src/pages/popup/style.css | 2 +- .../NotoNaskhArabic-VariableFont_wght.ttf | Bin 0 -> 196420 bytes .../NotoSansArabic-VariableFont_wdth,wght.ttf | Bin 0 -> 765740 bytes .../stylesheets/Vazirmatn-VariableFont_wght.ttf | Bin 0 -> 285620 bytes src/pages/stylesheets/styles.css | 41 ++ 34 files changed, 2977 insertions(+), 1041 deletions(-) create mode 100644 src/_locales/ar/messages.json create mode 100644 src/_locales/de/messages.json create mode 100644 src/_locales/en/messages.json create mode 100644 src/pages/stylesheets/NotoNaskhArabic-VariableFont_wght.ttf create mode 100644 src/pages/stylesheets/NotoSansArabic-VariableFont_wdth,wght.ttf create mode 100644 src/pages/stylesheets/Vazirmatn-VariableFont_wght.ttf (limited to 'src') diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json new file mode 100644 index 00000000..50e627c5 --- /dev/null +++ b/src/_locales/ar/messages.json @@ -0,0 +1,586 @@ +{ + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + + "extensionDescription": { + "message": "إضافة متصفح تعيد توجيه مواقع مشهورة إلى واجهات أمامية ذات تحترم الخصوصية", + "description": "description of the extension" + }, + + "switchInstance": { + "message": "تبديل المَثيل", + "description": "used in manifest.json as shortcut description" + }, + + "instance": { + "message": "المَثيل", + "description": "used in popup.html" + }, + + "settings": { + "message": "الإعدادات", + "description": "used in popup.html" + }, + + "libOptions": { + "message": "LibRedirect إعدادات", + "description": "used in general.html" + }, + + "general": { + "message": "العامة", + "description": "used in general.html" + }, + + "search": { + "message": "البحث", + "description": "used in general.html" + }, + + "translate": { + "message": "الترجمة", + "description": "used in general.html" + }, + + "maps": { + "message": "الخرائط", + "description": "used in general.html" + }, + + "sendFiles": { + "message": "إرسال الملفات", + "description": "used in general.html" + }, + + "youtube": { + "message": "يوتيوب", + "description": "used in general.html" + }, + + "instagram": { + "message": "إنستغرام", + "description": "used in general.html" + }, + + "twitter": { + "message": "تويتر", + "description": "used in general.html" + }, + + "reddit": { + "message": "ريديت", + "description": "used in general.html" + }, + + "tiktok": { + "message": "تيك توك", + "description": "used in general.html" + }, + + "ytmusic": { + "message": "يوتيوب ميوزيك", + "description": "used in general.html" + }, + + "imgur": { + "message": "إمجور", + "description": "used in general.html" + }, + + "pixiv": { + "message": "بكسيف", + "description": "used in general.html" + }, + + "wikipedia": { + "message": "ويكيبيديا", + "description": "used in general.html" + }, + + "peertube": { + "message": "PeerTube", + "description": "used in general.html" + }, + + "spotify": { + "message": "سبوتيفاي", + "description": "used in general.html" + }, + + "medium": { + "message": "ميديام", + "description": "used in general.html" + }, + + "tor": { + "message": "تور", + "description": "used in imgur.html" + }, + + "pixivMoe": { + "message": "pixiv萌え", + "description": "used in pixiv.html" + }, + + "theme": { + "message": "السمة", + "description": "used in general.html" + }, + + "system": { + "message": "النظام", + "description": "used in general.html" + }, + + "light": { + "message": "فاتح", + "description": "used in general.html" + }, + + "dark": { + "message": "داكن", + "description": "used in general.html" + }, + + "applyTheme": { + "message": "تطبيق السمة على الواجهات", + "description": "used in general.html" + }, + + "alwaysPref": { + "message": "استخدم المُثلاء المفضلين دائماً", + "description": "used in general.html" + }, + + "autoRedirect": { + "message": "إعادة التوجيه تلقائياً من المُثلاء الذين لا يعملون", + "description": "used in general.html" + }, + + "exceptions": { + "message": "الاستثناءات", + "description": "used in general.html" + }, + + "updateInstances": { + "message": "تحديث قائمة المُثلاء", + "description": "used in general.html" + }, + + "importSettings": { + "message": "استيراد الإعدادات", + "description": "used in general.html" + }, + + "exportSettings": { + "message": "تصدير الإعدادات", + "description": "used in general.html" + }, + + "resetSettings": { + "message": "إعادة تعيين الإعدادات", + "description": "used in general.html" + }, + + "customPopup": { + "message": "تخصيص النافذة المنبثقة", + "description": "used in general.html" + }, + + "enable": { + "message": "تفعيل", + "description": "used in imgur.html" + }, + + "protocol": { + "message": "البروتوكول", + "description": "used in imgur.html" + }, + + "normal": { + "message": "العادي", + "description": "used in imgur.html" + }, + + "defaultInstances": { + "message": "المُثلاء الافتراضيين", + "description": "used in imgur.html" + }, + + "customInstances": { + "message": "المُثلاء المخصصين", + "description": "used in imgur.html" + }, + + "toggleAll": { + "message": "تبديل الكل", + "description": "used in common.js" + }, + + "frontend": { + "message": "الواجهة الأمامية", + "description": "used in maps.html" + }, + + "notFullyPrivate": { + "message": "هذه الواجهة لا تحترم الخصوصية تماماً", + "description": "used in pixiv.html" + }, + + "oldReddit": { + "message": "ريديت القديم", + "description": "used in reddit.html" + }, + + "bypassReddit": { + "message": "تجاوز \"Open in Reddit\"", + "description": "used in reddit.html" + }, + + "searchNote": { + "message": "ملاحظة: لاستعمال \"البحث\" بكامل إمكانيته، اجعل LibRedirect محرك البحث الافتراضي", + "description": "used in search.html" + }, + + "libSendFiles": { + "message": "LibRedirect: إرسال الملفات", + "description": "used in sendTargets.html" + }, + + "from": { + "message": "من", + "description": "used in translate.html" + }, + + "to": { + "message": "إلى", + "description": "used in translate.html" + }, + + "default": { + "message": "الافتراضي", + "description": "used in translate.html" + }, + + "auto": { + "message": "تلقائي", + "description": "used in translate.html" + }, + + "engine": { + "message": "محرك البحث", + "description": "used in translate.html" + }, + + "libTranslate": { + "message": "LibRedirect: الترجمة", + "description": "used in translate.html" + }, + + "bypassTwitter": { + "message": "تجاوز \"Open in Twitter\"", + "description": "used in twitter.html" + }, + + "embeddedVids": { + "message": "واجهة الفيديوهات المضمنة", + "description": "used in youtube.html" + }, + + "redirectType": { + "message": "نوع إعادة التوجيه", + "description": "used in youtube.html" + }, + + "both": { + "message": "الإثنين", + "description": "used in youtube.html" + }, + + "onlyEmbedded": { + "message": "فقط للتضمينات", + "description": "used in youtube.html" + }, + + "onlyNotEmbedded": { + "message": "فقط لغير التضمينات", + "description": "used in youtube.html" + }, + + "bypassYoutube": { + "message": "تجاوز \"Watch on YouTube\"", + "description": "used in youtube.html" + }, + + "enableCustom": { + "message": "تمكين الإعدادات الخاصة (ستُستخدم ملفات تعريف الارتباط والـlocalStorage)", + "description": "used in youtube.html" + }, + + "autoplayVid": { + "message": "تشغيل الفيديوهات التلقائي", + "description": "used in youtube.html" + }, + + "volume": { + "message": "الصوت: ", + "description": "used in youtube.html" + }, + + "playerStyle": { + "message": "شكل مشغل الفيديو", + "description": "used in youtube.html" + }, + + "alwaysLoop": { + "message": "إعادة تشغيل الفيديو تلقائياً", + "description": "used in youtube.html" + }, + + "playNext": { + "message": "تشغيل التالي افتراضياً", + "description": "used in youtube.html" + }, + + "autoplayNext": { + "message": "تشغيل الفيديو التالي تلقائياً", + "description": "used in youtube.html" + }, + + "alwaysProxy": { + "message": "بروكسي المقاطع المرئيّة", + "description": "used in youtube.html" + }, + + "listenByDefault": { + "message": "تشغيل النسخة السمعية تلقائيًا", + "description": "used in youtube.html" + }, + + "defaultSpeed": { + "message": "السرعة الافتراضية", + "description": "used in youtube.html" + }, + + "prefQuality": { + "message": "الجودة المفضلة للمقاطع", + "description": "used in youtube.html" + }, + + "dash": { + "message": "DASH (جودة تكيُّفية)", + "description": "used in youtube.html" + }, + + "prefDashQuality": { + "message": "جودة فيديو DASH المفضلة", + "description": "used in youtube.html" + }, + + "best": { + "message": "الأفضل", + "description": "used in youtube.html" + }, + + "worst": { + "message": "الأسوء", + "description": "used in youtube.html" + }, + + "defaultComments": { + "message": "التعليقات الافتراضية", + "description": "used in youtube.html" + }, + + "none": { + "message": "لا شيء", + "description": "used in youtube.html" + }, + + "defaultCaptions": { + "message": "التسميات التوضيحية الاتفراضية", + "description": "used in youtube.html" + }, + + "showRelated": { + "message": "اعرض الفيديوهات ذات الصلة", + "description": "used in youtube.html" + }, + + "showAnnotations": { + "message": "إظهار الـAnnotation بشكل افتراضي", + "description": "used in youtube.html" + }, + + "autoExtendDesc": { + "message": "توسيع وصف الفيديو تلقائيا", + "description": "used in youtube.html" + }, + + "interactive360": { + "message": "مقاطع فيديو تفاعلية بزاوية 360 درجة (تتطلب WebGL)", + "description": "used in youtube.html" + }, + + "savePlaybackPos": { + "message": "حفظ موضع التشغيل", + "description": "used in youtube.html" + }, + + "enableSponsorBlock": { + "message": "Enable SponsorBlock", + "description": "used in youtube.html" + }, + + "skipSponsors": { + "message": "Skip sponsors", + "description": "used in youtube.html" + }, + + "skipIntermission": { + "message": "Skip Intermission/Intro Animation", + "description": "used in youtube.html" + }, + + "skipEndcards": { + "message": "Skip Endcards/Credits", + "description": "used in youtube.html" + }, + + "skipPreview": { + "message": "Skip Preview/Recap", + "description": "used in youtube.html" + }, + + "skipReminder": { + "message": "Skip interaction reminder (subscribe)", + "description": "used in youtube.html" + }, + + "skipUnpaidPromo": { + "message": "Skip Unpaid/Self Promotion", + "description": "used in youtube.html" + }, + + "skipMusic": { + "message": "Skip Music: Non-Music Section", + "description": "used in youtube.html" + }, + + "skipHighlights": { + "message": "Skip highlights", + "description": "used in youtube.html" + }, + + "skipFiller": { + "message": "Skip Filler Tangent", + "description": "used in youtube.html" + }, + + "audioOnly": { + "message": "Audio only", + "description": "used in youtube.html" + }, + + "defaultQuality": { + "message": "Default quality", + "description": "used in youtube.html" + }, + + "bufferingGoal": { + "message": "Buffering Goal (in seconds)", + "description": "used in youtube.html" + }, + + "countrySelection": { + "message": "Country selection", + "description": "used in youtube.html" + }, + + "defaultHomepage": { + "message": "Default homepage", + "description": "used in youtube.html" + }, + + "trending": { + "message": "Trending", + "description": "used in youtube.html" + }, + + "feed": { + "message": "Feed", + "description": "used in youtube.html" + }, + + "showComments": { + "message": "Show comments", + "description": "used in youtube.html" + }, + + "minimizeDesc": { + "message": "Minimize description by default", + "description": "used in youtube.html" + }, + + "storeHistory": { + "message": "Store watch history", + "description": "used in youtube.html" + }, + + "enabledCodecs": { + "message": "Enabled codecs (multiple)", + "description": "used in youtube.html" + }, + + "disableLBRY": { + "message": "Disable LBRY for streaming", + "description": "used in youtube.html" + }, + + "enableProxyLBRY": { + "message": "Enable proxy for LBRY", + "description": "used in youtube.html" + }, + + "proxyLBRY": { + "message": "Proxy LBRY videos", + "description": "used in youtube.html" + }, + + "skipNote": { + "message": "Skip to the last watched point when encountering a video already seen", + "description": "used in youtube.html" + }, + + "embedExceptions": { + "message": "Embed exceptions", + "description": "used in youtube.html" + }, + + "instanceOffline": { + "message": "This instance is offline, you'll be redirected after ", + "description": "used in instance_offline.html" + }, + + "sec": { + "message": "الثواني", + "description": "used in instance_offline.html" + }, + + "cancel": { + "message": "إلغاء", + "description": "used in instance_offline.html" + }, + + "instanceIsOff": { + "message": "المَثيل غير متصل على النت", + "description": "used in instance_offline.html" + }, + + "redirectionCanceled": { + "message": "تم إلغاء إعادة التوجيه", + "description": "used in instance_offline.js" + } + } diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json new file mode 100644 index 00000000..03248032 --- /dev/null +++ b/src/_locales/de/messages.json @@ -0,0 +1,586 @@ +{ + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + + "extensionDescription": { + "message": "Eine Erweiterung, die beliebte Websites zu alternativen datenschutzfreundlichen Frontends und Backends weiterleitet.", + "description": "description of the extension" + }, + + "switchInstance": { + "message": "Instanz wechseln", + "description": "used in manifest.json as shortcut description" + }, + + "instance": { + "message": "Instanz", + "description": "used in popup.html" + }, + + "settings": { + "message": "Optionen", + "description": "used in popup.html" + }, + + "libOptions": { + "message": "LibRedirect-Optionen", + "description": "used in general.html" + }, + + "general": { + "message": "Allgemein", + "description": "used in general.html" + }, + + "search": { + "message": "Suche", + "description": "used in general.html" + }, + + "translate": { + "message": "Übersetzen", + "description": "used in general.html" + }, + + "maps": { + "message": "Karten", + "description": "used in general.html" + }, + + "sendFiles": { + "message": "Dateien senden", + "description": "used in general.html" + }, + + "youtube": { + "message": "YouTube", + "description": "used in general.html" + }, + + "instagram": { + "message": "Instagram", + "description": "used in general.html" + }, + + "twitter": { + "message": "Twitter", + "description": "used in general.html" + }, + + "reddit": { + "message": "Reddit", + "description": "used in general.html" + }, + + "tiktok": { + "message": "TikTok", + "description": "used in general.html" + }, + + "ytmusic": { + "message": "YT Music", + "description": "used in general.html" + }, + + "imgur": { + "message": "Imgur", + "description": "used in general.html" + }, + + "pixiv": { + "message": "Pixiv", + "description": "used in general.html" + }, + + "wikipedia": { + "message": "Wikipedia", + "description": "used in general.html" + }, + + "peertube": { + "message": "PeerTube", + "description": "used in general.html" + }, + + "spotify": { + "message": "Spotify", + "description": "used in general.html" + }, + + "medium": { + "message": "Medium", + "description": "used in general.html" + }, + + "tor": { + "message": "Tor", + "description": "used in imgur.html" + }, + + "pixivMoe": { + "message": "pixiv萌え", + "description": "used in pixiv.html" + }, + + "theme": { + "message": "Thema", + "description": "used in general.html" + }, + + "system": { + "message": "System", + "description": "used in general.html" + }, + + "light": { + "message": "Hell", + "description": "used in general.html" + }, + + "dark": { + "message": "Dunkel", + "description": "used in general.html" + }, + + "applyTheme": { + "message": "Thema auf Seiten anwenden", + "description": "used in general.html" + }, + + "alwaysPref": { + "message": "Immer bevorzugte Instanzen verwenden", + "description": "used in general.html" + }, + + "autoRedirect": { + "message": "Instanzen automatisch weiterleiten, die offline sind", + "description": "used in general.html" + }, + + "exceptions": { + "message": "Ausnahmen", + "description": "used in general.html" + }, + + "updateInstances": { + "message": "Instanzen aktualisieren", + "description": "used in general.html" + }, + + "importSettings": { + "message": "Einstellungen importieren", + "description": "used in general.html" + }, + + "exportSettings": { + "message": "Einstellungen exportieren", + "description": "used in general.html" + }, + + "resetSettings": { + "message": "Einstellungen zurücksetzen", + "description": "used in general.html" + }, + + "customPopup": { + "message": "Popup personalisieren", + "description": "used in general.html" + }, + + "enable": { + "message": "Aktivieren", + "description": "used in imgur.html" + }, + + "protocol": { + "message": "Protokoll", + "description": "used in imgur.html" + }, + + "normal": { + "message": "Normal", + "description": "used in imgur.html" + }, + + "defaultInstances": { + "message": "Standard-Instanzen", + "description": "used in imgur.html" + }, + + "customInstances": { + "message": "Eigene Instanzen", + "description": "used in imgur.html" + }, + + "toggleAll": { + "message": "Alle umschalten", + "description": "used in common.js" + }, + + "frontend": { + "message": "Frontend", + "description": "used in maps.html" + }, + + "notFullyPrivate": { + "message": "Das ist kein völlig privates Frontend.", + "description": "used in pixiv.html" + }, + + "oldReddit": { + "message": "Altes Reddit", + "description": "used in reddit.html" + }, + + "bypassReddit": { + "message": "„Öffnen mit Reddit“ umgehen", + "description": "used in reddit.html" + }, + + "searchNote": { + "message": "Hinweis: Um das volle Potenzial der Suchweiterleitung auszunutzen, lege LibRedirect als Standardsuchmaschine fest.", + "description": "used in search.html" + }, + + "libSendFiles": { + "message": "LibRedirect: Dateien senden", + "description": "used in sendTargets.html" + }, + + "from": { + "message": "Von", + "description": "used in translate.html" + }, + + "to": { + "message": "Nach", + "description": "used in translate.html" + }, + + "default": { + "message": "Standard", + "description": "used in translate.html" + }, + + "auto": { + "message": "Auto", + "description": "used in translate.html" + }, + + "engine": { + "message": "Übersetzer", + "description": "used in translate.html" + }, + + "libTranslate": { + "message": "LibRedirect: Übersetzen", + "description": "used in translate.html" + }, + + "bypassTwitter": { + "message": "„Öffnen mit Twitter“ umgehen", + "description": "used in twitter.html" + }, + + "invidious": { + "message": "Invidious", + "description": "used in youtube.html" + }, + + "embeddedVids": { + "message": "Frontend für eingebettete Videos", + "description": "used in youtube.html" + }, + + "redirectType": { + "message": "Art der Weiterleitung", + "description": "used in youtube.html" + }, + + "both": { + "message": "beides", + "description": "used in youtube.html" + }, + + "onlyEmbedded": { + "message": "nur eingebettet", + "description": "used in youtube.html" + }, + + "onlyNotEmbedded": { + "message": "nur nicht-eingebunden", + "description": "used in youtube.html" + }, + + "bypassYoutube": { + "message": "„Auf YouTube ansehen“ umgehen", + "description": "used in youtube.html" + }, + + "enableCustom": { + "message": "Aktiviere benutzerdefinierte Einstellungen (verwendet Cookies und localStorage)", + "description": "used in youtube.html" + }, + + "autoplayVid": { + "message": "Video automatisch abspielen", + "description": "used in youtube.html" + }, + + "volume": { + "message": "Lautstärke: ", + "description": "used in youtube.html" + }, + + "playerStyle": { + "message": "Player-Stil", + "description": "used in youtube.html" + }, + + "alwaysLoop": { + "message": "Immer wiederholen", + "description": "used in youtube.html" + }, + + "playNext": { + "message": "Immer automatisch nächstes Video abspielen", + "description": "used in youtube.html" + }, + + "autoplayNext": { + "message": "Nächstes Video automatisch abspielen", + "description": "used in youtube.html" + }, + + "alwaysProxy": { + "message": "Videos immer durch Proxy leiten", + "description": "used in youtube.html" + }, + + "listenByDefault": { + "message": "Nur Ton als Standard", + "description": "used in youtube.html" + }, + + "defaultSpeed": { + "message": "Standardgeschwindigkeit", + "description": "used in youtube.html" + }, + + "prefQuality": { + "message": "Bevorzugte Videoqualität", + "description": "used in youtube.html" + }, + + "dash": { + "message": "DASH (automatische Qualität)", + "description": "used in youtube.html" + }, + + "prefDashQuality": { + "message": "Bevorzugte DASH-Videoqualität", + "description": "used in youtube.html" + }, + + "best": { + "message": "Höchste", + "description": "used in youtube.html" + }, + + "worst": { + "message": "Niedrigste", + "description": "used in youtube.html" + }, + + "defaultComments": { + "message": "Standardkommentare", + "description": "used in youtube.html" + }, + + "none": { + "message": "keine", + "description": "used in youtube.html" + }, + + "defaultCaptions": { + "message": "Standarduntertitel", + "description": "used in youtube.html" + }, + + "showRelated": { + "message": "Ähnliche Videos anzeigen", + "description": "used in youtube.html" + }, + + "showAnnotations": { + "message": "Anmerkungen standardmäßig anzeigen", + "description": "used in youtube.html" + }, + + "autoExtendDesc": { + "message": "Videobeschreibung automatisch erweitern", + "description": "used in youtube.html" + }, + + "interactive360": { + "message": "Interaktive 360-Grad-Videos (erfordert WebGL)", + "description": "used in youtube.html" + }, + + "savePlaybackPos": { + "message": "Wiedergabeposition speichern", + "description": "used in youtube.html" + }, + + "enableSponsorBlock": { + "message": "SponsorBlock einschalten", + "description": "used in youtube.html" + }, + + "skipSponsors": { + "message": "Sponsoren überspringen", + "description": "used in youtube.html" + }, + + "skipIntermission": { + "message": "Pausen-/Intro-Animation überspringen", + "description": "used in youtube.html" + }, + + "skipEndcards": { + "message": "Abspann überspringen", + "description": "used in youtube.html" + }, + + "skipPreview": { + "message": "Vorschau/Rückschau überspringen", + "description": "used in youtube.html" + }, + + "skipReminder": { + "message": "Interaktionserinnerung überspringen (Abonnieren)", + "description": "used in youtube.html" + }, + + "skipUnpaidPromo": { + "message": "Unbezahlte Werbung/Eigenwerbung überspringen", + "description": "used in youtube.html" + }, + + "skipMusic": { + "message": "Musik überspringen: Nicht-Musik-Bereich", + "description": "used in youtube.html" + }, + + "skipHighlight": { + "message": "Höhepunkt überspringen", + "description": "used in youtube.html" + }, + + "skipFiller": { + "message": "Lückenfüller überspringen", + "description": "used in youtube.html" + }, + + "audioOnly": { + "message": "Nur Audio", + "description": "used in youtube.html" + }, + + "defaultQuality": { + "message": "Standardqualität", + "description": "used in youtube.html" + }, + + "bufferingGoal": { + "message": "Pufferungsziel (in Sekunden)", + "description": "used in youtube.html" + }, + + "countrySelection": { + "message": "Länderauswahl", + "description": "used in youtube.html" + }, + + "defaultHomepage": { + "message": "Standard-Startseite", + "description": "used in youtube.html" + }, + + "trending": { + "message": "Trends", + "description": "used in youtube.html" + }, + + "feed": { + "message": "Abonnements", + "description": "used in youtube.html" + }, + + "showComments": { + "message": "Kommentare anzeigen", + "description": "used in youtube.html" + }, + + "minimizeDesc": { + "message": "Beschreibung standardmäßig minimieren", + "description": "used in youtube.html" + }, + + "storeHistory": { + "message": "Wiedergabeverlauf speichern", + "description": "used in youtube.html" + }, + + "enabledCodecs": { + "message": "Aktivierte Codecs (mehrere)", + "description": "used in youtube.html" + }, + + "disableLBRY": { + "message": "LBRY für Streaming deaktivieren", + "description": "used in youtube.html" + }, + + "enableProxyLBRY": { + "message": "Proxy für LBRY einschalten", + "description": "used in youtube.html" + }, + + "proxyLBRY": { + "message": "LBRY-Videos durch Proxy leiten", + "description": "used in youtube.html" + }, + + "skipNote": { + "message": "Springe zum letzten Wiedergabezeitpunkt bei bereits angesehenen Videos", + "description": "used in youtube.html" + }, + + "embedExceptions": { + "message": "Ausnahmen einbetten", + "description": "used in youtube.html" + }, + + "sec": { + "message": "Sekunden", + "description": "used in instance_offline.html" + }, + + "cancel": { + "message": "Abbrechen", + "description": "used in instance_offline.html" + }, + + "instanceIsOff": { + "message": "Instanz ist offline", + "description": "used in instance_offline.html" + }, + + "redirectionCanceled": { + "message": "Weiterleitung abgebrochen", + "description": "used in instance_offline.js" + } +} diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json new file mode 100644 index 00000000..bd693d3c --- /dev/null +++ b/src/_locales/en/messages.json @@ -0,0 +1,591 @@ +{ + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + + "extensionDescription": { + "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends", + "description": "description of the extension" + }, + + "switchInstance": { + "message": "Switch Instance", + "description": "used in manifest.json as shortcut description" + }, + + "instance": { + "message": "Instance", + "description": "used in popup.html" + }, + + "settings": { + "message": "Settings", + "description": "used in popup.html" + }, + + "libOptions": { + "message": "LibRedirect Options", + "description": "used in general.html" + }, + + "general": { + "message": "General", + "description": "used in general.html" + }, + + "search": { + "message": "Search", + "description": "used in general.html" + }, + + "translate": { + "message": "Translate", + "description": "used in general.html" + }, + + "maps": { + "message": "Maps", + "description": "used in general.html" + }, + + "sendFiles": { + "message": "Send Files", + "description": "used in general.html" + }, + + "youtube": { + "message": "YouTube", + "description": "used in general.html" + }, + + "instagram": { + "message": "Instagram", + "description": "used in general.html" + }, + + "twitter": { + "message": "Twitter", + "description": "used in general.html" + }, + + "reddit": { + "message": "Reddit", + "description": "used in general.html" + }, + + "tiktok": { + "message": "TikTok", + "description": "used in general.html" + }, + + "ytmusic": { + "message": "YT Music", + "description": "used in general.html" + }, + + "imgur": { + "message": "Imgur", + "description": "used in general.html" + }, + + "pixiv": { + "message": "Pixiv", + "description": "used in general.html" + }, + + "wikipedia": { + "message": "Wikipedia", + "description": "used in general.html" + }, + + "peertube": { + "message": "PeerTube", + "description": "used in general.html" + }, + + "spotify": { + "message": "Spotify", + "description": "used in general.html" + }, + + "medium": { + "message": "Medium", + "description": "used in general.html" + }, + + "tor": { + "message": "Tor", + "description": "used in imgur.html" + }, + + "pixivMoe": { + "message": "pixiv萌え", + "description": "used in pixiv.html" + }, + + "theme": { + "message": "Theme", + "description": "used in general.html" + }, + + "system": { + "message": "System", + "description": "used in general.html" + }, + + "light": { + "message": "Light", + "description": "used in general.html" + }, + + "dark": { + "message": "Dark", + "description": "used in general.html" + }, + + "applyTheme": { + "message": "Apply theme to sites", + "description": "used in general.html" + }, + + "alwaysPref": { + "message": "Always use Preferred Instances", + "description": "used in general.html" + }, + + "autoRedirect": { + "message": "Auto Redirect of offline instances", + "description": "used in general.html" + }, + + "exceptions": { + "message": "Exceptions", + "description": "used in general.html" + }, + + "updateInstances": { + "message": "Update Instances", + "description": "used in general.html" + }, + + "importSettings": { + "message": "Import Settings", + "description": "used in general.html" + }, + + "exportSettings": { + "message": "Export Settings", + "description": "used in general.html" + }, + + "resetSettings": { + "message": "Reset Settings", + "description": "used in general.html" + }, + + "customPopup": { + "message": "Customize Popup", + "description": "used in general.html" + }, + + "enable": { + "message": "Enable", + "description": "used in imgur.html" + }, + + "protocol": { + "message": "Protocol", + "description": "used in imgur.html" + }, + + "normal": { + "message": "Normal", + "description": "used in imgur.html" + }, + + "defaultInstances": { + "message": "Default Instances", + "description": "used in imgur.html" + }, + + "customInstances": { + "message": "Custom Instances", + "description": "used in imgur.html" + }, + + "toggleAll": { + "message": "Toggle all", + "description": "used in common.js" + }, + + "frontend": { + "message": "Frontend", + "description": "used in maps.html" + }, + + "notFullyPrivate": { + "message": "This isn't a fully private frontend.", + "description": "used in pixiv.html" + }, + + "oldReddit": { + "message": "Old Reddit", + "description": "used in reddit.html" + }, + + "bypassReddit": { + "message": "Bypass \"Open in Reddit\"", + "description": "used in reddit.html" + }, + + "searchNote": { + "message": "Note: To use Search to its full potential, make LibRedirect as the Default Search Engine", + "description": "used in search.html" + }, + + "libSendFiles": { + "message": "LibRedirect: Send Files", + "description": "used in sendTargets.html" + }, + + "from": { + "message": "From", + "description": "used in translate.html" + }, + + "to": { + "message": "To", + "description": "used in translate.html" + }, + + "default": { + "message": "Default", + "description": "used in translate.html" + }, + + "auto": { + "message": "Auto", + "description": "used in translate.html" + }, + + "engine": { + "message": "Engine", + "description": "used in translate.html" + }, + + "libTranslate": { + "message": "LibRedirect: Translate", + "description": "used in translate.html" + }, + + "bypassTwitter": { + "message": "Bypass \"Open in Twitter\"", + "description": "used in twitter.html" + }, + + "invidious": { + "message": "Invidious", + "description": "used in youtube.html" + }, + + "embeddedVids": { + "message": "Embedded Videos Frontend", + "description": "used in youtube.html" + }, + + "redirectType": { + "message": "Redirect Type", + "description": "used in youtube.html" + }, + + "both": { + "message": "both", + "description": "used in youtube.html" + }, + + "onlyEmbedded": { + "message": "only embedded", + "description": "used in youtube.html" + }, + + "onlyNotEmbedded": { + "message": "only not embedded", + "description": "used in youtube.html" + }, + + "bypassYoutube": { + "message": "Bypass \"Watch on YouTube\"", + "description": "used in youtube.html" + }, + + "enableCustom": { + "message": "Enable Custom Settings (will use cookies and localStorage)", + "description": "used in youtube.html" + }, + + "autoplayVid": { + "message": "Autoplay Video", + "description": "used in youtube.html" + }, + + "volume": { + "message": "Volume: ", + "description": "used in youtube.html" + }, + + "playerStyle": { + "message": "Player Style", + "description": "used in youtube.html" + }, + + "alwaysLoop": { + "message": "Always loop", + "description": "used in youtube.html" + }, + + "playNext": { + "message": "Play next by default", + "description": "used in youtube.html" + }, + + "autoplayNext": { + "message": "Autoplay next video", + "description": "used in youtube.html" + }, + + "alwaysProxy": { + "message": "Always proxy videos", + "description": "used in youtube.html" + }, + + "listenByDefault": { + "message": "Listen by default", + "description": "used in youtube.html" + }, + + "defaultSpeed": { + "message": "Default speed", + "description": "used in youtube.html" + }, + + "prefQuality": { + "message": "Preferred video quality", + "description": "used in youtube.html" + }, + + "dash": { + "message": "DASH (adaptive quality)", + "description": "used in youtube.html" + }, + + "prefDashQuality": { + "message": "Preferred DASH video quality", + "description": "used in youtube.html" + }, + + "best": { + "message": "Best", + "description": "used in youtube.html" + }, + + "worst": { + "message": "Worst", + "description": "used in youtube.html" + }, + + "defaultComments": { + "message": "Default comments", + "description": "used in youtube.html" + }, + + "none": { + "message": "None", + "description": "used in youtube.html" + }, + + "defaultCaptions": { + "message": "Default captions", + "description": "used in youtube.html" + }, + + "showRelated": { + "message": "Show related videos", + "description": "used in youtube.html" + }, + + "showAnnotations": { + "message": "Show annotations by default", + "description": "used in youtube.html" + }, + + "autoExtendDesc": { + "message": "Automatically extend video description", + "description": "used in youtube.html" + }, + + "interactive360": { + "message": "Interactive 360 degree videos (requires WebGL)", + "description": "used in youtube.html" + }, + + "savePlaybackPos": { + "message": "Save playback position", + "description": "used in youtube.html" + }, + + "enableSponsorBlock": { + "message": "Enable SponsorBlock", + "description": "used in youtube.html" + }, + + "skipSponsors": { + "message": "Skip sponsors", + "description": "used in youtube.html" + }, + + "skipIntermission": { + "message": "Skip Intermission/Intro Animation", + "description": "used in youtube.html" + }, + + "skipEndcards": { + "message": "Skip Endcards/Credits", + "description": "used in youtube.html" + }, + + "skipPreview": { + "message": "Skip Preview/Recap", + "description": "used in youtube.html" + }, + + "skipReminder": { + "message": "Skip interaction reminder (subscribe)", + "description": "used in youtube.html" + }, + + "skipUnpaidPromo": { + "message": "Skip Unpaid/Self Promotion", + "description": "used in youtube.html" + }, + + "skipMusic": { + "message": "Skip Music: Non-Music Section", + "description": "used in youtube.html" + }, + + "skipHighlight": { + "message": "Skip Highlight", + "description": "used in youtube.html" + }, + + "skipFiller": { + "message": "Skip Filler Tangent", + "description": "used in youtube.html" + }, + + "audioOnly": { + "message": "Audio only", + "description": "used in youtube.html" + }, + + "defaultQuality": { + "message": "Default quality", + "description": "used in youtube.html" + }, + + "bufferingGoal": { + "message": "Buffering Goal (in seconds)", + "description": "used in youtube.html" + }, + + "countrySelection": { + "message": "Country selection", + "description": "used in youtube.html" + }, + + "defaultHomepage": { + "message": "Default homepage", + "description": "used in youtube.html" + }, + + "trending": { + "message": "Trending", + "description": "used in youtube.html" + }, + + "feed": { + "message": "Feed", + "description": "used in youtube.html" + }, + + "showComments": { + "message": "Show comments", + "description": "used in youtube.html" + }, + + "minimizeDesc": { + "message": "Minimize description by default", + "description": "used in youtube.html" + }, + + "storeHistory": { + "message": "Store watch history", + "description": "used in youtube.html" + }, + + "enabledCodecs": { + "message": "Enabled codecs (multiple)", + "description": "used in youtube.html" + }, + + "disableLBRY": { + "message": "Disable LBRY for streaming", + "description": "used in youtube.html" + }, + + "enableProxyLBRY": { + "message": "Enable proxy for LBRY", + "description": "used in youtube.html" + }, + + "proxyLBRY": { + "message": "Proxy LBRY videos", + "description": "used in youtube.html" + }, + + "skipNote": { + "message": "Skip to the last watched point when encountering a video already seen", + "description": "used in youtube.html" + }, + + "embedExceptions": { + "message": "Embed exceptions", + "description": "used in youtube.html" + }, + + "instanceOffline": { + "message": "This instance is offline, you'll be redirected after ", + "description": "used in instance_offline.html" + }, + + "sec": { + "message": "seconds", + "description": "used in instance_offline.html" + }, + + "cancel": { + "message": "Cancel", + "description": "used in instance_offline.html" + }, + + "instanceIsOff": { + "message": "Instance is offline", + "description": "used in instance_offline.html" + }, + + "redirectionCanceled": { + "message": "Redirection canceled", + "description": "used in instance_offline.js" + } +} diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index f3982cd6..545fc9c4 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -7,6 +7,7 @@ import redditHelper from "./reddit.js"; import searchHelper from "./search.js"; import translateHelper from "./translate/translate.js"; import wikipediaHelper from "./wikipedia.js"; +import localise from '../localise.js' function getRandomInstance(instances) { return instances[~~(instances.length * Math.random())]; @@ -99,10 +100,12 @@ function processDefaultCustomInstances( nameCheckListElement.innerHTML = [ - `