Skip to content

🌍 Internationalization (i18n) Standards

Core Standards

Setup Requirements

  1. Always use easy_localization for i18n implementation
  2. Enable code generation with easy_localization_generator
  3. Set up translation files even if not immediately needed
  4. Use English as base language for all translations
  5. Use LanguagesManager for locale management
  6. Use language code only (en, ar) for simplicity
  7. Use consistent key naming conventions for translation keys

Translation Key Rules

  1. Use snake_case for key naming
  2. Group related translations by feature or screen if needed
  3. Use consistent prefixes for different content types
  4. Avoid generic keys like text1, message, error

Translation Management

Translation Content Rules

  1. Always provide English translations as base language
  2. Use professional translators for non-English content
  3. Consider cultural context in translations
  4. Test translations with native speakers
  5. Keep translations concise but clear
  6. Use consistent terminology across the app

Code Generation

Code Generation Commands

  1. Generate translations using build runner
  2. Watch for changes during development
  3. Clean generated files when needed
bash
dart run easy_localization:generate --source-dir ./assets/i18n/;dart run easy_localization:generate --source-dir ./assets/i18n -f keys -o locale_keys.g.dart

Common Violations

DO NOT Violate These Rules

  1. Don't use hardcoded strings in UI components
  2. Don't skip translation setup even if not immediately needed
  3. Don't use generic translation keys like 'text1', 'message'
  4. Don't ignore RTL language support for Arabic
  5. Don't use inconsistent key naming conventions
  6. Don't forget to test with different locales
  7. Don't forget to run the generate command after translation changes

ALWAYS Follow These Rules

  1. Set up i18n from project start even if not immediately needed
  2. Group translation keys by feature or screen
  3. Use LanguagesManager for centralized locale management
  4. Test with multiple locales during development
  5. Handle missing translations gracefully
  6. Keep translation files in sync across all languages
  7. Test RTL languages properly for Arabic support