Jump to content
Toggle menu
  • 3 articles
  • 22 files
  • 3 users
  • 2.5K edits
Shroudforge
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
This page is a translated version of the page Translate mod text and the translation is 100% complete.


Translate mod text



使用模组文件夹中的同一组语言文件,翻译 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 共享翻译中。