Skip to content

Compatibility zh CN

kltyton edited this page Oct 20, 2026 · 2 revisions

兼容指南

这是保留的手动接入档案。一般接入请先看导出后翻译。

首页 · English · 语言键参考

先复用已有翻译

物品、方块、生物、属性、药水、状态效果和附魔优先读取注册对象已有的名称或描述组件。机械动力已经为大齿轮提供中文名称时,无需再添加一份物品词典。

通常只需补充一个命名空间名称:

{
  "command_translation.namespace.create": "机械动力"
}

命名空间按以下顺序取名:command_translation.namespace.<modid>、modmenu.nameTranslation.<modid>、<modid>.ponder.mod_name,都不存在时使用原始 modid。补全、输入和提示共用这个名称,例如 机械动力:大齿轮。同一语义域内重名会附原始 ID,如 机械动力:大齿轮(create:large_cogwheel)。

放置语言文件

资源包把扩展词条放入 assets/command_translation/lang/<语言代码>.json。模组可以把相同的键放进自己的 assets/<modid>/lang/<语言代码>.json;Minecraft 会合并已加载的语言表。

command-translation-compat/
  pack.mcmeta
  assets/
    command_translation/
      lang/
        en_us.json
        zh_cn.json

这是 26.2 的 pack.mcmeta 示例:

{
  "pack": {
    "description": "Command Translation compatibility",
    "min_format": [88, 0],
    "max_format": [88, 0]
  }
}

其他目标使用对应资源包格式。格式号取自各版本原版 version.json,不是数据包格式号:

Minecraft 资源包格式声明
1.20.1 "pack_format": 15
1.21.1 "pack_format": 34
26.1.2 "min_format": [84, 0], "max_format": [84, 0]
26.2 "min_format": [88, 0], "max_format": [88, 0]

旧版把表中的 pack_format 和 description 放在 pack 对象中,替换示例的 min_format、max_format。压缩资源包时,pack.mcmeta 应直接位于 ZIP 根目录。启用后重新加载客户端资源即可更新语言词条。

en_us.json 放英文及注册表绑定,其他语言文件放对应译文。缺项按原版语言系统回退英文;当前语言的候选与原版英文并存,不需要另做英文开关。

命令、子命令和固定值

别名使用原始命令路径,多个写法以 | 分隔。别名本身不含空格,命名空间前缀由本项目添加。

{
  "command_translation.command.give.alias": "给予|给",
  "command_translation.literal.execute.if.alias": "如果",
  "command_translation.value.creative.alias": "创造",
  "command_translation.help.command.give": "给予玩家物品。",
  "command_translation.help.argument.give.targets": "接收物品的玩家。",
  "command_translation.help.argument.give.targets.item.count": "每位目标玩家获得的物品数量。",
  "command_translation.syntax.argument.give.targets": "目标玩家",
  "command_translation.syntax.argument.give.targets.item.count": "数量"
}

命令名、固定子命令和有限枚举值支持对应的命名空间译名,例如 /我的世界:给予;原来的 /give 和已有裸译名保留。只有能确定对应原始项的完整名称或别名才还原为命令,说明片段用于搜索,不用于猜选。

自定义命令 /device status 可声明所属模组。下面的 example 是演示用 modid,替换成实际名称:

{
  "command_translation.namespace.example": "示例模组",
  "command_translation.command.device.namespace": "example",
  "command_translation.command.device.alias": "设备",
  "command_translation.literal.device.status.alias": "状态",
  "command_translation.help.command.device": "查看或设置设备状态。"
}

若原始根命令就是 example:device,则使用 command_translation.command.example:device.alias,子命令路径相应为 example:device.status,无需再声明 .namespace。只有原版的 minecraft: 根前缀会在查说明时规范为不带前缀的原版路径。

参数名来自 Brigadier 节点,不一定与界面中的占位名称相同。例如给予数量的完整路径是 give.targets.item.count。英文语法从实际命令树生成,翻译只负责上方的小字和参数解释。

标签、资源和效果

已有标签翻译可以继续使用。注册表与路径里的斜线在标签语言键中换成点:

{
  "command_translation.tag.item.example.metal_parts": "金属零件",
  "command_translation.tag.worldgen.biome.example.cold_places": "寒冷群系",
  "command_translation.registry.example:mode.example:quiet.name": "安静模式",
  "command_translation.help.registry.example:mode.example:quiet": "设备运行时不播放工作音效。"
}

上面的自定义模式只是接口示例。实际文案应说明模组真正实现的行为。同一个标签 ID 出现在物品、方块和群系注册表时,应分别提供对应注册表的词条,不能混用含义。

普通资源名称覆盖使用 command_translation.registry.<注册表 ID>.<资源 ID>.name。注册表 ID 和资源 ID 保持完整原文,包括冒号与斜线;只有标签语言键使用前述点分格式。

模组效果简介可用 command_translation.help.registry.minecraft:mob_effect.<效果 ID>,效果名称仍复用原来的翻译键。

NBT、组件和具体值

语言文件补充提示和名称,不会创建组件、命令或 NBT 补全 schema。补全候选来自原版或随包的 NBT Autocomplete;自定义结构需按补全提供者自身的接口提供结构信息。

{
  "command_translation.help.component.example:device": "设备的运行设置。",
  "command_translation.help.component.example:device.field.mode": "设备使用的运行模式。",
  "command_translation.help.component.example:device.field.mode.registry": "example:mode",
  "command_translation.help.component.example:device.field.rules.*.enabled": "是否启用这条规则。",
  "command_translation.help.component.example:device.field.rules.*.enabled.value_type": "device_enabled",
  "command_translation.help.value.type.device_enabled.true": "启用这条规则。",
  "command_translation.help.value.type.device_enabled.false": "停用这条规则。",
  "command_translation.help.component.example:device.field.mode.value.example:quiet": "本设备以安静模式运行。"
}

此例的 rules 是以规则名为键的字典;* 匹配一层成员。数组下标不会写入字段路径。查询依次尝试精确路径、单成员通配和连续尾部通配,不把 * 当作任意深度递归。

具体字段值词条优先于共用 .value_type。注册表值通过 .registry 关联;字典键本身是附魔等资源 ID 时,使用 .key_registry。这些绑定的值是原始代码 ID,不翻译。组件的直接值绑定写为 component.<ID>.registry,不加 .field。

旧版物品 NBT 使用 nbt.item 字段族,实体使用 nbt.entity,方块实体使用 nbt.block_entity。例如:

{
  "command_translation.help.nbt.item.field.Unbreakable": "是否让物品不消耗耐久。",
  "command_translation.help.nbt.item.field.Unbreakable.value.1b": "物品不消耗耐久。",
  "command_translation.help.nbt.item.field.Unbreakable.value.0b": "物品正常消耗耐久。"
}

选择器、方块状态、文本组件和粒子分别使用 selector、block_state、text、particle.<粒子 ID> 字段族。完整键格式见语言键参考。

开发者接入

  • 保留原版 Brigadier 命令树、重定向、权限和补全回调。不要在服务端额外注册一套翻译后的命令。
  • 使用正常的注册对象名称和可同步的参数类型元数据;自定义补全保留正确的替换范围、提示和原始值。
  • 若参数本身没有注册表元数据,command_translation.help.argument.<完整路径>.registry 可为说明查询补充注册表绑定。它不是新参数解析器,也不代替原来的候选提供者。
  • 物品详情沿用原版 tooltip 与物品回调;生物信息读取已注册的默认属性,不生成实体。无需为了接入本项目重写属性数值或物品说明。
  • 语言资源可直接随模组或资源包提供,不需要依赖本项目的内部 Java 类。

发布前核对

确认资源包启用及覆盖顺序,语言代码正确,英文和目标语言都可找到词条。分别检查补全候选与已输入内容;英文命令、本地化命令、标签和具体值应对应同一原始项。重名时保留完整 ID 后缀,不用多个相同别名覆盖不同对象。

配置入口和字段见项目配置。原版语义来自 Minecraft Wiki,Loader 标签使用官方资料;复用这些资料时保留署名和许可。自定义内容应以模组实际行为为准。