summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2023-02-07 14:11:58 +0100
committerMarkus Heiser <markus.heiser@darmarit.de>2023-03-24 10:37:42 +0100
commit16f0db44939c23d2980d6fd2e5dfada13d8f5ee9 (patch)
treeaff653cf2739f3d1fc35ac44b7adaa3ca0e14253 /searx/webapp.py
parent4d4aa13e1f1d254e5d57c67973a7809d9c1e21f9 (diff)
downloadsearxng-16f0db44939c23d2980d6fd2e5dfada13d8f5ee9.tar.gz
searxng-16f0db44939c23d2980d6fd2e5dfada13d8f5ee9.zip
[mod] replace utils.match_language by locales.match_locale
This patch replaces the *full of magic* ``utils.match_language`` function by a ``locales.match_locale``. The ``locales.match_locale`` function is based on the ``locales.build_engine_locales`` introduced in 9ae409a0 [1]. In the past SearXNG did only support a search by a language but not in a region. This has been changed a long time ago and regions have been added to SearXNG core but not to the engines. The ``utils.match_language`` was the function to handle the different aspects of language/regions in SearXNG core and the supported *languages* in the engine. The ``utils.match_language`` did it with some magic and works good for most use cases but fails in some edge case. To replace the concurrence of languages and regions in the SearXNG core the ``locales.build_engine_locales`` was introduced in 9ae409a0 [1]. With the last patches all engines has been migrated to a ``fetch_traits`` and a language/region concept that is based on ``locales.build_engine_locales``. To summarize: there is no longer a need for the ``locales.match_language``. [1] https://github.com/searxng/searxng/pull/1652 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/webapp.py')
-rwxr-xr-xsearx/webapp.py30
1 files changed, 18 insertions, 12 deletions
diff --git a/searx/webapp.py b/searx/webapp.py
index bc2a50784..4ed6c2eb7 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -89,7 +89,6 @@ from searx.utils import (
html_to_text,
gen_useragent,
dict_subset,
- match_language,
)
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
from searx.query import RawTextQuery
@@ -117,6 +116,7 @@ from searx.locales import (
RTL_LOCALES,
localeselector,
locales_initialize,
+ match_locale,
)
# renaming names from searx imports ...
@@ -227,7 +227,7 @@ def _get_browser_language(req, lang_list):
if '-' in lang:
lang_parts = lang.split('-')
lang = "{}-{}".format(lang_parts[0], lang_parts[-1].upper())
- locale = match_language(lang, lang_list, fallback=None)
+ locale = match_locale(lang, lang_list, fallback=None)
if locale is not None:
return locale
return 'en'
@@ -407,7 +407,7 @@ def get_client_settings():
def render(template_name: str, **kwargs):
-
+ # pylint: disable=too-many-statements
kwargs['client_settings'] = str(
base64.b64encode(
bytes(
@@ -445,10 +445,13 @@ def render(template_name: str, **kwargs):
if locale in RTL_LOCALES and 'rtl' not in kwargs:
kwargs['rtl'] = True
+
if 'current_language' not in kwargs:
- kwargs['current_language'] = match_language(
- request.preferences.get_value('language'), settings['search']['languages']
- )
+ _locale = request.preferences.get_value('language')
+ if _locale in ('auto', 'all'):
+ kwargs['current_language'] = _locale
+ else:
+ kwargs['current_language'] = match_locale(_locale, settings['search']['languages'])
# values from settings
kwargs['search_formats'] = [x for x in settings['search']['formats'] if x != 'html']
@@ -810,6 +813,13 @@ def search():
)
)
+ if search_query.lang in ('auto', 'all'):
+ current_language = search_query.lang
+ else:
+ current_language = match_locale(
+ search_query.lang, settings['search']['languages'], fallback=request.preferences.get_value("language")
+ )
+
# search_query.lang contains the user choice (all, auto, en, ...)
# when the user choice is "auto", search.search_query.lang contains the detected language
# otherwise it is equals to search_query.lang
@@ -832,12 +842,8 @@ def search():
result_container.unresponsive_engines
),
current_locale = request.preferences.get_value("locale"),
- current_language = match_language(
- search_query.lang,
- settings['search']['languages'],
- fallback=request.preferences.get_value("language")
- ),
- search_language = match_language(
+ current_language = current_language,
+ search_language = match_locale(
search.search_query.lang,
settings['search']['languages'],
fallback=request.preferences.get_value("language")