Add localization
This commit is contained in:
@@ -15,9 +15,11 @@ import { BoilerplateCardConfig } from './types';
|
|||||||
import { actionHandler } from './action-handler-directive';
|
import { actionHandler } from './action-handler-directive';
|
||||||
import { CARD_VERSION } from './const';
|
import { CARD_VERSION } from './const';
|
||||||
|
|
||||||
|
import { localize } from './localize/localize';
|
||||||
|
|
||||||
/* eslint no-console: 0 */
|
/* eslint no-console: 0 */
|
||||||
console.info(
|
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: orange; font-weight: bold; background: black',
|
||||||
'color: white; font-weight: bold; background: dimgray',
|
'color: white; font-weight: bold; background: dimgray',
|
||||||
);
|
);
|
||||||
@@ -40,7 +42,7 @@ export class BoilerplateCard extends LitElement {
|
|||||||
public setConfig(config: BoilerplateCardConfig): void {
|
public setConfig(config: BoilerplateCardConfig): void {
|
||||||
// TODO Check for required fields and that they are of the proper format
|
// TODO Check for required fields and that they are of the proper format
|
||||||
if (!config || config.show_error) {
|
if (!config || config.show_error) {
|
||||||
throw new Error('Invalid configuration');
|
throw new Error(localize('common.invalid_configuration'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.test_gui) {
|
if (config.test_gui) {
|
||||||
@@ -66,7 +68,7 @@ export class BoilerplateCard extends LitElement {
|
|||||||
if (this._config.show_warning) {
|
if (this._config.show_warning) {
|
||||||
return html`
|
return html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="warning">Show Warning</div>
|
<div class="warning">${localize('common.show_warning')}</div>
|
||||||
</ha-card>
|
</ha-card>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"common": {
|
||||||
|
"version": "Version",
|
||||||
|
"invalid_configuration": "Invalid configuration",
|
||||||
|
"show_warning": "Show Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"common": {
|
||||||
|
"version": "VErsjon",
|
||||||
|
"invalid_configuration": "Ikke gyldig konfiguration",
|
||||||
|
"show_warning": "Vis advarsel"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user