From 4f5cb84d02da8cd44da904061e058e9bb9931b63 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 8 Feb 2021 05:10:10 +0100 Subject: [PATCH] Improves error handling when unable to load a language and always uses english as backup language to make sure the plugin won't crash when an invalid language is chosen --- .../knarcraft/stargate/LanguageLoader.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/knarcraft/stargate/LanguageLoader.java b/src/main/java/net/knarcraft/stargate/LanguageLoader.java index 326ca3a..6fb7c08 100644 --- a/src/main/java/net/knarcraft/stargate/LanguageLoader.java +++ b/src/main/java/net/knarcraft/stargate/LanguageLoader.java @@ -65,7 +65,7 @@ public class LanguageLoader { loadedStringTranslations = load(chosenLanguage); // We have a default hashMap used for when new text is added. - InputStream inputStream = getClass().getResourceAsStream("/lang/" + chosenLanguage + ".txt"); + InputStream inputStream = getClass().getResourceAsStream("/lang/en.txt"); if (inputStream != null) { loadedBackupStrings = load("en", inputStream); } else { @@ -89,10 +89,17 @@ public class LanguageLoader { * @return

The string in the user's preferred language

*/ public String getString(String name) { - String val = loadedStringTranslations.get(name); - if (val == null && loadedBackupStrings != null) val = loadedBackupStrings.get(name); - if (val == null) return ""; - return val; + String value = null; + if (loadedStringTranslations != null) { + value = loadedStringTranslations.get(name); + } + if (value == null && loadedBackupStrings != null) { + value = loadedBackupStrings.get(name); + } + if (value == null) { + return ""; + } + return value; } /** @@ -115,7 +122,14 @@ public class LanguageLoader { Map currentLanguageValues = load(language); InputStream inputStream = getClass().getResourceAsStream("/lang/" + language + ".txt"); - if (inputStream == null) return; + if (inputStream == null) { + Stargate.log.info("The language " + language + " is not available. You can add a custom language " + + "by creating a new text file in the lang directory."); + if (Stargate.debug) { + Stargate.log.info("Ubabke to load /lang/" + language + ".txt"); + } + return; + } boolean updated = false; FileOutputStream fileOutputStream = null; @@ -238,6 +252,9 @@ public class LanguageLoader { } readLanguageFile(inputStreamReader, strings); } catch (Exception e) { + if (Stargate.debug) { + Stargate.log.info("Unable to load chosen language"); + } return null; } finally { if (fileInputStream != null) {