diff --git a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java index 604a49f..6e5f291 100644 --- a/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java +++ b/plugin/src/main/java/com/lishid/openinv/util/LanguageManager.java @@ -39,132 +39,132 @@ import org.jetbrains.annotations.Nullable; */ public class LanguageManager { - private final OpenInv plugin; - private final String defaultLocale; - private final Map locales; + private final OpenInv plugin; + private final String defaultLocale; + private final Map locales; - public LanguageManager(@NotNull OpenInv plugin, @NotNull String defaultLocale) { - this.plugin = plugin; - this.defaultLocale = defaultLocale; - this.locales = new HashMap<>(); - getOrLoadLocale(defaultLocale); - } + public LanguageManager(@NotNull OpenInv plugin, @NotNull String defaultLocale) { + this.plugin = plugin; + this.defaultLocale = defaultLocale; + this.locales = new HashMap<>(); + getOrLoadLocale(defaultLocale); + } - private YamlConfiguration getOrLoadLocale(@NotNull String locale) { - YamlConfiguration loaded = locales.get(locale); - if (loaded != null) { - return loaded; - } + private YamlConfiguration getOrLoadLocale(@NotNull String locale) { + YamlConfiguration loaded = locales.get(locale); + if (loaded != null) { + return loaded; + } - InputStream resourceStream = plugin.getResource("locale/" + locale + ".yml"); - YamlConfiguration localeConfigDefaults; - if (resourceStream == null) { - localeConfigDefaults = new YamlConfiguration(); - } else { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream))) { - localeConfigDefaults = YamlConfiguration.loadConfiguration(reader); - } catch (IOException e) { - plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to load resource " + locale + ".yml", e); - localeConfigDefaults = new YamlConfiguration(); - } - } + InputStream resourceStream = plugin.getResource("locale/" + locale + ".yml"); + YamlConfiguration localeConfigDefaults; + if (resourceStream == null) { + localeConfigDefaults = new YamlConfiguration(); + } else { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream))) { + localeConfigDefaults = YamlConfiguration.loadConfiguration(reader); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to load resource " + locale + ".yml", e); + localeConfigDefaults = new YamlConfiguration(); + } + } - File file = new File(plugin.getDataFolder(), locale + ".yml"); - YamlConfiguration localeConfig; + File file = new File(plugin.getDataFolder(), locale + ".yml"); + YamlConfiguration localeConfig; - if (!file.exists()) { - localeConfig = localeConfigDefaults; - try { - localeConfigDefaults.save(file); - } catch (IOException e) { - plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); - } - } else { - localeConfig = YamlConfiguration.loadConfiguration(file); + if (!file.exists()) { + localeConfig = localeConfigDefaults; + try { + localeConfigDefaults.save(file); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); + } + } else { + localeConfig = YamlConfiguration.loadConfiguration(file); - // Add new language keys - List newKeys = new ArrayList<>(); - for (String key : localeConfigDefaults.getKeys(true)) { - if (localeConfigDefaults.isConfigurationSection(key)) { - continue; - } + // Add new language keys + List newKeys = new ArrayList<>(); + for (String key : localeConfigDefaults.getKeys(true)) { + if (localeConfigDefaults.isConfigurationSection(key)) { + continue; + } - if (localeConfig.isSet(key)) { - continue; - } + if (localeConfig.isSet(key)) { + continue; + } - localeConfig.set(key, localeConfigDefaults.get(key)); - newKeys.add(key); - } + localeConfig.set(key, localeConfigDefaults.get(key)); + newKeys.add(key); + } - if (!newKeys.isEmpty()) { - plugin.getLogger().info("[LanguageManager] Added new language keys: " + String.join(", ", newKeys)); - try { - localeConfig.save(file); - } catch (IOException e) { - plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); - } - } - } + if (!newKeys.isEmpty()) { + plugin.getLogger().info("[LanguageManager] Added new language keys: " + String.join(", ", newKeys)); + try { + localeConfig.save(file); + } catch (IOException e) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Unable to save resource " + locale + ".yml", e); + } + } + } - if (!locale.equals(defaultLocale)) { - localeConfigDefaults = locales.get(defaultLocale); + if (!locale.equals(defaultLocale)) { + localeConfigDefaults = locales.get(defaultLocale); - // Check for missing keys - List newKeys = new ArrayList<>(); - for (String key : localeConfigDefaults.getKeys(true)) { - if (localeConfigDefaults.isConfigurationSection(key)) { - continue; - } + // Check for missing keys + List newKeys = new ArrayList<>(); + for (String key : localeConfigDefaults.getKeys(true)) { + if (localeConfigDefaults.isConfigurationSection(key)) { + continue; + } - if (localeConfig.isSet(key)) { - continue; - } + if (localeConfig.isSet(key)) { + continue; + } - newKeys.add(key); - } + newKeys.add(key); + } - if (!newKeys.isEmpty()) { - plugin.getLogger().info("[LanguageManager] Missing translations from " + locale + ".yml: " + String.join(", ", newKeys)); - } + if (!newKeys.isEmpty()) { + plugin.getLogger().info("[LanguageManager] Missing translations from " + locale + ".yml: " + String.join(", ", newKeys)); + } - // Fall through to default locale - localeConfig.setDefaults(localeConfigDefaults); - } + // Fall through to default locale + localeConfig.setDefaults(localeConfigDefaults); + } - locales.put(locale, localeConfig); - return localeConfig; - } + locales.put(locale, localeConfig); + return localeConfig; + } - @Nullable - public String getValue(@NotNull String key, @Nullable String locale) { - String value = getOrLoadLocale(locale == null ? defaultLocale : locale.toLowerCase()).getString(key); - if (value == null || value.isEmpty()) { - return null; - } + @Nullable + public String getValue(@NotNull String key, @Nullable String locale) { + String value = getOrLoadLocale(locale == null ? defaultLocale : locale.toLowerCase()).getString(key); + if (value == null || value.isEmpty()) { + return null; + } - value = ChatColor.translateAlternateColorCodes('&', value); + value = ChatColor.translateAlternateColorCodes('&', value); - return value; - } + return value; + } - @Nullable - public String getValue(@NotNull String key, @Nullable String locale, @NotNull String... replacements) { - if (replacements.length % 2 != 0) { - plugin.getLogger().log(Level.WARNING, "[LanguageManager] Replacement data is uneven", new Exception()); - } + @Nullable + public String getValue(@NotNull String key, @Nullable String locale, @NotNull String... replacements) { + if (replacements.length % 2 != 0) { + plugin.getLogger().log(Level.WARNING, "[LanguageManager] Replacement data is uneven", new Exception()); + } - String value = getValue(key, locale); + String value = getValue(key, locale); - if (value == null) { - return null; - } + if (value == null) { + return null; + } - for (int i = 0; i < replacements.length; i += 2) { - value = value.replace(replacements[i], replacements[i + 1]); - } + for (int i = 0; i < replacements.length; i += 2) { + value = value.replace(replacements[i], replacements[i + 1]); + } - return value; - } + return value; + } }