on master help sign in
Merge pull request #1863 from MarcAbonce/monkey-patch-occitan-locale

Monkey patch babel get_translations to support Occitan

commit692c331b301926c04df3d09d7716aa4f719b0b34 authorMarkus Heiser <markus.heiser@darmarIT.de> dateMon 24 Feb 2020, 08:08 (7 years ago) parent09f4e2c51e7821
1 file changed+23
searx/webapp.py+23
searx/webapp.py+23
@@ -45,6 +45,7 @@ try:
4545 from cgi import escape
4646except:
4747 from html import escape
48+from six import next
4849from datetime import datetime, timedelta
4950from time import time
5051from werkzeug.middleware.proxy_fix import ProxyFix
@@ -52,6 +53,8 @@ from flask import (
5253 Flask, request, render_template, url_for, Response, make_response,
5354 redirect, send_from_directory
5455)
56+from babel.support import Translations
57+import flask_babel
5558from flask_babel import Babel, gettext, format_date, format_decimal
5659from flask.json import jsonify
5760from searx import settings, searx_dir, searx_debug
@@ -156,6 +159,22 @@ _category_names = (gettext('files'),
156159
157160outgoing_proxies = settings['outgoing'].get('proxies') or None
158161
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+
159178
160179def _get_browser_language(request, lang_list):
161180 for lang in request.headers.get("Accept-Language", "en").split(","):
@@ -180,6 +199,10 @@ def get_locale():
180199 if locale == 'zh_TW':
181200 locale = 'zh_Hant_TW'
182201
202+ if locale == 'oc':
203+ request.form['use-translation'] = 'oc'
204+ locale = 'fr_FR'
205+
183206 logger.debug("selected locale is `%s`", locale)
184207
185208 return locale