#10586: feat: Add Chinese (zh-CN) localization support
channel: telegram
app: macos
app: web-ui
gateway
stale
Cluster:
Multilingual Support Enhancements
## Description
This PR adds comprehensive Chinese (Simplified) localization support to the OpenClaw Control UI.
## Changes
- ✨ Added `lit-localize` for internationalization framework
- 🌐 Implemented Chinese translations for all UI components (agents, channels, sessions, config, etc.)
- 🎚️ Added language switcher in app settings (Settings tab)
- <0001f9ea> Added localization coverage tests to ensure translation completeness
- 📦 Updated dependencies and configuration
## Testing
- Tested language switching between English and Chinese
- Verified all UI strings are properly localized
- Added automated tests for translation coverage
## Screenshots
Language switcher is available in the Settings tab of the Control UI.
## Checklist
- [x] All UI strings use `msg()` for localization
- [x] Chinese translations provided for all components
- [x] Language preference persists in localStorage
- [x] Tests added for localization coverage
- [x] No breaking changes to existing English UI
Co-Authored-By: Warp <agent@warp.dev>
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
- Adds UI i18n via `@lit/localize`, introduces `en`/`zh-CN` locale modules, and wires locale initialization + persistence through UI settings.
- Replaces many hard-coded UI strings with `msg(..., {id})` calls across navigation/topbar and view modules.
- Extends config schema generation/tests to support zh-CN labels/titles.
- Adds a Vitest node-side “localization coverage” test intended to ensure all message IDs exist in `locales/zh-CN.ts`.
<h3>Confidence Score: 3/5</h3>
- This PR is close to mergeable, but the localization coverage test is currently not validating a large class of message IDs (usage.*), so missing translations can slip through.
- Core locale plumbing and msg() conversions look consistent, but the added coverage test’s extraction logic doesn’t match how usage messages are actually invoked, reducing confidence in translation completeness.
- ui/src/ui/localization-coverage.node.test.ts, ui/src/ui/views/usage.ts
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#9490: Add Internationalization (i18n) Support
by luuman · 2026-02-05
88.1%
#10657: feat(ui): add i18n support with English, Chinese, and Portuguese
by SalimBinYousuf1 · 2026-02-06
87.6%
#10275: feat: add multiligual support for UI
by fmyuan2000 · 2026-02-06
83.1%
#13622: feat(i18n): add complete multi-language support (EN, TR, FR, DE)
by vaur94 · 2026-02-10
82.8%
#22332: i18n: add Korean (ko-KR) locale support
by arusia88 · 2026-02-21
81.1%
#22165: feat(i18n): translate hardcoded button labels to all 4 locales
by NikolaVujovic1988 · 2026-02-20
79.8%
#6918: docs: add Chinese README
by htazq · 2026-02-02
78.7%
#22570: feat(i18n): add Korean (ko) locale to Control UI
by hoonsikim · 2026-02-21
77.3%
#21988: feat(i18n): added Thai (th) locale
by samithiwat · 2026-02-20
75.9%
#21617: feat(i18n): added korean locale
by Jaejuna · 2026-02-20
75.5%