🛫 國際化 API
隨著我們的社區越來越大,語言成為了各個國家的用戶和玩家之間交流的障礙。為了解決這個問題,我們提供了I18nAPI並鼓勵插件創作者使用國際化接口。
加載翻譯數據
i18n.load(path, defaultLocaleName, defaultLangData)
- 參數:
- 拋出:
- 參數無效
JSON
{
"localeName": {
"src": "translation"
},
"zh_CN": {
"a.b.c.d.114514": "1919810",
"src": "源"
}
}Text Only
┌ LOCALE_name.json
[Dir] ┼ en.json
└ zh_CN.json其中的每個文件內容都應類似:
JSON
{
"a.c.b.d": "translation",
"use": {
"nested": {
"src": "translation"
},
"114514": {
"1919810": "heng heng aaaaaaaaaaaaaaaaaaaaaaaaa",
"a": "此处的ID为use.nested.114514.a",
"b": "The ID of this will be use.nested.114514.b"
}
}
}獲取文本的指定語言翻譯
i18n.get(key[,localeName])
- 參數:
- key:
String
文本或ID - localeName:
String(可選)
目標語言,默認為i18n.load時傳入的defaultLocaleName
- key:
- 返回值:
String翻譯內容(若經過多次回落仍未找到翻譯,則返回key) - 拋出:
- 參數無效
使用指定語言翻譯文本並格式化
i18n.trl(localeName, key, ...)
- 參數:
- localeName:
String
目標語言 - key:
String
文本或ID - ...:
任意类型
格式化參數
- localeName:
- 返回值:
String翻譯並格式化後的文本 - 注意: 格式化應遵循語法
- 拋出:
- 參數無效
使用默認語言翻譯文本並格式化
i18n.tr(key, ...)
- 參數:
- key:
String
文本或ID - ...:
任意类型
格式化參數
- key:
- 返回值:
String翻譯並格式化後的文本 - 注意: 格式化應遵循語法
- 拋出:
- 參數無效
完整樣例
JavaScript
i18n.load("plugins/feature-llse-i18n-test/language.json", "" /* "zh_CN" */, {
"zh_CN": {
"{1}, {0}, named_arg(float.2): {named_arg:.2f}": "测试: {1}, {0}, named_arg(float.2): {named_arg:.2f}",
"{} {} {a} {b}": "测试2: {} {} {a} {b}",
"welcome": "Hi, {}! 欢迎来到服务器!"
},
"en": {
"welcome": "Hi, {}! Welcome to the SERVER!"
}
});
LLSE_Player.prototype._sendText = LLSE_Player.prototype.sendText;
LLSE_Player.prototype.sendText = function () {
let args = Array.from(arguments);
let text = args.shift();
this._sendText(i18n.trl(this.langCode, text, ...args));
}
logger.info(tr("{1}, {0}, named_arg(float.2): {named_arg:.2f}", "string0", 1, {
named_arg: 114.51419 // Named arguments should be object
}));
// Out: 测试: 1, string0, named_arg(float.2): 114.51
logger.info(tr("{} {} {a} {b}", "arg0", "arg1", {
a: "114514",
b: "1919810"
}));
mc.listen("onJoin", (pl) => {
pl.sendText("welcome", pl.realName);
});