Change language logic to avoid issue on Nest hub devices.
This commit is contained in:
@@ -8,17 +8,31 @@ const languages: any = {
|
||||
};
|
||||
|
||||
export function localize(string: string, search = '', replace = ''): string {
|
||||
// Get the browser language.
|
||||
let lang = localStorage
|
||||
.getItem('selectedLanguage')
|
||||
?.replace(/['"]+/g, '')
|
||||
.replace('-', '_');
|
||||
const canonicalizeLanguage = (language?: string | null): string | null => {
|
||||
if (!language) {
|
||||
return null;
|
||||
}
|
||||
return language.replace('-', '_');
|
||||
};
|
||||
|
||||
// If that's not specified, try to find the Home Assistant language.
|
||||
// Try the HA language first...
|
||||
let lang;
|
||||
const HALanguage = localStorage.getItem('selectedLanguage');
|
||||
if (HALanguage) {
|
||||
const selectedLanguage = canonicalizeLanguage(JSON.parse(HALanguage));
|
||||
if (selectedLanguage) {
|
||||
lang = selectedLanguage;
|
||||
}
|
||||
}
|
||||
|
||||
// Then fall back to the browser 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;
|
||||
for (const language of navigator.languages) {
|
||||
const canonicalLanguage = canonicalizeLanguage(language);
|
||||
if (canonicalLanguage && canonicalLanguage in languages) {
|
||||
lang = language;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Default to English is there's still no language setting.
|
||||
|
||||
Reference in New Issue
Block a user