Add English and Russian app localization #3

Closed
opened 2026-09-11 12:45:52 +00:00 by tech · 0 comments
Owner

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

  • 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
tech added reference localization-3 2026-09-11 12:46:20 +00:00
tech changed reference from localization-3 to routing-6 2026-09-11 13:38:41 +00:00
tech closed this issue 2026-09-11 13:46:18 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#3