mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-14 21:06:34 +00:00
Merge pull request #532 from andrey-git/translations
Make translation utils properly handle null selected language.
This commit is contained in:
commit
7479aeceee
@ -6,7 +6,7 @@ function getActiveTranslation() {
|
|||||||
// report languages with specific cases.
|
// report languages with specific cases.
|
||||||
const lookup = {};
|
const lookup = {};
|
||||||
/* eslint-disable no-undef */
|
/* eslint-disable no-undef */
|
||||||
Object.keys(window.translationMetadata).forEach(function (tr) {
|
Object.keys(window.translationMetadata).forEach((tr) => {
|
||||||
lookup[tr.toLowerCase()] = tr;
|
lookup[tr.toLowerCase()] = tr;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ function getActiveTranslation() {
|
|||||||
function languageGetTranslation(language) {
|
function languageGetTranslation(language) {
|
||||||
const subtags = language.toLowerCase().split('-');
|
const subtags = language.toLowerCase().split('-');
|
||||||
|
|
||||||
for (var i = subtags.length; i >= 1; i--) {
|
for (let i = subtags.length; i >= 1; i--) {
|
||||||
const lang = subtags.slice(0, i).join('-');
|
const lang = subtags.slice(0, i).join('-');
|
||||||
|
|
||||||
if (lookup[lang]) {
|
if (lookup[lang]) {
|
||||||
@ -24,14 +24,22 @@ function getActiveTranslation() {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var translation = null;
|
let translation = null;
|
||||||
|
let selectedLanguage;
|
||||||
if (window.localStorage.selectedLanguage) {
|
if (window.localStorage.selectedLanguage) {
|
||||||
translation = languageGetTranslation(JSON.parse(window.localStorage.selectedLanguage));
|
try {
|
||||||
|
selectedLanguage = JSON.parse(window.localStorage.selectedLanguage);
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore parsing error.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selectedLanguage) {
|
||||||
|
translation = languageGetTranslation(selectedLanguage);
|
||||||
if (translation) {
|
if (translation) {
|
||||||
return translation;
|
return translation;
|
||||||
}
|
}
|
||||||
} else if (navigator.languages) {
|
} else if (navigator.languages) {
|
||||||
for (var i = 0; i < navigator.languages.length; i++) {
|
for (let i = 0; i < navigator.languages.length; i++) {
|
||||||
translation = languageGetTranslation(navigator.languages[i]);
|
translation = languageGetTranslation(navigator.languages[i]);
|
||||||
if (translation) {
|
if (translation) {
|
||||||
return translation;
|
return translation;
|
||||||
@ -54,7 +62,14 @@ const translations = {};
|
|||||||
|
|
||||||
window.getTranslation = function (translationInput) {
|
window.getTranslation = function (translationInput) {
|
||||||
const translation = translationInput || getActiveTranslation();
|
const translation = translationInput || getActiveTranslation();
|
||||||
const translationFingerprint = window.translationMetadata[translation].fingerprint;
|
const metadata = window.translationMetadata[translation];
|
||||||
|
if (!metadata) {
|
||||||
|
if (translationInput !== 'en') {
|
||||||
|
return window.getTranslation('en');
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error('Language en not found in metadata'));
|
||||||
|
}
|
||||||
|
const translationFingerprint = metadata.fingerprint;
|
||||||
|
|
||||||
// Create a promise to fetch translation from the server
|
// Create a promise to fetch translation from the server
|
||||||
if (!translations[translationFingerprint]) {
|
if (!translations[translationFingerprint]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user