diff --git a/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java b/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java index f780409..3af1d3a 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java +++ b/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java @@ -40,11 +40,22 @@ public class LocalizationController { return Locale.getDefault(); } + /** + * 初始化语言配置 + */ public static void initLocal() { setCurrentLocal(null); } + /** + * 设置当前语言配置 + * @param locale 当前语言Local对象 + */ public static void setCurrentLocal(Locale locale) { + if (locale != null && locale.equals(getCurrentLocal())) { + // 要更新的语言与当前语言一致,则不执行 + return; + } if (locale == null) { locale = SUPPORT_LOCALES.get(LOCALIZATION_CONFIG.getLanguage()); } @@ -57,6 +68,10 @@ public class LocalizationController { LOCALIZATION_CONFIG.setLanguage(SUPPORT_LANGUAGES.get(locale)); } + /** + * 设置当前语言配置 + * @param language 当前语言自定义字符形式 + */ public static void setCurrentLanguage(String language) { Locale locale = SUPPORT_LOCALES.get(language); if (locale != null) { @@ -78,6 +93,10 @@ public class LocalizationController { appConfigController.updateLanguage(language); } + /** + * 查询当前语言配置 + * @return appConfig中的当前语言配置 + */ public String getLanguage() { return appConfigController.getLanguage(); } diff --git a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java index 9160ed6..b9c8c7f 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java @@ -285,16 +285,14 @@ public class JNotepadMenuBar extends MenuBar { // 设置窗口为置顶 primaryStage.setAlwaysOnTop(after); }); - englishItem.setOnAction(actionEvent -> { - setCurrentLanguage(ENGLISH); - toggleLanguage(actionEvent); - }); - chineseItem.setOnAction(actionEvent -> { - setCurrentLanguage(CHINESE); - toggleLanguage(actionEvent); - }); + englishItem.setOnAction(this::toggleLanguage); + chineseItem.setOnAction(this::toggleLanguage); } + /** + * 切换语言 + * @param actionEvent 点击事件 + */ private void toggleLanguage(ActionEvent actionEvent) { if (actionEvent == null) { return; @@ -306,20 +304,6 @@ public class JNotepadMenuBar extends MenuBar { LocalizationController.setCurrentLocal((Locale) languageItem.getUserData()); } - /** - * 设置当前语言
- * - * @param language 要设置的语言 - * @since 2023/8/26 16:16 - */ - private void setCurrentLanguage(String language) { - // 如果当前已是该语言则不执行该方法 - if (localizationController.getLanguage().equals(language)) { - return; - } - LocalizationController.setCurrentLanguage(language); - AppConfigController.getInstance().updateLanguage(language); - } /** * 根据当前选中tab,更新菜单选项