feat: add localization support for en/pt/es/fr/de (#4)
Adds i18n infrastructure (thin custom + native Intl, no library) covering auth pages, sidebar nav, language switcher, and common labels across the five supported locales. English is canonical fallback at every layer. - Schema: user_profiles.locale text column with named CHECK constraint - Backend: PATCH /user/profile accepts/persists locale with allowlist validation - Frontend: server-side locale resolution (cookie -> Accept-Language -> en) in root layout; client I18nProvider for runtime switching; ProfileLocaleSync applies authenticated profile.locale one-way - Cookie 'mike_locale' (non-httpOnly, Path=/, Max-Age=1y, SameSite=Lax) - Catalog validator with structural + placeholder + plural-shape checks - 51 automated tests (46 frontend + 5 backend) on pure logic; React surface covered manually - Coupled allowlist triple flagged: schema CHECK / backend SUPPORTED_LOCALES / frontend SupportedLocale must move together Spec: https://github.com/manueljpconde/mikeEU/issues/4#issuecomment-4414976968 Plan: https://github.com/manueljpconde/mikeEU/issues/4#issuecomment-4414987693 GO: https://github.com/manueljpconde/mikeEU/issues/4#issuecomment-4415157201 Closes #4
| Repository | manueljpconde/mikeEU |
|---|---|
| Author | Manuel Conde <manuel.jpc@gmail.com> |
| Authored | |
| Parents | 1eb27976 |
| Stats | 35 files changed , +2364 , -97 |
| Part of | i18n: localization for en/pt/es/fr/de |
Capture this commit into my fork
Download a Markdown prompt that tells Claude how to port this
exact commit into your working tree. Run it via
claude -p < capture-commit-346b8197.md
from inside the repo you want the change in.