Language & translation maintenance
The Web panel and Android app support Simplified Chinese and English. On first use, they follow the browser or system language list. Languages other than Chinese and English fall back to English.
Choose Follow system, 简体中文 or English in the sign-in page or account menu. A manual preference is saved in the current browser or app without changing other devices. Choosing Follow system restores device preferences. Language selection does not change identity or resource permissions.
Web switching preserves the current form and pending tasks. Android uses application locales to refresh screens; wait for any in-flight submission to finish before switching. User-supplied site names, domains, record values and conversation content are not automatically translated.
Dates and standard controls follow the selected language. Web and Android send Accept-Language for backend messages; errors supplied by Cloudflare, the operating system or the model may retain that service's language.
Translation resources
locales/zh-CN.json and locales/en.json are the shared catalogs. Business code references stable IDs; dynamic values use placeholders such as {p0} rather than separate page implementations. Translations ship with the build. Visiting the app does not call an online translation service.
After editing catalogs, run node tools/i18n/generate.mjs to synchronize Android and backend resources. Run node --test tools/i18n/*.test.mjs to check keys and placeholders. Android builds also verify generated resources so Web-only edits cannot silently leave the app behind.
Documentation content
Documentation is authored in docs/content/<page>.json. Each file contains zh-CN and en Markdown. Builds generate both language routes from one page and navigation manifest. Do not directly edit generated Markdown in docs/guide/ or docs/en/.
Both language sections still require translation and review. The shared source removes duplicate directories, navigation and build workflows; it does not guarantee translation accuracy. Run npm run content:generate, then npm run build to validate links and search indexes.