fix(i18n): restore missing translations and enable Suspense loading
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-07 20:50:09 +01:00
parent 8c5d3b93d5
commit cff014ede5
7 changed files with 2144 additions and 4324 deletions

7
.gitignore vendored
View File

@@ -23,11 +23,6 @@ Homestead.yaml
npm-debug.log
yarn-error.log
/auth.json
/.fleet
/.idea
/.nova
/.vscode
/.zed
tools/git-askpass.ps1
podman-compose.dev.yml
test-results
GEMINI.md

View File

@@ -1 +1,80 @@
{}
{
"login_failed": "Diese Anmeldedaten wurden nicht gefunden.",
"login_success": "Sie sind nun eingeloggt.",
"registration_failed": "Registrierung fehlgeschlagen.",
"registration_success": "Registrierung erfolgreich bitte mit dem Kauf fortfahren.",
"already_logged_in": "Sie sind bereits eingeloggt.",
"failed_credentials": "Diese Anmeldedaten wurden nicht gefunden.",
"header": {
"login": "Anmelden",
"register": "Registrieren",
"home": "Startseite",
"packages": "Pakete",
"blog": "Blog",
"occasions": {
"wedding": "Hochzeit",
"birthday": "Geburtstag",
"corporate": "Firmenevent"
},
"contact": "Kontakt"
},
"login": {
"title": "Die Fotospiel App",
"description": "Melde dich mit deinem Fotospiel-Zugang an und steuere deine Events zentral in einem Dashboard.",
"brand": "Die Fotospiel App",
"logo_alt": "Logo Die Fotospiel App",
"identifier": "E-Mail oder Username",
"identifier_placeholder": "z. B. name@beispiel.de oder hochzeit_julia",
"username_or_email": "Username oder E-Mail",
"email": "E-Mail-Adresse",
"email_placeholder": "ihre@email.de",
"password": "Passwort",
"password_placeholder": "Ihr Passwort",
"remember": "Angemeldet bleiben",
"forgot": "Passwort vergessen?",
"submit": "Anmelden",
"oauth_divider": "oder",
"google_cta": "Mit Google anmelden",
"google_helper": "Nutze dein Google-Konto, um dich sicher bei der Eventverwaltung anzumelden.",
"no_account": "Noch keinen Zugang?",
"sign_up": "Jetzt registrieren"
},
"register": {
"title": "Registrieren",
"name": "Vollständiger Name",
"username": "Username",
"email": "E-Mail-Adresse",
"password": "Passwort",
"password_confirmation": "Passwort bestätigen",
"first_name": "Vorname",
"last_name": "Nachname",
"address": "Adresse",
"phone": "Telefonnummer",
"privacy_consent": "Ich stimme der Datenschutzerklärung zu und akzeptiere die Verarbeitung meiner persönlichen Daten.",
"privacy_policy_link": "Datenschutzerklärung",
"submit": "Registrieren",
"first_name_placeholder": "Vorname",
"last_name_placeholder": "Nachname",
"email_placeholder": "beispiel@email.de",
"address_placeholder": "Straße Hausnummer, PLZ Ort",
"phone_placeholder": "+49 170 1234567",
"username_placeholder": "z. B. hochzeit_julia",
"password_placeholder": "Mindestens 8 Zeichen",
"password_confirmation_placeholder": "Passwort erneut eingeben",
"server_error_title": "Registrierung konnte nicht abgeschlossen werden",
"server_error_message": "Auf unserer Seite ist ein Fehler aufgetreten. Bitte versuche es später erneut oder kontaktiere support@fotospiel.de.",
"session_expired_title": "Sicherheitsprüfung abgelaufen",
"session_expired_message": "Deine Sitzung ist abgelaufen. Lade die Seite neu und versuche es erneut."
},
"verification": {
"notice": "Bitte bestätigen Sie Ihre E-Mail-Adresse.",
"resend": "E-Mail erneut senden",
"success_title": "E-Mail bestätigt",
"success_message": "Deine E-Mail ist bestätigt. Du kannst dich jetzt anmelden.",
"checkout_success_message": "E-Mail bestätigt. Du kannst mit dem Checkout fortfahren.",
"toast_success": "E-Mail erfolgreich bestätigt.",
"expired_title": "Bestätigungslink abgelaufen",
"expired_message": "Dieser Bestätigungslink ist nicht mehr gültig. Fordere unten einen neuen Link an.",
"toast_error": "Bestätigungslink abgelaufen. Bitte fordere einen neuen Link an."
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,80 @@
{}
{
"login_failed": "Invalid email or password.",
"login_success": "You are now logged in.",
"registration_failed": "Registration failed.",
"registration_success": "Registration successful proceed with purchase.",
"already_logged_in": "You are already logged in.",
"failed_credentials": "Wrong credentials.",
"header": {
"login": "Login",
"register": "Register",
"home": "Home",
"packages": "Packages",
"blog": "Blog",
"occasions": {
"wedding": "Wedding",
"birthday": "Birthday",
"corporate": "Corporate Event"
},
"contact": "Contact"
},
"login": {
"title": "Die Fotospiel App",
"description": "Sign in with your Fotospiel account to manage every event in one place.",
"brand": "Die Fotospiel App",
"logo_alt": "Fotospiel App logo",
"identifier": "Email or Username",
"identifier_placeholder": "you@example.com or username",
"username_or_email": "Username or Email",
"email": "Email Address",
"email_placeholder": "your@email.com",
"password": "Password",
"password_placeholder": "Your password",
"remember": "Stay logged in",
"forgot": "Forgot password?",
"submit": "Login",
"oauth_divider": "or",
"google_cta": "Continue with Google",
"google_helper": "Use your Google account to access the event dashboard securely.",
"no_account": "Don't have access yet?",
"sign_up": "Create an account"
},
"register": {
"title": "Register",
"name": "Full Name",
"username": "Username",
"email": "Email Address",
"password": "Password",
"password_confirmation": "Confirm password",
"first_name": "First Name",
"last_name": "Last Name",
"address": "Address",
"phone": "Phone Number",
"privacy_consent": "I agree to the privacy policy and accept the processing of my personal data.",
"privacy_policy_link": "Privacy Policy",
"submit": "Register",
"first_name_placeholder": "First name",
"last_name_placeholder": "Last name",
"email_placeholder": "you@example.com",
"address_placeholder": "Street, ZIP, City",
"phone_placeholder": "+1 555 123 4567",
"username_placeholder": "e.g. wedding_julia",
"password_placeholder": "At least 8 characters",
"password_confirmation_placeholder": "Repeat your password",
"server_error_title": "We couldn't finish your registration",
"server_error_message": "Something went wrong on our side. Please try again in a moment or contact support@fotospiel.de.",
"session_expired_title": "Security check expired",
"session_expired_message": "Your session expired. Refresh the page and try again."
},
"verification": {
"notice": "Please verify your email address.",
"resend": "Resend email",
"success_title": "Email verified",
"success_message": "Your email is confirmed. You can sign in now.",
"checkout_success_message": "Email confirmed. Continue your checkout to finish the order.",
"toast_success": "Email verified successfully.",
"expired_title": "Verification link expired",
"expired_message": "That verification link is no longer valid. Request a new email below.",
"toast_error": "Verification link expired. Request a new one."
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -22,6 +22,12 @@ const InertiaFallback: React.FC = () => (
</div>
);
const LoadingFallback: React.FC = () => (
<div className="flex min-h-screen items-center justify-center text-sm text-muted-foreground">
Lade...
</div>
);
initSentry('inertia');
const LocaleSync: React.FC<{ children: React.ReactNode }> = ({ children }) => {
@@ -75,11 +81,13 @@ createInertiaApp({
<AppearanceProvider>
<ConsentProvider>
<I18nextProvider i18n={i18n}>
<LocaleSync>
<App {...props} />
</LocaleSync>
<CookieBanner />
<Toaster position="top-right" toastOptions={{ duration: 4000 }} />
<React.Suspense fallback={<LoadingFallback />}>
<LocaleSync>
<App {...props} />
</LocaleSync>
<CookieBanner />
<Toaster position="top-right" toastOptions={{ duration: 4000 }} />
</React.Suspense>
</I18nextProvider>
</ConsentProvider>
</AppearanceProvider>

View File

@@ -32,7 +32,7 @@ i18n
loadPath: '/lang/{{lng}}/{{ns}}.json?v=20251222',
},
react: {
useSuspense: false,
useSuspense: true,
},
});