From c565450bc20054ddc158eea413fc046e63f26a9d Mon Sep 17 00:00:00 2001 From: ZZHow Date: Thu, 30 Jan 2025 15:30:10 +0800 Subject: [PATCH 01/65] feat: add language selection dropdown to client interface --- .../ui/controller/MainController.java | 49 ++++++++++++++++++- .../magicshare/ui/window/main-window.fxml | 3 ++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/zzhow/magicshare/ui/controller/MainController.java b/backend/src/main/java/com/zzhow/magicshare/ui/controller/MainController.java index f1a164b..27289ed 100644 --- a/backend/src/main/java/com/zzhow/magicshare/ui/controller/MainController.java +++ b/backend/src/main/java/com/zzhow/magicshare/ui/controller/MainController.java @@ -2,6 +2,7 @@ import com.zzhow.magicshare.repository.FileRepository; import com.zzhow.magicshare.pojo.entity.FileDetail; +import com.zzhow.magicshare.repository.LanguageRepository; import com.zzhow.magicshare.ui.service.ShareService; import com.zzhow.magicshare.ui.service.impl.ShareServiceImpl; import com.zzhow.magicshare.ui.window.AboutWindow; @@ -16,10 +17,11 @@ import javafx.scene.input.KeyEvent; import javafx.scene.input.TransferMode; import javafx.stage.DirectoryChooser; -import javafx.stage.FileChooser; import java.io.File; import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; /** * @author ZZHow @@ -48,6 +50,8 @@ public class MainController { private Button button2; @FXML private TableView tableView1; + @FXML + private ChoiceBox languageSelector; private final ShareService shareService = new ShareServiceImpl(); @@ -77,6 +81,30 @@ private void initialize() { fileSizeCol.setPrefWidth(totalWidth * 0.13); filePathCol.setPrefWidth(totalWidth * 0.50); }); + + languageSelector.getItems().addAll("简体中文", "繁體中文", "English"); + String language = Locale.getDefault().toLanguageTag(); + if (language.contains("zh")) { + if (language.contains("Hans")) + language = "zh_Hans"; + else if (language.contains("Hant")) + language = "zh_Hant"; + else if (language.contains("CN")) + language = "zh_Hans"; + else + language = "zh_Hant"; + } else { + language = "en_US"; + } + + language = switch (language) { + case "zh_Hans" -> "简体中文"; + case "zh_Hant" -> "繁體中文"; + case "en_US" -> "English"; + default -> "简体中文"; + }; + languageSelector.setValue(language); + switchLanguage(); } @FXML @@ -178,4 +206,23 @@ private void onDragFile(DragEvent event) { private void onAboutClicked() { AboutWindow.open(); } + + @FXML + private void switchLanguage() { + String selectorValue = languageSelector.getValue(); + selectorValue = switch (selectorValue) { + case "简体中文" -> "zh_Hans"; + case "繁體中文" -> "zh_Hant"; + case "English" -> "en_US"; + default -> "zh_Hans"; + }; + + LanguageRepository.setLanguage(selectorValue); + + ResourceBundle bundle = LanguageRepository.bundle; + + label1.setText(bundle.getString("label1")); + label3.setText(bundle.getString("label3")); + label4.setText(bundle.getString("label4")); + } } diff --git a/backend/src/main/resources/com/zzhow/magicshare/ui/window/main-window.fxml b/backend/src/main/resources/com/zzhow/magicshare/ui/window/main-window.fxml index 4b3da2f..101a52e 100755 --- a/backend/src/main/resources/com/zzhow/magicshare/ui/window/main-window.fxml +++ b/backend/src/main/resources/com/zzhow/magicshare/ui/window/main-window.fxml @@ -1,6 +1,7 @@ + @@ -33,5 +34,7 @@