* Add internationalization support with 8 languages
- Add locale provider with system/manual language selection
- Add ARB translation files for EN, ES, FR, DE, IT, PT, RU, TR
- Localize all 19 screens and 23 widgets
- Add locale-aware date/number/currency formatters
- Add comprehensive locale provider tests (40+ tests)
- Add language selector in app settings
- Include proper ICU plural forms for all languages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Formatting
* Regenerate flutter_rust_bridge bindings after rebase
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Formatting
* Improve locale persistence and add profile error strings
- Refactor LocaleNotifier to use secure storage for locale preference
- Add profileLoadError and profileSaveError localization strings
- Update tests for new locale provider implementation
- Fix various test issues and remove unused imports
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Improve test coverage and fix CI l10n validation
- Fix CI workflow to use jq for reliable ARB key extraction instead of grep
- Add error handling tests for LocaleProvider storage failures
- Add failure simulation flags to MockWnApi and MockSecureStorage
- Add tests for LocaleFormatters, LocalePersistenceException, and edge cases
- Add UI error handling tests for language update and npub conversion failures
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Improve dropdown scroll UX and fix test reliability
- Add scroll fade indicators to dropdown when options exceed visible items
- Refactor dropdown list into _ScrollableDropdownList widget
- Improve CI l10n validation with better jq error handling
- Remove unused _resolveSystemLanguageCode method
- Fix async test expectations in locale provider tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add atomic locale storage rollback and CI orphaned key detection
- Locale provider now captures previous preference before changes and
restores it atomically if the rust API call fails
- CI l10n validation now detects extra/orphaned keys in locale files
(not just missing keys), with improved error messaging
- Added tests for storage rollback behavior on API failure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Remove unused import
* refactor: move l10n keys validation to scrip folder
* Update spanish localizations
* fix(l10n): improve Spanish key terminology (clave → llave)
Use 'llave' instead of 'clave' for cryptographic keys in Spanish
translations, which is more commonly used in technical contexts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* ci: add pub cache to l10n-validation and locale validation to precommit
- Add Flutter pub cache step to l10n-validation CI job for faster runs
- Add validate-locales-keys to precommit and precommit-check recipes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(ci): use correct github.workspace context in l10n cache
Replace runner.workspace with github.workspace for the pub-cache
path in l10n-validation job. runner.workspace is not a valid
GitHub Actions context.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: josefinalliende <mariajosefinaalliende@gmail.com>