#23241: feat(ui): add Simplified Chinese (zh-CN) i18n support for Dashboard
app: web-ui
size: XL
Cluster:
Multilingual Support Enhancements
## Summary
- **Problem:** The OpenClaw Dashboard/Control UI only supports English, limiting accessibility for Chinese-speaking users.
- **Why it matters:** Chinese users represent a significant portion of the OpenClaw community. Issue #23194 specifically requested zh-CN Dashboard support.
- **What changed:** Added 500+ translation keys to both \`en.ts\` and \`zh-CN.ts\` locale files. Updated 20+ view files to use \`t()\` i18n calls instead of hardcoded English strings. Added \`typeof\` guards for \`localStorage\`/\`navigator\` to prevent test environment errors.
- **What did NOT change:** No functional logic changes. All existing English UI behavior is preserved as the default fallback.
## Change Type (select all)
- [ ] Bug fix
- [x] Feature
- [ ] Refactor
- [ ] Docs
- [ ] Security hardening
- [ ] Chore/infra
## Scope (select all touched areas)
- [ ] Gateway / orchestration
- [ ] Skills / tool execution
- [ ] Auth / tokens
- [ ] Memory / storage
- [ ] Integrations
- [ ] API / contracts
- [x] UI / DX
- [ ] CI/CD / infra
## Linked Issue/PR
- Closes #23194
## User-visible / Behavior Changes
- Dashboard UI renders in Simplified Chinese when browser locale is \`zh-CN\` or user selects Chinese from language picker
- English remains the default fallback for all untranslated keys
- Language preference persists via \`localStorage\`
## Security Impact (required)
- New permissions/capabilities? \`No\`
- Secrets/tokens handling changed? \`No\`
- New/changed network calls? \`No\`
- Command/tool execution surface changed? \`No\`
- Data access scope changed? \`No\`
## Repro + Verification
### Environment
- OS: macOS 15.3 (arm64)
- Runtime: Node v22+
- Model/provider: N/A
- Integration/channel: Dashboard UI
- Relevant config: Default
### Steps
1. Start the gateway and open the Dashboard
2. Set browser language to \`zh-CN\` or use the language picker
3. Navigate through all views: Chat, Channels, Usage, Nodes, Exec Approvals, Agents, Config, Logs, Sessions, etc.
### Expected
- All UI labels, buttons, placeholders, and status messages display in Simplified Chinese
### Actual
- Confirmed: All translated sections render correctly in zh-CN
## Evidence
- All 500+ translation keys have corresponding entries in both \`en.ts\` and \`zh-CN.ts\`
- TypeScript compilation passes (\`npx tsc --noEmit\`)
- CI \`bun test\` passes after adding \`typeof\` guards for \`localStorage\`/\`navigator\`
## Human Verification (required)
- Verified scenarios: Navigated through all Dashboard views with zh-CN locale active; confirmed translations display correctly
- Edge cases checked: Fallback to English for any missing keys; \`localStorage\` persistence across page reloads; test environment compatibility (no \`ReferenceError\`)
- What I did **not** verify: RTL layout (not applicable for zh-CN)
## Compatibility / Migration
- Backward compatible? \`Yes\`
- Config/env changes? \`No\`
- Migration needed? \`No\`
## Failure Recovery (if this breaks)
- How to disable/revert this change quickly: Remove \`zh-CN.ts\` locale file or revert the i18n key additions
- Files/config to restore: \`ui/src/i18n/locales/en.ts\`, \`ui/src/i18n/locales/zh-CN.ts\`, and all modified view files
- Known bad symptoms: Untranslated keys showing as dot-path strings (e.g., \`chat.title\` instead of actual text)
## Risks and Mitigations
- Risk: Translation inaccuracies in technical terminology
- Mitigation: Used standard Chinese translations for common tech terms; community can submit corrections via follow-up PRs
Most Similar PRs
#23813: Fix UI locale persistence
by kamal-ayman · 2026-02-22
76.1%
#22165: feat(i18n): translate hardcoded button labels to all 4 locales
by NikolaVujovic1988 · 2026-02-20
73.6%
#10586: feat: Add Chinese (zh-CN) localization support
by Maxsong-0 · 2026-02-06
73.6%
#9490: Add Internationalization (i18n) Support
by luuman · 2026-02-05
72.8%
#10657: feat(ui): add i18n support with English, Chinese, and Portuguese
by SalimBinYousuf1 · 2026-02-06
72.2%
#13622: feat(i18n): add complete multi-language support (EN, TR, FR, DE)
by vaur94 · 2026-02-10
69.7%
#22332: i18n: add Korean (ko-KR) locale support
by arusia88 · 2026-02-21
67.6%
#19881: feat(i18n): add Japanese (ja) locale for Control UI [AI-assisted]
by habakan · 2026-02-18
67.5%
#19689: feat(i18n): added Filipino (fil) locale
by warengonzaga · 2026-02-18
67.1%
#20498: UI: modularize control UI architecture and normalize spacing.
by MAGE-VOID · 2026-02-19
67.0%