dorfteich/packages/shared/i18n/de/auth.json
Claude Fable 5 0bc80c9f93 Add auth, settings, and admin UI to the SPA
The web app grows its account surface: login (with next-redirect,
unverified-hint + resend), signup (react-hook-form + shared Zod
schemas, field-level api errors, closed-registration state fed by the
new public GET /auth/registration), e-mail verification, forgot/reset
password; a settings page with profile (locale applies immediately),
password change, and active-session management; a Site-Admin page for
instance name, default locale, and registration mode. AuthProvider
holds /auth/me, applies the profile locale, and backs route guards
(RequireAuth/RequireAnonymous/RequireSiteAdmin); the top bar gains a
user menu. All strings ship in the new auth/settings namespaces (de+
en); the exception filter now preserves handler-specific error codes.
Verified live: signup → Mailpit → verify → login → profile through
the Vite proxy.

Closes #16
Closes #17
Closes #18
Closes #19

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 05:35:56 +02:00

71 lines
2.4 KiB
JSON

{
"login": {
"title": "Anmelden",
"usernameOrEmail": "Benutzername oder E-Mail",
"password": "Passwort",
"submit": "Anmelden",
"forgot": "Passwort vergessen?",
"noAccount": "Noch kein Konto?",
"signupLink": "Jetzt registrieren",
"resendHint": "Keine Bestätigungs-Mail bekommen?",
"resendLink": "Erneut senden"
},
"signup": {
"title": "Konto anlegen",
"username": "Benutzername",
"usernameHint": "Buchstaben, Ziffern, Bindestriche — deine Adresse im Dorfteich.",
"email": "E-Mail-Adresse",
"displayName": "Anzeigename",
"password": "Passwort",
"passwordHint": "Mindestens 10 Zeichen. Ein kurzer Satz funktioniert gut.",
"submit": "Registrieren",
"haveAccount": "Schon registriert?",
"loginLink": "Anmelden",
"closed": "Die Registrierung ist auf dieser Instanz derzeit geschlossen.",
"success": {
"title": "Schau in dein Postfach",
"body": "Wir haben einen Bestätigungslink an {{email}} geschickt. Er ist 24 Stunden gültig.",
"resend": "Mail erneut senden"
}
},
"verify": {
"title": "E-Mail-Adresse wird bestätigt …",
"success": {
"title": "E-Mail-Adresse bestätigt",
"body": "Dein Konto ist aktiv — du kannst dich jetzt anmelden.",
"login": "Zur Anmeldung"
},
"error": {
"title": "Dieser Link hat nicht funktioniert",
"resendPrompt": "Gib deine E-Mail-Adresse ein, wir schicken dir einen frischen Link:",
"resend": "Neuen Link senden"
},
"resent": "Falls die Adresse zu einem unbestätigten Konto gehört, ist eine neue Mail unterwegs."
},
"forgot": {
"title": "Passwort zurücksetzen",
"body": "Gib deine E-Mail-Adresse ein. Falls ein Konto existiert, bekommst du einen Link zum Zurücksetzen (eine Stunde gültig).",
"email": "E-Mail-Adresse",
"submit": "Link senden",
"sent": "Erledigt — schau in dein Postfach.",
"backToLogin": "Zurück zur Anmeldung"
},
"reset": {
"title": "Neues Passwort setzen",
"password": "Neues Passwort",
"submit": "Passwort speichern",
"success": {
"title": "Passwort gespeichert",
"body": "Alle bisherigen Sitzungen wurden abgemeldet. Melde dich mit dem neuen Passwort an.",
"login": "Zur Anmeldung"
}
},
"menu": {
"settings": "Einstellungen",
"admin": "Administration",
"logout": "Abmelden",
"login": "Anmelden",
"signup": "Registrieren"
}
}