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