6 changed files with 55 additions and 31 deletions
@ -1,11 +1,21 @@
@@ -1,11 +1,21 @@
|
||||
/* © SRSoftware 2025 */ |
||||
package de.srsoftware.umbrella.core.api; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
import java.util.TreeMap; |
||||
|
||||
public interface Translator { |
||||
public default String translate(String language, String text){ |
||||
return translate(language, text, Map.of()); |
||||
var parts = text.split("\\|"); |
||||
var fills = new TreeMap<String,String>(); |
||||
if (parts.length>1) for (var idx=1;idx<parts.length;idx++){ |
||||
var nested = parts[idx].split("=",2); |
||||
if (nested.length<2){ |
||||
fills.put("{"+idx+"}",nested[0]); |
||||
} else fills.put(nested[0],nested[1]); |
||||
} |
||||
return translate(language, parts[0], fills); |
||||
} |
||||
public String translate(String language, String text, Map<String,String> fills); |
||||
} |
||||
|
||||
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
import de.srsoftware.umbrella.core.api.Translator; |
||||
import org.json.JSONObject; |
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import java.util.Map; |
||||
|
||||
import static java.text.MessageFormat.format; |
||||
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||
|
||||
public class TranslatorTest { |
||||
|
||||
private static final Translator translator = new Translator() { |
||||
@Override |
||||
public String translate(String language, String text, Map<String, String> fills) { |
||||
return format("lang: {0}, text: {1}, fills: {2}",language,text, new JSONObject(fills).toString()); |
||||
} |
||||
}; |
||||
|
||||
@Test |
||||
public void testTranslate(){ |
||||
var translated = translator.translate("none","dies {verb} ein {subject}|subject=test|verb=ist"); |
||||
assertEquals("lang: none, text: dies {verb} ein {subject}, fills: {\"verb\":\"ist\",\"subject\":\"test\"}",translated); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue