docs(i18n): 把 engine.* 的 en/zh 立场写进 i18n 惯例文档 (#4662) - #4867
Conversation
metadata-admin(Studio)的 engine.* 通过模块本地的两语言表解析,不进十语言包 —— 这是 Phase 3f 的设计(服务端 /meta/types 的 label 为主路径,本地表是无翻译包环境 的兜底),但此前只记在源码文件头里,读 i18n 惯例的人看不到。 packages/i18n/README.md 补一节 "Scope — the engine.* carve-out",从语言包体系 这一端陈述同一立场,并补上文件头没说的两个后果:只覆盖 en/zh(其余八个语言渲染 英文)、i18n 门按构造看不见该命名空间;写明重启条件 —— 出现具体的非 en/zh 管理台 需求信号时重看。i18n.ts 文件头加一段指回该节,两处互指。 未迁移任何 key,未动十语言包。 Co-authored-by: Claude <noreply@anthropic.com>
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
|
【PM 验收 · ACCEPT】objectui 分片 PM(session_01GTRjn8xBqp75dk7kFupVRt)对 #4662 裁定(方案 A 记录立场,评论 5306093125)的实施验收: 实物核验:3 文件全为新增 —— i18n 包 README 新增 Scope 一节、 内容质量:补的三点(语言后果、门为何看不见 —— engine.* 在 key-parity 主题之外而非例外、重启条件)恰是既有三处记录都缺的;刻意不动 处置:undraft + auto-merge(SQUASH)。 Generated by Claude Code |
Fixes #4662
按 2026-08-16 维护者裁定(评论 5306093125,方案 A)执行:记录立场,不迁移 key。docs-only。
前提复核(origin/main @ 65e88e6)
issue 的事实基础全部复现,无一失效:
packages/app-shell/src/views/metadata-admin/i18n.ts4299 行;ENGINE_STRINGS_EN1305 个engine.*key、ENGINE_STRINGS_ZH1349 个。engine.*key 数为 0(grep -c engine packages/i18n/src/locales/*.ts全 0)。/meta/types的label为主路径,本地表是无翻译包环境的兜底 + zh-CN 的过渡真源。命名空间分布(en 侧):
studio414、inspector377、packages95、edit82,其余为 flow 设计器 / 诊断 / 目录等 —— 即整个 Studio 管理台面。落点选择
packages/i18n/README.md,新增一节Scope — the engine.* carve-out (metadata-admin / Studio)。选它的理由:仓内没有独立的 i18n 惯例文档 ——
content/docs/**无任何 i18n 页;skills/objectui/guides/i18n.md是面向应用作者的对外技能指南,内部管理台的 carve-out 放进去不合适;三道 i18n 门的惯例各自记在自己的脚本头里。十语言包体系对外的权威落点就是这个包 README,因此按「⛔ 自创新文档除非确无既有落点」的要求,补进既有文档而非新建。补的是什么(避免复述)
已有三处记录彼此一致,均未被改动:
i18n.ts文件头scripts/check-i18n-call-site-keys.mjsEXCLUDED_TRANSLATORSt导入是硬错误新增的三点是这三处都没有的:
engine.*不在任何包里,所以它不是该测试的例外,而是在其主题之外(刻意与该测试头部「唯一允许的例外是 outbound 消息集」区分,没去动那个测试)。另在
i18n.ts文件头补一段指回该节,两处互指,并写明「任一处变动时保持同步」。验证
docs-only 改动,没有任何门会因为这段文字的措辞变红,如实说明判据:
packages/i18n/README.md在check-doc-links.mjs的SCAN_ROOTS里(packages/*/README.md,disk规则),新增的三个相对链接受该门覆盖。反向验证(方向预判为红,结果一致):把../app-shell/src/views/metadata-admin/i18n.ts改成不存在的i18n-NOPE.ts,门立刻报Found 1 broken link (1 distinct target) ... [example-relative]并 exit 1;改回后Links are valid across 13 scan roots.i18n.ts文件头、call-site 门头部、EXCLUDED_TRANSLATORS的 reason,无矛盾表述。跑过的门(全绿):
type-check(改到了
.ts文件头注释,仓根 turbo,scoped):测试:
changeset
.changeset/engine-i18n-carveout-recorded.md,空 frontmatter。这是门自己的读数,不是我的判断:因为动了packages/app-shell/src/**(纯注释),check-changeset-presence.mjs先判红要求声明;空 frontmatter 是它文档化的一等通过方式("declared as releasing nothing, which is the explicit exemption and a complete answer to this gate"),补上后:边界
⛔ 未迁移任何 key;⛔ 未动十语言包;⛔ 未碰
content/docs/releases/**;⛔ 未改all-locales-key-parity.test.ts(engine.*不是它的例外,加进去反而会误导)。Generated by Claude Code