Skip to content

I18n 多语言

UltiTools 提供了一个易用的多语言 API,让你可以轻松的为你的插件添加多语言支持。

创建语言文件

resources 文件夹中创建一个 lang 文件夹。按照你的需求放入你的插件语言文件。

json
{
  "test": "测试",
  "test2": "测试2"
}

将文件名命名为 zh.json,其中 zh 为语言代码。

语言代码可参照此表

注册语言代码

实际使用的语言由 UltiTools 主插件配置决定

实际使用的语言取自 UltiTools 主插件配置中的 language 键,由 getLanguageCode() 读取,而 @I18n 与重写的 supported() 是声明性元数据,运行时没有读取方。 把每个语言文件命名为 lang/<语言码>.json,确保其中一个与该键的值一致:没有匹配的文件时,模块会退回空字典,i18n("some.key") 静默返回你传入的键名。 给 supported() 补上运行时作用或将其移除的决定跟踪于 issue #315

UltiTools 需要知道你的插件支持哪些语言,因此你需要在你的插件继承了 UltiToolsPlugin 的类进行注册

一种很简便的方法就是在继承了 UltiToolsPlugin 的类添加 @I18n 并添加语言代码:

java
@I18n({"zh", "en"})

当然你也可以重写 supported() 方法,返回一个含有语言代码的 List<String> 即可:

java
@Override
public List<String> supported() {
    return Arrays.asList("zh", "en");
}

使用多语言

在你的插件继承了 UltiToolsPlugin 的类中,有一个 i18n 方法,用于获取多语言字符串。

java
String test = i18n("test");

// 输出:测试

如果语言文件中不存在该字符串,将会返回该字符串本身。

java
String test3 = i18n("test3");

// 输出:test3

TIP

在仅有两种语言的情况下,你可以仅创建一个语言文件,其中的键值对的键为原文,值为译文。

贡献者

基于 MIT 许可发布