From bf0d01778eaab4dfcba6b32484c911fc37396b76 Mon Sep 17 00:00:00 2001 From: Secretboy <74841174+Secretboy-SMR@users.noreply.github.com> Date: Sat, 7 May 2022 12:50:10 +0800 Subject: [PATCH] Update Language.java --- .../java/emu/grasscutter/utils/Language.java | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/emu/grasscutter/utils/Language.java b/src/main/java/emu/grasscutter/utils/Language.java index 8acb05cd4..340d35dc2 100644 --- a/src/main/java/emu/grasscutter/utils/Language.java +++ b/src/main/java/emu/grasscutter/utils/Language.java @@ -39,18 +39,47 @@ public final class Language { } /** - * Reads a file and creates a language instance. + * creates a language instance. * @param fileName The name of the language file. */ private Language(String fileName) { @Nullable JsonObject languageData = null; + + languageData = loadLanguage(fileName); + + if (languageData == null) { + Grasscutter.getLogger().info("Now switch to default language"); + languageData = loadDefaultLanguage(); + } + + assert languageData != null : "languageData is null"; + this.languageData = languageData; + } + + /** + * Load default language file and creates a language instance. + * @return language data + */ + private JsonObject loadDefaultLanguage() { + var fileName = Grasscutter.getConfig().DefaultLanguage.toLanguageTag() + ".json"; + return loadLanguage(fileName); + } + + /** + * Reads a file and creates a language instance. + * @param fileName The name of the language file. + * @return language data + */ + private JsonObject loadLanguage(String fileName) { + @Nullable JsonObject languageData = null; try { InputStream file = Grasscutter.class.getResourceAsStream("/languages/" + fileName); languageData = Grasscutter.getGsonFactory().fromJson(Utils.readFromInputStream(file), JsonObject.class); } catch (Exception exception) { - Grasscutter.getLogger().error("Failed to load language file: " + fileName, exception); - } this.languageData = languageData; + Grasscutter.getLogger().warn("Failed to load language file: " + fileName); + } + return languageData; } /**