|
@@ -58,16 +58,16 @@ from searx.engines import (
|
|
|
from searx.utils import (
|
|
|
UnicodeWriter, highlight_content, html_to_text, get_resources_directory,
|
|
|
get_static_files, get_result_templates, get_themes, gen_useragent,
|
|
|
- dict_subset, prettify_url
|
|
|
+ dict_subset, prettify_url, match_language
|
|
|
)
|
|
|
from searx.version import VERSION_STRING
|
|
|
-from searx.languages import language_codes
|
|
|
+from searx.languages import language_codes as languages
|
|
|
from searx.search import SearchWithPlugins, get_search_query_from_webapp
|
|
|
from searx.query import RawTextQuery
|
|
|
from searx.autocomplete import searx_bang, backends as autocomplete_backends
|
|
|
from searx.plugins import plugins
|
|
|
from searx.plugins.oa_doi_rewrite import get_doi_resolver
|
|
|
-from searx.preferences import Preferences, ValidationException
|
|
|
+from searx.preferences import Preferences, ValidationException, LANGUAGE_CODES
|
|
|
from searx.answerers import answerers
|
|
|
from searx.url_utils import urlencode, urlparse, urljoin
|
|
|
from searx.utils import new_hmac
|
|
@@ -133,7 +133,7 @@ if not searx_debug \
|
|
|
babel = Babel(app)
|
|
|
|
|
|
rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he',
|
|
|
- 'ku', 'mzn', 'pnb'', ''ps', 'sd', 'ug', 'ur', 'yi']
|
|
|
+ 'ku', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi']
|
|
|
|
|
|
# used when translating category names
|
|
|
_category_names = (gettext('files'),
|
|
@@ -352,9 +352,11 @@ def render(template_name, override_theme=None, **kwargs):
|
|
|
|
|
|
kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
|
|
|
|
|
|
- kwargs['language_codes'] = language_codes
|
|
|
+ kwargs['language_codes'] = languages
|
|
|
if 'current_language' not in kwargs:
|
|
|
- kwargs['current_language'] = request.preferences.get_value('language')
|
|
|
+ kwargs['current_language'] = match_language(request.preferences.get_value('language'),
|
|
|
+ LANGUAGE_CODES,
|
|
|
+ fallback=settings['search']['language'])
|
|
|
|
|
|
# override url_for function in templates
|
|
|
kwargs['url_for'] = url_for_theme
|
|
@@ -590,7 +592,9 @@ def index():
|
|
|
infoboxes=result_container.infoboxes,
|
|
|
paging=result_container.paging,
|
|
|
unresponsive_engines=result_container.unresponsive_engines,
|
|
|
- current_language=search_query.lang,
|
|
|
+ current_language=match_language(search_query.lang,
|
|
|
+ LANGUAGE_CODES,
|
|
|
+ fallback=settings['search']['language']),
|
|
|
base_url=get_base_url(),
|
|
|
theme=get_current_theme_name(),
|
|
|
favicons=global_favicons[themes.index(get_current_theme_name())]
|
|
@@ -687,6 +691,10 @@ def preferences():
|
|
|
'warn_time': False}
|
|
|
if e.timeout > settings['outgoing']['request_timeout']:
|
|
|
stats[e.name]['warn_timeout'] = True
|
|
|
+ if match_language(request.preferences.get_value('language'),
|
|
|
+ getattr(e, 'supported_languages', []),
|
|
|
+ getattr(e, 'language_aliases', {}), None):
|
|
|
+ stats[e.name]['supports_selected_language'] = True
|
|
|
|
|
|
# get first element [0], the engine time,
|
|
|
# and then the second element [1] : the time (the first one is the label)
|