feat: per-account login lockout, mail index, resend captcha, i18n scoping
Gitea Actions Runner Test / test-job (push) Successful in 2s
CI / check (push) Successful in 28s
CI / tests-integration (push) Successful in 1m42s
CI / tests-unit (push) Failing after 1m45s
CI / tests-ui (push) Successful in 2m29s
CI / preflight (push) Skipped
CI / deploy (push) Skipped
Gitea Actions Runner Test / test-job (push) Successful in 2s
CI / check (push) Successful in 28s
CI / tests-integration (push) Successful in 1m42s
CI / tests-unit (push) Failing after 1m45s
CI / tests-ui (push) Successful in 2m29s
CI / preflight (push) Skipped
CI / deploy (push) Skipped
Closes the four HIGH/MEDIUM items left open after the previous pass. Login lockout - The only login limits were keyed on the client IP, so a distributed attempt could grind on one account indefinitely. Added a per-account lockout with a budget of 8 failures per 15 minutes. - The bucket is keyed on the RESOLVED account id, not on the submitted string: users may sign in with either username or e-mail and neither the lookup nor the input normaliser folds case, so an input-keyed bucket would hand out a fresh budget per spelling of the same account. - precheckLogin and NextAuth's authorize share the bucket, so the pre-check cannot be used to buy extra attempts and a client that skips it entirely is still bounded. Both check the lockout BEFORE verifying the password: the success path clears the counter, which would otherwise walk a locked account straight back in on the right password. - A successful login clears the failures, which needs two new primitives in rate-limit.ts: peekRateLimit (read-only, does not consume a unit) and clearRateLimit. - Fixed a latent inconsistency while doing so: the in-process bucket capped its counter at the limit while Redis' INCR kept climbing, so the two backends disagreed about how far over the limit a key was. Both now track the true count. Mail lookup index - Added an index on users.mail (0035). Password reset, e-mail verification and the resend cooldown all resolve a single account from a submitted address and were full table scans of `users`. Deliberately non-unique: legacy rows can hold the same address more than once, so a unique index would fail to apply. Resend captcha - /verify's resend form triggers real outbound mail and was reachable with only a cooldown. It now runs the configured captcha before the account lookup and before any send. Client message payload - The root layout serialised the whole catalogue into every page. pages.admin and admin are ~177 KB of the ~235 KB and are unreachable from the public route group, so that layout now installs its own provider with the staff namespaces removed. Nested providers replace rather than merge, which is why this has to live in the segment layout. /admin, /mod, /client and /admin-next keep the full set; a guard test fails if a public page ever references a staff namespace.
This commit is contained in:
1 parent
6cc45d7413
commit
179484642f
41 files changed
+863
-42
No files matched your search
@@ -6087,6 +6087,7 @@
|
||||
"errorInvalid2fa": "رمز التحقق بخطوتين غير صالح",
|
||||
"errorUnverified": "يرجى التحقق من بريدك الإلكتروني قبل تسجيل الدخول.",
|
||||
"errorCaptcha": "فشل التحقق من الكابتشا. حاول مرة أخرى.",
|
||||
"errorLocked": "عدد كبير جدًا من المحاولات الفاشلة. حاول مرة أخرى لاحقًا.",
|
||||
"whoIsOnline": "من متصل الآن",
|
||||
"newestCitizens": "أحدث السكان",
|
||||
"usersOnline": "{count} متصل",
|
||||
@@ -6203,7 +6204,8 @@
|
||||
"resendEmail": "البريد الإلكتروني",
|
||||
"resendButton": "إرسال رابط جديد",
|
||||
"resendSent": "إذا كان لهذا العنوان حساب، فسيصل رابط تحقق جديد قريبًا — تحقق من بريدك الوارد.",
|
||||
"resendFailed": "تعذّر إرسال رابط جديد. حاول مرة أخرى بعد بضع دقائق."
|
||||
"resendFailed": "تعذّر إرسال رابط جديد. حاول مرة أخرى بعد بضع دقائق.",
|
||||
"resendCaptchaFailed": "تعذّر إرسال رابط جديد. تحقّق من الكابتشا ثم حاول مجددًا."
|
||||
},
|
||||
"banned": {
|
||||
"title": "You are banned",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Влезте, за да продължите към {hotelName}",
|
||||
"errorUnverified": "Моля, потвърдете имейла си, преди да влезете.",
|
||||
"errorCaptcha": "Проверката на капчата е неуспешна. Опитайте отново.",
|
||||
"errorLocked": "Твърде много неуспешни опита. Опитайте отново по-късно.",
|
||||
"whoIsOnline": "Кой е на линия",
|
||||
"newestCitizens": "Най-нови граждани",
|
||||
"usersOnline": "{count} на линия",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Имейл адрес",
|
||||
"resendButton": "Изпрати нова вързка",
|
||||
"resendSent": "Ако този адрес има акаунт, нова вързка за потвърждение е на път — проверете пощата си.",
|
||||
"resendFailed": "Не можахме да изпратим нова вързка. Опитайте отново след няколко минути."
|
||||
"resendFailed": "Не можахме да изпратим нова вързка. Опитайте отново след няколко минути.",
|
||||
"resendCaptchaFailed": "Не може да се изпрати нов линк. Проверете капчата и опитайте отново."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Вие сте забранени",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Přihlas se pro pokračování do {hotelName}",
|
||||
"errorUnverified": "Před přihlášením ověřte svou e-mailovou adresu.",
|
||||
"errorCaptcha": "Ověření captcha selhalo. Zkuste to znovu.",
|
||||
"errorLocked": "Příliš mnoho neúspěšných pokusů. Zkuste to prosím později.",
|
||||
"whoIsOnline": "Kdo je online",
|
||||
"newestCitizens": "Nejnovější občané",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-mailová adresa",
|
||||
"resendButton": "Odeslat nový odkaz",
|
||||
"resendSent": "Pokud má tento e-mail účet, nový ověřovací odkaz je na cestě — zkontrolujte schránku.",
|
||||
"resendFailed": "Nový odkaz se nepodařilo odeslat. Zkuste to znovu za několik minut."
|
||||
"resendFailed": "Nový odkaz se nepodařilo odeslat. Zkuste to znovu za několik minut.",
|
||||
"resendCaptchaFailed": "Nový odkaz se nepodařilo odeslat. Ověřte captchu a zkuste to znovu."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Máte zákaz",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Log ind for at fortsætte til {hotelName}",
|
||||
"errorUnverified": "Bekræft din e-mail, før du logger ind.",
|
||||
"errorCaptcha": "Captcha-verificering mislykkedes. Prøv igen.",
|
||||
"errorLocked": "For mange mislykkede forsøg. Prøv igen senere.",
|
||||
"whoIsOnline": "Hvem er online",
|
||||
"newestCitizens": "Nyeste borgere",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-mailadresse",
|
||||
"resendButton": "Send nyt link",
|
||||
"resendSent": "Hvis den adresse har en konto, er et nyt bekræftelseslink på vej — tjek din indbakke.",
|
||||
"resendFailed": "Det var ikke muligt at sende et nyt link. Prøv igen om et par minutter."
|
||||
"resendFailed": "Det var ikke muligt at sende et nyt link. Prøv igen om et par minutter.",
|
||||
"resendCaptchaFailed": "Kunne ikke sende et nyt link. Kontrollér captchaen og prøv igen."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Du er bandlyst",
|
||||
|
||||
@@ -812,6 +812,7 @@
|
||||
"welcomeBackSub": "Melde dich an, um zu {hotelName} zu gelangen",
|
||||
"errorUnverified": "Bitte bestätige deine E-Mail-Adresse, bevor du dich anmeldest.",
|
||||
"errorCaptcha": "Captcha-Verifizierung fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"errorLocked": "Zu viele fehlgeschlagene Versuche. Bitte später erneut versuchen.",
|
||||
"whoIsOnline": "Wer ist online",
|
||||
"newestCitizens": "Neueste Bürger",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -928,7 +929,8 @@
|
||||
"resendEmail": "E-Mail-Adresse",
|
||||
"resendButton": "Neuen Link senden",
|
||||
"resendSent": "Wenn zu dieser Adresse ein Konto gehört, ist ein neuer Bestätigungslink unterwegs — prüf dein Postfach.",
|
||||
"resendFailed": "Der neue Link konnte nicht gesendet werden. Versuche es in einigen Minuten erneut."
|
||||
"resendFailed": "Der neue Link konnte nicht gesendet werden. Versuche es in einigen Minuten erneut.",
|
||||
"resendCaptchaFailed": "Der konnte kein neuer Link gesendet werden. Bitte Captcha prüfen und erneut versuchen."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Du bist gebannt",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Συνδέσου για να συνεχίσεις στο {hotelName}",
|
||||
"errorUnverified": "Επαληθεύστε το email σας πριν συνδεθείτε.",
|
||||
"errorCaptcha": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.",
|
||||
"errorLocked": "Πάρα πολλές αποτυχημένες προσπάθειες. Δοκιμάστε ξανά αργότερα.",
|
||||
"whoIsOnline": "Ποιος είναι σε σύνδεση",
|
||||
"newestCitizens": "Νέοι πολίτες",
|
||||
"usersOnline": "{count} σε σύνδεση",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Διεύθυνση email",
|
||||
"resendButton": "Αποστολή νέου συνδέσμου",
|
||||
"resendSent": "Αν αυτή η διεύθυνση έχει λογαριασμό, ένας νέος σύνδεσμος επαλήθευσης είναι καθ' οδόν — ελέγξτε τα εισερχόμενά σας.",
|
||||
"resendFailed": "Δεν ήταν δυνατή η αποστολή νέου συνδέσμου. Δοκιμάστε ξανά σε λίγα λεπτά."
|
||||
"resendFailed": "Δεν ήταν δυνατή η αποστολή νέου συνδέσμου. Δοκιμάστε ξανά σε λίγα λεπτά.",
|
||||
"resendCaptchaFailed": "Δεν ήταν δυνατή η αποστολή νέου συνδέσμου. Ελέγξτε το captcha και δοκιμάστε ξανά."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Είστε απαγορευμένοι",
|
||||
|
||||
@@ -1014,6 +1014,7 @@
|
||||
"errorInvalid2fa": "Invalid 2FA code",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"errorLocked": "Too many failed sign-in attempts. Please try again later.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -1130,7 +1131,8 @@
|
||||
"resendEmail": "Email address",
|
||||
"resendButton": "Send new link",
|
||||
"resendSent": "If that address has an account, a new verification link is on its way — check your inbox.",
|
||||
"resendFailed": "Couldn’t send a new link. Wait a few minutes and try again."
|
||||
"resendFailed": "Couldn’t send a new link. Wait a few minutes and try again.",
|
||||
"resendCaptchaFailed": "Couldn’t send a new link. Please complete the captcha and try again."
|
||||
},
|
||||
"banned": {
|
||||
"title": "You are banned",
|
||||
|
||||
@@ -812,6 +812,7 @@
|
||||
"welcomeBackSub": "Inicia sesión para continuar en {hotelName}",
|
||||
"errorUnverified": "Verifica tu correo electrónico antes de iniciar sesión.",
|
||||
"errorCaptcha": "La verificación captcha falló. Inténtalo de nuevo.",
|
||||
"errorLocked": "Demasiados intentos de inicio de sesión fallidos. Inténtalo de nuevo más tarde.",
|
||||
"whoIsOnline": "Quién está en línea",
|
||||
"newestCitizens": "Ciudadanos más recientes",
|
||||
"usersOnline": "{count} en línea",
|
||||
@@ -928,7 +929,8 @@
|
||||
"resendEmail": "Dirección de correo electrónico",
|
||||
"resendButton": "Enviar nuevo enlace",
|
||||
"resendSent": "Si esa dirección tiene una cuenta, un nuevo enlace de verificación está en camino: revisa tu bandeja de entrada.",
|
||||
"resendFailed": "No se pudo enviar un nuevo enlace. Vuelve a intentarlo en unos minutos."
|
||||
"resendFailed": "No se pudo enviar un nuevo enlace. Vuelve a intentarlo en unos minutos.",
|
||||
"resendCaptchaFailed": "No se pudo enviar un nuevo enlace. Completa el captcha e inténtalo de nuevo."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Has sido baneado",
|
||||
|
||||
@@ -6087,6 +6087,7 @@
|
||||
"errorInvalid2fa": "Virheellinen 2FA-koodi",
|
||||
"errorUnverified": "Vahvista sähköpostiosoitteesi ennen kirjautumista.",
|
||||
"errorCaptcha": "Captcha-varmennus epäonnistui. Yritä uudelleen.",
|
||||
"errorLocked": "Liian monta epäonnistunutta kirjautumisyritystä. Yritä myöhemmin uudelleen.",
|
||||
"whoIsOnline": "Ketkä ovat paikalla",
|
||||
"newestCitizens": "Uusimmat asukkaat",
|
||||
"usersOnline": "{count} paikalla",
|
||||
@@ -6203,7 +6204,8 @@
|
||||
"resendEmail": "Sähköpostiosoite",
|
||||
"resendButton": "Lähetä uusi linkki",
|
||||
"resendSent": "Jos kyseiseen osoitteeseen on liitetty tili, uusi vahvistuslinkki on matkalla — tarkista sähköpostisi.",
|
||||
"resendFailed": "Uutta linkkiä ei voitu lähettää. Yritä uudelleen muutaman minuutin kuluttua."
|
||||
"resendFailed": "Uutta linkkiä ei voitu lähettää. Yritä uudelleen muutaman minuutin kuluttua.",
|
||||
"resendCaptchaFailed": "Uutta linkkiä ei voitu lähettää. Tarkista captcha ja yritä uudelleen."
|
||||
},
|
||||
"banned": {
|
||||
"title": "You are banned",
|
||||
|
||||
@@ -812,6 +812,7 @@
|
||||
"welcomeBackSub": "Connecte-toi pour continuer vers {hotelName}",
|
||||
"errorUnverified": "Veuillez vérifier votre e-mail avant de vous connecter.",
|
||||
"errorCaptcha": "La vérification captcha a échoué. Réessayez.",
|
||||
"errorLocked": "Trop de tentatives de connexion échouées. Réessayez plus tard.",
|
||||
"whoIsOnline": "Qui est en ligne",
|
||||
"newestCitizens": "Nouveaux citoyens",
|
||||
"usersOnline": "{count} en ligne",
|
||||
@@ -928,7 +929,8 @@
|
||||
"resendEmail": "Adresse e-mail",
|
||||
"resendButton": "Envoyer un nouveau lien",
|
||||
"resendSent": "Si cette adresse possède un compte, un nouveau lien de vérification est en route — vérifiez votre boîte mail.",
|
||||
"resendFailed": "Impossible d’envoyer un nouveau lien. Réessayez dans quelques minutes."
|
||||
"resendFailed": "Impossible d’envoyer un nouveau lien. Réessayez dans quelques minutes.",
|
||||
"resendCaptchaFailed": "Impossible d’envoyer un nouveau lien. Vérifiez le captcha et réessayez."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Vous êtes banni",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Prijavi se za nastavak u {hotelName}",
|
||||
"errorUnverified": "Potvrdite svoju e-poštu prije prijave.",
|
||||
"errorCaptcha": "Captcha verifikacija nije uspjela. Pokušajte ponovno.",
|
||||
"errorLocked": "Previše neuspjelih pokušaja. Pokušajte ponovo kasnije.",
|
||||
"whoIsOnline": "Tko je na mreži",
|
||||
"newestCitizens": "Najnoviji građani",
|
||||
"usersOnline": "{count} na mreži",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Adresa e-pošte",
|
||||
"resendButton": "Pošalji novu poveznicu",
|
||||
"resendSent": "Ako ta adresa ima račun, nova poveznica za verifikaciju je na putu — provjerite poštanski sandučić.",
|
||||
"resendFailed": "Novu poveznicu nije bilo moguće poslati. Pokušajte ponovo za nekoliko minuta."
|
||||
"resendFailed": "Novu poveznicu nije bilo moguće poslati. Pokušajte ponovo za nekoliko minuta.",
|
||||
"resendCaptchaFailed": "Nije moguće poslati novu vezu. Provjerite captcha i pokušajte ponovno."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Zabranjeni ste",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Jelentkezz be a {hotelName} folytatáshoz",
|
||||
"errorUnverified": "Kérlek, erősítsd meg az e-mail-címedet bejelentkezés előtt.",
|
||||
"errorCaptcha": "A captcha-ellenőrzés sikertelen. Próbáld újra.",
|
||||
"errorLocked": "Túl sok sikertelen bejelentkezési kísérlet. Próbálja újra később.",
|
||||
"whoIsOnline": "Ki van online",
|
||||
"newestCitizens": "Legújabb lakosok",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-mail cím",
|
||||
"resendButton": "Új link küldése",
|
||||
"resendSent": "Ha ehhez a címhez tartozik fiók, új megerősítő link útban van — nézze meg a postaládáját.",
|
||||
"resendFailed": "Az új linket nem sikerült elküldeni. Próbálja újra néhány perc múlva."
|
||||
"resendFailed": "Az új linket nem sikerült elküldeni. Próbálja újra néhány perc múlva.",
|
||||
"resendCaptchaFailed": "Nem sikerült új linket küldeni. Ellenőrizze a captchát, majd próbálja újra."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Ki vagy tiltva",
|
||||
|
||||
@@ -982,6 +982,7 @@
|
||||
"errorInvalid2fa": "Codice 2FA non valido",
|
||||
"errorUnverified": "Verifica il tuo indirizzo email prima di accedere.",
|
||||
"errorCaptcha": "Verifica captcha non riuscita. Riprova.",
|
||||
"errorLocked": "Troppi tentativi di accesso non riusciti. Riprova più tardi.",
|
||||
"welcomeBack": "Bentornato",
|
||||
"welcomeBackSub": "Accedi per continuare su {hotelName}",
|
||||
"whoIsOnline": "Chi è online",
|
||||
@@ -1100,7 +1101,8 @@
|
||||
"resendEmail": "Indirizzo e-mail",
|
||||
"resendButton": "Invia nuovo link",
|
||||
"resendSent": "Se quell'indirizzo ha un account, un nuovo link di verifica è in arrivo: controlla la casella.",
|
||||
"resendFailed": "Impossibile inviare un nuovo link. Riprova tra qualche minuto."
|
||||
"resendFailed": "Impossibile inviare un nuovo link. Riprova tra qualche minuto.",
|
||||
"resendCaptchaFailed": "Impossibile inviare un nuovo link. Verifica il captcha e riprova."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Sei stato bannato",
|
||||
|
||||
@@ -6087,6 +6087,7 @@
|
||||
"errorInvalid2fa": "2FAコードが正しくありません",
|
||||
"errorUnverified": "ログインする前にメールアドレスを認証してください。",
|
||||
"errorCaptcha": "認証コードの検証に失敗しました。再度お試しください。",
|
||||
"errorLocked": "ログインの失敗回数が多すぎます。しばらくしてから再度お試しください。",
|
||||
"whoIsOnline": "オンラインの人",
|
||||
"newestCitizens": "最新の住民",
|
||||
"usersOnline": "{count} 人がオンライン",
|
||||
@@ -6203,7 +6204,8 @@
|
||||
"resendEmail": "メールアドレス",
|
||||
"resendButton": "新しいリンクを送信",
|
||||
"resendSent": "そのアドレスにアカウントがあれば、新しい確認リンクが届くはずです。受信トレイをご確認ください。",
|
||||
"resendFailed": "新しいリンクを送信できませんでした。数分後にもう一度お試しください。"
|
||||
"resendFailed": "新しいリンクを送信できませんでした。数分後にもう一度お試しください。",
|
||||
"resendCaptchaFailed": "新しいリンクを送信できませんでした。reCAPTCHA を確認して再度お試しください。"
|
||||
},
|
||||
"banned": {
|
||||
"title": "You are banned",
|
||||
|
||||
@@ -1012,6 +1012,7 @@
|
||||
"errorInvalid2fa": "Ongeldige 2FA-code",
|
||||
"errorUnverified": "Verifieer je e-mail voordat je inlogt.",
|
||||
"errorCaptcha": "Captcha-verificatie mislukt. Probeer het opnieuw.",
|
||||
"errorLocked": "Te veel mislukte inlogpogingen. Probeer het later opnieuw.",
|
||||
"welcomeBack": "Welkom terug",
|
||||
"welcomeBackSub": "Log in om verder te gaan naar {hotelName}",
|
||||
"whoIsOnline": "Wie is online",
|
||||
@@ -1130,7 +1131,8 @@
|
||||
"resendEmail": "E-mailadres",
|
||||
"resendButton": "Nieuwe link versturen",
|
||||
"resendSent": "Als dit adres een account heeft, is er een nieuwe verificatielink onderweg — check je inbox.",
|
||||
"resendFailed": "De nieuwe link kon niet worden verstuurd. Probeer het over een paar minuten opnieuw."
|
||||
"resendFailed": "De nieuwe link kon niet worden verstuurd. Probeer het over een paar minuten opnieuw.",
|
||||
"resendCaptchaFailed": "Kon geen nieuwe link versturen. Voltooi de captcha en probeer het opnieuw."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Je bent verbannen",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Logg inn for å fortsette til {hotelName}",
|
||||
"errorUnverified": "Bekreft e-postadressen din før du logger inn.",
|
||||
"errorCaptcha": "Captcha-verifisering mislyktes. Prøv igjen.",
|
||||
"errorLocked": "For mange mislykkede påloggingsforsøk. Prøv igjen senere.",
|
||||
"whoIsOnline": "Hvem er påloggede",
|
||||
"newestCitizens": "Nyeste innbyggere",
|
||||
"usersOnline": "{count} påloggede",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-postadresse",
|
||||
"resendButton": "Send ny lenke",
|
||||
"resendSent": "Hvis den adressen har en konto, er en ny verifiseringslenke på vei — sjekk innboksen.",
|
||||
"resendFailed": "Kunne ikke sende en ny lenke. Prøv igjen om noen minutter."
|
||||
"resendFailed": "Kunne ikke sende en ny lenke. Prøv igjen om noen minutter.",
|
||||
"resendCaptchaFailed": "Kunne ikke sende en ny lenke. Kontroller captchaen og prøv igjen."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Du er utestengt",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Zaloguj się, aby kontynuować w {hotelName}",
|
||||
"errorUnverified": "Potwierdź swój e-mail przed zalogowaniem.",
|
||||
"errorCaptcha": "Weryfikacja captcha nie powiodła się. Spróbuj ponownie.",
|
||||
"errorLocked": "Zbyt wiele nieudanych prób logowania. Spróbuj ponownie później.",
|
||||
"whoIsOnline": "Kto jest online",
|
||||
"newestCitizens": "Najnowsi mieszkańcy",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Adres e-mail",
|
||||
"resendButton": "Wyślij nowy link",
|
||||
"resendSent": "Jeśli ten adres ma konto, nowy link weryfikacyjny jest już w drodze — sprawdź skrzynkę odbiorczą.",
|
||||
"resendFailed": "Nie udało się wysłać nowego linku. Spróbuj ponownie za kilka minut."
|
||||
"resendFailed": "Nie udało się wysłać nowego linku. Spróbuj ponownie za kilka minut.",
|
||||
"resendCaptchaFailed": "Nie udało się wysłać nowego linku. Zweryfikuj captchę i spróbuj ponownie."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Masz zakaz",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Entre para continuar em {hotelName}",
|
||||
"errorUnverified": "Verifique seu e-mail antes de entrar.",
|
||||
"errorCaptcha": "A verificação captcha falhou. Tente novamente.",
|
||||
"errorLocked": "Demasiadas tentativas de início de sessão falhadas. Tente novamente mais tarde.",
|
||||
"whoIsOnline": "Quem está online",
|
||||
"newestCitizens": "Cidadãos mais recentes",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Endereço de e-mail",
|
||||
"resendButton": "Enviar novo link",
|
||||
"resendSent": "Se esse endereço tiver uma conta, um novo link de verificação estará a caminho — confira a sua caixa de entrada.",
|
||||
"resendFailed": "Não foi possível enviar um novo link. Tente novamente daqui a alguns minutos."
|
||||
"resendFailed": "Não foi possível enviar um novo link. Tente novamente daqui a alguns minutos.",
|
||||
"resendCaptchaFailed": "Não foi possível enviar um novo link. Conclua o captcha e tente novamente."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Você está banido",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Autentifică-te pentru a continua pe {hotelName}",
|
||||
"errorUnverified": "Te rugăm să îți verifici e-mailul înainte de a te autentifica.",
|
||||
"errorCaptcha": "Verificarea captcha a eșuat. Încearcă din nou.",
|
||||
"errorLocked": "Prea multe încercări de autentificare eșuate. Încearcă din nou mai târziu.",
|
||||
"whoIsOnline": "Cine este online",
|
||||
"newestCitizens": "Cei mai noi locuitori",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Adresă de e-mail",
|
||||
"resendButton": "Trimite un nou link",
|
||||
"resendSent": "Dacă acestă adresă are un cont, un nou link de verificare este pe drum — verifică căsuța.",
|
||||
"resendFailed": "Nu s-a putut trimite un nou link. Încearcă din nou în câteva minute."
|
||||
"resendFailed": "Nu s-a putut trimite un nou link. Încearcă din nou în câteva minute.",
|
||||
"resendCaptchaFailed": "Nu s-a putut trimite un link nou. Verifică captcha și încearcă din nou."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Esti interzis",
|
||||
|
||||
@@ -840,6 +840,7 @@
|
||||
"welcomeBackSub": "Войди, чтобы продолжить в {hotelName}",
|
||||
"errorUnverified": "Подтвердите адрес электронной почты перед входом.",
|
||||
"errorCaptcha": "Проверка captcha не пройдена. Попробуйте ещё раз.",
|
||||
"errorLocked": "Слишком много неудачных попыток входа. Повторите попытку позже.",
|
||||
"whoIsOnline": "Кто в сети",
|
||||
"newestCitizens": "Новые жители",
|
||||
"usersOnline": "{count} в сети",
|
||||
@@ -956,7 +957,8 @@
|
||||
"resendEmail": "Адрес электронной почты",
|
||||
"resendButton": "Отправить новую ссылку",
|
||||
"resendSent": "Если к этому адресу привязан аккаунт, новая ссылка уже в пути — проверьте почту.",
|
||||
"resendFailed": "Не удалось отправить новую ссылку. Попробуйте еще раз через несколько минут."
|
||||
"resendFailed": "Не удалось отправить новую ссылку. Попробуйте еще раз через несколько минут.",
|
||||
"resendCaptchaFailed": "Не удалось отправить новую ссылку. Пройдите проверку captcha и повторите."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Вы заблокированы",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Prihlás sa pre pokračovanie do {hotelName}",
|
||||
"errorUnverified": "Pred prihlásením overte svoju e-mailovú adresu.",
|
||||
"errorCaptcha": "Overenie captcha zlyhalo. Skúste to znova.",
|
||||
"errorLocked": "Príliš veľa neúspešných pokusov. Skúste to neskôr.",
|
||||
"whoIsOnline": "Kto je online",
|
||||
"newestCitizens": "Najnovší obyvatelia",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-mailová adresa",
|
||||
"resendButton": "Odoslať nový odkaz",
|
||||
"resendSent": "Ak má tento e-mail účet, nový overovací odkaz je na ceste — skontrolujte schránku.",
|
||||
"resendFailed": "Nový odkaz sa nepodarilo odoslať. Skúste to znova o niekoľko minút."
|
||||
"resendFailed": "Nový odkaz sa nepodarilo odoslať. Skúste to znova o niekoľko minút.",
|
||||
"resendCaptchaFailed": "Nepodarilo sa odoslať nový odkaz. Overte captchu a skúste to znova."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Máte zákaz",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Пријави се да наставиш ка {hotelName}",
|
||||
"errorUnverified": "Потврдите имејл пре пријаве.",
|
||||
"errorCaptcha": "Провера капче није успела. Покушајте поново.",
|
||||
"errorLocked": "Превише неуспелих покушаја. Покушајте поново касније.",
|
||||
"whoIsOnline": "Ко је на мрежи",
|
||||
"newestCitizens": "Најновији грађани",
|
||||
"usersOnline": "{count} на мрежи",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Имејл адреса",
|
||||
"resendButton": "Пошаљи нову везу",
|
||||
"resendSent": "Ако за ту адресу постоји налог, нова веза за верификацију је на путу — проверите пошту.",
|
||||
"resendFailed": "Нова веза није могла бити послата. Покушајте поново за неколико минута."
|
||||
"resendFailed": "Нова веза није могла бити послата. Покушајте поново за неколико минута.",
|
||||
"resendCaptchaFailed": "Nije moguće poslati novu vezu. Proverite captcha i pokušajte ponovo."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Забрањени сте",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Logga in för att fortsätta till {hotelName}",
|
||||
"errorUnverified": "Bekräfta din e-postadress innan du loggar in.",
|
||||
"errorCaptcha": "Captcha-verifieringen misslyckades. Försök igen.",
|
||||
"errorLocked": "För många misslyckade inloggningsförsök. Försök igen senare.",
|
||||
"whoIsOnline": "Vem är online",
|
||||
"newestCitizens": "Nyaste medborgare",
|
||||
"usersOnline": "{count} online",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-postadress",
|
||||
"resendButton": "Skicka ny länk",
|
||||
"resendSent": "Om den adressen har ett konto är en ny verifieringslänk på väg — kontrollera din inkorg.",
|
||||
"resendFailed": "Det gick inte att skicka en ny länk. Försök igen om några minuter."
|
||||
"resendFailed": "Det gick inte att skicka en ny länk. Försök igen om några minuter.",
|
||||
"resendCaptchaFailed": "Det gick inte att skicka en ny länk. Kontrollera captcha och försök igen."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Du är förbjuden",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "{hotelName} devam etmek için giriş yap",
|
||||
"errorUnverified": "Giriş yapmadan önce lütfen e-posta adresinizi doğrulayın.",
|
||||
"errorCaptcha": "Captcha doğrulaması başarısız oldu. Tekrar deneyin.",
|
||||
"errorLocked": "Çok fazla başarısız giriş denemesi. Lütfen daha sonra tekrar deneyin.",
|
||||
"whoIsOnline": "Kimler çevrimiçi",
|
||||
"newestCitizens": "En yeni vatandaşlar",
|
||||
"usersOnline": "{count} çevrimiçi",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "E-posta adresi",
|
||||
"resendButton": "Yeni bağlantı gönder",
|
||||
"resendSent": "Bu adrese bağlı bir hesap varsa yeni bir doğrulama bağlantısı yolda — gelen kutunuzu kontrol edin.",
|
||||
"resendFailed": "Yeni bağlantı gönderilemedi. Birkaç dakika sonra tekrar deneyin."
|
||||
"resendFailed": "Yeni bağlantı gönderilemedi. Birkaç dakika sonra tekrar deneyin.",
|
||||
"resendCaptchaFailed": "Yeni bir bağlantı gönderilemedi. Lütfen captcha'yı doğrulayıp tekrar deneyin."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Yasaklandın",
|
||||
|
||||
@@ -842,6 +842,7 @@
|
||||
"welcomeBackSub": "Увійди, щоб продовжити в {hotelName}",
|
||||
"errorUnverified": "Підтвердьте свою електронну адресу перед входом.",
|
||||
"errorCaptcha": "Перевірка captcha не вдалася. Спробуйте ще раз.",
|
||||
"errorLocked": "Забагато невдалих спроб входу. Повторіть спробу пізніше.",
|
||||
"whoIsOnline": "Хто в мережі",
|
||||
"newestCitizens": "Нові мешканці",
|
||||
"usersOnline": "{count} у мережі",
|
||||
@@ -958,7 +959,8 @@
|
||||
"resendEmail": "Адреса електронної пошти",
|
||||
"resendButton": "Надіслати нове посилання",
|
||||
"resendSent": "Якщо до цієї адреси прив'язаний аккаунт, нове посилання вже в дорозі — перевірте пошту.",
|
||||
"resendFailed": "Не вдалося надіслати нове посилання. Спробуйте ще раз через кілька хвилин."
|
||||
"resendFailed": "Не вдалося надіслати нове посилання. Спробуйте ще раз через кілька хвилин.",
|
||||
"resendCaptchaFailed": "Не вдалося надіслати нове посилання. Пройдіть перевірку captcha та спробуйте ще раз."
|
||||
},
|
||||
"banned": {
|
||||
"title": "Ви забанені",
|
||||
|
||||
Reference in new issue
Block a user