-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLangManager.java
More file actions
113 lines (88 loc) · 3.32 KB
/
Copy pathLangManager.java
File metadata and controls
113 lines (88 loc) · 3.32 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package org.welcomemessage.manager;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.welcomemessage.WelcomeMessage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class LangManager {
private final WelcomeMessage plugin;
private final Map<String, FileConfiguration> languages;
private String currentLanguage;
public LangManager(WelcomeMessage plugin) {
this.plugin = plugin;
this.languages = new HashMap<>();
this.currentLanguage = plugin.getConfig().getString("language", "en-US");
loadLanguages();
}
private void loadLanguages() {
String[] availableLanguages = {"en-US", "es-ES"};
for (String lang : availableLanguages) {
loadLanguage(lang);
}
}
private void loadLanguage(String language) {
File langFolder = new File(plugin.getDataFolder(), "lang");
if (!langFolder.exists()) {
langFolder.mkdirs();
}
File langFile = new File(langFolder, language + ".yml");
if (!langFile.exists()) {
plugin.saveResource("lang/" + language + ".yml", false);
}
FileConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);
InputStream defConfigStream = plugin.getResource("lang/" + language + ".yml");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(
new InputStreamReader(defConfigStream, StandardCharsets.UTF_8)
);
langConfig.setDefaults(defConfig);
}
languages.put(language, langConfig);
}
public String getMessage(String key) {
return getMessage(key, null);
}
public String getMessage(String key, String defaultValue) {
FileConfiguration langConfig = languages.get(currentLanguage);
if (langConfig == null) {
langConfig = languages.get("en-US");
}
if (langConfig == null) {
return defaultValue != null ? defaultValue : key;
}
String message = langConfig.getString(key, defaultValue);
return message != null ? colorize(message) : (defaultValue != null ? defaultValue : key);
}
public String getMessage(String key, String playerName, String defaultValue) {
String message = getMessage(key, defaultValue);
return message.replace("%player%", playerName);
}
private String colorize(String message) {
return message.replace("&", "§");
}
public void setLanguage(String language) {
if (languages.containsKey(language)) {
this.currentLanguage = language;
plugin.getConfig().set("language", language);
plugin.saveConfig();
}
}
public String getCurrentLanguage() {
return currentLanguage;
}
public boolean isLanguageAvailable(String language) {
return languages.containsKey(language);
}
public String[] getAvailableLanguages() {
return languages.keySet().toArray(new String[0]);
}
public void reloadLanguages() {
languages.clear();
loadLanguages();
}
}