From 382b730f1e51c7ccdd440cb0736e55acfe1394da Mon Sep 17 00:00:00 2001 From: CrawKatt Date: Thu, 22 Jan 2026 15:37:22 -0300 Subject: [PATCH] =?UTF-8?q?Agrega=20un=20LanguageFactory=20para=20crear=20?= =?UTF-8?q?claves=20de=20idioma=20personalizadas=20y=20flexibiliza=20el=20?= =?UTF-8?q?LanguageManager=20para=20agregar=20otros=20idiomas=20de=20forma?= =?UTF-8?q?=20din=C3=A1mica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../api/lang/LanguageFactory.java | 67 +++++++++++++++++++ .../api/lang/LanguageManager.java | 18 +++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageFactory.java diff --git a/gradle.properties b/gradle.properties index 0f485b0..4669fdb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.21.1 yarn_mappings=1.21.1+build.3 loader_version=0.18.1 # Mod Properties -mod_version=0.0.10 +mod_version=0.1.0 maven_group=io.github.pixelstudios-dev archives_base_name=PixelStudiosCore # Dependencies diff --git a/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageFactory.java b/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageFactory.java new file mode 100644 index 0000000..c3468e3 --- /dev/null +++ b/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageFactory.java @@ -0,0 +1,67 @@ +package io.pixelstudios.pixelstudioscore.api.lang; + +import java.util.HashMap; +import java.util.Map; + +public class LanguageFactory { + + private final String key; + + private final Map translations = new HashMap<>(); + + private LanguageFactory(String key) { + + this.key = key; + + } + + public static LanguageFactory create(String key) { + + return new LanguageFactory(key); + + } + + public LanguageFactory spanish(String text) { + + return custom(LanguageManager.Languages.SPANISH.getLang(), text); + + } + + public LanguageFactory english(String text) { + + return custom(LanguageManager.Languages.ENGLISH.getLang(), text); + + } + + /** + * Sirve para agregar una clave personalizada compatible con cualquier idioma. + * Ejemplo: + *
{@code
+     * LanguageFactory.create("item.sword.name")
+     *     .spanish("Espada")
+     *     .english("Sword")
+     *     .custom("fr_fr", "Épée")        // Francés
+     *     .custom("pt_br", "Espada")      // Portugués
+     *     .custom("ru_ru", "Меч")         // Ruso
+     *     .build();
+     * }
+ * + * @param langCode El código del idioma (ej. "fr_fr"). + * @param text El texto traducido. + * @return Esta instancia de LanguageFactory. + */ + public LanguageFactory custom(String langCode, String text) { + + if (text != null) + this.translations.put(langCode, text); + + return this; + + } + + public void build() { + + translations.forEach((langCode, text) -> LanguageManager.addRawTranslation(key, text, langCode)); + + } +} \ No newline at end of file diff --git a/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageManager.java b/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageManager.java index bf28ce5..621d72d 100644 --- a/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageManager.java +++ b/src/main/java/io/pixelstudios/pixelstudioscore/api/lang/LanguageManager.java @@ -16,6 +16,24 @@ public static void addTranslation(String category, String id, String translation } + public static void addTranslation(String category, String id, String translation, String langCode) { + + translationMap.put(langCode + "#" + category + "." + MOD_ID + "." + id, translation); + + } + + public static void addRawTranslation(String fullKey, String translation, Languages language) { + + translationMap.put(language.getLang() + "#" + fullKey, translation); + + } + + public static void addRawTranslation(String fullKey, String translation, String langCode) { + + translationMap.put(langCode + "#" + fullKey, translation); + + } + public static HashMap getTranslationMap() { return translationMap; }