Files

1.1 KiB

Design: Multilingual Support

Architecture

The application uses react-i18next for i18n and i18next-browser-languagedetector for language detection. Configuration is centralized in src/localization/i18n.ts.

Language Resources

Translation resources are built as JSON objects in i18n.ts (or split into files if they grow large). We add a zh-CN key in the resources object.

Default Language Strategy

We introduce the LanguageDetector plugin. i18n.use(LanguageDetector).init({...}) is configured to check localStorage first, then navigator (browser/system language). fallbackLng remains 'en' as the final fallback.

Key Mapping

Existing English strings are mapped to semantic keys (for example, home.title, settings.theme).

Data Flow

  1. App starts.
  2. i18next initializes and determines language via LanguageDetector:
    • Check whether localStorage has a saved preference.
    • If not, check navigator.language.
    • If detected language is supported (en or zh-CN), use it.
    • Otherwise, use fallbackLng (en).
  3. Components use useTranslation to resolve strings for the active language.