feat(onboarding): remove dead ends for new users (#55)

Registration shows the address used and can start over.
Confirm page says an admin approves; no login link.
Welcome puts next steps first; Steam link returns to the dashboard.
Dashboard and library explain an empty or private library.
First sync shows queued, polls slower up to 10 min, then a calm text.
Login: simple checks, resend offer after 401, password toggles.
Only a real expired link counts as invalid; typed passwords stay.
Default language follows the browser; texts are platform-neutral.
This commit is contained in:
lobo committed 2026-10-21 09:37:17 +02:00
1 parent a60010e055
commit f9f0d94e2c
45 files changed
+979 -171

No files matched your search

+30 -12
View File
@@ -11,14 +11,17 @@
"SUBMIT": "Spiel betreten",
"NO_ACCOUNT": "Noch kein Konto?",
"FORGOT_PASSWORD": "Passwort vergessen?",
"ERROR_EMAIL": "Gib eine gültige E-Mail-Adresse mit „@“ und „.“ ein.",
"ERROR_EMAIL": "Gib eine E-Mail-Adresse mit „@“ ein.",
"ERROR_PASSWORD": "Das Passwort darf nicht leer sein.",
"ERROR_INVALID_CREDENTIALS": "E-Mail oder Passwort ist falsch.",
"ERROR_TOO_MANY_ATTEMPTS": "Zu viele fehlgeschlagene Versuche. Versuche es in {{minutes}} Minuten noch einmal.",
"ERROR_GENERIC": "Anmeldung fehlgeschlagen. Versuche es später noch einmal.",
"SESSION_EXPIRED": "Deine Sitzung ist abgelaufen. Bitte melde dich erneut an.",
"ERROR_ACCOUNT_BLOCKED": "Dieses Konto ist gesperrt. Bitte wende dich an den Admin.",
"ERROR_ACCOUNT_PENDING": "Deine Registrierung wartet auf den Admin. Du bekommst eine Mail, sobald sie entschieden ist."
"ERROR_ACCOUNT_PENDING": "Deine Registrierung wartet auf den Admin. Du bekommst eine Mail, sobald sie entschieden ist.",
"NOT_CONFIRMED_HINT": "Noch nicht bestätigt? Lass dir den Link noch einmal senden.",
"SHOW_PASSWORD": "Passwort anzeigen",
"HIDE_PASSWORD": "Passwort verbergen"
},
"REGISTRATION": {
"TITLE": "Registrieren",
@@ -26,7 +29,8 @@
"PASSWORD": "Passwort",
"PASSWORD_CONFIRMATION": "Passwort bestätigen",
"SUBMIT": "Konto erstellen",
"SUCCESS": "Wir haben dir eine Mail geschickt. Klick auf den Link darin, um deine Adresse zu bestätigen und dein Passwort zu wählen; erst dann sieht der Admin deine Anfrage.",
"SENT_TO": "Wir haben den Link an {{email}} geschickt.",
"START_OVER": "Falsche Adresse? Neu beginnen",
"RESEND_EMAIL": "E-Mail",
"RESEND": "Link noch einmal senden",
"RESEND_SENT": "Wenn für diese Adresse eine unbestätigte Registrierung besteht, ist ein neuer Link unterwegs.",
@@ -49,6 +53,7 @@
"DONE": "Dein Passwort ist geändert. Melde dich mit dem neuen an.",
"TO_LOGIN": "Anmelden",
"INVALID": "Dieser Link ist unbekannt, schon benutzt oder älter als 1 Stunde. Fordere einen neuen an:",
"ERROR_REJECTED": "Der Server hat dieses Passwort nicht akzeptiert. Prüfe die Regeln und versuche es erneut.",
"ERROR_TOO_MANY": "Zu viele Versuche. Bitte versuche es in {{minutes}} Minuten noch einmal.",
"ERROR_GENERIC": "Das hat nicht geklappt. Bitte versuche es noch einmal."
},
@@ -56,9 +61,9 @@
"TITLE": "E-Mail-Adresse bestätigen",
"INTRO": "Wähle ein Passwort, um deine E-Mail-Adresse zu bestätigen.",
"SUBMIT": "Bestätigen",
"DONE": "Deine Adresse ist bestätigt. Ein Admin prüft deine Anfrage; du bekommst eine Mail, sobald entschieden ist.",
"DONE": "Deine Adresse ist bestätigt. Du bekommst eine Mail, sobald ein Admin dein Konto freigegeben hat.",
"INVALID": "Dieser Link ist unbekannt, schon benutzt oder älter als 24 Stunden. Fordere einen neuen an:",
"TO_LOGIN": "Anmelden"
"ERROR_REJECTED": "Der Server hat dieses Passwort nicht akzeptiert. Prüfe die Regeln und versuche es erneut."
},
"SETTINGS": {
"PROFILE_STYLE": "Aussehen des Profils",
@@ -211,6 +216,7 @@
"EMAIL_INVALID": "Gib eine gültige E-Mail-Adresse ein.",
"PASSWORD_TOO_SHORT": "Passwort muss mindestens 8 Zeichen haben.",
"PASSWORD_TOO_LONG": "Passwort ist zu lang: höchstens 72 Zeichen, mit Umlauten oder Emoji weniger.",
"PASSWORD_RULES": "Mindestens 8 Zeichen, höchstens 72 (mit Umlauten oder Emoji weniger).",
"PASSWORD_CONFIRMATION_REQUIRED": "Bestätige dein Passwort.",
"CURRENT_PASSWORD_REQUIRED": "Gib dein aktuelles Passwort ein.",
"PASSWORD_MISMATCH": "Die Passwörter stimmen nicht überein.",
@@ -225,12 +231,19 @@
"DASHBOARD": {
"LOADING": "Lade Dashboard ...",
"HELLO": "Hallo",
"STEAM_GAMES": "Steam-Spiele",
"GAMES": "Spiele",
"NO_STEAM_ID": "Noch kein Steam-Konto verknüpft – verknüpfe es in den Einstellungen",
"MOST_PLAYED": "Meistgespielt",
"SHOW_ALL": "Alle anzeigen",
"TO_LIBRARY": "Zur Bibliothek",
"WELCOME_BACK": "Willkommen zurück",
"WELCOME": "Willkommen",
"EMPTY": {
"TITLE": "Deine Bibliothek ist leer",
"NO_SOURCE": "Verknüpfe eine Plattform, dann synchronisieren wir deine Spiele, oder importiere eine Liste.",
"LINK": "Steam / PlayStation verknüpfen",
"IMPORT": "Spiele importieren"
},
"CURRENTLY_PLAYING": "Spiele ich gerade",
"NOTHING_PLAYING": "Gerade nichts. Setze ein Spiel auf „Spiele ich“.",
"UP_NEXT": "Als Nächstes",
@@ -267,7 +280,8 @@
"SOURCE": { "STEAM": "Steam", "PSN": "PlayStation", "MANUAL": "Manuell" },
"TITLE": "Spielebibliothek",
"LOADING": "Lade Spiele …",
"EMPTY": "Noch keine Spiele. Synchronisiere deine Steam-Bibliothek oder füge ein Spiel hinzu.",
"EMPTY": "Noch keine Spiele. Verknüpfe eine Plattform, importiere eine Liste oder füge ein Spiel hinzu.",
"EMPTY_PRIVATE": "Der Sync hat keine Spiele gefunden. Bei Steam müssen die „Spieldetails“ öffentlich sein: [Steam-Datenschutzeinstellungen](https://steamcommunity.com/my/edit/settings). Danach erneut synchronisieren.",
"ERROR_LOAD": "Spiele konnten nicht geladen werden.",
"COMING": "Erscheint am {{date}}",
"COMING_SOON": "Erscheint bald",
@@ -284,10 +298,13 @@
"RESYNC": "Jetzt synchronisieren",
"SYNC_STARTED": "Sync gestartet …",
"SYNC_COOLDOWN": "In {{seconds}}s erneut versuchen",
"SYNCING": "Synchronisiere mit Steam …",
"SYNCING_FIRST_TIME": "Erster Sync mit Steam läuft. Deine Spiele erscheinen gleich.",
"SYNCING": "Synchronisiere deine Bibliothek …",
"SYNCING_FIRST_TIME": "Erster Sync läuft. Deine Spiele erscheinen gleich.",
"SYNC_QUEUED": "Erster Sync ist eingereiht …",
"SYNC_DURATION_HINT": "Meist unter einer Minute, große Bibliotheken länger.",
"SYNC_FAILED": "Sync fehlgeschlagen. Versuche es später noch einmal.",
"SYNC_STALE": "Der Sync dauert länger als sonst. Lade die Seite später neu.",
"SYNC_STALE": "Der Sync läuft noch. Große Bibliotheken brauchen mehr Zeit. Schau später noch einmal vorbei.",
"SYNC_NOT_STARTED": "Der erste Sync ist nicht gestartet. Versuche „Jetzt synchronisieren“.",
"LAST_SYNCED": "Zuletzt synchronisiert {{when}}",
"FILTER_ALL": "Alle",
"SEARCH_PLACEHOLDER": "Spiel suchen …",
@@ -1035,8 +1052,9 @@
"STEP_STEAM": "Steam-Konto verknüpfen",
"STEP_IMPORT": "Deine Spiele importieren",
"DONE": "Erledigt",
"GO": "Los geht's",
"SKIP": "Überspringen"
"GO": "Zum Dashboard",
"ACTION_STEAM": "Steam verknüpfen",
"ACTION_IMPORT": "Spiele importieren"
},
"ADMIN_NEWS": {
"NEW": "Neuer Eintrag",
+30 -12
View File
@@ -11,14 +11,17 @@
"SUBMIT": "Enter the game",
"NO_ACCOUNT": "No account yet?",
"FORGOT_PASSWORD": "Forgot password?",
"ERROR_EMAIL": "Enter a valid email address with '@' and '.'.",
"ERROR_EMAIL": "Enter an email address with '@'.",
"ERROR_PASSWORD": "The password must not be empty.",
"ERROR_INVALID_CREDENTIALS": "Email or password is wrong.",
"ERROR_TOO_MANY_ATTEMPTS": "Too many failed attempts. Please try again in {{minutes}} minutes.",
"ERROR_GENERIC": "Login failed. Please try again later.",
"SESSION_EXPIRED": "Your session has expired. Please log in again.",
"ERROR_ACCOUNT_BLOCKED": "This account is blocked. Please contact the admin.",
"ERROR_ACCOUNT_PENDING": "Your registration is waiting for the admin. You will get an email once it is decided."
"ERROR_ACCOUNT_PENDING": "Your registration is waiting for the admin. You will get an email once it is decided.",
"NOT_CONFIRMED_HINT": "Not confirmed yet? Have the link sent again.",
"SHOW_PASSWORD": "Show password",
"HIDE_PASSWORD": "Hide password"
},
"REGISTRATION": {
"TITLE": "Register",
@@ -26,7 +29,8 @@
"PASSWORD": "Password",
"PASSWORD_CONFIRMATION": "Confirm password",
"SUBMIT": "Create account",
"SUCCESS": "We sent you an email. Click the link in it to confirm your address and choose your password; only then will the admin see your request.",
"SENT_TO": "We sent the link to {{email}}.",
"START_OVER": "Wrong address? Start over",
"RESEND_EMAIL": "Email",
"RESEND": "Send the link again",
"RESEND_SENT": "If this address has an unconfirmed registration, a new link is on its way.",
@@ -49,6 +53,7 @@
"DONE": "Your password has been changed. Log in with the new one.",
"TO_LOGIN": "Log in",
"INVALID": "This link is unknown, already used or older than 1 hour. Request a new one:",
"ERROR_REJECTED": "The server did not accept this password. Check the rules and try again.",
"ERROR_TOO_MANY": "Too many attempts. Please try again in {{minutes}} minutes.",
"ERROR_GENERIC": "That did not work. Please try again."
},
@@ -56,9 +61,9 @@
"TITLE": "Confirm your email address",
"INTRO": "Choose a password to confirm your email address.",
"SUBMIT": "Confirm",
"DONE": "Your address is confirmed. An admin will check your request; you will get an email once it is decided.",
"DONE": "Your address is confirmed. You get a mail once an admin has approved your account.",
"INVALID": "This link is unknown, already used or older than 24 hours. Request a new one:",
"TO_LOGIN": "Log in"
"ERROR_REJECTED": "The server did not accept this password. Check the rules and try again."
},
"SETTINGS": {
"PROFILE_STYLE": "Profile look",
@@ -211,6 +216,7 @@
"EMAIL_INVALID": "Enter a valid email address.",
"PASSWORD_TOO_SHORT": "Password must be at least 8 characters.",
"PASSWORD_TOO_LONG": "Password is too long: at most 72 characters, fewer with umlauts or emoji.",
"PASSWORD_RULES": "At least 8 characters, at most 72 (fewer with umlauts or emoji).",
"PASSWORD_CONFIRMATION_REQUIRED": "Please confirm your password.",
"CURRENT_PASSWORD_REQUIRED": "Enter your current password.",
"PASSWORD_MISMATCH": "Passwords do not match.",
@@ -225,12 +231,19 @@
"DASHBOARD": {
"LOADING": "Loading dashboard ...",
"HELLO": "Hello",
"STEAM_GAMES": "Steam games",
"GAMES": "Games",
"NO_STEAM_ID": "No Steam account linked yet – link it in the settings",
"MOST_PLAYED": "Most played",
"SHOW_ALL": "Show all",
"TO_LIBRARY": "Go to library",
"WELCOME_BACK": "Welcome back",
"WELCOME": "Welcome",
"EMPTY": {
"TITLE": "Your library is empty",
"NO_SOURCE": "Link a platform and we sync your games, or import a list.",
"LINK": "Link Steam / PlayStation",
"IMPORT": "Import games"
},
"CURRENTLY_PLAYING": "Currently playing",
"NOTHING_PLAYING": "Nothing right now. Set a game to \"Playing\".",
"UP_NEXT": "Up next",
@@ -267,7 +280,8 @@
"SOURCE": { "STEAM": "Steam", "PSN": "PlayStation", "MANUAL": "Manual" },
"TITLE": "Game Library",
"LOADING": "Loading games …",
"EMPTY": "No games yet. Sync your Steam library or add a game.",
"EMPTY": "No games yet. Link a platform, import a list or add a game.",
"EMPTY_PRIVATE": "The sync found no games. On Steam, \"Game details\" must be public: [Steam privacy settings](https://steamcommunity.com/my/edit/settings). Then sync again.",
"ERROR_LOAD": "Could not load your games.",
"COMING": "Out on {{date}}",
"COMING_SOON": "Coming soon",
@@ -284,10 +298,13 @@
"RESYNC": "Sync now",
"SYNC_STARTED": "Sync started …",
"SYNC_COOLDOWN": "Try again in {{seconds}}s",
"SYNCING": "Syncing with Steam …",
"SYNCING_FIRST_TIME": "First sync with Steam in progress. Your games will appear here shortly.",
"SYNCING": "Syncing your library …",
"SYNCING_FIRST_TIME": "First sync in progress. Your games will appear here shortly.",
"SYNC_QUEUED": "First sync queued …",
"SYNC_DURATION_HINT": "Usually under a minute, large libraries longer.",
"SYNC_FAILED": "Sync failed. Please try again later.",
"SYNC_STALE": "The sync is taking longer than usual. Reload the page later.",
"SYNC_STALE": "The sync is still running. Large libraries need more time. Check back later.",
"SYNC_NOT_STARTED": "The first sync did not start. Try \"Sync now\".",
"LAST_SYNCED": "Last synced {{when}}",
"FILTER_ALL": "All",
"SEARCH_PLACEHOLDER": "Search games …",
@@ -1035,8 +1052,9 @@
"STEP_STEAM": "Link your Steam account",
"STEP_IMPORT": "Import your games",
"DONE": "Done",
"GO": "Let's go",
"SKIP": "Skip"
"GO": "Go to dashboard",
"ACTION_STEAM": "Link Steam",
"ACTION_IMPORT": "Import games"
},
"ADMIN_NEWS": {
"NEW": "New entry",