MS-FE-6: i18n und Consent UI umsetzen #106
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#106
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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?
Aufgaben
Commit 1: i18n-Infrastruktur mit Uebersetzungsdateien und Store
frontend/src/lib/i18n/de/getLocale(),setLocale(lang),t(path)Commit 2: Sprachauswahl in Account-Einstellungen
Commit 3: DSGVO-Consent-Dialog und Consent-Annahme
Commit 4: Consent-Status in Personenuebersicht und Haushalts-Overlay
Hinweis: Backend-Endpunkt
PUT /api/v1/events/{event_id}/guests/{person_id}/consenterfordert eventId. Invitations-API ist nicht durch requireConsent geschuetzt → dient als Quelle fuer eventId. Siehe docs/design/02-datenmodell.md (i18n + DSGVO-Zustimmung).Umsetzungsplan
Nach Analyse des aktuellen Stands (Backend i18n + Consent vollstaendig via MS-BE-API-5, Frontend fehlt komplett) ergibt sich folgende Einteilung in 4 Commits.
Commit 1:
feat(frontend): i18n-Infrastruktur mit Uebersetzungsdateien und StoreScope:
frontend/src/lib/i18n/de/:common.json— Allgemein (Speichern, Abbrechen, etc.)events.json— Event-bezogene Textepersons.json— Personen-bezogene Textegroups.json— Haushalts-bezogene Textetemplates.json— Vorlagen-bezogene Texteaccount.json— Account-Einstellungen (Sprache, Consent)consent.json— DSGVO-Consent-Texte (Policy, Dialog)errors.json— Fehlermeldungenfrontend/src/lib/i18n/en/_placeholder.jsonfuer EN-Strukturfrontend/src/lib/stores/i18n.svelte.tsmit:getLocale(),setLocale(lang)— Sprache verwaltent(path)— Uebersetzung per Dot-Notation (z. B.t('common.save'))listLanguages()API ladengetI18n(lang)lazy ladensession.svelte.ts)frontend/src/tests/i18n.test.ts:Commit 2:
feat(frontend): Sprachauswahl in Account-EinstellungenScope:
account/+page.svelte)ui_localebeim App-Start laden+layout.svelteintegriert i18n Store und initialisiert Locale aus Cookie+layout.server.tsliestui_locale-Cookie auslistLanguagesinaccount/+page.server.tsladenaccount.test.ts):Commit 3:
feat(frontend): DSGVO-Consent-Dialog und Consent-AnnahmeScope:
frontend/src/lib/components/consent-dialog.svelte:i18n/de/consent.json)updateGuestConsent()API auf/app/dashboard):frontend/src/tests/consent.test.ts):Commit 4:
feat(frontend): Consent-Status in Personenuebersicht und Haushalts-OverlayScope:
persons/[personId]/+page.svelte):persons/+page.svelte):persons.test.ts) fuer neue Consent-ElementeHinweis zum Consent-API-Design:
Der Backend-Endpunkt
PUT /api/v1/events/{event_id}/guests/{person_id}/consenterfordert eine eventId. Die Invitations-API ist nicht durchrequireConsentgeschuetzt, daher laden wir die Einladungen vorab, um eine eventId fuer den Consent-Call zu erhalten. Falls keine Invitations existieren, wird eine entsprechende Meldung angezeigt.refs #106