diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java index 3e050df49..7746dabf5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -33,6 +33,8 @@ import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer; import org.jackhuang.hmcl.util.EnumOrdinalDeserializer; import org.jackhuang.hmcl.util.FileTypeAdapter; import org.jackhuang.hmcl.util.ObservableHelper; +import org.jackhuang.hmcl.util.i18n.Locales; +import org.jackhuang.hmcl.util.i18n.Locales.SupportedLocale; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -67,6 +69,7 @@ public final class Config implements Cloneable, Observable { .registerTypeAdapter(ObservableMap.class, new ObservableMapCreator()) .registerTypeAdapterFactory(new JavaFxPropertyTypeAdapterFactory(true, true)) .registerTypeAdapter(Theme.class, new Theme.TypeAdapter()) + .registerTypeAdapter(SupportedLocale.class, new SupportedLocale.TypeAdapter()) .registerTypeAdapter(EnumBackgroundImage.class, new EnumOrdinalDeserializer<>(EnumBackgroundImage.class)) // backward compatibility for backgroundType .registerTypeAdapter(Proxy.Type.class, new EnumOrdinalDeserializer<>(Proxy.Type.class)) // backward compatibility for hasProxy .setPrettyPrinting() @@ -120,7 +123,7 @@ public final class Config implements Cloneable, Observable { private ObjectProperty theme = new SimpleObjectProperty<>(Theme.BLUE); @SerializedName("localization") - private StringProperty localization = new SimpleStringProperty(); + private ObjectProperty localization = new SimpleObjectProperty<>(Locales.DEFAULT); @SerializedName("downloadtype") private IntegerProperty downloadType = new SimpleIntegerProperty(1); @@ -348,15 +351,15 @@ public final class Config implements Cloneable, Observable { return theme; } - public String getLocalization() { + public SupportedLocale getLocalization() { return localization.get(); } - public void setLocalization(String localization) { + public void setLocalization(SupportedLocale localization) { this.localization.set(localization); } - public StringProperty localizationProperty() { + public ObjectProperty localizationProperty() { return localization; } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index ca5a59bbf..483be6292 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -25,7 +25,6 @@ import org.jackhuang.hmcl.download.DownloadProvider; import org.jackhuang.hmcl.event.*; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.util.*; -import org.jackhuang.hmcl.util.i18n.Locales; import java.util.*; import java.util.stream.Collectors; @@ -65,17 +64,6 @@ public class Settings { config().addListener(source -> ConfigHolder.saveConfig()); } - private Locales.SupportedLocale locale = Locales.getLocaleByName(config().getLocalization()); - - public Locales.SupportedLocale getLocale() { - return locale; - } - - public void setLocale(Locales.SupportedLocale locale) { - this.locale = locale; - config().setLocalization(Locales.getNameByLocale(locale)); - } - public Font getFont() { return Font.font(config().getFontFamily(), config().getFontSize()); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java index 966fd3e38..17f2523ed 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java @@ -57,7 +57,6 @@ import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDnD; import org.jackhuang.hmcl.setting.ConfigHolder; import org.jackhuang.hmcl.setting.EnumBackgroundImage; -import org.jackhuang.hmcl.setting.Settings; import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.ui.animation.AnimationProducer; import org.jackhuang.hmcl.ui.animation.ContainerAnimations; @@ -200,7 +199,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza ); nowAnimation.play(); }); - if (!ConfigHolder.isNewlyCreated() || Settings.instance().getLocale().getLocale() != Locale.CHINA) + if (!ConfigHolder.isNewlyCreated() || config().getLocalization().getLocale() != Locale.CHINA) drawerWrapper.getChildren().remove(welcomeView); if (!min) buttonsContainer.getChildren().remove(btnMin); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java index 7a4411a54..717db8f43 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java @@ -39,7 +39,6 @@ import javafx.scene.paint.Color; import javafx.scene.text.Font; import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.setting.*; -import org.jackhuang.hmcl.ui.construct.FileItem; import org.jackhuang.hmcl.ui.construct.FontComboBox; import org.jackhuang.hmcl.ui.construct.MultiFileItem; import org.jackhuang.hmcl.ui.construct.Validator; @@ -135,11 +134,11 @@ public final class SettingsPage extends StackPane implements DecoratorPage { ObservableList