diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java index 2643f7647..1246f5a22 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/ConfigHolder.java @@ -38,7 +38,6 @@ public final class ConfigHolder { public static final Path CONFIG_PATH = Paths.get(CONFIG_FILENAME).toAbsolutePath(); private static Config configInstance; - private static boolean initialized; private static boolean newlyCreated; public static Config config() { @@ -48,10 +47,6 @@ public final class ConfigHolder { return configInstance; } - public static boolean isInitialized() { - return initialized; - } - public static boolean isNewlyCreated() { if (configInstance == null) { throw new IllegalStateException("Configuration hasn't been loaded"); @@ -72,8 +67,6 @@ public final class ConfigHolder { if (newlyCreated) { saveConfig(); } - - initialized = true; } private static Config loadConfig() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java index d47763707..eaaf59dbe 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java @@ -24,19 +24,26 @@ import java.util.ResourceBundle; import java.util.logging.Level; import org.jackhuang.hmcl.setting.ConfigHolder; +import org.jackhuang.hmcl.util.i18n.Locales.SupportedLocale; public final class I18n { private I18n() {} - public static ResourceBundle getResourceBundle() { - if (ConfigHolder.isInitialized()) { - return ConfigHolder.config().getLocalization().getResourceBundle(); - } else { - return Locales.DEFAULT.getResourceBundle(); + private static SupportedLocale getCurrentLocale() { + try { + return ConfigHolder.config().getLocalization(); + } catch (IllegalStateException e) { + // e is thrown by ConfigHolder.config(), indicating the config hasn't been loaded + // fallback to use default locale + return Locales.DEFAULT; } } + public static ResourceBundle getResourceBundle() { + return getCurrentLocale().getResourceBundle(); + } + public static String i18n(String key, Object... formatArgs) { return String.format(i18n(key), formatArgs); }