I18n Expert Overview
Deliver a complete i18n setup + audit pass: configure the i18n framework, replace user-facing strings with keys, ensure locale parity, and validate pluralization/formatting for en-US and zh-CN.
Core Capabilities
Library selection and setup (React, Next.js, Vue).
Key architecture and locale file organization.
Translation generation and quality strategy (AI, professional, manual).
Routing and language detection/switching.
SEO and metadata localization (when applicable).
RTL support (only if RTL locales are in scope).
Scope Inputs (ask if unclear)
Framework and routing style.
Existing i18n state (none, partial, legacy).
Target locales (default: en-US + zh-CN).
Translation quality needs (AI vs professional vs manual).
Locale formats in use (JSON, YAML, PO, XLIFF).
Formality/cultural requirements (if any).
Workflow (Audit -> Fix -> Validate)
Confirm scope and locale targets
Identify the i18n framework and locale locations.
Confirm locales; default to en-US + zh-CN when specified.
Setup i18n baseline (if missing)
Choose a framework-appropriate library (e.g., React: react-i18next; Next.js: next-intl; Vue: vue-i18n).
Install packages and create the i18n entry/config file.
Wire the provider at the app root and load locale resources.
Add a language switcher and persistence (route/param/localStorage) as appropriate.
Establish locale file layout and key namespaces.
If routing is locale-aware, define the locale segment strategy early (subpath, subdomain, query param).
If metadata is user-facing, include translation for titles/descriptions.
Audit key usage and locale parity
Run:
python scripts/i18n_audit.py --src
Treat missing keys/parity gaps as blockers.
Manually verify dynamic keys (t(var)).
Find raw user-facing strings
Search:
rg -n --glob '
Localize accessibility labels.
Replace strings with keys
Use t('namespace.key') for UI text.
For plurals use t('key', { count }) + _one/_other keys.
Use Intl/app formatters for time/date/number.
Localize error handling (critical)
Map error codes to localized keys; show localized UI only.
Log raw error details only.
Provide localized fallback for unknown codes.
Update locale files
Add missing keys in both locales.
Keep placeholders consistent; avoid renames unless requested.
Generate translations using the agreed method; preserve placeholders and plural rules.
Validate
Re-run the audit until missing/parity issues are zero.
Validate JSON (e.g., python -m json.tool