Skip to content

[codex] Replace machine-translated Simplified Chinese with human-reviewed product copy - #8923

Draft
ansonlotiniat wants to merge 1 commit into
stablyai:mainfrom
ansonlotiniat:codex/deep-simplified-chinese-localization
Draft

ansonlotiniat wants to merge 1 commit into
stablyai:mainfrom
ansonlotiniat:codex/deep-simplified-chinese-localization

Conversation

@ansonlotiniat

@ansonlotiniat ansonlotiniat commented Jul 16, 2026 •

Copy link
Copy Markdown

Summary

This PR replaces Orca's literal, inconsistent machine-translated Simplified Chinese with deeply reviewed, context-aware product copy.

Simplified Chinese (zh) is now the authoritative human-reviewed Chinese locale. The policy contains 2,260 context-specific full-key overrides, 246 approved full-value overrides, and 40 narrowly guarded phrase fixes. Each of the six locale catalogs contains 10,804 keys.

Problem and user impact

The previous Simplified Chinese catalog translated many labels and sentence fragments without enough product context. This produced awkward Chinese word order, inconsistent terminology, ambiguous one-word actions, mistranslated brands and technical concepts, and dynamic sentences that only composed correctly in English.

These issues affected core workflows including agents, terminals, repositories, worktrees, workspaces, source control, reviews, work items, settings, onboarding, collaboration, browser profiles, accessibility labels, and status messages. Chinese was technically available, but it often did not read like native product copy.

Root cause

  • Chinese followed a generic machine-translation bootstrap path instead of an enforced human-review policy.
  • Context-sensitive words could inherit broad replacements even when their meaning changed by screen.
  • English sentence fragments were localized independently despite requiring different Chinese grammar and word order.
  • Simplified and Traditional Chinese did not have a deterministic source relationship.
  • Reviewed Chinese copy could be overwritten by an unattended bootstrap run.

What changed

  • Human-reviewed Simplified Chinese in the complete UI context across core Orca workflows.
  • Standardized product terminology such as agent -> 智能体, terminal -> 终端, commit -> 提交, repository -> 仓库, review -> 评审, issue -> 议题, worktree -> 工作树, workspace -> 工作区, browser profile -> 浏览器配置文件, and tab -> 标签页.
  • Replaced ambiguous global substitutions with key-specific translations.
  • Added complete localization keys for dynamic sentences that cannot be assembled naturally from English fragments.
  • Preserved interpolation variables, brands, provider names, CLI commands, paths, URLs, protocol names, language names, and code literals.
  • Documented the terminology, review rules, maintenance workflow, and no-machine-translation policy.

Traditional Chinese

This PR adds zh-TW as a supported UI locale and generates it deterministically from reviewed Simplified Chinese with OpenCC's cn -> tw profile. Interpolation expressions are protected during conversion, and the committed Traditional Chinese catalog must exactly match generated output.

This is deterministic Simplified-to-Traditional conversion, not a separate Taiwan-specific copywriting pass.

Safeguards

  • Reject Simplified Chinese machine-translation bootstrap before reading source files or reaching a translation service.
  • Keep human full-key overrides authoritative instead of feeding them through generic machine-translation repairs.
  • Verify generated zh-TW freshness as part of catalog verification.
  • Enforce catalog parity, valid source keys, interpolation preservation, fallback safety, duplicate-key detection, and complete localized-copy boundaries.

Validation

  • Verified all six catalogs contain exactly 10,804 keys with zero parity errors.
  • Verified all 2,260 full-key overrides exist in English and preserve interpolation variables.
  • Verified zh-TW exactly matches deterministic generation from staged zh.
  • Passed 196 focused tests across all 35 test files changed by this PR.
  • Passed full repository typecheck and lint.
  • Passed localization catalog, localization coverage, and git diff --check validation.

X/Twitter: @ansonlotiniat

ELI5

Simplified Chinese UI text was often stiff machine translation. This replaces it with human-reviewed product copy so menus and messages read naturally.

@nwparker nwparker added the enhancement New feature or request label Jul 27, 2026
@nwparker

nwparker commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Thanks @ansonlotiniat — this is a serious piece of work and it deserves a straight answer rather than continuing to sit as a draft.

Two things put it out of reach as it stands:

  • It adds zh-TW as a supported UI locale, and we are not taking on new locales right now.
  • It is a wholesale replacement of the zh policy architecture — ~200 files, 2,260 key overrides, a new OpenCC dependency, and rewrites of verify-localization-catalog and the bootstrap path. It is also built against a 10,804-key catalog; main is at 12,002, so it is roughly 1,200 keys stale and reviewing it as one unit is not realistic.

Meanwhile #12368 has landed and closed most of the outright-untranslated zh gap.

The terminology standardization is the part I would most like to keep — 智能体 / 终端 / 仓库 / 评审 / 议题 / 工作树 / 工作区 are the right calls, and inconsistency there is a genuine live problem. If you are willing, a PR that lands only the glossary against current main — as zh entries in the existing override files, no new locale, no dependency, no verifier rewrite — is something I can actually review and merge, and it would carry most of the value here.

Closing the draft on that basis. Thank you for the depth of thought in it.

@nwparker nwparker closed this Aug 4, 2026
@nwparker

nwparker commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

@ansonlotiniat — I'm sorry, I closed this and that was the wrong call. Reopening it as a draft.

My reservations are unchanged and I'll restate them honestly: it adds zh-TW as a built-in locale, it's ~200 files with a new OpenCC dependency and rewrites of the bootstrap and verifier paths, and it's built against a 10,804-key catalog where main is now at 12,002. I still don't think it can land as one unit. But that's a reason to talk about how to land it, not a reason for me to close months of your work.

On zh-TW specifically: the direction we're working toward is plugin language packs, so a locale can be maintained by people who read it instead of becoming in-tree debt. The mechanism largely exists — manifest contributes.languagePacks: [{ locale, path }], a plain catalog JSON matching en.json's key shape, integrity verification and approval gating at install, and it appears in Settings → Appearance → Language. Your deterministic OpenCC cn → tw generation would work well as a pack build step. What's missing is the authoring tooling: no guide, no scaffolding, no re-sync path. That's the work ahead; I won't promise a date.

And the standing offer, which needs none of that: the zh glossary is the piece I most want. 智能体 / 终端 / 仓库 / 评审 / 议题 / 工作树 / 工作区 are the right calls and the inconsistency is a real live problem. A PR landing only those, as zh entries in the existing override files against current main — no new locale, no dependency, no verifier rewrite — is something I can review and merge, and it carries most of the value here.

Sorry again for closing it the way I did.

@ansonlotiniat

Copy link
Copy Markdown
Author

Thanks for the clear direction. I’ve split out the requested glossary-only follow-up as #15464, based on current main.

It is limited to the existing Simplified Chinese override/catalog architecture and contains no new locale, dependency, bootstrap/verifier rewrite, or zh-TW catalog. I’ll keep #8923 as the source-work record while the complete catalog and deterministic zh-TW generation move to the language-pack path.

This branch has not been deployed

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants