forked from zaclys/searxng
		
	[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
					
				
					 1 changed files with 7 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		
		Reference in a new issue