44 lines
1.8 KiB
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();
|
|
}
|