往往写发送消息都得 sendMessage("写死**");而且还不能转换成其他语言。
1. 创建语言文件
在` src/main/resources ` 下创建 lang_zh_CN.properties
PS: lang_是根据baseName来定的,如果想改成其他的,比如 zzz_zh_CN,则ResourceBundle.getBundle("zzz",new Locale("zh","CN"));
2. 创建I18n类
3. 初始化&调用
在JavaPlugin里的onLoad方法初始化.
如果想使用命令来更换语言的话(/xxx lang en)
直接 I18n.init(LANGUAGE.xxx); 就好了
调用
1. 创建语言文件
在` src/main/resources ` 下创建 lang_zh_CN.properties
代码:
- test=qwwwwwq
- test.t1=www {0}
- test.help=www {0} {1}
- test.help.add=添加
- #test.help.add=\u6dfb\u52a0
- #如果中文出现乱码或者无法加载,请使用Unicode编码
PS: lang_是根据baseName来定的,如果想改成其他的,比如 zzz_zh_CN,则ResourceBundle.getBundle("zzz",new Locale("zh","CN"));
2. 创建I18n类
代码:
- import java.util.Locale;
- import java.util.ResourceBundle;
- public class I18n {
- private static ResourceBundle bundle;
- public enum LANGUAGE {
- SIMPLIFIED_CHINESE(new Locale("zh", "CN")), ENGLISH(new Locale("en", "US"));
- Locale locale;
- LANGUAGE(Locale locale) {
- this.locale = locale;
- }
- public Locale getLocale() {
- return locale;
- }
- }
- /**
- * 初始化
- *
- * @param lang
- */
- public static void init(LANGUAGE lang) {
- bundle = ResourceBundle.getBundle("lang", lang.getLocale());
- }
- /**
- *
- * @param msgid
- * @return
- */
- public static String __(String msgid) {
- return bundle.getString(msgid);
- }
- public static void main(String[] args) {
- I18n.init(LANGUAGE.SIMPLIFIED_CHINESE);
- System.out.println(I18n.__("test.help.add"));
- }
- }
3. 初始化&调用
在JavaPlugin里的onLoad方法初始化.
代码:
- @Override
- public void onLoad() {
- I18n.init(LANGUAGE.SIMPLIFIED_CHINESE);
- }
直接 I18n.init(LANGUAGE.xxx); 就好了
调用
代码:
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- sender.sendMessage(I18n.__("test")); // 发送 qwwwwwq
- sender.sendMessage(MessageFormat.format(I18n.__("test.t1"), "qaq")); // 发送 www qaq
- sender.sendMessage(MessageFormat.format(I18n.__("test.help"), "qaq", "awaa")); // 发送 www qaq awaa
- sender.sendMessage(I18n.__("test.help.add")); // 发送 添加
- return super.onCommand(sender, command, label, args);
- }