From 7dafa22762a206f67033d02da8a75b00ec04a518 Mon Sep 17 00:00:00 2001 From: DjVinnii Date: Sat, 3 Apr 2021 10:33:08 +0200 Subject: [PATCH] Add /language/ route for changing the locale using a session variable --- core/admin/mailu/ui/views/__init__.py | 2 +- core/admin/mailu/ui/views/languages.py | 9 +++++++++ core/admin/mailu/utils.py | 9 ++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 core/admin/mailu/ui/views/languages.py diff --git a/core/admin/mailu/ui/views/__init__.py b/core/admin/mailu/ui/views/__init__.py index e7ae8b35..5488c82f 100644 --- a/core/admin/mailu/ui/views/__init__.py +++ b/core/admin/mailu/ui/views/__init__.py @@ -1,4 +1,4 @@ __all__ = [ 'admins', 'aliases', 'alternatives', 'base', 'domains', 'fetches', - 'managers', 'users', 'relays', 'tokens' + 'managers', 'users', 'relays', 'tokens', 'languages' ] diff --git a/core/admin/mailu/ui/views/languages.py b/core/admin/mailu/ui/views/languages.py new file mode 100644 index 00000000..9fb87d5c --- /dev/null +++ b/core/admin/mailu/ui/views/languages.py @@ -0,0 +1,9 @@ +from mailu.ui import ui, forms, access + +import flask + + +@ui.route('/language/', methods=['GET']) +def set_language(language=None): + flask.session['language'] = language + return flask.redirect(flask.url_for('.user_settings')) diff --git a/core/admin/mailu/utils.py b/core/admin/mailu/utils.py index ce12a09a..086b69fa 100644 --- a/core/admin/mailu/utils.py +++ b/core/admin/mailu/utils.py @@ -27,10 +27,17 @@ babel = flask_babel.Babel() @babel.localeselector def get_locale(): + try: + language = flask.session['language'] + except KeyError: + language = None + + if language is not None: + return language + translations = list(map(str, babel.list_translations())) return flask.request.accept_languages.best_match(translations) - # Proxy fixer class PrefixMiddleware(object): def __call__(self, environ, start_response):