# 本地化文本(LocalString)
MT 管理器自带了多种语言包,可在不同语言环境下显示不同的语言。为了同样在插件中支持多国语言,插件 API 提供了 LocalString 来快速实现。
# 语言包命名格式
语言包需要放在插件安装包的 assets 文件夹中,命名格式为:
语言包名称-区域代码.mtl
默认语言包不需要填写区域代码:
语言包名称.mtl
例如取语言包名称为 String
则对应的语言包文件名为:
String.mtl
默认语言包String-ru.mtl
俄罗斯语言包String-zh-CN.mtl
简体中文语言包String-zh-TW.mtl
繁体中文语言包
# 语言包内容格式
语言包内容格式为(冒号后面需要加一个空格):
key: 内容
你也可以添加行注释,只需要在该行的开头加上 #
# 注释
# 获取本地语言
例如 String.mtl 的内容:
apple: Apple
orange: Orange
String-zh-CN.mtl 的内容:
# 这是一行注释
apple: 苹果
orange: 橘子
添加以上文件到插件安装包的 assets 文件夹后,就可以在代码中快速获取适合当前语言环境的文本:
// 下面的代码可简写为:context.getLocalString();
// 只有语言包放在插件安装包assets文件夹中,
// 且语言包名称为String时可以简写。
LocalString local = context.getAssetLocalString("String");
// 获取语言包名称
local.getName(); // 返回 String
// 根据语言环境自动选择语言包
local.get("apple"); // 返回 Apple 或者 苹果
// 指定语言包为简体中文
local.get("orange", "zh-CN"); // 返回 橘子
// 找不到俄罗斯语言包,则使用默认语言包
local.get("orange", "ru"); // 返回 Orange
# 在清单文件中使用
你可以在 manifest.json 文件中使用本地化文本来设置插件名称(name)和插件描述(description)。
语言包名称必须为String
且放在插件安装包的 assets 文件夹内,内容填写格式为{key}
例如:
...
// 插件名称
name: "{apple}",
// 插件描述
description: "{orange}",
...
# 在设置界面中使用
设置界面(PluginPreference)的接口在调用 builder 的 setLocalString() 方法后,所有方法的 title、name、summary 参数均可以使用 {key}
格式来自动进行本地化文本转化。
具体请阅读设置界面中的相关说明。
# 使用外置文件语言包
一般语言包都是放在插件安装包的 assets 文件夹中,如果你有特殊需求,需要把语言包放在本地文件系统中,则可以调用 MTPluginContext 的getFileLocalString(dir, name)
方法获取
LocalString 实例。
# 全球语言名称
在实现翻译接口时,会频繁地使用到各种语言名称,例如英语、简体中文、俄语、西班牙语等,为了方便大家,MT 自带了全球常见语言的名称语言包,可以直接拿来使用。
LocalString languageLocal = context.getLanguageNameLocalString();
languageLocal.get("auto"); // 自动检测
languageLocal.get("en"); // 英语
languageLocal.get("zh"); // 中文
languageLocal.get("zh-CN"); // 简体中文
languageLocal.get("zh-TW"); // 繁体中文
完整代码表如下:
auto: 自动检测
af: 南非荷兰语
am: 阿姆哈拉语
ar: 阿拉伯语
az: 阿塞拜疆语
be: 白俄罗斯语
bg: 保加利亚语
bn: 孟加拉语
bs: 波斯尼亚语
ca: 加泰罗尼亚语
ceb: 宿务语
co: 科西嘉语
cs: 捷克语
cy: 威尔士语
da: 丹麦语
de: 德语
el: 希腊语
en: 英语
eo: 世界语
es: 西班牙语
et: 爱沙尼亚语
eu: 巴斯克语
fa: 波斯语
fi: 芬兰语
fr: 法语
fy: 弗里西语
ga: 爱尔兰语
gd: 苏格兰盖尔语
gl: 加利西亚语
gu: 古吉拉特语
ha: 豪萨语
haw: 夏威夷语
hi: 印地语
hmn: 苗语
hr: 克罗地亚语
ht: 海地克里奥尔语
hu: 匈牙利语
hy: 亚美尼亚语
id: 印尼语
ig: 伊博语
is: 冰岛语
it: 意大利语
iw: 希伯来语
ja: 日语
jw: 印尼爪哇语
ka: 格鲁吉亚语
kk: 哈萨克语
km: 高棉语
kn: 卡纳达语
ko: 韩语
ku: 库尔德语
ky: 吉尔吉斯语
la: 拉丁语
lb: 卢森堡语
lo: 老挝语
lt: 立陶宛语
lv: 拉脱维亚语
mg: 马尔加什语
mi: 毛利语
mk: 马其顿语
ml: 马拉雅拉姆语
mn: 蒙古语
mr: 马拉地语
ms: 马来语
mt: 马耳他语
my: 缅甸语
ne: 尼泊尔语
nl: 荷兰语
no: 挪威语
ny: 齐切瓦语
pa: 旁遮普语
pl: 波兰语
ps: 普什图语
pt: 葡萄牙语
ro: 罗马尼亚语
ru: 俄语
sd: 信德语
si: 僧伽罗语
sk: 斯洛伐克语
sl: 斯洛文尼亚语
sm: 萨摩亚语
sn: 修纳语
so: 索马里语
sq: 阿尔巴尼亚语
sr: 塞尔维亚语
st: 塞索托语
su: 印尼巽他语
sv: 瑞典语
sw: 斯瓦希里语
ta: 泰米尔语
te: 泰卢固语
tg: 塔吉克语
th: 泰语
tl: 菲律宾语
tr: 土耳其语
tt: 塔塔尔语
ug: 维吾尔语
uk: 乌克兰语
ur: 乌尔都语
uz: 乌兹别克语
vi: 越南语
xh: 南非科萨语
yi: 意第绪语
yo: 约鲁巴语
zh: 中文
zh-CN: 简体中文
zh-TW: 繁体中文
zu: 南非祖鲁语
# LocalString 完整方法列表
/**
* 获取语言包名称
*/
String getName();
/**
* 获取key对应的本地语言文本
*/
String get(String key);
/**
* 获取key对应的语言文本(languageCode指定的语言)
*/
String get(String key, String languageCode);
/**
* 获取key对应的本地语言文本,当key不存在时返回def
* 一般不建议使用
*/
String getOrDefault(String key, String def);
/**
* 获取key对应的语言文本(languageCode指定的语言),当key不存在时返回def
* 一般不建议使用
*/
String getOrDefault(String key, String def, String languageCode);
/**
* 返回默认语言包内的所有key
*/
Set<String> keySet();