From 4dbce52ee1813fe408366981a189c57ac227f374 Mon Sep 17 00:00:00 2001
From: Manuel Kocher <manuel.kocher@tugraz.at>
Date: Tue, 24 May 2022 10:05:29 +0200
Subject: [PATCH] Enable namespaces for Translation component

---
 packages/common/src/i18n.js        | 12 +++++++-----
 packages/common/src/translation.js |  8 +++++++-
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/packages/common/src/i18n.js b/packages/common/src/i18n.js
index 0374a825..d9e9630a 100644
--- a/packages/common/src/i18n.js
+++ b/packages/common/src/i18n.js
@@ -7,25 +7,27 @@ export function createInstance() {
     return _createInstance({en: en, de: de}, 'de', 'en');
 }
 
-export async function createInstanceAsync(langFile) {
+export async function createInstanceAsync(langFile, namespace) {
+    if (namespace == undefined)
+      namespace = 'translation'
     // check if a path to language files is given
     if(langFile) {
       // request german lang file asynchronously
       let result = await
-          fetch(langFile + 'de/translation.json', {
+          fetch(langFile + 'de/' + namespace +'.json', {
               headers: {'Content-Type': 'application/json'},
           });
       const dynDe = await result.json();
 
       // request english lang file asynchronously
       result = await
-          fetch(langFile + 'en/translation.json', {
+          fetch(langFile + 'en/' + namespace + '.json', {
               headers: {'Content-Type': 'application/json'},
           });
       const dynEn = await result.json();
 
-      return _createInstance({en: dynEn, de: dynDe}, 'de', 'en');
+      return _createInstance({en: dynEn, de: dynDe}, 'de', 'en', namespace);
     }
 
-    return _createInstance({en: en, de: de}, 'de', 'en');
+    return _createInstance({en: en, de: de}, 'de', 'en', namespace);
 }
diff --git a/packages/common/src/translation.js b/packages/common/src/translation.js
index 04d010c4..874bcb0a 100644
--- a/packages/common/src/translation.js
+++ b/packages/common/src/translation.js
@@ -11,6 +11,7 @@ export class Translation extends DBPLitElement {
         this.lang = '';
         this.langFiles = '';
         this.interpolation = '';
+        this.namespace = '';
     }
 
     static get properties() {
@@ -21,6 +22,7 @@ export class Translation extends DBPLitElement {
             langFiles: {type: String, attribute: 'lang-files'},
             interpolation: {type: Object, attribute: 'var'},
             unsafe: {type: Boolean, attribute: 'unsafe'},
+            namespace: {type: String, attribute: 'ns'},
         };
     }
 
@@ -35,7 +37,11 @@ export class Translation extends DBPLitElement {
 
     connectedCallback() {
       super.connectedCallback();
-      this._i18n = createInstanceAsync(this.langFiles);
+      if (this.namespace == '')
+        this._i18n = createInstanceAsync(this.langFiles);
+      else {
+        this._i18n = createInstanceAsync(this.langFiles, this.namespace);
+      }
     }
 
     update(changedProperties) {
-- 
GitLab