summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java
blob: 941841450eff6a73858fc7eb957e828dc7d317d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * 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 <http://www.gnu.org/licenses/>.
 *
 */

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<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"}});
		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());
	}
}