diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java index 2989e2c..55d524c 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java @@ -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()); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/config/NickoConfiguration.java b/nicko-core/src/main/java/net/artelnatif/nicko/config/NickoConfiguration.java index 8e852ed..2219161 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/config/NickoConfiguration.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/config/NickoConfiguration.java @@ -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"); } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java index c1e75d5..9c4b521 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java @@ -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); + } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/utils/FileUtils.java b/nicko-core/src/main/java/net/artelnatif/nicko/utils/FileUtils.java new file mode 100644 index 0000000..de8b2de --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/utils/FileUtils.java @@ -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; + } +} diff --git a/nicko-core/src/main/resources/locale_en.properties b/nicko-core/src/main/resources/locale_en.properties new file mode 100644 index 0000000..2efe6d1 --- /dev/null +++ b/nicko-core/src/main/resources/locale_en.properties @@ -0,0 +1 @@ +player.offline="§c{0} §fis offline, please try again." \ No newline at end of file diff --git a/nicko-core/src/main/resources/locale_fr.properties b/nicko-core/src/main/resources/locale_fr.properties new file mode 100644 index 0000000..ef29bc5 --- /dev/null +++ b/nicko-core/src/main/resources/locale_fr.properties @@ -0,0 +1 @@ +player.offline="§c{0} §fest hors-ligne, veuillez réessayer." \ No newline at end of file