feat(apple): localize core native app surfaces#97112
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 1, 2026, 7:16 AM ET / 11:16 UTC. Summary PR surface: Source +117, Tests +596, Docs +14, Config +4, Other +6537. Total +7268 across 46 files. Reproducibility: not applicable. this is a native app localization feature PR, not a bug report with a current-main failure path. Source inspection, PR proof, and live status checks are the relevant review evidence. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. 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: Keep this Apple localization slice open for maintainer review, then land it once the exact merge head keeps native-i18n, iOS build, macOS Swift/package, and full CI status green. Do we have a high-confidence way to reproduce the issue? Not applicable; this is a native app localization feature PR, not a bug report with a current-main failure path. Source inspection, PR proof, and live status checks are the relevant review evidence. Is this the best way to solve the issue? Yes; this is a maintainable slice because it keeps Apple localization in native resources and a dedicated checker, while macOS packaging compiles deterministic .lproj output instead of adding runtime localization policy to core. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 324193652651. Label changesLabel justifications:
Evidence reviewedPR surface: Source +117, Tests +596, Docs +14, Config +4, Other +6537. Total +7268 across 46 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
593ddd8 to
0272503
Compare
bbb8d9a to
1a0a6ac
Compare
1a0a6ac to
31003ee
Compare
31003ee to
3a9daad
Compare
|
Rebased onto the corrected native i18n foundation and refreshed Apple proof. Validation:
Static watchOS/quick-setup labels now preserve 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. |
2a2c798 to
56b77a5
Compare
e1c8f00 to
0a1b553
Compare
56b77a5 to
b982ed2
Compare
|
Final restack head: Exact-head proof:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
b982ed2 to
3cdef51
Compare
|
Merged via rebase.
|
What Problem This Solves
The Apple apps had partial catalog coverage, while the Share Extension, Activity Widget, Watch app, and packaged macOS app did not share a complete localization path.
Why This Change Was Made
Expand the iOS and macOS String Catalogs to the complete 21-locale native matrix, wire the iOS catalog into the main app and extensions, and route Share Extension actions/status/errors through localization APIs.
For macOS packaging, compile the catalog deterministically into locale-specific
.lproj/Localizable.stringsdirectories instead of relying on SwiftPM's raw catalog resource copy behavior.User Impact
Forty-six Apple catalog keys now cover gateway setup, navigation, chat, settings, watch approvals, activity status, share actions, and macOS controls 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.
Evidence
node scripts/run-vitest.mjs test/scripts/apple-app-i18n.test.ts test/scripts/native-app-i18n.test.ts test/scripts/package-mac-app.test.ts(17 tests)node --import tsx scripts/apple-app-i18n.ts check(46keys,21locales)node --import tsx scripts/native-app-i18n.ts check(2,317entries)swift package dump-package --package-path apps/macosbash -n scripts/package-mac-app.shgit diff --checkA direct
swift buildreached the existing preview macro dependency failure in shared OpenClawChatUI after proving SwiftPM copied the raw catalog rather than compiled localization directories. This PR is stacked on #97110.