@@ -45,6 +45,7 @@ try:
45 from cgi import escape
45 from cgi import escape
47 from html import escape
47 from html import escape
48from datetime import datetime, timedelta
49from datetime import datetime, timedelta
49from time import time
50from time import time
50from werkzeug.middleware.proxy_fix import ProxyFix
51from werkzeug.middleware.proxy_fix import ProxyFix
@@ -52,6 +53,8 @@ from flask import (
52 Flask, request, render_template, url_for, Response, make_response,
53 Flask, request, render_template, url_for, Response, make_response,
53 redirect, send_from_directory
54 redirect, send_from_directory
56+from babel.support import Translations
55from flask_babel import Babel, gettext, format_date, format_decimal
58from flask_babel import Babel, gettext, format_date, format_decimal
56from flask.json import jsonify
59from flask.json import jsonify
57from searx import settings, searx_dir, searx_debug
60from searx import settings, searx_dir, searx_debug
@@ -156,6 +159,22 @@ _category_names = (gettext('files'),
157outgoing_proxies = settings['outgoing'].get('proxies') or None
160outgoing_proxies = settings['outgoing'].get('proxies') or None
162+_flask_babel_get_translations = flask_babel.get_translations
165+# monkey patch for flask_babel.get_translations
166+def _get_translations():
167+ translation_locale = request.form.get('use-translation')
168+ if translation_locale:
169+ babel_ext = flask_babel.current_app.extensions['babel']
170+ translation = Translations.load(next(babel_ext.translation_directories), 'oc')
172+ translation = _flask_babel_get_translations()
176+flask_babel.get_translations = _get_translations
160def _get_browser_language(request, lang_list):
179def _get_browser_language(request, lang_list):
161 for lang in request.headers.get("Accept-Language", "en").split(","):
180 for lang in request.headers.get("Accept-Language", "en").split(","):
@@ -180,6 +199,10 @@ def get_locale():
180 if locale == 'zh_TW':
199 if locale == 'zh_TW':
181 locale = 'zh_Hant_TW'
200 locale = 'zh_Hant_TW'
203+ request.form['use-translation'] = 'oc'
183 logger.debug("selected locale is `%s`", locale)
206 logger.debug("selected locale is `%s`", locale)
185 return locale
208 return locale