feat: implement i18n — extract static texts, add EN + ES-MX translations, add language selector #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
All UI text is currently hardcoded in German. Paraglide.js is already set up in the project but not yet used. This issue covers the full i18n rollout: text extraction, translation, and a language selector in the header.
Scope
1. Text extraction
Go through every
.sveltefile and extract all visible German strings intomessages/de.json. This includes:src/lib/errors.ts)2. Translations
Provide translations for all extracted keys in:
messages/en.json— Englishmessages/es.json— Spanish (Mexico,es-MX)3. Language selector
Add a compact language switcher to the header (top-right, next to the logout button). Suggested appearance:
The active language is bold/highlighted. Uses Paraglide's
setLanguageTag()and persists the choice (cookie or localStorage).Technical notes
src/lib/paraglide/,vite.config.ts)messages/directory already exists with ade.jsonstubsrc/routes/demo/paraglide/+page.svelteif presentm.key()call syntax throughout components — do not use string interpolation inside translation keysIntl— that stays as-isAcceptance criteria
.sveltefilesmessages/de.json,messages/en.json,messages/es.jsonare all complete and consistentmarcel referenced this issue2026-04-25 17:00:44 +02:00