From 80841770e26209b4eea48d6ce3f4027bd460485e Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 3 Aug 2020 11:36:04 +0200 Subject: [PATCH] [New] Added I18nMessage.getMessage(Locale) --- .../java/li/strolch/utils/I18nMessage.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java index e3c63e340..0c6834114 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/I18nMessage.java @@ -2,6 +2,7 @@ package li.strolch.utils; import static li.strolch.utils.helper.StringHelper.EMPTY; +import java.util.Locale; import java.util.MissingResourceException; import java.util.Properties; import java.util.ResourceBundle; @@ -56,10 +57,33 @@ public class I18nMessage { return this.values.get(key); } + private ResourceBundle getBundle(Locale locale) { + if (this.bundle.getLocale() == locale) + return this.bundle; + String baseName = this.bundle.getBaseBundleName(); + + try { + + ClassLoader classLoader = this.bundle.getClass().getClassLoader(); + if (classLoader == null) + return ResourceBundle.getBundle(baseName, locale); + return ResourceBundle.getBundle(baseName, locale, classLoader); + + } catch (MissingResourceException e) { + logger.error("Failed to find resource bundle " + baseName + " " + locale.toLanguageTag() + + ", returning current bundle " + this.bundle.getLocale().toLanguageTag()); + return this.bundle; + } + } + public String getMessage(ResourceBundle bundle) { return formatMessage(bundle); } + public String getMessage(Locale locale) { + return formatMessage(getBundle(locale)); + } + public String getMessage() { return formatMessage(); }