- * 任何string请都在此处readPropertiesFromFile,然后在
- * src/main/java/org/jcnc/jnotepad/init/Config.java的getXXXXXLanguagePack
- * 注册配置文件,设置多语言语言包
+ * 文本常量,被多处使用的常量放到此处。如果只有一个class使用,在class中使用private static final声明。
*
* @author gewuyou
*/
@@ -57,22 +51,12 @@ public class TextConstants {
public static final String ENCODE = "ENCODE";
/// Config 文本常量
-
- public static final String CH_LANGUAGE_PACK_NAME = "ch_language_pack.txt";
- public static final String EN_LANGUAGE_PACK_NAME = "en_language_pack.txt";
-
public static final String ENGLISH = "english";
public static final String CHINESE = "chinese";
public static final String LOWER_LANGUAGE = "language";
- /**
- * 语言映射
- */
- public static final Map
*
@@ -283,7 +318,7 @@ public class JNotepadMenuBar extends MenuBar {
*/
private void setCurrentLanguage(String language) throws JsonProcessingException {
// 如果当前已是该语言则不执行该方法
- if (localizationConfig.getLanguagePackName().equals(LANGUAGE_FILE_MAP.get(language))) {
+ if (localizationConfig.getLanguage().equals(language)) {
return;
}
boolean flag = false;
@@ -315,7 +350,7 @@ public class JNotepadMenuBar extends MenuBar {
writer.write(JsonUtil.toJsonString(json));
// 刷新文件
writer.flush();
- // 重新加载语言包和快捷键
+ // 重新加载快捷键
View.getInstance().initJnotepadConfigs(LunchApp.getLocalizationConfigs());
logger.info("已刷新语言包!");
logger.info("已刷新快捷键!");
diff --git a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java
index 5839324..01c681f 100644
--- a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java
@@ -1,14 +1,19 @@
package org.jcnc.jnotepad.ui.status;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.HBox;
import org.jcnc.jnotepad.app.config.LocalizationConfig;
+import org.jcnc.jnotepad.app.i18n.UIResourceBundle;
+import org.jcnc.jnotepad.constants.TextConstants;
import org.jcnc.jnotepad.ui.tab.JNotepadTab;
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
import java.nio.charset.Charset;
+import java.util.ResourceBundle;
/**
* 状态栏组件封装。
@@ -20,16 +25,19 @@ import java.nio.charset.Charset;
public class JNotepadStatusBox extends HBox {
private static final JNotepadStatusBox STATUS_BOX = new JNotepadStatusBox();
- LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig();
/**
* 字数统计及光标
*/
private Label statusLabel;
+ private static final String STATUS_LABEL_FORMAT = "%s : %d \t%s: %d \t%s: %d \t";
+
/**
* 显示文本编码
*/
- private Label enCodingLabel;
+ private Label encodingLabel;
+ private final String ENCODING_LABEL_FORMAT = "\t%s : %s";
+
private JNotepadStatusBox() {
initStatusBox();
@@ -43,14 +51,23 @@ public class JNotepadStatusBox extends HBox {
public void initStatusBox() {
this.getChildren().clear();
// 创建状态栏
- statusLabel = new Label(localizationConfig.getRow() + ":1 \t" + localizationConfig.getColumn() + ":1 \t" + localizationConfig.getWordCount() + ":0 ");
+ statusLabel = new Label();
+ statusLabel.setText(getStatusBarFormattedText(0, 0, 1));
// 创建新的标签以显示编码信息
- enCodingLabel = new Label();
+ encodingLabel = new Label();
updateEncodingLabel();
updateWhenTabSelected();
this.getChildren().add(statusLabel);
- this.getChildren().add(enCodingLabel);
+ this.getChildren().add(encodingLabel);
this.getProperties().put("borderpane-margin", new Insets(5, 10, 5, 10));
+
+ UIResourceBundle.getInstance().addListener(new ChangeListener