Newer
Older
import {html} from 'lit-element';
import {LanguageSelect} from './language-select.js';
import * as commonUtils from '@dbp-toolkit/common/utils';
import { ScopedElementsMixin } from '@open-wc/scoped-elements';
import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
import {Provider} from "@dbp-toolkit/provider";

Reiter, Christoph
committed
import {i18n} from './i18n.js';

Reiter, Christoph
committed
// This is an example on how to override translations at runtime
let OVERRIDES = {
'de': {
'translation': {
'demo': 'Überschrieben'
}
},
'en': {
'translation': {
'demo': 'Overridden'
}
}
};
function applyOverrides(i18n, namespace, overrides) {
for(let lang of Object.keys(overrides)) {
let data = overrides[lang][namespace];
if (data !== undefined) {
i18n.addResourceBundle(lang, namespace + '-override', data);
}
}
}
class LanguageSelectDisplay extends AdapterLitElement {
constructor() {
super();
this.lang = 'de';

Reiter, Christoph
committed
this._i18n = i18n.cloneInstance();
// FIXME: this overrides the translations for all clones
applyOverrides(this._i18n, 'translation', OVERRIDES);
}
static get properties() {
return {
lang: {type: String},
};
}

Reiter, Christoph
committed
update(changedProperties) {
changedProperties.forEach((oldValue, propName) => {
switch (propName) {
case 'lang':
this._i18n.changeLanguage(this.lang);
}
});
super.update(changedProperties);
}

Reiter, Christoph
committed
return html`<b>${this.lang}: ${this._i18n.t('demo')}</b>`;
export class LanguageSelectDemo extends ScopedElementsMixin(AdapterLitElement) {
constructor() {
super();
}
'dbp-language-select': LanguageSelect,
'dbp-language-select-display': LanguageSelectDisplay,
'dbp-provider': Provider,
render() {
return html`
<dbp-provider lang="">
Select 1: <dbp-language-select subscribe="lang"></dbp-language-select>
<br>
<br>
Select 2: <dbp-language-select subscribe="lang"></dbp-language-select>
<br>
<br>
Current language 1: <dbp-language-select-display subscribe="lang"></dbp-language-select-display>
<br>
<br>
Current language 2: <dbp-language-select-display subscribe="lang"></dbp-language-select-display>
</dbp-provider>
commonUtils.defineCustomElement('dbp-language-select-demo', LanguageSelectDemo);