Skip to content

按平台正式写法补 zh-CN 翻译包(os i18n extract 生成),消除中文界面下的英文对象名与列头 #24

Description

@baozhoutao

背景

界面上对象名与部分字段名显示英文(Assessment Plan、Plan Name、Period Type、Status、Entry Sheet、Final Score 等),用户已选中文仍然如此。成因(2026-09-03 复核):应用元数据标签直接用中文书写,只随附一个 en 翻译包、没有 zh-CN 翻译包;平台运行时查标签走「zh-CN 包 → en 包 → 元数据原文」,zh-CN 包没有 kpi 对象词条,于是凡 en 包覆盖的标签一律英文。平台的 os i18n check 又把中文原文算作默认语言已覆盖,工具与运行时口径不一致,已上报 objectstack-ai/objectstack#14882 待裁定。

平台文档(objectstack-i18n skill)的正式写法是每个支持的语言各带一个翻译包,默认语言的包由 os i18n extract 从元数据标签生成。本单按正式写法整改,不等平台。

范围

  1. os i18n extract --locales=zh-CN --no-metadata-forms --out=src/translations 生成 zh-CN 包(dry-run 结果:1290 个词条,全部由元数据中文标签自动填充,不需要人工翻译),按平台生成文件的约定落在 src/translations/(生成文件名保留工具默认,如 zh-CN.objects.generated.ts)。
  2. src/translations/index.ts 注册 'zh-CN' 包;en 包原样保留。
  3. CLAUDE.md「项目约定」中「用户可见文案默认中文(对象/字段 label 直接中文;zh-CN 翻译包只补 en 回退)」一句改为正式写法:label 直接中文,zh-CN 包由 os i18n extract 生成并随元数据改动重新生成,en 包补英文回退。只改这一句。
  4. package.json 增加脚本 i18n:extract(生成命令)与在 verify 中加入 objectstack i18n extract --check(平台文档的新鲜度门禁,保证标签改了包也跟着改);若 --check 在本仓库不可用,如实记录并只加生成脚本。

不做

不改任何对象/字段的 label 文案;不改 en 包内容;不动 src/data/scripts/、README、docs/;不修改平台包。

验收标准

  1. curl -H "Accept-Language: zh-CN" /api/v1/meta/object/kpi_entry_sheet 返回 label = 填报单、fields.name = 填报单名称、fields.status = 状态、fields.total_score = 最终得分;/api/v1/meta/app/kpi_app 返回「KPI 考核管理」。
  2. Accept-Language: en 请求仍返回 Entry Sheet / Sheet / Status / Final Score(en 包不受影响)。
  3. 浏览器(中文)下:方案版本列表、填报单列表与详情、指标库详情的对象名、列头、相关列表标题全部中文;填报明细相关列表不再出现「指标 / Indicator」两列并存(应为「指标 / 指标名称」)。截图前后对比 ≥ 4 张。
  4. pnpm verify 绿;os i18n check 默认语言零错误;新增的新鲜度门禁通过。
  5. 生成文件只由工具产出,PR 中不得手改词条;评审能用 os i18n extract --check 或重跑生成对账。

测试计划草稿

T1 生成前后 diff 只含生成文件、index.ts、CLAUDE.md、package.json | T2 API zh-CN 标签断言(验收 1) | T3 API en 标签断言(验收 2) | T4 UI 四个页面截图对比 | T5 pnpm verify + i18n check + extract --check

依赖与风险

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions