From e43437ad74a66df1655c705231419a11a81fc632 Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 1 Jul 2021 16:42:10 +0200 Subject: [PATCH] data-table-view: one i18next instance per element --- .../data-table-view/src/data-table-view.js | 8 +++-- .../src/dbp-data-table-view-demo.js | 7 +++-- packages/data-table-view/src/i18n.js | 29 +++---------------- 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/packages/data-table-view/src/data-table-view.js b/packages/data-table-view/src/data-table-view.js index fb9690ba..609e642c 100644 --- a/packages/data-table-view/src/data-table-view.js +++ b/packages/data-table-view/src/data-table-view.js @@ -7,7 +7,7 @@ import bttn from 'datatables.net-buttons-dt'; import bttn2 from 'datatables.net-buttons'; import bttnHtml5 from 'datatables.net-buttons/js/buttons.html5.js'; import bttnPrint from 'datatables.net-buttons/js/buttons.print.js'; -import {i18n} from './i18n'; +import {createInstance} from './i18n'; import {css, html, unsafeCSS} from 'lit-element'; import de from '../assets/datatables/i18n/German'; import en from '../assets/datatables/i18n/English'; @@ -28,7 +28,8 @@ bttnPrint(window, $); export class DataTableView extends AdapterLitElement { constructor() { super(); - this.lang = 'de'; + this._i18n = createInstance(); + this.lang = this._i18n.language; // datatable properties this.table = null; this.responsive = null; @@ -100,6 +101,7 @@ export class DataTableView extends AdapterLitElement { set_datatable(data, languageChange = false) { const lang_obj = this.lang === 'de' ? de : en; + const i18n = this._i18n; if (typeof this.columns === 'undefined' || !this.columns.length) { if (data.length) @@ -229,7 +231,7 @@ export class DataTableView extends AdapterLitElement { changedProperties.forEach((oldValue, propName) => { if (propName === "lang") { - i18n.changeLanguage(this.lang).catch(e => { console.log(e);}); + this._i18n.changeLanguage(this.lang).catch(e => { console.log(e);}); languageChange = true; } }); diff --git a/packages/data-table-view/src/dbp-data-table-view-demo.js b/packages/data-table-view/src/dbp-data-table-view-demo.js index dc2bb24d..7544fdc0 100644 --- a/packages/data-table-view/src/dbp-data-table-view-demo.js +++ b/packages/data-table-view/src/dbp-data-table-view-demo.js @@ -1,6 +1,6 @@ import {AuthKeycloak, LoginButton} from '@dbp-toolkit/auth'; import {DataTableView} from './data-table-view.js'; -import {i18n} from './i18n'; +import {createInstance} from './i18n'; import {css, html} from 'lit-element'; import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import * as commonUtils from '@dbp-toolkit/common/utils'; @@ -10,7 +10,8 @@ import DBPLitElement from "@dbp-toolkit/common/dbp-lit-element"; export class DataTableViewDemo extends ScopedElementsMixin(DBPLitElement) { constructor() { super(); - this.lang = 'de'; + this._i18n = createInstance(); + this.lang = this._i18n.language; this.entryPointUrl = ''; this.noAuth = false; } @@ -100,7 +101,7 @@ export class DataTableViewDemo 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/data-table-view/src/i18n.js b/packages/data-table-view/src/i18n.js index a2380632..975c1993 100644 --- a/packages/data-table-view/src/i18n.js +++ b/packages/data-table-view/src/i18n.js @@ -1,29 +1,8 @@ -import i18next from 'i18next'; +import {createInstance as _createInstance} from '@dbp-toolkit/common/i18next.js'; import de from './i18n/de/translation.json'; import en from './i18n/en/translation.json'; -const i18n = i18next.createInstance(); - -i18n.init({ - lng: 'de', - fallbackLng: ['de'], - debug: false, - initImmediate: false, // Don't init async - resources: { - en: {translation: en}, - de: {translation: de} - }, -}); - -console.assert(i18n.isInitialized); - -function dateTimeFormat(date, options) { - return new Intl.DateTimeFormat(i18n.languages, options).format(date); -} - -function numberFormat(number, options) { - return new Intl.NumberFormat(i18n.languages, options).format(number); -} - -export {i18n, dateTimeFormat, numberFormat}; +export function createInstance() { + return _createInstance({en: en, de: de}, 'de', 'en'); +} \ No newline at end of file -- GitLab