Skip to content

Translations update from AnvilCraft Translate - #4935

Open
Gugle2308 wants to merge 1 commit into
dev/1.21/1.6from
translate/1.21/1.6
Open

Gugle2308 wants to merge 1 commit into
dev/1.21/1.6from
translate/1.21/1.6

Conversation

@Gugle2308

Copy link
Copy Markdown
Collaborator

Translations update from AnvilCraft Translate for Anvil-Dev/AnvilCraft/1.21/1.6.

Current translation status:

Weblate translation status

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

Action: opened(继续审查,未命中 closed/labeled)
范围: 1 个文件(0 Java / 0 新增 / 0 删除),+7 / −6 行 — 仅 src/main/resources/assets/anvilcraft/lang/zh_cn.json
作者: Gugle2308 | translate/1.21/1.6dev/1.21/1.6(base 29a8301d,与当前 dev/1.21/1.6 tip 一致 ✅)

🔍 diff 完整性校验(先做,避免静默截断)

  • patch-diff.githubusercontent.comapi.github.comAccept: v3.diff)两份 diff md5 完全一致3c53539b…)✅
  • 用 head SHA 0dbcf1c5 拉取最终 zh_cn.json 与 base 逐键对比:恰好 5 条值变更 + 1 条新增 key、0 条删除,与 diff 的 7+/6− 完全吻合 ✅(无隐式内容丢失)

✅ 校验结果

检查项 结果
JSON 语法(head 文件 json.load ✅ 2824 keys,尾逗号补全正确(missing_tools 加逗号 + 新 key 收尾)
en_us.json 占位符逐一对照 distance 4/4、optimized 11/11、traditional.hint 6/6、traditional.status 6/6(%1$s…%6$s 索引式一致)
与 Java 实参数量对照(BuildingRodClient / BuildingRodTraditionalOverlay ✅ 4 / 11 / 6 / 6 全匹配
新增 key 是否为真缺失 screen.anvilcraft.building_rod.traditional.scroll 在 base 的 zh_cn 中缺失,但 BuildingRodClient.traditionalHint() 第 584 行已在引用 → 本 PR 补上了真实缺口
\n 转义字节级检查 ✅ 为单反斜杠标准编码(5c 6e),解析后是真实换行;与 en_us / en_ud 写法一致;渲染路径用 font.split(component, maxWidth) 逐行绘制,多行可正常换行居中
英文残留 / 值内重复词 / CJK 混用 / EOF 缺换行 ✅ 全部 0 命中(No newline at end of file = 0)

这实际上是一次质量修复,而非普通同步:base 的 zh_cn 把按键硬编码成了 [Ctrl]/↑/↓/右击distance 只有 1 个 %shint 0 个),Java 却已传入真实按键组件,玩家改键后提示不会更新;新版本改为 %s 占位符驱动,并补上 traditional.status\n 断行(原来单行易溢出)。方向正确,值得合并。

⚠️ 建议(非阻塞)

  • screen.anvilcraft.building_rod.distance"%s/%s调整远近"%s/%s 与「调整远近」之间缺空格,渲染为 [↑]/[↓]调整远近,与同行其它占位符(按住 %s 固定| %s 固定蓝图)的空格风格不一致。建议改为 %s/%s 调整远近
  • screen.anvilcraft.building_rod.optimized — en_us 是 %s %s %s %s %s %s Move,中文译作「位置」(名词)而非「移动」。此译法在旧版本中就存在、本次仅断行未改内容,但既然本行被重写,建议顺手修正为「移动」。
  • screen.anvilcraft.building_rod.left_click(值 左击左键,改得对)— 该 key 属于孤儿 keyen_us.json 中不存在,全仓库 Java/其它语言文件中也没有任何引用(唯一命中是 advancements/…/all_in_one.json 里同名的、无关的 criterion 字符串)。它既不会被游戏读取,也不在 Weblate 源集合里。若确认是历史遗留,建议在后续 PR 中直接删除该条,避免继续占用翻译平台条目。

📌 范围说明(非缺陷)

zh_tw / zh_hk / lzh / de_de / ja_jp 的 building_rod.* 键数均为 0(该功能只有 zh_cn 有翻译)。这是 Weblate 按语言独立同步的正常表现,本 PR 只动 zh_cn 不构成遗漏。

📝 PR 标题

当前标题 Translations update from AnvilCraft Translate 信息量偏低。尝试执行 gh pr edit 时返回 the token in /opt/data/home/.config/gh/hosts.yml is invalid(未认证,且按约束不导出 token),故未自动修改。建议标题:

Update zh_cn building rod HUD translations 更新建筑杖提示的简体中文翻译

结论: APPROVE — 占位符、换行、key 集合、Java 实参四项全部对齐,仅 3 条非阻塞文案建议(2 条为顺带修正的旧文本/孤儿 key)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/tmp-collision-and-diff-file-extraction.md in skill 'github-webhook-pr-review' (1 replacement). · Patched references/lang-format-specifier-vs-callsite.md in skill 'github-webhook-pr-review' (1 replacement).

@Gugle2308
Gugle2308 force-pushed the translate/1.21/1.6 branch 2 times, most recently from 38c32e9 to f2c36a3 Compare September 18, 2026 13:20
@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronize(Weblate 翻译同步,非 closed/labeled,正常审查)
范围: 1 个文件(0 Java / 0 新增文件 / 0 删除) / +7 −6 行
文件: src/main/resources/assets/anvilcraft/lang/zh_cn.jsonChinese (Simplified Han script) 100%,2527/2527)

🔍 diff 完整性与事实核对(全部通过)

校验项 结果
API changed_files/additions/deletions 1 / 7 / 6 —— 与 diff 完全一致 ✅
base+diff 应用后 md5 vs PR head 文件 md5 e3554070… == e3554070… ✅(未截断)
head/base sha f2c36a30 / 68d5f625,本地 fetch 对齐 ✅
JSON 解析 通过,2824 键 ✅
键集变化 新增 1(traditional.scroll)、删除 0 —— 无丢行
文件尾换行 }\n 保留(无 No newline 警告)✅
mergeable true(state=unstable,仅 CI 待跑)✅

🔴 关键问题

无。

⚠️ 警告

无。

💡 建议(非阻塞)

  1. screen.anvilcraft.building_rod.distance — 新值 按住 %s 固定投影距离\n%s/%s调整远近 | %s 固定蓝图%s/%s 与「调整远近」之间缺少空格(英文源为 %s/%s to adjust),而同串其它段(%s 执行%s 固定蓝图)均带空格。游戏内会渲染成 [PgUp]/[PgDn]调整远近。纯排版一致性,可忽略或顺手补齐。
  2. screen.anvilcraft.building_rod.left_click(左击 → 左键)是一枚死键:en_us(生成文件)、zh_tw / zh_hk / zh_meme 均无此键,Java 源码中也无任何引用(git grep left_click 仅命中进度/附魔的 left_click 字符串常量,与翻译键无关)。改动本身无害,但建议在 Weblate 源串清理后一并删除,避免持续出现无源词的翻译项。
  3. zh_cn 有 297 个键在 en_us 中不存在 —— 抽查确认绝大多数是 anvilcraft.configuration.*curios.* 等运行时动态生成的配置键(de_de 等语言同样存在),属历史遗留,与本 PR 无关,无需处理。
  4. zh_cn 中残留的 [Alt]Ctrl+Shift+AltCtrl+Z 硬编码与 en_us 逐字对应tooltip.anvilcraft.item.multitool...fluid_tank.break_*tooltip...building_rod.shift),非缺陷。

🟢 看起来不错

  • 占位符完整性全绿:对全文件 2824 键做 zh_head ↔ en_us 占位符签名比对,唯一差异tooltip.anvilcraft.fluid.amount%1$s / %2$s vs %s / %s,索引式与普通式语义等价,且非本 PR 改动)。本 PR 触及的 5 个键占位符数量与顺序全部匹配 en_us
    • distance:4 %s,对应 BuildingRodClient:551 传入的 4 个 key(...)
    • optimized:11 %s,对应 :560 的 11 个参数(放置/取消/六向移动/顺逆旋转/镜像顺序一致)
    • traditional.hint:6 %s,对应 :585tool+scroll / adjust+scroll / use+scroll
    • traditional.status%1$s…%6$s,对应 BuildingRodTraditionalOverlay:77 的 6 个参数
  • 多行化是正确方向:新值中的 \nod -c 确认是 JSON 转义(\+n,与 en_us 完全相同的编码方式),渲染侧 font.split(statusLine(...), maxWidth) / font.split(traditionalHint(), ...) 会正确按行拆分并逐行绘制,不会把 \n 当字面量渲染。
  • traditional.scroll 补键有效BuildingRodClient:584 确实调用该键,此前 zh_cn 缺失,本次补齐后中文界面不再回退英文 Scroll
  • 键序、缩进、en_us 对齐结构(optimized/hint/status 的三行布局与英文源逐段对应)保持一致,missing_tools 仅补尾逗号,未误改内容。

📋 声称验证表

声称(PR 描述) 状态 说明
Translations update from AnvilCraft Translate(zh_Hans 100%) 仅 zh_cn,+7/−6,新增 1 键,无丢行
占位符/参数一致性 5 个改动键与 en_us、调用点三方一致
多行显示 \n 转义正确 + 渲染侧已 split

结论: APPROVE — 纯翻译同步,diff 完整性、JSON 合法性、占位符数量与顺序、渲染适配均已逐项核实,无阻塞问题;两条 💡 仅为排版一致性与历史死键清理建议。

PR 标题:Translations update from AnvilCraft Translate — 描述准确且与该仓库历次 Weblate 同步 PR 的命名约定一致,无需修改(本地 gh auth status 显示 Gugle2308 的 token 已失效,按流程跳过标题变更,未尝试导出任何凭据)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

⚠️ Dangerous command requires approval:

curl -s "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/4935" -o /tmp/pr4935.json
grep -o '"sha": "[^"]*"' /tmp/pr4935.json | head -3
python3 -c "
import json
d=json.load(open('/tmp/pr4935.js...

Reason: script execution via -e/-c flag

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/pr4935-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/diff-analysis-false-positives.md in skill 'weblate-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronize(Translations update from AnvilCraft Translate,Weblate 自动同步)
范围: 1 个文件 / 37 行 diff / +7 −6 / 3 个 hunk —— 仅 src/main/resources/assets/anvilcraft/lang/zh_cn.json
分支: translate/1.21/1.6 (f2c36a3) → dev/1.21/1.6 (68d5f62)

✅ 完整性核对(全部通过)

检查 结果
diff 与远端一致性 patch-diff 的 head/base sha 与 git ls-remote 完全吻合;base→head 全文件 diff = PR diff(13 行变更),无截断/幽灵文件
JSON 语法 python3 -m json.tool 通过(head 与 base 均 OK),新增键的逗号补齐正确
EOF / 行尾 No newline at end of file = 0
键集 无键被删除;新增 1 键 building_rod.traditional.scroll
英文残留 变更值中仅存在 %s,无未翻译英文

✅ 占位符逐键核对(zh_cn ↔ en_us.json 生成的源)

en 占位符 zh 占位符 状态
building_rod.distance 4 4
building_rod.optimized 11 11
building_rod.traditional.hint 6 6
building_rod.traditional.status %1$s…%6$s %1$s…%6$s
building_rod.traditional.scroll(新) 0 0
building_rod.left_click 不存在于 en 0 ⚠️ 见下

换行结构也与源一致(distance 1↔1、optimized 2↔2、hint 1↔1、status 2↔2),全文件仅 1 处占位符差异(tooltip.anvilcraft.fluid.amount%s / %s vs %1$s / %2$s,语义等价,非本 PR 引入)。

🟢 看起来不错 —— 本 PR 实际修复了两个真实的本地化缺陷

对照 BuildingRodClient.java:551/560/584BuildingRodTraditionalOverlay.java:77 的调用点:

  1. building_rod.distance 旧值参数错位:旧串 "按住 [Ctrl] 固定投影距离,↑/↓ 调整远近 | %s 固定蓝图" 只有 1 个 %s,而代码传入 4 个参数(工具键 / 前进 / 后退 / 使用键)。MC 会把唯一的 %s 绑定到第 1 个参数(工具键),导致「固定蓝图」旁显示错误按键,且远近键被硬编码为 ↑/↓。新值改为 4 个 %s 并顺序正确(%s 工具键 → %s/%s 前进/后退 → %s 使用键)✅
  2. traditional.hint 旧值完全不使用占位符:旧串硬编码「Ctrl + 滚轮 / Alt + 滚轮 / 右击」,而代码传入 6 个参数(BUILDING_ROD_TOOLBUILDING_ROD_ADJUSToptions.keyUse 各自与 traditional.scroll 组合)。玩家一旦改键,中文提示即失效。新值 %s+%s 切换工具 %s+%s 调整\n%s 执行 %s 切换快捷栏 与 6 个实参一一对应 ✅

另外 optimizedstatus 的换行重排与 en 源的多行文本块一致,叠加层按行居中绘制不会错位。

💡 建议(非阻塞)

  • screen.anvilcraft.building_rod.left_click 是孤儿键:该键在生成源 src/generated/resources/.../en_us.json 中不存在,BuildingRodLang.java(datagen 定义处)未注册,对 PR head 全树 git grep left_click 也没有任何 Java 引用——仅 zh_cn.json:2746 独有。本次「左击 → 左键」的改动不会在任何界面生效。若源侧已弃用该键,建议后续清理;若仍有代码引用,请补上 en 源定义。
  • 新键被追加到文件末尾frost_smithing.* 之后),而其余 building_rod.* 集中在 2742–2765 行。JSON 无序,功能无影响,仅属 Weblate 写入位置的 diff 噪音,可不处理。
  • screen.anvilcraft.building_rod.traditional(同一界面的传统模式说明行)仍硬编码「滚轮」;en 源同样硬编码 Scroll,与本次新引入的 traditional.scroll 键设计不一致。本次 zh 与 en 保持一致,无阻塞,可反馈给源维护者统一。
  • 观察(与本 PR 无关):zh_cn 中约有 297 个键在生成版 en_us.json 中找不到对应项(多为 anvilcraft.configuration.*,看起来是配置界面迁移后的历史遗留),另有 1 个 en 键 tooltip.anvilcraft.item.ionocraft_backpack.shift 尚未翻译。属仓库历史债,建议单开清理 PR。

🧪 验证建议

在游戏内将 Building Rod: Select tool / Adjust tool(默认 Ctrl/Alt)重映射为其它按键,确认非传统模式与 F3-式提示行显示的键名随之变化且 4/6 个参数顺序正确——这是本次改动唯一需人工确认的点(en_us 的占位符顺序已可静态证明无误)。

结论: APPROVE — 纯 zh_cn 翻译同步,占位符数量/顺序/位置占位符/换行结构全部与英文源一致,JSON 合法、diff 完整,且顺带修复了 distance 与 traditional.hint 两处真实缺陷;无关键或警告级问题。

建议标题: Translations update from AnvilCraft Translate (zh_cn) 简体中文翻译更新(本次因 gh auth status 显示 token 失效未自动修改——修复认证后如需我可代为更新)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/pr4935-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/anvilcraft-lang-source-lookup.md in skill 'weblate-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronize(Translations update from AnvilCraft Translate)
范围: 1 个文件(src/main/resources/assets/anvilcraft/lang/zh_cn.json),+13 / −11 行,无 Java/资源新增
分支: translate/1.21/1.6dev/1.21/1.6(base 4f77cc7,head f90aefb

审查方式:从 head/base 分别取完整文件zh_cn.json vs 生成源 src/generated/.../en_us.json)逐键对照,并回查 Java 调用点的实参个数(未依赖 diff 片段)。


✅ 已逐项核验通过

检查项 结果
JSON 结构 zh_cn.json 完整解析通过;末尾键补上了缺失的逗号frost_smithing.permutation.missing_tools),修掉了语法隐患
占位符一致性(en_us 逐键对照) building_rod.distance 4×%s、optimized 11×%s、traditional.hint 6×%s、traditional.status %1$s…%6$s,全部与 en_us 一致
占位符 ↔ Java 实参匹配 BuildingRodClient.java:551(4 参)/:560(11 参)/:585(6 参)、BuildingRodTraditionalOverlay.java:77(6 参)逐个吻合,不会出现 MissingFormatArgumentException
\n 编码 ✅ 字节级确认是 5c 6e(标准 JSON 转义 → 真实换行),无 5c 5c 5c 6e 三重转义
换行行数对齐源文本 building_rod.shift 旧 9 行 → 新 6 行,与 en_us 完全一致;status 3/3、optimized 3/3、breathing 2/2、recharge 2/2、ionocraft_backpack.shift 2/2 全部对齐
新增键存在性 building_rod.traditional.scroll("滚轮"/"Scroll")、tooltip.anvilcraft.item.ionocraft_backpack.shift 在 en_us 中存在且 Java 有引用点(BuildingRodClient.java:584
其它 ✅ 无英文残留、无值内重复词、无尾随空格、无简繁混用(本 PR 仅 zh_cn 单文件)

⚠️ 警告

  • tooltip.anvilcraft.item.building_rod.shift 首行与源文本不符(信息丢失)
    源文本(ItemTooltipManager.java:61 / 生成 en_us.json)首行是持有要求
    Hold in either hand alongside blocks, a filter, a fluid bucket or a structure disk
    而新 zh 首行写成了 批量放置方块、流体,建造蓝图 —— 这是同类 tooltip tooltip.anvilcraft.item.building_rod("批量放置方块与蓝图")的能力描述,在 .shift 视图里属于语义重复,同时丢掉了「需另一手持方块 / 过滤器 / 流体桶 / 结构盘」这一关键使用条件(旧 zh 首行是有这条的)。
    建议:首行改回/补齐持有要求,例如「任意手持建筑杖,另一手持方块、过滤器、流体桶或结构盘」。

💡 建议(非阻塞)

  • screen.anvilcraft.building_rod.distance%s/%s调整远近/ 与「调整」之间缺空格(en 为 %s/%s to adjust,旧 zh 为 ↑/↓ 调整远近)→ 建议 %s/%s 调整远近
  • tooltip.anvilcraft.equipment.recharge每秒耗电100 kFE 数字与中文间缺空格;同文件其它条目均加空格(「每次消耗 2 B」「每个方块消耗 100 FE」)→ 建议 每秒耗电 100 kFE
  • screen.anvilcraft.building_rod.left_click 是死键 — en_us 无此键、Java 全树无引用(仅 zh_cn.json 独有)。本次「左击→左键」的修改无害,但建议顺手清理或与源语言同步。
  • 历史漂移(非本 PR 引入) — zh_cn 中存在 297 个 en_us 未定义的键(多为 anvilcraft.configuration.* 旧命名,如 amulet_box_invert_override_action),另有 2 个 en_us 配置键在 zh_cn 缺失(anvilcraft.configuration.invert_fluid_port_bucket_action.tooltip,届时回退英文)。建议后续单独开一个清理 PR。

🟢 看起来不错

本次同步把三条 tooltip 从「逗号平铺」改为与源一致的多行结构breathingrechargeionocraft_backpack 拆出 .shift 行、distance/optimized/traditional.hint 的按键占位符化 %s),方向完全正确——这些 %s 化改动正好对应源码里已把硬编码 Ctrl/Alt/滚轮 文字改为按键绑定实参(BuildingRodClient.java:584 新增 traditional.scroll),翻译是跟随而非引入变更。

结论: COMMENT — 无阻塞性问题,占位符/换行/JSON 结构全部与源文本和 Java 调用点对齐,可直接合并;建议合并前顺手修掉 building_rod.shift 首行的信息丢失(唯一实质性偏差),其余为格式类小建议。

建议标题: Translations update from AnvilCraft Translate (zh_cn) 同步 zh_cn 翻译
(本应执行 gh pr edit,但 gh auth status 显示 token 已失效 → 未能自动修改;且按 webhook 约规不得导出 token,故仅在此给出建议。当前标题不算错,可保留。)


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/pr4935-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/pr4850-round-tracking.md in skill 'weblate-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronize(Weblate 翻译同步,中英标题已确认:Translations update from AnvilCraft Translate)
范围: 1 个文件 / +13 −11 行 — src/main/resources/assets/anvilcraft/lang/zh_cn.json(仅简体中文)
校验结果: diff 完整(API changed_files=1 / additions=13 / deletions=11,与本地 patch-diff 逐行吻合,无静默截断);head commit 1d6017e 的最终文件成功 json.load(2823 个键),} 收尾正确,frost_smithing.permutation.missing_tools 的漏尾逗号已修好。

✅ 占位符 / 格式校验(逐参数对照 dev/1.21/1.6 源码,非仅对照 en_us)

key Java 实传参数 en_us zh_cn 新值 结论
screen.anvilcraft.building_rod.distance 4 个(BuildingRodClient.java:551 %s %s 真修复——旧值只有 1 个 %s,键位提示显示不全
screen.anvilcraft.building_rod.optimized 11 个(:565 11 11 ✅ 顺序与 en_us 一致(放置/取消/6×位置/2×旋转/镜像)
screen.anvilcraft.building_rod.traditional.hint 6 个(:585 6 6 ✅ 从硬编码 "Ctrl/Alt/右击/滚轮" 改为真实键位参数,与 en_us 同步
screen.anvilcraft.building_rod.traditional.status 6 个(BuildingRodTraditionalOverlay.java:77 %1$s…%6$s %1$s…%6$s ✅ 索引占位符完整
tooltip.anvilcraft.item.ionocraft_backpack(.shift) NORMAL/SHIFT 映射(ItemTooltipManager:425/944 无占位符 无占位符
  • \n 均为标准 JSON 转义 5c 6e(与 en_us 一致),非双重转义。
  • tooltip.anvilcraft.item.building_rod 新值结尾多了 \nTooltipUtil.translatedLines()split("\n"),Java 默认丢弃尾部空串 → 不会产生多余空行,安全。
  • 值内无连续重复词(防爆防爆类)、无英文残留、无 TODO/密钥/调试串。

✅ 新增 key 正确且必要

  • screen.anvilcraft.building_rod.traditional.scroll = "滚轮" — en_us = Scroll,代码 BuildingRodClient.java:584 实际使用 ✅
  • tooltip.anvilcraft.item.ionocraft_backpack.shift = "离开电网时…双击空格可取消缓降" — en_us 存在,且拆分(基础 tooltip 写"创造飞行"、.shift 写缓降说明)与 en_us 逐行对应 ✅

⚠️ 4 个 key 已不在源中,改动游戏内不可见(非阻塞)

tooltip.anvilcraft.equipment.breathingtooltip.anvilcraft.equipment.rechargetooltip.anvilcraft.item.building_rod.shiftscreen.anvilcraft.building_rod.left_click

  • 不在 dev/1.21/1.6 的生成源 src/generated/.../en_us.json 中(该文件由 ItemTooltipManager 的 NORMAL/SHIFT 映射经 datagen 产出);
  • 全树 git grep 除 zh_cn.json 外无任何引用(Java、数据包、zh_tw/zh_hk/lzh 均无);
  • 渲染路径只读 tooltip.<ns>.item.<path>[.shift]screen.*,这些 equipment.* 键无任何代码入口;
  • 现役键已改名:tooltip.anvilcraft.item.breathing_helmet / ..._chestplate / ..._pockets_leggings / ..._buffer_boots / ..._weatherproof_spacesuit_*;建筑杖长说明已迁至 item.anvilcraft.building_rod.desc/.controls/.energy/.fluids/.import
  • 旁证:dev/26.1/1.6 分支的 zh_cn 已不含这批键(上游已清理)。

→ 本次对这 4 处的改动(加 \n、"左击"→"左键")在游戏内不会显示。若确认废弃,建议顺手删除;若 Weblate 仍把它们当作可译字符串,说明 Weblate 组件的源文件配置已过期,需要重新指向 src/generated/.../en_us.json

💡 建议(非阻塞)

  1. zh_cn 目前缺 36 条 en_us 现存键(其中 27 条 tooltip.*),包括整套 weatherproof spacesuit(防水航天服)breathing_helmetpockets_leggingsbuffer_boots、三种重戟/谐振器、lens.shiftpower_converter_super_big/extremely_big。这些中文玩家现在看到的是英文——比本次修改的 4 个废弃键更值得补。
  2. zh_cn 中另有约 300 条 en_us 已不存在的陈旧键(如 iono_craft_backpack_*ionocraft_backpack_* 并存),建议与维护者一起做一次清理。
  3. tooltip.anvilcraft.item.ionocraft_backpack.shift 中 "双击空格可取消缓降" 对应 en_us "Double-tap Jump to toggle slow falling"——en 是可切换(toggle),zh 表述为"取消"。属可接受的意译,如需严格对应可改为"双击空格可切换缓降"。

🟢 总体评价

本次改动未引入任何 bug,占位符/参数数量键键核对通过,且修好了 building_rod.distance 占位符不全的真实显示缺陷,新增的两个键均为现役键、翻译准确("左键"用词也比旧"左击"更贴切)。废弃键改动是无副作用的空转(no-op)。

结论: COMMENT(可合并) — 建议合并;同时建议后续 PR 补上现役未翻译键并清理陈旧键。

已尝试按规范更新 PR 标题(英文+中文),但 gh auth status 显示 token 已失效(The token in /opt/data/home/.config/gh/hosts.yml is invalid),故未自动修改。建议标题: Translations update from AnvilCraft Translate (zh_cn) 简体中文翻译同步(当前标题未标明语言范围)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched SKILL.md in skill 'weblate-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935(Weblate 翻译同步,累积世代 fc7f6f96

操作: synchronize → 全量审查
范围: 1 文件 src/main/resources/assets/anvilcraft/lang/zh_cn.json(168 行 / 17261 字节 / 7 hunks / +63 −24
标题: Translations update from AnvilCraft Translate — 与该仓库历次 Weblate PR 命名一致,无需修改

📐 硬数字与完整性双证

diff md5 fc7f6f9656d420b33199c0786875fab1 / sha256 a19b5063ff09…57fb新内容世代,非重推)
API 对账 changed_files=1 / additions=63 / deletions=24 与 diff 逐行吻合 ✅
更强证据 diff index 6583bae59c..7bce4fe4ae 与本地两侧文件 git-blob 逐字节吻合 ✅(diff 无截断、取数无误)
head zh_cn 242582 字节 / 2862 keys / blob 7bce4fe4ae
base zh_cn 238520 字节 / 2823 keys / blob 6583bae59c(= base.sha 8aba6d83dev/1.21/1.6 tip 同值 ✅)
en_us 2557 keys,head == base 逐字节相同 → 本 PR 只改 zh_cn,en_us 即权威源
净变化 相对上一轮 head(238199 字节)+4383 字节 / ≈ +37 keys
⚠️ 口径 累积 diff:含前几轮已审过的 hunk(building_rod 占位符修复、round4 内容),非本 push 增量

结构面全过: JSON 合法 ✅ / 重复键 0 ✅ / 无尾逗号、} 结尾 ✅ / 39 个新键全部在 en_us 有源(缺失 0/39)✅ / 本 PR 触碰键占位符与 en 0 差异 ✅ / 换行编码单反斜杠 ✅ / 无删键、无丢字回归 ✅


⚠️ 需修正(本 PR 新增内容)

  1. tooltip.anvilcraft.item.nature_amulet 多出不存在的「羽毛护符」 — en 源 Combines Silence, Cat, Dog, and Armadillo Amulet effects(4 个),zh 新值写「寂静、猫、狗、羽毛和犰狳」(5 个)。代码铁证:PermutationRecipeLoader.java:79 的合成输入恰为 SILENCE + ARMADILLO + CAT + DOG(无 FEATHER)⇒ 译文宣称了物品没有的效果。删掉「羽毛和」即可(旧值本来就错在含羽毛,本轮补了犰狳却漏删)。
  2. tooltip.anvilcraft.item.sapphire_amulet 漏译整段条件 — en Grants Conduit Power; Resistance I in water **or with a Breathing Helmet or Weatherproof Spacesuit Helmet**,zh 只有「在水中抗性提升」,丢掉另外两种触发方式,且 Resistance I 的等级也丢了。
  3. tooltip.anvilcraft.item.lens.shift 三行全部漏译(新键,源在 ItemTooltipManager.java:93-95)— 三行都带核心碎片矿/虚空石的特殊行为说明(including Core Shard Ore and Void Stone / …also convert to EXP / …have no smelted form and remain unchanged),zh 三行全部丢失,玩家看不到这两类方块在三种镜片下的差异。
  4. tooltip.anvilcraft.item.anvil_amulet 术语错误 — 「锻造砧天体引力」;官方译名 block.anvilcraft.celestial_forging_anvil = 「锻星砧」(先例计数:锻星砧 33 处 / 锻造砧 1 处 = 本键)→ 应为「锻星砧的天体引力」。

⚠️ 顺带发现(非本 PR 引入,建议另开修复)

  1. tooltip.anvilcraft.item.power_converter_middle / _big 显示数值错误 — 代码五个转换器的 en 源全部consumes %d kW,经 NORMAL_ARGUMENTSINPUT_TIME(实测 small=1 / middle=16 / big=256 / super_big=4096 / extremely_big=65536)。zh 旧 3 键把数值写死并丢了 %d:middle 写「6 kW」(应 16)、big 写「36 kW」(应 256)→ 玩家看到错误功率。本 PR 新增的 _super_big / _extremely_big 两个键正确使用了 %d ✅ —— 正可作旧 3 键的修正范例。

💡 建议(术语/排版统一)

  • abnormal_amulet「漂浮粉末」↔ 物品名「飘浮粉」(全库 飘浮粉 4 / 漂浮粉末 1),建议统一为物品名。
  • 同一 en 句 Supplies oxygen underwater and in vacuum 出现三种译法:「提供氧气」/「供应氧气」/「供氧」。
  • 三个谐振器 en 完全相同,zh 却分「切换模式。」/「更改模式。」/「切换模式,…」(连标点都不一致)→ 统一。
  • 数字排版:新键 item.buffer_boots「最高可达4格高度」vs 同批 weatherproof_spacesuit_boots「最高可达 4 格高度」。
  • [左Shift](2 处新值)vs 既有键的「Shift」(19 处)→ 择一统一。
  • 等级数字漏写:ruby_amulet 写了「力量 II」却漏 Strength I 的 I;topaz_amuletHaste Isapphire_amuletResistance I
  • structure_disk.size 用半角 x,本文件其他尺寸用「×」。
  • feather_amulet:en 源自身矛盾(immunity to … Slow Fallingholding Shift removes Slow Falling)→ 建议上游澄清。
  • 死键(定级 💡):本 PR 新引入孤儿 0 个(base 306 = head 306 ✅);但有 2 处改动落在死键上 —— tooltip.anvilcraft.equipment.breathing / .recharge:该前缀 7 个键在 en_us 中全部不存在(上游已改名 item.*,现役键 item.breathing_helmetitem.buffer_bootsitem.pockets_leggingsitem.weatherproof_spacesuit_* 已在本 PR 补全)。建议在 Weblate 端清理废弃源串,否则每轮同步都在维护死键。

🟢 看起来不错

  • 11 个护符 tooltip 从「只有一句笼统描述」扩充为与 en 完整对齐(cat/dog/emerald/silence/feather/anvil/ruby/nature 等),其中 9 条逐句准确 —— 这是本轮最大的质量提升。
  • structure_disk.size1 个 %s 补为 3 个 ✅ 与 StructureDiskItem.java:46 传的三实参吻合,修好了只显示 X 尺寸的问题。
  • building_rod.{distance, traditional.hint, traditional.status, optimized} 的「按键硬编码 → %s 占位符」修复保持,调用点实参 4/6/6/11 逐一对齐。
  • 新键 power_converter_{super_big,extremely_big}%d 而非写死数值 —— 正确做法。
  • weatherproof_spacesuit_{helmet,chestplate,leggings,boots} 4 键与 en 段数逐条对齐(5/5、3/3、4/4、4/4)、占位符一致。

📋 跨 PR 已知未修项逐 key 重对(本轮 首次完整执行

9/9 清单项 + 8 项在册项全部仍存在,0 项闭环。 明细(现值均为本轮 head):

现值 vs 源 判定
transcendence_grindstone.modifier_slot.tooltip 漏 small 「空的(大型)储罐」vs empty small or large fluid tanks ⚠️ 仍在
cfa.megastructure.eco_station.usage 同译 产出两行均「行星生物资源」(en items / fluids ⚠️ 仍在
cfa.megastructure.temple.usage 方向译反 神赐与天罚」vs Offerings and punishments ⚠️ 仍在
item.black_white_chocolate_block 双逗号 「制作**,,**踩上去」 ⚠️ 仍在
cfa.megastructure.dyson_sphere_brown_dwarf.usage 英文残留 「需求**:」「产出:**」半角 + Side Effects: ⚠️ 仍在
cfa.evolution.phase.nondegenerate_core_helium_burning 「非简并核心燃烧」vs Helium Burning ⚠️ 仍在
cfa.evolution.phase.pre_white_dwarf 原氦白矮星」vs Pre-white Dwarf ⚠️ 仍在
cfa.evolution.phase.bare_core_wr 「沃尔夫拉叶星」vs Bare-core WR(漏「裸核」且与 wolf_rayet 撞词) ⚠️ 仍在
key.anvilcraft.building_rod_adjust / _tool 同值 均「建筑杖:选择工具(滚轮)」(en Select / Adjust) ⚠️ 仍在(建议 adjust 改「调整参数(滚轮)」)
item.anvilcraft.building_rod.desc+15 block reach 且与 tooltip…building_rod 同值 ⚠️ 仍在
item.local_terminal 动态连接 32 方块范围内」→ 缺 nearest 多「动态」 💡 仍在
screen…building_rod.optimized Move → 「位置 💡 仍在
hud_scale.tooltip Hud 的缩放程度」 💡 仍在
item.building_rod.fluids vs …building_rod.shift 无限流体」vs「可再生流体」(en 双侧 renewable 💡 仍在
item.ionocraft_backpack(.shift) 「双击空格可取消缓降」(en toggle)+ 同串「缓慢降落/缓降」并用 💡 仍在
structure_scanner.normalized en 有 zh 无,base 亦无 → 历史欠翻译 💡 非本 PR
孤儿键 base 306 = head 306,本 PR 新引入 0

✅ 已闭环(表扬): building_rod.shift「放行拒绝列表」措辞(随源删除)/ ionocraft_backpack creative 吞词 / buffer_boots.charged%2$s / equipment.buffer_boots「三倍高度」/ storage.flip 补译 —— 均保持在位。


结论: COMMENT — 结构面(JSON / 占位符 / 键完整性 / 换行编码)全部通过,且本轮把历史上一直缺失的「跨 PR 已知未修项逐 key 重对」补做完毕;但本 PR 新内容存在 4 项 ⚠️nature_amulet 多出羽毛、sapphire_amulet 漏条件、lens.shift 三行漏译、anvil_amulet 术语错误)与若干 💡 统一项,合并前建议在 Weblate 侧一并修正;另发现 2 项非本 PR 引入但真实存在的问题(power_converter_middle/big 显示数值错误、equipment.* 7 个死键),建议另开清理/修复。

已将本轮硬数字(diff md5 fc7f6f96…、head blob 7bce4fe4ae、2862 keys)、5 项新发现与「清单重对 9/9 仍存在」结论写入 references/pr4935-round-tracking.md,下一轮可用 md5sum 瞬时判重、避免重复展开。

由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/pr4935-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/pr4850-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/diff-file-identity-and-head-reconciliation.md in skill 'pr-diff-scope-reconciliation' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

⚠️ Dangerous command requires approval:

cd /opt/data/skills/github/weblate-pr-review && python3 scripts/known_issue_recheck.py references/pr4935-round-tracking.md references/pr4850-round-tracking.md --zh /tmp/pr4935_zhcn_head.json --en /tmp...

Reason: Security scan — [MEDIUM] Variation selector characters detected: Content contains Unicode variation selectors (VS1-256). These are commonly used in emoji sequences but may indicate steganographic encoding or obfuscation

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronizestate=open / merged=false / labels=[]
范围: 1 个文件(src/main/resources/assets/anvilcraft/lang/zh_cn.json)/ 169 行 diff / +64 −24(API changed_files=1 / additions=64 / deletions=24 与 diff 逐行吻合 ✅)= 40 纯新增 / 23 修改 / 0 纯删
diff 完整性: index 6583bae59c..2325ea4c24 与两侧本地 blob 逐字节吻合 ✅;head 94a4984dc0… / base 8aba6d835f…git ls-remote 落地同值 ✅
en_us: head 与 base 逐字节相同(2557 keys / 226524 字节)→ 本 PR 只改 zh_cn,en_us 即权威源


🔍 增量定位(本轮最重要的结论)

本世代 diff md5 d42c7833f4574129f7c758461f7e155e(未入档)。经字节级核验:从本轮 head 文本剔除 screen.anvilcraft.structure_scanner.normalized 这一行(并去掉上一行尾逗号)后 = 242582 字节,恰等于已档上一世代(fc7f6f96…)的 head 大小

本世代相对上一世代只多了 1 个键,其余 63 项改动(building_rod 占位符修复、护符 tooltip 补全等)逐字重现,属两点累积 diff,不是翻译者重复改动,不重复展开。


✅ 闭环(表扬)

  • screen.anvilcraft.structure_scanner.normalized 历史欠翻译已补 —— 此前 base zh_cn 无此键(en_us 有、ScreenLang.java:334 有 provider、BlueprintClientFiles.java:146 有调用),历轮记录为「en 有 zh 无」,本轮译入,闭环 ✅。占位符 2×%s 与调用点 translatable(key, added, removed) 的个数/顺序一致 ✅。
  • tooltip.anvilcraft.item.building_rod 已重写为与源逐段对齐:「批量放置方块,快速建造蓝图\n随身携带可延长触及距离」vs en Place blocks in bulk and build blueprints quickly; increases reach while carried ✅ —— 顺带解除了历轮在册的「与 item.anvilcraft.building_rod.desc 同值」问题(旧值是从 .desc 借来的文案)。.desc 仍缺 +15 block reach,仅剩后半。
  • screen.anvilcraft.building_rod.distance / .traditional.hint / .traditional.status / .optimized硬编码 → %s 占位符修复保持正确(调用点 4 / 6 / 11 实参逐一吻合)✅
  • item.anvilcraft.structure_disk.size%sStructureDiskItem 三实参吻合 ✅;power_converter_super_big / _extremely_big 新键正确使用 %d ✅(可作旧键修法范例)。

⚠️ 仍存在(本 PR 内,前轮已记,非新发现)

问题
tooltip.anvilcraft.item.nature_amulet 多出「羽毛护符」(en/代码仅 Silence, Cat, Dog, ArmadilloPermutationRecipeLoader.java:79.input(...) 无 FEATHER)
tooltip.anvilcraft.item.sapphire_amulet or with a Breathing Helmet or Weatherproof Spacesuit Helmet 整段 + 漏 Resistance I 等级
tooltip.anvilcraft.item.lens.shift 三行逐行截断,每行都丢核心碎片矿/虚空石说明(源 ItemTooltipManager.java:92-95
tooltip.anvilcraft.item.anvil_amulet 锻造砧天体引力」应为「锻星砧的天体引力」(全库 锻星砧 33 处 / 锻造砧 1 处)
tooltip.anvilcraft.item.ruby_amulet / topaz_amulet Strength I / Haste I 的等级
power_converter_small / middle / big 数值写死(「1 / 6 / 36 kW」),en 全族为 consumes %d kW,代码实为 1 / 16 / 256(非本 PR 引入,建议另开修复)

⚠️ 在册前提失效(本轮更正一条历轮记录)

  • tooltip.anvilcraft.item.building_rod.shift 是死键.shift 键仅在物品属于 SHIFT map 时才渲染(ItemTooltipManager.java:1035:1130/:1136,且 data/lang/ItemTooltipLang.java:12 只对 SHIFT 项生成源串),而 BUILDING_ROD 只在 NORMAL:96)→ 该键运行时不渲染,en_us/en_ud 均无、全树无 provider。
  • 历轮据以报 ⚠️ 的那句源文 Hold in either hand alongside blocks, a filter, a fluid bucket or a structure disk 在 head 与 base 全树 git grep 0 命中 ⇒ 该 ⚠️ 前提已不成立,建议降级为 💡(与本文件既有 ~306 个死键并列,随 tooltip.anvilcraft.equipment.* 一并清理)。

💡 建议(非阻塞)

  • screen.anvilcraft.structure_scanner.normalized(本轮新键):en removed %s orphan parts or flows并列关系(部件流体),zh 只写「移除了 %s 无源头的流体」,收窄了计数对象且「格」作流体单位不常见 → 建议「移除了 %s 个无源头的部分或流体」(前半「添加了 %s 个部分」✅ 准确)。
  • message.anvilcraft.building_rod.component_mismatch(本轮修改):en 结尾 …to use the available materials **and their data** → zh 漏 and their data,建议补「及其数据」。
  • 在册排版/措辞项仍在:[左Shift] vs「Shift」(19 处)、最高可达4格高度 缺空格、每秒耗电100 kFE 缺空格、%s/%s调整远近 与 CJK 间缺空格、固定蓝图 建议「锁定蓝图」(本文件「锁定」12 处)、optimizedMove→「位置」建议「移动」、hud_scale.tooltip 的「Hud」→「HUD」、building_rod.fluids无限流体」vs .shift可再生流体」(en 双侧均 renewable)、key.anvilcraft.building_rod_adjust_tool 同值(建议 adjust =「建筑杖:调整参数(滚轮)」)、local_terminalnearest 多「动态」(两半都要改)、ionocraft_backpack.shifttoggle→「取消」建议「切换缓降」、fluids/谐振器三键译法不统一。

🟢 结构面(全过)

JSON 合法 / 重复键 0 / 无制表符 / 无行尾空白 / }\n 结尾 ✅;新增 40 键全部在 en_us 有源,孤儿键 base 306 = head 306 → 本 PR 新引入 0 ✅;占位符(归一化 %N$s→%s)全库仅 4 处不一致 = 在册 3 处(power_converter_{small,middle,big})+ 1 处良性登记(tooltip.anvilcraft.fluid.amount%1$s / %2$s 等价写法,勿报)✅;换行差异均为「en 用 . 分句 / zh 用 \n」房式或已登记的合并非漏译 ✅;无英文残留(400 = 1 ? 与 en 逐字符一致,有意)。

📋 跨 PR 清单逐 key 用 head 现值重对(历史第 3 次执行)

清单项 本轮 head 现值 判定
…transcendence_grindstone.modifier_slot.tooltip 漏 small 「空的(大型)储罐」vs en empty small or large ⚠️ 仍存在
…eco_station.usage items/fluids 同译 两行均「行星生物资源」 ⚠️ 仍存在
…temple.usage 方向译反 神赐与天罚」vs en Offerings and punishments ⚠️ 仍存在
black_white_chocolate_block 双逗号 「制作**,,**踩上去…」 ⚠️ 仍存在
…dyson_sphere_brown_dwarf.usage 半角「需求**:」「产出:**」+ Side Effects: 残留 ⚠️ 仍存在
…nondegenerate_core_helium_burning 「非简并核心燃烧」应为氦 ⚠️ 仍存在
…pre_white_dwarf 原氦白矮星」 ⚠️ 仍存在
…bare_core_wr 「沃尔夫拉叶星」,漏「裸核」且与 …wolf_rayet 撞词 ⚠️ 仍存在
容量「组 vs 个」 「组」28 / 「个」73 💡 仍存在
在册 8 项(building_rod_adjust·_tool 同值 / .desc+15 / local_terminal / optimized Move / Hud / fluids 无限 vs 可再生 / ionocraft toggle / 孤儿 306) ⚠️/💡 全部仍存在(1 项状态更新.desctooltip…building_rod 同值已解除)

结论: COMMENT — 结构面与占位符全过、新增键全部有源、本轮新增内容仅 1 键且已闭环一条历史欠翻译(值得表扬);但 5 项在册语义缺陷(nature 多「羽毛」、sapphire 漏条件、lens.shift 逐行截断、锻造砧、power_converter 数值)与清单 9/9 项均未闭环,建议 Weblate 侧修正后再合并。

说明:gh auth status 报 Gugle2308 token 失效,未自动改写标题;该标题与该仓库历次 Weblate PR 命名一致(符合约定),无需修改

由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

⚠️ Dangerous command requires approval:

cd /tmp && curl -sL "https://raw.githubusercontent.com/Anvil-Dev/AnvilCraft/a378f98e4d41d0d92f97cf2486ac9da7881b1674/src/generated/resources/assets/anvilcraft/lang/en_us.json" -o /tmp/en_us.json; wc -...

Reason: script execution via -e/-c flag

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要

PR #4935 — Translations update from AnvilCraft Translatetranslate/1.21/1.6dev/1.21/1.6,状态 open,非 draft,可合并)

结论:✅ 批准(建议项均非阻塞)

统计(diff 完整性已核对,与 API 的 changed_files: 1 / +64 / -24 一致):

文件 状态 说明
src/main/resources/assets/anvilcraft/lang/zh_cn.json ✅ 2823 → 2863 键(+40 新增 / 23 修改 / 0 删除) JSON 合法、无重复键、无尾随逗号问题

已用 base a378f98src/generated/resources/assets/anvilcraft/lang/en_us.json 逐键交叉验证:40 个新增键全部存在于 en_us 源,占位符(%s/%d/%1$s)、换行数、数字全部一致;23 个修改键的占位符也与源一一对齐。

✅ 做得对的地方

  1. 修掉一个真实显示 bugitem.anvilcraft.structure_disk.size「尺寸:%s」→「尺寸:%s x %s x %s」。StructureDiskItem.java:46 传入 sizeX, sizeY, sizeZ 三个参数,旧译文只显示第一个;新译文与 ItemTooltipLang.java:69 的源一致。
  2. tooltip 拆分与源同步tooltip.anvilcraft.item.ionocraft_backpack 只保留基础句,新增 .shift 承接缓降说明——ItemTooltipManager:944 确实把 IONOCRAFT_BACKPACK 放进了 SHIFT 映射,符合 .shift 键的运行时解析(getTranslationKeyShift())。
  3. 占位符由硬编码按键改为参数化building_rod.distance(4 args)/traditional.hint(6)/traditional.status(6) 与 BuildingRodClient:638/671/652 的实参个数完全一致。
  4. tooltip.anvilcraft.item.lens.shift 保留 3 行,与 addShiftTooltip() 中 3 色(青/浅蓝/黄)着色逻辑的行数一一对应,颜色不会错位。

⚠️ 建议(非阻塞)

  1. 术语不一致tooltip.anvilcraft.item.abnormal_amulet 用了「漂浮粉末」,但项目官方物品名是「飘浮粉」(item.anvilcraft.levitation_powderblock.anvilcraft.levitation_powder_block「飘浮粉块」)。建议改为「飘浮粉」(同时去掉多出的「末」)。
  2. 相对 en_us 有内容缺失
    • tooltip.anvilcraft.item.sapphire_amulet:漏掉后半句 "or with a Breathing Helmet or Weatherproof Spacesuit Helmet"(戴呼吸头盔/防风雨宇航服头盔同样获得抗性提升)。
    • tooltip.anvilcraft.item.lens.shift:压缩过多,丢了 Core Shard Ore / Void Stone 的例外规则(皇家不掉落、浮霜转经验、余烬保持不变),玩家会实测困惑;颜色名省略可接受(运行时自动染色)。
    • screen.anvilcraft.building_rod.distancetraditional.hint:都省掉了 "Hold and drag to repeat projections, then click again to paste" 这句操作说明,而 item.anvilcraft.building_rod.controls 里已有完整译文,可直接复用。
    • screen.anvilcraft.structure_scanner.normalized:第二个 %s 是 "orphan parts or flows",译文只写「格无源头的流体」。
    • message.anvilcraft.building_rod.component_mismatch:末句 "and their data" 未译出。
  3. 数字/字母间距不统一(同一 PR 内自相矛盾):tooltip.anvilcraft.item.buffer_boots「最高可达4格高度」 vs weatherproof_spacesuit_boots「最高可达 4 格高度」;lens.shift「每次挖掘10%概率」「熔炼V附魔」;building_rod.distance「%s/%s调整远近」缺空格(对比 hint 的「%s+%s 切换工具」)。建议统一加空格。
  4. 同源多译:en_us 里 4 条 resonator 文案完全相同,zh 却有 3 种写法——ember「切换模式。自动模式…可对大多数方块进行"共振挖掘"」/frost「更改模式。…并且可以在按住右键时…」/transcendence「切换模式,…」。建议统一(并统一 halberd 与 resonator 的「切换/更改模式」用词)。
  5. 🕳️ 死键:本 PR 对以下 4 键的修改在游戏内不会生效(1.21.1 分支的 en_us 无此键,且全仓库 Java 无任何引用,属 Weblate 遗留过期字符串):
    • tooltip.anvilcraft.item.building_rod.shiftBUILDING_ROD 只在 NORMAL 映射,未进 SHIFT,故 .shift 根本不生成)
    • screen.anvilcraft.building_rod.left_clickBuildingRodLang 未注册)
    • tooltip.anvilcraft.equipment.breathingtooltip.anvilcraft.equipment.recharge(整个 tooltip.anvilcraft.equipment.* 族 7 个键都无 en_us 源;代码只用 screen.anvilcraft.equipment.*
      建议在 Weblate 中删除这些无源字符串,避免持续把翻译精力花在不会显示的文本上。
  6. 微调用词:building_rod.optimized 的「位置」对应 en "Move"(建议「移动」);distance 的「固定蓝图」对应 "Lock projection"(投影,建议「锁定投影」)。

✅ 总体评价

译文与新版 en_us 源结构对齐良好,占位符/行数零风险,修好了 structure_disk.size 的真实 bug,合并不会引入功能性回归。上述 1–4 属质量打磨,第 5 项建议单独的 Weblate 清理跟进。可以合并。

(PR 标题 "Translations update from AnvilCraft Translate" 为 Weblate 标准命名,准确无歧义,未作改动。)

⚠️ File-mutation verifier: 1 file(s) were NOT modified this turn despite any wording above that may suggest otherwise. Run git status or read_file to confirm.
/tmp/parse_meta.py — [write_file] Write denied: '/tmp/parse_meta.py' is a protected system/credential file.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/pr4935-round-tracking.md in skill 'weblate-pr-review' (1 replacement). · Patched references/source-key-existence-audit.md in skill 'weblate-pr-review' (1 replacement). · Patched SKILL.md in skill 'weblate-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

⚠️ Dangerous command requires approval:

cd /tmp && curl -s "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/4935" -o /tmp/pr4935_meta.json && python3 -c "
import json
d=json.load(open('/tmp/pr4935_meta.json'))
print('state',d['state...

Reason: script execution via -e/-c flag

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

⚠️ Dangerous command requires approval:

cd /opt/data/workspace/pr4935 && python3 - <<'PY' 2>/dev/null || python3 -c "pass"
PY
echo skip

Reason: script execution via -e/-c flag

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

PR #4935 审查报告

结论:COMMENT(无阻塞项,可合并;以下 ⚠️ 建议在合并前或下轮同步时一并修)

标题: Translations update from AnvilCraft Translate 符合本仓库历次 Weblate PR 命名约定,无需修改。


一、diff 身份与完整性

diff 169 行 / 17,395 字节,1 文件 zh_cn.json,7 个 hunk,md5 d42c7833f4574129f7c758461f7e155e
完整性双证 diff index 6583bae59c..2325ea4c24 与 head/base 实际文件 blob 逐字节吻合(head blob 2325ea4c24bcc676661b88b1ef4577ab2d69432a)⇒ 未截断 ✅
API changed_files=1 / additions=64 / deletions=24 与 diff 逐行吻合 ✅(40 新增 + 23 值变更 + 1 处仅补尾逗号)+ 0 纯删;state=open, merged=false, labels=[]
文件 head zh_cn 242,715 字节 / 2863 keys;base 238,520 / 2823
en_us head 与 base 逐字节相同(227,267 字节 / 2560 keys)⇒ 本 PR 只改 zh_cn,en_us 即权威源

二、结构面(全过)

40 个新增键全部在 en_us 有源;占位符(归一化 %N$s→%s)差异仅 4 处(在册 3 + 良性 1);换行编码为标准单反斜杠 JSON(0x5c6e:zh 314 / en 291,0x5c5c6e=0);无重复键、无制表符、无行尾空白、}\n 结尾;孤儿键 head 306 = base 306 ⇒ 本 PR 新引入 0

三、正向价值(建议保留)

  • screen…building_rod.distance / traditional.hint 由硬编码 [Ctrl]/↑/↓/右击 改为 %s 占位符(4 / 6 个),与 BuildingRodClient 实参数量一致 → 玩家改键后 HUD 提示不再错位 ✅
  • item.anvilcraft.structure_disk.size 1→3 个 %s,与 StructureDiskItem 三实参吻合 ✅
  • 补上 screen…building_rod.traditional.scroll(base zh 缺键、运行时回退英文)✅
  • 补译 screen.anvilcraft.structure_scanner.normalized(历史 en 有 zh 无)✅
  • 新增 _super_big / _extremely_big 正确使用 %d ✅(可作旧 bug 的修正范例)

四、⚠️ 建议修的问题

A. 遗漏 en 当前源文中的整句说明(均在本 PR 触碰的键内)

  1. screen…building_rod.distance:en 为 …| %s Lock projection / Hold and drag to repeat projections, then click again to paste,zh 只到「%s 固定蓝图」→ 丢「按住拖动可重复投影,再次点击粘贴」。
  2. screen…building_rod.traditional.hint:en 为 %s executes (hold and drag with Move to repeat projections, then click again to paste) %s changes hotbar,zh 只写「%s 执行」→ 同类整句丢失。
    源定义见 data/lang/BuildingRodLang.java:23-27:37-40。两句均在 base zh 也缺,属「本次改写未顺带补齐」。
  3. message.anvilcraft.building_rod.component_mismatch:en …to use the available materials **and their data** → zh 漏「及其数据」。
  4. tooltip.anvilcraft.item.lens.shift(新键)三行逐行截断:每行都缺 including Core Shard Ore and Void Stone / …also convert to EXP / …have no smelted form and remain unchanged
  5. tooltip.anvilcraft.item.nature_amulet:en 仅 Silence / Cat / Dog / Armadillo(4 项),zh = 「寂静、猫、狗、羽毛和犰狳」→「羽毛」为不存在的效果(data/recipe/PermutationRecipeLoader.java:79 配方无 FEATHER)。建议删「羽毛和」。
  6. tooltip.anvilcraft.item.sapphire_amulet:en Resistance I in water **or with a Breathing Helmet or Weatherproof Spacesuit Helmet** → zh 丢后半条件整段,且漏等级 I

B. 术语 / 数值

  1. tooltip.anvilcraft.item.anvil_amulet:「锻造砧天体引力」→ 官方译名是「锻星砧」(block.anvilcraft.celestial_forging_anvil;全库 锻星砧 33 处 / 锻造砧 1 处 = 本键)。
  2. power_converter_{small,middle,big}:数值写死且丢了 %d(en 全族 consumes %d kW;代码实为 1 / 16 / 256 kW,zh 现写 1 / 6 / 36)→ 显示值错误。建议与本次新增的 _super_big / _extremely_big 统一用 %d
  3. ruby_amulet(漏 Strength I)、topaz_amulet(漏 Haste I)→ 同族补等级。

C. 跨 PR 既有项(9/9 全部仍存在,非本 PR 引入)

modifier_slot.tooltipsmall(现「空的(大型)储罐」)· eco_station.usage 产出两行同译「行星生物资源」(en items / fluids)· temple.usage 需求译反(en Offerings and punishments → 「神赐与天罚」)· dyson_sphere_brown_dwarf.usage 半角「需求:」「产出:」+ Side Effects: 英文残留 · nondegenerate_core_helium_burning「非简并核心燃烧」/ pre_white_dwarf原氦白矮星」/ bare_core_wr 漏「裸核」且与 wolf_rayet 撞词 · tooltip.anvilcraft.item.black_white_chocolate_block「制作**,,**」双逗号 · key.anvilcraft.building_rod_adjust_tool 同值「建筑杖:选择工具(滚轮)」· local_terminalnearest 且多「动态」· 容量「组/个」口径 28 : 74 · weatherproof_chestplate_hud.hud_scale.tooltip「Hud」· capacitor_count_enabled.tooltip 多「和超级电容器」· item.building_rod.fluids「无限流体」vs en renewable · ionocraft_backpack.shifttoggle 译成「取消」(建议「切换缓降」)· equipment.recharge「每秒耗电100 kFE」缺空格。

五、💡 提示(不阻塞)

  • 上游 en_us 新增、zh(head 与 base 皆)未译的 3 键(非本 PR 引入,建议下轮同步补):message…building_rod.undo_partialBuildingRodUndo.java:250)、message…building_rod.unsupported_typeBuildingRodService.java:851,带 %s)、screen…building_rod.selection_sizeBuildingRodClient.java:188,3 个 %s)。
  • screen…building_rod.left_click死键(en_us 无、全树无引用),本次「左击→左键」无实际效果;tooltip.anvilcraft.equipment.*breathing / recharge)本轮有改动但同为死键 → 建议 Weblate 端清理废弃源串(本次新引入孤儿 = 0,仅清理建议)。
  • 排版统一:%s/%s调整远近 与 CJK 间缺空格;新键 item.buffer_boots「最高可达4格高度」、lens.shift「每次挖掘10%概率」缺空格;[左Shift](2 处)与既有「Shift」(19 处)择一。
  • screen…structure_scanner.normalized:en 为并列 removed %s orphan parts or flows,zh 收窄为「流体」→ 建议「移除了 %s 个无源头的部分或流体」。
  • 三个谐振器(ember / frost / transcendence)en 同文而 zh 用词不一(「切换」/「更改」模式、标点、「并且」有无),建议统一。

(本轮为同一内容世代的第三次审查:diff md5 与已档 d42c7833… 逐字相同;已按流程完成跨 PR 清单逐 key 重对、孤儿基线量化与结构面复核,轮次记录已更新至 references/pr4935-round-tracking.md 第四轮。)

Currently translated at 99.7% (2553 of 2560 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2557 of 2557 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2556 of 2556 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2555 of 2555 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2555 of 2555 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2555 of 2555 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2528 of 2528 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2527 of 2527 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2527 of 2527 strings)

Co-authored-by: Fff_ff <a181084170@163.com>
Co-authored-by: OpenAI <noreply-mt-openai@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: 鸽の念 <635035765@qq.com>
Translate-URL: https://translate.anvilcraft.dev/projects/anvilcraft/1-21-1-6/zh_Hans/
Translation: Anvil-Dev/AnvilCraft/1.21/1.6
@Gugle2308

Copy link
Copy Markdown
Collaborator Author

代码审查摘要 — PR #4935

操作: synchronize(新内容世代,diff md5 eb3aa3f2… 未在档)
范围: 1 个文件(src/main/resources/assets/anvilcraft/lang/zh_cn.json,0 Java / 0 新增文件 / 0 删除)/ 178 行 / +65 −25 / 18035 字节
SHA: head 60d9679dtranslate/1.21/1.6)/ base a378f98edev/1.21/1.6,与 git ls-remote 一致)


🔎 关键判读:这是累积口径 diff,本轮真实变化只有 1 条

判据 结果
diff 完整性双证 index 6583bae59c..7f929033fc 与 base/head 本地导出文件的 git hash-object 逐字节吻合
base zh_cn 238520 字节 / 2823 keys(blob 6583bae59c…,与上一世代同 base
head zh_cn 242703 字节 / 2863 keys(blob 7f929033fc…
en_us / en_ud en_us 227267 字节 / 2560 keys,head 与 base cmp → 无源串漂移,本 PR 只改 zh_cn
diff 面 40 纯新增 / 25 修改 / 0 纯删(40+25 = 65 ✅ 与 +65 −25 自洽)
净变化(权威:上一轮 head vs 本轮 head) +0 / −0 / ~1(上一轮 head blob 2325ea4c24… / 242715 字节)
字节自证 −12 字节 = 「没有可撤回且未经改动的放置」(13 CJK) → 「没有可以撤回的放置」(9 CJK);hunk 7→8、行数 169→178 亦与该单条改动自洽

因此本 diff 里的 40 个「新增」键与其余 24 条修改均为前几轮已审内容(We translate 分支被重建后 patch-diff 即 merge-base→head 累计差),本轮不重复展开

✅ 本轮唯一实际变更(正向,非缺陷)

message.anvilcraft.building_rod.nothing_to_undo:「没有可撤回且未经改动的放置」→「没有可以撤回的放置」

  • 代码判据 BuildingRodUndo.java:195:仅在 HISTORY.get(player) == null || undo.level != player.level() 时报此消息,代码中不存在「未经改动」这一条件 → 旧值多出的限定词无依据;
  • en = No placement to undoBuildingRodLang.java:18)→ 新值与源一致 ⇒ 判为对齐源的修复,请勿视为丢词退化。

⚠️ 跨 PR 已知未修项 —— 逐 key 用本轮 head 现值重对(仍全部存在,0 项闭环)

现值 vs en
screen.anvilcraft.transcendence_grindstone.modifier_slot.tooltip 「空的(大型)储罐」漏 small or large
screen.anvilcraft.cfa.megastructure.eco_station.usage 物流/流体两接口同译「行星生物资源」(en items / fluids
…cfa.megastructure.temple.usage 需求「神赐与天罚」← en Offerings and punishments(方向译反)
tooltip.anvilcraft.item.black_white_chocolate_block 「制作**,,**」双全角逗号
…dyson_sphere_brown_dwarf.usage 半角「需求**:」「产出:**」+ 第 3 行 Side Effects: 英文残留、数值/公式缺失
…cfa.evolution.phase.nondegenerate_core_helium_burning 「非简并核心燃烧」← en Helium(应「氦」,硬错)
…cfa.evolution.phase.pre_white_dwarf 原氦白矮星」← en Pre-white Dwarf(多「氦」)
…phase.bare_core_wr…phase.wolf_rayet 同译「沃尔夫拉叶星」(en Bare-core WR / Wolf-Rayet Star,丢「裸核」)
screen.anvilcraft.building_rod.distance 缺 en 括号补充句 Hold and drag to repeat projections, then click again to paste
screen.anvilcraft.building_rod.traditional.hint 同上,缺「按住拖动重复投影,再次点击粘贴」
tooltip.anvilcraft.item.nature_amulet 多「羽毛」护符(en 仅 Silence/Cat/Dog/Armadillo;PermutationRecipeLoader.java:79 无 FEATHER)
tooltip.anvilcraft.item.sapphire_amulet or with a Breathing Helmet or Weatherproof Spacesuit Helmet 整段 + 漏 Resistance I
tooltip.anvilcraft.item.lens.shift 三行均截断(丢核心碎片矿/虚空石说明)
tooltip.anvilcraft.item.anvil_amulet 锻造砧天体引力」→ 官方译名「锻星砧」(先例 33:1)
tooltip.anvilcraft.item.ruby_amulet / topaz_amulet Strength I / Haste I
tooltip.anvilcraft.item.power_converter_small/middle/big 写死 1 / 6 / 36 kW(en 全族 %d,新增 _super_big/_extremely_big 是正确范例)
key.anvilcraft.building_rod_adjust_tool 同值「建筑杖:选择工具(滚轮)」(按键设置界面重复条目;建议 adjust→「调整参数」)
anvilcraft.configuration.overworld_sky_mode.tooltip 缺「含天平动与连续八天的月相周期」
anvilcraft.configuration.mun_lighting_quality.tooltip 缺「保留原版实体阴影」「主世界与移动的星星」

💡 非阻塞建议

  • item.anvilcraft.building_rod.deschold in either hand to build with +15 block reachlocal_terminalnearest 且多「动态」;optimizedMove→「位置」;hud_scale.tooltip「Hud」→「HUD」;building_rod.fluids「无限流体」vs .shift「可再生流体」(en 双侧 renewable);ionocraft_backpack.shift toggle→「取消」(建议「切换缓降」)。
  • 排版:equipment.recharge「每秒耗电100 kFE」、item.buffer_boots「最高可达4格高度」缺空格;structure_disk.size 用半角 x(本文件其他尺寸用「×」);structure_scanner.normalizedparts or flows 收窄为「流体」。
  • 死键(被本 diff 改动的 4 个在 en_us / en_ud 均无源):screen.anvilcraft.building_rod.left_clicktooltip.anvilcraft.equipment.breathing.rechargetooltip.anvilcraft.item.building_rod.shift → 与既有 306 个同类,建议 Weblate 侧清理废弃源串(孤儿 306 = base 306,本 PR 新引入 0,故仅 💡)。
  • 上游 en 新增但 zh 未译的 3 键:message.anvilcraft.building_rod.undo_partial…unsupported_typescreen.anvilcraft.building_rod.selection_size(base 缺 43 → head 缺 3,本 PR 已补 40)→ 非本 PR 引入,建议同步补译。
  • 记录中 storage_port_consolidator.shift 的「漏译整句」前提已失效:本轮 en 现值为 3 段、与 zh 逐段对应,从清单移出。

🟢 结构面全过 & 已闭环保持

JSON 合法 / 重复键 0 / 无 CR·制表符·行尾空白;占位符差异 4(在册 3 = power_converter_{small,middle,big};1 处为 tooltip.anvilcraft.fluid.amount%1$s / %2$s 等价写法,勿报);换行编码两侧同为单反斜杠 5c 6e(zh 314 / en 291,0x5c5c6e = 0);40 个新增键 en_us/en_ud 全部有源;分段候选 6 条逐条核对全为已登记非缺陷(storage_port.shift/storage_fluid_port.shift 行合并;missing_amplifier.line1/line3large_crate.2shulker_container.hyperdimension.2" " 占位)。
已闭环保持:structure_scanner.normalized 已译入、local_terminal 丢首字、ionocraft_backpack creative 吞词、range_overlap%1$s×%1$sglass_pipe 语病。

结论: COMMENT — 结构面与源一致性全过,本轮唯一改动是正向对齐;在册的语义/术语项仍未清零(均属 Weblate 侧后续修订,不阻塞本 PR 合并)。

标题: 现标题 Translations update from AnvilCraft Translate 符合本仓库历次 Weblate PR 约定,无需修改(gh auth status 报 token invalid,本次未自动改写)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator Author

💾 Self-improvement review: Patched references/diff-analysis-false-positives.md in skill 'weblate-pr-review' (1 replacement). · Patched references/lang-json-semantic-defect-forensics.md in skill 'weblate-pr-review' (1 replacement).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants