feat(i18n): refresh all native locale artifacts#97113
Conversation
|
Codex review: needs changes before merge. Reviewed July 1, 2026, 8:57 AM ET / 12:57 UTC. Summary PR surface: Source +42, Tests +168, Config +121, Other +209. Total +540 across 6 files. Reproducibility: not applicable. for the requested feature: this is new maintainer native i18n automation rather than a reported current-main bug. The patch defect is reproducible from CI: checks-node-compact-small-whole-2 fails the top-level temp-dir helper routing guard after the new test import. Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Land the native refresh workflow only after the test-routing guard is repaired and maintainers explicitly accept the guarded contents-write artifact refresh model. Do we have a high-confidence way to reproduce the issue? Not applicable for the requested feature: this is new maintainer native i18n automation rather than a reported current-main bug. The patch defect is reproducible from CI: checks-node-compact-small-whole-2 fails the top-level temp-dir helper routing guard after the new test import. Is this the best way to solve the issue? No, not merge-ready as-is. Reusing the Control UI translation path is a reasonable owner-boundary shape, but the PR needs the test-routing repair plus maintainer acceptance of the contents-write workflow before it is the best merge path. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 5e4d71686a6a. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +42, Tests +168, Config +121, Other +209. Total +540 across 6 files. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
a4df614 to
ab24f11
Compare
b5f5005 to
1db1647
Compare
ab24f11 to
1545198
Compare
1db1647 to
f29aade
Compare
f29aade to
99b9d20
Compare
182a399 to
f7b80e1
Compare
f7b80e1 to
d425288
Compare
d425288 to
c643026
Compare
c643026 to
b2296f6
Compare
29ef192 to
1ec0ae5
Compare
|
Land-ready proof for
Earlier CI attempts exposed one transient gateway startup timeout and a stale shared-temp-dir routing expectation. The timeout cleared on rerun; the routing expectation and its native sibling are fixed in this stack. |
|
Merged via rebase.
|
What Problem This Solves
Native app locale work needs the same provider-backed translation process as Control UI, not a separate manual path or a Russian/Hindi-only workflow.
Why This Change Was Made
Reuse the existing translation client, provider/model environment, glossary prompt, batching, retries, and authenticated CI commit/rebase loop for the complete 21-locale native matrix. The workflow refreshes deterministic translation-memory artifacts under
apps/.i18n/nativewhenever Android or Apple source changes and correctly commits first-run artifacts.Argument validation happens before writes, placeholder signatures preserve counts while allowing grammatical reordering, and Swedish uses the same protected-brand glossary process as the other locales.
User Impact
Native inventory changes are translated through the Control UI process for Simplified Chinese, Traditional Chinese, Brazilian Portuguese, German, Spanish, Japanese, Korean, French, Hindi, Arabic, Italian, Turkish, Ukrainian, Indonesian, Polish, Thai, Vietnamese, Dutch, Persian, Russian, and Swedish.
Evidence
node scripts/run-vitest.mjs test/scripts/ci-workflow-guards.test.ts test/scripts/native-app-i18n.test.ts(35 tests)node --import tsx scripts/native-app-i18n.ts check(2,318entries)21locales,max-parallel: 2, authenticated fetch/rebase/push retry loopgit diff --checkThis PR is stacked on #97110.