This commit is contained in:
hujambo-dunia
2022-06-16 22:49:28 -04:00
parent b460290ade
commit 2bc63dce9a
2 changed files with 52 additions and 19 deletions
+2 -1
View File
@@ -77,7 +77,8 @@ GalaxyApp.prototype._init = function (options, bootstrapped) {
this._initUser(options.user || {});
this.debug("GalaxyApp.user: ", this.user);
this._initUserLocale();
this.localize._setUserLocale(this.user, this.config);
this.localize._getUserLocale();
this.debug("currentLocale: ", sessionStorage.getItem("currentLocale"));
this._setUpListeners();
+50 -18
View File
@@ -1,23 +1,5 @@
// eslint-disable-next-line no-undef
define(["i18n!nls/locale"], function (localeStrings) {
// =============================================================================
/** Simple string replacement localization. Language data from src/nls */
if (Object.prototype.hasOwnProperty.call(localeStrings, "__root")) {
//console.debug( 'amdi18n+webpack localization for ' + locale + ' loaded' );
const locale = sessionStorage.getItem("currentLocale");
if (locale) {
localeStrings =
localeStrings["__" + locale] || localeStrings["__" + locale.split("-")[0]] || localeStrings.__root;
}
// } else {
// console.debug( 'i18n+requirejs localization for ' + locale + ' loaded' );
}
// TODO: when this is no longer necessary remove this, i18n.js, and the resolveModule in config
// -----------------------------------------------------------------------------
/** Attempt to get a localized string for strToLocalize. If not found, return
* the original strToLocalize.
@@ -42,6 +24,56 @@ define(["i18n!nls/locale"], function (localeStrings) {
};
localize.cacheNonLocalized = false;
localize._setUserLocale = function _setUserLocale(user, config) {
// Choose best locale
const global_locale =
config.default_locale && config.default_locale != "auto" ? config.default_locale.toLowerCase() : false;
let extra_user_preferences = {};
if (user && user.attributes.preferences && "extra_user_preferences" in user.attributes.preferences) {
extra_user_preferences = JSON.parse(user.attributes.preferences.extra_user_preferences);
}
let user_locale =
"localization|locale" in extra_user_preferences
? extra_user_preferences["localization|locale"].toLowerCase()
: false;
if (user_locale == "auto") {
user_locale = false;
}
const nav_locale =
typeof navigator === "undefined"
? "__root"
: (navigator.language || navigator.userLanguage || "__root").toLowerCase();
const locale = user_locale || nav_locale || global_locale;
sessionStorage.setItem("currentLocale", locale);
};
// =============================================================================
/** Simple string replacement localization. Language data from src/nls */
localize._getUserLocale = function _getUserLocale(user, config) {
let locale = null;
if (Object.prototype.hasOwnProperty.call(localeStrings, "__root")) {
//console.debug( 'amdi18n+webpack localization for ' + locale + ' loaded' );
locale = sessionStorage.getItem("currentLocale");
if (locale) {
localeStrings =
localeStrings["__" + locale] || localeStrings["__" + locale.split("-")[0]] || localeStrings.__root;
}
// } else {
// console.debug( 'i18n+requirejs localization for ' + locale + ' loaded' );
}
return locale;
// TODO: when this is no longer necessary remove this, i18n.js, and the resolveModule in config
};
// =============================================================================
return localize;
});