mirror of
https://github.com/jlengrand/bugsink.git
synced 2026-03-10 08:01:17 +00:00
@@ -150,17 +150,17 @@ def language_from_accept_language(request):
|
||||
return settings.LANGUAGE_CODE
|
||||
|
||||
|
||||
def get_chosen_language(request_user, request):
|
||||
if request_user.is_authenticated and request_user.language != "auto":
|
||||
return get_supported_language_variant(request_user.language, strict=False)
|
||||
return language_from_accept_language(request)
|
||||
|
||||
|
||||
class UserLanguageMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
if request.user.is_authenticated and request.user.language != "auto":
|
||||
normalized_explicit_lang = get_supported_language_variant(request.user.language, strict=False)
|
||||
translation.activate(normalized_explicit_lang)
|
||||
else:
|
||||
auto_lang = language_from_accept_language(request)
|
||||
translation.activate(auto_lang)
|
||||
|
||||
translation.activate(get_chosen_language(request.user, request))
|
||||
response = self.get_response(request)
|
||||
return response
|
||||
|
||||
@@ -8,9 +8,11 @@ from django.utils import timezone
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||
from django.utils.translation import gettext as _
|
||||
from django.utils import translation
|
||||
|
||||
from bugsink.app_settings import get_settings, CB_ANYBODY
|
||||
from bugsink.decorators import atomic_for_request_method
|
||||
from bugsink.middleware import get_chosen_language
|
||||
|
||||
from .forms import (
|
||||
UserCreationForm, ResendConfirmationForm, RequestPasswordResetForm, SetPasswordForm, PreferencesForm, UserEditForm)
|
||||
@@ -226,9 +228,11 @@ def preferences(request):
|
||||
form = PreferencesForm(request.POST, instance=user)
|
||||
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
from django.utils import translation
|
||||
translation.activate(user.language if user.language != 'auto' else translation.get_language())
|
||||
user = form.save()
|
||||
|
||||
# activate the selected language immediately for the Success message; we've already passed the middleware
|
||||
# stage (which looked at the pre-change language), so we need to do this ourselves with the fresh value.
|
||||
translation.activate(get_chosen_language(user, request))
|
||||
|
||||
messages.success(request, _("Updated preferences"))
|
||||
return redirect('preferences')
|
||||
|
||||
Reference in New Issue
Block a user