meteoalarm-card
Version:
Meteoalarm card for Home Assistant Lovelace UI
77 lines (72 loc) • 2.18 kB
text/typescript
import * as bg from './languages/bg.json';
import * as ca from './languages/ca.json';
import * as cs from './languages/cs.json';
import * as de from './languages/de.json';
import * as en from './languages/en.json';
import * as es from './languages/es.json';
import * as et from './languages/et.json';
import * as fi from './languages/fi.json';
import * as fr from './languages/fr.json';
import * as hr from './languages/hr.json';
import * as it from './languages/it.json';
import * as nl from './languages/nl.json';
import * as pl from './languages/pl.json';
import * as pt from './languages/pt.json';
import * as sk from './languages/sk.json';
import * as sv from './languages/sv.json';
const languages: any = {
en: en,
de: de,
nl: nl,
pl: pl,
et: et,
fi: fi,
fr: fr,
it: it,
es: es,
hr: hr,
sk: sk,
sv: sv,
cs: cs,
pt: pt,
bg: bg,
ca: ca,
};
export function localize(string: string): string {
if (string.toLocaleLowerCase() != string) {
// eslint-disable-next-line no-console
console.warn(`MeteoalarmCard: Received invalid translation key: ${string}`);
}
string = string.toLocaleLowerCase();
let storedLang = localStorage.getItem('selectedLanguage');
if (storedLang === 'null') {
storedLang = null;
}
const lang = (storedLang || navigator.language.split('-')[0] || 'en')
.replace(/['"]+/g, '')
.replace('-', '_');
let translated: string | undefined = undefined;
// Try using specified language
try {
translated = string.split('.').reduce((o, i) => o[i], languages[lang]);
} catch (e) {
// eslint-disable-next-line no-console
console.warn(
`MeteoalarmCard: Translation for "${string}" is not specified in "${lang}" language.`,
);
}
// Try using english
if (translated == undefined) {
try {
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
} catch (e) {
// eslint-disable-next-line no-console
console.warn(
`MeteoalarmCard: Translation for "${string}" is not specified in fallback english language.`,
);
}
}
// Fall back to string
if (translated == undefined) translated = string;
return translated;
}