diff --git a/.env.example b/.env.example
index 37f5f68d..300b23a8 100644
--- a/.env.example
+++ b/.env.example
@@ -64,6 +64,10 @@ AUTH_SECRET=your-super-secret-auth-key-change-this-min-32-chars
APP_KEY=base64:your-app-key-here=
# Bcrypt cost factor for new password hashes.
BCRYPT_COST=12
+# Password-length policy for every new password (register, password reset and
+# staff-created accounts). Minimum: 5-30. Maximum: 30-128.
+PASSWORD_MIN_LENGTH=12
+PASSWORD_MAX_LENGTH=128
# --- ANTI-DDOS (app-layer gate, production only) ---
# On by default in production. Set to "false" to disable (not recommended).
diff --git a/src/actions/password-reset.ts b/src/actions/password-reset.ts
index 93794de5..8d948501 100644
--- a/src/actions/password-reset.ts
+++ b/src/actions/password-reset.ts
@@ -6,6 +6,7 @@ import { redirect } from "next/navigation";
import { env } from "@/env";
import { invalidateLoginCache } from "@/lib/auth/login-core";
import { hashPassword } from "@/lib/auth/password";
+import { passwordPolicy } from "@/lib/auth/password-policy";
import { revokeUserCredentials } from "@/lib/auth/session-revocation";
import { db, PasswordReset, User } from "@/lib/db";
import { logger } from "@/lib/logger";
@@ -109,7 +110,11 @@ export async function resetPassword(formData: FormData): Promise {
}
let error: "password" | "invalid" | "failed" | null = null;
- if (password.length < 12) error = "password";
+ if (
+ password.length < passwordPolicy.minLength ||
+ password.length > passwordPolicy.maxLength
+ )
+ error = "password";
if (!error) {
try {
diff --git a/src/actions/register.ts b/src/actions/register.ts
index 366d6055..7e3652c9 100644
--- a/src/actions/register.ts
+++ b/src/actions/register.ts
@@ -5,6 +5,7 @@ import { after } from "next/server";
import { z } from "zod";
import { sendVerification } from "@/lib/auth/email-verification";
import { hashPassword } from "@/lib/auth/password";
+import { passwordPolicy } from "@/lib/auth/password-policy";
import { DEFAULT_AVATAR_FIGURE } from "@/lib/avatar-figure";
import { invalidateKey } from "@/lib/cached-db";
import { db, User } from "@/lib/db";
@@ -83,6 +84,11 @@ function hasDisposableEmailDomain(email: string): boolean {
return domain ? DISPOSABLE_EMAIL_DOMAINS.has(domain) : false;
}
+// Rendered into the schema below and mapped back to a locale-independent code
+// via `ZOD_MESSAGE_CODES`, so the length always reflects the configured policy.
+const PASSWORD_MIN_MESSAGE = `Password must be at least ${passwordPolicy.minLength} characters`;
+const PASSWORD_MAX_MESSAGE = "Password is too long";
+
const registerSchema = z
.object({
username: z
@@ -105,8 +111,8 @@ const registerSchema = z
),
password: z
.string()
- .min(12, "Password must be at least 12 characters") // Increased min length
- .max(128, "Password is too long") // Added max length
+ .min(passwordPolicy.minLength, PASSWORD_MIN_MESSAGE)
+ .max(passwordPolicy.maxLength, PASSWORD_MAX_MESSAGE)
.regex(/[A-Z]/, "Password must contain at least one uppercase letter")
.regex(/[a-z]/, "Password must contain at least one lowercase letter")
.regex(/[0-9]/, "Password must contain at least one digit")
@@ -160,8 +166,8 @@ const ZOD_MESSAGE_CODES: Record = {
"This username is reserved": "usernameReserved",
"Enter a valid email address": "emailValid",
"Temporary email domains are not allowed": "emailDisposable",
- "Password must be at least 12 characters": "passwordMinLength",
- "Password is too long": "passwordMaxLength",
+ [PASSWORD_MIN_MESSAGE]: "passwordMinLength",
+ [PASSWORD_MAX_MESSAGE]: "passwordMaxLength",
"Password must contain at least one uppercase letter": "passwordUpper",
"Password must contain at least one lowercase letter": "passwordLower",
"Password must contain at least one digit": "passwordDigit",
diff --git a/src/app/(site)/register/page.tsx b/src/app/(site)/register/page.tsx
index c81b64bc..e0656e9e 100644
--- a/src/app/(site)/register/page.tsx
+++ b/src/app/(site)/register/page.tsx
@@ -7,6 +7,7 @@ import {
} from "@/components/auth/auth-landing";
import { RegisterForm } from "@/components/auth/register-form";
import { auth } from "@/lib/auth";
+import { passwordPolicy } from "@/lib/auth/password-policy";
export async function generateMetadata(): Promise {
const t = await getTranslations("pages.register");
@@ -50,6 +51,8 @@ export default async function RegisterPage() {
hotelName={data.hotelName}
captcha={data.captcha}
nonce={data.nonce}
+ passwordMinLength={passwordPolicy.minLength}
+ passwordMaxLength={passwordPolicy.maxLength}
/>
}
/>
diff --git a/src/app/(site)/reset/page.tsx b/src/app/(site)/reset/page.tsx
index d4e7c9a0..4e4a4ba7 100644
--- a/src/app/(site)/reset/page.tsx
+++ b/src/app/(site)/reset/page.tsx
@@ -3,6 +3,7 @@ import { getTranslations } from "next-intl/server";
import { resetPassword } from "@/actions/password-reset";
import Link from "@/components/link";
import { ContentCard } from "@/components/public/ui";
+import { passwordPolicy } from "@/lib/auth/password-policy";
export async function generateMetadata(): Promise {
const t = await getTranslations("pages.reset");
@@ -41,8 +42,12 @@ export default async function ResetPage({
) : null}
string,
+ minLength: number,
): {
score: number;
label: string;
color: string;
} {
let score = 0;
- if (pw.length >= 8) score += 1;
- if (pw.length >= 12) score += 1;
+ if (pw.length >= minLength) score += 1;
+ if (pw.length >= minLength + 4) score += 1;
if (/[a-z]/.test(pw) && /[A-Z]/.test(pw)) score += 1;
if (/\d/.test(pw)) score += 1;
if (/[^a-zA-Z0-9]/.test(pw)) score += 1;
@@ -103,6 +107,8 @@ export function RegisterForm({
captcha,
error,
nonce,
+ passwordMinLength,
+ passwordMaxLength,
}: RegisterFormProps) {
const t = useTranslations("pages.register");
const showCaptcha = captcha.provider !== "none" && !!captcha.siteKey;
@@ -138,7 +144,7 @@ export function RegisterForm({
);
const autoLoginStartedRef = useRef(false);
const [referralCode, setReferralCode] = useState("");
- const strength = passwordStrength(password, t);
+ const strength = passwordStrength(password, t, passwordMinLength);
/**
* The password policy the server enforces, evaluated live so the visitor can
@@ -146,7 +152,10 @@ export function RegisterForm({
* single error back.
*/
const requirements = [
- { label: t("passwordMinLength"), met: password.length >= 12 },
+ {
+ label: t("passwordMinLength", { min: passwordMinLength }),
+ met: password.length >= passwordMinLength,
+ },
{ label: t("passwordUpper"), met: /[A-Z]/.test(password) },
{ label: t("passwordLower"), met: /[a-z]/.test(password) },
{ label: t("passwordDigit"), met: /\d/.test(password) },
@@ -295,9 +304,13 @@ export function RegisterForm({
type={showPassword ? "text" : "password"}
value={password}
onChange={setPassword}
- placeholder={t("passwordPlaceholder")}
+ placeholder={t("passwordPlaceholder", {
+ min: passwordMinLength,
+ })}
autoComplete="new-password"
required
+ minLength={passwordMinLength}
+ maxLength={passwordMaxLength}
trailing={
.gif into (the emulator's
// badge image folder, e.g. .../assets/c_images/album1584). Upload is disabled
// when unset.
diff --git a/src/lib/auth/password-policy.ts b/src/lib/auth/password-policy.ts
new file mode 100644
index 00000000..8af4e631
--- /dev/null
+++ b/src/lib/auth/password-policy.ts
@@ -0,0 +1,27 @@
+import { env } from "@/env";
+
+/** Hard floor/ceiling so a bad env value can never lock accounts out. */
+const ABSOLUTE_MIN_LENGTH = 5;
+const ABSOLUTE_MAX_LENGTH = 128;
+
+function toLength(value: unknown, fallback: number): number {
+ const parsed = typeof value === "number" ? value : Number(value);
+ return Number.isFinite(parsed) ? Math.trunc(parsed) : fallback;
+}
+
+/**
+ * Effective password-length policy. `PASSWORD_MIN_LENGTH` / `PASSWORD_MAX_LENGTH`
+ * drive the bounds; the values are clamped to a sane window so a typo in the env
+ * can neither accept empty passwords nor reject every possible one.
+ */
+export const passwordPolicy = (() => {
+ const minLength = Math.min(
+ ABSOLUTE_MAX_LENGTH,
+ Math.max(ABSOLUTE_MIN_LENGTH, toLength(env.PASSWORD_MIN_LENGTH, 12)),
+ );
+ const maxLength = Math.max(
+ minLength,
+ Math.min(ABSOLUTE_MAX_LENGTH, toLength(env.PASSWORD_MAX_LENGTH, 128)),
+ );
+ return { minLength, maxLength };
+})();
diff --git a/src/lib/validators/user.test.ts b/src/lib/validators/user.test.ts
index 0ae80a51..b2c68493 100644
--- a/src/lib/validators/user.test.ts
+++ b/src/lib/validators/user.test.ts
@@ -12,7 +12,7 @@ describe("createUserSchema", () => {
const result = createUserSchema.safeParse({
username: "TestUser",
mail: "test@example.com",
- password: "secret123",
+ password: "secret123456",
});
expect(result.success).toBe(true);
if (result.success) {
@@ -26,7 +26,7 @@ describe("createUserSchema", () => {
createUserSchema.safeParse({
username: "ab",
mail: "test@example.com",
- password: "secret123",
+ password: "secret123456",
}).success,
).toBe(false);
});
@@ -36,7 +36,7 @@ describe("createUserSchema", () => {
createUserSchema.safeParse({
username: "a".repeat(21),
mail: "test@example.com",
- password: "secret123",
+ password: "secret123456",
}).success,
).toBe(false);
});
@@ -46,7 +46,7 @@ describe("createUserSchema", () => {
createUserSchema.safeParse({
username: "user@name",
mail: "test@example.com",
- password: "secret123",
+ password: "secret123456",
}).success,
).toBe(false);
});
@@ -56,7 +56,7 @@ describe("createUserSchema", () => {
createUserSchema.safeParse({
username: "TestUser",
mail: "not-an-email",
- password: "secret123",
+ password: "secret123456",
}).success,
).toBe(false);
});
diff --git a/src/lib/validators/user.ts b/src/lib/validators/user.ts
index 94f17783..bd7416d5 100644
--- a/src/lib/validators/user.ts
+++ b/src/lib/validators/user.ts
@@ -1,4 +1,5 @@
import { z } from "zod";
+import { passwordPolicy } from "@/lib/auth/password-policy";
export const createUserSchema = z.object({
username: z
@@ -10,7 +11,16 @@ export const createUserSchema = z.object({
"Username can only contain letters, numbers, _ and -",
),
mail: z.string().email("Invalid email address"),
- password: z.string().min(6, "Password must be at least 6 characters"),
+ password: z
+ .string()
+ .min(
+ passwordPolicy.minLength,
+ `Password must be at least ${passwordPolicy.minLength} characters`,
+ )
+ .max(
+ passwordPolicy.maxLength,
+ `Password must be at most ${passwordPolicy.maxLength} characters`,
+ ),
rank: z.coerce.number().int().min(1).max(7).default(1),
motto: z.string().max(127).default(""),
});
diff --git a/src/messages/ar.json b/src/messages/ar.json
index aac05b30..fd1cfc93 100644
--- a/src/messages/ar.json
+++ b/src/messages/ar.json
@@ -6132,7 +6132,7 @@
"confirmPassword": "أعد كلمة المرور",
"usernamePlaceholder": "اسم المستخدم",
"emailPlaceholder": "البريد الإلكتروني",
- "passwordPlaceholder": "كلمة المرور (12 حرفًا على الأقل)",
+ "passwordPlaceholder": "كلمة المرور ({min} حرفًا على الأقل)",
"confirmPasswordPlaceholder": "أعد كلمة المرور",
"selectOutfit": "اختر ملابسك",
"termsAccept": "أنا أبلغ 18 عامًا وأوافق على شروط {hotel}.",
@@ -6153,7 +6153,7 @@
"termsError": "يجب الموافقة على الشروط للتسجيل.",
"usernameError": "اسم المستخدم مطلوب.",
"emailError": "البريد الإلكتروني الصالح مطلوب.",
- "passwordError": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
+ "passwordError": "يجب ألا تقل كلمة المرور عن {min} حرفًا",
"confirmPasswordError": "كلمتا المرور غير متطابقتين.",
"termsRequired": "يجب الموافقة على الشروط.",
"usernameRequired": "اسم المستخدم مطلوب.",
@@ -6167,7 +6167,7 @@
"strengthFair": "مقبول",
"strengthGood": "جيد",
"strengthStrong": "قوي",
- "passwordMinLength": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
+ "passwordMinLength": "يجب ألا تقل كلمة المرور عن {min} حرفًا",
"passwordUpper": "يجب أن تحتوي كلمة المرور على حرف كبير واحد على الأقل",
"passwordLower": "يجب أن تحتوي كلمة المرور على حرف صغير واحد على الأقل",
"passwordDigit": "يجب أن تحتوي كلمة المرور على رقم واحد على الأقل",
@@ -6202,10 +6202,10 @@
"reset": {
"title": "Set a new password",
"subtitle": "Choose a strong password you don't use elsewhere.",
- "passwordPlaceholder": "New password (min 12 chars)",
+ "passwordPlaceholder": "New password (min {min} chars)",
"resetPassword": "Reset password",
"backToLogin": "Back to login",
- "passwordMinLength": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
+ "passwordMinLength": "يجب ألا تقل كلمة المرور عن {min} حرفًا",
"tooManyAttempts": "محاولات كثيرة جدًا — حاول لاحقًا",
"invalidLink": "رابط إعادة التعيين غير صالح أو منتهي الصلاحية. اطلب رابطًا جديدًا.",
"failed": "تعذّرت إعادة تعيين كلمة المرور. حاول مرة أخرى."
diff --git a/src/messages/bg.json b/src/messages/bg.json
index 5cd82fda..896f2655 100644
--- a/src/messages/bg.json
+++ b/src/messages/bg.json
@@ -885,7 +885,7 @@
"confirmPassword": "Повторете паролата",
"usernamePlaceholder": "Потребителско име",
"emailPlaceholder": "Имейл",
- "passwordPlaceholder": "Парола (мин. 12 знака)",
+ "passwordPlaceholder": "Парола (мин. {min} знака)",
"confirmPasswordPlaceholder": "Повторете паролата",
"selectOutfit": "Изберете вашето облекло",
"termsAccept": "Аз съм на 18+ и приемам условията и правилата на {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Трябва да приемете условията и правилата, за да се регистрирате.",
"usernameError": "Изисква се потребителско име.",
"emailError": "Изисква се валиден имейл.",
- "passwordError": "Паролата трябва да е поне 12 знака",
+ "passwordError": "Паролата трябва да е поне {min} знака",
"confirmPasswordError": "Паролите не съвпадат.",
"termsRequired": "Трябва да приемете условията и правилата.",
"usernameRequired": "Изисква се потребителско име.",
@@ -920,7 +920,7 @@
"strengthFair": "Средна",
"strengthGood": "Добра",
"strengthStrong": "Силна",
- "passwordMinLength": "Паролата трябва да е поне 12 знака",
+ "passwordMinLength": "Паролата трябва да е поне {min} знака",
"passwordUpper": "Паролата трябва да съдържа поне една главна буква",
"passwordLower": "Паролата трябва да съдържа поне една малка буква",
"passwordDigit": "Паролата трябва да съдържа поне една цифра",
@@ -955,10 +955,10 @@
"reset": {
"title": "Задайте нова парола",
"subtitle": "Изберете силна парола, която не използвате другаде.",
- "passwordPlaceholder": "Нова парола (мин. 12 знака)",
+ "passwordPlaceholder": "Нова парола (мин. {min} знака)",
"resetPassword": "Нулирайте паролата",
"backToLogin": "Назад към входа",
- "passwordMinLength": "Паролата трябва да е поне 12 знака",
+ "passwordMinLength": "Паролата трябва да е поне {min} знака",
"tooManyAttempts": "Твърде много опити — опитайте по-късно",
"invalidLink": "Този линк за нулиране е невалиден или е изтекъл. Поискайте нов.",
"failed": "Нулирането на паролата не бе успешно. Моля, опитайте отново."
diff --git a/src/messages/cs.json b/src/messages/cs.json
index 8c2249c6..dae6c642 100644
--- a/src/messages/cs.json
+++ b/src/messages/cs.json
@@ -885,7 +885,7 @@
"confirmPassword": "Opakujte heslo",
"usernamePlaceholder": "Uživatelské jméno",
"emailPlaceholder": "Email",
- "passwordPlaceholder": "Heslo (min. 12 znaků)",
+ "passwordPlaceholder": "Heslo (min. {min} znaků)",
"confirmPasswordPlaceholder": "Opakujte heslo",
"selectOutfit": "Vyberte si oblečení",
"termsAccept": "Je mi 18+ a souhlasím s podmínkami a pravidly {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Chcete-li se zaregistrovat, musíte přijmout podmínky a pravidla.",
"usernameError": "Uživatelské jméno je povinné.",
"emailError": "Je vyžadován platný e-mail.",
- "passwordError": "Heslo musí mít alespoň 12 znaků",
+ "passwordError": "Heslo musí mít alespoň {min} znaků",
"confirmPasswordError": "Hesla se neshodují.",
"termsRequired": "Musíte přijmout podmínky a pravidla.",
"usernameRequired": "Uživatelské jméno je povinné.",
@@ -920,7 +920,7 @@
"strengthFair": "Ucházející",
"strengthGood": "Dobré",
"strengthStrong": "Silné",
- "passwordMinLength": "Heslo musí mít alespoň 12 znaků",
+ "passwordMinLength": "Heslo musí mít alespoň {min} znaků",
"passwordUpper": "Heslo musí obsahovat alespoň jedno velké písmeno",
"passwordLower": "Heslo musí obsahovat alespoň jedno malé písmeno",
"passwordDigit": "Heslo musí obsahovat alespoň jednu číslici",
@@ -955,10 +955,10 @@
"reset": {
"title": "Nastavte nové heslo",
"subtitle": "Vyberte si silné heslo, které jinde nepoužíváte.",
- "passwordPlaceholder": "Nové heslo (min. 12 znaků)",
+ "passwordPlaceholder": "Nové heslo (min. {min} znaků)",
"resetPassword": "Obnovit heslo",
"backToLogin": "Zpět k přihlášení",
- "passwordMinLength": "Heslo musí mít alespoň 12 znaků",
+ "passwordMinLength": "Heslo musí mít alespoň {min} znaků",
"tooManyAttempts": "Příliš mnoho pokusů — zkuste to později",
"invalidLink": "Tento odkaz pro obnovu je neplatný nebo vypršel. Vyžádejte si nový.",
"failed": "Heslo nebylo možné obnovit. Zkuste to prosím znovu."
diff --git a/src/messages/da.json b/src/messages/da.json
index b81801c7..632525c4 100644
--- a/src/messages/da.json
+++ b/src/messages/da.json
@@ -885,7 +885,7 @@
"confirmPassword": "Gentag adgangskoden",
"usernamePlaceholder": "Brugernavn",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Adgangskode (min. 12 tegn)",
+ "passwordPlaceholder": "Adgangskode (min. {min} tegn)",
"confirmPasswordPlaceholder": "Gentag adgangskoden",
"selectOutfit": "Vælg dit outfit",
"termsAccept": "Jeg er 18+ og accepterer vilkårene og reglerne for {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Du skal acceptere vilkårene og reglerne for at registrere dig.",
"usernameError": "Brugernavn er påkrævet.",
"emailError": "Gyldig e-mail er påkrævet.",
- "passwordError": "Adgangskoden skal være på mindst 12 tegn",
+ "passwordError": "Adgangskoden skal være på mindst {min} tegn",
"confirmPasswordError": "Adgangskoder stemmer ikke overens.",
"termsRequired": "Du skal acceptere vilkårene og reglerne.",
"usernameRequired": "Brugernavn er påkrævet.",
@@ -920,7 +920,7 @@
"strengthFair": "Middelmådig",
"strengthGood": "God",
"strengthStrong": "Stærk",
- "passwordMinLength": "Adgangskoden skal være på mindst 12 tegn",
+ "passwordMinLength": "Adgangskoden skal være på mindst {min} tegn",
"passwordUpper": "Adgangskoden skal indeholde mindst ét stort bogstav",
"passwordLower": "Adgangskoden skal indeholde mindst ét lille bogstav",
"passwordDigit": "Adgangskoden skal indeholde mindst ét tal",
@@ -955,10 +955,10 @@
"reset": {
"title": "Indstil en ny adgangskode",
"subtitle": "Vælg en stærk adgangskode, du ikke bruger andre steder.",
- "passwordPlaceholder": "Ny adgangskode (min. 12 tegn)",
+ "passwordPlaceholder": "Ny adgangskode (min. {min} tegn)",
"resetPassword": "Nulstil adgangskode",
"backToLogin": "Tilbage til login",
- "passwordMinLength": "Adgangskoden skal være på mindst 12 tegn",
+ "passwordMinLength": "Adgangskoden skal være på mindst {min} tegn",
"tooManyAttempts": "For mange forsøg — prøv igen senere",
"invalidLink": "Dette nulstillingslink er ugyldigt eller udløbet. Anmod om et nyt.",
"failed": "Adgangskoden kunne ikke nulstilles. Prøv igen."
diff --git a/src/messages/de.json b/src/messages/de.json
index de151d06..0b771404 100644
--- a/src/messages/de.json
+++ b/src/messages/de.json
@@ -855,7 +855,7 @@
"confirmPassword": "Passwort wiederholen",
"usernamePlaceholder": "Benutzername",
"emailPlaceholder": "E-Mail",
- "passwordPlaceholder": "Passwort (min. 12 Zeichen)",
+ "passwordPlaceholder": "Passwort (min. {min} Zeichen)",
"confirmPasswordPlaceholder": "Passwort wiederholen",
"selectOutfit": "Wähle dein Outfit",
"termsAccept": "Ich bin 18+ und akzeptiere die {hotel} AGB & Regeln.",
@@ -867,7 +867,7 @@
"termsError": "Du musst die AGB & Regeln akzeptieren, um dich zu registrieren.",
"usernameError": "Benutzername ist erforderlich.",
"emailError": "Eine gültige E-Mail ist erforderlich.",
- "passwordError": "Das Passwort muss mindestens 12 Zeichen lang sein",
+ "passwordError": "Das Passwort muss mindestens {min} Zeichen lang sein",
"confirmPasswordError": "Passwörter stimmen nicht überein.",
"termsRequired": "Du musst die AGB & Regeln akzeptieren.",
"usernameRequired": "Benutzername ist erforderlich.",
@@ -890,7 +890,7 @@
"strengthFair": "Mittel",
"strengthGood": "Gut",
"strengthStrong": "Stark",
- "passwordMinLength": "Das Passwort muss mindestens 12 Zeichen lang sein",
+ "passwordMinLength": "Das Passwort muss mindestens {min} Zeichen lang sein",
"passwordUpper": "Das Passwort muss mindestens einen Großbuchstaben enthalten",
"passwordLower": "Das Passwort muss mindestens einen Kleinbuchstaben enthalten",
"passwordDigit": "Das Passwort muss mindestens eine Ziffer enthalten",
@@ -925,10 +925,10 @@
"reset": {
"title": "Neues Passwort festlegen",
"subtitle": "Wähle ein sicheres Passwort, das du sonst nirgendwo verwendest.",
- "passwordPlaceholder": "Neues Passwort (min. 12 Zeichen)",
+ "passwordPlaceholder": "Neues Passwort (min. {min} Zeichen)",
"resetPassword": "Passwort zurücksetzen",
"backToLogin": "Zurück zur Anmeldung",
- "passwordMinLength": "Das Passwort muss mindestens 12 Zeichen lang sein",
+ "passwordMinLength": "Das Passwort muss mindestens {min} Zeichen lang sein",
"tooManyAttempts": "Zu viele Versuche — bitte später erneut probieren",
"invalidLink": "Dieser Zurücksetzungslink ist ungültig oder abgelaufen. Fordere einen neuen an.",
"failed": "Das Passwort konnte nicht zurückgesetzt werden. Bitte versuche es erneut."
diff --git a/src/messages/el.json b/src/messages/el.json
index c93bc50d..e21173ff 100644
--- a/src/messages/el.json
+++ b/src/messages/el.json
@@ -885,7 +885,7 @@
"confirmPassword": "Επαναλάβετε τον κωδικό πρόσβασης",
"usernamePlaceholder": "Όνομα χρήστη",
"emailPlaceholder": "Email",
- "passwordPlaceholder": "Κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
+ "passwordPlaceholder": "Κωδικός πρόσβασης (ελάχ. {min} χαρακτήρες)",
"confirmPasswordPlaceholder": "Επαναλάβετε τον κωδικό πρόσβασης",
"selectOutfit": "Επιλέξτε το ντύσιμό σας",
"termsAccept": "Είμαι 18+ και αποδέχομαι τους όρους και τους κανόνες του {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες για να εγγραφείτε.",
"usernameError": "Απαιτείται όνομα χρήστη.",
"emailError": "Απαιτείται έγκυρο email.",
- "passwordError": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
+ "passwordError": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον {min} χαρακτήρες",
"confirmPasswordError": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
"termsRequired": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες.",
"usernameRequired": "Απαιτείται όνομα χρήστη.",
@@ -920,7 +920,7 @@
"strengthFair": "Μέτριο",
"strengthGood": "Καλό",
"strengthStrong": "Δυνατό",
- "passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
+ "passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον {min} χαρακτήρες",
"passwordUpper": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο γράμμα",
"passwordLower": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα πεζό γράμμα",
"passwordDigit": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα ψηφίο",
@@ -955,10 +955,10 @@
"reset": {
"title": "Ορίστε νέο κωδικό πρόσβασης",
"subtitle": "Επιλέξτε έναν ισχυρό κωδικό πρόσβασης που δεν χρησιμοποιείτε αλλού.",
- "passwordPlaceholder": "Νέος κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
+ "passwordPlaceholder": "Νέος κωδικός πρόσβασης (ελάχ. {min} χαρακτήρες)",
"resetPassword": "Επαναφορά κωδικού πρόσβασης",
"backToLogin": "Επιστροφή στην είσοδο",
- "passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
+ "passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον {min} χαρακτήρες",
"tooManyAttempts": "Πάρα πολλές προσπάθειες — δοκιμάστε αργότερα",
"invalidLink": "Αυτός ο σύνδεσμος επαναφοράς δεν είναι έγκυρος ή έχει λήξει. Ζητήστε νέο.",
"failed": "Δεν ήταν δυνατή η επαναφορά του κωδικού. Δοκιμάστε ξανά."
diff --git a/src/messages/en.json b/src/messages/en.json
index cd895a18..7babef55 100644
--- a/src/messages/en.json
+++ b/src/messages/en.json
@@ -1058,7 +1058,7 @@
"confirmPassword": "Repeat password",
"usernamePlaceholder": "Username",
"emailPlaceholder": "Email",
- "passwordPlaceholder": "Password (min 12 chars)",
+ "passwordPlaceholder": "Password (min {min} chars)",
"confirmPasswordPlaceholder": "Repeat password",
"selectOutfit": "Select your outfit",
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
@@ -1081,7 +1081,7 @@
"termsError": "You must accept the terms & rules to register.",
"usernameError": "Username is required.",
"emailError": "Valid email is required.",
- "passwordError": "Password must be at least 12 characters",
+ "passwordError": "Password must be at least {min} characters",
"confirmPasswordError": "Passwords do not match.",
"termsRequired": "You must accept the terms & rules.",
"usernameRequired": "Username is required.",
@@ -1093,7 +1093,7 @@
"strengthFair": "Fair",
"strengthGood": "Good",
"strengthStrong": "Strong",
- "passwordMinLength": "Password must be at least 12 characters",
+ "passwordMinLength": "Password must be at least {min} characters",
"passwordUpper": "Password must contain at least one uppercase letter",
"passwordLower": "Password must contain at least one lowercase letter",
"passwordDigit": "Password must contain at least one digit",
@@ -1128,10 +1128,10 @@
"reset": {
"title": "Set a new password",
"subtitle": "Choose a strong password you don't use elsewhere.",
- "passwordPlaceholder": "New password (min 12 chars)",
+ "passwordPlaceholder": "New password (min {min} chars)",
"resetPassword": "Reset password",
"backToLogin": "Back to login",
- "passwordMinLength": "Password must be at least 12 characters",
+ "passwordMinLength": "Password must be at least {min} characters",
"tooManyAttempts": "Too many attempts — try again later",
"invalidLink": "This reset link is invalid or has expired. Request a new one.",
"failed": "The password could not be reset. Please try again."
diff --git a/src/messages/es.json b/src/messages/es.json
index 7192ce1b..3a0fa314 100644
--- a/src/messages/es.json
+++ b/src/messages/es.json
@@ -855,7 +855,7 @@
"confirmPassword": "Repetir contraseña",
"usernamePlaceholder": "Usuario",
"emailPlaceholder": "Correo electrónico",
- "passwordPlaceholder": "Contraseña (mín. 12 caracteres)",
+ "passwordPlaceholder": "Contraseña (mín. {min} caracteres)",
"confirmPasswordPlaceholder": "Repetir contraseña",
"selectOutfit": "Selecciona tu atuendo",
"termsAccept": "Soy mayor de 18 años y acepto los términos y reglas de {hotel}.",
@@ -867,7 +867,7 @@
"termsError": "Debes aceptar los términos y reglas para registrarte.",
"usernameError": "El usuario es obligatorio.",
"emailError": "Se requiere un correo electrónico válido.",
- "passwordError": "La contraseña debe tener al menos 12 caracteres",
+ "passwordError": "La contraseña debe tener al menos {min} caracteres",
"confirmPasswordError": "Las contraseñas no coinciden.",
"termsRequired": "Debes aceptar los términos y reglas.",
"usernameRequired": "El usuario es obligatorio.",
@@ -890,7 +890,7 @@
"strengthFair": "Aceptable",
"strengthGood": "Buena",
"strengthStrong": "Fuerte",
- "passwordMinLength": "La contraseña debe tener al menos 12 caracteres",
+ "passwordMinLength": "La contraseña debe tener al menos {min} caracteres",
"passwordUpper": "La contraseña debe contener al menos una mayúscula",
"passwordLower": "La contraseña debe contener al menos una minúscula",
"passwordDigit": "La contraseña debe contener al menos un dígito",
@@ -925,10 +925,10 @@
"reset": {
"title": "Establecer una nueva contraseña",
"subtitle": "Elige una contraseña segura que no uses en otros sitios.",
- "passwordPlaceholder": "Nueva contraseña (mín. 12 caracteres)",
+ "passwordPlaceholder": "Nueva contraseña (mín. {min} caracteres)",
"resetPassword": "Restablecer contraseña",
"backToLogin": "Volver al inicio de sesión",
- "passwordMinLength": "La contraseña debe tener al menos 12 caracteres",
+ "passwordMinLength": "La contraseña debe tener al menos {min} caracteres",
"tooManyAttempts": "Demasiados intentos — inténtalo más tarde",
"invalidLink": "Este enlace de restablecimiento no es válido o ha caducado. Solicita uno nuevo.",
"failed": "No se pudo restablecer la contraseña. Vuelve a intentarlo."
diff --git a/src/messages/fi.json b/src/messages/fi.json
index 82345137..757d58d7 100644
--- a/src/messages/fi.json
+++ b/src/messages/fi.json
@@ -6132,7 +6132,7 @@
"confirmPassword": "Toista salasana",
"usernamePlaceholder": "Käyttäjätunnus",
"emailPlaceholder": "Sähköposti",
- "passwordPlaceholder": "Salasana (vähintään 12 merkkiä)",
+ "passwordPlaceholder": "Salasana (vähintään {min} merkkiä)",
"confirmPasswordPlaceholder": "Toista salasana",
"selectOutfit": "Valitse asustesi",
"termsAccept": "Olen 18-vuotias ja hyväksyn {hotel} säännöt.",
@@ -6153,7 +6153,7 @@
"termsError": "Sinun on hyväksyttävä säännöt rekisteröityäksesi.",
"usernameError": "Käyttäjätunnus on pakollinen.",
"emailError": "Kelvollinen sähköpostiosoite on pakollinen.",
- "passwordError": "Salasanassa on oltava vähintään 12 merkkiä",
+ "passwordError": "Salasanassa on oltava vähintään {min} merkkiä",
"confirmPasswordError": "Salasanat eivät täsmää.",
"termsRequired": "Sinun on hyväksyttävä säännöt.",
"usernameRequired": "Käyttäjätunnus on pakollinen.",
@@ -6167,7 +6167,7 @@
"strengthFair": "Tyydyttävä",
"strengthGood": "Hyvä",
"strengthStrong": "Vahva",
- "passwordMinLength": "Salasanassa on oltava vähintään 12 merkkiä",
+ "passwordMinLength": "Salasanassa on oltava vähintään {min} merkkiä",
"passwordUpper": "Salasanassa on oltava vähintään yksi iso kirjain",
"passwordLower": "Salasanassa on oltava vähintään yksi pieni kirjain",
"passwordDigit": "Salasanassa on oltava vähintään yksi numero",
@@ -6202,10 +6202,10 @@
"reset": {
"title": "Set a new password",
"subtitle": "Choose a strong password you don't use elsewhere.",
- "passwordPlaceholder": "New password (min 12 chars)",
+ "passwordPlaceholder": "New password (min {min} chars)",
"resetPassword": "Reset password",
"backToLogin": "Back to login",
- "passwordMinLength": "Salasanassa on oltava vähintään 12 merkkiä",
+ "passwordMinLength": "Salasanassa on oltava vähintään {min} merkkiä",
"tooManyAttempts": "Liikaa yrityksiä — yritä myöhemmin uudelleen",
"invalidLink": "Tämä palautuslinkki on virheellinen tai vanhentunut. Pyydä uusi.",
"failed": "Salasanaa ei voitu vaihtaa. Yritä uudelleen."
diff --git a/src/messages/fr.json b/src/messages/fr.json
index 453adea6..95bbff25 100644
--- a/src/messages/fr.json
+++ b/src/messages/fr.json
@@ -855,7 +855,7 @@
"confirmPassword": "Répéter le mot de passe",
"usernamePlaceholder": "Nom d'utilisateur",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Mot de passe (min 12 car.)",
+ "passwordPlaceholder": "Mot de passe (min {min} car.)",
"confirmPasswordPlaceholder": "Répéter le mot de passe",
"selectOutfit": "Sélectionnez votre tenue",
"termsAccept": "J'ai 18 ans ou plus et j'accepte les conditions et règles de {hotel}.",
@@ -867,7 +867,7 @@
"termsError": "Vous devez accepter les conditions et règles pour vous inscrire.",
"usernameError": "Le nom d'utilisateur est requis.",
"emailError": "Un e-mail valide est requis.",
- "passwordError": "Le mot de passe doit contenir au moins 12 caractères",
+ "passwordError": "Le mot de passe doit contenir au moins {min} caractères",
"confirmPasswordError": "Les mots de passe ne correspondent pas.",
"termsRequired": "Vous devez accepter les conditions et règles.",
"usernameRequired": "Le nom d'utilisateur est requis.",
@@ -890,7 +890,7 @@
"strengthFair": "Moyen",
"strengthGood": "Bon",
"strengthStrong": "Fort",
- "passwordMinLength": "Le mot de passe doit contenir au moins 12 caractères",
+ "passwordMinLength": "Le mot de passe doit contenir au moins {min} caractères",
"passwordUpper": "Le mot de passe doit contenir au moins une majuscule",
"passwordLower": "Le mot de passe doit contenir au moins une minuscule",
"passwordDigit": "Le mot de passe doit contenir au moins un chiffre",
@@ -925,10 +925,10 @@
"reset": {
"title": "Définir un nouveau mot de passe",
"subtitle": "Choisissez un mot de passe fort que vous n'utilisez pas ailleurs.",
- "passwordPlaceholder": "Nouveau mot de passe (min 12 car.)",
+ "passwordPlaceholder": "Nouveau mot de passe (min {min} car.)",
"resetPassword": "Réinitialiser le mot de passe",
"backToLogin": "Retour à la connexion",
- "passwordMinLength": "Le mot de passe doit contenir au moins 12 caractères",
+ "passwordMinLength": "Le mot de passe doit contenir au moins {min} caractères",
"tooManyAttempts": "Trop de tentatives — réessayez plus tard",
"invalidLink": "Ce lien de réinitialisation est invalide ou expiré. Demandez-en un nouveau.",
"failed": "Le mot de passe n'a pas pu être réinitialisé. Veuillez réessayer."
diff --git a/src/messages/hr.json b/src/messages/hr.json
index 602080cd..c1947f78 100644
--- a/src/messages/hr.json
+++ b/src/messages/hr.json
@@ -885,7 +885,7 @@
"confirmPassword": "Ponovi lozinku",
"usernamePlaceholder": "Korisničko ime",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Lozinka (najmanje 12 znakova)",
+ "passwordPlaceholder": "Lozinka (najmanje {min} znakova)",
"confirmPasswordPlaceholder": "Ponovi lozinku",
"selectOutfit": "Odaberite svoju odjeću",
"termsAccept": "Imam 18+ godina i prihvaćam odredbe i pravila hotela {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Za registraciju morate prihvatiti uvjete i pravila.",
"usernameError": "Korisničko ime je potrebno.",
"emailError": "Potrebna je valjana adresa e-pošte.",
- "passwordError": "Lozinka mora imati najmanje 12 znakova.",
+ "passwordError": "Lozinka mora imati najmanje {min} znakova.",
"confirmPasswordError": "Lozinke se ne podudaraju.",
"termsRequired": "Morate prihvatiti uvjete i pravila.",
"usernameRequired": "Korisničko ime je potrebno.",
@@ -920,7 +920,7 @@
"strengthFair": "Osrednja",
"strengthGood": "Dobra",
"strengthStrong": "Jaka",
- "passwordMinLength": "Lozinka mora imati najmanje 12 znakova",
+ "passwordMinLength": "Lozinka mora imati najmanje {min} znakova",
"passwordUpper": "Lozinka mora sadržavati najmanje jedno veliko slovo",
"passwordLower": "Lozinka mora sadržavati najmanje jedno malo slovo",
"passwordDigit": "Lozinka mora sadržavati najmanje jednu znamenku",
@@ -955,10 +955,10 @@
"reset": {
"title": "Postavite novu lozinku",
"subtitle": "Odaberite jaku lozinku koju ne koristite drugdje.",
- "passwordPlaceholder": "Nova lozinka (najmanje 12 znakova)",
+ "passwordPlaceholder": "Nova lozinka (najmanje {min} znakova)",
"resetPassword": "Resetiraj lozinku",
"backToLogin": "Natrag na prijavu",
- "passwordMinLength": "Lozinka mora imati najmanje 12 znakova",
+ "passwordMinLength": "Lozinka mora imati najmanje {min} znakova",
"tooManyAttempts": "Previše pokušaja — pokušajte kasnije",
"invalidLink": "Ova poveznica za ponovno postavljanje nije valjana ili je istekla. Zatražite novu.",
"failed": "Lozinku nije bilo moguće ponovno postaviti. Pokušajte ponovo."
diff --git a/src/messages/hu.json b/src/messages/hu.json
index e3840c49..b6b11756 100644
--- a/src/messages/hu.json
+++ b/src/messages/hu.json
@@ -885,7 +885,7 @@
"confirmPassword": "Ismételje meg a jelszót",
"usernamePlaceholder": "Felhasználónév",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Jelszó (minimum 12 karakter)",
+ "passwordPlaceholder": "Jelszó (minimum {min} karakter)",
"confirmPasswordPlaceholder": "Ismételje meg a jelszót",
"selectOutfit": "Válassza ki az öltözékét",
"termsAccept": "18 évesnél idősebb vagyok, és elfogadom a {hotel} feltételeit és szabályait.",
@@ -897,7 +897,7 @@
"termsError": "A regisztrációhoz el kell fogadnia a feltételeket és szabályokat.",
"usernameError": "Felhasználónév megadása kötelező.",
"emailError": "Érvényes e-mail-cím szükséges.",
- "passwordError": "A jelszónak legalább 12 karakter hosszúnak kell lennie",
+ "passwordError": "A jelszónak legalább {min} karakter hosszúnak kell lennie",
"confirmPasswordError": "A jelszavak nem egyeznek.",
"termsRequired": "El kell fogadnia a feltételeket és szabályokat.",
"usernameRequired": "Felhasználónév megadása kötelező.",
@@ -920,7 +920,7 @@
"strengthFair": "Közepes",
"strengthGood": "Jó",
"strengthStrong": "Erős",
- "passwordMinLength": "A jelszónak legalább 12 karakter hosszúnak kell lennie",
+ "passwordMinLength": "A jelszónak legalább {min} karakter hosszúnak kell lennie",
"passwordUpper": "A jelszónak legalább egy nagybetűt kell tartalmaznia",
"passwordLower": "A jelszónak legalább egy kisbetűt kell tartalmaznia",
"passwordDigit": "A jelszónak legalább egy számjegyet kell tartalmaznia",
@@ -955,10 +955,10 @@
"reset": {
"title": "Állítson be új jelszót",
"subtitle": "Válasszon erős jelszót, amelyet máshol nem használ.",
- "passwordPlaceholder": "Új jelszó (minimum 12 karakter)",
+ "passwordPlaceholder": "Új jelszó (minimum {min} karakter)",
"resetPassword": "Jelszó visszaállítása",
"backToLogin": "Vissza a bejelentkezéshez",
- "passwordMinLength": "A jelszónak legalább 12 karakter hosszúnak kell lennie",
+ "passwordMinLength": "A jelszónak legalább {min} karakter hosszúnak kell lennie",
"tooManyAttempts": "Túl sok próbálkozás — próbáld később",
"invalidLink": "Ez a visszaállítási link érvénytelen vagy lejárt. Kérjen újat.",
"failed": "A jelszó visszaállítása nem sikerült. Kérjük, próbálja újra."
diff --git a/src/messages/it.json b/src/messages/it.json
index a9e54da6..3ef14b6f 100644
--- a/src/messages/it.json
+++ b/src/messages/it.json
@@ -1027,7 +1027,7 @@
"confirmPassword": "Ripeti la password",
"usernamePlaceholder": "Nome utente",
"emailPlaceholder": "Email",
- "passwordPlaceholder": "Password (min 12 caratteri)",
+ "passwordPlaceholder": "Password (min {min} caratteri)",
"confirmPasswordPlaceholder": "Ripeti la password",
"selectOutfit": "Scegli il tuo outfit",
"termsAccept": "Ho 18+ anni e accetto i termini e regole di {hotel}.",
@@ -1039,7 +1039,7 @@
"termsError": "Devi accettare i termini e regole per registrarti.",
"usernameError": "Il nome utente è obbligatorio.",
"emailError": "Email valida obbligatoria.",
- "passwordError": "La password deve contenere almeno 12 caratteri",
+ "passwordError": "La password deve contenere almeno {min} caratteri",
"confirmPasswordError": "Le password non coincidono.",
"termsRequired": "Devi accettare i termini e le regole.",
"usernameRequired": "Il nome utente è obbligatorio.",
@@ -1062,7 +1062,7 @@
"strengthFair": "Discreta",
"strengthGood": "Buona",
"strengthStrong": "Forte",
- "passwordMinLength": "La password deve contenere almeno 12 caratteri",
+ "passwordMinLength": "La password deve contenere almeno {min} caratteri",
"passwordUpper": "La password deve contenere almeno una lettera maiuscola",
"passwordLower": "La password deve contenere almeno una lettera minuscola",
"passwordDigit": "La password deve contenere almeno una cifra",
@@ -1097,10 +1097,10 @@
"reset": {
"title": "Imposta una nuova password",
"subtitle": "Scegli una password robusta che non usi altrove.",
- "passwordPlaceholder": "Nuova password (min 12 caratteri)",
+ "passwordPlaceholder": "Nuova password (min {min} caratteri)",
"resetPassword": "Reimposta password",
"backToLogin": "Torna all'accesso",
- "passwordMinLength": "La password deve contenere almeno 12 caratteri",
+ "passwordMinLength": "La password deve contenere almeno {min} caratteri",
"tooManyAttempts": "Troppi tentativi — riprova più tardi",
"invalidLink": "Questo link di reimpostazione non è valido o è scaduto. Richiedine uno nuovo.",
"failed": "Non è stato possibile reimpostare la password. Riprova."
diff --git a/src/messages/ja.json b/src/messages/ja.json
index cc4da804..28bbf7cb 100644
--- a/src/messages/ja.json
+++ b/src/messages/ja.json
@@ -6132,7 +6132,7 @@
"confirmPassword": "パスワードの確認",
"usernamePlaceholder": "ユーザー名",
"emailPlaceholder": "メールアドレス",
- "passwordPlaceholder": "パスワード(12文字以上)",
+ "passwordPlaceholder": "パスワード({min}文字以上)",
"confirmPasswordPlaceholder": "パスワードの確認",
"selectOutfit": "アバターを選んでスタイルを設定",
"termsAccept": "18歳以上であり、{hotel} の規約に同意します。",
@@ -6153,7 +6153,7 @@
"termsError": "登録するには規約に同意する必要があります。",
"usernameError": "ユーザー名は必須です。",
"emailError": "有効なメールアドレスが必要です。",
- "passwordError": "パスワードは12文字以上にしてください",
+ "passwordError": "パスワードは{min}文字以上にしてください",
"confirmPasswordError": "パスワードが一致しません。",
"termsRequired": "規約に同意する必要があります。",
"usernameRequired": "ユーザー名は必須です。",
@@ -6167,7 +6167,7 @@
"strengthFair": "普通",
"strengthGood": "良",
"strengthStrong": "強",
- "passwordMinLength": "パスワードは12文字以上にしてください",
+ "passwordMinLength": "パスワードは{min}文字以上にしてください",
"passwordUpper": "パスワードには大文字を1文字以上含めてください",
"passwordLower": "パスワードには小文字を1文字以上含めてください",
"passwordDigit": "パスワードには数字を1文字以上含めてください",
@@ -6202,10 +6202,10 @@
"reset": {
"title": "Set a new password",
"subtitle": "Choose a strong password you don't use elsewhere.",
- "passwordPlaceholder": "New password (min 12 chars)",
+ "passwordPlaceholder": "New password (min {min} chars)",
"resetPassword": "Reset password",
"backToLogin": "Back to login",
- "passwordMinLength": "パスワードは12文字以上にしてください",
+ "passwordMinLength": "パスワードは{min}文字以上にしてください",
"tooManyAttempts": "試行回数が多すぎます — 後で再度お試しください",
"invalidLink": "このリセットリンクは無効か期限切れです。新しいリンクをリクエストしてください。",
"failed": "パスワードをリセットできませんでした。もう一度お試しください。"
diff --git a/src/messages/nl.json b/src/messages/nl.json
index 61a78dd7..896942e9 100644
--- a/src/messages/nl.json
+++ b/src/messages/nl.json
@@ -1058,7 +1058,7 @@
"confirmPassword": "Wachtwoord herhalen",
"usernamePlaceholder": "Gebruikersnaam",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Wachtwoord (min 12 tekens)",
+ "passwordPlaceholder": "Wachtwoord (min {min} tekens)",
"confirmPasswordPlaceholder": "Wachtwoord herhalen",
"selectOutfit": "Kies je outfit",
"termsAccept": "Ik ben 18+ en accepteer de {hotel} voorwaarden & regels.",
@@ -1074,7 +1074,7 @@
"termsError": "Je moet de voorwaarden & regels accepteren om te registreren.",
"usernameError": "Gebruikersnaam is verplicht.",
"emailError": "Een geldig e-mailadres is verplicht.",
- "passwordError": "Wachtwoord moet minimaal 12 tekens lang zijn",
+ "passwordError": "Wachtwoord moet minimaal {min} tekens lang zijn",
"confirmPasswordError": "Wachtwoorden komen niet overeen.",
"termsRequired": "Je moet de voorwaarden accepteren.",
"ageVerified": "Ik ben 18+ en ga akkoord met de leeftijdsvereiste.",
@@ -1093,7 +1093,7 @@
"strengthFair": "Redelijk",
"strengthGood": "Goed",
"strengthStrong": "Sterk",
- "passwordMinLength": "Wachtwoord moet minimaal 12 tekens lang zijn",
+ "passwordMinLength": "Wachtwoord moet minimaal {min} tekens lang zijn",
"passwordUpper": "Wachtwoord moet minstens één hoofdletter bevatten",
"passwordLower": "Wachtwoord moet minstens één kleine letter bevatten",
"passwordDigit": "Wachtwoord moet minstens één cijfer bevatten",
@@ -1128,10 +1128,10 @@
"reset": {
"title": "Nieuw wachtwoord instellen",
"subtitle": "Kies een sterk wachtwoord dat je nergens anders gebruikt.",
- "passwordPlaceholder": "Nieuw wachtwoord (min 12 tekens)",
+ "passwordPlaceholder": "Nieuw wachtwoord (min {min} tekens)",
"resetPassword": "Wachtwoord resetten",
"backToLogin": "Terug naar inloggen",
- "passwordMinLength": "Wachtwoord moet minimaal 12 tekens lang zijn",
+ "passwordMinLength": "Wachtwoord moet minimaal {min} tekens lang zijn",
"tooManyAttempts": "Te veel pogingen — probeer het later opnieuw",
"invalidLink": "Deze reset-link is ongeldig of verlopen. Vraag een nieuwe aan.",
"failed": "Het wachtwoord kon niet worden gereset. Probeer het opnieuw."
diff --git a/src/messages/no.json b/src/messages/no.json
index 1534ee1f..b5f1c688 100644
--- a/src/messages/no.json
+++ b/src/messages/no.json
@@ -885,7 +885,7 @@
"confirmPassword": "Gjenta passord",
"usernamePlaceholder": "Brukernavn",
"emailPlaceholder": "E-post",
- "passwordPlaceholder": "Passord (minst 12 tegn)",
+ "passwordPlaceholder": "Passord (minst {min} tegn)",
"confirmPasswordPlaceholder": "Gjenta passord",
"selectOutfit": "Velg antrekket ditt",
"termsAccept": "Jeg er 18+ og godtar vilkårene og reglene for {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Du må godta vilkårene og reglene for å registrere deg.",
"usernameError": "Brukernavn er påkrevd.",
"emailError": "Gyldig e-post er nødvendig.",
- "passwordError": "Passordet må være på minst 12 tegn.",
+ "passwordError": "Passordet må være på minst {min} tegn.",
"confirmPasswordError": "Passord stemmer ikke.",
"termsRequired": "Du må godta vilkårene og reglene.",
"usernameRequired": "Brukernavn er påkrevd.",
@@ -920,7 +920,7 @@
"strengthFair": "Middels",
"strengthGood": "God",
"strengthStrong": "Sterk",
- "passwordMinLength": "Passordet må være minst 12 tegn",
+ "passwordMinLength": "Passordet må være minst {min} tegn",
"passwordUpper": "Passordet må inneholde minst én stor bokstav",
"passwordLower": "Passordet må inneholde minst én liten bokstav",
"passwordDigit": "Passordet må inneholde minst ett siffer",
@@ -955,10 +955,10 @@
"reset": {
"title": "Angi et nytt passord",
"subtitle": "Velg et sterkt passord du ikke bruker andre steder.",
- "passwordPlaceholder": "Nytt passord (minst 12 tegn)",
+ "passwordPlaceholder": "Nytt passord (minst {min} tegn)",
"resetPassword": "Tilbakestill passord",
"backToLogin": "Tilbake til innlogging",
- "passwordMinLength": "Passordet må være minst 12 tegn",
+ "passwordMinLength": "Passordet må være minst {min} tegn",
"tooManyAttempts": "For mange forsøk — prøv igjen senere",
"invalidLink": "Denne tilbakestillingslenken er ugyldig eller utløpt. Be om en ny.",
"failed": "Passordet kunne ikke tilbakestilles. Prøv igjen."
diff --git a/src/messages/pl.json b/src/messages/pl.json
index 150f731f..ff756cbe 100644
--- a/src/messages/pl.json
+++ b/src/messages/pl.json
@@ -885,7 +885,7 @@
"confirmPassword": "Powtórz hasło",
"usernamePlaceholder": "Nazwa użytkownika",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Hasło (min. 12 znaków)",
+ "passwordPlaceholder": "Hasło (min. {min} znaków)",
"confirmPasswordPlaceholder": "Powtórz hasło",
"selectOutfit": "Wybierz swój strój",
"termsAccept": "Mam ukończone 18 lat i akceptuję warunki i zasady hotelu {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Aby się zarejestrować, musisz zaakceptować regulamin.",
"usernameError": "Nazwa użytkownika jest wymagana.",
"emailError": "Wymagany jest prawidłowy adres e-mail.",
- "passwordError": "Hasło musi mieć co najmniej 12 znaków",
+ "passwordError": "Hasło musi mieć co najmniej {min} znaków",
"confirmPasswordError": "Hasła nie pasują.",
"termsRequired": "Musisz zaakceptować warunki i zasady.",
"usernameRequired": "Nazwa użytkownika jest wymagana.",
@@ -920,7 +920,7 @@
"strengthFair": "Średnie",
"strengthGood": "Dobre",
"strengthStrong": "Silne",
- "passwordMinLength": "Hasło musi mieć co najmniej 12 znaków",
+ "passwordMinLength": "Hasło musi mieć co najmniej {min} znaków",
"passwordUpper": "Hasło musi zawierać co najmniej jedną wielką literę",
"passwordLower": "Hasło musi zawierać co najmniej jedną małą literę",
"passwordDigit": "Hasło musi zawierać co najmniej jedną cyfrę",
@@ -955,10 +955,10 @@
"reset": {
"title": "Ustaw nowe hasło",
"subtitle": "Wybierz silne hasło, którego nie używasz gdzie indziej.",
- "passwordPlaceholder": "Nowe hasło (min. 12 znaków)",
+ "passwordPlaceholder": "Nowe hasło (min. {min} znaków)",
"resetPassword": "Zresetuj hasło",
"backToLogin": "Powrót do logowania",
- "passwordMinLength": "Hasło musi mieć co najmniej 12 znaków",
+ "passwordMinLength": "Hasło musi mieć co najmniej {min} znaków",
"tooManyAttempts": "Zbyt wiele prób — spróbuj później",
"invalidLink": "Ten link resetujący jest nieprawidłowy lub wygasł. Poproś o nowy.",
"failed": "Nie udało się zresetować hasła. Spróbuj ponownie."
diff --git a/src/messages/pt.json b/src/messages/pt.json
index 28f6ef19..97146816 100644
--- a/src/messages/pt.json
+++ b/src/messages/pt.json
@@ -885,7 +885,7 @@
"confirmPassword": "Repetir senha",
"usernamePlaceholder": "Nome de usuário",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Senha (mín. 12 caracteres)",
+ "passwordPlaceholder": "Senha (mín. {min} caracteres)",
"confirmPasswordPlaceholder": "Repetir senha",
"selectOutfit": "Selecione sua roupa",
"termsAccept": "Tenho mais de 18 anos e aceito os termos e regras do {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Você deve aceitar os termos e regras para se registrar.",
"usernameError": "O nome de usuário é obrigatório.",
"emailError": "E-mail válido é obrigatório.",
- "passwordError": "A senha deve ter pelo menos 12 caracteres",
+ "passwordError": "A senha deve ter pelo menos {min} caracteres",
"confirmPasswordError": "As senhas não coincidem.",
"termsRequired": "Você deve aceitar os termos e regras.",
"usernameRequired": "O nome de usuário é obrigatório.",
@@ -920,7 +920,7 @@
"strengthFair": "Razoável",
"strengthGood": "Boa",
"strengthStrong": "Forte",
- "passwordMinLength": "A senha deve ter pelo menos 12 caracteres",
+ "passwordMinLength": "A senha deve ter pelo menos {min} caracteres",
"passwordUpper": "A senha deve conter pelo menos uma letra maiúscula",
"passwordLower": "A senha deve conter pelo menos uma letra minúscula",
"passwordDigit": "A senha deve conter pelo menos um dígito",
@@ -955,10 +955,10 @@
"reset": {
"title": "Defina uma nova senha",
"subtitle": "Escolha uma senha forte que você não usa em outro lugar.",
- "passwordPlaceholder": "Nova senha (mínimo 12 caracteres)",
+ "passwordPlaceholder": "Nova senha (mínimo {min} caracteres)",
"resetPassword": "Redefinir senha",
"backToLogin": "Voltar ao login",
- "passwordMinLength": "A senha deve ter pelo menos 12 caracteres",
+ "passwordMinLength": "A senha deve ter pelo menos {min} caracteres",
"tooManyAttempts": "Muitas tentativas — tente mais tarde",
"invalidLink": "Este link de redefinição é inválido ou expirou. Peça um novo.",
"failed": "Não foi possível redefinir a palavra-passe. Tente novamente."
diff --git a/src/messages/ro.json b/src/messages/ro.json
index 1e53baab..edf111ed 100644
--- a/src/messages/ro.json
+++ b/src/messages/ro.json
@@ -885,7 +885,7 @@
"confirmPassword": "Repetați parola",
"usernamePlaceholder": "Nume de utilizator",
"emailPlaceholder": "E-mail",
- "passwordPlaceholder": "Parola (min 12 caractere)",
+ "passwordPlaceholder": "Parola (min {min} caractere)",
"confirmPasswordPlaceholder": "Repetați parola",
"selectOutfit": "Alege-ți ținuta",
"termsAccept": "Am peste 18 ani și accept termenii și regulile {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Trebuie să acceptați termenii și regulile pentru a vă înregistra.",
"usernameError": "Numele de utilizator este obligatoriu.",
"emailError": "Este necesar un e-mail valid.",
- "passwordError": "Parola trebuie să aibă cel puțin 12 caractere",
+ "passwordError": "Parola trebuie să aibă cel puțin {min} caractere",
"confirmPasswordError": "Parolele nu se potrivesc.",
"termsRequired": "Trebuie să acceptați termenii și regulile.",
"usernameRequired": "Numele de utilizator este obligatoriu.",
@@ -920,7 +920,7 @@
"strengthFair": "Medie",
"strengthGood": "Bună",
"strengthStrong": "Puternică",
- "passwordMinLength": "Parola trebuie să aibă cel puțin 12 caractere",
+ "passwordMinLength": "Parola trebuie să aibă cel puțin {min} caractere",
"passwordUpper": "Parola trebuie să conțină cel puțin o literă mare",
"passwordLower": "Parola trebuie să conțină cel puțin o literă mică",
"passwordDigit": "Parola trebuie să conțină cel puțin o cifră",
@@ -955,10 +955,10 @@
"reset": {
"title": "Setați o nouă parolă",
"subtitle": "Alegeți o parolă puternică pe care nu o utilizați în altă parte.",
- "passwordPlaceholder": "Parolă nouă (min 12 caractere)",
+ "passwordPlaceholder": "Parolă nouă (min {min} caractere)",
"resetPassword": "Resetează parola",
"backToLogin": "Înapoi la autentificare",
- "passwordMinLength": "Parola trebuie să aibă cel puțin 12 caractere",
+ "passwordMinLength": "Parola trebuie să aibă cel puțin {min} caractere",
"tooManyAttempts": "Prea multe încercări — încearcă mai târziu",
"invalidLink": "Acest link de resetare nu este valabil sau a expirat. Solicită unul nou.",
"failed": "Parola nu a putut fi resetată. Încearcă din nou."
diff --git a/src/messages/ru.json b/src/messages/ru.json
index 6cba3dd1..ba5c0f81 100644
--- a/src/messages/ru.json
+++ b/src/messages/ru.json
@@ -883,7 +883,7 @@
"confirmPassword": "Повторите пароль",
"usernamePlaceholder": "Имя пользователя",
"emailPlaceholder": "Электронная почта",
- "passwordPlaceholder": "Пароль (мин. 12 символов)",
+ "passwordPlaceholder": "Пароль (мин. {min} символов)",
"confirmPasswordPlaceholder": "Повторите пароль",
"selectOutfit": "Выберите свой наряд",
"termsAccept": "Мне 18+ и я принимаю условия и правила {hotel}.",
@@ -895,7 +895,7 @@
"termsError": "Чтобы зарегистрироваться, вы должны принять условия и правила.",
"usernameError": "Требуется имя пользователя.",
"emailError": "Требуется действительный адрес электронной почты.",
- "passwordError": "Пароль должен содержать не менее 12 символов",
+ "passwordError": "Пароль должен содержать не менее {min} символов",
"confirmPasswordError": "Пароли не совпадают.",
"termsRequired": "Вы должны принять условия и правила.",
"usernameRequired": "Требуется имя пользователя.",
@@ -918,7 +918,7 @@
"strengthFair": "Средний",
"strengthGood": "Хороший",
"strengthStrong": "Надёжный",
- "passwordMinLength": "Пароль должен содержать не менее 12 символов",
+ "passwordMinLength": "Пароль должен содержать не менее {min} символов",
"passwordUpper": "Пароль должен содержать хотя бы одну заглавную букву",
"passwordLower": "Пароль должен содержать хотя бы одну строчную букву",
"passwordDigit": "Пароль должен содержать хотя бы одну цифру",
@@ -953,10 +953,10 @@
"reset": {
"title": "Установить новый пароль",
"subtitle": "Выберите надежный пароль, который вы больше не используете.",
- "passwordPlaceholder": "Новый пароль (мин. 12 символов)",
+ "passwordPlaceholder": "Новый пароль (мин. {min} символов)",
"resetPassword": "Сбросить пароль",
"backToLogin": "Назад к входу",
- "passwordMinLength": "Пароль должен содержать не менее 12 символов",
+ "passwordMinLength": "Пароль должен содержать не менее {min} символов",
"tooManyAttempts": "Слишком много попыток — повторите позже",
"invalidLink": "Эта ссылка для сброса недействительна или истекла. Запросите новую.",
"failed": "Не удалось сбросить пароль. Попробуйте снова."
diff --git a/src/messages/sk.json b/src/messages/sk.json
index 77a7767d..d2eb1273 100644
--- a/src/messages/sk.json
+++ b/src/messages/sk.json
@@ -885,7 +885,7 @@
"confirmPassword": "Zopakujte heslo",
"usernamePlaceholder": "Používateľské meno",
"emailPlaceholder": "Email",
- "passwordPlaceholder": "Heslo (min. 12 znakov)",
+ "passwordPlaceholder": "Heslo (min. {min} znakov)",
"confirmPasswordPlaceholder": "Zopakujte heslo",
"selectOutfit": "Vyberte si oblečenie",
"termsAccept": "Mám 18+ a súhlasím so zmluvnými podmienkami a pravidlami {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Ak sa chcete zaregistrovať, musíte prijať podmienky a pravidlá.",
"usernameError": "Vyžaduje sa používateľské meno.",
"emailError": "Vyžaduje sa platný e-mail.",
- "passwordError": "Heslo musí mať aspoň 12 znakov",
+ "passwordError": "Heslo musí mať aspoň {min} znakov",
"confirmPasswordError": "Heslá sa nezhodujú.",
"termsRequired": "Musíte prijať podmienky a pravidlá.",
"usernameRequired": "Vyžaduje sa používateľské meno.",
@@ -920,7 +920,7 @@
"strengthFair": "Priemerné",
"strengthGood": "Dobré",
"strengthStrong": "Silné",
- "passwordMinLength": "Heslo musí mať aspoň 12 znakov",
+ "passwordMinLength": "Heslo musí mať aspoň {min} znakov",
"passwordUpper": "Heslo musí obsahovať aspoň jedno veľké písmeno",
"passwordLower": "Heslo musí obsahovať aspoň jedno malé písmeno",
"passwordDigit": "Heslo musí obsahovať aspoň jednu číslicu",
@@ -955,10 +955,10 @@
"reset": {
"title": "Nastavte si nové heslo",
"subtitle": "Zvoľte si silné heslo, ktoré inde nepoužívate.",
- "passwordPlaceholder": "Nové heslo (min. 12 znakov)",
+ "passwordPlaceholder": "Nové heslo (min. {min} znakov)",
"resetPassword": "Obnoviť heslo",
"backToLogin": "Späť na prihlásenie",
- "passwordMinLength": "Heslo musí mať aspoň 12 znakov",
+ "passwordMinLength": "Heslo musí mať aspoň {min} znakov",
"tooManyAttempts": "Príliš veľa pokusov — skúste to neskôr",
"invalidLink": "Tento odkaz na obnovenie je neplatný alebo vypršal. Vyžiadajte si nový.",
"failed": "Heslo nebolo možné obnoviť. Skúste to znova."
diff --git a/src/messages/sr.json b/src/messages/sr.json
index 1299ef9a..53178c51 100644
--- a/src/messages/sr.json
+++ b/src/messages/sr.json
@@ -885,7 +885,7 @@
"confirmPassword": "Поновите лозинку",
"usernamePlaceholder": "Корисничко име",
"emailPlaceholder": "Емаил",
- "passwordPlaceholder": "Лозинка (мин 12 знакова)",
+ "passwordPlaceholder": "Лозинка (мин {min} знакова)",
"confirmPasswordPlaceholder": "Поновите лозинку",
"selectOutfit": "Изаберите своју одећу",
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
@@ -897,7 +897,7 @@
"termsError": "Морате прихватити услове и правила да бисте се регистровали.",
"usernameError": "Корисничко име је обавезно.",
"emailError": "Потребан је важећи имејл.",
- "passwordError": "Лозинка мора имати најмање 12 знакова",
+ "passwordError": "Лозинка мора имати најмање {min} знакова",
"confirmPasswordError": "Лозинке се не поклапају.",
"termsRequired": "Морате прихватити услове и правила.",
"usernameRequired": "Корисничко име је обавезно.",
@@ -920,7 +920,7 @@
"strengthFair": "Средња",
"strengthGood": "Добра",
"strengthStrong": "Јака",
- "passwordMinLength": "Лозинка мора имати најмање 12 знакова",
+ "passwordMinLength": "Лозинка мора имати најмање {min} знакова",
"passwordUpper": "Лозинка мора садржати најмање једно велико слово",
"passwordLower": "Лозинка мора садржати најмање једно мало слово",
"passwordDigit": "Лозинка мора садржати најмање једну цифру",
@@ -955,10 +955,10 @@
"reset": {
"title": "Поставите нову лозинку",
"subtitle": "Изаберите јаку лозинку коју не користите другде.",
- "passwordPlaceholder": "Нова лозинка (мин 12 знакова)",
+ "passwordPlaceholder": "Нова лозинка (мин {min} знакова)",
"resetPassword": "Ресетујте лозинку",
"backToLogin": "Назад на пријаву",
- "passwordMinLength": "Лозинка мора имати најмање 12 знакова",
+ "passwordMinLength": "Лозинка мора имати најмање {min} знакова",
"tooManyAttempts": "Превише покушаја — покушајте касније",
"invalidLink": "Ова веза за ресетовање није исправна или је истекла. Затражите нову.",
"failed": "Лозинка није могла бити ресетована. Покушајте поново."
diff --git a/src/messages/sv.json b/src/messages/sv.json
index c629f491..3ffea170 100644
--- a/src/messages/sv.json
+++ b/src/messages/sv.json
@@ -885,7 +885,7 @@
"confirmPassword": "Upprepa lösenordet",
"usernamePlaceholder": "Användarnamn",
"emailPlaceholder": "E-post",
- "passwordPlaceholder": "Lösenord (minst 12 tecken)",
+ "passwordPlaceholder": "Lösenord (minst {min} tecken)",
"confirmPasswordPlaceholder": "Upprepa lösenordet",
"selectOutfit": "Välj din outfit",
"termsAccept": "Jag är 18+ och accepterar villkoren och reglerna för {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Du måste acceptera villkoren och reglerna för att registrera dig.",
"usernameError": "Användarnamn krävs.",
"emailError": "Giltig e-postadress krävs.",
- "passwordError": "Lösenordet måste bestå av minst 12 tecken.",
+ "passwordError": "Lösenordet måste bestå av minst {min} tecken.",
"confirmPasswordError": "Lösenord stämmer inte överens.",
"termsRequired": "Du måste acceptera villkoren och reglerna.",
"usernameRequired": "Användarnamn krävs.",
@@ -920,7 +920,7 @@
"strengthFair": "Medel",
"strengthGood": "God",
"strengthStrong": "Stark",
- "passwordMinLength": "Lösenordet måste vara minst 12 tecken",
+ "passwordMinLength": "Lösenordet måste vara minst {min} tecken",
"passwordUpper": "Lösenordet måste innehålla minst en stor bokstav",
"passwordLower": "Lösenordet måste innehålla minst en liten bokstav",
"passwordDigit": "Lösenordet måste innehålla minst en siffra",
@@ -955,10 +955,10 @@
"reset": {
"title": "Ange ett nytt lösenord",
"subtitle": "Välj ett starkt lösenord som du inte använder någon annanstans.",
- "passwordPlaceholder": "Nytt lösenord (minst 12 tecken)",
+ "passwordPlaceholder": "Nytt lösenord (minst {min} tecken)",
"resetPassword": "Återställ lösenord",
"backToLogin": "Tillbaka till inloggning",
- "passwordMinLength": "Lösenordet måste vara minst 12 tecken",
+ "passwordMinLength": "Lösenordet måste vara minst {min} tecken",
"tooManyAttempts": "För många försök — försök igen senare",
"invalidLink": "Den här återställningslänken är ogiltig eller har gått ut. Begär en ny.",
"failed": "Lösenordet kunde inte återställas. Försök igen."
diff --git a/src/messages/tr.json b/src/messages/tr.json
index 1849bb3b..349b30c9 100644
--- a/src/messages/tr.json
+++ b/src/messages/tr.json
@@ -885,7 +885,7 @@
"confirmPassword": "Şifreyi tekrarla",
"usernamePlaceholder": "Kullanıcı adı",
"emailPlaceholder": "E-posta",
- "passwordPlaceholder": "Şifre (en az 12 karakter)",
+ "passwordPlaceholder": "Şifre (en az {min} karakter)",
"confirmPasswordPlaceholder": "Şifreyi tekrarla",
"selectOutfit": "Kıyafetinizi seçin",
"termsAccept": "18 yaşındayım ve {hotel} şartlarını ve kurallarını kabul ediyorum.",
@@ -897,7 +897,7 @@
"termsError": "Kayıt olmak için şartları ve kuralları kabul etmelisiniz.",
"usernameError": "Kullanıcı adı gerekli.",
"emailError": "Geçerli e-posta gereklidir.",
- "passwordError": "Şifre en az 12 karakter olmalıdır.",
+ "passwordError": "Şifre en az {min} karakter olmalıdır.",
"confirmPasswordError": "Şifreler eşleşmiyor.",
"termsRequired": "Şartları ve kuralları kabul etmelisiniz.",
"usernameRequired": "Kullanıcı adı gerekli.",
@@ -920,7 +920,7 @@
"strengthFair": "Orta",
"strengthGood": "İyi",
"strengthStrong": "Güçlü",
- "passwordMinLength": "Şifre en az 12 karakter olmalıdır",
+ "passwordMinLength": "Şifre en az {min} karakter olmalıdır",
"passwordUpper": "Şifre en az bir büyük harf içermelidir",
"passwordLower": "Şifre en az bir küçük harf içermelidir",
"passwordDigit": "Şifre en az bir rakam içermelidir",
@@ -955,10 +955,10 @@
"reset": {
"title": "Yeni bir şifre belirleyin",
"subtitle": "Başka yerde kullanmadığınız güçlü bir şifre seçin.",
- "passwordPlaceholder": "Yeni şifre (en az 12 karakter)",
+ "passwordPlaceholder": "Yeni şifre (en az {min} karakter)",
"resetPassword": "Şifreyi sıfırla",
"backToLogin": "Girişe geri dön",
- "passwordMinLength": "Şifre en az 12 karakter olmalıdır",
+ "passwordMinLength": "Şifre en az {min} karakter olmalıdır",
"tooManyAttempts": "Çok fazla deneme — daha sonra tekrar deneyin",
"invalidLink": "Bu şifre sıfırlama bağlantısı geçersiz veya süresi dolmuş. Yeni bir tane isteyin.",
"failed": "Şifre sıfırlanamadı. Lütfen tekrar deneyin."
diff --git a/src/messages/uk.json b/src/messages/uk.json
index ab8ad57b..77fceb4c 100644
--- a/src/messages/uk.json
+++ b/src/messages/uk.json
@@ -885,7 +885,7 @@
"confirmPassword": "Повторіть пароль",
"usernamePlaceholder": "Ім'я користувача",
"emailPlaceholder": "Електронна пошта",
- "passwordPlaceholder": "Пароль (мінімум 12 символів)",
+ "passwordPlaceholder": "Пароль (мінімум {min} символів)",
"confirmPasswordPlaceholder": "Повторіть пароль",
"selectOutfit": "Виберіть свій наряд",
"termsAccept": "Мені 18+ і я приймаю умови та правила {hotel}.",
@@ -897,7 +897,7 @@
"termsError": "Ви повинні прийняти умови та правила, щоб зареєструватися.",
"usernameError": "Потрібно ввести ім'я користувача.",
"emailError": "Потрібна дійсна електронна адреса.",
- "passwordError": "Пароль має містити щонайменше 12 символів",
+ "passwordError": "Пароль має містити щонайменше {min} символів",
"confirmPasswordError": "Паролі не збігаються.",
"termsRequired": "Ви повинні прийняти умови та правила.",
"usernameRequired": "Потрібно ввести ім'я користувача.",
@@ -920,7 +920,7 @@
"strengthFair": "Середній",
"strengthGood": "Добрий",
"strengthStrong": "Надійний",
- "passwordMinLength": "Пароль має містити щонайменше 12 символів",
+ "passwordMinLength": "Пароль має містити щонайменше {min} символів",
"passwordUpper": "Пароль має містити хоча б одну велику літеру",
"passwordLower": "Пароль має містити хоча б одну малу літеру",
"passwordDigit": "Пароль має містити хоча б одну цифру",
@@ -955,10 +955,10 @@
"reset": {
"title": "Встановіть новий пароль",
"subtitle": "Виберіть надійний пароль, який більше не використовується.",
- "passwordPlaceholder": "Новий пароль (мінімум 12 символів)",
+ "passwordPlaceholder": "Новий пароль (мінімум {min} символів)",
"resetPassword": "Скинути пароль",
"backToLogin": "Назад до входу",
- "passwordMinLength": "Пароль має містити щонайменше 12 символів",
+ "passwordMinLength": "Пароль має містити щонайменше {min} символів",
"tooManyAttempts": "Забагато спроб — спробуйте пізніше",
"invalidLink": "Це посилання для скидання недійсне або прострочене. Запросіть нове.",
"failed": "Не вдалося скинути пароль. Спробуйте ще раз."