working on translation system

This commit is contained in:
2025-07-17 13:39:48 +02:00
parent dc8de9707a
commit 2fd58229c3
6 changed files with 55 additions and 31 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}