Skip to content

docs(i18n): name the case views on the Chinese SLA page as the console labels them - #1617

Merged
os-steve merged 1 commit into
mainfrom
claude/issue-1609-sla-zh-hans-uses-pack-wording
Sep 6, 2026
Merged

docs(i18n): name the case views on the Chinese SLA page as the console labels them#1617
os-steve merged 1 commit into
mainfrom
claude/issue-1609-sla-zh-hans-uses-pack-wording

Conversation

@os-steve

@os-steve os-steve commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

Fixes #1609

Description

content/docs/service/sla-and-escalation.zh-Hans.mdx named every crm_case list view in English across 14 lines, while src/translations/zh-CN.ts ships a Chinese label for all eight and the console resolves a view's label through that pack. The sibling content/docs/service/cases.zh-Hans.mdx was already rewritten to the pack wording (PR #1548), so the two Chinese pages of the same section named the same eight views two different ways.

Thirteen lines convert. The fourteenth is a deliberate keep, explained below.

Type of Change

  • Documentation update

Related Issues

Fixes #1609. Executes AGENTS.md Documentation discipline rule 6 under the #1329 ruling as carried out by PR #1548.

#1552 is not addressed here and remains open: it asks the opposite condition (a view name the pack does not carry), and nothing in this PR answers it.

The three-surface question, derived

The card names three surfaces on this page. They do not move together. Measured on origin/main at a0362a37, which is this branch's base.

1. View names — CONVERTED.

The pack carries all eight, and the keys match src/views/case.view.ts one-for-one. Re-derived here rather than taken from the card:

view key (src/views/case.view.ts) English label zh-CN pack label (src/translations/zh-CN.ts:798-812)
all_cases All Cases 全部工单
case_workflow Service Workflow 服务流转
sla_calendar SLA Calendar SLA 日历
case_timeline Case Timeline 工单时间线
my_open_cases My Open Cases 我的待处理工单
unassigned_triage Unassigned — triage 未分派 — 待分诊
escalated_cases Escalated Cases 已升级工单
sla_at_risk ⏰ SLA at Risk ⏰ SLA 风险预警

The card's eight-row table reproduces exactly. The emoji is carried in the one place the English face carries it — the canonical eight-name enumeration on line 144 — and dropped in running prose, so the two faces stay line-for-line parallel.

2. Dashboard tile names — NOT converted, and "the pack lacks them" is NOT the reason.

The pack does carry them: sla_violationsSLA 违约, critical_cases紧急工单, sla_compliance_gaugeSLA 达成率, and the dashboard's own service_dashboard.label客户服务 (src/translations/zh-CN.ts:1595-1606). So a pack-carriage test alone would have converted them. Two measurements say not to:

  • Precedent, made with these exact entries already present. PR docs(i18n): name list views in Chinese docs the way the console labels them #1548's changeset states: "Names that are not views keep their spelling — the Critical Cases and SLA Violations metric tiles, the Escalated Cases Sharing sharing rule, and the phantom names the pages exist to debunk." Verified that this was informed, not an oversight: git show 392405f7:src/translations/zh-CN.ts already carried critical_cases: '紧急工单' and sla_violations: 'SLA 违约' at lines 1430/1432 when that exclusion was written.
  • A guard enforces it. test/docs-dashboard-tiles.test.ts reads this page and requires every **Name** 磁贴 reference to resolve to a widget title in src/dashboards/** — and those titles are English in every locale by design. Ablation run on this branch, at 9c640819: converting the three **SLA Violations** references to **SLA 违约** turns the file red with "prose points at a 'SLA 违约' tile, which no dashboard ships", plus a second failure on the #949 rule that keeps the two Chinese scripts reading the same tile references. Restore verified byte-for-byte (git diff HEAD empty; blob hash back to c5786ccb).

Converting tiles would also have reopened the very cross-page disagreement this PR closes — the sibling cases.zh-Hans.mdx:185 names both tiles in English.

3. Report names — NOT converted, because there is nothing to take.

No locale file declares a reports surface at all: grep -c '^ reports: {' is 0 in each of en.ts, zh-CN.ts, es-ES.ts, ja-JP.ts. So sla_performance (label SLA Performance Report) and cases_opened_by_day_priority have no pack wording. The page's existing Chinese report names (SLA 表现, 按优先级 × 天的建单量) are coined, not pack-derived — which is the #1552 condition, not this one. Left exactly as they were.

A fourth surface worth naming, since it is on the page and the card did not list it: dataset measure names. SLA Compliance Rate on line 55 does have a pack wording (case_metrics.measures.sla_compliance_rateSLA 达标率). Left in English — it is the semantic layer, which AGENTS.md rule 5 puts on the non-documentable side of its boundary, and it is outside the executed scope of #1548 for the same reason tiles are.

Changes Made

  • 13 lines of content/docs/service/sla-and-escalation.zh-Hans.mdx rewritten to the zh-CN pack wording for the eight crm_case views.
  • Line 123 deliberately unchanged: Escalated Cases Sharing and Escalated Cases — Service Director are sharing rule names, not views, and docs(i18n): name list views in Chinese docs the way the console labels them #1548 kept them in English explicitly.
  • Breached SLA and the phantom-Critical Cases mentions on lines 144 and 156 unchanged — those are the names the page exists to debunk.
  • Changeset added.

Untouched, per the ruling: the .zh-Hant.mdx face (a Traditional page labels platform navigation in English on purpose, because the console falls back to Simplified), the English .mdx face, all of src/, all of test/.

Line budget

13 insertions(+), 13 deletions(-) in one page, net 0; plus a 45-line changeset. Measured page counts before → after: lines carrying an English view name 14 → 1 (the sharing-rule line), lines carrying a pack wording 0 → 13.

Site-absolute links preserved: five /zh-Hans/-prefixed links before and after, zero unprefixed /docs/ links. This is the class PR #1599 fixed and none were disturbed.

Testing

Full pnpm verify chain, run on this branch at 9c640819, each step's exit code captured before any pipe:

gate exit evidence printed by the gate
pnpm validate 0 pre-existing warnings only, unchanged
pnpm typecheck 0 clean
pnpm lint 0 17 warning(s), 12 suggestion(s) — pre-existing
pnpm lint:i18n-gate 0 ✓ i18n lint gate: 0 i18n/missing-* issues
pnpm hygiene 0 ✓ source hygiene clean
pnpm hygiene:tokens 0 ✓ source token ratchet clean
pnpm build 0 Artifact: dist/objectstack.json
pnpm test 0 Test Files 160 passed (160), Tests 3394 passed, 1 skipped

What pnpm lint:i18n-gate establishes about this diff, precisely: nothing about the wordings. scripts/check-lint-i18n-gate.mjs runs objectstack lint --json and counts findings whose rule starts with i18n/missing-. That walks authored metadata under src/; it never opens content/docs. Its green means this diff introduced no missing-translation finding — trivially true, since the diff touches no metadata and no translation file. It is not evidence that the Chinese strings on the page are the right ones. The evidence for that is the derivation above, read out of src/translations/zh-CN.ts and src/views/case.view.ts.

What does cover the edit: test/docs-dashboard-tiles.test.ts (green, and shown above to be capable of failing on this exact page), test/docs-anchor-links.test.ts, test/docs-object-term-consistency.test.ts and test/docs-role-hierarchy.test.ts, all of which read this file. test/docs-view-rosters.test.ts does not reach it — that rule keys on a ## 标准列表视图 roster heading, which this page does not have. That gap is the card's own observation and is unchanged by this PR.

  • Unit tests pass
  • Linting passes
  • Build succeeds
  • New tests added — not applicable: the file surface for this card is the page plus .changeset/ only, so test/** was out of bounds.

Checklist

  • I have added a changeset
  • I have performed a self-review of my own code
  • My changes generate no new warnings
  • New and existing unit tests pass locally with my changes

Additional Notes

Draft on purpose: not marked ready, not enqueued, no auto-merge.

One channel deviation to declare: the repo-scoped REST read used for the issue body and comments works, but GET /search/issues returns 403 from this container, so the duplicate check before filing a follow-up finding was made with a single targeted MCP search_issues call instead. Total MCP GitHub calls for this run are reported on the issue.


Generated by Claude Code

…e labels them

content/docs/service/sla-and-escalation.zh-Hans.mdx named every crm_case list
view in English across 14 lines, while src/translations/zh-CN.ts ships a Chinese
label for all eight and the console resolves a view's label through that pack.
The sibling content/docs/service/cases.zh-Hans.mdx already uses the pack
wording, so the two Chinese pages of the same section named the same eight views
two different ways.

Thirteen lines convert. Only view names move: the pack carries all eight, keyed
by the view keys src/views/case.view.ts registers.

Dashboard tile names keep their spelling. The pack does carry SLA Violations,
Critical Cases and the Customer Service dashboard title, but the change that
executed this rule was made with those same pack entries already present and
deliberately left tiles in English, and the sibling page names them in English
too. Converting them here would reopen the cross-page disagreement this closes.

Report names keep theirs because there is nothing to take: no locale file
declares a reports surface, so SLA Performance Report has no pack wording.

Sharing-rule names (Escalated Cases Sharing, Escalated Cases - Service
Director) and the phantom names the page exists to debunk (Breached SLA) are
unchanged. The zh-Hant and English faces are untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018xtjdpZFjgWh4Ad9Wcx68J
@vercel

vercel Bot commented Sep 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hotcrm Ignored Ignored Sep 6, 2026 12:14am UTC

Request Review

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

Labels

None yet

Projects

None yet

2 participants