summaryrefslogtreecommitdiff
path: root/searx/engines/translated.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/translated.py')
-rw-r--r--searx/engines/translated.py45
1 files changed, 27 insertions, 18 deletions
diff --git a/searx/engines/translated.py b/searx/engines/translated.py
index 190707a95..632e3d2e1 100644
--- a/searx/engines/translated.py
+++ b/searx/engines/translated.py
@@ -3,6 +3,10 @@
"""
+import urllib.parse
+
+from searx.result_types import Translations
+
# about
about = {
"website": 'https://mymemory.translated.net/',
@@ -15,8 +19,8 @@ about = {
engine_type = 'online_dictionary'
categories = ['general', 'translate']
-url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
-web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
+api_url = "https://api.mymemory.translated.net"
+web_url = "https://mymemory.translated.net"
weight = 100
https_support = True
@@ -24,27 +28,32 @@ api_key = ''
def request(query, params): # pylint: disable=unused-argument
+
+ args = {"q": params["query"], "langpair": f"{params['from_lang'][1]}|{params['to_lang'][1]}"}
if api_key:
- key_form = '&key=' + api_key
- else:
- key_form = ''
- params['url'] = url.format(
- from_lang=params['from_lang'][1], to_lang=params['to_lang'][1], query=params['query'], key=key_form
- )
+ args["key"] = api_key
+
+ params['url'] = f"{api_url}/get?{urllib.parse.urlencode(args)}"
return params
def response(resp):
- json_resp = resp.json()
- text = json_resp['responseData']['translatedText']
+ results = []
+ data = resp.json()
+
+ args = {
+ "q": resp.search_params["query"],
+ "lang": resp.search_params.get("searxng_locale", "en"), # ui language
+ "sl": resp.search_params['from_lang'][1],
+ "tl": resp.search_params['to_lang'][1],
+ }
- alternatives = [match['translation'] for match in json_resp['matches'] if match['translation'] != text]
- translations = [{'text': translation} for translation in [text] + alternatives]
+ link = f"{web_url}/search.php?{urllib.parse.urlencode(args)}"
+ text = data['responseData']['translatedText']
- result = {
- 'answer': translations[0]['text'],
- 'answer_type': 'translations',
- 'translations': translations,
- }
+ examples = [f"{m['segment']} : {m['translation']}" for m in data['matches'] if m['translation'] != text]
+
+ item = Translations.Item(text=text, examples=examples)
+ Translations(results=results, translations=[item], url=link)
- return [result]
+ return results