Repository navigation
i18n: 按平台正式写法补 zh-CN 翻译包,消除中文界面下的英文对象名与列头 - #25
Conversation
代码评审报告(os-project-dev-review)档位:轻量档(依据:工作项属纯新增——生成文件 + 注册两行 + 约定一句 + 两个 npm 脚本,路径唯一、低风险;调度员派发时按 dev-issue 低风险直接开工。diff 1422 行中 1364 行为工具产物,手写代码实际仅 14 行) 结论:可合并 通用质量(/code-review)无正确性缺陷。 内置
产出 2 条低危健壮性提示,均不影响当前正确性,列入 ⚪ 记录级。 专属核查(四条逐条)1 改动面越界:✅ 无越界
2 降级对账:✅ 清单相符(含一处自述偏差,核实属实且已获调度员放行)
无 TODO / FIXME / 被注释掉的校验 / 比需求少的分支。未发现静默降级。 3 三禁痕迹:✅ 无 4 硬拍板落地:✅
发现清单
复现命令(评审侧实跑,均在临时 clone 内)评审子 agent 零代码:本报告不含任何修复提交,未改标签、未改处理人、未合并。 |
界面英文的根因是缺 zh-CN 翻译包:元数据 label 本身是中文,但仓库只注册了 en 包;运行时按「zh-CN 包 → en 包 → 元数据原文」查标签,zh-CN 包不存在, 凡 en 包覆盖到的键一律落到英文。 按 objectstack-i18n 文档的正式写法整改,每个支持语言各一个包: - 新增 src/translations/zh-CN.objects.generated.ts —— 全部由 `pnpm i18n:extract`(os i18n extract)从元数据中文 label 生成,529 个 词条,零手改; - src/translations/index.ts 注册 'zh-CN' 包,en 包内容原样不动; - package.json 增加 i18n:extract 生成脚本与 i18n:extract:check 新鲜度 门禁,并把门禁并入 pnpm verify,保证元数据标签改了包会跟着改; - CLAUDE.md 项目约定中翻译包的那一句改为正式写法。 生成命令带 --no-objects-only:平台默认的 --objects-only 只产出 objects/globalActions 子树,不含 apps,而应用名「KPI 考核管理」正是被 en 包覆盖的键。带 --filter=kpi_ 把范围收在本应用自有的 objects/apps/ dashboards/pages 上——与不带 filter 的产物逐字节相同,只少了平台 Studio 的 metadataForms 英文基线(--no-metadata-forms 未能抑制它内联到单文件里, 那份基线属于平台包,不该由应用包分发)。 不改任何对象/字段 label 文案,不改 en 包,不动 src/data、scripts、docs。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
关联工作项 #24。
问题
中文界面下对象名与列头显示英文(Assessment Plan、Plan Name、Entry Sheet、Final Score…),用户已选中文仍然如此。
根因不是文案写错:元数据 label 本身就是中文,但仓库只注册了
en翻译包、没有zh-CN包。平台运行时按「zh-CN 包 → en 包 → 元数据原文」查标签,zh-CN 包不存在,凡 en 包覆盖到的键一律落到英文。改法
按平台文档(objectstack-i18n)的正式写法整改——每个支持的语言各带一个翻译包,默认语言的包由
os i18n extract从元数据标签生成:src/translations/zh-CN.objects.generated.tspnpm i18n:extract从元数据中文 label 生成,零人工翻译、零手改src/translations/index.ts'zh-CN'包;en包内容原样保留package.jsoni18n:extract(生成)与i18n:extract:check(新鲜度门禁);verify并入门禁,元数据标签改了包必须跟着改CLAUDE.md不改任何对象/字段 label 文案,不改 en 包内容,不动
src/data/、scripts/、docs/、README,不修改平台包。生成命令为何带
--no-objects-only --filter=kpi_--objects-only只产出objects/globalActions子树、不含apps,而验收要求应用名返回「KPI 考核管理」——应用名正是被 en 包覆盖的键。--no-objects-only后,工具即便同时传--no-metadata-forms,仍会把平台 Studio 的metadataForms英文基线(761 词条)内联进同一文件;那份基线按平台文档属于平台包、不该由应用包分发。--filter=kpi_把范围收在本应用自有的 objects/apps/dashboards/pages 上。metadataForms整块,其余四段逐字节相同。命令原样写进
package.json,评审可pnpm i18n:extract:check或重跑pnpm i18n:extract对账。验证
pnpm verify全绿(validate + typecheck + 90 个单测 + 新鲜度门禁);os i18n check默认语言 zh-CN 100.0%(1290/1290,missing 0);node scripts/e2e-flow.mjs73 PASS / 0 FAIL。API 断言(zh-CN):填报单 / 填报单名称 / 状态 / 最终得分 / KPI 考核管理 —— 逐字命中。
API 对照(en):Entry Sheet / Sheet / Status / Final Score / KPI Assessment —— 逐字未变。
UI 前后对比 6 组 12 张 + 英文对照 1 张,含「指标 / Indicator 两列并存 → 指标 / 指标名称」的点名项。
新鲜度门禁做过负向测试:人为改脏一个词条即报
out of date并以退出码 1 失败。📄 测试报告 · 需求符合度清单 · 截图归档
acceptance-evidence@8c584f20de742d6d6c35c5cb8b6be53aa38168d9🤖 Generated with Claude Code