UNPKG

purifier-card

Version:

Air Purifier card for Home Assistant Lovelace UI

91 lines (78 loc) 2.14 kB
// Borrowed from: // https://github.com/custom-cards/boilerplate-card/blob/master/src/localize/localize.ts import * as en from './translations/en.json'; import * as uk from './translations/uk.json'; import * as tr from './translations/tr.json'; import * as fr from './translations/fr.json'; import * as nb from './translations/nb.json'; import * as pl from './translations/pl.json'; import * as bg from './translations/bg.json'; import * as zh_Hans from './translations/zh-Hans.json'; import * as zh_Hant from './translations/zh-Hant.json'; import * as de from './translations/de.json'; import * as ca from './translations/ca.json'; import * as ru from './translations/ru.json'; import * as it from './translations/it.json'; import * as cs from './translations/cs.json'; import * as nl from './translations/nl.json'; import * as es from './translations/es.json'; import * as sk from './translations/sk.json'; import * as pt from './translations/pt.json'; type Translations = { [key: string]: { [key: string]: string; }; }; const languages: Record<string, Translations> = { en, uk, fr, tr, nb, pl, bg, zh_Hans, zh_Hant, de, ca, ru, it, cs, nl, es, sk, pt, }; const DEFAULT_LANG = 'en'; export default function localize( str: string, search?: string, replace?: string, ): string | undefined { const [section, key] = str.toLowerCase().split('.'); let langStored: string | null = null; try { langStored = JSON.parse(localStorage.getItem('selectedLanguage') ?? ''); } catch { langStored = localStorage.getItem('selectedLanguage'); } const lang = (langStored || navigator.language.split('-')[0] || DEFAULT_LANG) .replace(/['"]+/g, '') .replace('-', '_'); let translated; try { translated = languages[lang][section][key]; } catch { translated = languages[DEFAULT_LANG][section][key]; } if (translated === undefined) { translated = languages[DEFAULT_LANG][section][key]; } if (translated === undefined) { return; } if (search && replace) { translated = translated?.replace(search, replace); } return translated; }