feat: localize XAML and code-behind strings - #558
Conversation
Add x:Uid attributes to all 57 elements in CronPage.xaml that had hardcoded Text, Content, PlaceholderText, Title, or Message properties. The corresponding .resw entries already exist in all 5 locale files (en-us, fr-fr, nl-nl, zh-cn, zh-tw). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add x:Uid to 69 XAML elements across 7 pages (CronPage, AgentEventsPage, SessionsPage, SkillsPage, VoiceSettingsPage, HubWindow, SandboxPage) - Replace ~280 hardcoded C# strings with LocalizationHelper.GetString() in ChatPage, ConnectionPage, ChannelsPage, ConnectionStatusWindow, CronPage, AgentEventsPage, SchemaConfigEditor - Add all resource keys to 5 locales (en-us, fr-fr, nl-nl, zh-cn, zh-tw) - Fix CronPage.xaml encoding (Windows-1252 → UTF-8 em dash) - Add brand/loanword invariants (Tailscale, OK, via SSH) to test allowlist Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Codex review: needs changes before merge. Reviewed June 3, 2026, 5:52 PM ET / 21:52 UTC. Summary Reproducibility: yes. for the blocking review finding: the PR head adds x:Uid to the WSL host-control XAML, but ApplyGatewayHostAccess immediately overwrites those TextBlocks with hardcoded English. The submitted Chinese Connection page screenshot also shows that English fallback in the live UI. Review metrics: 2 noteworthy metrics.
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:
Copy recommended automerge instructionNext step before merge
Security Review findings
Review detailsBest possible solution: Land this after dynamic WSL host-control text is routed through resources, locale key parity is preserved, and the PR body shows the required full build, shared tests, tray tests, and representative localized UI proof. Do we have a high-confidence way to reproduce the issue? Yes for the blocking review finding: the PR head adds x:Uid to the WSL host-control XAML, but ApplyGatewayHostAccess immediately overwrites those TextBlocks with hardcoded English. The submitted Chinese Connection page screenshot also shows that English fallback in the live UI. Is this the best way to solve the issue? No: x:Uid alone is not enough for text that code-behind mutates after load. The narrower maintainable fix is to localize those assignments with LocalizationHelper resource keys and preserve the existing WSL control behavior. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against be64bea0bec8. Label changesLabel changes:
Label justifications:
Evidence reviewedAcceptance 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
|
|
ClawSweeper PR egg 🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat. Where did the egg go?
|
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolves conflicts between PR openclaw#624 (localize remaining tray strings) and the PR openclaw#558 / PR openclaw#597 / openclaw#686 localization work landed in master. Conflict resolutions - 6 XAML files (AgentEventsPage, ConnectionPage, CronPage, SandboxPage, SessionsPage, HubWindow): took master versions - CronPage.xaml.cs: master + re-applied 2 openclaw#624 hunks (JobCompletedInfoBar, ShowDisconnected) - 5 Resources.resw files: reset to master and re-injected 80 unique openclaw#624 keys via text injection so XML entities (") are preserved verbatim - LocalizationValidationTests.cs: pruned 17 obsolete and 7 over-deferred entries from InvariantOrDeferredResourceKeys Regression caught by adversarial review - AgentEventsPage / SkillsPage runtime code overrides XAML defaults with LocalizationHelper.GetString / Format calls. The 7 corresponding keys were seeded English-only across all locales so fr/nl/zh users would have seen English status badges and skill counters at runtime - Translated those 7 keys in fr-fr, nl-nl, zh-cn, zh-tw using the existing XAML translations as canonical source (28 strings total) - nl-nl AgentEventsPage_Status_Offline = "Niet verbonden" (matches the Status == Connected runtime check) so the all-or-none parity test passes - Stripped UTF-8 BOM from nl-nl/Resources.resw introduced by the rewrite so all 5 locales share the same encoding Validation - ./build.ps1 clean - OpenClaw.Shared.Tests: 2045 passed / 29 skipped - OpenClaw.Tray.Tests: 936 passed / 0 failed - Key parity: 1885 entries per locale across all 5 locales Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>


Summary
Validation