refactor(auth): merge the duplicate login form and localize the auth screens
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 1m8s
CI / tests-integration (push) Successful in 1m53s
CI / tests-unit (push) Successful in 1m59s
CI / tests-ui (push) Successful in 2m42s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 4m33s
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 1m8s
CI / tests-integration (push) Successful in 1m53s
CI / tests-unit (push) Successful in 1m59s
CI / tests-ui (push) Successful in 2m42s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 4m33s
`home-login-form.tsx` and `login-form.tsx` were two ~240-line near-identical components. Delete the former and give `LoginForm` a `variant` prop: - `variant="page"` sr-only labels plus the register/forgot footer (/login) - `variant="compact"` visible labels, no footer (homepage sidebar) Field ids now come from `useId()`, so the two usages can never collide, and the hardcoded "Show"/"Hide"/"Loading" strings are translated. Localization of the login and register screens: - `home-login-form.tsx` was entirely hardcoded English. - `passwordStrength()` returned hardcoded "Weak"/"Fair"/"Good"/"Strong". - `register.ts` returned only English strings. It now returns a locale-independent `code` next to the message, and the form renders `t(code)` with the English string as a fallback. - Backfilled the new keys across all 25 locales, plus the login/register strings that were still English in most of them. `ar`, `fi` and `ja` had their entire login/register namespace in English and are now filled in. Locale parity stays at 0 missing keys, as `i18n:check` requires. Copy that did not match the enforced rules: the UI advertised "min 8 chars" (EN) / "min 6 tekens" (NL) while registration requires 12 characters plus an uppercase, a lowercase, a digit and a special character. Corrected in every locale. `password-reset.ts` enforced only 6 characters and is raised to 12 to match registration. Accessibility: `login-form.tsx` had no `<label>`, no `id` and no `required` on any field. All three are now present, and error banners are announced with `role="alert"`. Adds `src/i18n/auth-messages.test.ts`, which asserts every `RegisterErrorCode` resolves to a non-empty message in all 25 locales; verified it fails when a key is removed. The existing register tests now also assert the error `code`.
This commit is contained in:
1 parent
3d828a61ab
commit
6bffc53779
33 files changed
+1756
-842
No files matched your search
@@ -86,7 +86,7 @@ export async function resetPassword(formData: FormData): Promise<void> {
|
||||
}
|
||||
|
||||
let error: string | null = null;
|
||||
if (password.length < 6) error = "Password must be at least 6 characters";
|
||||
if (password.length < 12) error = "Password must be at least 12 characters";
|
||||
|
||||
if (!error) {
|
||||
try {
|
||||
|
||||
@@ -184,6 +184,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "Username must be at least 3 characters",
|
||||
ok: false,
|
||||
code: "usernameMinLength",
|
||||
});
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -191,6 +192,7 @@ describe("register", () => {
|
||||
it("rejects usernames containing characters outside the allowed set", async () => {
|
||||
const result = await register(PREV, buildForm({ username: "bad name!" }));
|
||||
expect(result.error).toContain("letters, numbers, underscore and hyphen");
|
||||
expect(result.code).toBe("usernamePattern");
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -199,6 +201,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "Enter a valid email address",
|
||||
ok: false,
|
||||
code: "emailValid",
|
||||
});
|
||||
});
|
||||
|
||||
@@ -207,6 +210,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "Password must be at least 12 characters",
|
||||
ok: false,
|
||||
code: "passwordMinLength",
|
||||
});
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -220,6 +224,7 @@ describe("register", () => {
|
||||
}),
|
||||
);
|
||||
expect(result.error).toContain("uppercase");
|
||||
expect(result.code).toBe("passwordUpper");
|
||||
});
|
||||
|
||||
it("rejects passwords without a digit", async () => {
|
||||
@@ -231,6 +236,7 @@ describe("register", () => {
|
||||
}),
|
||||
);
|
||||
expect(result.error).toContain("digit");
|
||||
expect(result.code).toBe("passwordDigit");
|
||||
});
|
||||
|
||||
it("rejects passwords without a special character", async () => {
|
||||
@@ -242,6 +248,7 @@ describe("register", () => {
|
||||
}),
|
||||
);
|
||||
expect(result.error).toContain("special");
|
||||
expect(result.code).toBe("passwordSpecial");
|
||||
});
|
||||
|
||||
it("rejects mismatched password confirmations", async () => {
|
||||
@@ -249,13 +256,18 @@ describe("register", () => {
|
||||
PREV,
|
||||
buildForm({ password_confirmation: "Different1" }),
|
||||
);
|
||||
expect(result).toEqual({ error: "Passwords do not match", ok: false });
|
||||
expect(result).toEqual({
|
||||
error: "Passwords do not match",
|
||||
ok: false,
|
||||
code: "passwordsMatch",
|
||||
});
|
||||
});
|
||||
|
||||
it("throttles sign-ups per IP", async () => {
|
||||
state.rateLimit.mockResolvedValueOnce({ ok: false, retryAfter: 120 });
|
||||
const result = await runValidRegistration();
|
||||
expect(result.error).toContain("Too many sign-up attempts");
|
||||
expect(result.code).toBe("rateLimited");
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -273,6 +285,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "Captcha verification failed. Please try again.",
|
||||
ok: false,
|
||||
code: "captchaFailed",
|
||||
});
|
||||
expect(state.verifyCaptcha).toHaveBeenCalledWith("token", "203.0.113.9");
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
@@ -290,6 +303,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "You must accept the terms and conditions to register.",
|
||||
ok: false,
|
||||
code: "termsRequired",
|
||||
});
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -298,7 +312,11 @@ describe("register", () => {
|
||||
state.checkVpn.mockResolvedValue({ blocked: true });
|
||||
state.siteGet.mockResolvedValueOnce("Custom VPN message");
|
||||
const result = await runValidRegistration();
|
||||
expect(result).toEqual({ error: "Custom VPN message", ok: false });
|
||||
expect(result).toEqual({
|
||||
error: "Custom VPN message",
|
||||
ok: false,
|
||||
code: "vpnBlocked",
|
||||
});
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -317,6 +335,7 @@ describe("register", () => {
|
||||
state.countTotal = 2;
|
||||
const result = await runValidRegistration();
|
||||
expect(result.error).toContain("maximum number of accounts");
|
||||
expect(result.code).toBe("maxAccountsPerIp");
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -340,6 +359,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "That username is already taken",
|
||||
ok: false,
|
||||
code: "usernameTaken",
|
||||
});
|
||||
expect(state.insert).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -350,6 +370,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "Registration is temporarily unavailable",
|
||||
ok: false,
|
||||
code: "unavailable",
|
||||
});
|
||||
expect(state.logger.warn).toHaveBeenCalledWith(
|
||||
"Username uniqueness check failed during registration",
|
||||
@@ -365,6 +386,7 @@ describe("register", () => {
|
||||
expect(result).toEqual({
|
||||
error: "That username is already taken",
|
||||
ok: false,
|
||||
code: "usernameTaken",
|
||||
});
|
||||
expect(state.logger.error).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -373,6 +395,7 @@ describe("register", () => {
|
||||
state.insert.mockRejectedValueOnce(new Error("db exploded"));
|
||||
const result = await runValidRegistration();
|
||||
expect(result.error).toContain("Could not create the account");
|
||||
expect(result.code).toBe("createFailed");
|
||||
expect(state.logger.error).toHaveBeenCalledWith(
|
||||
"Account creation failed",
|
||||
expect.objectContaining({ message: "db exploded" }),
|
||||
|
||||
+72
-7
@@ -121,19 +121,72 @@ const registerSchema = z
|
||||
path: ["passwordConfirmation"],
|
||||
});
|
||||
|
||||
/**
|
||||
* Stable, locale-independent reason for a failed sign-up. The client maps these
|
||||
* onto `pages.register.<code>` so the form speaks the visitor's language; the
|
||||
* English `error` string stays as a fallback and for API/log consumers.
|
||||
*/
|
||||
export type RegisterErrorCode =
|
||||
| "usernameMinLength"
|
||||
| "usernameMaxLength"
|
||||
| "usernamePattern"
|
||||
| "usernameReserved"
|
||||
| "usernameTaken"
|
||||
| "emailValid"
|
||||
| "emailDisposable"
|
||||
| "passwordMinLength"
|
||||
| "passwordMaxLength"
|
||||
| "passwordUpper"
|
||||
| "passwordLower"
|
||||
| "passwordDigit"
|
||||
| "passwordSpecial"
|
||||
| "passwordsMatch"
|
||||
| "termsRequired"
|
||||
| "captchaFailed"
|
||||
| "rateLimited"
|
||||
| "vpnBlocked"
|
||||
| "maxAccountsPerIp"
|
||||
| "unavailable"
|
||||
| "createFailed"
|
||||
| "invalidInput";
|
||||
|
||||
/** Maps the schema's English messages onto locale-independent codes. */
|
||||
const ZOD_MESSAGE_CODES: Record<string, RegisterErrorCode> = {
|
||||
"Username must be at least 3 characters": "usernameMinLength",
|
||||
"Username must be at most 25 characters": "usernameMaxLength",
|
||||
"Username may only contain letters, numbers, underscore and hyphen":
|
||||
"usernamePattern",
|
||||
"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 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",
|
||||
"Password must contain at least one special character": "passwordSpecial",
|
||||
"Passwords do not match": "passwordsMatch",
|
||||
};
|
||||
|
||||
// A valid starter Habbo figure so the avatar renders in-client immediately.
|
||||
const DEFAULT_LOOK = "hr-100-.hd-180-1.ch-255-66.lg-280-110.sh-305-62";
|
||||
|
||||
export interface RegisterState {
|
||||
error: string | null;
|
||||
ok: boolean;
|
||||
/** Locale-independent reason, present on every failure. */
|
||||
code?: RegisterErrorCode;
|
||||
}
|
||||
|
||||
export async function register(
|
||||
_prevState: RegisterState,
|
||||
formData: FormData,
|
||||
): Promise<RegisterState> {
|
||||
const fail = (error: string): RegisterState => ({ error, ok: false });
|
||||
const fail = (error: string, code: RegisterErrorCode): RegisterState => ({
|
||||
error,
|
||||
ok: false,
|
||||
code,
|
||||
});
|
||||
const raw = {
|
||||
username: String(formData.get("username") ?? "")
|
||||
.normalize("NFC")
|
||||
@@ -155,7 +208,8 @@ export async function register(
|
||||
|
||||
const parsed = registerSchema.safeParse(raw);
|
||||
if (!parsed.success) {
|
||||
return fail(parsed.error.issues[0]?.message ?? "Invalid input");
|
||||
const message = parsed.error.issues[0]?.message ?? "Invalid input";
|
||||
return fail(message, ZOD_MESSAGE_CODES[message] ?? "invalidInput");
|
||||
}
|
||||
|
||||
const { username, mail, password, look } = parsed.data;
|
||||
@@ -166,6 +220,7 @@ export async function register(
|
||||
if (!(await rateLimit(`register:${ip}`, 5, 10 * 60_000)).ok) {
|
||||
return fail(
|
||||
"Too many sign-up attempts. Please wait a few minutes and try again.",
|
||||
"rateLimited",
|
||||
);
|
||||
}
|
||||
|
||||
@@ -174,18 +229,25 @@ export async function register(
|
||||
if (cfg.provider !== "none") {
|
||||
const token = String(formData.get(cfg.field) ?? "").normalize("NFC");
|
||||
if (!(await verifyCaptcha(token, ip)))
|
||||
return fail("Captcha verification failed. Please try again.");
|
||||
return fail(
|
||||
"Captcha verification failed. Please try again.",
|
||||
"captchaFailed",
|
||||
);
|
||||
}
|
||||
|
||||
// Terms acceptance check.
|
||||
if (!raw.termsAccepted)
|
||||
return fail("You must accept the terms and conditions to register.");
|
||||
return fail(
|
||||
"You must accept the terms and conditions to register.",
|
||||
"termsRequired",
|
||||
);
|
||||
|
||||
// VPN/proxy block (only when enabled in /admin/vpn).
|
||||
if ((await checkVpn(ip)).blocked) {
|
||||
return fail(
|
||||
(await siteSettings.get("vpn_block_message", "")) ||
|
||||
"Registrations from VPN/proxy connections are not allowed.",
|
||||
"vpnBlocked",
|
||||
);
|
||||
}
|
||||
|
||||
@@ -200,6 +262,7 @@ export async function register(
|
||||
if (Number(row?.total ?? 0) >= max)
|
||||
return fail(
|
||||
"You have reached the maximum number of accounts for your connection.",
|
||||
"maxAccountsPerIp",
|
||||
);
|
||||
}
|
||||
|
||||
@@ -210,10 +273,11 @@ export async function register(
|
||||
.from(User)
|
||||
.where(eq(User.username, username))
|
||||
.limit(1);
|
||||
if (existing) return fail("That username is already taken");
|
||||
if (existing)
|
||||
return fail("That username is already taken", "usernameTaken");
|
||||
} catch {
|
||||
logger.warn("Username uniqueness check failed during registration");
|
||||
return fail("Registration is temporarily unavailable");
|
||||
return fail("Registration is temporarily unavailable", "unavailable");
|
||||
}
|
||||
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
@@ -233,7 +297,7 @@ export async function register(
|
||||
} catch (err) {
|
||||
const code = (err as { cause?: { code?: string } }).cause?.code;
|
||||
if (code === "ER_DUP_ENTRY") {
|
||||
return fail("That username is already taken");
|
||||
return fail("That username is already taken", "usernameTaken");
|
||||
}
|
||||
logger.error("Account creation failed", {
|
||||
code,
|
||||
@@ -241,6 +305,7 @@ export async function register(
|
||||
});
|
||||
return fail(
|
||||
"Could not create the account. Please try again or contact staff.",
|
||||
"createFailed",
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { redirect } from "next/navigation";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import type { CSSProperties, ReactNode } from "react";
|
||||
import { AnimatedCounter } from "@/components/animated-counter";
|
||||
import { HomeLoginForm } from "@/components/auth/home-login-form";
|
||||
import { LoginForm } from "@/components/auth/login-form";
|
||||
import { Clock } from "@/components/clock";
|
||||
import { LanguageSwitcher } from "@/components/language-switcher";
|
||||
import Link from "@/components/link";
|
||||
@@ -870,7 +870,9 @@ export default async function Home() {
|
||||
icon={ICON_NAV_ME}
|
||||
bodyClassName="p-3.5 sm:p-4"
|
||||
>
|
||||
<HomeLoginForm
|
||||
<LoginForm
|
||||
variant="compact"
|
||||
redirectTo="/"
|
||||
captcha={{
|
||||
provider: captcha.provider,
|
||||
siteKey: captcha.siteKey || undefined,
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
"use client";
|
||||
|
||||
import { signIn } from "next-auth/react";
|
||||
import { type FormEvent, useState } from "react";
|
||||
import { precheckLogin } from "@/actions/auth-precheck";
|
||||
import {
|
||||
type CaptchaPublicConfig,
|
||||
CaptchaWidget,
|
||||
readCaptchaToken,
|
||||
} from "@/components/auth/captcha-widget";
|
||||
import { signInWithTransientRetry } from "@/lib/auth/sign-in-retry";
|
||||
|
||||
export function HomeLoginForm({
|
||||
captcha = { provider: "none" },
|
||||
nonce,
|
||||
}: {
|
||||
captcha?: CaptchaPublicConfig;
|
||||
nonce?: string;
|
||||
} = {}) {
|
||||
const [username, setUsername] = useState("");
|
||||
const [password, setPassword] = useState("");
|
||||
const [showPassword, setShowPassword] = useState(false);
|
||||
const [code, setCode] = useState("");
|
||||
const [needs2fa, setNeeds2fa] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [pending, setPending] = useState(false);
|
||||
|
||||
async function onSubmit(e: FormEvent<HTMLFormElement>) {
|
||||
e.preventDefault();
|
||||
setError(null);
|
||||
setPending(true);
|
||||
try {
|
||||
if (!needs2fa) {
|
||||
const captchaToken = readCaptchaToken(e.currentTarget, captcha);
|
||||
const pre = await precheckLogin(username, password, captchaToken);
|
||||
if (pre === "invalid") {
|
||||
setError("Invalid username or password");
|
||||
return;
|
||||
}
|
||||
if (pre === "captcha") {
|
||||
setError("Captcha verification failed. Please try again.");
|
||||
return;
|
||||
}
|
||||
if (pre === "unverified") {
|
||||
setError("Please verify your email before signing in.");
|
||||
return;
|
||||
}
|
||||
if (pre === "twofactor") {
|
||||
setNeeds2fa(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
const res = await signInWithTransientRetry(() =>
|
||||
signIn("credentials", {
|
||||
username,
|
||||
password,
|
||||
code,
|
||||
redirect: false,
|
||||
}),
|
||||
);
|
||||
if (!res || res.error) {
|
||||
setError(
|
||||
needs2fa ? "Invalid 2FA code" : "Invalid username or password",
|
||||
);
|
||||
return;
|
||||
}
|
||||
window.location.href = "/";
|
||||
} catch {
|
||||
setError(needs2fa ? "Invalid 2FA code" : "Invalid username or password");
|
||||
} finally {
|
||||
setPending(false);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<form onSubmit={onSubmit} className="relative flex flex-col gap-4">
|
||||
<div className="space-y-1">
|
||||
<label
|
||||
htmlFor="login-username"
|
||||
className="block text-xs font-bold uppercase tracking-wider"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
Username
|
||||
</label>
|
||||
<input
|
||||
id="login-username"
|
||||
type="text"
|
||||
value={username}
|
||||
onChange={(e) => setUsername(e.target.value)}
|
||||
placeholder="Your username"
|
||||
autoComplete="username"
|
||||
disabled={needs2fa}
|
||||
className="input-glow w-full rounded-xl border-2 px-4 py-3 text-sm font-medium transition-all focus:outline-none disabled:opacity-50"
|
||||
style={{
|
||||
backgroundColor: "var(--color-background)",
|
||||
color: "var(--color-text-readable)",
|
||||
borderColor: needs2fa
|
||||
? "color-mix(in srgb, var(--color-text-muted) 15%, transparent)"
|
||||
: "color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
}}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-1">
|
||||
<div className="flex items-center justify-between">
|
||||
<label
|
||||
htmlFor="login-password"
|
||||
className="block text-xs font-bold uppercase tracking-wider"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
Password
|
||||
</label>
|
||||
</div>
|
||||
<div className="relative">
|
||||
<input
|
||||
id="login-password"
|
||||
type={showPassword ? "text" : "password"}
|
||||
value={password}
|
||||
onChange={(e) => setPassword(e.target.value)}
|
||||
placeholder="Your password"
|
||||
autoComplete="current-password"
|
||||
disabled={needs2fa}
|
||||
className="input-glow w-full rounded-xl border-2 px-4 py-3 text-sm font-medium transition-all focus:outline-none disabled:opacity-50"
|
||||
style={{
|
||||
backgroundColor: "var(--color-background)",
|
||||
color: "var(--color-text-readable)",
|
||||
borderColor: needs2fa
|
||||
? "color-mix(in srgb, var(--color-text-muted) 15%, transparent)"
|
||||
: "color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
}}
|
||||
required
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setShowPassword(!showPassword)}
|
||||
className="absolute right-3 top-1/2 -translate-y-1/2 text-sm font-bold opacity-60 hover:opacity-100 transition-opacity"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
tabIndex={-1}
|
||||
>
|
||||
{showPassword ? "Hide" : "Show"}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{needs2fa ? (
|
||||
<div className="space-y-1 animate-scale-in">
|
||||
<label
|
||||
htmlFor="login-2fa"
|
||||
className="block text-xs font-bold uppercase tracking-wider"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
2FA Code
|
||||
</label>
|
||||
<input
|
||||
id="login-2fa"
|
||||
type="text"
|
||||
value={code}
|
||||
onChange={(e) => setCode(e.target.value)}
|
||||
placeholder="Enter your 2FA code"
|
||||
inputMode="numeric"
|
||||
autoComplete="one-time-code"
|
||||
className="w-full rounded-xl border-2 px-4 py-3 text-sm font-medium transition-all focus:outline-none"
|
||||
style={{
|
||||
backgroundColor: "var(--color-background)",
|
||||
color: "var(--color-text-readable)",
|
||||
borderColor:
|
||||
"color-mix(in srgb, var(--color-primary) 30%, transparent)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
) : (
|
||||
<CaptchaWidget captcha={captcha} nonce={nonce} />
|
||||
)}
|
||||
|
||||
{error ? (
|
||||
<p
|
||||
className="animate-fade-in-up m-0 text-center text-sm font-semibold"
|
||||
style={{ color: "var(--color-danger)" }}
|
||||
>
|
||||
{error}
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
disabled={pending}
|
||||
className="btn-shine w-full cursor-pointer rounded-xl font-extrabold text-sm py-3.5 transition-all duration-200 hover:scale-[1.02] active:scale-95 shadow-lg disabled:opacity-60"
|
||||
style={{
|
||||
background: "var(--color-primary)",
|
||||
color: "var(--color-primary-foreground)",
|
||||
boxShadow:
|
||||
"0 4px 20px color-mix(in srgb, var(--color-primary) 30%, transparent)",
|
||||
}}
|
||||
>
|
||||
{pending ? (
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<svg
|
||||
className="animate-spin h-4 w-4"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
role="img"
|
||||
aria-label="Loading"
|
||||
>
|
||||
<circle
|
||||
className="opacity-25"
|
||||
cx="12"
|
||||
cy="12"
|
||||
r="10"
|
||||
stroke="currentColor"
|
||||
strokeWidth="4"
|
||||
/>
|
||||
<path
|
||||
className="opacity-75"
|
||||
fill="currentColor"
|
||||
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
|
||||
/>
|
||||
</svg>
|
||||
Please wait...
|
||||
</span>
|
||||
) : needs2fa ? (
|
||||
"Verify"
|
||||
) : (
|
||||
"Login"
|
||||
)}
|
||||
</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { signIn } from "next-auth/react";
|
||||
import { useTranslations } from "next-intl";
|
||||
import { type FormEvent, useState } from "react";
|
||||
import { type FormEvent, useId, useState } from "react";
|
||||
import { precheckLogin } from "@/actions/auth-precheck";
|
||||
import {
|
||||
type CaptchaPublicConfig,
|
||||
@@ -12,14 +12,34 @@ import {
|
||||
import Link from "@/components/link";
|
||||
import { signInWithTransientRetry } from "@/lib/auth/sign-in-retry";
|
||||
|
||||
export type LoginFormVariant =
|
||||
/** Full page: labelled fields, plus the register / forgot-password footer. */
|
||||
| "page"
|
||||
/** Homepage sidebar: visible labels, no footer, tighter spacing. */
|
||||
| "compact";
|
||||
|
||||
export interface LoginFormProps {
|
||||
captcha?: CaptchaPublicConfig;
|
||||
nonce?: string;
|
||||
variant?: LoginFormVariant;
|
||||
/** Where to land after a successful sign-in. */
|
||||
redirectTo?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The single sign-in form for both `/login` and the homepage sidebar. It runs a
|
||||
* cheap server-side precheck first so the visitor gets a specific reason
|
||||
* (bad password, unverified email, 2FA required, captcha) instead of NextAuth's
|
||||
* generic failure, then completes the credentials sign-in.
|
||||
*/
|
||||
export function LoginForm({
|
||||
captcha = { provider: "none" },
|
||||
nonce,
|
||||
}: {
|
||||
captcha?: CaptchaPublicConfig;
|
||||
nonce?: string;
|
||||
}) {
|
||||
variant = "page",
|
||||
redirectTo = "/me",
|
||||
}: LoginFormProps = {}) {
|
||||
const t = useTranslations("pages.login");
|
||||
const fieldId = useId();
|
||||
const [username, setUsername] = useState("");
|
||||
const [password, setPassword] = useState("");
|
||||
const [showPassword, setShowPassword] = useState(false);
|
||||
@@ -28,6 +48,10 @@ export function LoginForm({
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [pending, setPending] = useState(false);
|
||||
|
||||
const showFooter = variant === "page";
|
||||
const labelled = variant === "compact";
|
||||
const lockCredentials = needs2fa ? "opacity-50 pointer-events-none" : "";
|
||||
|
||||
async function onSubmit(e: FormEvent<HTMLFormElement>) {
|
||||
e.preventDefault();
|
||||
setError(null);
|
||||
@@ -67,7 +91,7 @@ export function LoginForm({
|
||||
);
|
||||
return;
|
||||
}
|
||||
window.location.href = "/me";
|
||||
window.location.href = redirectTo;
|
||||
} catch {
|
||||
setError(needs2fa ? t("errorInvalid2fa") : t("errorInvalidCredentials"));
|
||||
} finally {
|
||||
@@ -79,60 +103,112 @@ export function LoginForm({
|
||||
<>
|
||||
{needs2fa && (
|
||||
<p
|
||||
className="animate-fade-in-up text-sm font-semibold mb-4"
|
||||
className="animate-fade-in-up mb-4 text-sm font-semibold"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("subtitle2fa")}
|
||||
</p>
|
||||
)}
|
||||
<form onSubmit={onSubmit} className="flex flex-col gap-4">
|
||||
<div className={needs2fa ? "opacity-50 pointer-events-none" : ""}>
|
||||
|
||||
<form
|
||||
onSubmit={onSubmit}
|
||||
aria-label={t("signIn")}
|
||||
className="relative flex flex-col gap-4"
|
||||
>
|
||||
<div className={labelled ? "space-y-1" : lockCredentials}>
|
||||
<label
|
||||
htmlFor={`${fieldId}-username`}
|
||||
className={
|
||||
labelled
|
||||
? "block text-xs font-bold uppercase tracking-wider"
|
||||
: "sr-only"
|
||||
}
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("username")}
|
||||
</label>
|
||||
<input
|
||||
id={`${fieldId}-username`}
|
||||
name="username"
|
||||
type="text"
|
||||
value={username}
|
||||
onChange={(e) => setUsername(e.target.value)}
|
||||
placeholder={t("usernamePlaceholder")}
|
||||
autoComplete="username"
|
||||
disabled={needs2fa}
|
||||
required
|
||||
className="input-glow w-full rounded-xl border-2 px-4 py-3 text-sm font-medium transition-all focus:outline-none disabled:opacity-50"
|
||||
style={{
|
||||
backgroundColor: "var(--color-background)",
|
||||
color: "var(--color-text-readable)",
|
||||
borderColor:
|
||||
"color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
borderColor: needs2fa
|
||||
? "color-mix(in srgb, var(--color-text-muted) 15%, transparent)"
|
||||
: "color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className={`${needs2fa ? "opacity-50 pointer-events-none" : ""} relative`}
|
||||
>
|
||||
|
||||
<div className={`${labelled ? "space-y-1" : lockCredentials} relative`}>
|
||||
<label
|
||||
htmlFor={`${fieldId}-password`}
|
||||
className={
|
||||
labelled
|
||||
? "block text-xs font-bold uppercase tracking-wider"
|
||||
: "sr-only"
|
||||
}
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("password")}
|
||||
</label>
|
||||
<input
|
||||
id={`${fieldId}-password`}
|
||||
name="password"
|
||||
type={showPassword ? "text" : "password"}
|
||||
value={password}
|
||||
onChange={(e) => setPassword(e.target.value)}
|
||||
placeholder={t("passwordPlaceholder")}
|
||||
autoComplete="current-password"
|
||||
disabled={needs2fa}
|
||||
required
|
||||
className="input-glow w-full rounded-xl border-2 px-4 py-3 text-sm font-medium transition-all focus:outline-none disabled:opacity-50"
|
||||
style={{
|
||||
backgroundColor: "var(--color-background)",
|
||||
color: "var(--color-text-readable)",
|
||||
borderColor:
|
||||
"color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
borderColor: needs2fa
|
||||
? "color-mix(in srgb, var(--color-text-muted) 15%, transparent)"
|
||||
: "color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
|
||||
}}
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setShowPassword(!showPassword)}
|
||||
className="absolute right-3 top-1/2 -translate-y-1/2 text-sm font-bold opacity-60 hover:opacity-100 transition-opacity"
|
||||
className="absolute right-3 top-1/2 -translate-y-1/2 text-sm font-bold opacity-60 transition-opacity hover:opacity-100"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
tabIndex={-1}
|
||||
aria-label={showPassword ? t("hidePassword") : t("showPassword")}
|
||||
aria-pressed={showPassword}
|
||||
>
|
||||
{showPassword ? "Hide" : "Show"}
|
||||
{showPassword ? t("hidePassword") : t("showPassword")}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{needs2fa ? (
|
||||
<div className="animate-scale-in">
|
||||
<div className={`animate-scale-in ${labelled ? "space-y-1" : ""}`}>
|
||||
<label
|
||||
htmlFor={`${fieldId}-2fa`}
|
||||
className={
|
||||
labelled
|
||||
? "block text-xs font-bold uppercase tracking-wider"
|
||||
: "sr-only"
|
||||
}
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("codePlaceholder")}
|
||||
</label>
|
||||
<input
|
||||
id={`${fieldId}-2fa`}
|
||||
name="code"
|
||||
type="text"
|
||||
value={code}
|
||||
onChange={(e) => setCode(e.target.value)}
|
||||
placeholder={t("codePlaceholder")}
|
||||
@@ -153,7 +229,9 @@ export function LoginForm({
|
||||
|
||||
{error && (
|
||||
<p
|
||||
className="animate-fade-in-up text-sm text-center font-semibold"
|
||||
role="alert"
|
||||
aria-live="polite"
|
||||
className="m-0 animate-fade-in-up text-center text-sm font-semibold"
|
||||
style={{ color: "var(--color-danger)" }}
|
||||
>
|
||||
{error}
|
||||
@@ -163,7 +241,7 @@ export function LoginForm({
|
||||
<button
|
||||
type="submit"
|
||||
disabled={pending}
|
||||
className="btn-shine w-full rounded-xl font-extrabold text-sm py-3.5 transition-all duration-200 hover:scale-[1.02] active:scale-95 shadow-lg disabled:opacity-60"
|
||||
className="btn-shine w-full cursor-pointer rounded-xl py-3.5 text-sm font-extrabold shadow-lg transition-all duration-200 hover:scale-[1.02] active:scale-95 disabled:opacity-60"
|
||||
style={{
|
||||
background: "var(--color-primary)",
|
||||
color: "var(--color-primary-foreground)",
|
||||
@@ -174,11 +252,11 @@ export function LoginForm({
|
||||
{pending ? (
|
||||
<span className="inline-flex items-center justify-center gap-2">
|
||||
<svg
|
||||
className="animate-spin h-4 w-4"
|
||||
className="h-4 w-4 animate-spin"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
role="img"
|
||||
aria-label="Loading"
|
||||
aria-label={t("pleaseWait")}
|
||||
>
|
||||
<circle
|
||||
className="opacity-25"
|
||||
@@ -204,27 +282,29 @@ export function LoginForm({
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<p
|
||||
className="text-xs text-center mt-6"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("noAccount")}{" "}
|
||||
<Link
|
||||
href="/register"
|
||||
className="font-extrabold hover:underline"
|
||||
style={{ color: "var(--color-primary)" }}
|
||||
{showFooter && (
|
||||
<p
|
||||
className="mt-6 text-center text-xs"
|
||||
style={{ color: "var(--color-text-muted)" }}
|
||||
>
|
||||
{t("createOne")}
|
||||
</Link>{" "}
|
||||
·{" "}
|
||||
<Link
|
||||
href="/forgot"
|
||||
className="font-extrabold hover:underline"
|
||||
style={{ color: "var(--color-primary)" }}
|
||||
>
|
||||
{t("forgotPassword")}
|
||||
</Link>
|
||||
</p>
|
||||
{t("noAccount")}{" "}
|
||||
<Link
|
||||
href="/register"
|
||||
className="font-extrabold hover:underline"
|
||||
style={{ color: "var(--color-primary)" }}
|
||||
>
|
||||
{t("createOne")}
|
||||
</Link>{" "}
|
||||
·{" "}
|
||||
<Link
|
||||
href="/forgot"
|
||||
className="font-extrabold hover:underline"
|
||||
style={{ color: "var(--color-primary)" }}
|
||||
>
|
||||
{t("forgotPassword")}
|
||||
</Link>
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -5,7 +5,11 @@ import Script from "next/script";
|
||||
import { signIn } from "next-auth/react";
|
||||
import { useTranslations } from "next-intl";
|
||||
import { useActionState, useEffect, useRef, useState } from "react";
|
||||
import { type RegisterState, register } from "@/actions/register";
|
||||
import {
|
||||
type RegisterErrorCode,
|
||||
type RegisterState,
|
||||
register,
|
||||
} from "@/actions/register";
|
||||
import Link from "@/components/link";
|
||||
import { signInWithTransientRetry } from "@/lib/auth/sign-in-retry";
|
||||
|
||||
@@ -16,7 +20,10 @@ interface RegisterFormProps {
|
||||
nonce?: string;
|
||||
}
|
||||
|
||||
function passwordStrength(pw: string): {
|
||||
function passwordStrength(
|
||||
pw: string,
|
||||
t: (key: string) => string,
|
||||
): {
|
||||
score: number;
|
||||
label: string;
|
||||
color: string;
|
||||
@@ -28,10 +35,10 @@ function passwordStrength(pw: string): {
|
||||
if (/\d/.test(pw)) score += 1;
|
||||
if (/[^a-zA-Z0-9]/.test(pw)) score += 1;
|
||||
|
||||
if (score <= 1) return { score, label: "Weak", color: "#ef4444" };
|
||||
if (score <= 2) return { score, label: "Fair", color: "#f59e0b" };
|
||||
if (score <= 3) return { score, label: "Good", color: "#22c55e" };
|
||||
return { score: 5, label: "Strong", color: "#16a34a" };
|
||||
if (score <= 1) return { score, label: t("strengthWeak"), color: "#ef4444" };
|
||||
if (score <= 2) return { score, label: t("strengthFair"), color: "#f59e0b" };
|
||||
if (score <= 3) return { score, label: t("strengthGood"), color: "#22c55e" };
|
||||
return { score: 5, label: t("strengthStrong"), color: "#16a34a" };
|
||||
}
|
||||
|
||||
export function RegisterForm({
|
||||
@@ -46,6 +53,21 @@ export function RegisterForm({
|
||||
RegisterState,
|
||||
FormData
|
||||
>(register, { error: null, ok: false });
|
||||
|
||||
/**
|
||||
* Prefer the locale-independent `code` so the message follows the visitor's
|
||||
* language, falling back to the server's English string when a code has no
|
||||
* translation yet.
|
||||
*/
|
||||
const translateErrorCode = (code: RegisterErrorCode | undefined) => {
|
||||
if (!code) return null;
|
||||
try {
|
||||
return t(code);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
const errorMessage = error ?? translateErrorCode(state.code) ?? state.error;
|
||||
const [termsAccepted, setTermsAccepted] = useState(false);
|
||||
const [termsError, setTermsError] = useState(false);
|
||||
const termsRef = useRef<HTMLDivElement>(null);
|
||||
@@ -58,7 +80,7 @@ export function RegisterForm({
|
||||
);
|
||||
const autoLoginStartedRef = useRef(false);
|
||||
const [referralCode, setReferralCode] = useState("");
|
||||
const strength = passwordStrength(password);
|
||||
const strength = passwordStrength(password, t);
|
||||
|
||||
// The invite link is `/register?ref=<username>`; read it client-side so the
|
||||
// attribution travels with the sign-up form without server state.
|
||||
@@ -186,12 +208,14 @@ export function RegisterForm({
|
||||
borderRadius: "0 0 12px 12px",
|
||||
}}
|
||||
>
|
||||
{(error || state.error) && (
|
||||
{errorMessage && (
|
||||
<div
|
||||
role="alert"
|
||||
aria-live="polite"
|
||||
className="animate-fade-in-up p-3 rounded-lg text-sm font-semibold text-primary-foreground"
|
||||
style={{ backgroundColor: "var(--color-danger)" }}
|
||||
>
|
||||
{error || state.error}
|
||||
{errorMessage}
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
import { readdirSync } from "node:fs";
|
||||
import { createTranslator } from "next-intl";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import ar from "@/messages/ar.json";
|
||||
import bg from "@/messages/bg.json";
|
||||
import cs from "@/messages/cs.json";
|
||||
import da from "@/messages/da.json";
|
||||
import de from "@/messages/de.json";
|
||||
import el from "@/messages/el.json";
|
||||
import en from "@/messages/en.json";
|
||||
import es from "@/messages/es.json";
|
||||
import fi from "@/messages/fi.json";
|
||||
import fr from "@/messages/fr.json";
|
||||
import hr from "@/messages/hr.json";
|
||||
import hu from "@/messages/hu.json";
|
||||
import itMessages from "@/messages/it.json";
|
||||
import ja from "@/messages/ja.json";
|
||||
import nl from "@/messages/nl.json";
|
||||
import no from "@/messages/no.json";
|
||||
import pl from "@/messages/pl.json";
|
||||
import pt from "@/messages/pt.json";
|
||||
import ro from "@/messages/ro.json";
|
||||
import ru from "@/messages/ru.json";
|
||||
import sk from "@/messages/sk.json";
|
||||
import sr from "@/messages/sr.json";
|
||||
import sv from "@/messages/sv.json";
|
||||
import tr from "@/messages/tr.json";
|
||||
import uk from "@/messages/uk.json";
|
||||
|
||||
/**
|
||||
* Every failure reason the register action can report is a `RegisterErrorCode`,
|
||||
* which the form renders as `pages.register.<code>`. If a code ships without a
|
||||
* translation the visitor silently sees the raw English fallback, so this test
|
||||
* locks the contract in both directions: the union of codes must match the
|
||||
* dictionary, and every locale must carry every key.
|
||||
*/
|
||||
|
||||
type RegisterErrorCode =
|
||||
| "usernameMinLength"
|
||||
| "usernameMaxLength"
|
||||
| "usernamePattern"
|
||||
| "usernameReserved"
|
||||
| "usernameTaken"
|
||||
| "emailValid"
|
||||
| "emailDisposable"
|
||||
| "passwordMinLength"
|
||||
| "passwordMaxLength"
|
||||
| "passwordUpper"
|
||||
| "passwordLower"
|
||||
| "passwordDigit"
|
||||
| "passwordSpecial"
|
||||
| "passwordsMatch"
|
||||
| "termsRequired"
|
||||
| "captchaFailed"
|
||||
| "rateLimited"
|
||||
| "vpnBlocked"
|
||||
| "maxAccountsPerIp"
|
||||
| "unavailable"
|
||||
| "createFailed"
|
||||
| "invalidInput";
|
||||
|
||||
/** Mirrors `RegisterErrorCode` in src/actions/register.ts. */
|
||||
const REGISTER_ERROR_CODES: readonly RegisterErrorCode[] = [
|
||||
"usernameMinLength",
|
||||
"usernameMaxLength",
|
||||
"usernamePattern",
|
||||
"usernameReserved",
|
||||
"usernameTaken",
|
||||
"emailValid",
|
||||
"emailDisposable",
|
||||
"passwordMinLength",
|
||||
"passwordMaxLength",
|
||||
"passwordUpper",
|
||||
"passwordLower",
|
||||
"passwordDigit",
|
||||
"passwordSpecial",
|
||||
"passwordsMatch",
|
||||
"termsRequired",
|
||||
"captchaFailed",
|
||||
"rateLimited",
|
||||
"vpnBlocked",
|
||||
"maxAccountsPerIp",
|
||||
"unavailable",
|
||||
"createFailed",
|
||||
"invalidInput",
|
||||
];
|
||||
|
||||
const MESSAGES: Record<string, typeof en> = {
|
||||
ar,
|
||||
bg,
|
||||
cs,
|
||||
da,
|
||||
de,
|
||||
el,
|
||||
en,
|
||||
es,
|
||||
fi,
|
||||
fr,
|
||||
hr,
|
||||
hu,
|
||||
it: itMessages as unknown as typeof en,
|
||||
ja,
|
||||
nl: nl as unknown as typeof en,
|
||||
no,
|
||||
pl,
|
||||
pt,
|
||||
ro,
|
||||
ru,
|
||||
sk,
|
||||
sr,
|
||||
sv,
|
||||
tr,
|
||||
uk,
|
||||
};
|
||||
|
||||
const locales = readdirSync("src/messages")
|
||||
.filter((file) => file.endsWith(".json"))
|
||||
.map((file) => file.replace(/\.json$/, ""))
|
||||
.sort();
|
||||
|
||||
const namespaces = ["pages.register", "pages.login", "pages.reset"] as const;
|
||||
|
||||
describe("auth page messages", () => {
|
||||
it("exposes every register error code as a translated message", () => {
|
||||
const t = createTranslator({
|
||||
locale: "en",
|
||||
messages: en,
|
||||
namespace: "pages.register",
|
||||
});
|
||||
for (const code of REGISTER_ERROR_CODES) {
|
||||
expect(t.has(code as never), code).toBe(true);
|
||||
expect(t(code as never), code).not.toBe("");
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps the dictionary free of unreachable register error keys", () => {
|
||||
const known = new Set<string>(REGISTER_ERROR_CODES);
|
||||
for (const key of Object.keys(en.pages.register)) {
|
||||
// Keys that map a code onto its canonical sentence must stay in sync.
|
||||
if (key === "passwordMinLength") continue;
|
||||
expect(known.has(key) || !/^[a-z][A-Z]/.test(key), key).toBe(true);
|
||||
}
|
||||
expect(en.pages.register.passwordError).toBe(
|
||||
en.pages.register.passwordMinLength,
|
||||
);
|
||||
});
|
||||
|
||||
it("ships a dictionary for every locale on disk", () => {
|
||||
expect(Object.keys(MESSAGES).sort()).toEqual(locales);
|
||||
});
|
||||
|
||||
it.each(locales)("provides every auth message in %s", (locale) => {
|
||||
const messages = MESSAGES[locale];
|
||||
expect(messages, locale).toBeDefined();
|
||||
for (const namespace of namespaces) {
|
||||
const t = createTranslator({ locale, messages, namespace });
|
||||
const keys =
|
||||
namespace === "pages.register"
|
||||
? REGISTER_ERROR_CODES
|
||||
: namespace === "pages.login"
|
||||
? ([
|
||||
"username",
|
||||
"password",
|
||||
"showPassword",
|
||||
"hidePassword",
|
||||
] as const)
|
||||
: (["passwordMinLength", "tooManyAttempts"] as const);
|
||||
for (const key of keys) {
|
||||
expect(t.has(key as never), `${namespace}.${key}`).toBe(true);
|
||||
expect(t(key as never), `${namespace}.${key}`).not.toBe("");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
+94
-63
@@ -6067,69 +6067,98 @@
|
||||
"rateLimit": "Too many attempts. Please wait before trying again."
|
||||
},
|
||||
"login": {
|
||||
"title": "Sign in",
|
||||
"subtitle": "Welcome back — log in to enter the hotel.",
|
||||
"subtitle2fa": "Enter the 6-digit code from your authenticator.",
|
||||
"welcomeBack": "Welcome back",
|
||||
"welcomeBackSub": "Sign in to continue to {hotelName}",
|
||||
"usernamePlaceholder": "Username",
|
||||
"passwordPlaceholder": "Password",
|
||||
"codePlaceholder": "2FA code",
|
||||
"pleaseWait": "Please wait…",
|
||||
"verify": "Verify",
|
||||
"signIn": "Sign in",
|
||||
"or": "or",
|
||||
"noAccount": "No account?",
|
||||
"createOne": "Create one",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"errorInvalidCredentials": "Invalid username or password",
|
||||
"errorInvalid2fa": "Invalid 2FA code",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"title": "تسجيل الدخول",
|
||||
"subtitle": "سجّل الدخول للمتابعة إلى الفندق التالي.",
|
||||
"subtitle2fa": "أدخل الرمز المكوّن من 6 أرقام من تطبيق المصادقة.",
|
||||
"welcomeBack": "أهلاً بعودتك",
|
||||
"welcomeBackSub": "سجّل الدخول للانضمام إلى {hotelName}",
|
||||
"usernamePlaceholder": "اسم المستخدم",
|
||||
"passwordPlaceholder": "كلمة المرور",
|
||||
"codePlaceholder": "أدخل رمز التحقق بخطوتين",
|
||||
"pleaseWait": "يرجى الانتظار...",
|
||||
"verify": "تحقق",
|
||||
"signIn": "تسجيل الدخول",
|
||||
"or": "أو",
|
||||
"noAccount": "ليس لديك حساب؟",
|
||||
"createOne": "أنشئ حساباً",
|
||||
"forgotPassword": "هل نسيت كلمة المرور؟",
|
||||
"errorInvalidCredentials": "اسم المستخدم أو كلمة المرور غير صحيحة",
|
||||
"errorInvalid2fa": "رمز التحقق بخطوتين غير صالح",
|
||||
"errorUnverified": "يرجى التحقق من بريدك الإلكتروني قبل تسجيل الدخول.",
|
||||
"errorCaptcha": "فشل التحقق من الكابتشا. حاول مرة أخرى.",
|
||||
"whoIsOnline": "من متصل الآن",
|
||||
"newestCitizens": "أحدث السكان",
|
||||
"usersOnline": "{count} متصل",
|
||||
"username": "اسم المستخدم",
|
||||
"password": "كلمة المرور",
|
||||
"showPassword": "إظهار",
|
||||
"hidePassword": "إخفاء"
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
"subtitle": "Join the hotel — it only takes a moment.",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"password": "Password",
|
||||
"confirmPassword": "Repeat password",
|
||||
"usernamePlaceholder": "Username",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 8 chars)",
|
||||
"confirmPasswordPlaceholder": "Repeat password",
|
||||
"selectOutfit": "Select your outfit",
|
||||
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"createAccount": "Create account",
|
||||
"creatingAccount": "Creating account...",
|
||||
"redirecting": "Redirecting to your account...",
|
||||
"alreadyHaveAccount": "Already have an account? Login!",
|
||||
"alreadyHaveAccountPre": "Already have an account?",
|
||||
"alreadyHaveAccountLink": "Sign in",
|
||||
"register": "Register",
|
||||
"whoIsOnline": "Who's online",
|
||||
"usersOnline": "{count} online",
|
||||
"termsError": "You must accept the terms & rules to register.",
|
||||
"usernameError": "Username is required.",
|
||||
"emailError": "Valid email is required.",
|
||||
"passwordError": "Password must be at least 6 characters.",
|
||||
"confirmPasswordError": "Passwords do not match.",
|
||||
"termsRequired": "You must accept the terms & rules.",
|
||||
"usernameRequired": "Username is required.",
|
||||
"emailRequired": "Email is required.",
|
||||
"passwordRequired": "Password is required.",
|
||||
"passwordsDontMatch": "Passwords do not match.",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"ageVerified": "أبلغ 18+ وأوافق على شرط العمر.",
|
||||
"invitedBy": "بدعوة من {username}"
|
||||
"title": "إنشاء حساب",
|
||||
"subtitle": "انضم إلى الفندق — لن يستغرق الأمر سوى لحظات.",
|
||||
"username": "اسم المستخدم",
|
||||
"email": "البريد الإلكتروني",
|
||||
"password": "كلمة المرور",
|
||||
"confirmPassword": "أعد كلمة المرور",
|
||||
"usernamePlaceholder": "اسم المستخدم",
|
||||
"emailPlaceholder": "البريد الإلكتروني",
|
||||
"passwordPlaceholder": "كلمة المرور (12 حرفًا على الأقل)",
|
||||
"confirmPasswordPlaceholder": "أعد كلمة المرور",
|
||||
"selectOutfit": "اختر ملابسك",
|
||||
"termsAccept": "أنا أبلغ 18 عامًا وأوافق على شروط {hotel}.",
|
||||
"accepted": "تم القبول والموافقة",
|
||||
"showPassword": "إظهار",
|
||||
"hidePassword": "إخفاء",
|
||||
"accountDetails": "بيانات الحساب",
|
||||
"credentials": "بيانات الدخول والأمان",
|
||||
"createAccount": "إنشاء حساب",
|
||||
"creatingAccount": "جارٍ إنشاء الحساب...",
|
||||
"redirecting": "جارٍ الانتقال إلى حسابك...",
|
||||
"alreadyHaveAccount": "لديك حساب بالفعل؟ سجّل الدخول!",
|
||||
"alreadyHaveAccountPre": "لديك حساب بالفعل؟",
|
||||
"alreadyHaveAccountLink": "تسجيل الدخول",
|
||||
"register": "تسجيل",
|
||||
"whoIsOnline": "من متصل الآن",
|
||||
"usersOnline": "{count} متصل",
|
||||
"termsError": "يجب الموافقة على الشروط للتسجيل.",
|
||||
"usernameError": "اسم المستخدم مطلوب.",
|
||||
"emailError": "البريد الإلكتروني الصالح مطلوب.",
|
||||
"passwordError": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
|
||||
"confirmPasswordError": "كلمتا المرور غير متطابقتين.",
|
||||
"termsRequired": "يجب الموافقة على الشروط.",
|
||||
"usernameRequired": "اسم المستخدم مطلوب.",
|
||||
"emailRequired": "البريد الإلكتروني مطلوب.",
|
||||
"passwordRequired": "كلمة المرور مطلوبة.",
|
||||
"passwordsDontMatch": "كلمتا المرور غير متطابقتين.",
|
||||
"newestCitizens": "أحدث السكان",
|
||||
"ageVerified": "أنا أبلغ 18 عامًا وأوافق على شرط السن.",
|
||||
"invitedBy": "دعوة من {username}",
|
||||
"strengthWeak": "ضعيف",
|
||||
"strengthFair": "مقبول",
|
||||
"strengthGood": "جيد",
|
||||
"strengthStrong": "قوي",
|
||||
"passwordMinLength": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
|
||||
"passwordUpper": "يجب أن تحتوي كلمة المرور على حرف كبير واحد على الأقل",
|
||||
"passwordLower": "يجب أن تحتوي كلمة المرور على حرف صغير واحد على الأقل",
|
||||
"passwordDigit": "يجب أن تحتوي كلمة المرور على رقم واحد على الأقل",
|
||||
"passwordSpecial": "يجب أن تحتوي كلمة المرور على رمز خاص واحد على الأقل",
|
||||
"passwordMaxLength": "كلمة المرور طويلة جدًا",
|
||||
"usernameMinLength": "يجب ألا يقل اسم المستخدم عن 3 أحرف",
|
||||
"usernameMaxLength": "يجب ألا يزيد اسم المستخدم عن 25 حرفًا",
|
||||
"usernamePattern": "لا يمكن أن يحتوي اسم المستخدم إلا على حروف وأرقام وشرطة سفلية وشرطة",
|
||||
"usernameReserved": "اسم المستخدم هذا محجوز",
|
||||
"emailValid": "أدخل بريدًا إلكترونيًا صالحًا",
|
||||
"emailDisposable": "نطاقات البريد المؤقتة غير مسموح بها",
|
||||
"passwordsMatch": "Passwords do not match.",
|
||||
"captchaFailed": "فشل التحقق من الكابتشا. حاول مرة أخرى.",
|
||||
"usernameTaken": "اسم المستخدم هذا مستخدم بالفعل",
|
||||
"rateLimited": "محاولات تسجيل كثيرة جدًا. انتظر بضع دقائق ثم حاول مرة أخرى.",
|
||||
"vpnBlocked": "التسجيل عبر اتصالات VPN أو البروكسي غير مسموح به.",
|
||||
"maxAccountsPerIp": "لقد بلغت الحد الأقصى من الحسابات لاتصالك.",
|
||||
"unavailable": "التسجيل غير متاح مؤقتًا.",
|
||||
"createFailed": "تعذر إنشاء الحساب. حاول مرة أخرى أو تواصل مع الإدارة.",
|
||||
"invalidInput": "يرجى مراجعة الحقول المميزة والمحاولة مرة أخرى."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reset password",
|
||||
@@ -6143,9 +6172,11 @@
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
"subtitle": "Choose a strong password you don't use elsewhere.",
|
||||
"passwordPlaceholder": "New password (min 6 chars)",
|
||||
"passwordPlaceholder": "New password (min 12 chars)",
|
||||
"resetPassword": "Reset password",
|
||||
"backToLogin": "Back to login"
|
||||
"backToLogin": "Back to login",
|
||||
"passwordMinLength": "يجب ألا تقل كلمة المرور عن 12 حرفًا",
|
||||
"tooManyAttempts": "محاولات كثيرة جدًا — حاول لاحقًا"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "You're all set",
|
||||
|
||||
+50
-19
@@ -836,14 +836,18 @@
|
||||
"createOne": "Създайте такъв",
|
||||
"forgotPassword": "Забравена парола?",
|
||||
"errorInvalidCredentials": "Невалидно потребителско име или парола",
|
||||
"errorInvalid2fa": "Невалиден 2FA код",
|
||||
"errorInvalid2fa": "Невалиден код за двустъпково удостоверяване",
|
||||
"welcomeBack": "Добре дошли отново",
|
||||
"welcomeBackSub": "Влезте, за да продължите към {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Моля, потвърдете имейла си, преди да влезете.",
|
||||
"errorCaptcha": "Проверката на капчата е неуспешна. Опитайте отново.",
|
||||
"whoIsOnline": "Кой е на линия",
|
||||
"newestCitizens": "Най-нови граждани",
|
||||
"usersOnline": "{count} на линия",
|
||||
"username": "Потребителско име",
|
||||
"password": "Парола",
|
||||
"showPassword": "Покажи",
|
||||
"hidePassword": "Скрий"
|
||||
},
|
||||
"register": {
|
||||
"title": "Създаване на акаунт",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Повторете паролата",
|
||||
"usernamePlaceholder": "Потребителско име",
|
||||
"emailPlaceholder": "Имейл",
|
||||
"passwordPlaceholder": "Парола (мин. 6 знака)",
|
||||
"passwordPlaceholder": "Парола (мин. 12 знака)",
|
||||
"confirmPasswordPlaceholder": "Повторете паролата",
|
||||
"selectOutfit": "Изберете вашето облекло",
|
||||
"termsAccept": "Аз съм на 18+ и приемам условията и правилата на {hotel}.",
|
||||
@@ -866,7 +870,7 @@
|
||||
"termsError": "Трябва да приемете условията и правилата, за да се регистрирате.",
|
||||
"usernameError": "Изисква се потребителско име.",
|
||||
"emailError": "Изисква се валиден имейл.",
|
||||
"passwordError": "Паролата трябва да е поне 6 знака.",
|
||||
"passwordError": "Паролата трябва да е поне 12 знака",
|
||||
"confirmPasswordError": "Паролите не съвпадат.",
|
||||
"termsRequired": "Трябва да приемете условията и правилата.",
|
||||
"usernameRequired": "Изисква се потребителско име.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Паролите не съвпадат.",
|
||||
"alreadyHaveAccountPre": "Вече имаш акаунт?",
|
||||
"alreadyHaveAccountLink": "Вход",
|
||||
"whoIsOnline": "Кой е онлайн",
|
||||
"usersOnline": "{count} онлайн",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Кой е на линия",
|
||||
"usersOnline": "{count} на линия",
|
||||
"accepted": "Прието и съгласен съм",
|
||||
"showPassword": "Покажи",
|
||||
"hidePassword": "Скрий",
|
||||
"accountDetails": "Данни за профила",
|
||||
"credentials": "Данни за вход и сигурност",
|
||||
"newestCitizens": "Най-нови граждани",
|
||||
"ageVerified": "Над 18 годишен съм и съгласен с изискването за възраст.",
|
||||
"invitedBy": "Поканен от {username}"
|
||||
"invitedBy": "Поканен от {username}",
|
||||
"strengthWeak": "Слаба",
|
||||
"strengthFair": "Средна",
|
||||
"strengthGood": "Добра",
|
||||
"strengthStrong": "Силна",
|
||||
"passwordMinLength": "Паролата трябва да е поне 12 знака",
|
||||
"passwordUpper": "Паролата трябва да съдържа поне една главна буква",
|
||||
"passwordLower": "Паролата трябва да съдържа поне една малка буква",
|
||||
"passwordDigit": "Паролата трябва да съдържа поне една цифра",
|
||||
"passwordSpecial": "Паролата трябва да съдържа поне един специален символ",
|
||||
"passwordMaxLength": "Паролата е твърде дълга",
|
||||
"usernameMinLength": "Потребителското име трябва да е поне 3 знака",
|
||||
"usernameMaxLength": "Потребителското име може да е най-много 25 знака",
|
||||
"usernamePattern": "Потребителското име може да съдържа само букви, цифри, долна черта и тире",
|
||||
"usernameReserved": "Това потребителско име е запазено",
|
||||
"emailValid": "Въведете валиден имейл адрес",
|
||||
"emailDisposable": "Временните имейл домейни не са разрешени",
|
||||
"passwordsMatch": "Паролите не съвпадат.",
|
||||
"captchaFailed": "Проверката на капчата е неуспешна. Опитайте отново.",
|
||||
"usernameTaken": "Това потребителско име вече е заето",
|
||||
"rateLimited": "Твърде много опити за регистрация. Изчакайте няколко минути и опитайте отново.",
|
||||
"vpnBlocked": "Регистрацията през VPN/прокси връзки не е разрешена.",
|
||||
"maxAccountsPerIp": "Достигнахте максималния брой акаунти за вашата връзка.",
|
||||
"unavailable": "Регистрацията е временно недостъпна.",
|
||||
"createFailed": "Акаунтът не можа да бъде създаден. Опитайте отново или се свържете с екипа.",
|
||||
"invalidInput": "Моля, прегледайте отбелязаните полета и опитайте отново."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Нулирайте паролата",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Задайте нова парола",
|
||||
"subtitle": "Изберете силна парола, която не използвате другаде.",
|
||||
"passwordPlaceholder": "Нова парола (мин. 6 знака)",
|
||||
"passwordPlaceholder": "Нова парола (мин. 12 знака)",
|
||||
"resetPassword": "Нулирайте паролата",
|
||||
"backToLogin": "Назад към входа"
|
||||
"backToLogin": "Назад към входа",
|
||||
"passwordMinLength": "Паролата трябва да е поне 12 знака",
|
||||
"tooManyAttempts": "Твърде много опити — опитайте по-късно"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Всичко е готово",
|
||||
|
||||
+48
-17
@@ -836,14 +836,18 @@
|
||||
"createOne": "Vytvořte jeden",
|
||||
"forgotPassword": "Zapomněli jste heslo?",
|
||||
"errorInvalidCredentials": "Neplatné uživatelské jméno nebo heslo",
|
||||
"errorInvalid2fa": "Neplatný kód 2FA",
|
||||
"errorInvalid2fa": "Neplatný kód dvoufázového ověření",
|
||||
"welcomeBack": "Vítej zpět",
|
||||
"welcomeBackSub": "Přihlas se pro pokračování do {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Před přihlášením ověřte svou e-mailovou adresu.",
|
||||
"errorCaptcha": "Ověření captcha selhalo. Zkuste to znovu.",
|
||||
"whoIsOnline": "Kdo je online",
|
||||
"newestCitizens": "Nejnovější občané",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Uživatelské jméno",
|
||||
"password": "Heslo",
|
||||
"showPassword": "Zobrazit",
|
||||
"hidePassword": "Skrýt"
|
||||
},
|
||||
"register": {
|
||||
"title": "Vytvořit účet",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Opakujte heslo",
|
||||
"usernamePlaceholder": "Uživatelské jméno",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Heslo (min. 6 znaků)",
|
||||
"passwordPlaceholder": "Heslo (min. 12 znaků)",
|
||||
"confirmPasswordPlaceholder": "Opakujte heslo",
|
||||
"selectOutfit": "Vyberte si oblečení",
|
||||
"termsAccept": "Je mi 18+ a souhlasím s podmínkami a pravidly {hotel}.",
|
||||
@@ -866,7 +870,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ň 6 znaků.",
|
||||
"passwordError": "Heslo musí mít alespoň 12 znaků",
|
||||
"confirmPasswordError": "Hesla se neshodují.",
|
||||
"termsRequired": "Musíte přijmout podmínky a pravidla.",
|
||||
"usernameRequired": "Uživatelské jméno je povinné.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Přihlásit se",
|
||||
"whoIsOnline": "Kdo je online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Přijato a souhlasím",
|
||||
"showPassword": "Zobrazit",
|
||||
"hidePassword": "Skrýt",
|
||||
"accountDetails": "Údaje o účtu",
|
||||
"credentials": "Přihlašovací údaje a zabezpečení",
|
||||
"newestCitizens": "Nejnovější občané",
|
||||
"ageVerified": "Je mi 18+ a souhlasím s věkovým požadavkem.",
|
||||
"invitedBy": "Pozván uživatelem {username}"
|
||||
"invitedBy": "Pozván uživatelem {username}",
|
||||
"strengthWeak": "Slabé",
|
||||
"strengthFair": "Ucházející",
|
||||
"strengthGood": "Dobré",
|
||||
"strengthStrong": "Silné",
|
||||
"passwordMinLength": "Heslo musí mít alespoň 12 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",
|
||||
"passwordSpecial": "Heslo musí obsahovat alespoň jeden speciální znak",
|
||||
"passwordMaxLength": "Heslo je příliš dlouhé",
|
||||
"usernameMinLength": "Uživatelské jméno musí mít alespoň 3 znaky",
|
||||
"usernameMaxLength": "Uživatelské jméno může mít nejvýše 25 znaků",
|
||||
"usernamePattern": "Uživatelské jméno může obsahovat pouze písmena, číslice, podtržítko a pomlčku",
|
||||
"usernameReserved": "Toto uživatelské jméno je rezervováno",
|
||||
"emailValid": "Zadejte platnou e-mailovou adresu",
|
||||
"emailDisposable": "Dočasné e-mailové domény nejsou povoleny",
|
||||
"passwordsMatch": "Hesla se neshodují.",
|
||||
"captchaFailed": "Ověření captcha selhalo. Zkuste to znovu.",
|
||||
"usernameTaken": "Toto uživatelské jméno je již obsazené",
|
||||
"rateLimited": "Příliš mnoho pokusů o registraci. Počkejte několik minut a zkuste to znovu.",
|
||||
"vpnBlocked": "Registrace přes připojení VPN/proxy není povolena.",
|
||||
"maxAccountsPerIp": "Dosáhli jste maximálního počtu účtů pro vaše připojení.",
|
||||
"unavailable": "Registrace je dočasně nedostupná.",
|
||||
"createFailed": "Účet se nepodařilo vytvořit. Zkuste to znovu nebo kontaktujte personál.",
|
||||
"invalidInput": "Zkontrolujte označená pole a zkuste to znovu."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Obnovit heslo",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Nastavte nové heslo",
|
||||
"subtitle": "Vyberte si silné heslo, které jinde nepoužíváte.",
|
||||
"passwordPlaceholder": "Nové heslo (min. 6 znaků)",
|
||||
"passwordPlaceholder": "Nové heslo (min. 12 znaků)",
|
||||
"resetPassword": "Obnovit heslo",
|
||||
"backToLogin": "Zpět k přihlášení"
|
||||
"backToLogin": "Zpět k přihlášení",
|
||||
"passwordMinLength": "Heslo musí mít alespoň 12 znaků",
|
||||
"tooManyAttempts": "Příliš mnoho pokusů — zkuste to později"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Vše je připraveno",
|
||||
|
||||
+47
-16
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Ugyldig 2FA-kode",
|
||||
"welcomeBack": "Velkommen tilbage",
|
||||
"welcomeBackSub": "Log ind for at fortsætte til {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Bekræft din e-mail, før du logger ind.",
|
||||
"errorCaptcha": "Captcha-verificering mislykkedes. Prøv igen.",
|
||||
"whoIsOnline": "Hvem er online",
|
||||
"newestCitizens": "Nyeste borgere",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Brugernavn",
|
||||
"password": "Adgangskode",
|
||||
"showPassword": "Vis",
|
||||
"hidePassword": "Skjul"
|
||||
},
|
||||
"register": {
|
||||
"title": "Opret konto",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Gentag adgangskoden",
|
||||
"usernamePlaceholder": "Brugernavn",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Adgangskode (min. 6 tegn)",
|
||||
"passwordPlaceholder": "Adgangskode (min. 12 tegn)",
|
||||
"confirmPasswordPlaceholder": "Gentag adgangskoden",
|
||||
"selectOutfit": "Vælg dit outfit",
|
||||
"termsAccept": "Jeg er 18+ og accepterer vilkårene og reglerne for {hotel}.",
|
||||
@@ -866,7 +870,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 6 tegn.",
|
||||
"passwordError": "Adgangskoden skal være på mindst 12 tegn",
|
||||
"confirmPasswordError": "Adgangskoder stemmer ikke overens.",
|
||||
"termsRequired": "Du skal acceptere vilkårene og reglerne.",
|
||||
"usernameRequired": "Brugernavn er påkrævet.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Log ind",
|
||||
"whoIsOnline": "Hvem er online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Accepteret og godkendt",
|
||||
"showPassword": "Vis",
|
||||
"hidePassword": "Skjul",
|
||||
"accountDetails": "Kontooplysninger",
|
||||
"credentials": "Loginoplysninger og sikkerhed",
|
||||
"newestCitizens": "Nyeste borgere",
|
||||
"ageVerified": "Jeg er 18+ og accepterer alderskravet.",
|
||||
"invitedBy": "Inviteret af {username}"
|
||||
"invitedBy": "Inviteret af {username}",
|
||||
"strengthWeak": "Svag",
|
||||
"strengthFair": "Middelmådig",
|
||||
"strengthGood": "God",
|
||||
"strengthStrong": "Stærk",
|
||||
"passwordMinLength": "Adgangskoden skal være på mindst 12 tegn",
|
||||
"passwordUpper": "Adgangskoden skal indeholde mindst ét stort bogstav",
|
||||
"passwordLower": "Adgangskoden skal indeholde mindst ét lille bogstav",
|
||||
"passwordDigit": "Adgangskoden skal indeholde mindst ét tal",
|
||||
"passwordSpecial": "Adgangskoden skal indeholde mindst ét specialtegn",
|
||||
"passwordMaxLength": "Adgangskoden er for lang",
|
||||
"usernameMinLength": "Brugernavnet skal være på mindst 3 tegn",
|
||||
"usernameMaxLength": "Brugernavnet må højst være på 25 tegn",
|
||||
"usernamePattern": "Brugernavnet må kun indeholde bogstaver, tal, understreg og bindestreg",
|
||||
"usernameReserved": "Dette brugernavn er reserveret",
|
||||
"emailValid": "Indtast en gyldig e-mailadresse",
|
||||
"emailDisposable": "Midlertidige e-maildomæner er ikke tilladt",
|
||||
"passwordsMatch": "Adgangskoder stemmer ikke overens.",
|
||||
"captchaFailed": "Captcha-verificering mislykkedes. Prøv igen.",
|
||||
"usernameTaken": "Det brugernavn er allerede taget",
|
||||
"rateLimited": "For mange registreringsforsøg. Vent et par minutter, og prøv igen.",
|
||||
"vpnBlocked": "Registrering via VPN/proxy-forbindelser er ikke tilladt.",
|
||||
"maxAccountsPerIp": "Du har nået det maksimale antal konti for din forbindelse.",
|
||||
"unavailable": "Registrering er midlertidigt utilgængelig.",
|
||||
"createFailed": "Kontoen kunne ikke oprettes. Prøv igen, eller kontakt personalet.",
|
||||
"invalidInput": "Kontrollér de markerede felter, og prøv igen."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Nulstil adgangskode",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Indstil en ny adgangskode",
|
||||
"subtitle": "Vælg en stærk adgangskode, du ikke bruger andre steder.",
|
||||
"passwordPlaceholder": "Ny adgangskode (min. 6 tegn)",
|
||||
"passwordPlaceholder": "Ny adgangskode (min. 12 tegn)",
|
||||
"resetPassword": "Nulstil adgangskode",
|
||||
"backToLogin": "Tilbage til login"
|
||||
"backToLogin": "Tilbage til login",
|
||||
"passwordMinLength": "Adgangskoden skal være på mindst 12 tegn",
|
||||
"tooManyAttempts": "For mange forsøg — prøv igen senere"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Du er klar",
|
||||
|
||||
+47
-16
@@ -809,11 +809,15 @@
|
||||
"errorInvalid2fa": "Ungültiger 2FA-Code",
|
||||
"welcomeBack": "Willkommen zurück",
|
||||
"welcomeBackSub": "Melde dich an, um zu {hotelName} zu gelangen",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Bitte bestätige deine E-Mail-Adresse, bevor du dich anmeldest.",
|
||||
"errorCaptcha": "Captcha-Verifizierung fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"whoIsOnline": "Wer ist online",
|
||||
"newestCitizens": "Neueste Bürger",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort",
|
||||
"showPassword": "Anzeigen",
|
||||
"hidePassword": "Verbergen"
|
||||
},
|
||||
"register": {
|
||||
"title": "Konto erstellen",
|
||||
@@ -824,7 +828,7 @@
|
||||
"confirmPassword": "Passwort wiederholen",
|
||||
"usernamePlaceholder": "Benutzername",
|
||||
"emailPlaceholder": "E-Mail",
|
||||
"passwordPlaceholder": "Passwort (min. 6 Zeichen)",
|
||||
"passwordPlaceholder": "Passwort (min. 12 Zeichen)",
|
||||
"confirmPasswordPlaceholder": "Passwort wiederholen",
|
||||
"selectOutfit": "Wähle dein Outfit",
|
||||
"termsAccept": "Ich bin 18+ und akzeptiere die {hotel} AGB & Regeln.",
|
||||
@@ -836,7 +840,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 6 Zeichen lang sein.",
|
||||
"passwordError": "Das Passwort muss mindestens 12 Zeichen lang sein",
|
||||
"confirmPasswordError": "Passwörter stimmen nicht überein.",
|
||||
"termsRequired": "Du musst die AGB & Regeln akzeptieren.",
|
||||
"usernameRequired": "Benutzername ist erforderlich.",
|
||||
@@ -847,14 +851,39 @@
|
||||
"alreadyHaveAccountLink": "Anmelden",
|
||||
"whoIsOnline": "Wer ist online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Akzeptiert & zugestimmt",
|
||||
"showPassword": "Anzeigen",
|
||||
"hidePassword": "Verbergen",
|
||||
"accountDetails": "Kontodaten",
|
||||
"credentials": "Zugangsdaten & Sicherheit",
|
||||
"newestCitizens": "Neueste Bürger",
|
||||
"ageVerified": "Ich bin 18+ und stimme der Altersanforderung zu.",
|
||||
"invitedBy": "Eingeladen von {username}"
|
||||
"invitedBy": "Eingeladen von {username}",
|
||||
"strengthWeak": "Schwach",
|
||||
"strengthFair": "Mittel",
|
||||
"strengthGood": "Gut",
|
||||
"strengthStrong": "Stark",
|
||||
"passwordMinLength": "Das Passwort muss mindestens 12 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",
|
||||
"passwordSpecial": "Das Passwort muss mindestens ein Sonderzeichen enthalten",
|
||||
"passwordMaxLength": "Das Passwort ist zu lang",
|
||||
"usernameMinLength": "Der Benutzername muss mindestens 3 Zeichen lang sein",
|
||||
"usernameMaxLength": "Der Benutzername darf höchstens 25 Zeichen lang sein",
|
||||
"usernamePattern": "Der Benutzername darf nur Buchstaben, Ziffern, Unterstrich und Bindestrich enthalten",
|
||||
"usernameReserved": "Dieser Benutzername ist reserviert",
|
||||
"emailValid": "Gib eine gültige E-Mail-Adresse ein",
|
||||
"emailDisposable": "Temporäre E-Mail-Domains sind nicht erlaubt",
|
||||
"passwordsMatch": "Passwörter stimmen nicht überein.",
|
||||
"captchaFailed": "Captcha-Verifizierung fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"usernameTaken": "Dieser Benutzername ist bereits vergeben",
|
||||
"rateLimited": "Zu viele Registrierungsversuche. Bitte warte ein paar Minuten und versuche es erneut.",
|
||||
"vpnBlocked": "Registrierungen über VPN-/Proxy-Verbindungen sind nicht erlaubt.",
|
||||
"maxAccountsPerIp": "Du hast die maximale Anzahl an Konten für deine Verbindung erreicht.",
|
||||
"unavailable": "Die Registrierung ist vorübergehend nicht verfügbar.",
|
||||
"createFailed": "Das Konto konnte nicht erstellt werden. Versuche es erneut oder wende dich an das Personal.",
|
||||
"invalidInput": "Bitte prüfe die markierten Felder und versuche es erneut."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Passwort zurücksetzen",
|
||||
@@ -868,9 +897,11 @@
|
||||
"reset": {
|
||||
"title": "Neues Passwort festlegen",
|
||||
"subtitle": "Wähle ein sicheres Passwort, das du sonst nirgendwo verwendest.",
|
||||
"passwordPlaceholder": "Neues Passwort (min. 6 Zeichen)",
|
||||
"passwordPlaceholder": "Neues Passwort (min. 12 Zeichen)",
|
||||
"resetPassword": "Passwort zurücksetzen",
|
||||
"backToLogin": "Zurück zur Anmeldung"
|
||||
"backToLogin": "Zurück zur Anmeldung",
|
||||
"passwordMinLength": "Das Passwort muss mindestens 12 Zeichen lang sein",
|
||||
"tooManyAttempts": "Zu viele Versuche — bitte später erneut probieren"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Du bist startklar",
|
||||
|
||||
+49
-18
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Μη έγκυρος κωδικός 2FA",
|
||||
"welcomeBack": "Καλώς ήρθες πίσω",
|
||||
"welcomeBackSub": "Συνδέσου για να συνεχίσεις στο {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Επαληθεύστε το email σας πριν συνδεθείτε.",
|
||||
"errorCaptcha": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.",
|
||||
"whoIsOnline": "Ποιος είναι σε σύνδεση",
|
||||
"newestCitizens": "Νέοι πολίτες",
|
||||
"usersOnline": "{count} σε σύνδεση",
|
||||
"username": "Όνομα χρήστη",
|
||||
"password": "Κωδικός πρόσβασης",
|
||||
"showPassword": "Εμφάνιση",
|
||||
"hidePassword": "Απόκρυψη"
|
||||
},
|
||||
"register": {
|
||||
"title": "Δημιουργία λογαριασμού",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Επαναλάβετε τον κωδικό πρόσβασης",
|
||||
"usernamePlaceholder": "Όνομα χρήστη",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Κωδικός πρόσβασης (ελάχ. 6 χαρακτήρες)",
|
||||
"passwordPlaceholder": "Κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
|
||||
"confirmPasswordPlaceholder": "Επαναλάβετε τον κωδικό πρόσβασης",
|
||||
"selectOutfit": "Επιλέξτε το ντύσιμό σας",
|
||||
"termsAccept": "Είμαι 18+ και αποδέχομαι τους όρους και τους κανόνες του {hotel}.",
|
||||
@@ -866,7 +870,7 @@
|
||||
"termsError": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες για να εγγραφείτε.",
|
||||
"usernameError": "Απαιτείται όνομα χρήστη.",
|
||||
"emailError": "Απαιτείται έγκυρο email.",
|
||||
"passwordError": "Ο κωδικός πρόσβασης πρέπει να αποτελείται από τουλάχιστον 6 χαρακτήρες.",
|
||||
"passwordError": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
|
||||
"confirmPasswordError": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
|
||||
"termsRequired": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες.",
|
||||
"usernameRequired": "Απαιτείται όνομα χρήστη.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
|
||||
"alreadyHaveAccountPre": "Έχεις ήδη λογαριασμό;",
|
||||
"alreadyHaveAccountLink": "Σύνδεση",
|
||||
"whoIsOnline": "Ποιος είναι συνδεδεμένος",
|
||||
"usersOnline": "{count} συνδεδεμένοι",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Ποιος είναι σε σύνδεση",
|
||||
"usersOnline": "{count} σε σύνδεση",
|
||||
"accepted": "Αποδεκτό & συμφωνώ",
|
||||
"showPassword": "Εμφάνιση",
|
||||
"hidePassword": "Απόκρυψη",
|
||||
"accountDetails": "Στοιχεία λογαριασμού",
|
||||
"credentials": "Στοιχεία σύνδεσης & ασφάλεια",
|
||||
"newestCitizens": "Νέοι πολίτες",
|
||||
"ageVerified": "Είμαι 18+ και αποδέχομαι την απαίτηση ηλικίας.",
|
||||
"invitedBy": "Προσκλήθηκε από {username}"
|
||||
"invitedBy": "Προσκλήθηκε από {username}",
|
||||
"strengthWeak": "Ασθενές",
|
||||
"strengthFair": "Μέτριο",
|
||||
"strengthGood": "Καλό",
|
||||
"strengthStrong": "Δυνατό",
|
||||
"passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
|
||||
"passwordUpper": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο γράμμα",
|
||||
"passwordLower": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα πεζό γράμμα",
|
||||
"passwordDigit": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα ψηφίο",
|
||||
"passwordSpecial": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον έναν ειδικό χαρακτήρα",
|
||||
"passwordMaxLength": "Ο κωδικός πρόσβασης είναι πολύ μεγάλος",
|
||||
"usernameMinLength": "Το όνομα χρήστη πρέπει να έχει τουλάχιστον 3 χαρακτήρες",
|
||||
"usernameMaxLength": "Το όνομα χρήστη μπορεί να έχει έως 25 χαρακτήρες",
|
||||
"usernamePattern": "Το όνομα χρήστη μπορεί να περιέχει μόνο γράμματα, ψηφία, κάτω παύλα και παύλα",
|
||||
"usernameReserved": "Αυτό το όνομα χρήστη είναι δεσμευμένο",
|
||||
"emailValid": "Εισαγάγετε μια έγκυρη διεύθυνση email",
|
||||
"emailDisposable": "Τα προσωρινά email domains δεν επιτρέπονται",
|
||||
"passwordsMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
|
||||
"captchaFailed": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.",
|
||||
"usernameTaken": "Αυτό το όνομα χρήστη χρησιμοποιείται ήδη",
|
||||
"rateLimited": "Πάρα πολλές προσπάθειες εγγραφής. Περίμενε λίγα λεπτά και δοκίμασε ξανά.",
|
||||
"vpnBlocked": "Οι εγγραφές μέσω VPN/proxy δεν επιτρέπονται.",
|
||||
"maxAccountsPerIp": "Έφτασες τον μέγιστο αριθμό λογαριασμών για τη σύνδεσή σου.",
|
||||
"unavailable": "Η εγγραφή δεν είναι προσωρινά διαθέσιμη.",
|
||||
"createFailed": "Δεν ήταν δυνατή η δημιουργία του λογαριασμού. Δοκίμασε ξανά ή επικοινώνησε με το προσωπικό.",
|
||||
"invalidInput": "Ελέγξτε τα επισημασμένα πεδία και δοκιμάστε ξανά."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Επαναφορά κωδικού πρόσβασης",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Ορίστε νέο κωδικό πρόσβασης",
|
||||
"subtitle": "Επιλέξτε έναν ισχυρό κωδικό πρόσβασης που δεν χρησιμοποιείτε αλλού.",
|
||||
"passwordPlaceholder": "Νέος κωδικός πρόσβασης (ελάχ. 6 χαρακτήρες)",
|
||||
"passwordPlaceholder": "Νέος κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
|
||||
"resetPassword": "Επαναφορά κωδικού πρόσβασης",
|
||||
"backToLogin": "Επιστροφή στην είσοδο"
|
||||
"backToLogin": "Επιστροφή στην είσοδο",
|
||||
"passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
|
||||
"tooManyAttempts": "Πάρα πολλές προσπάθειες — δοκιμάστε αργότερα"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Είστε έτοιμοι",
|
||||
|
||||
+37
-6
@@ -1015,7 +1015,11 @@
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"usersOnline": "{count} online",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"username": "Username",
|
||||
"password": "Password"
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
@@ -1026,7 +1030,7 @@
|
||||
"confirmPassword": "Repeat password",
|
||||
"usernamePlaceholder": "Username",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 8 chars)",
|
||||
"passwordPlaceholder": "Password (min 12 chars)",
|
||||
"confirmPasswordPlaceholder": "Repeat password",
|
||||
"selectOutfit": "Select your outfit",
|
||||
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
|
||||
@@ -1049,14 +1053,39 @@
|
||||
"termsError": "You must accept the terms & rules to register.",
|
||||
"usernameError": "Username is required.",
|
||||
"emailError": "Valid email is required.",
|
||||
"passwordError": "Password must be at least 6 characters.",
|
||||
"passwordError": "Password must be at least 12 characters",
|
||||
"confirmPasswordError": "Passwords do not match.",
|
||||
"termsRequired": "You must accept the terms & rules.",
|
||||
"usernameRequired": "Username is required.",
|
||||
"emailRequired": "Email is required.",
|
||||
"passwordRequired": "Password is required.",
|
||||
"passwordsDontMatch": "Passwords do not match.",
|
||||
"invitedBy": "Invited by {username}"
|
||||
"invitedBy": "Invited by {username}",
|
||||
"strengthWeak": "Weak",
|
||||
"strengthFair": "Fair",
|
||||
"strengthGood": "Good",
|
||||
"strengthStrong": "Strong",
|
||||
"passwordMinLength": "Password must be at least 12 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",
|
||||
"passwordSpecial": "Password must contain at least one special character",
|
||||
"passwordMaxLength": "Password is too long",
|
||||
"usernameMinLength": "Username must be at least 3 characters",
|
||||
"usernameMaxLength": "Username must be at most 25 characters",
|
||||
"usernamePattern": "Username may only contain letters, numbers, underscore and hyphen",
|
||||
"usernameReserved": "This username is reserved",
|
||||
"emailValid": "Enter a valid email address",
|
||||
"emailDisposable": "Temporary email domains are not allowed",
|
||||
"passwordsMatch": "Passwords do not match",
|
||||
"usernameTaken": "That username is already taken",
|
||||
"captchaFailed": "Captcha verification failed. Please try again.",
|
||||
"rateLimited": "Too many sign-up attempts. Please wait a few minutes and try again.",
|
||||
"vpnBlocked": "Registrations from VPN/proxy connections are not allowed.",
|
||||
"maxAccountsPerIp": "You have reached the maximum number of accounts for your connection.",
|
||||
"unavailable": "Registration is temporarily unavailable.",
|
||||
"createFailed": "Could not create the account. Please try again or contact staff.",
|
||||
"invalidInput": "Please check the highlighted fields and try again."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reset password",
|
||||
@@ -1070,9 +1099,11 @@
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
"subtitle": "Choose a strong password you don't use elsewhere.",
|
||||
"passwordPlaceholder": "New password (min 6 chars)",
|
||||
"passwordPlaceholder": "New password (min 12 chars)",
|
||||
"resetPassword": "Reset password",
|
||||
"backToLogin": "Back to login"
|
||||
"backToLogin": "Back to login",
|
||||
"passwordMinLength": "Password must be at least 12 characters",
|
||||
"tooManyAttempts": "Too many attempts — try again later"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "You're all set",
|
||||
|
||||
+48
-17
@@ -806,14 +806,18 @@
|
||||
"createOne": "Crea una",
|
||||
"forgotPassword": "¿Olvidaste tu contraseña?",
|
||||
"errorInvalidCredentials": "Usuario o contraseña inválidos",
|
||||
"errorInvalid2fa": "Código 2FA inválido",
|
||||
"errorInvalid2fa": "Código 2FA no válido",
|
||||
"welcomeBack": "Bienvenido de nuevo",
|
||||
"welcomeBackSub": "Inicia sesión para continuar en {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Verifica tu correo electrónico antes de iniciar sesión.",
|
||||
"errorCaptcha": "La verificación captcha falló. Inténtalo de nuevo.",
|
||||
"whoIsOnline": "Quién está en línea",
|
||||
"newestCitizens": "Ciudadanos más recientes",
|
||||
"usersOnline": "{count} en línea",
|
||||
"username": "Usuario",
|
||||
"password": "Contraseña",
|
||||
"showPassword": "Mostrar",
|
||||
"hidePassword": "Ocultar"
|
||||
},
|
||||
"register": {
|
||||
"title": "Crear cuenta",
|
||||
@@ -824,7 +828,7 @@
|
||||
"confirmPassword": "Repetir contraseña",
|
||||
"usernamePlaceholder": "Usuario",
|
||||
"emailPlaceholder": "Correo electrónico",
|
||||
"passwordPlaceholder": "Contraseña (mín. 6 caracteres)",
|
||||
"passwordPlaceholder": "Contraseña (mín. 12 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}.",
|
||||
@@ -836,7 +840,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 6 caracteres.",
|
||||
"passwordError": "La contraseña debe tener al menos 12 caracteres",
|
||||
"confirmPasswordError": "Las contraseñas no coinciden.",
|
||||
"termsRequired": "Debes aceptar los términos y reglas.",
|
||||
"usernameRequired": "El usuario es obligatorio.",
|
||||
@@ -847,14 +851,39 @@
|
||||
"alreadyHaveAccountLink": "Iniciar sesión",
|
||||
"whoIsOnline": "Quién está en línea",
|
||||
"usersOnline": "{count} en línea",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Aceptado y de acuerdo",
|
||||
"showPassword": "Mostrar",
|
||||
"hidePassword": "Ocultar",
|
||||
"accountDetails": "Datos de la cuenta",
|
||||
"credentials": "Credenciales y seguridad",
|
||||
"newestCitizens": "Ciudadanos más recientes",
|
||||
"ageVerified": "Tengo 18+ y acepto el requisito de edad.",
|
||||
"invitedBy": "Invitado por {username}"
|
||||
"invitedBy": "Invitado por {username}",
|
||||
"strengthWeak": "Débil",
|
||||
"strengthFair": "Aceptable",
|
||||
"strengthGood": "Buena",
|
||||
"strengthStrong": "Fuerte",
|
||||
"passwordMinLength": "La contraseña debe tener al menos 12 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",
|
||||
"passwordSpecial": "La contraseña debe contener al menos un carácter especial",
|
||||
"passwordMaxLength": "La contraseña es demasiado larga",
|
||||
"usernameMinLength": "El usuario debe tener al menos 3 caracteres",
|
||||
"usernameMaxLength": "El usuario puede tener como máximo 25 caracteres",
|
||||
"usernamePattern": "El usuario solo puede contener letras, números, guion bajo y guion",
|
||||
"usernameReserved": "Ese nombre de usuario está reservado",
|
||||
"emailValid": "Introduce una dirección de correo válida",
|
||||
"emailDisposable": "No se permiten dominios de correo temporales",
|
||||
"passwordsMatch": "Las contraseñas no coinciden.",
|
||||
"captchaFailed": "La verificación captcha falló. Inténtalo de nuevo.",
|
||||
"usernameTaken": "Ese nombre de usuario ya está en uso",
|
||||
"rateLimited": "Demasiados intentos de registro. Espera unos minutos e inténtalo de nuevo.",
|
||||
"vpnBlocked": "No se permiten registros mediante conexiones VPN/proxy.",
|
||||
"maxAccountsPerIp": "Has alcanzado el máximo de cuentas para tu conexión.",
|
||||
"unavailable": "El registro no está disponible temporalmente.",
|
||||
"createFailed": "No se pudo crear la cuenta. Inténtalo de nuevo o contacta con el personal.",
|
||||
"invalidInput": "Revisa los campos marcados e inténtalo de nuevo."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Restablecer contraseña",
|
||||
@@ -868,9 +897,11 @@
|
||||
"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. 6 caracteres)",
|
||||
"passwordPlaceholder": "Nueva contraseña (mín. 12 caracteres)",
|
||||
"resetPassword": "Restablecer contraseña",
|
||||
"backToLogin": "Volver al inicio de sesión"
|
||||
"backToLogin": "Volver al inicio de sesión",
|
||||
"passwordMinLength": "La contraseña debe tener al menos 12 caracteres",
|
||||
"tooManyAttempts": "Demasiados intentos — inténtalo más tarde"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Todo está listo",
|
||||
|
||||
+94
-63
@@ -6067,69 +6067,98 @@
|
||||
"rateLimit": "Too many attempts. Please wait before trying again."
|
||||
},
|
||||
"login": {
|
||||
"title": "Sign in",
|
||||
"subtitle": "Welcome back — log in to enter the hotel.",
|
||||
"subtitle2fa": "Enter the 6-digit code from your authenticator.",
|
||||
"welcomeBack": "Welcome back",
|
||||
"welcomeBackSub": "Sign in to continue to {hotelName}",
|
||||
"usernamePlaceholder": "Username",
|
||||
"passwordPlaceholder": "Password",
|
||||
"codePlaceholder": "2FA code",
|
||||
"pleaseWait": "Please wait…",
|
||||
"verify": "Verify",
|
||||
"signIn": "Sign in",
|
||||
"or": "or",
|
||||
"noAccount": "No account?",
|
||||
"createOne": "Create one",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"errorInvalidCredentials": "Invalid username or password",
|
||||
"errorInvalid2fa": "Invalid 2FA code",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"title": "Kirjaudu sisään",
|
||||
"subtitle": "Kirjaudu sisään jatkaaksesi seuraavaan hotelliin.",
|
||||
"subtitle2fa": "Syötä 6-numeroinen koodi tunnistussovelluksestasi.",
|
||||
"welcomeBack": "Tervetuloa takaisin",
|
||||
"welcomeBackSub": "Kirjaudu sisään liittyäksesi hotelliin {hotelName}",
|
||||
"usernamePlaceholder": "Käyttäjätunnus",
|
||||
"passwordPlaceholder": "Salasana",
|
||||
"codePlaceholder": "Syötä 2FA-koodisi",
|
||||
"pleaseWait": "Odota hetki...",
|
||||
"verify": "Varmenna",
|
||||
"signIn": "Kirjaudu sisään",
|
||||
"or": "tai",
|
||||
"noAccount": "Nie vielä tiliä?",
|
||||
"createOne": "Luo tili",
|
||||
"forgotPassword": "Unohditko salasanasi?",
|
||||
"errorInvalidCredentials": "Väärä käyttäjätunnus tai salasana",
|
||||
"errorInvalid2fa": "Virheellinen 2FA-koodi",
|
||||
"errorUnverified": "Vahvista sähköpostiosoitteesi ennen kirjautumista.",
|
||||
"errorCaptcha": "Captcha-varmennus epäonnistui. Yritä uudelleen.",
|
||||
"whoIsOnline": "Ketkä ovat paikalla",
|
||||
"newestCitizens": "Uusimmat asukkaat",
|
||||
"usersOnline": "{count} paikalla",
|
||||
"username": "Käyttäjätunnus",
|
||||
"password": "Salasana",
|
||||
"showPassword": "Näytä",
|
||||
"hidePassword": "Piilota"
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
"subtitle": "Join the hotel — it only takes a moment.",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"password": "Password",
|
||||
"confirmPassword": "Repeat password",
|
||||
"usernamePlaceholder": "Username",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 8 chars)",
|
||||
"confirmPasswordPlaceholder": "Repeat password",
|
||||
"selectOutfit": "Select your outfit",
|
||||
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"createAccount": "Create account",
|
||||
"creatingAccount": "Creating account...",
|
||||
"redirecting": "Redirecting to your account...",
|
||||
"alreadyHaveAccount": "Already have an account? Login!",
|
||||
"alreadyHaveAccountPre": "Already have an account?",
|
||||
"alreadyHaveAccountLink": "Sign in",
|
||||
"register": "Register",
|
||||
"whoIsOnline": "Who's online",
|
||||
"usersOnline": "{count} online",
|
||||
"termsError": "You must accept the terms & rules to register.",
|
||||
"usernameError": "Username is required.",
|
||||
"emailError": "Valid email is required.",
|
||||
"passwordError": "Password must be at least 6 characters.",
|
||||
"confirmPasswordError": "Passwords do not match.",
|
||||
"termsRequired": "You must accept the terms & rules.",
|
||||
"usernameRequired": "Username is required.",
|
||||
"emailRequired": "Email is required.",
|
||||
"passwordRequired": "Password is required.",
|
||||
"passwordsDontMatch": "Passwords do not match.",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"ageVerified": "Olen 18+ ja hyväksyn ikävaatimuksen.",
|
||||
"invitedBy": "Kutsuja: {username}"
|
||||
"title": "Luo tili",
|
||||
"subtitle": "Liity hotelliin — se kestää vain hetken.",
|
||||
"username": "Käyttäjätunnus",
|
||||
"email": "Sähköposti",
|
||||
"password": "Salasana",
|
||||
"confirmPassword": "Toista salasana",
|
||||
"usernamePlaceholder": "Käyttäjätunnus",
|
||||
"emailPlaceholder": "Sähköposti",
|
||||
"passwordPlaceholder": "Salasana (vähintään 12 merkkiä)",
|
||||
"confirmPasswordPlaceholder": "Toista salasana",
|
||||
"selectOutfit": "Valitse asustesi",
|
||||
"termsAccept": "Olen 18-vuotias ja hyväksyn {hotel} säännöt.",
|
||||
"accepted": "Hyväksytty ja hyväksyn",
|
||||
"showPassword": "Näytä",
|
||||
"hidePassword": "Piilota",
|
||||
"accountDetails": "Tilitiedot",
|
||||
"credentials": "Kirjautumistiedot ja turvallisuus",
|
||||
"createAccount": "Luo tili",
|
||||
"creatingAccount": "Luodaan tiliä...",
|
||||
"redirecting": "Siirrytään tilillesi...",
|
||||
"alreadyHaveAccount": "Onko sinulla jo tili? Kirjaudu sisään!",
|
||||
"alreadyHaveAccountPre": "Onko sinulla jo tili?",
|
||||
"alreadyHaveAccountLink": "Kirjaudu sisään",
|
||||
"register": "Rekisteröidy",
|
||||
"whoIsOnline": "Ketkä ovat paikalla",
|
||||
"usersOnline": "{count} paikalla",
|
||||
"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ä",
|
||||
"confirmPasswordError": "Salasanat eivät täsmää.",
|
||||
"termsRequired": "Sinun on hyväksyttävä säännöt.",
|
||||
"usernameRequired": "Käyttäjätunnus on pakollinen.",
|
||||
"emailRequired": "Sähköpostiosoite on pakollinen.",
|
||||
"passwordRequired": "Salasana on pakollinen.",
|
||||
"passwordsDontMatch": "Salasanat eivät täsmää.",
|
||||
"newestCitizens": "Uusimmat asukkaat",
|
||||
"ageVerified": "Olen 18-vuotias ja hyväksyn ikärajan.",
|
||||
"invitedBy": "Kutsuja: {username}",
|
||||
"strengthWeak": "Heikko",
|
||||
"strengthFair": "Tyydyttävä",
|
||||
"strengthGood": "Hyvä",
|
||||
"strengthStrong": "Vahva",
|
||||
"passwordMinLength": "Salasanassa on oltava vähintään 12 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",
|
||||
"passwordSpecial": "Salasanassa on oltava vähintään yksi erikoismerkki",
|
||||
"passwordMaxLength": "Salasana on liian pitkä",
|
||||
"usernameMinLength": "Käyttäjätunnus on oltava vähintään 3 merkkiä",
|
||||
"usernameMaxLength": "Käyttäjätunnus saa olla korkeintaan 25 merkkiä",
|
||||
"usernamePattern": "Käyttäjätunnus voi sisältää vain kirjaimia, numeroita, alaviivan ja viivan",
|
||||
"usernameReserved": "Tämä käyttäjätunnus on varattu",
|
||||
"emailValid": "Anna kelvollinen sähköpostiosoite",
|
||||
"emailDisposable": "Väliaikaisia sähköpostiosoitteita ei sallita",
|
||||
"passwordsMatch": "Passwords do not match.",
|
||||
"captchaFailed": "Captcha-varmennus epäonnistui. Yritä uudelleen.",
|
||||
"usernameTaken": "Tämä käyttäjätunnus on jo käytössä",
|
||||
"rateLimited": "Liikaa rekisteröintiyrityksiä. Odota muutama minuutti ja yritä uudelleen.",
|
||||
"vpnBlocked": "Rekisteröityminen VPN/proxy-yhteyksien kautta ei ole sallittua.",
|
||||
"maxAccountsPerIp": "Olet saavuttanut yhteytesi enimmäismäärän tilejä.",
|
||||
"unavailable": "Rekisteröityminen ei ole väliaikaisesti käytettävissä.",
|
||||
"createFailed": "Tiliä ei voitu luoda. Yritä uudelleen tai ota yhteyttä henkilökuntaan.",
|
||||
"invalidInput": "Tarkista korostetut kentät ja yritä uudelleen."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reset password",
|
||||
@@ -6143,9 +6172,11 @@
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
"subtitle": "Choose a strong password you don't use elsewhere.",
|
||||
"passwordPlaceholder": "New password (min 6 chars)",
|
||||
"passwordPlaceholder": "New password (min 12 chars)",
|
||||
"resetPassword": "Reset password",
|
||||
"backToLogin": "Back to login"
|
||||
"backToLogin": "Back to login",
|
||||
"passwordMinLength": "Salasanassa on oltava vähintään 12 merkkiä",
|
||||
"tooManyAttempts": "Liikaa yrityksiä — yritä myöhemmin uudelleen"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "You're all set",
|
||||
|
||||
+48
-17
@@ -806,14 +806,18 @@
|
||||
"createOne": "Créer un compte",
|
||||
"forgotPassword": "Mot de passe oublié ?",
|
||||
"errorInvalidCredentials": "Nom d'utilisateur ou mot de passe invalide",
|
||||
"errorInvalid2fa": "Code A2F invalide",
|
||||
"errorInvalid2fa": "Code 2FA invalide",
|
||||
"welcomeBack": "Bon retour",
|
||||
"welcomeBackSub": "Connecte-toi pour continuer vers {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Veuillez vérifier votre e-mail avant de vous connecter.",
|
||||
"errorCaptcha": "La vérification captcha a échoué. Réessayez.",
|
||||
"whoIsOnline": "Qui est en ligne",
|
||||
"newestCitizens": "Nouveaux citoyens",
|
||||
"usersOnline": "{count} en ligne",
|
||||
"username": "Nom d'utilisateur",
|
||||
"password": "Mot de passe",
|
||||
"showPassword": "Afficher",
|
||||
"hidePassword": "Masquer"
|
||||
},
|
||||
"register": {
|
||||
"title": "Créer un compte",
|
||||
@@ -824,7 +828,7 @@
|
||||
"confirmPassword": "Répéter le mot de passe",
|
||||
"usernamePlaceholder": "Nom d'utilisateur",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Mot de passe (min 6 car.)",
|
||||
"passwordPlaceholder": "Mot de passe (min 12 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}.",
|
||||
@@ -836,7 +840,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 6 caractères.",
|
||||
"passwordError": "Le mot de passe doit contenir au moins 12 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.",
|
||||
@@ -847,14 +851,39 @@
|
||||
"alreadyHaveAccountLink": "Se connecter",
|
||||
"whoIsOnline": "Qui est en ligne",
|
||||
"usersOnline": "{count} en ligne",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Accepté et d'accord",
|
||||
"showPassword": "Afficher",
|
||||
"hidePassword": "Masquer",
|
||||
"accountDetails": "Informations du compte",
|
||||
"credentials": "Identifiants et sécurité",
|
||||
"newestCitizens": "Nouveaux citoyens",
|
||||
"ageVerified": "J'ai 18+ et j'accepte la condition d'âge.",
|
||||
"invitedBy": "Invité par {username}"
|
||||
"invitedBy": "Invité par {username}",
|
||||
"strengthWeak": "Faible",
|
||||
"strengthFair": "Moyen",
|
||||
"strengthGood": "Bon",
|
||||
"strengthStrong": "Fort",
|
||||
"passwordMinLength": "Le mot de passe doit contenir au moins 12 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",
|
||||
"passwordSpecial": "Le mot de passe doit contenir au moins un caractère spécial",
|
||||
"passwordMaxLength": "Le mot de passe est trop long",
|
||||
"usernameMinLength": "Le nom d'utilisateur doit contenir au moins 3 caractères",
|
||||
"usernameMaxLength": "Le nom d'utilisateur ne peut pas dépasser 25 caractères",
|
||||
"usernamePattern": "Le nom d'utilisateur ne peut contenir que des lettres, chiffres, tirets bas et tirets",
|
||||
"usernameReserved": "Ce nom d'utilisateur est réservé",
|
||||
"emailValid": "Saisissez une adresse e-mail valide",
|
||||
"emailDisposable": "Les domaines e-mail temporaires ne sont pas autorisés",
|
||||
"passwordsMatch": "Les mots de passe ne correspondent pas.",
|
||||
"captchaFailed": "La vérification captcha a échoué. Réessayez.",
|
||||
"usernameTaken": "Ce nom d'utilisateur est déjà pris",
|
||||
"rateLimited": "Trop de tentatives d'inscription. Patientez quelques minutes et réessayez.",
|
||||
"vpnBlocked": "Les inscriptions via une connexion VPN/proxy ne sont pas autorisées.",
|
||||
"maxAccountsPerIp": "Vous avez atteint le nombre maximal de comptes pour votre connexion.",
|
||||
"unavailable": "L'inscription est temporairement indisponible.",
|
||||
"createFailed": "Impossible de créer le compte. Réessayez ou contactez le personnel.",
|
||||
"invalidInput": "Veuillez vérifier les champs en surbrillance et réessayer."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Réinitialiser le mot de passe",
|
||||
@@ -868,9 +897,11 @@
|
||||
"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 6 car.)",
|
||||
"passwordPlaceholder": "Nouveau mot de passe (min 12 car.)",
|
||||
"resetPassword": "Réinitialiser le mot de passe",
|
||||
"backToLogin": "Retour à la connexion"
|
||||
"backToLogin": "Retour à la connexion",
|
||||
"passwordMinLength": "Le mot de passe doit contenir au moins 12 caractères",
|
||||
"tooManyAttempts": "Trop de tentatives — réessayez plus tard"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Tout est prêt",
|
||||
|
||||
+50
-19
@@ -836,14 +836,18 @@
|
||||
"createOne": "Stvorite jedan",
|
||||
"forgotPassword": "Zaboravili ste lozinku?",
|
||||
"errorInvalidCredentials": "Nevažeće korisničko ime ili lozinka",
|
||||
"errorInvalid2fa": "Nevažeći 2FA kod",
|
||||
"errorInvalid2fa": "Neispravan 2FA kod",
|
||||
"welcomeBack": "Dobrodošao natrag",
|
||||
"welcomeBackSub": "Prijavi se za nastavak u {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Potvrdite svoju e-poštu prije prijave.",
|
||||
"errorCaptcha": "Captcha verifikacija nije uspjela. Pokušajte ponovno.",
|
||||
"whoIsOnline": "Tko je na mreži",
|
||||
"newestCitizens": "Najnoviji građani",
|
||||
"usersOnline": "{count} na mreži",
|
||||
"username": "Korisničko ime",
|
||||
"password": "Lozinka",
|
||||
"showPassword": "Prikaži",
|
||||
"hidePassword": "Sakrij"
|
||||
},
|
||||
"register": {
|
||||
"title": "Napravi račun",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Ponovi lozinku",
|
||||
"usernamePlaceholder": "Korisničko ime",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Lozinka (najmanje 6 znakova)",
|
||||
"passwordPlaceholder": "Lozinka (najmanje 12 znakova)",
|
||||
"confirmPasswordPlaceholder": "Ponovi lozinku",
|
||||
"selectOutfit": "Odaberite svoju odjeću",
|
||||
"termsAccept": "Imam 18+ godina i prihvaćam odredbe i pravila hotela {hotel}.",
|
||||
@@ -866,7 +870,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 6 znakova.",
|
||||
"passwordError": "Lozinka mora imati najmanje 12 znakova.",
|
||||
"confirmPasswordError": "Lozinke se ne podudaraju.",
|
||||
"termsRequired": "Morate prihvatiti uvjete i pravila.",
|
||||
"usernameRequired": "Korisničko ime je potrebno.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Lozinke se ne podudaraju.",
|
||||
"alreadyHaveAccountPre": "Već imaš račun?",
|
||||
"alreadyHaveAccountLink": "Prijavi se",
|
||||
"whoIsOnline": "Tko je online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Tko je na mreži",
|
||||
"usersOnline": "{count} na mreži",
|
||||
"accepted": "Prihvaćeno i suglasan sam",
|
||||
"showPassword": "Prikaži",
|
||||
"hidePassword": "Sakrij",
|
||||
"accountDetails": "Podaci računa",
|
||||
"credentials": "Podaci za prijavu i sigurnost",
|
||||
"newestCitizens": "Najnoviji građani",
|
||||
"ageVerified": "Imam 18+ i prihvaćam uvjet dobi.",
|
||||
"invitedBy": "Pozvao {username}"
|
||||
"invitedBy": "Pozvao {username}",
|
||||
"strengthWeak": "Slaba",
|
||||
"strengthFair": "Osrednja",
|
||||
"strengthGood": "Dobra",
|
||||
"strengthStrong": "Jaka",
|
||||
"passwordMinLength": "Lozinka mora imati najmanje 12 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",
|
||||
"passwordSpecial": "Lozinka mora sadržavati najmanje jedan poseban znak",
|
||||
"passwordMaxLength": "Lozinka je preduga",
|
||||
"usernameMinLength": "Korisničko ime mora imati najmanje 3 znaka",
|
||||
"usernameMaxLength": "Korisničko ime smije imati najviše 25 znakova",
|
||||
"usernamePattern": "Korisničko ime smije sadržavati samo slova, brojeve, podvlaku i crticu",
|
||||
"usernameReserved": "Ovo korisničko ime je rezervirano",
|
||||
"emailValid": "Unesite valjanu adresu e-pošte",
|
||||
"emailDisposable": "Privremene domene e-pošte nisu dopuštene",
|
||||
"passwordsMatch": "Lozinke se ne podudaraju.",
|
||||
"captchaFailed": "Captcha verifikacija nije uspjela. Pokušajte ponovno.",
|
||||
"usernameTaken": "Ovo korisničko ime je već zauzeto",
|
||||
"rateLimited": "Previše pokušaja registracije. Pričekajte nekoliko minuta i pokušajte ponovno.",
|
||||
"vpnBlocked": "Registracija putem VPN/proxy veza nije dopuštena.",
|
||||
"maxAccountsPerIp": "Dosegnuli ste najveći broj računa za svoju vezu.",
|
||||
"unavailable": "Registracija je privremeno nedostupna.",
|
||||
"createFailed": "Račun nije mogao biti stvoren. Pokušajte ponovno ili se obratite osoblju.",
|
||||
"invalidInput": "Provjerite označena polja i pokušajte ponovno."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Resetiraj lozinku",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Postavite novu lozinku",
|
||||
"subtitle": "Odaberite jaku lozinku koju ne koristite drugdje.",
|
||||
"passwordPlaceholder": "Nova lozinka (najmanje 6 znakova)",
|
||||
"passwordPlaceholder": "Nova lozinka (najmanje 12 znakova)",
|
||||
"resetPassword": "Resetiraj lozinku",
|
||||
"backToLogin": "Natrag na prijavu"
|
||||
"backToLogin": "Natrag na prijavu",
|
||||
"passwordMinLength": "Lozinka mora imati najmanje 12 znakova",
|
||||
"tooManyAttempts": "Previše pokušaja — pokušajte kasnije"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Sve je spremno",
|
||||
|
||||
+48
-17
@@ -836,14 +836,18 @@
|
||||
"createOne": "Hozzon létre egyet",
|
||||
"forgotPassword": "Elfelejtetted a jelszavad?",
|
||||
"errorInvalidCredentials": "Érvénytelen felhasználónév vagy jelszó",
|
||||
"errorInvalid2fa": "Érvénytelen 2FA kód",
|
||||
"errorInvalid2fa": "Érvénytelen 2FA-kód",
|
||||
"welcomeBack": "Üdvözöllek újra",
|
||||
"welcomeBackSub": "Jelentkezz be a {hotelName} folytatáshoz",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"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.",
|
||||
"whoIsOnline": "Ki van online",
|
||||
"newestCitizens": "Legújabb lakosok",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Felhasználónév",
|
||||
"password": "Jelszó",
|
||||
"showPassword": "Megjelenítés",
|
||||
"hidePassword": "Elrejtés"
|
||||
},
|
||||
"register": {
|
||||
"title": "Hozzon létre fiókot",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Ismételje meg a jelszót",
|
||||
"usernamePlaceholder": "Felhasználónév",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Jelszó (minimum 6 karakter)",
|
||||
"passwordPlaceholder": "Jelszó (minimum 12 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.",
|
||||
@@ -866,7 +870,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 6 karakterből kell állnia.",
|
||||
"passwordError": "A jelszónak legalább 12 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ő.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Bejelentkezés",
|
||||
"whoIsOnline": "Ki van online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Elfogadva és egyetértek",
|
||||
"showPassword": "Megjelenítés",
|
||||
"hidePassword": "Elrejtés",
|
||||
"accountDetails": "Fiókadatok",
|
||||
"credentials": "Bejelentkezési adatok és biztonság",
|
||||
"newestCitizens": "Legújabb lakosok",
|
||||
"ageVerified": "18+ vagyok és elfogadom a korhatárra vonatkozó követelményt.",
|
||||
"invitedBy": "Meghívta: {username}"
|
||||
"invitedBy": "Meghívta: {username}",
|
||||
"strengthWeak": "Gyenge",
|
||||
"strengthFair": "Közepes",
|
||||
"strengthGood": "Jó",
|
||||
"strengthStrong": "Erős",
|
||||
"passwordMinLength": "A jelszónak legalább 12 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",
|
||||
"passwordSpecial": "A jelszónak legalább egy speciális karaktert kell tartalmaznia",
|
||||
"passwordMaxLength": "A jelszó túl hosszú",
|
||||
"usernameMinLength": "A felhasználónévnek legalább 3 karakter hosszúnak kell lennie",
|
||||
"usernameMaxLength": "A felhasználónév legfeljebb 25 karakter lehet",
|
||||
"usernamePattern": "A felhasználónév csak betűket, számokat, alájlást és kötőjelet tartalmazhat",
|
||||
"usernameReserved": "Ez a felhasználónév foglalt",
|
||||
"emailValid": "Adj meg egy érvényes e-mail-címet",
|
||||
"emailDisposable": "Ideiglenes e-mail-domainek nem engedélyezettek",
|
||||
"passwordsMatch": "A jelszavak nem egyeznek.",
|
||||
"captchaFailed": "A captcha-ellenőrzés sikertelen. Próbáld újra.",
|
||||
"usernameTaken": "Ez a felhasználónév már használatban van",
|
||||
"rateLimited": "Túl sok regisztrációs kísérlet. Várj néhány percet, és próbáld újra.",
|
||||
"vpnBlocked": "VPN/proxy kapcsolatokon keresztüli regisztráció nem engedélyezett.",
|
||||
"maxAccountsPerIp": "Elérted a kapcsolatodhoz tartozó fiókok maximális számát.",
|
||||
"unavailable": "A regisztráció átmenetileg nem érhető el.",
|
||||
"createFailed": "A fiókot nem sikerült létrehozni. Próbáld újra, vagy fordulj a munkatársakhoz.",
|
||||
"invalidInput": "Nézd át a kiemelt mezőket, és próbáld újra."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Jelszó visszaállítása",
|
||||
@@ -898,9 +927,11 @@
|
||||
"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 6 karakter)",
|
||||
"passwordPlaceholder": "Új jelszó (minimum 12 karakter)",
|
||||
"resetPassword": "Jelszó visszaállítása",
|
||||
"backToLogin": "Vissza a bejelentkezéshez"
|
||||
"backToLogin": "Vissza a bejelentkezéshez",
|
||||
"passwordMinLength": "A jelszónak legalább 12 karakter hosszúnak kell lennie",
|
||||
"tooManyAttempts": "Túl sok próbálkozás — próbáld később"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Minden készen áll",
|
||||
|
||||
+42
-11
@@ -979,13 +979,17 @@
|
||||
"forgotPassword": "Password dimenticata?",
|
||||
"errorInvalidCredentials": "Nome utente o password non validi",
|
||||
"errorInvalid2fa": "Codice 2FA non valido",
|
||||
"errorUnverified": "Verifica la tua email prima di accedere.",
|
||||
"errorUnverified": "Verifica il tuo indirizzo email prima di accedere.",
|
||||
"errorCaptcha": "Verifica captcha non riuscita. Riprova.",
|
||||
"welcomeBack": "Bentornato",
|
||||
"welcomeBackSub": "Accedi per continuare su {hotelName}",
|
||||
"whoIsOnline": "Chi è online",
|
||||
"newestCitizens": "Nuovi cittadini",
|
||||
"usersOnline": "{count} online"
|
||||
"newestCitizens": "Cittadini più recenti",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Nome utente",
|
||||
"password": "Password",
|
||||
"showPassword": "Mostra",
|
||||
"hidePassword": "Nascondi"
|
||||
},
|
||||
"register": {
|
||||
"title": "Crea un account",
|
||||
@@ -996,7 +1000,7 @@
|
||||
"confirmPassword": "Ripeti la password",
|
||||
"usernamePlaceholder": "Nome utente",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 6 caratteri)",
|
||||
"passwordPlaceholder": "Password (min 12 caratteri)",
|
||||
"confirmPasswordPlaceholder": "Ripeti la password",
|
||||
"selectOutfit": "Scegli il tuo outfit",
|
||||
"termsAccept": "Ho 18+ anni e accetto i termini e regole di {hotel}.",
|
||||
@@ -1008,7 +1012,7 @@
|
||||
"termsError": "Devi accettare i termini e regole per registrarti.",
|
||||
"usernameError": "Il nome utente è obbligatorio.",
|
||||
"emailError": "Email valida obbligatoria.",
|
||||
"passwordError": "La password deve essere di almeno 6 caratteri.",
|
||||
"passwordError": "La password deve contenere almeno 12 caratteri",
|
||||
"confirmPasswordError": "Le password non coincidono.",
|
||||
"termsRequired": "Devi accettare i termini e le regole.",
|
||||
"usernameRequired": "Il nome utente è obbligatorio.",
|
||||
@@ -1018,15 +1022,40 @@
|
||||
"alreadyHaveAccountPre": "Hai già un account?",
|
||||
"alreadyHaveAccountLink": "Accedi",
|
||||
"whoIsOnline": "Chi è online",
|
||||
"newestCitizens": "Nuovi cittadini",
|
||||
"newestCitizens": "Cittadini più recenti",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accettato e confermato",
|
||||
"accepted": "Accettato e d'accordo",
|
||||
"showPassword": "Mostra",
|
||||
"hidePassword": "Nascondi",
|
||||
"accountDetails": "Dettagli dell’account",
|
||||
"accountDetails": "Dati account",
|
||||
"credentials": "Credenziali e sicurezza",
|
||||
"ageVerified": "Ho 18+ e accetto il requisito di età.",
|
||||
"invitedBy": "Invitato da {username}"
|
||||
"invitedBy": "Invitato da {username}",
|
||||
"strengthWeak": "Debole",
|
||||
"strengthFair": "Discreta",
|
||||
"strengthGood": "Buona",
|
||||
"strengthStrong": "Forte",
|
||||
"passwordMinLength": "La password deve contenere almeno 12 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",
|
||||
"passwordSpecial": "La password deve contenere almeno un carattere speciale",
|
||||
"passwordMaxLength": "La password è troppo lunga",
|
||||
"usernameMinLength": "Il nome utente deve contenere almeno 3 caratteri",
|
||||
"usernameMaxLength": "Il nome utente può contenere al massimo 25 caratteri",
|
||||
"usernamePattern": "Il nome utente può contenere solo lettere, numeri, underscore e trattino",
|
||||
"usernameReserved": "Questo nome utente è riservato",
|
||||
"emailValid": "Inserisci un indirizzo email valido",
|
||||
"emailDisposable": "I domini email temporanei non sono consentiti",
|
||||
"passwordsMatch": "Le password non coincidono.",
|
||||
"captchaFailed": "Verifica captcha non riuscita. Riprova.",
|
||||
"usernameTaken": "Questo nome utente è già in uso",
|
||||
"rateLimited": "Troppi tentativi di registrazione. Attendi qualche minuto e riprova.",
|
||||
"vpnBlocked": "Le registrazioni tramite connessioni VPN/proxy non sono consentite.",
|
||||
"maxAccountsPerIp": "Hai raggiunto il numero massimo di account per la tua connessione.",
|
||||
"unavailable": "La registrazione è temporaneamente non disponibile.",
|
||||
"createFailed": "Impossibile creare l'account. Riprova o contatta lo staff.",
|
||||
"invalidInput": "Controlla i campi evidenziati e riprova."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reimposta password",
|
||||
@@ -1040,9 +1069,11 @@
|
||||
"reset": {
|
||||
"title": "Imposta una nuova password",
|
||||
"subtitle": "Scegli una password robusta che non usi altrove.",
|
||||
"passwordPlaceholder": "Nuova password (min 6 caratteri)",
|
||||
"passwordPlaceholder": "Nuova password (min 12 caratteri)",
|
||||
"resetPassword": "Reimposta password",
|
||||
"backToLogin": "Torna all'accesso"
|
||||
"backToLogin": "Torna all'accesso",
|
||||
"passwordMinLength": "La password deve contenere almeno 12 caratteri",
|
||||
"tooManyAttempts": "Troppi tentativi — riprova più tardi"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "È tutto pronto",
|
||||
|
||||
+94
-63
@@ -6067,69 +6067,98 @@
|
||||
"rateLimit": "Too many attempts. Please wait before trying again."
|
||||
},
|
||||
"login": {
|
||||
"title": "Sign in",
|
||||
"subtitle": "Welcome back — log in to enter the hotel.",
|
||||
"subtitle2fa": "Enter the 6-digit code from your authenticator.",
|
||||
"welcomeBack": "Welcome back",
|
||||
"welcomeBackSub": "Sign in to continue to {hotelName}",
|
||||
"usernamePlaceholder": "Username",
|
||||
"passwordPlaceholder": "Password",
|
||||
"codePlaceholder": "2FA code",
|
||||
"pleaseWait": "Please wait…",
|
||||
"verify": "Verify",
|
||||
"signIn": "Sign in",
|
||||
"or": "or",
|
||||
"noAccount": "No account?",
|
||||
"createOne": "Create one",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"errorInvalidCredentials": "Invalid username or password",
|
||||
"errorInvalid2fa": "Invalid 2FA code",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"title": "ログイン",
|
||||
"subtitle": "ログインして次のホテルへ進みましょう。",
|
||||
"subtitle2fa": "認証アプリの6桁のコードを入力してください。",
|
||||
"welcomeBack": "おかえりなさい",
|
||||
"welcomeBackSub": "ログインして {hotelName} に参加しましょう",
|
||||
"usernamePlaceholder": "ユーザー名",
|
||||
"passwordPlaceholder": "パスワード",
|
||||
"codePlaceholder": "2FAコードを入力",
|
||||
"pleaseWait": "お待ちください...",
|
||||
"verify": "確認",
|
||||
"signIn": "ログイン",
|
||||
"or": "または",
|
||||
"noAccount": "アカウントをお持ちでない方",
|
||||
"createOne": "アカウントを作成",
|
||||
"forgotPassword": "パスワードをお忘れですか?",
|
||||
"errorInvalidCredentials": "ユーザー名またはパスワードが違います",
|
||||
"errorInvalid2fa": "2FAコードが正しくありません",
|
||||
"errorUnverified": "ログインする前にメールアドレスを認証してください。",
|
||||
"errorCaptcha": "認証コードの検証に失敗しました。再度お試しください。",
|
||||
"whoIsOnline": "オンラインの人",
|
||||
"newestCitizens": "最新の住民",
|
||||
"usersOnline": "{count} 人がオンライン",
|
||||
"username": "ユーザー名",
|
||||
"password": "パスワード",
|
||||
"showPassword": "表示",
|
||||
"hidePassword": "非表示"
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
"subtitle": "Join the hotel — it only takes a moment.",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"password": "Password",
|
||||
"confirmPassword": "Repeat password",
|
||||
"usernamePlaceholder": "Username",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 8 chars)",
|
||||
"confirmPasswordPlaceholder": "Repeat password",
|
||||
"selectOutfit": "Select your outfit",
|
||||
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"createAccount": "Create account",
|
||||
"creatingAccount": "Creating account...",
|
||||
"redirecting": "Redirecting to your account...",
|
||||
"alreadyHaveAccount": "Already have an account? Login!",
|
||||
"alreadyHaveAccountPre": "Already have an account?",
|
||||
"alreadyHaveAccountLink": "Sign in",
|
||||
"register": "Register",
|
||||
"whoIsOnline": "Who's online",
|
||||
"usersOnline": "{count} online",
|
||||
"termsError": "You must accept the terms & rules to register.",
|
||||
"usernameError": "Username is required.",
|
||||
"emailError": "Valid email is required.",
|
||||
"passwordError": "Password must be at least 6 characters.",
|
||||
"confirmPasswordError": "Passwords do not match.",
|
||||
"termsRequired": "You must accept the terms & rules.",
|
||||
"usernameRequired": "Username is required.",
|
||||
"emailRequired": "Email is required.",
|
||||
"passwordRequired": "Password is required.",
|
||||
"passwordsDontMatch": "Passwords do not match.",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"ageVerified": "18歳以上です。年齢要件に同意します。",
|
||||
"invitedBy": "{username} さんに招待されました"
|
||||
"title": "アカウント作成",
|
||||
"subtitle": "ホテルに参加しましょう — すぐに終わります。",
|
||||
"username": "ユーザー名",
|
||||
"email": "メールアドレス",
|
||||
"password": "パスワード",
|
||||
"confirmPassword": "パスワードの確認",
|
||||
"usernamePlaceholder": "ユーザー名",
|
||||
"emailPlaceholder": "メールアドレス",
|
||||
"passwordPlaceholder": "パスワード(12文字以上)",
|
||||
"confirmPasswordPlaceholder": "パスワードの確認",
|
||||
"selectOutfit": "アバターを選んでスタイルを設定",
|
||||
"termsAccept": "18歳以上であり、{hotel} の規約に同意します。",
|
||||
"accepted": "承認して同意しました",
|
||||
"showPassword": "表示",
|
||||
"hidePassword": "非表示",
|
||||
"accountDetails": "アカウント情報",
|
||||
"credentials": "ログイン情報とセキュリティ",
|
||||
"createAccount": "アカウントを作成",
|
||||
"creatingAccount": "アカウントを作成中...",
|
||||
"redirecting": "アカウント画面へ移動しています...",
|
||||
"alreadyHaveAccount": "すでにアカウントをお持ちですか?ログインしましょう!",
|
||||
"alreadyHaveAccountPre": "すでにアカウントをお持ちですか?",
|
||||
"alreadyHaveAccountLink": "ログイン",
|
||||
"register": "登録",
|
||||
"whoIsOnline": "オンラインの人",
|
||||
"usersOnline": "{count} 人がオンライン",
|
||||
"termsError": "登録するには規約に同意する必要があります。",
|
||||
"usernameError": "ユーザー名は必須です。",
|
||||
"emailError": "有効なメールアドレスが必要です。",
|
||||
"passwordError": "パスワードは12文字以上にしてください",
|
||||
"confirmPasswordError": "パスワードが一致しません。",
|
||||
"termsRequired": "規約に同意する必要があります。",
|
||||
"usernameRequired": "ユーザー名は必須です。",
|
||||
"emailRequired": "メールアドレスは必須です。",
|
||||
"passwordRequired": "パスワードは必須です。",
|
||||
"passwordsDontMatch": "パスワードが一致しません。",
|
||||
"newestCitizens": "最新の住民",
|
||||
"ageVerified": "18歳以上であり、年齢要件に同意します。",
|
||||
"invitedBy": "{username} からの招待",
|
||||
"strengthWeak": "弱",
|
||||
"strengthFair": "普通",
|
||||
"strengthGood": "良",
|
||||
"strengthStrong": "強",
|
||||
"passwordMinLength": "パスワードは12文字以上にしてください",
|
||||
"passwordUpper": "パスワードには大文字を1文字以上含めてください",
|
||||
"passwordLower": "パスワードには小文字を1文字以上含めてください",
|
||||
"passwordDigit": "パスワードには数字を1文字以上含めてください",
|
||||
"passwordSpecial": "パスワードには記号を1文字以上含めてください",
|
||||
"passwordMaxLength": "パスワードが長すぎます",
|
||||
"usernameMinLength": "ユーザー名は3文字以上にしてください",
|
||||
"usernameMaxLength": "ユーザー名は25文字以内にしてください",
|
||||
"usernamePattern": "ユーザー名には英数字・アンダースコア・ハイフンのみ使用できます",
|
||||
"usernameReserved": "そのユーザー名は予約されています",
|
||||
"emailValid": "有効なメールアドレスを入力してください",
|
||||
"emailDisposable": "一時的なメールアドレスドメインは使用できません",
|
||||
"passwordsMatch": "Passwords do not match.",
|
||||
"captchaFailed": "認証コードの検証に失敗しました。再度お試しください。",
|
||||
"usernameTaken": "そのユーザー名はすでに使用されています",
|
||||
"rateLimited": "登録の試行が多すぎます。数分待ってから再度お試しください。",
|
||||
"vpnBlocked": "VPN/プロキシ経由の登録は許可されていません。",
|
||||
"maxAccountsPerIp": "この接続で作成できるアカウント数の上限に達しました。",
|
||||
"unavailable": "現在、登録を一時停止しています。",
|
||||
"createFailed": "アカウントを作成できませんでした。再度お試しいただくか、スタッフにご連絡ください。",
|
||||
"invalidInput": "強調された項目を確認して、もう一度お試しください。"
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reset password",
|
||||
@@ -6143,9 +6172,11 @@
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
"subtitle": "Choose a strong password you don't use elsewhere.",
|
||||
"passwordPlaceholder": "New password (min 6 chars)",
|
||||
"passwordPlaceholder": "New password (min 12 chars)",
|
||||
"resetPassword": "Reset password",
|
||||
"backToLogin": "Back to login"
|
||||
"backToLogin": "Back to login",
|
||||
"passwordMinLength": "パスワードは12文字以上にしてください",
|
||||
"tooManyAttempts": "試行回数が多すぎます — 後で再度お試しください"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "You're all set",
|
||||
|
||||
+45
-14
@@ -1013,9 +1013,13 @@
|
||||
"errorCaptcha": "Captcha-verificatie mislukt. Probeer het opnieuw.",
|
||||
"welcomeBack": "Welkom terug",
|
||||
"welcomeBackSub": "Log in om verder te gaan naar {hotelName}",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"whoIsOnline": "Wie is online",
|
||||
"newestCitizens": "Nieuwste burgers",
|
||||
"usersOnline": "{count} online",
|
||||
"showPassword": "Toon",
|
||||
"hidePassword": "Verberg",
|
||||
"username": "Gebruikersnaam",
|
||||
"password": "Wachtwoord"
|
||||
},
|
||||
"register": {
|
||||
"title": "Account aanmaken",
|
||||
@@ -1026,7 +1030,7 @@
|
||||
"confirmPassword": "Wachtwoord herhalen",
|
||||
"usernamePlaceholder": "Gebruikersnaam",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Wachtwoord (min 6 tekens)",
|
||||
"passwordPlaceholder": "Wachtwoord (min 12 tekens)",
|
||||
"confirmPasswordPlaceholder": "Wachtwoord herhalen",
|
||||
"selectOutfit": "Kies je outfit",
|
||||
"termsAccept": "Ik ben 18+ en accepteer de {hotel} voorwaarden & regels.",
|
||||
@@ -1042,21 +1046,46 @@
|
||||
"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 6 tekens bevatten.",
|
||||
"passwordError": "Wachtwoord moet minimaal 12 tekens lang zijn",
|
||||
"confirmPasswordError": "Wachtwoorden komen niet overeen.",
|
||||
"termsRequired": "Je moet de voorwaarden & regels accepteren.",
|
||||
"termsRequired": "Je moet de voorwaarden accepteren.",
|
||||
"ageVerified": "Ik ben 18+ en ga akkoord met de leeftijdsvereiste.",
|
||||
"usernameRequired": "Gebruikersnaam is verplicht.",
|
||||
"emailRequired": "E-mail is verplicht.",
|
||||
"passwordRequired": "Wachtwoord is verplicht.",
|
||||
"passwordsDontMatch": "Wachtwoorden komen niet overeen.",
|
||||
"invitedBy": "Uitgenodigd door {username}",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens"
|
||||
"accepted": "Geaccepteerd & akkoord",
|
||||
"showPassword": "Toon",
|
||||
"hidePassword": "Verberg",
|
||||
"accountDetails": "Accountgegevens",
|
||||
"credentials": "Gegevens & beveiliging",
|
||||
"newestCitizens": "Nieuwste burgers",
|
||||
"strengthWeak": "Zwak",
|
||||
"strengthFair": "Redelijk",
|
||||
"strengthGood": "Goed",
|
||||
"strengthStrong": "Sterk",
|
||||
"passwordMinLength": "Wachtwoord moet minimaal 12 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",
|
||||
"passwordSpecial": "Wachtwoord moet minstens één speciaal teken bevatten",
|
||||
"passwordMaxLength": "Wachtwoord is te lang",
|
||||
"usernameMinLength": "Gebruikersnaam moet minimaal 3 tekens lang zijn",
|
||||
"usernameMaxLength": "Gebruikersnaam mag maximaal 25 tekens lang zijn",
|
||||
"usernamePattern": "Gebruikersnaam mag alleen letters, cijfers, underscore en streepje bevatten",
|
||||
"usernameReserved": "Deze gebruikersnaam is gereserveerd",
|
||||
"emailValid": "Voer een geldig e-mailadres in",
|
||||
"emailDisposable": "Tijdelijke e-maildomeinen zijn niet toegestaan",
|
||||
"passwordsMatch": "Wachtwoorden komen niet overeen",
|
||||
"usernameTaken": "Deze gebruikersnaam is al in gebruik",
|
||||
"captchaFailed": "Captcha-verificatie mislukt. Probeer het opnieuw.",
|
||||
"rateLimited": "Te veel registratiepogingen. Wacht een paar minuten en probeer het opnieuw.",
|
||||
"vpnBlocked": "Registraties via VPN/proxy-verbindingen zijn niet toegestaan.",
|
||||
"maxAccountsPerIp": "Je hebt het maximale aantal accounts voor je verbinding bereikt.",
|
||||
"unavailable": "Registratie is tijdelijk niet beschikbaar.",
|
||||
"createFailed": "Het account kon niet worden aangemaakt. Probeer het opnieuw of neem contact op met het personeel.",
|
||||
"invalidInput": "Controleer de gemarkeerde velden en probeer het opnieuw."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Wachtwoord resetten",
|
||||
@@ -1070,9 +1099,11 @@
|
||||
"reset": {
|
||||
"title": "Nieuw wachtwoord instellen",
|
||||
"subtitle": "Kies een sterk wachtwoord dat je nergens anders gebruikt.",
|
||||
"passwordPlaceholder": "Nieuw wachtwoord (min 6 tekens)",
|
||||
"passwordPlaceholder": "Nieuw wachtwoord (min 12 tekens)",
|
||||
"resetPassword": "Wachtwoord resetten",
|
||||
"backToLogin": "Terug naar inloggen"
|
||||
"backToLogin": "Terug naar inloggen",
|
||||
"passwordMinLength": "Wachtwoord moet minimaal 12 tekens lang zijn",
|
||||
"tooManyAttempts": "Te veel pogingen — probeer het later opnieuw"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Je bent helemaal klaar",
|
||||
|
||||
+49
-18
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Ugyldig 2FA-kode",
|
||||
"welcomeBack": "Velkommen tilbake",
|
||||
"welcomeBackSub": "Logg inn for å fortsette til {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Bekreft e-postadressen din før du logger inn.",
|
||||
"errorCaptcha": "Captcha-verifisering mislyktes. Prøv igjen.",
|
||||
"whoIsOnline": "Hvem er påloggede",
|
||||
"newestCitizens": "Nyeste innbyggere",
|
||||
"usersOnline": "{count} påloggede",
|
||||
"username": "Brukernavn",
|
||||
"password": "Passord",
|
||||
"showPassword": "Vis",
|
||||
"hidePassword": "Skjul"
|
||||
},
|
||||
"register": {
|
||||
"title": "Opprett konto",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Gjenta passord",
|
||||
"usernamePlaceholder": "Brukernavn",
|
||||
"emailPlaceholder": "E-post",
|
||||
"passwordPlaceholder": "Passord (minst 6 tegn)",
|
||||
"passwordPlaceholder": "Passord (minst 12 tegn)",
|
||||
"confirmPasswordPlaceholder": "Gjenta passord",
|
||||
"selectOutfit": "Velg antrekket ditt",
|
||||
"termsAccept": "Jeg er 18+ og godtar vilkårene og reglene for {hotel}.",
|
||||
@@ -866,7 +870,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 6 tegn.",
|
||||
"passwordError": "Passordet må være på minst 12 tegn.",
|
||||
"confirmPasswordError": "Passord stemmer ikke.",
|
||||
"termsRequired": "Du må godta vilkårene og reglene.",
|
||||
"usernameRequired": "Brukernavn er påkrevd.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Passord stemmer ikke.",
|
||||
"alreadyHaveAccountPre": "Har du allerede en konto?",
|
||||
"alreadyHaveAccountLink": "Logg inn",
|
||||
"whoIsOnline": "Hvem er online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Hvem er påloggede",
|
||||
"usersOnline": "{count} påloggede",
|
||||
"accepted": "Akseptert og enig",
|
||||
"showPassword": "Vis",
|
||||
"hidePassword": "Skjul",
|
||||
"accountDetails": "Kontoopplysninger",
|
||||
"credentials": "Innloggingsdetaljer og sikkerhet",
|
||||
"newestCitizens": "Nyeste innbyggere",
|
||||
"ageVerified": "Jeg er 18+ og godtar alderskravet.",
|
||||
"invitedBy": "Invitert av {username}"
|
||||
"invitedBy": "Invitert av {username}",
|
||||
"strengthWeak": "Svak",
|
||||
"strengthFair": "Middels",
|
||||
"strengthGood": "God",
|
||||
"strengthStrong": "Sterk",
|
||||
"passwordMinLength": "Passordet må være minst 12 tegn",
|
||||
"passwordUpper": "Passordet må inneholde minst én stor bokstav",
|
||||
"passwordLower": "Passordet må inneholde minst én liten bokstav",
|
||||
"passwordDigit": "Passordet må inneholde minst ett siffer",
|
||||
"passwordSpecial": "Passordet må inneholde minst ett spesialtegn",
|
||||
"passwordMaxLength": "Passordet er for langt",
|
||||
"usernameMinLength": "Brukernavnet må være minst 3 tegn",
|
||||
"usernameMaxLength": "Brukernavnet kan være maks 25 tegn",
|
||||
"usernamePattern": "Brukernavnet kan bare inneholde bokstaver, sifre, understrek og bindestrek",
|
||||
"usernameReserved": "Dette brukernavnet er reservert",
|
||||
"emailValid": "Oppgi en gyldig e-postadresse",
|
||||
"emailDisposable": "Midlertidige e-postdomener er ikke tillatt",
|
||||
"passwordsMatch": "Passord stemmer ikke.",
|
||||
"captchaFailed": "Captcha-verifisering mislyktes. Prøv igjen.",
|
||||
"usernameTaken": "Dette brukernavnet er allerede tatt",
|
||||
"rateLimited": "For mange registreringsforsøk. Vent et par minutter og prøv igjen.",
|
||||
"vpnBlocked": "Registrering via VPN/proxy-tilkoblinger er ikke tillatt.",
|
||||
"maxAccountsPerIp": "Du har nådd maksimalt antall kontoer for tilkoblingen din.",
|
||||
"unavailable": "Registrering er midlertidig utilgjengelig.",
|
||||
"createFailed": "Kontoen kunne ikke opprettes. Prøv igjen, eller kontakt personalet.",
|
||||
"invalidInput": "Kontroller de markerte feltene og prøv igjen."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Tilbakestill passord",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Angi et nytt passord",
|
||||
"subtitle": "Velg et sterkt passord du ikke bruker andre steder.",
|
||||
"passwordPlaceholder": "Nytt passord (minst 6 tegn)",
|
||||
"passwordPlaceholder": "Nytt passord (minst 12 tegn)",
|
||||
"resetPassword": "Tilbakestill passord",
|
||||
"backToLogin": "Tilbake til innlogging"
|
||||
"backToLogin": "Tilbake til innlogging",
|
||||
"passwordMinLength": "Passordet må være minst 12 tegn",
|
||||
"tooManyAttempts": "For mange forsøk — prøv igjen senere"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Du er klar",
|
||||
|
||||
+47
-16
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Nieprawidłowy kod 2FA",
|
||||
"welcomeBack": "Witaj z powrotem",
|
||||
"welcomeBackSub": "Zaloguj się, aby kontynuować w {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Potwierdź swój e-mail przed zalogowaniem.",
|
||||
"errorCaptcha": "Weryfikacja captcha nie powiodła się. Spróbuj ponownie.",
|
||||
"whoIsOnline": "Kto jest online",
|
||||
"newestCitizens": "Najnowsi mieszkańcy",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Nazwa użytkownika",
|
||||
"password": "Hasło",
|
||||
"showPassword": "Pokaż",
|
||||
"hidePassword": "Ukryj"
|
||||
},
|
||||
"register": {
|
||||
"title": "Utwórz konto",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Powtórz hasło",
|
||||
"usernamePlaceholder": "Nazwa użytkownika",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Hasło (min. 6 znaków)",
|
||||
"passwordPlaceholder": "Hasło (min. 12 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}.",
|
||||
@@ -866,7 +870,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 6 znaków.",
|
||||
"passwordError": "Hasło musi mieć co najmniej 12 znaków",
|
||||
"confirmPasswordError": "Hasła nie pasują.",
|
||||
"termsRequired": "Musisz zaakceptować warunki i zasady.",
|
||||
"usernameRequired": "Nazwa użytkownika jest wymagana.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Zaloguj się",
|
||||
"whoIsOnline": "Kto jest online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Zaakceptowano i zgadzam się",
|
||||
"showPassword": "Pokaż",
|
||||
"hidePassword": "Ukryj",
|
||||
"accountDetails": "Dane konta",
|
||||
"credentials": "Dane logowania i bezpieczeństwo",
|
||||
"newestCitizens": "Najnowsi mieszkańcy",
|
||||
"ageVerified": "Mam 18+ i akceptuję wymóg wieku.",
|
||||
"invitedBy": "Zaproszony przez {username}"
|
||||
"invitedBy": "Zaproszony przez {username}",
|
||||
"strengthWeak": "Słabe",
|
||||
"strengthFair": "Średnie",
|
||||
"strengthGood": "Dobre",
|
||||
"strengthStrong": "Silne",
|
||||
"passwordMinLength": "Hasło musi mieć co najmniej 12 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ę",
|
||||
"passwordSpecial": "Hasło musi zawierać co najmniej jeden znak specjalny",
|
||||
"passwordMaxLength": "Hasło jest za długie",
|
||||
"usernameMinLength": "Nazwa użytkownika musi mieć co najmniej 3 znaki",
|
||||
"usernameMaxLength": "Nazwa użytkownika może mieć maksymalnie 25 znaków",
|
||||
"usernamePattern": "Nazwa użytkownika może zawierać tylko litery, cyfry, podkreślenie i myślnik",
|
||||
"usernameReserved": "Ta nazwa użytkownika jest zarezerwowana",
|
||||
"emailValid": "Podaj prawidłowy adres e-mail",
|
||||
"emailDisposable": "Tymczasowe domeny e-mail nie są dozwolone",
|
||||
"passwordsMatch": "Hasła nie pasują.",
|
||||
"captchaFailed": "Weryfikacja captcha nie powiodła się. Spróbuj ponownie.",
|
||||
"usernameTaken": "Ta nazwa użytkownika jest już zajęta",
|
||||
"rateLimited": "Zbyt wiele prób rejestracji. Odczekaj kilka minut i spróbuj ponownie.",
|
||||
"vpnBlocked": "Rejestracja przez połączenia VPN/proxy jest niedozwolona.",
|
||||
"maxAccountsPerIp": "Osiągnięto maksymalną liczbę kont dla Twojego połączenia.",
|
||||
"unavailable": "Rejestracja jest tymczasowo niedostępna.",
|
||||
"createFailed": "Nie udało się utworzyć konta. Spróbuj ponownie lub skontaktuj się z obsługą.",
|
||||
"invalidInput": "Sprawdź zaznaczone pola i spróbuj ponownie."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Zresetuj hasło",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Ustaw nowe hasło",
|
||||
"subtitle": "Wybierz silne hasło, którego nie używasz gdzie indziej.",
|
||||
"passwordPlaceholder": "Nowe hasło (min. 6 znaków)",
|
||||
"passwordPlaceholder": "Nowe hasło (min. 12 znaków)",
|
||||
"resetPassword": "Zresetuj hasło",
|
||||
"backToLogin": "Powrót do logowania"
|
||||
"backToLogin": "Powrót do logowania",
|
||||
"passwordMinLength": "Hasło musi mieć co najmniej 12 znaków",
|
||||
"tooManyAttempts": "Zbyt wiele prób — spróbuj później"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Wszystko gotowe",
|
||||
|
||||
+47
-16
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Código 2FA inválido",
|
||||
"welcomeBack": "Bem-vindo de volta",
|
||||
"welcomeBackSub": "Entre para continuar em {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Verifique seu e-mail antes de entrar.",
|
||||
"errorCaptcha": "A verificação captcha falhou. Tente novamente.",
|
||||
"whoIsOnline": "Quem está online",
|
||||
"newestCitizens": "Cidadãos mais recentes",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Nome de usuário",
|
||||
"password": "Senha",
|
||||
"showPassword": "Mostrar",
|
||||
"hidePassword": "Ocultar"
|
||||
},
|
||||
"register": {
|
||||
"title": "Criar conta",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Repetir senha",
|
||||
"usernamePlaceholder": "Nome de usuário",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Senha (mín. 6 caracteres)",
|
||||
"passwordPlaceholder": "Senha (mín. 12 caracteres)",
|
||||
"confirmPasswordPlaceholder": "Repetir senha",
|
||||
"selectOutfit": "Selecione sua roupa",
|
||||
"termsAccept": "Tenho mais de 18 anos e aceito os termos e regras do {hotel}.",
|
||||
@@ -866,7 +870,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 6 caracteres.",
|
||||
"passwordError": "A senha deve ter pelo menos 12 caracteres",
|
||||
"confirmPasswordError": "As senhas não coincidem.",
|
||||
"termsRequired": "Você deve aceitar os termos e regras.",
|
||||
"usernameRequired": "O nome de usuário é obrigatório.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Entrar",
|
||||
"whoIsOnline": "Quem está online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Aceito e concordo",
|
||||
"showPassword": "Mostrar",
|
||||
"hidePassword": "Ocultar",
|
||||
"accountDetails": "Dados da conta",
|
||||
"credentials": "Credenciais e segurança",
|
||||
"newestCitizens": "Cidadãos mais recentes",
|
||||
"ageVerified": "Tenho 18+ e aceito o requisito de idade.",
|
||||
"invitedBy": "Convidado por {username}"
|
||||
"invitedBy": "Convidado por {username}",
|
||||
"strengthWeak": "Fraca",
|
||||
"strengthFair": "Razoável",
|
||||
"strengthGood": "Boa",
|
||||
"strengthStrong": "Forte",
|
||||
"passwordMinLength": "A senha deve ter pelo menos 12 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",
|
||||
"passwordSpecial": "A senha deve conter pelo menos um caractere especial",
|
||||
"passwordMaxLength": "A senha é longa demais",
|
||||
"usernameMinLength": "O nome de usuário deve ter pelo menos 3 caracteres",
|
||||
"usernameMaxLength": "O nome de usuário pode ter no máximo 25 caracteres",
|
||||
"usernamePattern": "O nome de usuário só pode conter letras, números, sublinhado e hífen",
|
||||
"usernameReserved": "Esse nome de usuário é reservado",
|
||||
"emailValid": "Digite um endereço de e-mail válido",
|
||||
"emailDisposable": "Domínios de e-mail temporários não são permitidos",
|
||||
"passwordsMatch": "As senhas não coincidem.",
|
||||
"captchaFailed": "A verificação captcha falhou. Tente novamente.",
|
||||
"usernameTaken": "Esse nome de usuário já está em uso",
|
||||
"rateLimited": "Muitas tentativas de cadastro. Aguarde alguns minutos e tente novamente.",
|
||||
"vpnBlocked": "Cadastros via conexões VPN/proxy não são permitidos.",
|
||||
"maxAccountsPerIp": "Você atingiu o limite máximo de contas para a sua conexão.",
|
||||
"unavailable": "O cadastro está temporariamente indisponível.",
|
||||
"createFailed": "Não foi possível criar a conta. Tente novamente ou fale com a equipe.",
|
||||
"invalidInput": "Confira os campos destacados e tente novamente."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Redefinir senha",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Defina uma nova senha",
|
||||
"subtitle": "Escolha uma senha forte que você não usa em outro lugar.",
|
||||
"passwordPlaceholder": "Nova senha (mínimo 6 caracteres)",
|
||||
"passwordPlaceholder": "Nova senha (mínimo 12 caracteres)",
|
||||
"resetPassword": "Redefinir senha",
|
||||
"backToLogin": "Voltar ao login"
|
||||
"backToLogin": "Voltar ao login",
|
||||
"passwordMinLength": "A senha deve ter pelo menos 12 caracteres",
|
||||
"tooManyAttempts": "Muitas tentativas — tente mais tarde"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Você está pronto",
|
||||
|
||||
+48
-17
@@ -836,14 +836,18 @@
|
||||
"createOne": "Creați unul",
|
||||
"forgotPassword": "Ai uitat parola?",
|
||||
"errorInvalidCredentials": "Nume de utilizator sau parolă nevalidă",
|
||||
"errorInvalid2fa": "Cod 2FA nevalid",
|
||||
"errorInvalid2fa": "Cod 2FA invalid",
|
||||
"welcomeBack": "Bine ai revenit",
|
||||
"welcomeBackSub": "Autentifică-te pentru a continua pe {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Te rugăm să îți verifici e-mailul înainte de a te autentifica.",
|
||||
"errorCaptcha": "Verificarea captcha a eșuat. Încearcă din nou.",
|
||||
"whoIsOnline": "Cine este online",
|
||||
"newestCitizens": "Cei mai noi locuitori",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Nume de utilizator",
|
||||
"password": "Parolă",
|
||||
"showPassword": "Arată",
|
||||
"hidePassword": "Ascunde"
|
||||
},
|
||||
"register": {
|
||||
"title": "Creați cont",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Repetați parola",
|
||||
"usernamePlaceholder": "Nume de utilizator",
|
||||
"emailPlaceholder": "E-mail",
|
||||
"passwordPlaceholder": "Parola (min 6 caractere)",
|
||||
"passwordPlaceholder": "Parola (min 12 caractere)",
|
||||
"confirmPasswordPlaceholder": "Repetați parola",
|
||||
"selectOutfit": "Alege-ți ținuta",
|
||||
"termsAccept": "Am peste 18 ani și accept termenii și regulile {hotel}.",
|
||||
@@ -866,7 +870,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 6 caractere.",
|
||||
"passwordError": "Parola trebuie să aibă cel puțin 12 caractere",
|
||||
"confirmPasswordError": "Parolele nu se potrivesc.",
|
||||
"termsRequired": "Trebuie să acceptați termenii și regulile.",
|
||||
"usernameRequired": "Numele de utilizator este obligatoriu.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Autentificare",
|
||||
"whoIsOnline": "Cine este online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Acceptat și de acord",
|
||||
"showPassword": "Arată",
|
||||
"hidePassword": "Ascunde",
|
||||
"accountDetails": "Datele contului",
|
||||
"credentials": "Credențiale și securitate",
|
||||
"newestCitizens": "Cei mai noi locuitori",
|
||||
"ageVerified": "Am 18+ și accept cerința de vârstă.",
|
||||
"invitedBy": "Invitat de {username}"
|
||||
"invitedBy": "Invitat de {username}",
|
||||
"strengthWeak": "Slabă",
|
||||
"strengthFair": "Medie",
|
||||
"strengthGood": "Bună",
|
||||
"strengthStrong": "Puternică",
|
||||
"passwordMinLength": "Parola trebuie să aibă cel puțin 12 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ă",
|
||||
"passwordSpecial": "Parola trebuie să conțină cel puțin un caracter special",
|
||||
"passwordMaxLength": "Parola este prea lungă",
|
||||
"usernameMinLength": "Numele de utilizator trebuie să aibă cel puțin 3 caractere",
|
||||
"usernameMaxLength": "Numele de utilizator poate avea cel mult 25 de caractere",
|
||||
"usernamePattern": "Numele de utilizator poate conține doar litere, cifre, linie de subliniere și linie",
|
||||
"usernameReserved": "Acest nume de utilizator este rezervat",
|
||||
"emailValid": "Introdu o adresă de e-mail validă",
|
||||
"emailDisposable": "Domeniile de e-mail temporare nu sunt permise",
|
||||
"passwordsMatch": "Parolele nu se potrivesc.",
|
||||
"captchaFailed": "Verificarea captcha a eșuat. Încearcă din nou.",
|
||||
"usernameTaken": "Acest nume de utilizator este deja folosit",
|
||||
"rateLimited": "Prea multe încercări de înregistrare. Așteaptă câteva minute și încearcă din nou.",
|
||||
"vpnBlocked": "Înregistrările prin conexiuni VPN/proxy nu sunt permise.",
|
||||
"maxAccountsPerIp": "Ai atins numărul maxim de conturi pentru conexiunea ta.",
|
||||
"unavailable": "Înregistrarea este temporar indisponibilă.",
|
||||
"createFailed": "Contul nu a putut fi creat. Încearcă din nou sau contactează personalul.",
|
||||
"invalidInput": "Verifică câmpurile evidențiate și încearcă din nou."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Resetează parola",
|
||||
@@ -898,9 +927,11 @@
|
||||
"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 6 caractere)",
|
||||
"passwordPlaceholder": "Parolă nouă (min 12 caractere)",
|
||||
"resetPassword": "Resetează parola",
|
||||
"backToLogin": "Înapoi la autentificare"
|
||||
"backToLogin": "Înapoi la autentificare",
|
||||
"passwordMinLength": "Parola trebuie să aibă cel puțin 12 caractere",
|
||||
"tooManyAttempts": "Prea multe încercări — încearcă mai târziu"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Ești gata",
|
||||
|
||||
+50
-19
@@ -834,14 +834,18 @@
|
||||
"createOne": "Создать",
|
||||
"forgotPassword": "Забыли пароль?",
|
||||
"errorInvalidCredentials": "Неверное имя пользователя или пароль",
|
||||
"errorInvalid2fa": "Недействительный код 2FA",
|
||||
"errorInvalid2fa": "Неверный код 2FA",
|
||||
"welcomeBack": "С возвращением",
|
||||
"welcomeBackSub": "Войди, чтобы продолжить в {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Подтвердите адрес электронной почты перед входом.",
|
||||
"errorCaptcha": "Проверка captcha не пройдена. Попробуйте ещё раз.",
|
||||
"whoIsOnline": "Кто в сети",
|
||||
"newestCitizens": "Новые жители",
|
||||
"usersOnline": "{count} в сети",
|
||||
"username": "Имя пользователя",
|
||||
"password": "Пароль",
|
||||
"showPassword": "Показать",
|
||||
"hidePassword": "Скрыть"
|
||||
},
|
||||
"register": {
|
||||
"title": "Создать аккаунт",
|
||||
@@ -852,7 +856,7 @@
|
||||
"confirmPassword": "Повторите пароль",
|
||||
"usernamePlaceholder": "Имя пользователя",
|
||||
"emailPlaceholder": "Электронная почта",
|
||||
"passwordPlaceholder": "Пароль (мин. 6 символов)",
|
||||
"passwordPlaceholder": "Пароль (мин. 12 символов)",
|
||||
"confirmPasswordPlaceholder": "Повторите пароль",
|
||||
"selectOutfit": "Выберите свой наряд",
|
||||
"termsAccept": "Мне 18+ и я принимаю условия и правила {hotel}.",
|
||||
@@ -864,7 +868,7 @@
|
||||
"termsError": "Чтобы зарегистрироваться, вы должны принять условия и правила.",
|
||||
"usernameError": "Требуется имя пользователя.",
|
||||
"emailError": "Требуется действительный адрес электронной почты.",
|
||||
"passwordError": "Пароль должен содержать не менее 6 символов.",
|
||||
"passwordError": "Пароль должен содержать не менее 12 символов",
|
||||
"confirmPasswordError": "Пароли не совпадают.",
|
||||
"termsRequired": "Вы должны принять условия и правила.",
|
||||
"usernameRequired": "Требуется имя пользователя.",
|
||||
@@ -873,16 +877,41 @@
|
||||
"passwordsDontMatch": "Пароли не совпадают.",
|
||||
"alreadyHaveAccountPre": "Уже есть аккаунт?",
|
||||
"alreadyHaveAccountLink": "Войти",
|
||||
"whoIsOnline": "Кто онлайн",
|
||||
"usersOnline": "{count} онлайн",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Кто в сети",
|
||||
"usersOnline": "{count} в сети",
|
||||
"accepted": "Принято и согласен",
|
||||
"showPassword": "Показать",
|
||||
"hidePassword": "Скрыть",
|
||||
"accountDetails": "Данные аккаунта",
|
||||
"credentials": "Учётные данные и безопасность",
|
||||
"newestCitizens": "Новые жители",
|
||||
"ageVerified": "Мне 18+ и я согласен с возрастным требованием.",
|
||||
"invitedBy": "Приглашён пользователем {username}"
|
||||
"invitedBy": "Приглашён пользователем {username}",
|
||||
"strengthWeak": "Слабый",
|
||||
"strengthFair": "Средний",
|
||||
"strengthGood": "Хороший",
|
||||
"strengthStrong": "Надёжный",
|
||||
"passwordMinLength": "Пароль должен содержать не менее 12 символов",
|
||||
"passwordUpper": "Пароль должен содержать хотя бы одну заглавную букву",
|
||||
"passwordLower": "Пароль должен содержать хотя бы одну строчную букву",
|
||||
"passwordDigit": "Пароль должен содержать хотя бы одну цифру",
|
||||
"passwordSpecial": "Пароль должен содержать хотя бы один специальный символ",
|
||||
"passwordMaxLength": "Пароль слишком длинный",
|
||||
"usernameMinLength": "Имя пользователя должно содержать не менее 3 символов",
|
||||
"usernameMaxLength": "Имя пользователя может содержать не более 25 символов",
|
||||
"usernamePattern": "Имя пользователя может содержать только буквы, цифры, подчёркивание и дефис",
|
||||
"usernameReserved": "Это имя пользователя зарезервировано",
|
||||
"emailValid": "Введите корректный адрес электронной почты",
|
||||
"emailDisposable": "Временные домены электронной почты запрещены",
|
||||
"passwordsMatch": "Пароли не совпадают.",
|
||||
"captchaFailed": "Проверка captcha не пройдена. Попробуйте ещё раз.",
|
||||
"usernameTaken": "Это имя пользователя уже занято",
|
||||
"rateLimited": "Слишком много попыток регистрации. Подождите несколько минут и повторите попытку.",
|
||||
"vpnBlocked": "Регистрация через VPN/прокси-соединения запрещена.",
|
||||
"maxAccountsPerIp": "Вы достигли максимального числа аккаунтов для вашего подключения.",
|
||||
"unavailable": "Регистрация временно недоступна.",
|
||||
"createFailed": "Не удалось создать аккаунт. Повторите попытку или обратитесь к сотрудникам.",
|
||||
"invalidInput": "Проверьте выделенные поля и повторите попытку."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Сбросить пароль",
|
||||
@@ -896,9 +925,11 @@
|
||||
"reset": {
|
||||
"title": "Установить новый пароль",
|
||||
"subtitle": "Выберите надежный пароль, который вы больше не используете.",
|
||||
"passwordPlaceholder": "Новый пароль (мин. 6 символов)",
|
||||
"passwordPlaceholder": "Новый пароль (мин. 12 символов)",
|
||||
"resetPassword": "Сбросить пароль",
|
||||
"backToLogin": "Назад к входу"
|
||||
"backToLogin": "Назад к входу",
|
||||
"passwordMinLength": "Пароль должен содержать не менее 12 символов",
|
||||
"tooManyAttempts": "Слишком много попыток — повторите позже"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Всё готово",
|
||||
|
||||
+47
-16
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Neplatný kód 2FA",
|
||||
"welcomeBack": "Vitaj späť",
|
||||
"welcomeBackSub": "Prihlás sa pre pokračovanie do {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Pred prihlásením overte svoju e-mailovú adresu.",
|
||||
"errorCaptcha": "Overenie captcha zlyhalo. Skúste to znova.",
|
||||
"whoIsOnline": "Kto je online",
|
||||
"newestCitizens": "Najnovší obyvatelia",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Používateľské meno",
|
||||
"password": "heslo",
|
||||
"showPassword": "Zobraziť",
|
||||
"hidePassword": "Skryť"
|
||||
},
|
||||
"register": {
|
||||
"title": "Vytvoriť účet",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Zopakujte heslo",
|
||||
"usernamePlaceholder": "Používateľské meno",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Heslo (min. 6 znakov)",
|
||||
"passwordPlaceholder": "Heslo (min. 12 znakov)",
|
||||
"confirmPasswordPlaceholder": "Zopakujte heslo",
|
||||
"selectOutfit": "Vyberte si oblečenie",
|
||||
"termsAccept": "Mám 18+ a súhlasím so zmluvnými podmienkami a pravidlami {hotel}.",
|
||||
@@ -866,7 +870,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ň 6 znakov.",
|
||||
"passwordError": "Heslo musí mať aspoň 12 znakov",
|
||||
"confirmPasswordError": "Heslá sa nezhodujú.",
|
||||
"termsRequired": "Musíte prijať podmienky a pravidlá.",
|
||||
"usernameRequired": "Vyžaduje sa používateľské meno.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Prihlásiť sa",
|
||||
"whoIsOnline": "Kto je online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Prijaté a súhlasím",
|
||||
"showPassword": "Zobraziť",
|
||||
"hidePassword": "Skryť",
|
||||
"accountDetails": "Údaje o účte",
|
||||
"credentials": "Prihlasovacie údaje a zabezpečenie",
|
||||
"newestCitizens": "Najnovší obyvatelia",
|
||||
"ageVerified": "Mám 18+ a súhlasím s vekovým požiadavkou.",
|
||||
"invitedBy": "Pozvaný používateľom {username}"
|
||||
"invitedBy": "Pozvaný používateľom {username}",
|
||||
"strengthWeak": "Slabé",
|
||||
"strengthFair": "Priemerné",
|
||||
"strengthGood": "Dobré",
|
||||
"strengthStrong": "Silné",
|
||||
"passwordMinLength": "Heslo musí mať aspoň 12 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",
|
||||
"passwordSpecial": "Heslo musí obsahovať aspoň jeden špeciálny znak",
|
||||
"passwordMaxLength": "Heslo je príliš dlhé",
|
||||
"usernameMinLength": "Používateľské meno musí mať aspoň 3 znaky",
|
||||
"usernameMaxLength": "Používateľské meno môže mať najviac 25 znakov",
|
||||
"usernamePattern": "Používateľské meno môže obsahovať iba písmená, číslice, podčiarknutie a pomlčku",
|
||||
"usernameReserved": "Toto používateľské meno je rezervované",
|
||||
"emailValid": "Zadajte platnú e-mailovú adresu",
|
||||
"emailDisposable": "Dočasné e-mailové domény nie sú povolené",
|
||||
"passwordsMatch": "Heslá sa nezhodujú.",
|
||||
"captchaFailed": "Overenie captcha zlyhalo. Skúste to znova.",
|
||||
"usernameTaken": "Toto používateľské meno je už obsadené",
|
||||
"rateLimited": "Príliš veľa pokusov o registráciu. Počkajte niekoľko minút a skúste to znova.",
|
||||
"vpnBlocked": "Registrácia cez pripojenia VPN/proxy nie je povolená.",
|
||||
"maxAccountsPerIp": "Dosiahli ste maximálny počet účtov pre vaše pripojenie.",
|
||||
"unavailable": "Registrácia je dočasne nedostupná.",
|
||||
"createFailed": "Účet sa nepodarilo vytvoriť. Skúste to znova alebo kontaktujte personál.",
|
||||
"invalidInput": "Skontrolujte označené políčka a skúste to znova."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Obnoviť heslo",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Nastavte si nové heslo",
|
||||
"subtitle": "Zvoľte si silné heslo, ktoré inde nepoužívate.",
|
||||
"passwordPlaceholder": "Nové heslo (min. 6 znakov)",
|
||||
"passwordPlaceholder": "Nové heslo (min. 12 znakov)",
|
||||
"resetPassword": "Obnoviť heslo",
|
||||
"backToLogin": "Späť na prihlásenie"
|
||||
"backToLogin": "Späť na prihlásenie",
|
||||
"passwordMinLength": "Heslo musí mať aspoň 12 znakov",
|
||||
"tooManyAttempts": "Príliš veľa pokusov — skúste to neskôr"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Všetko je pripravené",
|
||||
|
||||
+50
-19
@@ -836,14 +836,18 @@
|
||||
"createOne": "Направите један",
|
||||
"forgotPassword": "Заборавили сте лозинку?",
|
||||
"errorInvalidCredentials": "Неважеће корисничко име или лозинка",
|
||||
"errorInvalid2fa": "Неважећи 2ФА код",
|
||||
"errorInvalid2fa": "Неисправан 2ФА код",
|
||||
"welcomeBack": "Добродошао назад",
|
||||
"welcomeBackSub": "Пријави се да наставиш ка {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Потврдите имејл пре пријаве.",
|
||||
"errorCaptcha": "Провера капче није успела. Покушајте поново.",
|
||||
"whoIsOnline": "Ко је на мрежи",
|
||||
"newestCitizens": "Најновији грађани",
|
||||
"usersOnline": "{count} на мрежи",
|
||||
"username": "Корисничко име",
|
||||
"password": "Лозинка",
|
||||
"showPassword": "Прикажи",
|
||||
"hidePassword": "Сакриј"
|
||||
},
|
||||
"register": {
|
||||
"title": "Креирајте налог",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Поновите лозинку",
|
||||
"usernamePlaceholder": "Корисничко име",
|
||||
"emailPlaceholder": "Емаил",
|
||||
"passwordPlaceholder": "Лозинка (мин 6 знакова)",
|
||||
"passwordPlaceholder": "Лозинка (мин 12 знакова)",
|
||||
"confirmPasswordPlaceholder": "Поновите лозинку",
|
||||
"selectOutfit": "Изаберите своју одећу",
|
||||
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
|
||||
@@ -866,7 +870,7 @@
|
||||
"termsError": "Морате прихватити услове и правила да бисте се регистровали.",
|
||||
"usernameError": "Корисничко име је обавезно.",
|
||||
"emailError": "Потребан је важећи имејл.",
|
||||
"passwordError": "Лозинка мора имати најмање 6 знакова.",
|
||||
"passwordError": "Лозинка мора имати најмање 12 знакова",
|
||||
"confirmPasswordError": "Лозинке се не поклапају.",
|
||||
"termsRequired": "Морате прихватити услове и правила.",
|
||||
"usernameRequired": "Корисничко име је обавезно.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Лозинке се не поклапају.",
|
||||
"alreadyHaveAccountPre": "Већ имаш налог?",
|
||||
"alreadyHaveAccountLink": "Пријави се",
|
||||
"whoIsOnline": "Ко је онлајн",
|
||||
"usersOnline": "{count} онлајн",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Ко је на мрежи",
|
||||
"usersOnline": "{count} на мрежи",
|
||||
"accepted": "Прихваћено и слажем се",
|
||||
"showPassword": "Прикажи",
|
||||
"hidePassword": "Сакриј",
|
||||
"accountDetails": "Подаци налога",
|
||||
"credentials": "Подаци за пријаву и безбедност",
|
||||
"newestCitizens": "Најновији грађани",
|
||||
"ageVerified": "Imam 18+ i prihvatam uslov starosti.",
|
||||
"invitedBy": "Pozvao {username}"
|
||||
"invitedBy": "Pozvao {username}",
|
||||
"strengthWeak": "Слаба",
|
||||
"strengthFair": "Средња",
|
||||
"strengthGood": "Добра",
|
||||
"strengthStrong": "Јака",
|
||||
"passwordMinLength": "Лозинка мора имати најмање 12 знакова",
|
||||
"passwordUpper": "Лозинка мора садржати најмање једно велико слово",
|
||||
"passwordLower": "Лозинка мора садржати најмање једно мало слово",
|
||||
"passwordDigit": "Лозинка мора садржати најмање једну цифру",
|
||||
"passwordSpecial": "Лозинка мора садржати најмање један специјални знак",
|
||||
"passwordMaxLength": "Лозинка је предуга",
|
||||
"usernameMinLength": "Корисничко име мора имати најмање 3 знака",
|
||||
"usernameMaxLength": "Корисничко име сме имати највише 25 знакова",
|
||||
"usernamePattern": "Корисничко име сме садржати само слова, бројеве, подцрту и црту",
|
||||
"usernameReserved": "Ово корисничко име је резервисано",
|
||||
"emailValid": "Унесите исправан имејл адресу",
|
||||
"emailDisposable": "Привремени домени имејла нису дозвољени",
|
||||
"passwordsMatch": "Лозинке се не поклапају.",
|
||||
"captchaFailed": "Провера капче није успела. Покушајте поново.",
|
||||
"usernameTaken": "Ово корисничко име је већ заузето",
|
||||
"rateLimited": "Превише покушаја регистрације. Сачекајте неколико минута и покушајте поново.",
|
||||
"vpnBlocked": "Регистрација преко VPN/proxy веза није дозвољена.",
|
||||
"maxAccountsPerIp": "Достигли сте највећи број налога за своју везу.",
|
||||
"unavailable": "Регистрација је привремено недоступна.",
|
||||
"createFailed": "Налог није могао да се направи. Покушајте поново или се обратите особљу.",
|
||||
"invalidInput": "Проверите означена поља и покушајте поново."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Ресетујте лозинку",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Поставите нову лозинку",
|
||||
"subtitle": "Изаберите јаку лозинку коју не користите другде.",
|
||||
"passwordPlaceholder": "Нова лозинка (мин 6 знакова)",
|
||||
"passwordPlaceholder": "Нова лозинка (мин 12 знакова)",
|
||||
"resetPassword": "Ресетујте лозинку",
|
||||
"backToLogin": "Назад на пријаву"
|
||||
"backToLogin": "Назад на пријаву",
|
||||
"passwordMinLength": "Лозинка мора имати најмање 12 знакова",
|
||||
"tooManyAttempts": "Превише покушаја — покушајте касније"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Све је спремно",
|
||||
|
||||
+47
-16
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Ogiltig 2FA-kod",
|
||||
"welcomeBack": "Välkommen tillbaka",
|
||||
"welcomeBackSub": "Logga in för att fortsätta till {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Bekräfta din e-postadress innan du loggar in.",
|
||||
"errorCaptcha": "Captcha-verifieringen misslyckades. Försök igen.",
|
||||
"whoIsOnline": "Vem är online",
|
||||
"newestCitizens": "Nyaste medborgare",
|
||||
"usersOnline": "{count} online",
|
||||
"username": "Användarnamn",
|
||||
"password": "Lösenord",
|
||||
"showPassword": "Visa",
|
||||
"hidePassword": "Dölj"
|
||||
},
|
||||
"register": {
|
||||
"title": "Skapa konto",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Upprepa lösenordet",
|
||||
"usernamePlaceholder": "Användarnamn",
|
||||
"emailPlaceholder": "E-post",
|
||||
"passwordPlaceholder": "Lösenord (minst 6 tecken)",
|
||||
"passwordPlaceholder": "Lösenord (minst 12 tecken)",
|
||||
"confirmPasswordPlaceholder": "Upprepa lösenordet",
|
||||
"selectOutfit": "Välj din outfit",
|
||||
"termsAccept": "Jag är 18+ och accepterar villkoren och reglerna för {hotel}.",
|
||||
@@ -866,7 +870,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 6 tecken.",
|
||||
"passwordError": "Lösenordet måste bestå av minst 12 tecken.",
|
||||
"confirmPasswordError": "Lösenord stämmer inte överens.",
|
||||
"termsRequired": "Du måste acceptera villkoren och reglerna.",
|
||||
"usernameRequired": "Användarnamn krävs.",
|
||||
@@ -877,14 +881,39 @@
|
||||
"alreadyHaveAccountLink": "Logga in",
|
||||
"whoIsOnline": "Vem är online",
|
||||
"usersOnline": "{count} online",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Accepterat och godkänt",
|
||||
"showPassword": "Visa",
|
||||
"hidePassword": "Dölj",
|
||||
"accountDetails": "Kontouppgifter",
|
||||
"credentials": "Inloggningsuppgifter och säkerhet",
|
||||
"newestCitizens": "Nyaste medborgare",
|
||||
"ageVerified": "Jag är 18+ och godkänner ålderskravet.",
|
||||
"invitedBy": "Inbjuden av {username}"
|
||||
"invitedBy": "Inbjuden av {username}",
|
||||
"strengthWeak": "Svag",
|
||||
"strengthFair": "Medel",
|
||||
"strengthGood": "God",
|
||||
"strengthStrong": "Stark",
|
||||
"passwordMinLength": "Lösenordet måste vara minst 12 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",
|
||||
"passwordSpecial": "Lösenordet måste innehålla minst ett specialtecken",
|
||||
"passwordMaxLength": "Lösenordet är för långt",
|
||||
"usernameMinLength": "Användarnamnet måste vara minst 3 tecken",
|
||||
"usernameMaxLength": "Användarnamnet får vara högst 25 tecken",
|
||||
"usernamePattern": "Användarnamnet får bara innehålla bokstäver, siffror, understreck och bindestreck",
|
||||
"usernameReserved": "Det användarnamnet är reserverat",
|
||||
"emailValid": "Ange en giltig e-postadress",
|
||||
"emailDisposable": "Tillfälliga e-postdomäner är inte tillåtna",
|
||||
"passwordsMatch": "Lösenord stämmer inte överens.",
|
||||
"captchaFailed": "Captcha-verifieringen misslyckades. Försök igen.",
|
||||
"usernameTaken": "Det användarnamnet är redan upptaget",
|
||||
"rateLimited": "För många registreringsförsök. Vänta några minuter och försök igen.",
|
||||
"vpnBlocked": "Registrering via VPN/proxy-anslutningar är inte tillåten.",
|
||||
"maxAccountsPerIp": "Du har nått maxantalet konton för din anslutning.",
|
||||
"unavailable": "Registreringen är tillfälligt otillgänglig.",
|
||||
"createFailed": "Kontot kunde inte skapas. Försök igen eller kontakta personalen.",
|
||||
"invalidInput": "Kontrollera de markerade fälten och försök igen."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Återställ lösenord",
|
||||
@@ -898,9 +927,11 @@
|
||||
"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 6 tecken)",
|
||||
"passwordPlaceholder": "Nytt lösenord (minst 12 tecken)",
|
||||
"resetPassword": "Återställ lösenord",
|
||||
"backToLogin": "Tillbaka till inloggning"
|
||||
"backToLogin": "Tillbaka till inloggning",
|
||||
"passwordMinLength": "Lösenordet måste vara minst 12 tecken",
|
||||
"tooManyAttempts": "För många försök — försök igen senare"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Du är redo",
|
||||
|
||||
+48
-17
@@ -839,11 +839,15 @@
|
||||
"errorInvalid2fa": "Geçersiz 2FA kodu",
|
||||
"welcomeBack": "Tekrar hoş geldin",
|
||||
"welcomeBackSub": "{hotelName} devam etmek için giriş yap",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Giriş yapmadan önce lütfen e-posta adresinizi doğrulayın.",
|
||||
"errorCaptcha": "Captcha doğrulaması başarısız oldu. Tekrar deneyin.",
|
||||
"whoIsOnline": "Kimler çevrimiçi",
|
||||
"newestCitizens": "En yeni vatandaşlar",
|
||||
"usersOnline": "{count} çevrimiçi",
|
||||
"username": "Kullanıcı adı",
|
||||
"password": "Şifre",
|
||||
"showPassword": "Göster",
|
||||
"hidePassword": "Gizle"
|
||||
},
|
||||
"register": {
|
||||
"title": "Hesap oluştur",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Şifreyi tekrarla",
|
||||
"usernamePlaceholder": "Kullanıcı adı",
|
||||
"emailPlaceholder": "E-posta",
|
||||
"passwordPlaceholder": "Şifre (en az 6 karakter)",
|
||||
"passwordPlaceholder": "Şifre (en az 12 karakter)",
|
||||
"confirmPasswordPlaceholder": "Şifreyi tekrarla",
|
||||
"selectOutfit": "Kıyafetinizi seçin",
|
||||
"termsAccept": "18 yaşındayım ve {hotel} şartlarını ve kurallarını kabul ediyorum.",
|
||||
@@ -866,7 +870,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 6 karakter olmalıdır.",
|
||||
"passwordError": "Şifre en az 12 karakter olmalıdır.",
|
||||
"confirmPasswordError": "Şifreler eşleşmiyor.",
|
||||
"termsRequired": "Şartları ve kuralları kabul etmelisiniz.",
|
||||
"usernameRequired": "Kullanıcı adı gerekli.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Şifreler eşleşmiyor.",
|
||||
"alreadyHaveAccountPre": "Zaten hesabın var mı?",
|
||||
"alreadyHaveAccountLink": "Giriş yap",
|
||||
"whoIsOnline": "Kim çevrimiçi",
|
||||
"whoIsOnline": "Kimler çevrimiçi",
|
||||
"usersOnline": "{count} çevrimiçi",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"accepted": "Kabul edildi ve onaylıyorum",
|
||||
"showPassword": "Göster",
|
||||
"hidePassword": "Gizle",
|
||||
"accountDetails": "Hesap bilgileri",
|
||||
"credentials": "Kimlik bilgileri ve güvenlik",
|
||||
"newestCitizens": "En yeni vatandaşlar",
|
||||
"ageVerified": "18+ yaşındayım ve yaş gereksinimini kabul ediyorum.",
|
||||
"invitedBy": "{username} tarafından davet edildi"
|
||||
"invitedBy": "{username} tarafından davet edildi",
|
||||
"strengthWeak": "Zayıf",
|
||||
"strengthFair": "Orta",
|
||||
"strengthGood": "İyi",
|
||||
"strengthStrong": "Güçlü",
|
||||
"passwordMinLength": "Şifre en az 12 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",
|
||||
"passwordSpecial": "Şifre en az bir özel karakter içermelidir",
|
||||
"passwordMaxLength": "Şifre çok uzun",
|
||||
"usernameMinLength": "Kullanıcı adı en az 3 karakter olmalıdır",
|
||||
"usernameMaxLength": "Kullanıcı adı en fazla 25 karakter olabilir",
|
||||
"usernamePattern": "Kullanıcı adı yalnızca harf, rakam, alt çizgi ve tire içerebilir",
|
||||
"usernameReserved": "Bu kullanıcı adı ayrılmış",
|
||||
"emailValid": "Geçerli bir e-posta adresi girin",
|
||||
"emailDisposable": "Geçici e-posta alan adlarına izin verilmez",
|
||||
"passwordsMatch": "Şifreler eşleşmiyor.",
|
||||
"captchaFailed": "Captcha doğrulaması başarısız oldu. Tekrar deneyin.",
|
||||
"usernameTaken": "Bu kullanıcı adı zaten kullanılıyor",
|
||||
"rateLimited": "Çok fazla kayıt denemesi yaptınız. Birkaç dakika bekleyip tekrar deneyin.",
|
||||
"vpnBlocked": "VPN/proxy bağlantıları üzerinden kayıt yapılamaz.",
|
||||
"maxAccountsPerIp": "Bağlantınız için azami hesap sayısına ulaştınız.",
|
||||
"unavailable": "Kayıt geçici olarak kullanılamıyor.",
|
||||
"createFailed": "Hesap oluşturulamadı. Tekrar deneyin veya personelle iletişime geçin.",
|
||||
"invalidInput": "Lütfen işaretli alanları kontrol edip tekrar deneyin."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Şifreyi sıfırla",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Yeni bir şifre belirleyin",
|
||||
"subtitle": "Başka yerde kullanmadığınız güçlü bir şifre seçin.",
|
||||
"passwordPlaceholder": "Yeni şifre (en az 6 karakter)",
|
||||
"passwordPlaceholder": "Yeni şifre (en az 12 karakter)",
|
||||
"resetPassword": "Şifreyi sıfırla",
|
||||
"backToLogin": "Girişe geri dön"
|
||||
"backToLogin": "Girişe geri dön",
|
||||
"passwordMinLength": "Şifre en az 12 karakter olmalıdır",
|
||||
"tooManyAttempts": "Çok fazla deneme — daha sonra tekrar deneyin"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Artık hazırsınız",
|
||||
|
||||
+50
-19
@@ -836,14 +836,18 @@
|
||||
"createOne": "Створіть один",
|
||||
"forgotPassword": "Забули пароль?",
|
||||
"errorInvalidCredentials": "Недійсне ім'я користувача або пароль",
|
||||
"errorInvalid2fa": "Недійсний код 2FA",
|
||||
"errorInvalid2fa": "Невірний код 2FA",
|
||||
"welcomeBack": "З поверненням",
|
||||
"welcomeBackSub": "Увійди, щоб продовжити в {hotelName}",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again.",
|
||||
"whoIsOnline": "Who's online",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"usersOnline": "{count} online"
|
||||
"errorUnverified": "Підтвердьте свою електронну адресу перед входом.",
|
||||
"errorCaptcha": "Перевірка captcha не вдалася. Спробуйте ще раз.",
|
||||
"whoIsOnline": "Хто в мережі",
|
||||
"newestCitizens": "Нові мешканці",
|
||||
"usersOnline": "{count} у мережі",
|
||||
"username": "Ім'я користувача",
|
||||
"password": "Пароль",
|
||||
"showPassword": "Показати",
|
||||
"hidePassword": "Сховати"
|
||||
},
|
||||
"register": {
|
||||
"title": "Створити акаунт",
|
||||
@@ -854,7 +858,7 @@
|
||||
"confirmPassword": "Повторіть пароль",
|
||||
"usernamePlaceholder": "Ім'я користувача",
|
||||
"emailPlaceholder": "Електронна пошта",
|
||||
"passwordPlaceholder": "Пароль (мінімум 6 символів)",
|
||||
"passwordPlaceholder": "Пароль (мінімум 12 символів)",
|
||||
"confirmPasswordPlaceholder": "Повторіть пароль",
|
||||
"selectOutfit": "Виберіть свій наряд",
|
||||
"termsAccept": "Мені 18+ і я приймаю умови та правила {hotel}.",
|
||||
@@ -866,7 +870,7 @@
|
||||
"termsError": "Ви повинні прийняти умови та правила, щоб зареєструватися.",
|
||||
"usernameError": "Потрібно ввести ім'я користувача.",
|
||||
"emailError": "Потрібна дійсна електронна адреса.",
|
||||
"passwordError": "Пароль має бути не менше 6 символів.",
|
||||
"passwordError": "Пароль має містити щонайменше 12 символів",
|
||||
"confirmPasswordError": "Паролі не збігаються.",
|
||||
"termsRequired": "Ви повинні прийняти умови та правила.",
|
||||
"usernameRequired": "Потрібно ввести ім'я користувача.",
|
||||
@@ -875,16 +879,41 @@
|
||||
"passwordsDontMatch": "Паролі не збігаються.",
|
||||
"alreadyHaveAccountPre": "Вже маєш акаунт?",
|
||||
"alreadyHaveAccountLink": "Увійти",
|
||||
"whoIsOnline": "Хто онлайн",
|
||||
"usersOnline": "{count} онлайн",
|
||||
"accepted": "Accepted & agreed",
|
||||
"showPassword": "Show",
|
||||
"hidePassword": "Hide",
|
||||
"accountDetails": "Account details",
|
||||
"credentials": "Credentials & security",
|
||||
"newestCitizens": "Newest citizens",
|
||||
"whoIsOnline": "Хто в мережі",
|
||||
"usersOnline": "{count} у мережі",
|
||||
"accepted": "Прийнято та погоджуюсь",
|
||||
"showPassword": "Показати",
|
||||
"hidePassword": "Сховати",
|
||||
"accountDetails": "Дані облікового запису",
|
||||
"credentials": "Облікові дані та безпека",
|
||||
"newestCitizens": "Нові мешканці",
|
||||
"ageVerified": "Мені 18+ і я погоджуюся з віковими вимогами.",
|
||||
"invitedBy": "Запросив користувач {username}"
|
||||
"invitedBy": "Запросив користувач {username}",
|
||||
"strengthWeak": "Слабкий",
|
||||
"strengthFair": "Середній",
|
||||
"strengthGood": "Добрий",
|
||||
"strengthStrong": "Надійний",
|
||||
"passwordMinLength": "Пароль має містити щонайменше 12 символів",
|
||||
"passwordUpper": "Пароль має містити хоча б одну велику літеру",
|
||||
"passwordLower": "Пароль має містити хоча б одну малу літеру",
|
||||
"passwordDigit": "Пароль має містити хоча б одну цифру",
|
||||
"passwordSpecial": "Пароль має містити хоча б один спеціальний символ",
|
||||
"passwordMaxLength": "Пароль задовго довгий",
|
||||
"usernameMinLength": "Ім'я користувача має містити щонайменше 3 символи",
|
||||
"usernameMaxLength": "Ім'я користувача може містити щонайбільше 25 символів",
|
||||
"usernamePattern": "Ім'я користувача може містити лише літери, цифри, підкреслення та дефіс",
|
||||
"usernameReserved": "Це ім'я користувача зарезервовано",
|
||||
"emailValid": "Введіть коректну адресу електронної пошти",
|
||||
"emailDisposable": "Тимчасові домени електронної пошти заборонені",
|
||||
"passwordsMatch": "Паролі не збігаються.",
|
||||
"captchaFailed": "Перевірка captcha не вдалася. Спробуйте ще раз.",
|
||||
"usernameTaken": "Це ім'я користувача вже зайняте",
|
||||
"rateLimited": "Забагато спроб реєстрації. Зачекайте кілька хвилин і спробуйте ще раз.",
|
||||
"vpnBlocked": "Реєстрація через VPN/проксі-з'єднання заборонена.",
|
||||
"maxAccountsPerIp": "Ви досягли максимальної кількості облікових записів для вашого з'єднання.",
|
||||
"unavailable": "Реєстрація тимчасово недоступна.",
|
||||
"createFailed": "Не вдалося створити обліковий запис. Спробуйте ще раз або зверніться до персоналу.",
|
||||
"invalidInput": "Перевірте виділені поля та спробуйте ще раз."
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Скинути пароль",
|
||||
@@ -898,9 +927,11 @@
|
||||
"reset": {
|
||||
"title": "Встановіть новий пароль",
|
||||
"subtitle": "Виберіть надійний пароль, який більше не використовується.",
|
||||
"passwordPlaceholder": "Новий пароль (мінімум 6 символів)",
|
||||
"passwordPlaceholder": "Новий пароль (мінімум 12 символів)",
|
||||
"resetPassword": "Скинути пароль",
|
||||
"backToLogin": "Назад до входу"
|
||||
"backToLogin": "Назад до входу",
|
||||
"passwordMinLength": "Пароль має містити щонайменше 12 символів",
|
||||
"tooManyAttempts": "Забагато спроб — спробуйте пізніше"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "Ви готові",
|
||||
|
||||
Reference in new issue
Block a user