Language settings now work, both global and per user
Still need to test if reload of current user settings works upon change of those.
This commit is contained in:
parent
f98ebaafee
commit
ddb588e751
5 changed files with 25 additions and 14 deletions
|
|
@ -109,13 +109,13 @@ def get_locale():
|
|||
userid = g.identity.id
|
||||
try:
|
||||
user_language = userManager.getUserSetting(userid, ("interface", "language"))
|
||||
if user_language is not None:
|
||||
if user_language is not None and not user_language == "_default":
|
||||
return Locale.negotiate([user_language], LANGUAGES)
|
||||
except octoprint.users.UnknownUser:
|
||||
pass
|
||||
|
||||
default_language = settings().get(["appearance", "defaultLanguage"])
|
||||
if default_language and default_language in LANGUAGES:
|
||||
if default_language is not None and not default_language == "_default" and default_language in LANGUAGES:
|
||||
return Locale.negotiate([default_language], LANGUAGES)
|
||||
|
||||
return request.accept_languages.best_match(LANGUAGES)
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ default_settings = {
|
|||
"name": "",
|
||||
"color": "default",
|
||||
"colorTransparent": False,
|
||||
"defaultLanguage": None,
|
||||
"defaultLanguage": "_default",
|
||||
"components": {
|
||||
"order": {
|
||||
"navbar": ["settings", "systemmenu", "login"],
|
||||
|
|
|
|||
|
|
@ -27,6 +27,18 @@ $(function() {
|
|||
self.subscribers.push(callback);
|
||||
};
|
||||
|
||||
self.reloadUser = function() {
|
||||
if (self.currentUser() == undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: API_BASEURL + "users/" + self.currentUser().name,
|
||||
type: "GET",
|
||||
success: self.fromResponse
|
||||
})
|
||||
};
|
||||
|
||||
self.requestData = function() {
|
||||
$.ajax({
|
||||
url: API_BASEURL + "login",
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
}
|
||||
};
|
||||
|
||||
var auto_locale = {language: undefined, display: gettext("Autodetect from browser"), english: undefined};
|
||||
var auto_locale = {language: "_default", display: gettext("Autodetect from browser"), english: undefined};
|
||||
self.locales = ko.observableArray([auto_locale].concat(_.sortBy(_.values(AVAILABLE_LOCALES), function(n) {
|
||||
return n.display;
|
||||
})));
|
||||
|
|
@ -194,10 +194,9 @@ $(function() {
|
|||
self.appearance_name(response.appearance.name);
|
||||
self.appearance_color(response.appearance.color);
|
||||
self.appearance_colorTransparent(response.appearance.colorTransparent);
|
||||
self.appearance_defaultLanguage("_default");
|
||||
if (_.includes(self.locale_languages, response.appearance.defaultLanguage)) {
|
||||
self.appearance_defaultLanguage(response.appearance.defaultLanguage);
|
||||
} else {
|
||||
self.appearance_defaultLanguage(undefined);
|
||||
}
|
||||
|
||||
self.printer_defaultExtrusionLength(response.printer.defaultExtrusionLength);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ $(function() {
|
|||
|
||||
self.userSettingsDialog = undefined;
|
||||
|
||||
var auto_locale = {language: undefined, display: gettext("Site default"), english: undefined};
|
||||
var auto_locale = {language: "_default", display: gettext("Site default"), english: undefined};
|
||||
self.locales = ko.observableArray([auto_locale].concat(_.sortBy(_.values(AVAILABLE_LOCALES), function(n) {
|
||||
return n.display;
|
||||
})));
|
||||
|
|
@ -20,14 +20,13 @@ $(function() {
|
|||
|
||||
self.currentUser = ko.observable(undefined);
|
||||
self.currentUser.subscribe(function(newUser) {
|
||||
if (newUser == undefined) {
|
||||
self.access_password(undefined);
|
||||
self.access_repeatedPassword(undefined);
|
||||
self.access_apikey(undefined);
|
||||
self.interface_language(LOCALE);
|
||||
} else {
|
||||
self.access_password(undefined);
|
||||
self.access_repeatedPassword(undefined);
|
||||
self.access_apikey(undefined);
|
||||
self.interface_language("_default");
|
||||
|
||||
if (newUser != undefined) {
|
||||
self.access_apikey(newUser.apikey);
|
||||
self.interface_language(undefined);
|
||||
if (newUser.settings.hasOwnProperty("interface") && newUser.settings.interface.hasOwnProperty("language")) {
|
||||
self.interface_language(newUser.settings.interface.language);
|
||||
}
|
||||
|
|
@ -65,6 +64,7 @@ $(function() {
|
|||
// close dialog
|
||||
self.currentUser(undefined);
|
||||
self.userSettingsDialog.modal("hide");
|
||||
self.loginState.reloadUser();
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue