i18n(zh-TW): complete Traditional Chinese (Taiwan) translation overhaul - #8024
Merged
diegosouzapw merged 2 commits intoJul 22, 2026
Merged
diegosouzapw merged 2 commits into
diegosouzapw merged 2 commits into
Conversation
Contributor
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Owner
|
Thanks for the deep dive on zh-TW — I verified the terminology pass locally: 提供商→提供者 is now 100% consistent (0 leftover instances vs 475 on the current tip), and the doc translations (26/26 vs the previous 3/26) render cleanly. Two things before this can merge:
Great work on the Taiwan-specific terminology pass. |
- UI messages: 100% coverage (was ~78%). Translated 2871 missing keys, eliminated all 420 __MISSING__ placeholders. 0 remaining. - Terminology: 提供商→提供者 (493 fixes), 令牌→權杖 (88 fixes), 激活→啟用 (1 fix), 配置→設定 (13 context-aware fixes) in UI messages - CLI locale: same terminology pass (69 fixes) - Docs: translated all 26 zh-TW docs (was 3/26). USER_GUIDE, ARCHITECTURE, API_REFERENCE, ENVIRONMENT and 20 more now in Traditional Chinese. - Preserved variable placeholders, ICU plurals, markdown, code blocks
lunkerchen
force-pushed
the
fix/zh-TW-i18n-quality
branch
from
July 21, 2026 21:27
f92fd14 to
69fa171
Compare
Contributor
Author
|
Rebased onto latest
Verification: 0 |
nguyenha935
added a commit
to nguyenha935/OmniRoute
that referenced
this pull request
Jul 22, 2026
Complete the translation catalogs for the 40 locales covered by this PR and rebase them onto the current release/v3.8.49 tip. Translate the 9 Kimi sponsor and preset keys introduced by diegosouzapw#8039. Leave en.json, vi.json, and zh-TW.json untouched so diegosouzapw#8024 remains authoritative for Traditional Chinese. The UI-key coverage gate reports 100% for all 40 touched locales with no missing keys or placeholders.
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
diegosouzapw
added a commit
to nguyenha935/OmniRoute
that referenced
this pull request
Jul 22, 2026
Complete the translation catalogs for the 40 locales covered by this PR and rebase them onto the current release/v3.8.49 tip. Translate the 9 Kimi sponsor and preset keys introduced by diegosouzapw#8039. Leave en.json, vi.json, and zh-TW.json untouched so diegosouzapw#8024 remains authoritative for Traditional Chinese. The UI-key coverage gate reports 100% for all 40 touched locales with no missing keys or placeholders. Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
diegosouzapw
added a commit
that referenced
this pull request
Jul 22, 2026
Complete the translation catalogs for the 40 locales covered by this PR and rebase them onto the current release/v3.8.49 tip. Translate the 9 Kimi sponsor and preset keys introduced by #8039. Leave en.json, vi.json, and zh-TW.json untouched so #8024 remains authoritative for Traditional Chinese. The UI-key coverage gate reports 100% for all 40 touched locales with no missing keys or placeholders. Co-authored-by: nguyenha935 <208228297+nguyenha935@users.noreply.github.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
This was referenced Jul 22, 2026
diegosouzapw
added a commit
that referenced
this pull request
Jul 22, 2026
…ass (#8038) (#8166) One-shot 提供商->提供者 normalization across src/i18n/messages/zh-CN.json (679 substitutions) and bin/cli/locales/zh-CN.json (54), mirroring #8024's zh-TW pass. Adds a versioned terminology glossary (scripts/i18n/glossary/zh-CN.json), a protected-names list (scripts/i18n/glossary/protected-terms.json), and a pure-function consistency check (scripts/i18n/check-glossary-consistency.mjs, npm run i18n:check-glossary) wired into CI as the i18n-glossary-zhcn job. zh-CN added to the visual-QA harness default locales. Complements the existing parity (check-ui-keys-coverage.mjs) and ICU (validate_translation.py) gates without replacing them.
This was referenced Jul 23, 2026
Merged
diegosouzapw
added a commit
that referenced
this pull request
Jul 24, 2026
…e for zh-TW repro test (#8387) Root cause (two independent causes): 1. PR #8219 (commit 2a865aa) added CacheSettingsTab.tsx with 12 t("settings.*") calls whose keys were never created anywhere, not even in en.json (the source of truth). The same PR added only 3 sidebar/header keys (settingsCache, settingsCacheSubtitle, settingsCacheDescription) to en+es, without running `npm run i18n:sync-ui` to propagate to the other 41 locales. 2. tests/unit/i18n-missing-placeholder-fallback.test.ts had a "#7258 repro" test asserting the real zh-TW.json still carried raw __MISSING__: placeholders — a premise invalidated by #8024, which completed the Traditional Chinese translation to 100%. What changed: - Added the 12 missing settings.* keys to en.json, mirroring the sibling requestBodyLimit* family (placeholders {min}/{max}/{value} match the component exactly). - Added real, natural translations for all 15 CacheSettingsTab-related keys (12 settings.* + 3 sidebar/header) to pt-BR.json, vi.json and es.json (es already had the 3 sidebar/header keys). - Ran `npm run i18n:sync-ui` (official tool, no locale hand-edited) to stub the remaining 39 locales with __MISSING__:<english>. This also discovered 17 pre-existing unrelated missing keys (compression-exclusions settings, 8 new-provider onboarding descriptions) never synced since #8031, and pruned 3 dead orphaned zh-TW-only keys (codexSessionAffinity{Title,Desc, Ttl}, superseded by the generic sessionAffinity* keys since #7274, confirmed unused anywhere in src/) — verified programmatically as +32/-0/~0 changed per stub locale, +32/-3/~0 changed for zh-TW. - Rewrote the "#7258 repro" test to use a synthetic fixture (same style as the sibling deepMergeFallback fixtures in the same file) instead of depending on zh-TW.json's real, evolving translation-completeness state. Proves the same behavior: collectPlaceholderLeaves() detects a raw __MISSING__: leaf before deepMergeFallback (the fix) is exercised. Validation: all 4 previously-red files green (23/23 assertions). Broader sweep of 271 i18n-adjacent unit tests unaffected. i18n:check-ui-coverage (42/42 locales >=80%, 99.7-100%) and i18n:check-glossary both pass. typecheck:core clean. Refs #8219 Refs #8024
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
…ul (diegosouzapw#8024) - UI messages: 100% coverage (was ~78%). Translated 2871 missing keys, eliminated all 420 __MISSING__ placeholders. 0 remaining. - Terminology: 提供商→提供者 (493 fixes), 令牌→權杖 (88 fixes), 激活→啟用 (1 fix), 配置→設定 (13 context-aware fixes) in UI messages - CLI locale: same terminology pass (69 fixes) - Docs: translated all 26 zh-TW docs (was 3/26). USER_GUIDE, ARCHITECTURE, API_REFERENCE, ENVIRONMENT and 20 more now in Traditional Chinese. - Preserved variable placeholders, ICU plurals, markdown, code blocks Co-authored-by: lunkerchen <lunkerchen@users.noreply.github.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
Complete the translation catalogs for the 40 locales covered by this PR and rebase them onto the current release/v3.8.49 tip. Translate the 9 Kimi sponsor and preset keys introduced by diegosouzapw#8039. Leave en.json, vi.json, and zh-TW.json untouched so diegosouzapw#8024 remains authoritative for Traditional Chinese. The UI-key coverage gate reports 100% for all 40 touched locales with no missing keys or placeholders. Co-authored-by: nguyenha935 <208228297+nguyenha935@users.noreply.github.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
…ass (diegosouzapw#8038) (diegosouzapw#8166) One-shot 提供商->提供者 normalization across src/i18n/messages/zh-CN.json (679 substitutions) and bin/cli/locales/zh-CN.json (54), mirroring diegosouzapw#8024's zh-TW pass. Adds a versioned terminology glossary (scripts/i18n/glossary/zh-CN.json), a protected-names list (scripts/i18n/glossary/protected-terms.json), and a pure-function consistency check (scripts/i18n/check-glossary-consistency.mjs, npm run i18n:check-glossary) wired into CI as the i18n-glossary-zhcn job. zh-CN added to the visual-QA harness default locales. Complements the existing parity (check-ui-keys-coverage.mjs) and ICU (validate_translation.py) gates without replacing them.
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
…hetic fixture for zh-TW repro test (diegosouzapw#8387) Root cause (two independent causes): 1. PR diegosouzapw#8219 (commit 9dbca94) added CacheSettingsTab.tsx with 12 t("settings.*") calls whose keys were never created anywhere, not even in en.json (the source of truth). The same PR added only 3 sidebar/header keys (settingsCache, settingsCacheSubtitle, settingsCacheDescription) to en+es, without running `npm run i18n:sync-ui` to propagate to the other 41 locales. 2. tests/unit/i18n-missing-placeholder-fallback.test.ts had a "diegosouzapw#7258 repro" test asserting the real zh-TW.json still carried raw __MISSING__: placeholders — a premise invalidated by diegosouzapw#8024, which completed the Traditional Chinese translation to 100%. What changed: - Added the 12 missing settings.* keys to en.json, mirroring the sibling requestBodyLimit* family (placeholders {min}/{max}/{value} match the component exactly). - Added real, natural translations for all 15 CacheSettingsTab-related keys (12 settings.* + 3 sidebar/header) to pt-BR.json, vi.json and es.json (es already had the 3 sidebar/header keys). - Ran `npm run i18n:sync-ui` (official tool, no locale hand-edited) to stub the remaining 39 locales with __MISSING__:<english>. This also discovered 17 pre-existing unrelated missing keys (compression-exclusions settings, 8 new-provider onboarding descriptions) never synced since diegosouzapw#8031, and pruned 3 dead orphaned zh-TW-only keys (codexSessionAffinity{Title,Desc, Ttl}, superseded by the generic sessionAffinity* keys since diegosouzapw#7274, confirmed unused anywhere in src/) — verified programmatically as +32/-0/~0 changed per stub locale, +32/-3/~0 changed for zh-TW. - Rewrote the "diegosouzapw#7258 repro" test to use a synthetic fixture (same style as the sibling deepMergeFallback fixtures in the same file) instead of depending on zh-TW.json's real, evolving translation-completeness state. Proves the same behavior: collectPlaceholderLeaves() detects a raw __MISSING__: leaf before deepMergeFallback (the fix) is exercised. Validation: all 4 previously-red files green (23/23 assertions). Broader sweep of 271 i18n-adjacent unit tests unaffected. i18n:check-ui-coverage (42/42 locales >=80%, 99.7-100%) and i18n:check-glossary both pass. typecheck:core clean. Refs diegosouzapw#8219 Refs diegosouzapw#8024
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…ul (diegosouzapw#8024) - UI messages: 100% coverage (was ~78%). Translated 2871 missing keys, eliminated all 420 __MISSING__ placeholders. 0 remaining. - Terminology: 提供商→提供者 (493 fixes), 令牌→權杖 (88 fixes), 激活→啟用 (1 fix), 配置→設定 (13 context-aware fixes) in UI messages - CLI locale: same terminology pass (69 fixes) - Docs: translated all 26 zh-TW docs (was 3/26). USER_GUIDE, ARCHITECTURE, API_REFERENCE, ENVIRONMENT and 20 more now in Traditional Chinese. - Preserved variable placeholders, ICU plurals, markdown, code blocks Co-authored-by: lunkerchen <lunkerchen@users.noreply.github.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
Complete the translation catalogs for the 40 locales covered by this PR and rebase them onto the current release/v3.8.49 tip. Translate the 9 Kimi sponsor and preset keys introduced by diegosouzapw#8039. Leave en.json, vi.json, and zh-TW.json untouched so diegosouzapw#8024 remains authoritative for Traditional Chinese. The UI-key coverage gate reports 100% for all 40 touched locales with no missing keys or placeholders. Co-authored-by: nguyenha935 <208228297+nguyenha935@users.noreply.github.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…ass (diegosouzapw#8038) (diegosouzapw#8166) One-shot 提供商->提供者 normalization across src/i18n/messages/zh-CN.json (679 substitutions) and bin/cli/locales/zh-CN.json (54), mirroring diegosouzapw#8024's zh-TW pass. Adds a versioned terminology glossary (scripts/i18n/glossary/zh-CN.json), a protected-names list (scripts/i18n/glossary/protected-terms.json), and a pure-function consistency check (scripts/i18n/check-glossary-consistency.mjs, npm run i18n:check-glossary) wired into CI as the i18n-glossary-zhcn job. zh-CN added to the visual-QA harness default locales. Complements the existing parity (check-ui-keys-coverage.mjs) and ICU (validate_translation.py) gates without replacing them.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…hetic fixture for zh-TW repro test (diegosouzapw#8387) Root cause (two independent causes): 1. PR diegosouzapw#8219 (commit fc74f4e) added CacheSettingsTab.tsx with 12 t("settings.*") calls whose keys were never created anywhere, not even in en.json (the source of truth). The same PR added only 3 sidebar/header keys (settingsCache, settingsCacheSubtitle, settingsCacheDescription) to en+es, without running `npm run i18n:sync-ui` to propagate to the other 41 locales. 2. tests/unit/i18n-missing-placeholder-fallback.test.ts had a "diegosouzapw#7258 repro" test asserting the real zh-TW.json still carried raw __MISSING__: placeholders — a premise invalidated by diegosouzapw#8024, which completed the Traditional Chinese translation to 100%. What changed: - Added the 12 missing settings.* keys to en.json, mirroring the sibling requestBodyLimit* family (placeholders {min}/{max}/{value} match the component exactly). - Added real, natural translations for all 15 CacheSettingsTab-related keys (12 settings.* + 3 sidebar/header) to pt-BR.json, vi.json and es.json (es already had the 3 sidebar/header keys). - Ran `npm run i18n:sync-ui` (official tool, no locale hand-edited) to stub the remaining 39 locales with __MISSING__:<english>. This also discovered 17 pre-existing unrelated missing keys (compression-exclusions settings, 8 new-provider onboarding descriptions) never synced since diegosouzapw#8031, and pruned 3 dead orphaned zh-TW-only keys (codexSessionAffinity{Title,Desc, Ttl}, superseded by the generic sessionAffinity* keys since diegosouzapw#7274, confirmed unused anywhere in src/) — verified programmatically as +32/-0/~0 changed per stub locale, +32/-3/~0 changed for zh-TW. - Rewrote the "diegosouzapw#7258 repro" test to use a synthetic fixture (same style as the sibling deepMergeFallback fixtures in the same file) instead of depending on zh-TW.json's real, evolving translation-completeness state. Proves the same behavior: collectPlaceholderLeaves() detects a raw __MISSING__: leaf before deepMergeFallback (the fix) is exercised. Validation: all 4 previously-red files green (23/23 assertions). Broader sweep of 271 i18n-adjacent unit tests unaffected. i18n:check-ui-coverage (42/42 locales >=80%, 99.7-100%) and i18n:check-glossary both pass. typecheck:core clean. Refs diegosouzapw#8219 Refs diegosouzapw#8024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete overhaul of Traditional Chinese (繁體中文/zh-TW) localization for OmniRoute v3.8.49.
Changes
UI Messages (
src/i18n/messages/zh-TW.json)__MISSING__sentinels — no more English text leaking into the UICLI Locale (
bin/cli/locales/zh-TW.json)Documentation (
docs/i18n/zh-TW/)Translation Quality Guidelines Applied