diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java new file mode 100644 index 0000000..3024a84 --- /dev/null +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Translatable.java @@ -0,0 +1,38 @@ +package de.srsoftware.umbrella.core.model; + +import de.srsoftware.umbrella.core.ModuleRegistry; + +import java.util.HashMap; +import java.util.Map; + +public class Translatable { + private final String message; + private Map fills; + private final HashMap translated = new HashMap<>(); + + public Translatable(String message, Map fills){ + this.fills = fills; + this.message = message; + } + + public String translate(String language){ + var translation = translated.get(language); + if (translation == null){ + var translatedFills = new HashMap(); + if (fills != null) { + for (var entry : fills.entrySet()) { + var o = entry.getValue(); + var val = switch (o) { + case Translatable tr -> tr.translate(language); + case String s -> s; + default -> o.toString(); + }; + translatedFills.put(entry.getKey(), val); + } + } + translation = ModuleRegistry.translator().translate(language,message,translatedFills); + translated.put(language,translation); + } + return translation; + } +}