summaryrefslogtreecommitdiff
path: root/searx/search/processors/abstract.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2022-09-29 20:54:46 +0200
committerMarkus Heiser <markus.heiser@darmarit.de>2023-03-24 10:37:42 +0100
commit6e5f22e5583cfc2a413e0afac66d3c5ea9f628b1 (patch)
treed49c0795c7e8a49c19721258f4dc8b056fd06bfa /searx/search/processors/abstract.py
parent64fea2f9cb079bd0055c6a23360097d285204515 (diff)
[mod] replace engines_languages.json by engines_traits.json
Implementations of the *traits* of the engines. Engine's traits are fetched from the origin engine and stored in a JSON file in the *data folder*. Most often traits are languages and region codes and their mapping from SearXNG's representation to the representation in the origin search engine. To load traits from the persistence:: searx.enginelib.traits.EngineTraitsMap.from_data() For new traits new properties can be added to the class:: searx.enginelib.traits.EngineTraits .. hint:: Implementation is downward compatible to the deprecated *supported_languages method* from the vintage implementation. The vintage code is tagged as *deprecated* an can be removed when all engines has been ported to the *traits method*. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/search/processors/abstract.py')
-rw-r--r--searx/search/processors/abstract.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/searx/search/processors/abstract.py b/searx/search/processors/abstract.py
index d74616db..5f1882ca 100644
--- a/searx/search/processors/abstract.py
+++ b/searx/search/processors/abstract.py
@@ -138,7 +138,8 @@ class EngineProcessor(ABC):
return False
def get_params(self, search_query, engine_category):
- """Returns a set of *request params* or ``None`` if request is not supported.
+ """Returns a set of (see :ref:`request params <engine request arguments>`) or
+ ``None`` if request is not supported.
Not supported conditions (``None`` is returned):
@@ -159,11 +160,20 @@ class EngineProcessor(ABC):
params['safesearch'] = search_query.safesearch
params['time_range'] = search_query.time_range
params['engine_data'] = search_query.engine_data.get(self.engine_name, {})
+ params['searxng_locale'] = search_query.lang
+
+ # deprecated / vintage --> use params['searxng_locale']
+ #
+ # Conditions related to engine's traits are implemented in engine.traits
+ # module. Don't do 'locale' decissions here in the abstract layer of the
+ # search processor, just pass the value from user's choice unchanged to
+ # the engine request.
if hasattr(self.engine, 'language') and self.engine.language:
params['language'] = self.engine.language
else:
params['language'] = search_query.lang
+
return params
@abstractmethod