跳转到正文
iPlugin

多语言

插件消息与布局静态文字翻译,支持配置重载

希望在画布中编辑译文时,直接阅读布局多语言教程;本页说明语言文件格式与运行规则。

Xerr 使用 TabooLib 选择玩家语言。插件提示与布局文字分开管理,避免服务器管理消息和内容包混在一起。

两类语言文件

内容文件位置(相对于 Xerr 插件目录)
命令、重载、打包等插件提示lang/zh_CN.yml、lang/en_US.yml,也可添加其他语言文件
布局的静态文字core/lang/layout/<语言代码>.yml

文件名使用客户端语言代码,例如 en_US.yml、zh_TW.yml、ja_JP.yml。玩家语言、地区映射和语言选择事件由 TabooLib 处理;控制台使用框架的系统语言选择。

翻译单行文字

例如布局中的两个 ID 分别为 hud_info、health_label:

布局片段
hud_info:
  health_label:
    value: "&f生命"

英文翻译:

core/lang/layout/en_US.yml
layout:
  hud_info:
    health_label:
      value: "&fHealth"

对应节点为:

layout.<原布局 ID>.<元素 ID>.value

本例就是 layout.hud_info.health_label.value。布局 ID 是 YAML 顶层节点,不是文件名;元素 ID 是布局内部的节点。翻译只替换文字,不改变字体、图片或位置。

HUD、信息栏、弹窗、罗盘和 Screen 引用同一布局时,始终使用原布局 ID,无需为不同显示位置重复编写翻译。

翻译静态多行文字

布局中的固定 list 可以翻译为完整列表:

布局片段
hud_info:
  tips:
    list:
      - "&f欢迎回来"
      - "&7按提示继续探索"
    offset:
      y: -12

在同一个英文文件中,为该元素增加 list:

翻译片段
layout:
  hud_info:
    tips:
      list:
        - "&fWelcome back"
        - "&7Continue exploring"

对应节点为 layout.hud_info.tips.list。翻译列表可以有不同的行数;Xerr 会在准备布局时登记各语言需要的行位置。实际行距仍由原布局的 offset 决定。

回退规则

  • 插件消息:缺少目标语言或对应节点时,使用默认语言消息。
  • 布局文字:缺少目标语言或对应节点时,使用布局原文。
  • 布局中没有 value 或 list 的元素,不会因为存在翻译节点就自动增加文字。

已有 value、list 中的脚本或占位符仍按原有流程处理。Xerr 不翻译 lines 脚本返回值、variables 及其他开发者生成的动态内容,也不会根据最终文字自动猜测翻译。

重载与分发

修改语言文件后执行 /xerr reload,新增、修改和删除的翻译都会重新读取,无需完整重启。语法、类型或重复节点校验失败时,不会用无效词典替换上一份可用数据。

如果改变了多行数量、字体或排版位置,执行 /xerr pack 重新生成资源包,并让客户端加载;仅修改已有位置上的文字可以直接重载。

布局翻译可以随内容包一起分发。目录允许按内容包建立子目录,但同一种语言的同一节点只能定义一次,重复定义会拒绝重载,避免不可预期的覆盖。