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:
Gina Häußge 2015-03-18 15:49:29 +01:00
parent f98ebaafee
commit ddb588e751
5 changed files with 25 additions and 14 deletions

View file

@ -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)

View file

@ -168,7 +168,7 @@ default_settings = {
"name": "",
"color": "default",
"colorTransparent": False,
"defaultLanguage": None,
"defaultLanguage": "_default",
"components": {
"order": {
"navbar": ["settings", "systemmenu", "login"],

View file

@ -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",

View file

@ -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);

View file

@ -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();
});
};