From ebdecba9db14f7ee5d4f911ff6b8ca5095a818a7 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 Apr 2022 12:57:18 +0200 Subject: [PATCH] Improved DeepL HTML support --- app/src/main/java/eu/faircode/email/DeepL.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DeepL.java b/app/src/main/java/eu/faircode/email/DeepL.java index 4f6c3b0b9a..d6a8772168 100644 --- a/app/src/main/java/eu/faircode/email/DeepL.java +++ b/app/src/main/java/eu/faircode/email/DeepL.java @@ -49,6 +49,8 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import java.io.FileNotFoundException; import java.io.IOException; @@ -216,10 +218,17 @@ public class DeepL { for (RelativeSizeSpan span : ssb.getSpans(0, ssb.length(), RelativeSizeSpan.class)) if (span.getSizeChange() == HtmlHelper.FONT_SMALL) ssb.removeSpan(span); - input = HtmlHelper.toHtml(ssb, context); + String h = HtmlHelper.toHtml(ssb, context); + Elements content = JsoupEx.parse(h).body().children(); + Element last = (content.size() == 0 ? null : content.get(content.size() - 1)); + if (last != null && "br".equals(last.tagName())) + content.remove(last); + input = content.outerHtml(); } else input = text.toString(); + Log.i("DeepL input=" + input.replaceAll("\\r?\\n", "|")); + // https://www.deepl.com/docs-api/translating-text/request/ String request = "text=" + URLEncoder.encode(input, StandardCharsets.UTF_8.name()) + @@ -282,12 +291,16 @@ public class DeepL { String output = jtranslation.getString("text"); + Log.i("DeepL output=" + output.replaceAll("\\r?\\n", "|")); + if (html) { - Document document = HtmlHelper.sanitizeCompose(context, output, false); + Document document = JsoupEx.parse(output); result.translated_text = HtmlHelper.fromDocument(context, document, null, null); } else result.translated_text = output; + Log.i("DeepL result=" + result.translated_text.toString().replaceAll("\\r?\\n", "|")); + return result; } finally { connection.disconnect();