PR #314 adds a 5-language dashboard (English, 简体中文, Français, Español, Português-BR) using a zero-dependency JSON i18n system. UI coverage is now complete — every user-facing string across the dashboard is wired (289 keys per locale, parity-checked). What's left is native-speaker review of translation quality.
Foundation credits: #307 (@dashitongzhi), #220 (@QingJ01), #262 (@3215).
How to contribute
Translations live in client/src/i18n/locales/<locale>.json — same dot-notation keys as en.json. To refine wording, edit the value for a key and open a PR. Keep {placeholders} intact. To add a new language, copy en.json to <bcp47>.json, translate, and register it in client/src/i18n/I18nProvider.tsx (SUPPORTED_LOCALES + dictionaries) plus the languages section of every locale file.
Native-speaker review wanted
Skim your language for accuracy, tone, and naturalness, and open a PR with fixes. The fr/es/pt-BR sets and the new zh-CN keys were an initial pass:
A few notes for reviewers:
- Some short sentences are split into
*Before / *After key pairs because the UI embeds an inline <code> element in the middle (e.g. keys.unifiedKeyDescBefore + keys.unifiedKeyDescAfter around api_key). Keep the two halves grammatical around the code term in your language.
- Numeric labels use
{count} / {tokens} / {platforms} etc. — leave the braces and names exactly as in en.json.
Housekeeping
PR #314 supersedes the earlier Chinese-only i18n PRs (#220, #262, #307) by generalizing the same foundation to 5 languages with full coverage; those can be closed once #314 lands. (#244, the Chinese README, is a separate docs track.)
PR #314 adds a 5-language dashboard (English, 简体中文, Français, Español, Português-BR) using a zero-dependency JSON i18n system. UI coverage is now complete — every user-facing string across the dashboard is wired (289 keys per locale, parity-checked). What's left is native-speaker review of translation quality.
Foundation credits: #307 (@dashitongzhi), #220 (@QingJ01), #262 (@3215).
How to contribute
Translations live in
client/src/i18n/locales/<locale>.json— same dot-notation keys asen.json. To refine wording, edit the value for a key and open a PR. Keep{placeholders}intact. To add a new language, copyen.jsonto<bcp47>.json, translate, and register it inclient/src/i18n/I18nProvider.tsx(SUPPORTED_LOCALES+dictionaries) plus thelanguagessection of every locale file.Native-speaker review wanted
Skim your language for accuracy, tone, and naturalness, and open a PR with fixes. The fr/es/pt-BR sets and the new zh-CN keys were an initial pass:
A few notes for reviewers:
*Before/*Afterkey pairs because the UI embeds an inline<code>element in the middle (e.g.keys.unifiedKeyDescBefore+keys.unifiedKeyDescAfteraroundapi_key). Keep the two halves grammatical around the code term in your language.{count}/{tokens}/{platforms}etc. — leave the braces and names exactly as inen.json.Housekeeping
PR #314 supersedes the earlier Chinese-only i18n PRs (#220, #262, #307) by generalizing the same foundation to 5 languages with full coverage; those can be closed once #314 lands. (#244, the Chinese README, is a separate docs track.)