From 349d6587d64382ba2fb32fe1b685a603218958a7 Mon Sep 17 00:00:00 2001 From: JFronny Date: Wed, 15 Feb 2023 19:49:08 +0100 Subject: [PATCH] [translate] Don't translate white space --- .../impl/AbstractTranslateService.java | 27 +++++++++++++++++ .../impl/google/GoogleTranslateService.java | 16 +++++----- .../libretranslate/LibreTranslateService.java | 29 +++++++++---------- 3 files changed, 49 insertions(+), 23 deletions(-) create mode 100644 libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/AbstractTranslateService.java diff --git a/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/AbstractTranslateService.java b/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/AbstractTranslateService.java new file mode 100644 index 0000000..f7f7152 --- /dev/null +++ b/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/AbstractTranslateService.java @@ -0,0 +1,27 @@ +package io.gitlab.jfronny.libjf.translate.impl; + +import io.gitlab.jfronny.libjf.translate.api.*; + +import java.util.regex.Pattern; + +public abstract class AbstractTranslateService implements TranslateService { + private static final Pattern WHITE_SPACE = Pattern.compile("\\s*"); + + @Override + public String translate(String textToTranslate, T translateFrom, T translateTo) throws TranslateException { + if (textToTranslate == null) throw new TranslateException("textToTranslate must not be null"); + if (translateFrom == null) translateFrom = getAutoDetectLang(); + if (translateTo == null) throw new TranslateException("translateTo must not be null"); + if (WHITE_SPACE.matcher(textToTranslate).matches()) return textToTranslate; + try { + return performTranslate(textToTranslate, translateFrom, translateTo); + } catch (TranslateException e) { + throw e; + } catch (Throwable e) { + throw new TranslateException("Could not translate text", e); + } + } + + protected abstract T getAutoDetectLang(); + protected abstract String performTranslate(String textToTranslate, T translateFrom, T translateTo) throws Exception; +} diff --git a/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/google/GoogleTranslateService.java b/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/google/GoogleTranslateService.java index 30f694a..62b1c97 100644 --- a/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/google/GoogleTranslateService.java +++ b/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/impl/google/GoogleTranslateService.java @@ -2,7 +2,7 @@ package io.gitlab.jfronny.libjf.translate.impl.google; import io.gitlab.jfronny.commons.HttpUtils; import io.gitlab.jfronny.libjf.translate.api.TranslateException; -import io.gitlab.jfronny.libjf.translate.api.TranslateService; +import io.gitlab.jfronny.libjf.translate.impl.AbstractTranslateService; import org.apache.commons.lang3.StringEscapeUtils; import java.io.IOException; @@ -15,7 +15,7 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class GoogleTranslateService implements TranslateService { +public class GoogleTranslateService extends AbstractTranslateService { public static final String NAME = "Google"; private static GoogleTranslateService INSTANCE; private static final Pattern TRANSLATION_RESULT = Pattern.compile("class=\"result-container\">([^<]*)", Pattern.MULTILINE); @@ -43,10 +43,12 @@ public class GoogleTranslateService implements TranslateService { +public class LibreTranslateService extends AbstractTranslateService { public static final String NAME = "LibreTranslate"; private static final Type languageListType = new TypeToken>(){}.getType(); private static final Type translateDetectResultListType = new TypeToken>(){}.getType(); @@ -56,20 +56,17 @@ public class LibreTranslateService implements TranslateService