fix: do not send trailing/preceding whitespace to translate service (based on impl in Translater)
ci/woodpecker/push/jfmod Pipeline was successful
Details
ci/woodpecker/push/jfmod Pipeline was successful
Details
This commit is contained in:
parent
88d44b6737
commit
49bdf4b921
|
@ -12,6 +12,8 @@ import net.minecraft.text.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ForkJoinPool;
|
import java.util.concurrent.ForkJoinPool;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class GoogleChat implements ModInitializer {
|
public class GoogleChat implements ModInitializer {
|
||||||
public static final String MOD_ID = "google-chat";
|
public static final String MOD_ID = "google-chat";
|
||||||
|
@ -128,19 +130,22 @@ public class GoogleChat implements ModInitializer {
|
||||||
return style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText));
|
return style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Pattern SURROUNDING_SPACE_PATTERN = Pattern.compile("^(\\s*)(.*\\S+)(\\s*)$", Pattern.MULTILINE);
|
||||||
public static String translateIfNeeded(String source, TranslationDirection direction, boolean respectRegex) {
|
public static String translateIfNeeded(String source, TranslationDirection direction, boolean respectRegex) {
|
||||||
if (source == null) return null;
|
if (source == null) return null;
|
||||||
if (direction.shouldSkipOutright()) return source;
|
if (direction.shouldSkipOutright()) return source;
|
||||||
if (respectRegex && direction.failsRegex(source)) return source;
|
if (respectRegex && direction.failsRegex(source)) return source;
|
||||||
return computeIfAbsent2(direction == TranslationDirection.C2S ? c2ss : s2cs, source, t -> {
|
return computeIfAbsent2(direction == TranslationDirection.C2S ? c2ss : s2cs, source, t -> {
|
||||||
try {
|
try {
|
||||||
|
Matcher m = SURROUNDING_SPACE_PATTERN.matcher(source);
|
||||||
|
if (!m.find()) return source;
|
||||||
// Ignore generics since this is apparently not something java supports
|
// Ignore generics since this is apparently not something java supports
|
||||||
@SuppressWarnings("rawtypes") TranslateService svc = GoogleChat.TRANSLATE_SERVICE;
|
@SuppressWarnings("rawtypes") TranslateService svc = GoogleChat.TRANSLATE_SERVICE;
|
||||||
if (svc == null) throw new NullPointerException("Translate service uninitialized");
|
if (svc == null) throw new NullPointerException("Translate service uninitialized");
|
||||||
Language sourceLang = svc.parseLang(direction.source());
|
Language sourceLang = svc.parseLang(direction.source());
|
||||||
Language targetLang = svc.parseLang(direction.target());
|
Language targetLang = svc.parseLang(direction.target());
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
return svc.translate(source, sourceLang, targetLang);
|
return m.group(1) + svc.translate(m.group(2), sourceLang, targetLang) + m.group(3);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
LOGGER.error("Could not translate text: " + source, e);
|
LOGGER.error("Could not translate text: " + source, e);
|
||||||
return source;
|
return source;
|
||||||
|
|
Loading…
Reference in New Issue