LibJF/libjf-translate-v1/src/main/java/io/gitlab/jfronny/libjf/translate/api/TranslateService.java

44 lines
1.8 KiB
Java

package io.gitlab.jfronny.libjf.translate.api;
import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.translate.impl.TranslateConfig;
import io.gitlab.jfronny.libjf.translate.impl.google.GoogleTranslateService;
import io.gitlab.jfronny.libjf.translate.impl.libretranslate.LibreTranslateService;
import io.gitlab.jfronny.libjf.translate.impl.noop.NoopTranslateService;
import java.util.List;
public interface TranslateService<T extends Language> {
static TranslateService<?> getConfigured() {
return switch (TranslateConfig.translationService) {
case Noop -> NoopTranslateService.INSTANCE;
case Google -> GoogleTranslateService.INSTANCE;
case LibreTranslate -> {
try {
yield LibreTranslateService.get(TranslateConfig.libreTranslateHost);
} catch (TranslateException e) {
LibJf.LOGGER.error("Could not use the specified LibreTranslate host, using NOOP", e);
yield NoopTranslateService.INSTANCE;
}
}
};
}
static List<TranslateService<?>> getAvailable() {
LibreTranslateService lts = null;
try {
lts = LibreTranslateService.get(TranslateConfig.libreTranslateHost);
} catch (TranslateException ignored) {
}
return lts == null
? List.of(GoogleTranslateService.INSTANCE, NoopTranslateService.INSTANCE)
: List.of(GoogleTranslateService.INSTANCE, lts, NoopTranslateService.INSTANCE);
}
String translate(String textToTranslate, T translateFrom, T translateTo) throws TranslateException;
T detect(String text) throws TranslateException;
T parseLang(String lang);
List<T> getAvailableLanguages();
String getName();
}