# 本地化文本(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();