翻译模组文本
More languages
More actions
使用模组文件夹中的同一组语言文件,翻译 Modloader 界面文本和 Lua 文本。通过 PR #42 添加的 shroudforge.locale() 读取 Modloader 语言。
语言文件
为每种语言在 locales/<code>.json 下添加一个文件。Modloader 语言选择器当前支持的代码为 de、de-AT、de-CH、en-GB、en-US、es、fr、hi、it、ja、nl、pl、sv 和 zh。文件名必须与代码完全一致。这些文件与 mod.json 和 extended.mod.json 放在一起。
架构已发布为 mod-locale.schema.json。语言目录可以翻译 mod.name 和 mod.description、设置和选项标签、分组、操作、更新日志条目以及 Lua strings。目录可以只包含部分翻译。没有译文的条目会保留源文本。
{
"$schema": "https://bonsaibauer.github.io/shroudforge/schemas/mod-locale.schema.json",
"settings": {
"severity": {
"label": "Log level",
"options": { "info": "Information", "warn": "Warning" }
}
},
"groups": [
{ "label": "Logging", "actions": { "write": { "label": "Write message" } } }
],
"strings": { "overlay.ready": "Ready" }
}
设置和选项的键与 extended.mod.json 中的键保持一致。分组翻译遵循该文件中的分组顺序。操作翻译使用现有的操作 ID。已保存的值不会改变。
在 Lua 中使用相同文本
local locale = shroudforge.locale()
local ready = shroudforge.i18n.get("overlay.ready", locale, "Ready")
shroudforge.i18n.get(key, locale, fallback) 使用 Modloader 已加载的同一目录。它会先检查 de-AT 这样的区域代码,然后检查语言代码 de。如果缺少字符串,则返回备用文本;如果未提供备用文本,则返回键本身。查询时不会重新读取文件。PR #42 提供语言 API,此功能会将它连接到每个模组的目录。
如果无法读取配置而使 shroudforge.locale() 返回 en,目录查询会先检查 en-GB.json,然后检查 en.json。en-GB 是 Modloader 的默认英语。en-US 仍可作为显式选择的变体使用。
语言文件不需要 runtime 能力。ShroudForge 界面文本仍位于 Modloader 共享翻译中。