36def response(resp) -> EngineResults:
37 res = EngineResults()
38 translation = resp.json()
39
40 item = res.types.Translations.Item(text=translation['translated-text'])
41
42 if translation['target_transliteration'] and not re.match(
43 re_transliteration_unsupported, translation['target_transliteration']
44 ):
45 item.transliteration = translation['target_transliteration']
46
47 if translation['word_choices']:
48 for word in translation['word_choices']:
49 if word.get('definition'):
50 item.definitions.append(word['definition'])
51
52 for example in word.get('examples_target', []):
53 item.examples.append(re.sub(r"<|>", "", example).lstrip('- '))
54
55 item.synonyms = translation.get('source_synonyms', [])
56
57 url = urllib.parse.urlparse(resp.search_params["url"])
58
59 url = url._replace(path="", fragment="").geturl()
60 res.add(res.types.Translations(translations=[item], url=url))
61 return res