1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-21 15:25:22 +03:00

Language user selectable in app

This commit is contained in:
Miguel Angel Mulero Martinez 2018-01-25 15:15:58 +01:00
parent fa3401c07c
commit c467f59f1d
8 changed files with 137 additions and 37 deletions

View file

@ -6,33 +6,36 @@
var i18n = {}
const languagesAvailables = ['ca', 'de', 'en', 'es', 'fr', 'ko'];
/**
* Functions that depend on the i18n framework
*/
i18n.init = function(cb) {
var defaultLocale = window.navigator.userLanguage || window.navigator.language;
getStoredUserLocale(function(userLanguage){
i18next
.use(i18nextXHRBackend)
.init({
lng: defaultLocale,
getAsync: false,
debug: true,
ns: ['messages'],
defaultNS:['messages'],
fallbackLng: 'en',
backend: { loadPath: '/_locales/{{lng}}/{{ns}}.json' }
}, function(err, t) {
if (err !== undefined) {
console.error('Error loading i18n ' + err);
} else {
console.log('i18n system loaded');
}
if (cb !== undefined) {
cb();
}
});
i18next
.use(i18nextXHRBackend)
.init({
lng: userLanguage,
getAsync: false,
debug: true,
ns: ['messages'],
defaultNS:['messages'],
fallbackLng: 'en',
backend: { loadPath: '/_locales/{{lng}}/{{ns}}.json' }
}, function(err, t) {
if (err !== undefined) {
console.error('Error loading i18n ' + err);
} else {
console.log('i18n system loaded');
}
if (cb !== undefined) {
cb();
}
});
});
}
i18n.getMessage = function(messageID, parameters) {
@ -43,10 +46,12 @@ i18n.getMessage = function(messageID, parameters) {
translatedString = translatedString.replace('$' + (index + 1), element);
});
}
return translatedString;
return translatedString;
}
i18n.getLanguagesAvailables = function() {
return languagesAvailables;
}
/**
@ -93,3 +98,28 @@ i18n.localizePage = function() {
return localized;
}
/*
* Reads the chrome config, if DEFAULT or there is no config stored,
* returns the current locale to the callback
*/
function getStoredUserLocale(cb) {
chrome.storage.local.get('userLanguageSelect', function (result) {
var userLanguage = 'DEFAULT';
if (result.userLanguageSelect) {
userLanguage = result.userLanguageSelect
}
userLanguage = getValidLocale(userLanguage);
cb(userLanguage);
})
}
function getValidLocale(userLocale) {
if (userLocale == 'DEFAULT') {
userLocale = window.navigator.userLanguage || window.navigator.language;
}
return userLocale;
}