Replace the old Google-only login card with a public landing page (Welcome.tsx): hero + auth card (email+password Sign in / Create account / Forgot password, Continue with Google, explicit Try-the-demo) over a feature pitch (6 pain->solution cards) and demo-account screenshot slots (graceful placeholder until the images are dropped into frontend/public/welcome/). Auth forms wire to the 5a endpoints; errors show inline via a new req() quiet flag (no global modal for a wrong password). Handles ?verify, ?reset (set-new-password form), ?access banners. EN/HU/DE. Verified end-to-end on a fresh load: render, register->approve->password-login.
73 lines
3.9 KiB
JSON
73 lines
3.9 KiB
JSON
{
|
|
"hero": {
|
|
"title": "Deine YouTube-Abos, so wie ein Feed funktionieren sollte.",
|
|
"subtitle": "Siftlode sammelt jeden Upload der Kanäle, denen du folgst, in einem aufgeräumten, filterbaren Feed — kein Algorithmus entscheidet, was du siehst, und kein Shorts- oder Live-Lärm, außer du willst es.",
|
|
"trust": "Selbst gehostet und privat. Melde dich per E-Mail an oder fahre mit Google fort."
|
|
},
|
|
"preview": {
|
|
"feed": "Der Feed — filtern nach Kanal, Sprache, Thema, Länge und Datum.",
|
|
"channels": "Kanal-Verwaltung",
|
|
"playlists": "Wiedergabelisten"
|
|
},
|
|
"features": {
|
|
"heading": "Warum Siftlode",
|
|
"readable": {
|
|
"title": "Deine Abos, endlich lesbar",
|
|
"body": "Sortiere und filtere nach Kanal, Sprache, Thema, Länge oder Datum — und blende Kanäle aus, ohne sie zu deabonnieren. Du entscheidest, was erscheint, nicht ein Algorithmus."
|
|
},
|
|
"neverMiss": {
|
|
"title": "Verpasse keinen Upload",
|
|
"body": "Jedes Video jedes Kanals, dem du folgst, landet in einem Feed. Shorts und Livestreams sind standardmäßig ausgeblendet — so sind es nur die Videos, für die du gekommen bist."
|
|
},
|
|
"playlists": {
|
|
"title": "Playlists, die in beide Richtungen synchronisieren",
|
|
"body": "Erstelle Playlists lokal und halte sie mit YouTube synchron — Änderungen fließen in beide Richtungen."
|
|
},
|
|
"player": {
|
|
"title": "Schau in der App, mach da weiter, wo du aufgehört hast",
|
|
"body": "Ein In-App-Player setzt jedes Video dort fort, wo du gestoppt hast — kein Empfehlungs-Strudel, der dich ablenkt."
|
|
},
|
|
"channels": {
|
|
"title": "Eine echte Kanal-Verwaltung",
|
|
"body": "Priorisiere die Kanäle, die dir wichtig sind, tagge sie nach deiner Art und filtere den Feed nach deinen eigenen Tags."
|
|
},
|
|
"private": {
|
|
"title": "Selbst gehostet, privat, mehrsprachig",
|
|
"body": "Betreibe es selbst — deine Daten bleiben deine. Mehrbenutzerfähig, mit der Oberfläche auf Englisch, Ungarisch und Deutsch."
|
|
}
|
|
},
|
|
"auth": {
|
|
"signinTitle": "Anmelden",
|
|
"createTitle": "Konto erstellen",
|
|
"forgotTitle": "Passwort zurücksetzen",
|
|
"resetTitle": "Neues Passwort festlegen",
|
|
"email": "E-Mail",
|
|
"password": "Passwort",
|
|
"newPassword": "Neues Passwort (min. {{min}} Zeichen)",
|
|
"invalidEmail": "Gib eine gültige E-Mail-Adresse ein.",
|
|
"weakPassword": "Das Passwort muss mindestens {{min}} Zeichen lang sein.",
|
|
"genericError": "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
|
|
"working": "Einen Moment…",
|
|
"signinButton": "Anmelden",
|
|
"createButton": "Konto erstellen",
|
|
"forgotButton": "Reset-Link senden",
|
|
"resetButton": "Passwort festlegen",
|
|
"createLink": "Konto erstellen",
|
|
"forgotLink": "Passwort vergessen?",
|
|
"backToSignin": "Zurück zur Anmeldung",
|
|
"or": "oder",
|
|
"google": "Mit Google fortfahren",
|
|
"tryDemo": "Demo ausprobieren",
|
|
"demoHint": "Gib eine E-Mail ein, die für das Demo-Konto freigeschaltet ist.",
|
|
"demoEmail": "Demo-E-Mail",
|
|
"demoEnter": "Eintreten",
|
|
"demoDenied": "Diese E-Mail ist nicht für die Demo freigeschaltet. Bitte den Admin, sie hinzuzufügen.",
|
|
"registerDone": "Fast geschafft — prüfe deine E-Mails auf den Bestätigungslink. Nach der Bestätigung gibt ein Admin dein Konto frei, bevor du dich anmelden kannst.",
|
|
"forgotDone": "Falls zu dieser E-Mail ein Konto gehört, haben wir einen Reset-Link gesendet. Prüfe dein Postfach.",
|
|
"resetDone": "Dein Passwort wurde festgelegt — du kannst dich jetzt anmelden.",
|
|
"verifyOk": "E-Mail bestätigt. Sobald ein Admin dein Konto freigibt, kannst du dich anmelden.",
|
|
"verifyInvalid": "Dieser Bestätigungslink ist ungültig oder abgelaufen.",
|
|
"accessRequested": "Danke — wir haben deine Anfrage erfasst. Ein Admin wird sie prüfen.",
|
|
"accessDenied": "Dieses Konto ist für diese Instanz noch nicht freigegeben — registriere dich unten oder bitte den Admin um Zugang."
|
|
}
|
|
}
|