feat: initial i18n support
This commit is contained in:
parent
421e1f74e6
commit
1e23c64144
6 changed files with 51 additions and 4 deletions
|
@ -6,6 +6,7 @@ import net.artelnatif.nicko.command.NickoTabCompleter;
|
|||
import net.artelnatif.nicko.config.NickoConfiguration;
|
||||
import net.artelnatif.nicko.event.PlayerJoinListener;
|
||||
import net.artelnatif.nicko.event.PlayerQuitListener;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.impl.Internals;
|
||||
import net.artelnatif.nicko.impl.InternalsProvider;
|
||||
import net.artelnatif.nicko.mojang.MojangAPI;
|
||||
|
@ -15,6 +16,7 @@ import net.artelnatif.nicko.utils.ServerUtils;
|
|||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class NickoBukkit extends JavaPlugin {
|
||||
|
@ -23,6 +25,7 @@ public class NickoBukkit extends JavaPlugin {
|
|||
private NickoConfiguration nickoConfiguration;
|
||||
private MojangAPI mojangAPI;
|
||||
private PlayerDataStore dataStore;
|
||||
private I18N i18N;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
@ -38,6 +41,10 @@ public class NickoBukkit extends JavaPlugin {
|
|||
if (getServer().getPluginManager().isPluginEnabled(this)) {
|
||||
mojangAPI = new MojangAPI();
|
||||
|
||||
getLogger().info("Loading locale...");
|
||||
Locale.setDefault(Locale.ENGLISH);
|
||||
i18N = new I18N(this);
|
||||
|
||||
final PluginCommand command = getCommand("nicko");
|
||||
if (command != null) {
|
||||
command.setExecutor(new NickoCommand());
|
||||
|
|
|
@ -15,6 +15,8 @@ public class NickoConfiguration {
|
|||
return getConfig().getString("prefix");
|
||||
}
|
||||
|
||||
public String getLocale() { return getConfig().getString("locale"); }
|
||||
|
||||
public String getDisguiseKitHeader() {
|
||||
return getConfig().getString("disguisekit.header");
|
||||
}
|
||||
|
|
|
@ -1,13 +1,36 @@
|
|||
package net.artelnatif.nicko.i18n;
|
||||
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import org.apache.commons.lang.LocaleUtils;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Locale;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class I18N {
|
||||
public static final class Message {
|
||||
public static final String BASE = NickoBukkit.getInstance().getNickoConfig().getPrefix() + " ";
|
||||
private final NickoBukkit instance;
|
||||
private final MessageFormat formatter = new MessageFormat("");
|
||||
|
||||
public static final class Command {
|
||||
public static final String TARGET_OFFLINE = BASE + "§cSpecified player is offline. Try again.";
|
||||
public I18N(NickoBukkit instance) {
|
||||
this.instance = instance;
|
||||
formatter.setLocale(getLocale());
|
||||
}
|
||||
|
||||
private Locale getLocale() {
|
||||
try {
|
||||
return LocaleUtils.toLocale(instance.getNickoConfig().getLocale());
|
||||
} catch (IllegalArgumentException exception) {
|
||||
instance.getLogger().severe("Invalid locale provided, defaulting to " + Locale.getDefault().getDisplayName() + ".");
|
||||
return Locale.getDefault();
|
||||
}
|
||||
}
|
||||
|
||||
private ResourceBundle getBundle() {
|
||||
return ResourceBundle.getBundle("locale", getLocale());
|
||||
}
|
||||
|
||||
public String get(String key, Object... arguments) {
|
||||
formatter.applyPattern(getBundle().getString(key));
|
||||
return formatter.format(arguments);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package net.artelnatif.nicko.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class FileUtils {
|
||||
public static boolean isPresentOrCreate(File file) throws IOException {
|
||||
if (!file.exists()) {
|
||||
return file.createNewFile();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
1
nicko-core/src/main/resources/locale_en.properties
Normal file
1
nicko-core/src/main/resources/locale_en.properties
Normal file
|
@ -0,0 +1 @@
|
|||
player.offline="§c{0} §fis offline, please try again."
|
1
nicko-core/src/main/resources/locale_fr.properties
Normal file
1
nicko-core/src/main/resources/locale_fr.properties
Normal file
|
@ -0,0 +1 @@
|
|||
player.offline="§c{0} §fest hors-ligne, veuillez réessayer."
|
Loading…
Reference in a new issue