From ba46befde4d3e3657254690cfa6d7a3cc307614a Mon Sep 17 00:00:00 2001 From: schlagmichdoch Date: Fri, 7 Jul 2023 14:58:15 +0200 Subject: [PATCH] include translations for about buttons and implement translation fallback if used translation is not complete --- public/index.html | 14 ++++----- public/lang/en.json | 8 +++-- public/scripts/localization.js | 30 +++++++++++++------ public_included_ws_fallback/index.html | 14 ++++----- public_included_ws_fallback/lang/en.json | 8 +++-- .../scripts/localization.js | 30 +++++++++++++------ 6 files changed, 68 insertions(+), 36 deletions(-) diff --git a/public/index.html b/public/index.html index 15b82da..21f6005 100644 --- a/public/index.html +++ b/public/index.html @@ -83,7 +83,7 @@ - +
@@ -161,7 +161,7 @@

Edit Paired Devices

-
+

@@ -287,7 +287,7 @@

- + @@ -303,22 +303,22 @@
The easiest way to transfer files across devices
- + - + - + - + diff --git a/public/lang/en.json b/public/lang/en.json index 7ae2e56..8ad7b7c 100644 --- a/public/lang/en.json +++ b/public/lang/en.json @@ -78,8 +78,12 @@ "download-again": "Download again" }, "about": { - "close-about-aria-label": "Close About PairDrop", - "claim": "The easiest way to transfer files across devices" + "close-about_aria-label": "Close About PairDrop", + "claim": "The easiest way to transfer files across devices", + "github_title": "PairDrop on Github", + "buy-me-a-coffee_title": "Buy me a coffee!", + "tweet_title": "Tweet about PairDrop", + "faq_title": "Frequently asked questions" }, "notifications": { "display-name-changed-permanently": "Display name is changed permanently.", diff --git a/public/scripts/localization.js b/public/scripts/localization.js index d09d5c0..c7d9716 100644 --- a/public/scripts/localization.js +++ b/public/scripts/localization.js @@ -2,8 +2,8 @@ class Localization { constructor() { Localization.defaultLocale = "en"; Localization.supportedLocales = ["en"]; - Localization.translations = {}; + Localization.defaultTranslations = {}; const initialLocale = Localization.supportedOrDefault(Localization.browserLocales()); @@ -29,13 +29,13 @@ class Localization { static async setLocale(newLocale) { if (newLocale === Localization.locale) return false; + const firstTranslation = !Localization.locale + Localization.defaultTranslations = await Localization.fetchTranslationsFor(Localization.defaultLocale); const newTranslations = await Localization.fetchTranslationsFor(newLocale); if(!newTranslations) return false; - const firstTranslation = !Localization.locale - Localization.locale = newLocale; Localization.translations = newTranslations; @@ -65,18 +65,20 @@ class Localization { for (let i in attrs) { let attr = attrs[i]; if (attr === "text") { - element.innerText = await Localization.getTranslation(key); + element.innerText = Localization.getTranslation(key); } else { - element.attr = await Localization.getTranslation(key, attr); + element.attr = Localization.getTranslation(key, attr); } } } - static getTranslation(key, attr, data) { + static getTranslation(key, attr, data, useDefault=false) { const keys = key.split("."); - let translationCandidates = Localization.translations; + let translationCandidates = useDefault + ? Localization.defaultTranslations + : Localization.translations; for (let i=0; i
- +
@@ -166,7 +166,7 @@

Edit Paired Devices

-
+
The easiest way to transfer files across devices
- + - + - + - + diff --git a/public_included_ws_fallback/lang/en.json b/public_included_ws_fallback/lang/en.json index 7ae2e56..8ad7b7c 100644 --- a/public_included_ws_fallback/lang/en.json +++ b/public_included_ws_fallback/lang/en.json @@ -78,8 +78,12 @@ "download-again": "Download again" }, "about": { - "close-about-aria-label": "Close About PairDrop", - "claim": "The easiest way to transfer files across devices" + "close-about_aria-label": "Close About PairDrop", + "claim": "The easiest way to transfer files across devices", + "github_title": "PairDrop on Github", + "buy-me-a-coffee_title": "Buy me a coffee!", + "tweet_title": "Tweet about PairDrop", + "faq_title": "Frequently asked questions" }, "notifications": { "display-name-changed-permanently": "Display name is changed permanently.", diff --git a/public_included_ws_fallback/scripts/localization.js b/public_included_ws_fallback/scripts/localization.js index d09d5c0..c7d9716 100644 --- a/public_included_ws_fallback/scripts/localization.js +++ b/public_included_ws_fallback/scripts/localization.js @@ -2,8 +2,8 @@ class Localization { constructor() { Localization.defaultLocale = "en"; Localization.supportedLocales = ["en"]; - Localization.translations = {}; + Localization.defaultTranslations = {}; const initialLocale = Localization.supportedOrDefault(Localization.browserLocales()); @@ -29,13 +29,13 @@ class Localization { static async setLocale(newLocale) { if (newLocale === Localization.locale) return false; + const firstTranslation = !Localization.locale + Localization.defaultTranslations = await Localization.fetchTranslationsFor(Localization.defaultLocale); const newTranslations = await Localization.fetchTranslationsFor(newLocale); if(!newTranslations) return false; - const firstTranslation = !Localization.locale - Localization.locale = newLocale; Localization.translations = newTranslations; @@ -65,18 +65,20 @@ class Localization { for (let i in attrs) { let attr = attrs[i]; if (attr === "text") { - element.innerText = await Localization.getTranslation(key); + element.innerText = Localization.getTranslation(key); } else { - element.attr = await Localization.getTranslation(key, attr); + element.attr = Localization.getTranslation(key, attr); } } } - static getTranslation(key, attr, data) { + static getTranslation(key, attr, data, useDefault=false) { const keys = key.split("."); - let translationCandidates = Localization.translations; + let translationCandidates = useDefault + ? Localization.defaultTranslations + : Localization.translations; for (let i=0; i