From a0a582c6231435057f80438e39a0177fd8de21ff Mon Sep 17 00:00:00 2001 From: Lilly <46890129+RainbowDashLabs@users.noreply.github.com> Date: Sat, 24 Aug 2024 14:38:36 +0200 Subject: [PATCH] Add method to inject locale codes in localizer builder --- build.gradle.kts | 2 +- .../eldoutilities/localization/Localizer.java | 5 +++-- .../localization/LocalizerBuilder.java | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index eb3a569f..5478d15d 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,7 @@ plugins { publishData { addRepo(Repo.main("", "", false)) addRepo(Repo.snapshot("SNAPSHOT", "", false)) - publishingVersion = "2.1.5" + publishingVersion = "2.1.6" } version = publishData.getVersion() diff --git a/localization/src/main/java/de/eldoria/eldoutilities/localization/Localizer.java b/localization/src/main/java/de/eldoria/eldoutilities/localization/Localizer.java index deb128a9..b80cea8a 100644 --- a/localization/src/main/java/de/eldoria/eldoutilities/localization/Localizer.java +++ b/localization/src/main/java/de/eldoria/eldoutilities/localization/Localizer.java @@ -61,7 +61,7 @@ public class Localizer implements ILocalizer { private final String localesPrefix; private final Set includedLocales; private final Pattern localePattern = Pattern.compile("_(([a-zA-Z]{2})(_[a-zA-Z]{2})?)\\.properties"); - private final Map runtimeLocaleCodes = new HashMap<>(); + private final Map runtimeLocaleCodes; private final Map languages = new HashMap<>(); private final Function userLocale; private final List children = new ArrayList<>(); @@ -85,13 +85,14 @@ public class Localizer implements ILocalizer { * @param includedLocales internal provided locales */ Localizer(Plugin plugin, String localesPath, - String localesPrefix, String fallbackLocale, Function userLocale, Set includedLocales) { + String localesPrefix, String fallbackLocale, Function userLocale, Set includedLocales, Map runtimeLocaleCodes) { this.plugin = plugin; this.localesPath = localesPath; this.localesPrefix = localesPrefix; this.userLocale = userLocale; this.includedLocales = includedLocales; defaultLanguage = fallbackLocale; + this.runtimeLocaleCodes = runtimeLocaleCodes; createDefaults(); bootstrap(); loadLanguage(fallbackLocale); diff --git a/localization/src/main/java/de/eldoria/eldoutilities/localization/LocalizerBuilder.java b/localization/src/main/java/de/eldoria/eldoutilities/localization/LocalizerBuilder.java index f64da462..72a1d821 100644 --- a/localization/src/main/java/de/eldoria/eldoutilities/localization/LocalizerBuilder.java +++ b/localization/src/main/java/de/eldoria/eldoutilities/localization/LocalizerBuilder.java @@ -10,7 +10,9 @@ import org.bukkit.plugin.Plugin; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; import java.util.function.Function; @@ -18,6 +20,7 @@ public class LocalizerBuilder { private final Plugin plugin; private final String fallbackLocale; private final Set includedLocales = new HashSet<>(); + private final Map runtimeLocaleCodes = new HashMap<>(); private String localesPath = "messages"; private String localesPrefix = "messages"; private Function userLocale; @@ -49,7 +52,17 @@ public LocalizerBuilder setIncludedLocales(String... includedLocales) { return this; } + public LocalizerBuilder addLocaleCodes(String key, String value) { + this.runtimeLocaleCodes.put(key, value); + return this; + } + + public LocalizerBuilder addLocaleCodes(Map runtimeLocaleCodes) { + this.runtimeLocaleCodes.putAll(runtimeLocaleCodes); + return this; + } + public Localizer build() { - return new Localizer(plugin, localesPath, localesPrefix, fallbackLocale, userLocale, includedLocales); + return new Localizer(plugin, localesPath, localesPrefix, fallbackLocale, userLocale, includedLocales, runtimeLocaleCodes); } }