mirror of https://github.com/searxng/searxng.git
[fix] harden get_engine_locale: handle UnknownLocaleError exceptions
When a user selects an unknown or invalid locale by using the search syntax: !qw siemens :de-TW Before this patch a UnknownLocaleError exception will be rasied: ``` Traceback (most recent call last): File "SearXNG/searx/search/processors/online.py", line 154, in search search_results = self._search_basic(query, params) File "SearXNG/searx/search/processors/online.py", line 128, in _search_basic self.engine.request(query, params) File "SearXNG/searx/engines/qwant.py", line 98, in request q_locale = get_engine_locale(params['language'], supported_languages, default='en_US') File "SearXNG/searx/locales.py", line 216, in get_engine_locale locale = babel.Locale.parse(searxng_locale, sep='-') File "SearXNG/local/py3/lib/python3.8/site-packages/babel/core.py", line 330, in parse raise UnknownLocaleError(input_id) ``` This patch implements a simple exception handling, since e.g. `de-TW` does not exists `de` will be used to get engines locale. On invalid terms like `xy-XY` the default will be returned. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
2bd3c2079e
commit
ef81d14ccf
|
@ -213,7 +213,13 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
# need to narrow language nor territory.
|
||||
return engine_locale
|
||||
|
||||
locale = babel.Locale.parse(searxng_locale, sep='-')
|
||||
try:
|
||||
locale = babel.Locale.parse(searxng_locale, sep='-')
|
||||
except babel.core.UnknownLocaleError:
|
||||
try:
|
||||
locale = babel.Locale.parse(searxng_locale.split('-')[1])
|
||||
except babel.core.UnknownLocaleError:
|
||||
return default
|
||||
|
||||
# SearXNG's selected locale is not supported by the engine ..
|
||||
|
||||
|
|
Loading…
Reference in New Issue