Skip to content
Snippets Groups Projects
Commit 8b653471 authored by Reiter, Christoph's avatar Reiter, Christoph :snake:
Browse files

auth: port to one i18next instance per component instance

parent d3d63e46
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ module.exports = { ...@@ -6,6 +6,7 @@ module.exports = {
options: { options: {
debug: false, debug: false,
removeUnusedKeys: true, removeUnusedKeys: true,
func: {list: ['i18n.t', '_i18n.t']},
lngs: ['en','de'], lngs: ['en','de'],
resource: { resource: {
loadPath: 'src/i18n/{{lng}}/{{ns}}.json', loadPath: 'src/i18n/{{lng}}/{{ns}}.json',
......
import {i18n} from './i18n.js'; import {createInstance} from './i18n.js';
import JSONLD from '@dbp-toolkit/common/jsonld'; import JSONLD from '@dbp-toolkit/common/jsonld';
import {KeycloakWrapper} from './keycloak.js'; import {KeycloakWrapper} from './keycloak.js';
import {LoginStatus} from './util.js'; import {LoginStatus} from './util.js';
...@@ -32,6 +32,7 @@ export class AuthKeycloak extends AdapterLitElement { ...@@ -32,6 +32,7 @@ export class AuthKeycloak extends AdapterLitElement {
this.entryPointUrl = ''; this.entryPointUrl = '';
this._loginStatus = LoginStatus.UNKNOWN; this._loginStatus = LoginStatus.UNKNOWN;
this.requestedLoginStatus = LoginStatus.UNKNOWN; this.requestedLoginStatus = LoginStatus.UNKNOWN;
this._i18n = createInstance();
// Keycloak config // Keycloak config
this.keycloakUrl = null; this.keycloakUrl = null;
...@@ -49,7 +50,7 @@ export class AuthKeycloak extends AdapterLitElement { ...@@ -49,7 +50,7 @@ export class AuthKeycloak extends AdapterLitElement {
changedProperties.forEach((oldValue, propName) => { changedProperties.forEach((oldValue, propName) => {
switch (propName) { switch (propName) {
case 'lang': case 'lang':
i18n.changeLanguage(this.lang); this._i18n.changeLanguage(this.lang);
break; break;
case 'entryPointUrl': case 'entryPointUrl':
// for preloading the instance // for preloading the instance
......
import {i18n} from './i18n.js'; import {createInstance} from './i18n.js';
import {html} from 'lit-element'; import {html} from 'lit-element';
import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import {ScopedElementsMixin} from '@open-wc/scoped-elements';
import {AuthKeycloak} from './auth-keycloak.js'; import {AuthKeycloak} from './auth-keycloak.js';
...@@ -14,6 +14,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) { ...@@ -14,6 +14,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) {
this.entryPointUrl = ''; this.entryPointUrl = '';
this.auth = {}; this.auth = {};
this.noAuth = false; this.noAuth = false;
this._i18n = createInstance();
} }
static get scopedElements() { static get scopedElements() {
...@@ -36,7 +37,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) { ...@@ -36,7 +37,7 @@ export class DbpAuthDemo extends ScopedElementsMixin(DBPLitElement) {
update(changedProperties) { update(changedProperties) {
changedProperties.forEach((oldValue, propName) => { changedProperties.forEach((oldValue, propName) => {
if (propName === "lang") { if (propName === "lang") {
i18n.changeLanguage(this.lang); this._i18n.changeLanguage(this.lang);
} }
}); });
......
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 de from './i18n/de/translation.json';
import en from './i18n/en/translation.json'; import en from './i18n/en/translation.json';
export const i18n = createInstance({en: en, de: de}, 'de', 'en'); export function createInstance() {
\ No newline at end of file return _createInstance({en: en, de: de}, 'de', 'en');
}
export {setOverrides};
\ No newline at end of file
{ {
"login": "Einloggen", "login": "Einloggen",
"logout": "Ausloggen", "logout": "Ausloggen"
"profile": "Profil"
} }
{ {
"login": "Login", "login": "Login",
"logout": "Logout", "logout": "Logout"
"profile": "Profile"
} }
import {i18n} from './i18n.js'; import {createInstance} from './i18n.js';
import {html, css} from 'lit-element'; import {html, css} from 'lit-element';
import {unsafeHTML} from 'lit-html/directives/unsafe-html.js'; import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import {ScopedElementsMixin} from '@open-wc/scoped-elements';
...@@ -56,6 +56,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { ...@@ -56,6 +56,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) {
constructor() { constructor() {
super(); super();
this.lang = 'de'; this.lang = 'de';
this._i18n = createInstance();
this.auth = {}; this.auth = {};
} }
...@@ -93,7 +94,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { ...@@ -93,7 +94,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) {
update(changedProperties) { update(changedProperties) {
changedProperties.forEach((oldValue, propName) => { changedProperties.forEach((oldValue, propName) => {
if (propName === "lang") { if (propName === "lang") {
i18n.changeLanguage(this.lang); this._i18n.changeLanguage(this.lang);
} }
}); });
...@@ -150,6 +151,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) { ...@@ -150,6 +151,7 @@ export class LoginButton extends ScopedElementsMixin(AdapterLitElement) {
} }
render() { render() {
let i18n = this._i18n;
if (this.auth['login-status'] === LoginStatus.LOGGING_IN) { if (this.auth['login-status'] === LoginStatus.LOGGING_IN) {
// try to keep the layout the same to avoid layout shifts // try to keep the layout the same to avoid layout shifts
return html` return html`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment