Skip to content
Snippets Groups Projects
Commit ef4383c9 authored by Kocher, Manuel's avatar Kocher, Manuel
Browse files

Implement translation overrides in theme-switcher

parent 578885ba
No related branches found
No related tags found
No related merge requests found
...@@ -101,7 +101,7 @@ export class ThemeSwitcherDemo extends ScopedElementsMixin(LitElement) { ...@@ -101,7 +101,7 @@ export class ThemeSwitcherDemo extends ScopedElementsMixin(LitElement) {
<p>${i18n.t('intro')}</p> <p>${i18n.t('intro')}</p>
</div> </div>
<div class="content"> <div class="content">
<dbp-theme-switcher <dbp-theme-switcher subscribe="lang, lang-dir"
themes='[{"class": "light-theme", "icon": "sun", "name": "Light Mode"}, {"class": "dark-theme", "icon": "night", "name": "Dark Mode"}]'></dbp-theme-switcher> themes='[{"class": "light-theme", "icon": "sun", "name": "Light Mode"}, {"class": "dark-theme", "icon": "night", "name": "Dark Mode"}]'></dbp-theme-switcher>
</div> </div>
</section> </section>
......
import {createInstance as _createInstance} from '@dbp-toolkit/common/i18next.js'; import {createInstance as _createInstance, setOverridesByGlobalCache} 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';
...@@ -6,3 +6,5 @@ import en from './i18n/en/translation.json'; ...@@ -6,3 +6,5 @@ import en from './i18n/en/translation.json';
export function createInstance() { export function createInstance() {
return _createInstance({en: en, de: de}, 'de', 'en'); return _createInstance({en: en, de: de}, 'de', 'en');
} }
export{setOverridesByGlobalCache};
import {createInstance} from './i18n.js'; import {createInstance, setOverridesByGlobalCache} from './i18n.js';
import {html, css} from 'lit'; import {html, css} from 'lit';
import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import {ScopedElementsMixin} from '@open-wc/scoped-elements';
import {AdapterLitElement, Icon} from '@dbp-toolkit/common'; import {AdapterLitElement, Icon} from '@dbp-toolkit/common';
...@@ -15,6 +15,7 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) { ...@@ -15,6 +15,7 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) {
this.boundCloseAdditionalMenuHandler = this.hideModeMenu.bind(this); this.boundCloseAdditionalMenuHandler = this.hideModeMenu.bind(this);
this.detectBrowserDarkMode = false; this.detectBrowserDarkMode = false;
this.darkModeClass = 'dark-theme'; this.darkModeClass = 'dark-theme';
this.langDir = '';
} }
static get properties() { static get properties() {
...@@ -23,6 +24,7 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) { ...@@ -23,6 +24,7 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) {
lang: {type: String}, lang: {type: String},
themes: {type: Array, attribute: 'themes'}, themes: {type: Array, attribute: 'themes'},
darkModeThemeOverride: {type: String, attribute: 'dark-mode-theme-override'}, darkModeThemeOverride: {type: String, attribute: 'dark-mode-theme-override'},
langDir: {type: String, attribute: 'lang-dir'},
}; };
} }
...@@ -55,6 +57,11 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) { ...@@ -55,6 +57,11 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) {
this.loadTheme('light-theme'); this.loadTheme('light-theme');
this.detectInitialMode(); this.detectInitialMode();
}); });
if (this.langDir) {
for(let lng of this._i18n.languages) {
setOverridesByGlobalCache(this._i18n, this);
}
}
} }
detectInitialMode() { detectInitialMode() {
...@@ -158,8 +165,8 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) { ...@@ -158,8 +165,8 @@ export class ThemeSwitcher extends ScopedElementsMixin(AdapterLitElement) {
${commonStyles.getThemeCSS()} ${commonStyles.getThemeCSS()}
${commonStyles.getGeneralCSS()} ${commonStyles.getGeneralCSS()}
${commonStyles.getButtonCSS()} ${commonStyles.getButtonCSS()}
mode-button, button.button { mode-button, button.button {
border: none; border: none;
} }
......
...@@ -14,5 +14,5 @@ ...@@ -14,5 +14,5 @@
"de": "Theme Switcher Web Komponente", "de": "Theme Switcher Web Komponente",
"en": "Theme-Switcher web component" "en": "Theme-Switcher web component"
}, },
"subscribe": "lang" "subscribe": "lang, lang-dir"
} }
{ {
"dbp-translation": { "dbp-translation": {
"toolkit-showcase": "Dieser Text wird mithilfe von i18n aus einer benutzerdefinierten Sprachdatei gelesen und ins Englische übersetzt wenn man die Sprache auf Englisch stellt.", "toolkit-showcase": "Dieser Text wird mithilfe von i18n aus einer benutzerdefinierten Sprachdatei gelesen und ins Englische übersetzt wenn man die Sprache auf Englisch stellt.",
"toolkit-showcase-link": "Es können sogar links mittels <a href=\"{{- link1}}\">interpolation</a> und escaping dargestellt werden." "toolkit-showcase-link": "Es können sogar links mittels <a href=\"{{- link1}}\">interpolation</a> und escaping dargestellt werden.",
"color-mode": "Sollte nicht angezeigt werden. Dieser Text ist nur als test vorhanden."
},
"dbp-theme-switcher": {
"color-mode": "Theme ändern"
} }
} }
{ {
"dbp-translation": { "dbp-translation": {
"toolkit-showcase": "This text will be translated to german using i18n with a user defined language file when the language is changed to german.", "toolkit-showcase": "This text will be translated to german using i18n with a user defined language file when the language is changed to german.",
"toolkit-showcase-link": "Furthermore its possible to display links through <a href=\"{{- link1}}\">interpolation</a> and escaping." "toolkit-showcase-link": "Furthermore its possible to display links through <a href=\"{{- link1}}\">interpolation</a> and escaping.",
"color-mode": "This text is not supposed to be displayed. It is only here for testing."
},
"dbp-theme-switcher": {
"color-mode": "Change theme"
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment