/*
* This file is part of Kenshins Hide and Seek
*
* Copyright (c) 2021 Tyler Murphy.
*
* Kenshins Hide and Seek free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* he Free Software Foundation version 3.
*
* Kenshins Hide and Seek is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
package net.tylermurphy.hideAndSeek.configuration;
import net.md_5.bungee.api.ChatColor;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class Localization {
public static final Map LOCAL = new HashMap<>();
public static final Map DEFAULT_LOCAL = new HashMap<>();
private static final Map CHANGES = new HashMap() {{
put("en-US", new String[][]{
{"WORLDBORDER_DECREASING"},
{"START","TAUNTED"},
{"GAME_SETUP", "SETUP_GAME", "SETUP_LOBBY", "SETUP_SEEKER_LOBBY", "SETUP_EXIT", "SETUP_SAVEMAP", "SETUP_BOUNDS"}
});
put("de-DE", new String[][]{
{},
{"TAUNTED"}
});
}};
public static void loadLocalization() {
ConfigManager manager = ConfigManager.create("localization.yml", "lang/localization_"+Config.locale +".yml");
int PLUGIN_VERSION = manager.getDefaultInt("version");
int VERSION = manager.getInt("version");
if (VERSION < PLUGIN_VERSION) {
for(int i = VERSION; i < PLUGIN_VERSION; i++) {
if (i < 1) continue;
String[] changeList = CHANGES.get(Config.locale)[i-1];
for(String change : changeList)
manager.reset("Localization." + change);
}
manager.reset("version");
}
String SELECTED_LOCAL = manager.getString("type");
if (SELECTED_LOCAL == null) {
manager.reset("type");
} else if (!SELECTED_LOCAL.equals(Config.locale)) {
manager.resetFile("lang"+File.separator+"localization_"+Config.locale +".yml");
}
manager.saveConfig();
for(String key : manager.getConfigurationSection("Localization").getKeys(false)) {
LOCAL.put(
key,
new LocalizationString( ChatColor.translateAlternateColorCodes('&', manager.getString("Localization."+key) ) )
);
}
for(String key : manager.getDefaultConfigurationSection("Localization").getKeys(false)) {
DEFAULT_LOCAL.put(
key,
new LocalizationString( ChatColor.translateAlternateColorCodes('&', manager.getString("Localization."+key) ) )
);
}
}
public static LocalizationString message(String key) {
LocalizationString message = LOCAL.get(key);
if (message == null) {
LocalizationString defaultMessage = DEFAULT_LOCAL.get(key);
if(defaultMessage == null) {
return new LocalizationString(ChatColor.RED + "" + ChatColor.ITALIC + key + " is not found in localization.yml. This is a plugin issue, please report it.");
}
return new LocalizationString(defaultMessage.toString());
}
return new LocalizationString(message.toString());
}
}