feat: i18n – extract all strings and add login page language switcher #12
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?
Goal
Complete the Paraglide i18n integration: replace all hardcoded German strings with
m.*()message calls, and add a language switcher to the login page so users can choose their locale before logging in.Login page language switcher (Option B — top-right corner)
Place DE / EN / ES text buttons in the top-right corner of the login page, matching the existing header switcher exactly (same font, same active/inactive styling). The buttons are absolutely positioned so they don't affect the card layout.
Styling reference (from
+layout.svelte):String extraction scope
Replace every hardcoded string in all route files with
m.*()calls. Priority order:+layout.svelte— nav links, logout button+page.svelte(home) — search placeholder, filter labels, empty state, document card fieldsdocuments/[id]/+page.svelte— detail view labelsdocuments/[id]/edit/+page.svelte— form labels, save/cancel buttonsdocuments/new/+page.svelte— same as editpersons/routes — list, detail, newadmin/routes — user/group/tag managementlogin/+page.svelte— form labels (Benutzername, Passwort, Anmelden)conversations/routesTranslation files to keep in sync:
messages/de.json,messages/en.json,messages/es.jsonAcceptance criteria
/login, same style as headerm.*()callsde.json,en.json, andes.jsonnpm run checkpasses with 0 errors