-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or requestfeatureNew featuresNew featuresi18nInternationalization and localizationInternationalization and localizationlocalizationLocalization featuresLocalization features
Description
Description
Add comprehensive internationalization support to make the app accessible for users worldwide, starting with English and Brazilian Portuguese.
Current Behavior
- All app strings are hardcoded in English
- No localization support
- No language selection in settings
- Interface language depends on code, not user preference
Requested Features
Core i18n Implementation
- Flutter intl package integration
- ARB (Application Resource Bundle) files for translations
- Automatic locale detection from device settings
- Fallback to English when locale not supported
- Support for right-to-left languages (future-ready)
Language Support
- English (en) - Default/fallback language
- Brazilian Portuguese (pt-BR) - Primary additional language
- Extensible architecture for future languages
Settings Integration
- Language selection option in settings screen
- Ability to override device language
- Immediate language switching without app restart
- Language preference persistence
Strings to Localize
- Screen Titles: "Guitar Tuner", "Settings", "Tunings"
- Tuning Names: "Standard Guitar", "Drop D", etc.
- Status Messages: "Listening...", "Perfectly In Tune", etc.
- Button Labels: String notes, navigation buttons
- Settings Labels: All setting options and descriptions
- Error Messages: Permission errors, audio issues
- Accessibility: All tooltip and screen reader text
Technical Implementation
Dependencies
dependencies:
flutter_localizations:
sdk: flutter
intl: ^0.18.0
dev_dependencies:
intl_utils: ^2.8.0File Structure
lib/
├── l10n/
│ ├── app_en.arb # English strings
│ ├── app_pt.arb # Portuguese strings
│ └── l10n.dart # Generated localizations
├── generated/
│ └── intl/ # Generated files
└── main.dart # Locale configuration
Priority
🟡 Medium - Enhances accessibility for global users
Acceptance Criteria
- Flutter intl package is properly configured
- English (en) and Portuguese (pt-BR) translations are complete
- Device language is automatically detected
- Language can be changed in settings screen
- Language changes take effect immediately
- Fallback to English works for unsupported locales
- All user-facing strings are localized
- Musical terms are appropriately translated
- RTL support is architecturally ready
- Language preference persists between app restarts
Files Affected
pubspec.yaml(dependencies)lib/main.dart(locale configuration)lib/l10n/(new directory for translations)lib/screens/settings_screen.dart(language selector)lib/screens/tuner_screen.dart(localized strings)lib/screens/tunings_screen.dart(localized strings)lib/data/tunings.dart(localized tuning names)
Translation Considerations
Musical Terms
- Note names (C, D, E, F, G, A, B) remain in English internationally
- Tuning descriptions may need cultural adaptation
- "Flat" (♭) and "Sharp" (♯) symbols are universal
Cultural Adaptation
- Brazilian Portuguese: formal vs informal tone
- Date/time formats (not applicable to tuner)
- Number formats for frequency display
Future Extensibility
- Spanish (es) for Latin America
- French (fr) for France/Canada
- German (de) for Europe
- Japanese (ja) for Asia
- Support for region-specific variants (pt-PT vs pt-BR)
Task ID: I18N-001
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestfeatureNew featuresNew featuresi18nInternationalization and localizationInternationalization and localizationlocalizationLocalization featuresLocalization features