Overview
The frontend is entirely in English with no i18n infrastructure. As SMALDA targets international users, the UI should be translatable. next-intl is the recommended i18n library for Next.js App Router. This issue establishes the infrastructure and adds the first translation file.
Background
Files to create/modify:
frontend/messages/en.json — English translation strings (all UI labels, button text, error messages)
frontend/i18n.ts — next-intl configuration
frontend/middleware.ts — extend existing middleware (FE-04) with locale detection
frontend/app/[locale]/layout.tsx — locale-aware root layout
Language switcher:
- Dropdown in the user settings header (
/profile or the navbar)
- Available languages: English (en), French (fr), Spanish (es) — with placeholder
fr.json and es.json showing only the key structure
Integration with backend:
- When user changes language in the UI, call
PATCH /api/users/me to save preferredLanguage
- The backend then uses this preference for emails (BE-86)
Acceptance Criteria
Overview
The frontend is entirely in English with no i18n infrastructure. As SMALDA targets international users, the UI should be translatable.
next-intlis the recommended i18n library for Next.js App Router. This issue establishes the infrastructure and adds the first translation file.Background
Files to create/modify:
frontend/messages/en.json— English translation strings (all UI labels, button text, error messages)frontend/i18n.ts— next-intl configurationfrontend/middleware.ts— extend existing middleware (FE-04) with locale detectionfrontend/app/[locale]/layout.tsx— locale-aware root layoutLanguage switcher:
/profileor the navbar)fr.jsonandes.jsonshowing only the key structureIntegration with backend:
PATCH /api/users/meto savepreferredLanguageAcceptance Criteria
next-intlconfigured and working in the App Routeren.jsoncovers all UI strings on at least the login, dashboard, and document list pagesfr.jsonandes.jsoncreated (can be copies of English initially)