Files
summer-phrasebook/docs/research/wintercms/quotifypro-15-i18n-locale-detection/15-03-SUMMARY.md
2026-02-18 01:31:41 +01:00

113 lines
3.8 KiB
Markdown

---
phase: 15-locale-detection-routing
plan: 03
subsystem: ui
tags: [locale, i18n, cookies, accept-language, account-settings]
# Dependency graph
requires:
- phase: 15-01
provides: preferred_locale field on User model, LocaleMiddleware detection
provides:
- Language preference section in account settings
- LocaleSuggestionBanner component for browser language detection
- Dismissible banner with cookie persistence
affects: [user-experience, theme]
# Tech tracking
tech-stack:
added: []
patterns: [browser-locale-detection, dismissal-cookie-pattern]
key-files:
created:
- plugins/golem15/translate/components/LocaleSuggestionBanner.php
- plugins/golem15/translate/components/localesuggestionbanner/default.htm
- themes/quotify/assets/css/components/locale-banner.css
modified:
- themes/quotify/partials/account/update.htm
- themes/quotify/layouts/default.htm
- themes/quotify/assets/css/app.css
- plugins/golem15/translate/Plugin.php
key-decisions:
- "Banner shows localized text in target language (e.g., 'Diese Seite ist auf Deutsch verfugbar')"
- "1-week dismissal cookie (10080 minutes) prevents banner showing repeatedly"
- "Banner respects locale_manually_set cookie from LocalePicker"
patterns-established:
- "Accept-Language parsing: extract 2-char code, match against enabled locales"
- "Dismissal pattern: session flag + persistent cookie for multi-session"
# Metrics
duration: 2min
completed: 2026-02-02
---
# Phase 15 Plan 03: Language Preferences & Suggestion Banner Summary
**Account settings language preference dropdown and LocaleSuggestionBanner component with Accept-Language detection and dismissible UI**
## Performance
- **Duration:** 2 min
- **Started:** 2026-02-02T01:06:50Z
- **Completed:** 2026-02-02T01:09:02Z
- **Tasks:** 3
- **Files modified:** 7
## Accomplishments
- Added Language Preference section to account settings with en/pl/de dropdown
- Created LocaleSuggestionBanner component with browser language detection
- Implemented dismissal cookie and manual selection cookie integration
- Added responsive sticky banner CSS with gradient styling
## Task Commits
Each task was committed atomically:
1. **Task 1: Add language preference section to account settings** - `652b035` (feat) [theme]
2. **Task 2: Create LocaleSuggestionBanner component** - `8f8885f` (feat) [translate plugin]
3. **Task 3: Add banner CSS and integrate into layout** - `006987e` (feat) [theme]
**Submodule update:** `82796d1` (feat: submodule pointer update)
## Files Created/Modified
**Created:**
- `plugins/golem15/translate/components/LocaleSuggestionBanner.php` - Component with browser detection
- `plugins/golem15/translate/components/localesuggestionbanner/default.htm` - Banner partial
- `themes/quotify/assets/css/components/locale-banner.css` - Banner styles
**Modified:**
- `themes/quotify/partials/account/update.htm` - Added Language Preference section
- `themes/quotify/layouts/default.htm` - Registered and rendered banner component
- `themes/quotify/assets/css/app.css` - Imported locale-banner.css
- `plugins/golem15/translate/Plugin.php` - Registered LocaleSuggestionBanner component
## Decisions Made
- Banner shows localized text in the suggested language (Polish/German) rather than current page language
- Uses 1-week dismissal cookie to prevent annoyance while still showing eventually
- Banner appears after flash messages, before page-wrapper for maximum visibility
## Deviations from Plan
None - plan executed exactly as written.
## Issues Encountered
None.
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
- Language preferences fully functional for logged-in users
- Browser language detection and suggestion banner working
- Ready for Phase 15-04 (Auto-redirect Strategy) if planned
---
*Phase: 15-locale-detection-routing*
*Completed: 2026-02-02*