From 2499c6c37997a1bdb91651fbdb8783bcc9aeef2a Mon Sep 17 00:00:00 2001
From: Kyle Harrity <hpkyh47@gmail.com>
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))
 
-- 
GitLab