Skip to content

fix(i18n): review the 64 non-pt-BR dashboard catalogs for translation quality - #14078

Merged
diegosouzapw merged 3 commits into
release/v3.8.51from
fix/i18n-review-all-locales
Sep 18, 2026
Merged

diegosouzapw merged 3 commits into
release/v3.8.51from
fix/i18n-review-all-locales

Conversation

@diegosouzapw

@diegosouzapw diegosouzapw commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

Summary

Third of the three final i18n adjustments (_tasks/superpowers/plans/2026-09-16-i18n-completion.md, addendum 2026-09-17): the quality review that pt-BR received in #13885 applied to the 64 other dashboard catalogs. scripts/i18n/review-locale.mjs compares every leaf changed since the locale's last translation commit against its English source and asks the translation backend (LAN OmniRoute, codex/gpt-5.6-sol-low) for a corrected value where meaning, placeholders, register or product terminology are off.

Metric Value
Locales reviewed 64 (all except en, pt-BR)
Leaves reviewed 41 pre-expansion locales: only leaves changed by the retranslation (#13782); the 24 locales added in 2026-09 (#13044 / #13660 / #13727): every leaf, 13,133 each
Corrections applied 75,263
Reverted afterwards 1,677 — the "correction" replaced a real translation with the plain English term (Host, Proxy, Endpoints, Webhooks, Error, …); the real-translation ratio gate counts those as untranslated and ha/ig/my/phi went red, so the pre-review value was restored for that class in every locale
Net 73,586 corrections
Wall clock 15 h 35 with 6 workers (12:23 → 03:58)
Reports _artifacts/i18n-review/<code>.md per locale (key / en / before / after), not committed

review-locale.mjs hardening (found by the run, each with a unit test)

  • Per-batch retries with backoff (withRetries, 4 attempts, 2/10/30 s); a batch that still fails is skipped and listed in _artifacts/i18n-review/<code>.skipped.json instead of killing the run through main().catch. Before: one upstream hiccup lost the whole run (Amharic: 2 h 42).
  • Checkpoints: the catalog is written every 25 batches, not only at the end.
  • Dotted leaf keys: 36 leaves of en.json carry a dot in their own key (compliance.eventTypes["apiKey.ban"]); the flattened id was descended naively and the review crashed with Cannot set properties of undefined (setting 'ban') after two hours (Hausa ×3, Greek, Estonian). setDeep now prefers the longest existing key at each level.

Base merge note

Merging release/v3.8.51 (49 commits) into the branch conflicted on 24 catalogs; resolved with a 3-way key merge (base / review / tip): 931 leaves new on the tip taken as is, 63,420 review corrections kept, 12 leaves changed on both sides resolved in favour of the tip. The tip itself is red on i18n:check-keys: #13670 (allowAutoCombos, merged 2026-09-17 21:53 UTC) added 14 settings.* keys to en.json and to no other catalog, so 64 locales miss them. This PR adds and translates those 14 × 64 leaves (sync-ui-keys --translate-markers) so the gate is green again after merge.

Validation

Check Result
npm run i18n:check-ratio OK — 65 locales within baseline (+0.5)
npm run i18n:check-keys OK — 65 locales carry all 13,133 keys, none extra
i18n:check-glossary zh-CN / zh-TW / ko PASS (provider term normalised after the run)
i18n-placeholder-parity, feature-flag-description-icu-parse-12505, dashboard-localization-contract, server-owned-tool-loop-flag, i18n-home-recent-requests-topology-legend, i18n-cli-namespaces, i18n-key-completeness, i18n-review-locale 66/66
prettier on the 64 catalogs clean

No production code touched (src/i18n/messages/**, scripts/i18n/review-locale.mjs, its test, changelog fragment).

⚠️ base-red inherited: #14004 (env-doc-sync, xKiro). All 7 reds of the CI run reproduce on the pure base tip 1603c86e in a detached worktree outside this branch, in files this PR does not touch: Docs Gates = the #14004 env/doc contract; check-api-typecheck (codex-responses-ws/route.ts TS2339 7→12, glmResetCards.ts TS2322 0→1, src/sse/handlers/chat.ts TS2345 0→1); the file-size fast gate (tests/unit/chatcore-translation-paths.test.ts 3448 lines on the tip > frozen 3447); and 24 unit test files (body-timeout-integration, chat-managed-lease-routing, chat-route-coverage, chatcore-translation-paths, check-env-doc-sync, compression/{body-adapter,pipeline-integration,rtk-code-stripper,rtk-engine,strategySelector}, error-public-boundaries-hardening, g13-combo-chatcore-golden, gen-budget-card-svg, hard-session-lease-bypass-inventory, issue-7793-env-doc-sync-repro, lib/rate-limit-maxwaitms-disable-execution, provider-limits-local-apikey-sync-spacing, provider-translate-path-golden, providers-constants-split, responses-active-stream-custom-tool, sse-stream-buffer-bytes, stream-markdown-token-boundary, streaming-reasoning-dedup-5786, webpack-create-require-warning), each failing on the tip with the same test names.

… quality

Runs scripts/i18n/review-locale.mjs over every locale except pt-BR (done in
#13885): 75,263 corrections applied against the English source, 1,677 of
them reverted because the "correction" replaced a real translation with the
plain English term (the real-translation ratio gate counts those as
untranslated). zh-CN/zh-TW provider term normalised after the run.

review-locale.mjs hardening found by the run: per-batch retries with backoff
(a skipped batch is listed, not fatal), catalog checkpoint every 25 batches,
and setDeep resolving leaf keys that contain a dot.
…eview-all-locales

# Conflicts:
#	src/i18n/messages/am.json
#	src/i18n/messages/el.json
#	src/i18n/messages/et.json
#	src/i18n/messages/ga.json
#	src/i18n/messages/ha.json
#	src/i18n/messages/hr.json
#	src/i18n/messages/hy.json
#	src/i18n/messages/ig.json
#	src/i18n/messages/ka.json
#	src/i18n/messages/km.json
#	src/i18n/messages/lt.json
#	src/i18n/messages/lv.json
#	src/i18n/messages/ml.json
#	src/i18n/messages/mt.json
#	src/i18n/messages/ne.json
#	src/i18n/messages/or.json
#	src/i18n/messages/pa.json
#	src/i18n/messages/si.json
#	src/i18n/messages/sl.json
#	src/i18n/messages/sr.json
#	src/i18n/messages/sw.json
#	src/i18n/messages/ur.json
#	src/i18n/messages/uz.json
#	src/i18n/messages/yo.json
@diegosouzapw
diegosouzapw merged commit b45e0a4 into release/v3.8.51 Sep 18, 2026
14 of 21 checks passed
@diegosouzapw
diegosouzapw deleted the fix/i18n-review-all-locales branch September 18, 2026 10:10
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
… quality (diegosouzapw#14078)

* fix(i18n): review-locale reviews every leaf of a catalog that did not exist at --since

* fix(i18n): review the 64 non-pt-BR dashboard catalogs for translation quality

Runs scripts/i18n/review-locale.mjs over every locale except pt-BR (done in
diegosouzapw#13885): 75,263 corrections applied against the English source, 1,677 of
them reverted because the "correction" replaced a real translation with the
plain English term (the real-translation ratio gate counts those as
untranslated). zh-CN/zh-TW provider term normalised after the run.

review-locale.mjs hardening found by the run: per-batch retries with backoff
(a skipped batch is listed, not fatal), catalog checkpoint every 25 batches,
and setDeep resolving leaf keys that contain a dot.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant