on master help sign in
Merge pull request #1863 from MarcAbonce/monkey-patch-occitan-locale
692c331Markus Heiser
searx/webapp.py+23
@@ -45,6 +45,7 @@ try:
45 from cgi import escape
45 from cgi import escape
46except:
46except:
47 from html import escape
47 from html import escape
48+from six import next
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
54)
55)
56+from babel.support import Translations
57+import flask_babel
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'),
156
159
157outgoing_proxies = settings['outgoing'].get('proxies') or None
160outgoing_proxies = settings['outgoing'].get('proxies') or None
158
161
162+_flask_babel_get_translations = flask_babel.get_translations
163+
164+
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')
171+ else:
172+ translation = _flask_babel_get_translations()
173+ return translation
174+
175+
176+flask_babel.get_translations = _get_translations
177+
159
178
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'
182
201
202+ if locale == 'oc':
203+ request.form['use-translation'] = 'oc'
204+ locale = 'fr_FR'
205+
183 logger.debug("selected locale is `%s`", locale)
206 logger.debug("selected locale is `%s`", locale)
184
207
185 return locale
208 return locale