mirror of
https://github.com/PikaMug/Quests.git
synced 2024-11-25 03:55:35 +01:00
Update and expose language setting
This commit is contained in:
parent
fae968c3e6
commit
5c66d01d7c
@ -41,6 +41,8 @@ public interface ISettings {
|
||||
void setIgnoreLockedQuests(final boolean ignoreLockedQuests);
|
||||
int getKillDelay();
|
||||
void setKillDelay(final int killDelay);
|
||||
String getLanguage();
|
||||
void setLanguage(final String language);
|
||||
int getMaxQuests();
|
||||
void setMaxQuests(final int maxQuests);
|
||||
boolean canNpcEffects();
|
||||
|
@ -37,17 +37,17 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class Lang {
|
||||
|
||||
private static String iso = "en-US";
|
||||
//private static String iso = "en-US";
|
||||
private static final LinkedHashMap<String, String> langMap = new LinkedHashMap<>();
|
||||
private static final Pattern hexPattern = Pattern.compile("(?i)%#([0-9A-F]{6})%");
|
||||
|
||||
public static String getISO() {
|
||||
/*public static String getISO() {
|
||||
return iso;
|
||||
}
|
||||
|
||||
public static void setISO(final String iso) {
|
||||
Lang.iso = iso;
|
||||
}
|
||||
}*/
|
||||
|
||||
public static Collection<String> values() {
|
||||
return langMap.values();
|
||||
@ -61,6 +61,14 @@ public class Lang {
|
||||
* @return formatted string, plus processing through PlaceholderAPI by clip
|
||||
*/
|
||||
public static String get(final Player player, final String key) {
|
||||
String locale;
|
||||
try {
|
||||
locale = player.getLocale();
|
||||
} catch (NoSuchMethodError e) {
|
||||
// Older version of Minecraft
|
||||
locale = player.spigot().getLocale();
|
||||
}
|
||||
|
||||
return langMap.containsKey(key) ? LangToken.convertString(player, langMap.get(key)) : "NULL";
|
||||
}
|
||||
|
||||
@ -133,63 +141,64 @@ public class Lang {
|
||||
}
|
||||
}
|
||||
|
||||
public static void init(final QuestsAPI plugin) throws InvalidConfigurationException, IOException {
|
||||
public static void init(final QuestsAPI plugin, String iso) throws InvalidConfigurationException, IOException {
|
||||
final File langFile = new File(plugin.getPluginDataFolder(), File.separator + "lang" + File.separator + iso + File.separator
|
||||
+ "strings.yml");
|
||||
final File langFile_new = new File(plugin.getPluginDataFolder(), File.separator + "lang" + File.separator + iso
|
||||
+ File.separator + "strings_new.yml");
|
||||
final boolean exists_new = langFile_new.exists();
|
||||
final LinkedHashMap<String, String> allStrings = new LinkedHashMap<>();
|
||||
if (langFile.exists() && iso.split("-").length > 1) {
|
||||
final FileConfiguration config= YamlConfiguration
|
||||
.loadConfiguration(new InputStreamReader(new FileInputStream(langFile), StandardCharsets.UTF_8));
|
||||
FileConfiguration config_new = null;
|
||||
if (exists_new) {
|
||||
config_new = YamlConfiguration.loadConfiguration(new InputStreamReader(
|
||||
new FileInputStream(langFile_new), StandardCharsets.UTF_8));
|
||||
}
|
||||
// Load user's lang file and determine new strings
|
||||
for (final String key : config.getKeys(false)) {
|
||||
allStrings.put(key, config.getString(key));
|
||||
if (exists_new) {
|
||||
config_new.set(key, null);
|
||||
}
|
||||
}
|
||||
// Add new strings and notify user
|
||||
if (exists_new) {
|
||||
for (final String key : config_new.getKeys(false)) {
|
||||
final String value = config_new.getString(key);
|
||||
if (value != null) {
|
||||
allStrings.put(key, value);
|
||||
plugin.getPluginLogger().warning("There are new language phrases in /lang/" + iso
|
||||
+ "/strings_new.yml for the current version!"
|
||||
+ " You must transfer them to, or regenerate, strings.yml to remove this warning!");
|
||||
}
|
||||
}
|
||||
config_new.options().header("Below are any new strings for your current version of Quests! "
|
||||
+ "Transfer them to the strings.yml of the"
|
||||
+ " same folder to stay up-to-date and suppress console warnings.");
|
||||
config_new.options().copyHeader(true);
|
||||
config_new.save(langFile_new);
|
||||
}
|
||||
} else {
|
||||
plugin.getPluginLogger().severe("Failed loading lang files for " + iso
|
||||
if (!(langFile.exists() && iso.split("-").length > 1)) {
|
||||
plugin.getPluginLogger().severe("Failed loading lang files for " + iso
|
||||
+ " because they were not found. Using default en-US");
|
||||
plugin.getPluginLogger()
|
||||
.info("If the plugin has not generated language files, ensure Quests has write permissions");
|
||||
plugin.getPluginLogger()
|
||||
.info("For help, visit https://github.com/PikaMug/Quests/wiki/Casual-%E2%80%90-Translations");
|
||||
iso = "en-US";
|
||||
plugin.getPluginLogger().info("CodeSource: " + plugin.getClass().getProtectionDomain().getCodeSource()
|
||||
.toString());
|
||||
plugin.getPluginLogger().info("LocationPath: " + plugin.getClass().getProtectionDomain().getCodeSource()
|
||||
.getLocation().getPath());
|
||||
plugin.getSettings().setLanguage("en-US");
|
||||
if (plugin.getSettings().getConsoleLogging() > 3) {
|
||||
plugin.getPluginLogger().info("CodeSource: " + plugin.getClass().getProtectionDomain().getCodeSource()
|
||||
.toString());
|
||||
plugin.getPluginLogger().info("LocationPath: " + plugin.getClass().getProtectionDomain().getCodeSource()
|
||||
.getLocation().getPath());
|
||||
}
|
||||
final FileConfiguration config = YamlConfiguration.loadConfiguration(new InputStreamReader(Objects
|
||||
.requireNonNull(plugin.getPluginResource("strings.yml")), StandardCharsets.UTF_8));
|
||||
for (final String key : config.getKeys(false)) {
|
||||
allStrings.put(key, config.getString(key));
|
||||
}
|
||||
}
|
||||
final FileConfiguration config= YamlConfiguration
|
||||
.loadConfiguration(new InputStreamReader(new FileInputStream(langFile), StandardCharsets.UTF_8));
|
||||
FileConfiguration config_new = null;
|
||||
if (exists_new) {
|
||||
config_new = YamlConfiguration.loadConfiguration(new InputStreamReader(
|
||||
new FileInputStream(langFile_new), StandardCharsets.UTF_8));
|
||||
}
|
||||
// Load user's lang file and determine new strings
|
||||
for (final String key : config.getKeys(false)) {
|
||||
allStrings.put(key, config.getString(key));
|
||||
if (exists_new) {
|
||||
config_new.set(key, null);
|
||||
}
|
||||
}
|
||||
// Add new strings and notify user
|
||||
if (exists_new) {
|
||||
for (final String key : config_new.getKeys(false)) {
|
||||
final String value = config_new.getString(key);
|
||||
if (value != null) {
|
||||
allStrings.put(key, value);
|
||||
plugin.getPluginLogger().warning("There are new language phrases in /lang/" + iso
|
||||
+ "/strings_new.yml for the current version!"
|
||||
+ " You must transfer them to, or regenerate, strings.yml to remove this warning!");
|
||||
}
|
||||
}
|
||||
config_new.options().header("Below are any new strings for your current version of Quests! "
|
||||
+ "Transfer them to the strings.yml of the"
|
||||
+ " same folder to stay up-to-date and suppress console warnings.");
|
||||
config_new.options().copyHeader(true);
|
||||
config_new.save(langFile_new);
|
||||
}
|
||||
|
||||
final String cmdAdd = allStrings.get("cmdAdd");
|
||||
final String cmdClear = allStrings.get("cmdClear");
|
||||
|
@ -37,10 +37,10 @@ import me.blackvein.quests.exceptions.QuestFormatException;
|
||||
import me.blackvein.quests.exceptions.StageFormatException;
|
||||
import me.blackvein.quests.interfaces.ReloadCallback;
|
||||
import me.blackvein.quests.listeners.BlockListener;
|
||||
import me.blackvein.quests.listeners.CitizensListener;
|
||||
import me.blackvein.quests.listeners.CommandManager;
|
||||
import me.blackvein.quests.listeners.ConvoListener;
|
||||
import me.blackvein.quests.listeners.ItemListener;
|
||||
import me.blackvein.quests.listeners.CitizensListener;
|
||||
import me.blackvein.quests.listeners.PartiesListener;
|
||||
import me.blackvein.quests.listeners.PlayerListener;
|
||||
import me.blackvein.quests.listeners.UniteListener;
|
||||
@ -203,11 +203,13 @@ public class Quests extends JavaPlugin implements QuestsAPI {
|
||||
conditionFactory = new BukkitConditionFactory(this);
|
||||
depends = new Dependencies(this);
|
||||
trigger = new DenizenTrigger(this);
|
||||
final Metrics metrics = new Metrics(this);
|
||||
metrics.addCustomChart(new Metrics.SimplePie("language", Lang::getISO));
|
||||
|
||||
// 2 - Load main config
|
||||
settings.init();
|
||||
if (settings.getLanguage().contains("-")) {
|
||||
final Metrics metrics = new Metrics(this);
|
||||
metrics.addCustomChart(new Metrics.SimplePie("language", () -> settings.getLanguage()));
|
||||
}
|
||||
|
||||
// 3 - Setup language files
|
||||
try {
|
||||
@ -761,7 +763,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
|
||||
}
|
||||
|
||||
/**
|
||||
* Transfer language files from jar to disk
|
||||
* Transfer language files from jar to disk, then initialize default
|
||||
*/
|
||||
private void setupLang() throws IOException, URISyntaxException {
|
||||
final String path = "lang";
|
||||
@ -783,7 +785,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
|
||||
jar.close();
|
||||
}
|
||||
try {
|
||||
Lang.init(this);
|
||||
Lang.init(this, settings.getLanguage());
|
||||
} catch (final InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -1719,7 +1721,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
|
||||
try {
|
||||
Lang.clear();
|
||||
settings.init();
|
||||
Lang.init(Quests.this);
|
||||
Lang.init(Quests.this, settings.getLanguage());
|
||||
quests.clear();
|
||||
actions.clear();
|
||||
conditions.clear();
|
||||
|
@ -13,7 +13,6 @@
|
||||
package me.blackvein.quests;
|
||||
|
||||
import me.blackvein.quests.config.ISettings;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
@ -38,6 +37,7 @@ public class Settings implements ISettings {
|
||||
private boolean giveJournalItem = false;
|
||||
private boolean ignoreLockedQuests = false;
|
||||
private int killDelay = 0;
|
||||
private String language = "en-US";
|
||||
private int maxQuests = 0;
|
||||
private boolean npcEffects = true;
|
||||
private String effect = "note";
|
||||
@ -153,6 +153,12 @@ public class Settings implements ISettings {
|
||||
public void setKillDelay(final int killDelay) {
|
||||
this.killDelay = killDelay;
|
||||
}
|
||||
public String getLanguage() {
|
||||
return language;
|
||||
}
|
||||
public void setLanguage(final String language) {
|
||||
this.language = language;
|
||||
}
|
||||
public int getMaxQuests() {
|
||||
return maxQuests;
|
||||
}
|
||||
@ -249,9 +255,9 @@ public class Settings implements ISettings {
|
||||
killDelay = config.getInt("kill-delay", 600);
|
||||
if (Objects.requireNonNull(config.getString("language")).equalsIgnoreCase("en")) {
|
||||
//Legacy
|
||||
Lang.setISO("en-US");
|
||||
language = "en-US";
|
||||
} else {
|
||||
Lang.setISO(config.getString("language", "en-US"));
|
||||
language = config.getString("language", "en-US");
|
||||
}
|
||||
maxQuests = config.getInt("max-quests", maxQuests);
|
||||
npcEffects = config.getBoolean("npc-effects.enabled", true);
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests.planner;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
|
||||
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent;
|
||||
@ -30,11 +31,14 @@ import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class DateTimePrompt extends QuestsEditorNumericPrompt {
|
||||
|
||||
private final Quests plugin;
|
||||
private final Prompt oldPrompt;
|
||||
private final String source;
|
||||
|
||||
public DateTimePrompt(final ConversationContext context, final Prompt old, final String origin) {
|
||||
super(context);
|
||||
this.plugin = (Quests)context.getPlugin();
|
||||
oldPrompt = old;
|
||||
source = origin;
|
||||
}
|
||||
@ -71,7 +75,7 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
|
||||
dateData += ChatColor.AQUA + timeFormat.format(cal.getTime()) + " ";
|
||||
|
||||
cal.setTimeZone(TimeZone.getTimeZone((String) context.getSessionData("tempZone")));
|
||||
final String[] iso = Lang.getISO().split("-");
|
||||
final String[] iso = plugin.getSettings().getLanguage().split("-");
|
||||
final Locale loc = new Locale(iso[0], iso[1]);
|
||||
final Double zonedHour = (double) (cal.getTimeZone().getRawOffset() / 60 / 60 / 1000);
|
||||
final String[] sep = String.valueOf(zonedHour).replace("-", "").split("\\.");
|
||||
|
@ -408,7 +408,7 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
|
||||
|
||||
final TimeZone tz = TimeZone.getTimeZone(date[6]);
|
||||
cal.setTimeZone(tz);
|
||||
final String[] iso = Lang.getISO().split("-");
|
||||
final String[] iso = plugin.getSettings().getLanguage().split("-");
|
||||
final Locale loc = iso.length > 1 ? new Locale(iso[0], iso[1]) : new Locale(iso[0]);
|
||||
final Double zonehour = (double) (cal.getTimeZone().getRawOffset() / 60 / 60 / 1000);
|
||||
final String[] sep = String.valueOf(zonehour).replace("-", "").split("\\.");
|
||||
|
Loading…
Reference in New Issue
Block a user