summaryrefslogtreewikicommitdiff
path: root/src/main/java/cat/freya/khs/configuration/Localization.java
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-09-06 23:11:25 -0400
committerFreya Murphy <freya@freyacat.org>2025-09-06 23:11:25 -0400
commit67aba9081bb73aeaa822b059e8ca6defc8352a2f (patch)
treecba7c5c8c9a0286b491b0b0784a27730ce58696e /src/main/java/cat/freya/khs/configuration/Localization.java
parentadd wiki for cgit (diff)
downloadkenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.tar.gz
kenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.tar.bz2
kenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.zip
rename pacakges dev.tylerm -> cat.freya
Diffstat (limited to 'src/main/java/cat/freya/khs/configuration/Localization.java')
-rw-r--r--src/main/java/cat/freya/khs/configuration/Localization.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/cat/freya/khs/configuration/Localization.java b/src/main/java/cat/freya/khs/configuration/Localization.java
new file mode 100644
index 0000000..8b18696
--- /dev/null
+++ b/src/main/java/cat/freya/khs/configuration/Localization.java
@@ -0,0 +1,80 @@
+package cat.freya.khs.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<String,LocalizationString> LOCAL = new HashMap<>();
+ public static final Map<String,LocalizationString> DEFAULT_LOCAL = new HashMap<>();
+
+ private static final Map<String,String[][]> CHANGES = new HashMap<String,String[][]>() {{
+ put("en-US", new String[][]{
+ {"WORLDBORDER_DECREASING"},
+ {"START","TAUNTED"},
+ {"GAME_SETUP", "SETUP_GAME", "SETUP_LOBBY", "SETUP_SEEKER_LOBBY", "SETUP_EXIT", "SETUP_SAVEMAP", "SETUP_BOUNDS"},
+ {"GAME_PLAYER_FOUND", "GAME_PLAYER_FOUND_BY"}
+ });
+ put("de-DE", new String[][]{
+ {},
+ {"TAUNTED"},
+ {"GAME_SETUP", "SETUP_GAME", "SETUP_LOBBY", "SETUP_SEEKER_LOBBY", "SETUP_EXIT", "SETUP_SAVEMAP", "SETUP_BOUNDS"},
+ {"GAME_PLAYER_FOUND", "GAME_PLAYER_FOUND_BY"}
+ });
+ }};
+
+ 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());
+ }
+}