From 8b653471c9bd85a07d3ee7ef110cb6438727959e Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 10 Jun 2021 16:18:41 +0200 Subject: [PATCH] auth: port to one i18next instance per component instance --- packages/auth/i18next-scanner.config.js | 1 + packages/auth/src/auth-keycloak.js | 5 +++-- packages/auth/src/dbp-auth-demo.js | 5 +++-- packages/auth/src/i18n.js | 8 ++++++-- packages/auth/src/i18n/de/translation.json | 3 +-- packages/auth/src/i18n/en/translation.json | 3 +-- packages/auth/src/login-button.js | 6 ++++-- 7 files changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/auth/i18next-scanner.config.js b/packages/auth/i18next-scanner.config.js index 8c277798..aeb8fdb6 100644 --- a/packages/auth/i18next-scanner.config.js +++ b/packages/auth/i18next-scanner.config.js @@ -6,6 +6,7 @@ module.exports = { options: { debug: false, removeUnusedKeys: true, + func: {list: ['i18n.t', '_i18n.t']}, lngs: ['en','de'], resource: { loadPath: 'src/i18n/{{lng}}/{{ns}}.json', diff --git a/packages/auth/src/auth-keycloak.js b/packages/auth/src/auth-keycloak.js index ab5c0020..f5b5ab71 100644 --- a/packages/auth/src/auth-keycloak.js +++ b/packages/auth/src/auth-keycloak.js @@ -1,4 +1,4 @@ -import {i18n} from './i18n.js'; +import {createInstance} from './i18n.js'; import JSONLD from '@dbp-toolkit/common/jsonld'; import {KeycloakWrapper} from './keycloak.js'; import {LoginStatus} from './util.js'; @@ -32,6 +32,7 @@ export class AuthKeycloak extends AdapterLitElement { this.entryPointUrl = ''; this._loginStatus = LoginStatus.UNKNOWN; this.requestedLoginStatus = LoginStatus.UNKNOWN; + this._i18n = createInstance(); // Keycloak config this.keycloakUrl = null; @@ -49,7 +50,7 @@ export class AuthKeycloak extends AdapterLitElement { changedProperties.forEach((oldValue, propName) => { switch (propName) { case 'lang': - i18n.changeLanguage(this.lang); + this._i18n.changeLanguage(this.lang); break; case 'entryPointUrl': // for preloading the instance diff --git a/packages/auth/src/dbp-auth-demo.js b/packages/auth/src/dbp-auth-demo.js index 96ed5a0f..3b9170f6 100644 --- a/packages/auth/src/dbp-auth-demo.js +++ b/packages/auth/src/dbp-auth-demo.js @@ -1,4 +1,4 @@ -import {i18n} from './i18n.js'; +import {createInstance} from './i18n.js'; import {html} from 'lit-element'; import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import {AuthKeycloak} from './auth-keycloak.js'; @@ -14,6 +14,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) { this.entryPointUrl = ''; this.auth = {}; this.noAuth = false; + this._i18n = createInstance(); } static get scopedElements() { @@ -36,7 +37,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) { update(changedProperties) { changedProperties.forEach((oldValue, propName) => { if (propName === "lang") { - i18n.changeLanguage(this.lang); + this._i18n.changeLanguage(this.lang); } }); diff --git a/packages/auth/src/i18n.js b/packages/auth/src/i18n.js index 498d9f03..fbc1b032 100644 --- a/packages/auth/src/i18n.js +++ b/packages/auth/src/i18n.js @@ -1,6 +1,10 @@ -import {createInstance} from '@dbp-toolkit/common/i18next.js'; +import {createInstance as _createInstance, setOverrides} from '@dbp-toolkit/common/i18next.js'; import de from './i18n/de/translation.json'; import en from './i18n/en/translation.json'; -export const i18n = createInstance({en: en, de: de}, 'de', 'en'); \ No newline at end of file +export function createInstance() { + return _createInstance({en: en, de: de}, 'de', 'en'); +} + +export {setOverrides}; \ No newline at end of file diff --git a/packages/auth/src/i18n/de/translation.json b/packages/auth/src/i18n/de/translation.json index 761eaa9c..48287f0d 100644 --- a/packages/auth/src/i18n/de/translation.json +++ b/packages/auth/src/i18n/de/translation.json @@ -1,5 +1,4 @@ { "login": "Einloggen", - "logout": "Ausloggen", - "profile": "Profil" + "logout": "Ausloggen" } diff --git a/packages/auth/src/i18n/en/translation.json b/packages/auth/src/i18n/en/translation.json index fc4a7710..8c6f4faa 100644 --- a/packages/auth/src/i18n/en/translation.json +++ b/packages/auth/src/i18n/en/translation.json @@ -1,5 +1,4 @@ { "login": "Login", - "logout": "Logout", - "profile": "Profile" + "logout": "Logout" } diff --git a/packages/auth/src/login-button.js b/packages/auth/src/login-button.js index cd638494..63e7353d 100644 --- a/packages/auth/src/login-button.js +++ b/packages/auth/src/login-button.js @@ -1,4 +1,4 @@ -import {i18n} from './i18n.js'; +import {createInstance} from './i18n.js'; import {html, css} from 'lit-element'; import {unsafeHTML} from 'lit-html/directives/unsafe-html.js'; import {ScopedElementsMixin} from '@open-wc/scoped-elements'; @@ -56,6 +56,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { constructor() { super(); this.lang = 'de'; + this._i18n = createInstance(); this.auth = {}; } @@ -93,7 +94,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { update(changedProperties) { changedProperties.forEach((oldValue, propName) => { if (propName === "lang") { - i18n.changeLanguage(this.lang); + this._i18n.changeLanguage(this.lang); } }); @@ -150,6 +151,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { } render() { + let i18n = this._i18n; if (this.auth['login-status'] === LoginStatus.LOGGING_IN) { // try to keep the layout the same to avoid layout shifts return html` -- GitLab