diff --git a/src/util/hass-translation.html b/src/util/hass-translation.html index 3a40543881..3f551a8e5b 100644 --- a/src/util/hass-translation.html +++ b/src/util/hass-translation.html @@ -12,14 +12,13 @@ function getActiveTranslation() { // Search for a matching translation from most specific to general function languageGetTranslation(language) { - const subtags = language.toLowerCase().split('-'); + const lang = language.toLowerCase(); - for (let i = subtags.length; i >= 1; i--) { - const lang = subtags.slice(0, i).join('-'); - - if (lookup[lang]) { - return lookup[lang]; - } + if (lookup[lang]) { + return lookup[lang]; + } + if (lang.split('-')[0] === 'zh') { + return (lang === 'zh-cn' || lang === 'zh-sg') ? 'zh-Hans' : 'zh-Hant'; } return null; } @@ -46,10 +45,16 @@ function getActiveTranslation() { } } } else { - translation = languageGetTranslation(navigator.language || navigator.userLanguage); + translation = languageGetTranslation(navigator.language); if (translation) { return translation; } + if (navigator.language.includes('-')) { + translation = languageGetTranslation(navigator.language.split('-')[0]); + if (translation) { + return translation; + } + } } // Final fallback