Skip to content

zh-Hant: the generator writes 籤 (lottery slip) where Traditional uses 簽 (sign): 籤核, 會籤, 請求籤名, 中籤發 on landed pages #366

Closed

Description

@objectstack-fleet

Found by the #347 translation pass (batch 5, PR #365) and confirmed by the seat on main at 5fa5ff4.

What is wrong

apps/docs/scripts/gen-zh-hant.mjs converts zh-Hans to zh-Hant with OpenCC.Converter({ from: 'cn', to: 'twp' }). Simplified 签 maps to two Traditional characters, 簽 (sign, approve) and 籤 (lottery slip, tag). The twp phrase layer picks 籤 in places where every Taiwan reader expects 簽. There are two causes:

  1. Missing phrases. 签核 (sign off, approve) becomes 籤核, and 会签 (countersign) becomes 會籤.
  2. Wrong segmentation across a word boundary. 请求签名 is segmented as 请 + 求签 (draw a fortune lot) + 名, which gives 請求籤名. 中签发 is segmented as 中签 (win a lottery) + 发, which gives 中籤發 (here 中 is "in" and 签发 means "issue a key"). 上签发 does the same.

标签 → 標籤 (tag, tab) is correct and is not part of this finding.

Where it shows today (main, 5fa5ff4)

Page Wrong text Should read
use/approvals.zh-Hant.mdx lines 5, 13 and others 待籤核, 次籤核 簽核
build/automation/approvals.zh-Hant.mdx lines 4, 66, 82 人籤核, 會籤, 都籤核 簽核, 會簽
configure/webhooks.zh-Hant.mdx line 41 請求籤名 請求簽名
configure/mcp.zh-Hant.mdx lines 60, 85 中籤發, 上籤發 中簽發, 上簽發

Reproduce: grep -rnP '(中|上|求|都|次|待|人)籤|會籤' content/docs --include=*.zh-Hant.mdx. #365 adds more 籤核 on the automation pages.

Fix shape

  • Correct the conversion in the generator. Do not hand-edit the generated files: they carry the do-not-edit marker, and CI checks them byte for byte with gen-zh-hant.mjs --check.
  • Use a small override layer after the converter, for example an ordered list of exact [wrong, right] string pairs. It must cover 籤核→簽核, 會籤→會簽, 籤名→簽名 and 籤發→簽發, and it must leave 標籤 alone.
  • Keep the fence handling: the override runs only on the prose runs that the converter sees.
  • Regenerate the whole corpus in the same PR.
  • The header says the preset matches www.objectos.ai's src/lib/zhconvert.ts. That site likely has the same defect, so the PR names that file as a follow-up for its owner.

Acceptance

  • The grep above returns nothing on main.
  • 標籤 counts are unchanged.
  • gen-zh-hant.mjs --check passes.

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 3 · 2026-10-28T00:24Z
    Session: session_01QsR2jTaZ2GeyfjANMwstiw (seat thread; the dev is card thread session_01QsR2jRd8W1US76Cj78zAM8, identity by branch)
    Account: zhuangjianguo
    Branch: claude/project-thread-zpl8n0 (platform-assigned; a card thread can push only this branch)
    Worktree: the card thread's own docs.objectos.ai checkout
    Domain: domain:docs (single-lane repository)
    Seat: repo:docs.objectos.ai#1
    File surface: apps/docs/scripts/gen-zh-hant.mjs, plus the regenerated content/docs/**/*.zh-Hant.mdx and meta.zh-Hant.json, plus the three fixed zh-Hant pairs only if they change. No zh-Hans and no English. If the work goes beyond this surface, stop and explain why in the report.
    Container & model: S, mode:thread, model: default tier (TIER_DEFAULT — sister repository, hand-derived: no packages/spec, no protocol-semantic surface), effort: project default
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — generator defect, filed by this seat
    Thread-read: none
    Premise: confirmed. On main at 5fa5ff4, the grep in the card body finds 籤核, 會籤, 請求籤名, 中籤發 and 上籤發 in the generated zh-Hant. The generator is OpenCC.Converter({ from: 'cn', to: 'twp' }) at gen-zh-hant.mjs:117.
    Tier: none.
    Serial constraints cleared: the #347 translation pass also regenerates zh-Hant in each batch. After each merge of main, this card re-runs gen:zh-hant and does not resolve generated files by hand. The www.objectos.ai converter parity (src/lib/zhconvert.ts) is named in the PR as a follow-up for that site's owner and is not changed here.

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landing · 2026-10-28T00:45Z · session_01QsR2jTaZ2GeyfjANMwstiw · seat repo:docs.objectos.ai#1

    Reading Value
    PR #370 Merged through the merge queue as 7f4042d (squash), on head 8e81f99, the head the seat ACCEPTed (comment 6457442280)
    main CI run 40610342358 on 7f4042d build success · Deploy docs / Publish the tested Worker success, with "Assert a new version is serving" success · Deploy docs / Smoke-check the live site success · rollback and failure-card jobs skipped

    Closed by Fixes #366. Follow-up outside this repository: the PR body names www.objectos.ai src/lib/zhconvert.ts for that site's owner.

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions