From 2499c6c37997a1bdb91651fbdb8783bcc9aeef2a Mon Sep 17 00:00:00 2001 From: Kyle Harrity Date: Fri, 25 Mar 2022 02:19:56 -0400 Subject: [PATCH] include language detected, confidence for /translate calls with auto detect --- app/app.py | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/app/app.py b/app/app.py index 7b42c98..3979c2e 100644 --- a/app/app.py +++ b/app/app.py @@ -446,18 +446,18 @@ def create_app(args): else: # Unable to accurately detect languages for short texts candidate_langs = overall_candidates - source_langs.append(candidate_langs[0]["language"]) + source_langs.append(candidate_langs[0]) if args.debug: print(text_to_check, candidate_langs) print("Auto detected: %s" % candidate_langs[0]["language"]) else: if batch: - source_langs = [source_lang for text in q] + source_langs = [ {"confidence": 100.0, "language": source_lang} for text in q] else: - source_langs = [source_lang] + source_langs = [ {"confidence": 100.0, "language": source_lang} ] - src_langs = [next(iter([l for l in languages if l.code == source_lang]), None) for source_lang in source_langs] + src_langs = [next(iter([l for l in languages if l.code == source_lang["language"]]), None) for source_lang in source_langs] for idx, lang in enumerate(src_langs): if lang is None: @@ -483,26 +483,43 @@ def create_app(args): if text_format == "html": translated_text = str(translate_html(translator, text)) else: - translated_text = translator.translate(transliterate(text, target_lang=source_langs[idx])) + translated_text = translator.translate(transliterate(text, target_lang=source_langs[idx]["language"])) results.append(unescape(translated_text)) - return jsonify( - { - "translatedText": results - } - ) + if source_lang == "auto": + return jsonify( + { + "translatedText": results, + "detectedLanguage": source_langs + } + ) + else: + return jsonify( + { + "translatedText": results + } + ) else: translator = src_langs[0].get_translation(tgt_lang) if text_format == "html": translated_text = str(translate_html(translator, q)) else: - translated_text = translator.translate(transliterate(q, target_lang=source_langs[0])) - return jsonify( - { - "translatedText": unescape(translated_text) - } - ) + translated_text = translator.translate(transliterate(q, target_lang=source_langs[0]["language"])) + + if source_lang == "auto": + return jsonify( + { + "translatedText": unescape(translated_text), + "detectedLanguage": source_langs[0] + } + ) + else: + return jsonify( + { + "translatedText": unescape(translated_text) + } + ) except Exception as e: abort(500, description="Cannot translate text: %s" % str(e))