From 313bfc220fd2d257c3ee0d5fb1dc853a51872992 Mon Sep 17 00:00:00 2001
From: Manuel Kocher <manuel.kocher@tugraz.at>
Date: Wed, 19 Oct 2022 10:03:59 +0200
Subject: [PATCH] Add debug mode to translations s.t. only translation keys are
 shown in debug mode

---
 packages/common/i18next.js         | 16 +++++++++++-----
 packages/common/src/translation.js |  4 +++-
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/packages/common/i18next.js b/packages/common/i18next.js
index 7f9ae20f..69b5c67b 100644
--- a/packages/common/i18next.js
+++ b/packages/common/i18next.js
@@ -179,12 +179,18 @@ export async function setOverridesByGlobalCache(i18n, element) {
     for (let lng of i18n.languages) {
         // check if cacheOverrides throws error
         try {
-          cacheOverrides(element.langDir, lng);
-          translationCache[lng] = await translationCache[lng];
+          // in debug mode, remove all translations
+          if (window.location.hash.includes('debug')) {
+            i18n.removeResourceBundle(lng, namespace);
+          }
+          // else only add new override translations and remove old overrides
+          else {
+            cacheOverrides(element.langDir, lng);
+            translationCache[lng] = await translationCache[lng];
+          }
           i18n.removeResourceBundle(lng, overrideNamespace);
-          if (translationCache[lng] === undefined || translationCache[lng][tagName] === undefined) {
-            console.warn("Object with tagname " + tagName + " does not exist!");
-            //continue;
+          if (translationCache[lng] === undefined) {
+            console.warn("Translations for language " + lng + " do not exist!");
           }
           let resources = translationCache[lng];
           hasOverrides = true;
diff --git a/packages/common/src/translation.js b/packages/common/src/translation.js
index 9a47a434..77b81738 100644
--- a/packages/common/src/translation.js
+++ b/packages/common/src/translation.js
@@ -88,8 +88,10 @@ export class Translation extends DBPLitElement {
 
         // check if overrides have been loaded with overrideNamespace
         // and then check if given key exists in overrideNS
+        // if in debug mode, show keys without errors and warning
         let keyComment = "";
-        if (this._i18n.exists(overrideNamespace + ":" + this.key) && this._i18n.hasResourceBundle(this.lang, overrideNamespace)) {
+        if ((this._i18n.exists(overrideNamespace + ":" + this.key) && this._i18n.hasResourceBundle(this.lang, overrideNamespace))
+              || window.location.hash.includes('debug')) {
           keyComment = unsafeHTML("<!-- key: " + this.key + "-->");
         } else if (this._i18n.hasResourceBundle(this.lang, overrideNamespace)){
           keyComment = unsafeHTML("<!-- key '" + this.key + "' not found! -->");
-- 
GitLab