diff --git a/requirements.txt b/requirements.txt index 2de33f4ba..947a88433 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ certifi==2022.12.7 babel==2.11.0 -flask-babel==2.0.0 +flask-babel==3.0.0 flask==2.2.2 jinja2==3.1.2 lxml==4.9.2 diff --git a/searx/locales.py b/searx/locales.py index 8547e7fa7..9e06bf39d 100644 --- a/searx/locales.py +++ b/searx/locales.py @@ -86,7 +86,7 @@ def get_translations(): use_translation = flask.request.form.get('use-translation') if use_translation in ADDITIONAL_TRANSLATIONS: babel_ext = flask_babel.current_app.extensions['babel'] - return Translations.load(next(babel_ext.translation_directories), use_translation) + return Translations.load(babel_ext.translation_directories[0], use_translation) return _flask_babel_get_translations() diff --git a/searx/webapp.py b/searx/webapp.py index d4206ca16..d9ca3941c 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -160,8 +160,6 @@ app.jinja_env.add_extension('jinja2.ext.loopcontrols') # pylint: disable=no-mem app.jinja_env.filters['group_engines_in_tab'] = group_engines_in_tab # pylint: disable=no-member app.secret_key = settings['server']['secret_key'] -babel = Babel(app) - timeout_text = gettext('timeout') parsing_error_text = gettext('parsing error') http_protocol_error_text = gettext('HTTP protocol error') @@ -211,13 +209,15 @@ class ExtendedRequest(flask.Request): request = typing.cast(ExtendedRequest, flask.request) -@babel.localeselector def get_locale(): locale = localeselector() logger.debug("%s uses locale `%s`", urllib.parse.quote(request.url), locale) return locale +babel = Babel(app, locale_selector=get_locale) + + def _get_browser_language(req, lang_list): for lang in req.headers.get("Accept-Language", "en").split(","): if ';' in lang: