From 2c29442ae62ce5672901d5370d8e108f4b167292 Mon Sep 17 00:00:00 2001 From: AnemoFlower Date: Thu, 22 Jan 2026 13:15:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本 PR 添加了国际化翻译。 --- .../modpackconverter/Converter.java | 18 ++++++++++-------- .../modpackconverter/util/I18n.java | 12 ++++++++++++ .../modpackconverter/util/Logger.java | 14 ++++++++++++++ src/main/resources/I18n.properties | 7 +++++++ src/main/resources/I18n_zh_CN.properties | 7 +++++++ 5 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/ceciliastudio/modpackconverter/util/I18n.java create mode 100644 src/main/java/org/ceciliastudio/modpackconverter/util/Logger.java create mode 100644 src/main/resources/I18n.properties create mode 100644 src/main/resources/I18n_zh_CN.properties diff --git a/src/main/java/org/ceciliastudio/modpackconverter/Converter.java b/src/main/java/org/ceciliastudio/modpackconverter/Converter.java index 35fab07..e7461a7 100644 --- a/src/main/java/org/ceciliastudio/modpackconverter/Converter.java +++ b/src/main/java/org/ceciliastudio/modpackconverter/Converter.java @@ -1,6 +1,8 @@ package org.ceciliastudio.modpackconverter; import org.ceciliastudio.modpackconverter.util.FileUtil; +import org.ceciliastudio.modpackconverter.util.I18n; +import org.ceciliastudio.modpackconverter.util.Logger; import org.ceciliastudio.modpackconverter.util.ZipUtil; import java.io.IOException; @@ -63,21 +65,21 @@ public static void convert(Path modpackPath, Path destination) throws IOExceptio Path mrpackDirectory = Files.createDirectory(tempDirectory.resolve("mrpack")); String name = modpackPath.getFileName().toString().replaceFirst("\\.[^.]+$", ""); try { - System.out.println("正在解压整合包文件……"); + Logger.info("log.extracting_modpack"); ZipUtil.unzip(modpackPath, tempDirectory); - System.out.println("正在查找实例……"); + Logger.info("log.searching_instance"); Optional instanceRoot = findInstanceRoot(tempDirectory); if (instanceRoot.isEmpty()) { - System.err.println("未找到符合要求的实例目录"); - throw new RuntimeException("未找到符合要求的实例目录。"); + Logger.error("log.no_instances_was_found"); + throw new RuntimeException(I18n.localized("log.no_instances_was_found")); } - System.out.println("正在生成 Modrinth 整合包……"); + Logger.info("log.generating_mrpack"); generateModrinthManifest(name, "未知", "未知", Map.of("minecraft", "1.21"), mrpackDirectory.resolve("modrinth.index.json")); - System.out.println("正在拷贝文件……"); + Logger.info("log.copying_files"); copyInstanceFiles(instanceRoot.get(), mrpackDirectory.resolve("overrides")); - System.out.println("正在创建压缩包……"); + Logger.info("log.creating_archive"); ZipUtil.zip(mrpackDirectory, destination); - System.out.println("整合包转换完成"); + Logger.info("log.modpack_convert_finished"); } finally { Files.walkFileTree(tempDirectory, new SimpleFileVisitor<>() { @Override diff --git a/src/main/java/org/ceciliastudio/modpackconverter/util/I18n.java b/src/main/java/org/ceciliastudio/modpackconverter/util/I18n.java new file mode 100644 index 0000000..5a440e3 --- /dev/null +++ b/src/main/java/org/ceciliastudio/modpackconverter/util/I18n.java @@ -0,0 +1,12 @@ +package org.ceciliastudio.modpackconverter.util; + +import java.util.Locale; +import java.util.ResourceBundle; + +public class I18n { + public static final ResourceBundle BUNDLE = ResourceBundle.getBundle("I18n", Locale.getDefault()); + + public static String localized(String key) { + return BUNDLE.getString(key); + } +} diff --git a/src/main/java/org/ceciliastudio/modpackconverter/util/Logger.java b/src/main/java/org/ceciliastudio/modpackconverter/util/Logger.java new file mode 100644 index 0000000..81ea404 --- /dev/null +++ b/src/main/java/org/ceciliastudio/modpackconverter/util/Logger.java @@ -0,0 +1,14 @@ +package org.ceciliastudio.modpackconverter.util; + +public class Logger { + public static void info(String key) { + System.out.println(I18n.localized(key)); + } + + public static void error(String key) { + System.err.println(I18n.localized(key)); + } + + private Logger() { + } +} diff --git a/src/main/resources/I18n.properties b/src/main/resources/I18n.properties new file mode 100644 index 0000000..5a28498 --- /dev/null +++ b/src/main/resources/I18n.properties @@ -0,0 +1,7 @@ +log.extracting_modpack=Extracting the modpack file... +log.searching_instance=Searching for instances... +log.no_instances_was_found=No matching instance directory found +log.generating_mrpack=Generating Modrinth modpack... +log.copying_files=Copying files... +log.creating_archive=Creating archive... +log.modpack_convert_finished=Modpack conversion finished \ No newline at end of file diff --git a/src/main/resources/I18n_zh_CN.properties b/src/main/resources/I18n_zh_CN.properties new file mode 100644 index 0000000..170a5e6 --- /dev/null +++ b/src/main/resources/I18n_zh_CN.properties @@ -0,0 +1,7 @@ +log.extracting_modpack=正在解压整合包文件…… +log.searching_instance=正在查找实例…… +log.no_instances_was_found=未找到符合要求的实例目录 +log.generating_mrpack=正在生成 Modrinth 整合包…… +log.copying_files=正在拷贝文件…… +log.creating_archive=正在创建压缩包…… +log.modpack_convert_finished=整合包转换完成 \ No newline at end of file