feat(android): localize core gateway surfaces#97111
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 1, 2026, 5:57 AM ET / 09:57 UTC. Summary PR surface: Tests +14, Config +4, Other +951. Total +969 across 31 files. Reproducibility: not applicable. for a feature PR. Source inspection confirms current main lacks the Android resource matrix and the branch adds it on the stacked head. Review metrics: 2 noteworthy metrics.
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:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this after the native i18n foundation is accepted or included in the base, with the latest Android/native i18n checks green and the new checker kept as the canonical resource-drift gate. Do we have a high-confidence way to reproduce the issue? Not applicable for a feature PR. Source inspection confirms current main lacks the Android resource matrix and the branch adds it on the stacked head. Is this the best way to solve the issue? Yes, this is the right maintainable direction: Android string resources plus a shared locale/checker path avoid a separate manual localization workflow. I did not find a remaining line-level correctness defect after the latest restack. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against fcb135dfc13e. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Tests +14, Config +4, Other +951. Total +969 across 31 files. View PR surface stats
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
|
ab24f11 to
1545198
Compare
b06e020 to
d1c8d9f
Compare
d1c8d9f to
24347d8
Compare
24347d8 to
e36927b
Compare
e660a39 to
5a5ddbf
Compare
47f2a23 to
8b7cf4f
Compare
26683a3 to
b7c0b82
Compare
afbbd2a to
1fd5a56
Compare
b7c0b82 to
8016c3b
Compare
|
Rebased onto the corrected native i18n foundation and refreshed Android proof. Validation:
The stack-wide changed gate is blocked only by the same four test type errors reproduced on clean current @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
8016c3b to
b13f0d0
Compare
e1c8f00 to
0a1b553
Compare
b13f0d0 to
fde4d26
Compare
|
Final restack head: Exact-head proof:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
fde4d26 to
640569b
Compare
|
Merged via rebase.
|
What Problem This Solves
The Android app had incomplete locale coverage and several gateway, onboarding, trust, shell, and recovery surfaces still used inline English.
Why This Change Was Made
Move those user-visible strings into Android resources and enforce complete key parity for the shared 21-locale native matrix. Regional qualifiers are mapped to Android resource directories, positional placeholders are validated, and every referenced resource key must exist in English.
User Impact
Thirty-five core Android strings now render in 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. Existing Swedish product naming remains
OpenClaw-nod.Evidence
node scripts/run-vitest.mjs test/scripts/android-app-i18n.test.ts test/scripts/native-app-i18n.test.ts(3 tests)node --import tsx scripts/android-app-i18n.ts check(35keys,21locales)node --import tsx scripts/native-app-i18n.ts check(2,316entries)xmllint --nooutacross every localizedstrings.xmlgit diff --checkThis PR is stacked on #97110.