Files
advanced-camera-card/src/localize/localize.ts
T

43 lines
1.2 KiB
TypeScript

import * as en from './languages/en.json';
import * as pt_BR from './languages/pt_br.json';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const languages: any = {
en: en,
pt_BR: pt_BR,
};
export function localize(string: string, search = '', replace = ''): string {
// Get the browser language.
let lang = localStorage
.getItem('selectedLanguage')
?.replace(/['"]+/g, '')
.replace('-', '_');
// If that's not specified, try to find the Home Assistant language.
if (!lang) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const hass = (document.querySelector('home-assistant') as any)?.hass;
lang = hass.selectedLanguage || hass.language;
}
// Default to English is there's still no language setting.
lang = lang || 'en';
let translated: string;
try {
translated = string.split('.').reduce((o, i) => o[i], languages[lang]);
} catch (e) {
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
}
if (translated === undefined) {
translated = string.split('.').reduce((o, i) => o[i], languages['en']);
}
if (search !== '' && replace !== '') {
translated = translated.replace(search, replace);
}
return translated;
}