Support English and Russian throughout the Flutter app, following Sendico’s localization approach.
Approach
Use Flutter gen-l10n with lib/l10n/en.arb and ru.arb and generated/i18n output. Add a locale provider, persistent language preference, system-language detection with English fallback, and an EN/RU selector. Translate all authentication copy, validation, tooltips, feedback, and brand-panel text. Preserve theme styling and form state.
Acceptance criteria
English and Russian ARB catalogs cover all app UI strings.
Generated Flutter localization delegates are configured.
Saved choice takes precedence over device language; unsupported languages fall back to English.
Language can be changed from login and signup without losing entered values.
Language preference survives restart; credentials are never persisted.
Both locales work on mobile/desktop and with enlarged text.
Formatting, analysis, frontend tests, and web build pass.
Notes
Follows Sendico pweb locale_manager, LocaleProvider, gen-l10n configuration and locale dropdown behavior without depending on Sendico internal packages. Depends on task #2; earlier implementation remains uncommitted locally.
Implemented locally on localization-3: EN/RU ARB catalogs, generated/i18n delegates, locale provider, shared-preferences persistence and language menu. All screen colors remain theme-driven. Locale changes preserve form mode and values and retranslate existing validation errors.
Validation: dart format --output=none --set-exit-if-changed passed; flutter analyze reported no issues; make test-frontend passed all 17 tests (3 theme, 3 consumer, 11 app); flutter build web --no-wasm-dry-run passed; untranslated.txt is empty. Browser review covered English and Russian login/signup. Tests cover persistence, fallback, rapid preference writes, translations, form state, and 200% text layouts. Code remains uncommitted locally; issue remains open pending commit/review.
Delivery
Implementation is now committed and pushed in PR #9. Earlier notes describing uncommitted work are superseded by this delivery. Current implementation branch: routing-6. Review order is #7 → #8 → #9; PRs #7, #8 and #9 are now merged into main.
Validation: all 56 frontend tests, all four Flutter package analyses, formatting checks and app web build passed. Website tests (3), Astro check and website build passed. Durable scope, limitations and workflow are stored in docs/implementation.md, AGENTS.md, frontend/AGENTS.md and .agents/skills/.
Merge completion
Merged through PRs #7, #8 and #9 in dependency order with merge commits. All contributions are on main at abc3f2d. Local main is synchronized and its tree matches the previously validated routing-6 tree exactly. Task completed.
### Goal
Support English and Russian throughout the Flutter app, following Sendico’s localization approach.
### Approach
Use Flutter gen-l10n with lib/l10n/en.arb and ru.arb and generated/i18n output. Add a locale provider, persistent language preference, system-language detection with English fallback, and an EN/RU selector. Translate all authentication copy, validation, tooltips, feedback, and brand-panel text. Preserve theme styling and form state.
### Acceptance criteria
- [x] English and Russian ARB catalogs cover all app UI strings.
- [x] Generated Flutter localization delegates are configured.
- [x] Saved choice takes precedence over device language; unsupported languages fall back to English.
- [x] Language can be changed from login and signup without losing entered values.
- [x] Language preference survives restart; credentials are never persisted.
- [x] Both locales work on mobile/desktop and with enlarged text.
- [x] Formatting, analysis, frontend tests, and web build pass.
### Notes
Follows Sendico pweb locale_manager, LocaleProvider, gen-l10n configuration and locale dropdown behavior without depending on Sendico internal packages. Depends on task #2; earlier implementation remains uncommitted locally.
Implemented locally on localization-3: EN/RU ARB catalogs, generated/i18n delegates, locale provider, shared-preferences persistence and language menu. All screen colors remain theme-driven. Locale changes preserve form mode and values and retranslate existing validation errors.
Validation: dart format --output=none --set-exit-if-changed passed; flutter analyze reported no issues; make test-frontend passed all 17 tests (3 theme, 3 consumer, 11 app); flutter build web --no-wasm-dry-run passed; untranslated.txt is empty. Browser review covered English and Russian login/signup. Tests cover persistence, fallback, rapid preference writes, translations, form state, and 200% text layouts. Code remains uncommitted locally; issue remains open pending commit/review.
### Delivery
Implementation is now committed and pushed in [PR #9](https://git.sendico.io/tech/sxchnge/pulls/9). Earlier notes describing uncommitted work are superseded by this delivery. Current implementation branch: `routing-6`. Review order is #7 → #8 → #9; PRs #7, #8 and #9 are now merged into `main`.
Validation: all 56 frontend tests, all four Flutter package analyses, formatting checks and app web build passed. Website tests (3), Astro check and website build passed. Durable scope, limitations and workflow are stored in `docs/implementation.md`, `AGENTS.md`, `frontend/AGENTS.md` and `.agents/skills/`.
### Merge completion
Merged through PRs #7, #8 and #9 in dependency order with merge commits. All contributions are on `main` at `abc3f2d`. Local `main` is synchronized and its tree matches the previously validated `routing-6` tree exactly. Task completed.
tech
added the frontend label 2026-09-11 12:45:52 +00:00
tech
self-assigned this 2026-09-11 12:45:52 +00:00
tech
added this to the SXCHNGE project 2026-09-11 12:45:52 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Support English and Russian throughout the Flutter app, following Sendico’s localization approach.
Approach
Use Flutter gen-l10n with lib/l10n/en.arb and ru.arb and generated/i18n output. Add a locale provider, persistent language preference, system-language detection with English fallback, and an EN/RU selector. Translate all authentication copy, validation, tooltips, feedback, and brand-panel text. Preserve theme styling and form state.
Acceptance criteria
Notes
Follows Sendico pweb locale_manager, LocaleProvider, gen-l10n configuration and locale dropdown behavior without depending on Sendico internal packages. Depends on task #2; earlier implementation remains uncommitted locally.
Implemented locally on localization-3: EN/RU ARB catalogs, generated/i18n delegates, locale provider, shared-preferences persistence and language menu. All screen colors remain theme-driven. Locale changes preserve form mode and values and retranslate existing validation errors.
Validation: dart format --output=none --set-exit-if-changed passed; flutter analyze reported no issues; make test-frontend passed all 17 tests (3 theme, 3 consumer, 11 app); flutter build web --no-wasm-dry-run passed; untranslated.txt is empty. Browser review covered English and Russian login/signup. Tests cover persistence, fallback, rapid preference writes, translations, form state, and 200% text layouts. Code remains uncommitted locally; issue remains open pending commit/review.
Delivery
Implementation is now committed and pushed in PR #9. Earlier notes describing uncommitted work are superseded by this delivery. Current implementation branch:
routing-6. Review order is #7 → #8 → #9; PRs #7, #8 and #9 are now merged intomain.Validation: all 56 frontend tests, all four Flutter package analyses, formatting checks and app web build passed. Website tests (3), Astro check and website build passed. Durable scope, limitations and workflow are stored in
docs/implementation.md,AGENTS.md,frontend/AGENTS.mdand.agents/skills/.Merge completion
Merged through PRs #7, #8 and #9 in dependency order with merge commits. All contributions are on
mainatabc3f2d. Localmainis synchronized and its tree matches the previously validatedrouting-6tree exactly. Task completed.localization-3to routing-6