mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 06:47:15 +00:00
Adjusted locale lookup behavior for ResourceBundleStringMessages
This commit is contained in:
1 parent
0eadc55856
commit
8c1cc476db
3 files changed
+16
-44
No files matched your search
+4
-18
@@ -5,10 +5,8 @@ import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -81,25 +79,13 @@ public class TestI18N {
|
||||
|
||||
@Test
|
||||
public void testGetLocaleForLocaleInfoName() {
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("default"), is(Locale.ENGLISH));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("default"), is(Locale.forLanguageTag("default")));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("en"), is(Locale.ENGLISH));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("de"), is(Locale.GERMAN));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("zh"), is(Locale.CHINESE));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("ja"), is(Locale.JAPANESE));
|
||||
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("Unsupported locale info name"), is(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSupportedLocales() {
|
||||
Set<Locale> supportedLocales = new HashSet<>();
|
||||
for (Locale locale : ResourceBundleStringMessages.Util.getSupportedLocales()) {
|
||||
supportedLocales.add(locale);
|
||||
}
|
||||
|
||||
Set<Locale> expectedSupportedLocales = new HashSet<>();
|
||||
expectedSupportedLocales.add(Locale.GERMAN);
|
||||
expectedSupportedLocales.add(Locale.ENGLISH);
|
||||
|
||||
assertThat(supportedLocales, is(expectedSupportedLocales));
|
||||
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("Unsupported locale info name"), is(Locale.ROOT));
|
||||
}
|
||||
|
||||
@Test(expected=MissingResourceException.class)
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.sap.sse.i18n;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.ResourceBundle.Control;
|
||||
|
||||
import com.sap.sse.i18n.impl.NullResourceBundleStringMessages;
|
||||
|
||||
@@ -29,31 +28,18 @@ public interface ResourceBundleStringMessages {
|
||||
public String get(Locale locale, String messageKey, String... parameters);
|
||||
|
||||
public static final class Util {
|
||||
|
||||
private static boolean supportedLocalesHaveBeenInitialized = false;
|
||||
private static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
|
||||
private static final Map<String, Locale> supportedLocalesMappedByLocaleInfo = new HashMap<>();
|
||||
|
||||
public static Locale getLocaleFor(String localeInfoName) {
|
||||
Locale locale = getSupportedLocalesMap().get(localeInfoName);
|
||||
return locale != null ? locale : DEFAULT_LOCALE;
|
||||
}
|
||||
|
||||
public static Iterable<Locale> getSupportedLocales() {
|
||||
return getSupportedLocalesMap().values();
|
||||
}
|
||||
|
||||
private static Map<String, Locale> getSupportedLocalesMap() {
|
||||
if (!supportedLocalesHaveBeenInitialized) {
|
||||
initializeSupportedLocales();
|
||||
private static final Locale FALLBACK_LOCALE = Locale.ROOT;
|
||||
public static final Control CONTROL = new Control() {
|
||||
@Override
|
||||
public Locale getFallbackLocale(String baseName, Locale locale) {
|
||||
if (baseName == null) throw new NullPointerException();
|
||||
return locale.equals(FALLBACK_LOCALE) ? null : FALLBACK_LOCALE;
|
||||
}
|
||||
return supportedLocalesMappedByLocaleInfo;
|
||||
}
|
||||
};
|
||||
|
||||
private static void initializeSupportedLocales() {
|
||||
supportedLocalesMappedByLocaleInfo.put("en", Locale.ENGLISH);
|
||||
supportedLocalesMappedByLocaleInfo.put("de", Locale.GERMAN);
|
||||
supportedLocalesHaveBeenInitialized = true;
|
||||
public static Locale getLocaleFor(String localeInfoName) {
|
||||
return Locale.forLanguageTag(localeInfoName);
|
||||
}
|
||||
|
||||
private Util () {
|
||||
|
||||
@@ -35,9 +35,9 @@ public class ResourceBundleStringMessagesImpl implements ResourceBundleStringMes
|
||||
|
||||
private ResourceBundle getResourceBundle(Locale locale) {
|
||||
if (resourceClassLoader != null) {
|
||||
return ResourceBundle.getBundle(resourceBaseName, locale, resourceClassLoader);
|
||||
return ResourceBundle.getBundle(resourceBaseName, locale, resourceClassLoader, Util.CONTROL);
|
||||
} else {
|
||||
return ResourceBundle.getBundle(resourceBaseName, locale);
|
||||
return ResourceBundle.getBundle(resourceBaseName, locale, Util.CONTROL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user