public class I18n {
/** The default locale, English. */
- private static Locale defaultLocale = new Locale("en");
-
- /** The current locale. */
- private static Locale currentLocale;
-
- /**
- * Returns the currently set locale.
- *
- * @return The current locale
- */
- public static Locale getLocale() {
- if (currentLocale == null) {
- currentLocale = Locale.getDefault();
- }
- return currentLocale;
- }
-
- /**
- * Sets the current locale.
- *
- * @param locale
- * The new current locale
- */
- public static void setLocale(Locale locale) {
- currentLocale = locale;
- Locale.setDefault(locale);
- }
+ private static final Locale defaultLocale = new Locale("en");
/**
* Returns the resource bundle for the current locale.
*
* @return The resource bundle for the current locale
*/
- public static ResourceBundle getResourceBundle() {
- return getResourceBundle(getLocale());
+ private static ResourceBundle getResourceBundle() {
+ return getResourceBundle(Locale.getDefault());
}
/**
* The locale to get the resource bundle for
* @return The resource bundle for the given locale
*/
- public static ResourceBundle getResourceBundle(Locale locale) {
+ private static ResourceBundle getResourceBundle(Locale locale) {
return ResourceBundle.getBundle("de.todesbaum.jsite.i18n.jSite", locale);
}
configuration = new Configuration(configurationLocator, originalLocation);
Locale.setDefault(configuration.getLocale());
- I18n.setLocale(configuration.getLocale());
wizard = new TWizard();
createActions();
wizard.setJMenuBar(createMenuBar());
Action languageAction = languageActions.get(supportedLocale);
JRadioButtonMenuItem menuItem = (JRadioButtonMenuItem) languageAction.getValue("menuItem");
menuItem.setSelected(true);
- I18n.setLocale(supportedLocale);
+ Locale.setDefault(supportedLocale);
for (Runnable i18nRunnable : I18nContainer.getInstance()) {
try {
i18nRunnable.run();
--- /dev/null
+package de.todesbaum.jsite.i18n;
+
+import java.util.Locale;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+public class I18nTest {
+
+ @Test
+ public void getKeyReturnsValueFromCurrentLocaleIfItExists() {
+ Locale.setDefault(new Locale("test"));
+ assertThat(I18n.getMessage("locale"), equalTo("test"));
+ }
+
+ @Test
+ public void getKeyReturnsValueFromFallbackLocaleIfItDoesNotExist() {
+ Locale.setDefault(new Locale("test"));
+ assertThat(I18n.getMessage("fallback"), equalTo("value"));
+ }
+
+ @Test
+ public void getKeyReturnsKeyIfTranslationDoesNotExist() {
+ Locale.setDefault(new Locale("test"));
+ assertThat(I18n.getMessage("non-existent"), equalTo("non-existent"));
+ }
+
+ @Before
+ public void rememberLocale() {
+ previousLocale = Locale.getDefault();
+ }
+
+ @After
+ public void restoreLocal() {
+ Locale.setDefault(previousLocale);
+ }
+
+ private Locale previousLocale;
+
+}
--- /dev/null
+locale=en
+fallback=value
--- /dev/null
+locale=test