From 1f0766466027d491e6deef33aa3cd42c91789509 Mon Sep 17 00:00:00 2001 From: JFronny <33260128+JFronny@users.noreply.github.com> Date: Fri, 10 Jul 2020 16:21:12 +0200 Subject: [PATCH] fixes --- .../jfronny/translater/YnTransformer.java | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java b/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java index 7f82b40..7d33260 100644 --- a/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java +++ b/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java @@ -18,16 +18,42 @@ public class YnTransformer extends CachingTransformer { @Override public String getTransformed(String str) { - ModInit.Log("Transforming: " + str); - Language startLang = api.detectionApi().detect(str).get(); - String currentState = str; - Language currentLang = startLang; - for (int i = 0; i < rounds; i++) { - Language newLang = selectRandom(); - currentState = api.translationApi().translate(currentState, Direction.of(breakFully ? selectRandom() : currentLang, newLang)).text(); - currentLang = newLang; + if (str.contains("%")) { + StringBuilder res = new StringBuilder(); + boolean f = true; + for (String s : str.split("%")) { + if (!f) { + res.append(s.charAt(0)).append(Break(s.substring(1)).replace("%", "")); + } else + res.append(Break(s)); + f = false; + } + return res.toString(); + } else { + return Break(str); + } + } + + private String Break(String str) { + try { + if (str.replace(" ", "").replace("[", "").replace("]", "").length() < 2) + return str; + Language startLang = api.detectionApi().detect(str).get(); + String currentState = str; + Language currentLang = startLang; + for (int i = 0; i < rounds; i++) { + Language newLang = selectRandom(); + currentState = api.translationApi().translate(currentState, Direction.of(breakFully ? selectRandom() : currentLang, newLang)).text(); + currentLang = newLang; + } + currentState = api.translationApi().translate(currentState, startLang).text(); + ModInit.Log("Transformed: \"" + str + "\" to: \"" + currentState + "\""); + return currentState; + } catch (Exception e) { + ModInit.Warn("Failed to break: " + str + " (" + str.length() + " characters)"); + ModInit.Warn("Please report this bug with the mod containing the lang file"); + throw e; } - return api.translationApi().translate(currentState, startLang).text(); } private Language selectRandom() {