From 19a88abd43fdfbcccc1244723a08d9c387c9db23 Mon Sep 17 00:00:00 2001 From: ludeeus Date: Sun, 15 Dec 2019 23:28:48 +0000 Subject: [PATCH] Add localization --- src/boilerplate-card.ts | 8 +++++--- src/localize/languages/en.json | 7 +++++++ src/localize/languages/nb.json | 7 +++++++ src/localize/localize.ts | 29 +++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/localize/languages/en.json create mode 100644 src/localize/languages/nb.json create mode 100644 src/localize/localize.ts diff --git a/src/boilerplate-card.ts b/src/boilerplate-card.ts index c87ad4c4..f5add909 100644 --- a/src/boilerplate-card.ts +++ b/src/boilerplate-card.ts @@ -15,9 +15,11 @@ import { BoilerplateCardConfig } from './types'; import { actionHandler } from './action-handler-directive'; import { CARD_VERSION } from './const'; +import { localize } from './localize/localize'; + /* eslint no-console: 0 */ console.info( - `%c BOILERPLATE-CARD \n%c Version ${CARD_VERSION} `, + `%c BOILERPLATE-CARD \n%c ${localize('common.version')} ${CARD_VERSION} `, 'color: orange; font-weight: bold; background: black', 'color: white; font-weight: bold; background: dimgray', ); @@ -40,7 +42,7 @@ export class BoilerplateCard extends LitElement { public setConfig(config: BoilerplateCardConfig): void { // TODO Check for required fields and that they are of the proper format if (!config || config.show_error) { - throw new Error('Invalid configuration'); + throw new Error(localize('common.invalid_configuration')); } if (config.test_gui) { @@ -66,7 +68,7 @@ export class BoilerplateCard extends LitElement { if (this._config.show_warning) { return html` -
Show Warning
+
${localize('common.show_warning')}
`; } diff --git a/src/localize/languages/en.json b/src/localize/languages/en.json new file mode 100644 index 00000000..d5440f55 --- /dev/null +++ b/src/localize/languages/en.json @@ -0,0 +1,7 @@ +{ + "common": { + "version": "Version", + "invalid_configuration": "Invalid configuration", + "show_warning": "Show Warning" + } +} diff --git a/src/localize/languages/nb.json b/src/localize/languages/nb.json new file mode 100644 index 00000000..b8e4a2be --- /dev/null +++ b/src/localize/languages/nb.json @@ -0,0 +1,7 @@ +{ + "common": { + "version": "VErsjon", + "invalid_configuration": "Ikke gyldig konfiguration", + "show_warning": "Vis advarsel" + } +} diff --git a/src/localize/localize.ts b/src/localize/localize.ts new file mode 100644 index 00000000..55cf5331 --- /dev/null +++ b/src/localize/localize.ts @@ -0,0 +1,29 @@ +import * as en from './languages/en.json'; +import * as nb from './languages/nb.json'; + +var languages = { + en: en, + nb: nb, +}; + +export function localize(string: string, search: string = '', replace: string = '') { + const section = string.split('.')[0]; + const key = string.split('.')[1]; + + const lang = (localStorage.getItem('selectedLanguage') || 'en').replace(/['"]+/g, '').replace('-', '_'); + + var tranlated: string; + + try { + tranlated = languages[lang][section][key]; + } catch (e) { + tranlated = languages['en'][section][key]; + } + + if (tranlated === undefined) tranlated = languages['en'][section][key]; + + if (search !== '' && replace !== '') { + tranlated = tranlated.replace(search, replace); + } + return tranlated; +}