From: David ‘Bombe’ Roden Date: Thu, 27 Nov 2025 12:04:04 +0000 (+0100) Subject: 🎨 Simplify locale handling and add tests X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=10c1cdb5081c38fadf05022b4d20bff1212ba866;p=jSite.git 🎨 Simplify locale handling and add tests --- diff --git a/src/main/java/de/todesbaum/jsite/i18n/I18n.java b/src/main/java/de/todesbaum/jsite/i18n/I18n.java index 0c40be2..cd7863d 100644 --- a/src/main/java/de/todesbaum/jsite/i18n/I18n.java +++ b/src/main/java/de/todesbaum/jsite/i18n/I18n.java @@ -30,41 +30,15 @@ import java.util.ResourceBundle; 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()); } /** @@ -74,7 +48,7 @@ public class I18n { * 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); } diff --git a/src/main/java/de/todesbaum/jsite/main/Main.java b/src/main/java/de/todesbaum/jsite/main/Main.java index b76f3c5..8421b25 100644 --- a/src/main/java/de/todesbaum/jsite/main/Main.java +++ b/src/main/java/de/todesbaum/jsite/main/Main.java @@ -192,7 +192,6 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen configuration = new Configuration(configurationLocator, originalLocation); Locale.setDefault(configuration.getLocale()); - I18n.setLocale(configuration.getLocale()); wizard = new TWizard(); createActions(); wizard.setJMenuBar(createMenuBar()); @@ -470,7 +469,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen 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(); diff --git a/src/test/java/de/todesbaum/jsite/i18n/I18nTest.java b/src/test/java/de/todesbaum/jsite/i18n/I18nTest.java new file mode 100644 index 0000000..be8a171 --- /dev/null +++ b/src/test/java/de/todesbaum/jsite/i18n/I18nTest.java @@ -0,0 +1,43 @@ +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; + +} diff --git a/src/test/resources/de/todesbaum/jsite/i18n/jSite_en.properties b/src/test/resources/de/todesbaum/jsite/i18n/jSite_en.properties new file mode 100644 index 0000000..d44eaab --- /dev/null +++ b/src/test/resources/de/todesbaum/jsite/i18n/jSite_en.properties @@ -0,0 +1,2 @@ +locale=en +fallback=value diff --git a/src/test/resources/de/todesbaum/jsite/i18n/jSite_test.properties b/src/test/resources/de/todesbaum/jsite/i18n/jSite_test.properties new file mode 100644 index 0000000..02c666a --- /dev/null +++ b/src/test/resources/de/todesbaum/jsite/i18n/jSite_test.properties @@ -0,0 +1 @@ +locale=test