mirror of
https://e.coding.net/circlecloud/YumCore.git
synced 2024-11-24 02:08:48 +00:00
feat: 添加国际化工具
Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
parent
3ca6d79f6d
commit
399a0b4668
@ -1,19 +1,19 @@
|
|||||||
package pw.yumc.YumCore.bukkit;
|
package pw.yumc.YumCore.bukkit;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.logging.Handler;
|
import java.util.logging.Handler;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插件日志输出类
|
* 插件日志输出类
|
||||||
*
|
*
|
||||||
* @since 2016年7月23日 上午9:11:01
|
|
||||||
* @author 喵♂呜
|
* @author 喵♂呜
|
||||||
|
* @since 2016年7月23日 上午9:11:01
|
||||||
*/
|
*/
|
||||||
public class Log {
|
public class Log {
|
||||||
private static boolean debug = new File(String.format("plugins%1$sYumCore%1$sdebug", File.separatorChar)).exists();
|
private static boolean debug = new File(String.format("plugins%1$sYumCore%1$sdebug", File.separatorChar)).exists();
|
||||||
@ -31,11 +31,9 @@ public class Log {
|
|||||||
* Typically the root Logger is configured with a set of Handlers
|
* Typically the root Logger is configured with a set of Handlers
|
||||||
* that essentially act as default handlers for all loggers.
|
* that essentially act as default handlers for all loggers.
|
||||||
*
|
*
|
||||||
* @param handler
|
* @param handler a logging Handler
|
||||||
* a logging Handler
|
* @throws SecurityException if a security manager exists and if
|
||||||
* @exception SecurityException
|
* the caller does not have LoggingPermission("control").
|
||||||
* if a security manager exists and if
|
|
||||||
* the caller does not have LoggingPermission("control").
|
|
||||||
*/
|
*/
|
||||||
public static void addHandler(Handler handler) throws SecurityException {
|
public static void addHandler(Handler handler) throws SecurityException {
|
||||||
logger.addHandler(handler);
|
logger.addHandler(handler);
|
||||||
@ -44,8 +42,7 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends console a message
|
* Sends console a message
|
||||||
*
|
*
|
||||||
* @param message
|
* @param message Message to be displayed
|
||||||
* Message to be displayed
|
|
||||||
*/
|
*/
|
||||||
public static void console(String message) {
|
public static void console(String message) {
|
||||||
console.sendMessage(prefix + message);
|
console.sendMessage(prefix + message);
|
||||||
@ -54,10 +51,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends console a message
|
* Sends console a message
|
||||||
*
|
*
|
||||||
* @param message
|
* @param message 消息
|
||||||
* 消息
|
* @param object 格式化参数
|
||||||
* @param object
|
|
||||||
* 格式化参数
|
|
||||||
*/
|
*/
|
||||||
public static void console(String message, Object... object) {
|
public static void console(String message, Object... object) {
|
||||||
console.sendMessage(prefix + String.format(message, object));
|
console.sendMessage(prefix + String.format(message, object));
|
||||||
@ -66,8 +61,7 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends console a message
|
* Sends console a message
|
||||||
*
|
*
|
||||||
* @param message
|
* @param msg Message to be displayed
|
||||||
* Message to be displayed
|
|
||||||
*/
|
*/
|
||||||
public static void console(String[] msg) {
|
public static void console(String[] msg) {
|
||||||
for (String str : msg) {
|
for (String str : msg) {
|
||||||
@ -78,10 +72,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 调试消息
|
* 调试消息
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg 消息
|
||||||
* 消息
|
* @param object 参数
|
||||||
* @param object
|
|
||||||
* 参数
|
|
||||||
*/
|
*/
|
||||||
public static void d(String msg, Object... object) {
|
public static void d(String msg, Object... object) {
|
||||||
debug(String.format(msg, object));
|
debug(String.format(msg, object));
|
||||||
@ -90,8 +82,7 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 格式化调试消息
|
* 格式化调试消息
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg 消息
|
||||||
* 消息
|
|
||||||
*/
|
*/
|
||||||
public static void debug(String msg) {
|
public static void debug(String msg) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
@ -102,10 +93,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 调试消息
|
* 调试消息
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg 消息
|
||||||
* 消息
|
* @param object 参数
|
||||||
* @param object
|
|
||||||
* 参数
|
|
||||||
*/
|
*/
|
||||||
public static void debug(String msg, Object... object) {
|
public static void debug(String msg, Object... object) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
@ -116,10 +105,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 调试消息
|
* 调试消息
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg 消息
|
||||||
* 消息
|
* @param e 异常
|
||||||
* @param e
|
|
||||||
* 异常
|
|
||||||
*/
|
*/
|
||||||
public static void debug(String msg, Throwable e) {
|
public static void debug(String msg, Throwable e) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
@ -131,8 +118,7 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 调试消息
|
* 调试消息
|
||||||
*
|
*
|
||||||
* @param e
|
* @param e 异常
|
||||||
* 异常
|
|
||||||
*/
|
*/
|
||||||
public static void debug(Throwable e) {
|
public static void debug(Throwable e) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
@ -147,6 +133,10 @@ public class Log {
|
|||||||
return prefix;
|
return prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void i(String msg, Object... objs) {
|
||||||
|
logger.info(String.format(msg, objs));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log an INFO message.
|
* Log an INFO message.
|
||||||
* <p>
|
* <p>
|
||||||
@ -155,8 +145,7 @@ public class Log {
|
|||||||
* registered output Handler objects.
|
* registered output Handler objects.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
*/
|
*/
|
||||||
public static void info(String msg) {
|
public static void info(String msg) {
|
||||||
logger.info(msg);
|
logger.info(msg);
|
||||||
@ -170,10 +159,8 @@ public class Log {
|
|||||||
* registered output Handler objects.
|
* registered output Handler objects.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param level
|
* @param level One of the message level identifiers, e.g., SEVERE
|
||||||
* One of the message level identifiers, e.g., SEVERE
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* @param msg
|
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
*/
|
*/
|
||||||
public static void log(Level level, String msg) {
|
public static void log(Level level, String msg) {
|
||||||
logger.log(level, msg);
|
logger.log(level, msg);
|
||||||
@ -187,12 +174,9 @@ public class Log {
|
|||||||
* to all the registered output Handler objects.
|
* to all the registered output Handler objects.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param level
|
* @param level One of the message level identifiers, e.g., SEVERE
|
||||||
* One of the message level identifiers, e.g., SEVERE
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* @param msg
|
* @param param1 parameter to the message
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
* @param param1
|
|
||||||
* parameter to the message
|
|
||||||
*/
|
*/
|
||||||
public static void log(Level level, String msg, Object param1) {
|
public static void log(Level level, String msg, Object param1) {
|
||||||
logger.log(level, msg, param1);
|
logger.log(level, msg, param1);
|
||||||
@ -206,12 +190,9 @@ public class Log {
|
|||||||
* to all the registered output Handler objects.
|
* to all the registered output Handler objects.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param level
|
* @param level One of the message level identifiers, e.g., SEVERE
|
||||||
* One of the message level identifiers, e.g., SEVERE
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* @param msg
|
* @param params array of parameters to the message
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
* @param params
|
|
||||||
* array of parameters to the message
|
|
||||||
*/
|
*/
|
||||||
public static void log(Level level, String msg, Object[] params) {
|
public static void log(Level level, String msg, Object[] params) {
|
||||||
logger.log(level, msg, params);
|
logger.log(level, msg, params);
|
||||||
@ -230,20 +211,16 @@ public class Log {
|
|||||||
* as a formatting parameter to the LogRecord message property.
|
* as a formatting parameter to the LogRecord message property.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param level
|
* @param level One of the message level identifiers, e.g., SEVERE
|
||||||
* One of the message level identifiers, e.g., SEVERE
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* @param msg
|
* @param thrown Throwable associated with log message.
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
* @param thrown
|
|
||||||
* Throwable associated with log message.
|
|
||||||
*/
|
*/
|
||||||
public static void log(Level level, String msg, Throwable thrown) {
|
public static void log(Level level, String msg, Throwable thrown) {
|
||||||
logger.log(level, msg, thrown);
|
logger.log(level, msg, thrown);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param prefix
|
* @param prefix 插件前缀
|
||||||
* 插件前缀
|
|
||||||
*/
|
*/
|
||||||
public static void setPrefix(String prefix) {
|
public static void setPrefix(String prefix) {
|
||||||
Log.prefix = ChatColor.translateAlternateColorCodes('&', prefix);
|
Log.prefix = ChatColor.translateAlternateColorCodes('&', prefix);
|
||||||
@ -254,8 +231,7 @@ public class Log {
|
|||||||
* <p>
|
* <p>
|
||||||
* If the logger is currently enabled for the SEVERE message level then the given message is forwarded to all the registered output Handler objects.
|
* If the logger is currently enabled for the SEVERE message level then the given message is forwarded to all the registered output Handler objects.
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
*/
|
*/
|
||||||
public static void severe(String msg) {
|
public static void severe(String msg) {
|
||||||
logger.severe(msg);
|
logger.severe(msg);
|
||||||
@ -264,10 +240,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends this sender a message
|
* Sends this sender a message
|
||||||
*
|
*
|
||||||
* @param sender
|
* @param sender 命令发送者
|
||||||
* 命令发送者
|
* @param msg 消息
|
||||||
* @param msg
|
|
||||||
* 消息
|
|
||||||
*/
|
*/
|
||||||
public static void toSender(CommandSender sender, String msg) {
|
public static void toSender(CommandSender sender, String msg) {
|
||||||
sender.sendMessage(prefix + msg);
|
sender.sendMessage(prefix + msg);
|
||||||
@ -276,12 +250,9 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends this sender a message
|
* Sends this sender a message
|
||||||
*
|
*
|
||||||
* @param sender
|
* @param sender 命令发送者
|
||||||
* 命令发送者
|
* @param msg 消息
|
||||||
* @param msg
|
* @param objs 参数
|
||||||
* 消息
|
|
||||||
* @param objs
|
|
||||||
* 参数
|
|
||||||
*/
|
*/
|
||||||
public static void toSender(CommandSender sender, String msg, Object... objs) {
|
public static void toSender(CommandSender sender, String msg, Object... objs) {
|
||||||
sender.sendMessage(prefix + String.format(msg, objs));
|
sender.sendMessage(prefix + String.format(msg, objs));
|
||||||
@ -290,10 +261,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* Sends this sender a message
|
* Sends this sender a message
|
||||||
*
|
*
|
||||||
* @param sender
|
* @param sender 命令发送者
|
||||||
* 命令发送者
|
* @param msg 消息
|
||||||
* @param msg
|
|
||||||
* 消息
|
|
||||||
*/
|
*/
|
||||||
public static void toSender(CommandSender sender, String[] msg) {
|
public static void toSender(CommandSender sender, String[] msg) {
|
||||||
for (String str : msg) {
|
for (String str : msg) {
|
||||||
@ -304,10 +273,8 @@ public class Log {
|
|||||||
/**
|
/**
|
||||||
* 格式化警告消息
|
* 格式化警告消息
|
||||||
*
|
*
|
||||||
* @param string
|
* @param string 消息
|
||||||
* 消息
|
* @param objects 参数
|
||||||
* @param objects
|
|
||||||
* 参数
|
|
||||||
*/
|
*/
|
||||||
public static void w(String string, Object... objects) {
|
public static void w(String string, Object... objects) {
|
||||||
logger.warning(String.format(string, objects));
|
logger.warning(String.format(string, objects));
|
||||||
@ -321,8 +288,7 @@ public class Log {
|
|||||||
* registered output Handler objects.
|
* registered output Handler objects.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg The string message (or a key in the message catalog)
|
||||||
* The string message (or a key in the message catalog)
|
|
||||||
*/
|
*/
|
||||||
public static void warning(String msg) {
|
public static void warning(String msg) {
|
||||||
logger.warning(msg);
|
logger.warning(msg);
|
||||||
|
@ -1,22 +1,14 @@
|
|||||||
package pw.yumc.YumCore.commands;
|
package pw.yumc.YumCore.commands;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import pw.yumc.YumCore.bukkit.P;
|
import pw.yumc.YumCore.bukkit.P;
|
||||||
import pw.yumc.YumCore.commands.annotation.Help;
|
import pw.yumc.YumCore.commands.annotation.Help;
|
||||||
import pw.yumc.YumCore.commands.info.CommandInfo;
|
import pw.yumc.YumCore.commands.info.CommandInfo;
|
||||||
import pw.yumc.YumCore.commands.interfaces.CommandHelpParse;
|
import pw.yumc.YumCore.commands.interfaces.CommandHelpParse;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 命令帮助生成类
|
* 命令帮助生成类
|
||||||
*
|
*
|
||||||
@ -28,9 +20,9 @@ public class CommandHelp {
|
|||||||
* 消息配置
|
* 消息配置
|
||||||
*/
|
*/
|
||||||
private static String prefix = String.format("§6[§b%s§6] ", P.instance.getName());
|
private static String prefix = String.format("§6[§b%s§6] ", P.instance.getName());
|
||||||
private static String commandNotFound = prefix + "§c当前插件未注册任何子命令!";
|
private static String commandNotFound = prefix + "§c当前插件未注册默认命令以及子命令!";
|
||||||
private static String pageNotFound = prefix + "§c不存在的帮助页面 §b请输入 /%s help §e1-%s";
|
private static String pageNotFound = prefix + "§c不存在的帮助页面 §b请输入 /%s help §e1-%s";
|
||||||
private static String helpTitle = String.format("§6========= %s §6插件帮助列表=========", prefix);
|
private static String helpTitle = String.format("§6========= %s §6插件帮助列表 §aBy §b喵♂呜 §6=========", prefix);
|
||||||
private static String helpBody = "§6/%1$s §a%2$s §e%3$s §6- §b%4$s";
|
private static String helpBody = "§6/%1$s §a%2$s §e%3$s §6- §b%4$s";
|
||||||
private static String helpFooter = "§6查看更多的帮助页面 §b请输入 /%s help §e1-%s";
|
private static String helpFooter = "§6查看更多的帮助页面 §b请输入 /%s help §e1-%s";
|
||||||
/**
|
/**
|
||||||
|
75
src/main/java/pw/yumc/YumCore/global/I18N.java
Normal file
75
src/main/java/pw/yumc/YumCore/global/I18N.java
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
package pw.yumc.YumCore.global;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import pw.yumc.YumCore.bukkit.Log;
|
||||||
|
import pw.yumc.YumCore.config.ext.YumConfig;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化工具类
|
||||||
|
* Created by 喵♂呜 on 2016/10/14 0014.
|
||||||
|
*/
|
||||||
|
public class I18N {
|
||||||
|
private static String LANG = "zh_CN";
|
||||||
|
private static Map<String, String> content;
|
||||||
|
|
||||||
|
static {
|
||||||
|
content = new HashMap<>();
|
||||||
|
Log.info("Async init I18N tool ...");
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
private I18N() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String $(String key) {
|
||||||
|
return $(key, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String $(String key, String def) {
|
||||||
|
return content.containsKey(key) ? content.get(key) : def;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(String str, Object... objs) {
|
||||||
|
Log.i($(str), objs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(String str, String def, Object... objs) {
|
||||||
|
Log.i($(str, def), objs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void send(CommandSender sender, String message, Object... objs) {
|
||||||
|
send(sender, message, "", objs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void send(CommandSender sender, String message, String def, Object... objs) {
|
||||||
|
Log.toSender(sender, $(message, def), objs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 载入数据
|
||||||
|
*/
|
||||||
|
private static void load() {
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Map<String, String> local = YumConfig.getLocal(LANG).getContentMap();
|
||||||
|
Map<String, String> remote = YumConfig.getRemote(LANG).getContentMap();
|
||||||
|
if (local != null) {
|
||||||
|
content.putAll(local);
|
||||||
|
}
|
||||||
|
if (remote != null) {
|
||||||
|
content.putAll(remote);
|
||||||
|
}
|
||||||
|
Log.info("本地化工具初始化完毕...");
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.warning(String.format("本地化工具初始化失败: %s %s", e.getClass().getName(), e.getMessage()));
|
||||||
|
Log.debug(LANG, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user