Appearance
🌍 Internationalization (i18n) Standards
Core Standards
Setup Requirements
- Always use
easy_localizationfor i18n implementation - Enable code generation with
easy_localization_generator - Set up translation files even if not immediately needed
- Use English as base language for all translations
- Use LanguagesManager for locale management
- Use language code only (en, ar) for simplicity
- Use consistent key naming conventions for translation keys
Translation Key Rules
- Use snake_case for key naming
- Group related translations by feature or screen if needed
- Use consistent prefixes for different content types
- Avoid generic keys like
text1,message,error
Translation Management
Translation Content Rules
- Always provide English translations as base language
- Use professional translators for non-English content
- Consider cultural context in translations
- Test translations with native speakers
- Keep translations concise but clear
- Use consistent terminology across the app
Code Generation
Code Generation Commands
- Generate translations using build runner
- Watch for changes during development
- 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.dartCommon Violations
❌ DO NOT Violate These Rules
- Don't use hardcoded strings in UI components
- Don't skip translation setup even if not immediately needed
- Don't use generic translation keys like 'text1', 'message'
- Don't ignore RTL language support for Arabic
- Don't use inconsistent key naming conventions
- Don't forget to test with different locales
- Don't forget to run the generate command after translation changes
✅ ALWAYS Follow These Rules
- Set up i18n from project start even if not immediately needed
- Group translation keys by feature or screen
- Use LanguagesManager for centralized locale management
- Test with multiple locales during development
- Handle missing translations gracefully
- Keep translation files in sync across all languages
- Test RTL languages properly for Arabic support