Remove Discord and Google OAuth verification from CMS
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m58s

- Remove Discord + Google OAuth providers from NextAuth config
- Remove social login buttons (Discord/Google) from login form
- Delete link-discord.ts action and discord-verify-form.tsx component
- Simplify verify page to email-only verification flow
- Remove connections settings page and its link from settings
- Clean env.ts, .env, .env.example of Discord/Google client vars
- Remove discordUrl social icon from register, login, and homepage
- Clean translation files: remove continueWithDiscord, continueWithGoogle, connections keys
This commit is contained in:
openhands committed 2026-07-24 11:49:16 +02:00
1 parent f7f6e09174
commit 7f8d083763
36 files changed
+32 -992

No files matched your search

-6
View File
@@ -47,12 +47,6 @@ RCON_PORT=3001
# Falls back to NEXT_PUBLIC_APP_URL/imaging when only the app URL is set.
# NEXT_PUBLIC_IMAGER_URL=https://epicnabbo.nl/imaging
# Optional OAuth (enabled when both id+secret are set)
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# Preferred email provider (HTTP API). Used before SMTP when set.
RESEND_API_KEY=
-66
View File
@@ -1,66 +0,0 @@
"use server";
import { auth } from "@/lib/auth";
import { logger } from "@/lib/logger";
import { prisma } from "@/lib/prisma";
export async function linkDiscordId(discordId: string): Promise<string | null> {
const session = await auth();
if (!session?.user?.id) return "Not logged in";
const userId = Number(session.user.id);
if (!discordId || !/^\d{17,20}$/.test(discordId.trim())) {
return "Invalid Discord ID format";
}
const discordIdClean = discordId.trim();
try {
const existing = await prisma.socialAccounts.findUnique({
where: {
provider_providerId: {
provider: "discord",
providerId: discordIdClean,
},
},
select: { userId: true },
});
if (existing && Number(existing.userId) !== userId) {
return "This Discord ID is already linked to another account";
}
} catch {
return "Failed to check Discord ID";
}
try {
await prisma.socialAccounts.upsert({
where: {
provider_providerId: {
provider: "discord",
providerId: discordIdClean,
},
},
create: {
userId: BigInt(userId),
provider: "discord",
providerId: discordIdClean,
createdAt: new Date(),
updatedAt: new Date(),
},
update: { userId: BigInt(userId), updatedAt: new Date() },
});
await prisma.user.update({
where: { id: userId },
data: { mailVerified: "1" },
});
return null;
} catch (e) {
logger.error("Failed to link Discord account", {
module: "link-discord",
error: (e as Error).message,
});
return "Failed to link Discord account";
}
}
-6
View File
@@ -129,11 +129,5 @@ export async function register(
return "Could not create the account (is the username unique?)";
}
if (hasEmail) {
redirect("/login?registered=1");
} else {
const { signIn } = await import("@/lib/auth");
await signIn("credentials", { username, password, redirect: false });
redirect("/verify?method=discord");
}
}
+1 -5
View File
@@ -73,11 +73,7 @@ export default async function LoginPage() {
<div className="flex items-center gap-1.5 rounded-lg px-2 py-1" style={{
background: "color-mix(in srgb, var(--color-text-muted) 4%, transparent)",
}}>
{discordUrl && (
<Link href={discordUrl} target="_blank" rel="noopener noreferrer" className="p-1.5 rounded-lg transition-all duration-200 hover:scale-110 hover:brightness-125" style={{ background: "color-mix(in srgb, #5865F2 12%, transparent)" }}>
<Image src="/assets/images/icons/discord.png" alt="Discord" width={18} height={18} unoptimized />
</Link>
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
+1 -5
View File
@@ -99,11 +99,7 @@ export default async function Home() {
<div className="flex items-center gap-1.5 rounded-lg px-2 py-1" style={{
background: "color-mix(in srgb, var(--color-text-muted) 4%, transparent)",
}}>
{discordUrl && (
<Link href={discordUrl} target="_blank" rel="noopener noreferrer" className="p-1.5 rounded-lg transition-all duration-200 hover:scale-110 hover:brightness-125" style={{ background: "color-mix(in srgb, #5865F2 12%, transparent)" }}>
<Image src="/assets/images/icons/discord.png" alt="Discord" width={18} height={18} unoptimized />
</Link>
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
+1 -5
View File
@@ -73,11 +73,7 @@ export default async function RegisterPage() {
<div className="flex items-center gap-1.5 rounded-lg px-2 py-1" style={{
background: "color-mix(in srgb, var(--color-text-muted) 4%, transparent)",
}}>
{discordUrl && (
<Link href={discordUrl} target="_blank" rel="noopener noreferrer" className="p-1.5 rounded-lg transition-all duration-200 hover:scale-110 hover:brightness-125" style={{ background: "color-mix(in srgb, #5865F2 12%, transparent)" }}>
<Image src="/assets/images/icons/discord.png" alt="Discord" width={18} height={18} unoptimized />
</Link>
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
@@ -1,137 +0,0 @@
import Link from "next/link";
import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { ContentCard } from "@/components/public/ui";
import { env } from "@/env";
import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
export const dynamic = "force-dynamic";
// Social providers we can link. `available` reflects whether the OAuth app
// credentials are configured (mirrors src/lib/auth.ts, which only registers a
// provider when both its id + secret env vars are set). When unavailable the
// connect button is disabled so we don't bounce the user to a 404 sign-in URL.
const PROVIDERS = [
{
key: "discord",
label: "Discord",
icon: "🎮",
available: Boolean(env.DISCORD_CLIENT_ID && env.DISCORD_CLIENT_SECRET),
},
{
key: "google",
label: "Google",
icon: "🔵",
available: Boolean(env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET),
},
] as const;
export default async function ConnectionsPage() {
const t = await getTranslations("pages.connections");
const session = await auth();
if (!session?.user?.id) redirect("/login");
const id = Number(session.user.id);
// social_accounts is a CMS-only table that may not exist in every install
// (it has no bundled migration). Fall back to "nothing linked" on any error so
// the page still renders the generic connect buttons.
let linked: Set<string> = new Set();
let lookupFailed = false;
try {
const rows = await prisma.socialAccounts.findMany({
where: { userId: BigInt(id) },
select: { provider: true },
});
linked = new Set(rows.map((r) => r.provider.toLowerCase()));
} catch {
lookupFailed = true;
}
// After connecting/erroring, NextAuth bounces back here so we land on a known page.
const callbackUrl = "/settings/connections";
return (
<main
style={{
display: "grid",
gap: "1.5rem",
maxWidth: 620,
margin: "0 auto",
}}
>
<p className="muted" style={{ margin: 0 }}>
<Link href="/settings">{t("backToSettings")}</Link>
</p>
<ContentCard icon="🔗" title={t("title")} subtitle={t("subtitle")}>
<p className="muted" style={{ marginTop: 0 }}>
{t("matchByEmail")} <strong>{session.user.name}</strong>.
</p>
{lookupFailed ? (
<p className="muted" style={{ marginBottom: 0 }}>
{t("lookupFailed")}
</p>
) : null}
</ContentCard>
<div className="card-grid sm-2">
{PROVIDERS.map((p) => {
const isLinked = linked.has(p.key);
return (
<ContentCard
key={p.key}
icon={p.icon}
title={p.label}
subtitle={
!p.available
? t("statusUnavailable")
: isLinked
? t("statusConnected")
: t("statusNotConnected")
}
>
{isLinked ? (
<span
className="btn btn-outline"
style={{ cursor: "default", pointerEvents: "none" }}
aria-disabled="true"
>
{t("connected")}
</span>
) : p.available ? (
// Plain link into NextAuth's built-in sign-in handler. Re-using
// the same OAuth flow as /login binds the provider to the
// matching hotel account (see auth.ts signIn callback).
<a
className="btn btn-primary"
href={`/api/auth/signin/${p.key}?callbackUrl=${encodeURIComponent(callbackUrl)}`}
>
{t("connectProvider", { provider: p.label })}
</a>
) : (
<span
className="btn"
style={{
cursor: "not-allowed",
opacity: 0.55,
pointerEvents: "none",
}}
aria-disabled="true"
>
{t("unavailable")}
</span>
)}
</ContentCard>
);
})}
</div>
<p className="muted" style={{ margin: 0 }}>
{t("footerNote")}
</p>
</main>
);
}
-12
View File
@@ -127,18 +127,6 @@ export default async function SettingsPage() {
</Link>
</ContentCard>
<ContentCard
icon="🔗"
title={t("connectionsTitle")}
subtitle={t("connectionsSubtitle")}
>
<p className="muted" style={{ marginTop: 0 }}>
{t("connectionsDescription")}
</p>
<Link href="/settings/connections" className="btn btn-outline">
{t("manageConnections")}
</Link>
</ContentCard>
</div>
</main>
);
+3 -64
View File
@@ -1,14 +1,12 @@
import Link from "next/link";
import { getTranslations } from "next-intl/server";
import { isValidVerificationToken } from "@/actions/email-verify";
import { DiscordVerifyForm } from "@/components/auth/discord-verify-form";
import { ContentCard, EmptyState } from "@/components/public/ui";
import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
export const dynamic = "force-dynamic";
type Status = "verified" | "already" | "invalid" | "unavailable" | "discord";
type Status = "verified" | "already" | "invalid" | "unavailable";
export default async function VerifyPage({
searchParams,
@@ -16,36 +14,15 @@ export default async function VerifyPage({
searchParams: Promise<{
token?: string;
email?: string;
method?: string;
linked?: string;
}>;
}) {
const t = await getTranslations("pages.verify");
const {
token = "",
email = "",
method = "",
linked = "",
} = await searchParams;
const { token = "", email = "" } = await searchParams;
const normalisedEmail = email.trim().toLowerCase();
let status: Status = "invalid";
let discordAlreadyLinked = false;
if (method === "discord" || linked === "1") {
status = "discord";
const session = await auth();
if (session?.user?.id) {
const userId = Number(session.user.id);
try {
const linkedRow = await prisma.socialAccounts.findFirst({
where: { userId: BigInt(userId), provider: "discord" },
select: { id: true },
});
discordAlreadyLinked = !!linkedRow;
} catch {}
}
} else if (normalisedEmail && token) {
if (normalisedEmail && token) {
const ok = await isValidVerificationToken(normalisedEmail, token);
if (ok) {
try {
@@ -128,44 +105,6 @@ export default async function VerifyPage({
</div>
</ContentCard>
)}
{status === "discord" && (
<ContentCard
icon="🎮"
title="Verifieer via Discord"
subtitle="Koppel je Discord account"
>
{linked === "1" && (
<div
className="rounded-md p-4 text-center mb-4"
style={{ backgroundColor: "#14532d", color: "white" }}
>
<p className="text-lg font-bold mb-1">Gelinkt!</p>
<p className="text-sm opacity-90">
Je Discord account is gekoppeld. Je kunt nu verder.
</p>
</div>
)}
{discordAlreadyLinked ? (
<div
className="rounded-md p-4 text-center"
style={{ backgroundColor: "#14532d", color: "white" }}
>
<p className="text-lg font-bold mb-1">Al geverifieerd!</p>
<p className="text-sm opacity-90">
Je Discord account is al gekoppeld aan dit account.
</p>
</div>
) : (
<DiscordVerifyForm />
)}
<div style={{ textAlign: "center", marginTop: "1rem" }}>
<Link href="/" className="btn btn-primary">
Naar home
</Link>
</div>
</ContentCard>
)}
</main>
);
}
@@ -1,94 +0,0 @@
"use client";
import { useState } from "react";
import { linkDiscordId } from "@/actions/link-discord";
export function DiscordVerifyForm() {
const [discordId, setDiscordId] = useState("");
const [error, setError] = useState<string | null>(null);
const [isPending, setIsPending] = useState(false);
const [success, setSuccess] = useState(false);
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
setError(null);
setSuccess(false);
setIsPending(true);
try {
const result = await linkDiscordId(discordId);
if (result === null) {
setSuccess(true);
} else {
setError(result);
}
} catch {
setError("Er is een fout opgetreden");
} finally {
setIsPending(false);
}
}
if (success) {
return (
<div
className="rounded-md p-4 text-center"
style={{ backgroundColor: "#14532d", color: "white" }}
>
<p className="text-lg font-bold mb-1">Geverifieerd!</p>
<p className="text-sm opacity-90">
Je Discord account is gekoppeld en je account is geverifieerd.
</p>
</div>
);
}
return (
<form onSubmit={handleSubmit} className="flex flex-col gap-3">
{error && (
<div
className="p-3 rounded-md text-sm"
style={{ backgroundColor: "#ef4444", color: "white" }}
>
{error}
</div>
)}
<p
className="text-sm"
style={{
color: "var(--color-text-muted-readable, var(--color-text-muted))",
}}
>
Open Discord, ga naar{" "}
<strong>Instellingen → Geavanceerd → Ontwikkelaarsmodus</strong> (aan).
Klik met rechts op je eigen naam en kies <strong>ID kopiëren</strong>.
Plak dat hier:
</p>
<div className="flex gap-2">
<input
type="text"
placeholder="Plak je Discord ID hier"
value={discordId}
onChange={(e) => setDiscordId(e.target.value)}
className="flex-1 focus:ring-0 border-4 rounded text-sm px-3 py-2"
style={{
backgroundColor: "var(--color-background)",
color: "var(--color-text-readable, var(--color-text))",
borderColor:
"color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
}}
required
/>
<button
type="submit"
disabled={isPending}
className="rounded px-4 py-2 text-white font-semibold whitespace-nowrap"
style={{ backgroundColor: "#5865F2", border: "2px solid #7983F5" }}
>
{isPending ? "Bezig..." : "Verifiëren"}
</button>
</div>
</form>
);
}
+1 -46
View File
@@ -167,52 +167,7 @@ export function LoginForm({
</button>
</form>
{!needs2fa && (
<>
<div className="flex items-center gap-3 my-5">
<span className="flex-1 h-px" style={{ background: "color-mix(in srgb, var(--color-text-muted) 15%, transparent)" }} />
<span className="text-xs font-bold uppercase tracking-widest" style={{ color: "var(--color-text-muted)" }}>
{t("or")}
</span>
<span className="flex-1 h-px" style={{ background: "color-mix(in srgb, var(--color-text-muted) 15%, transparent)" }} />
</div>
<div className="flex flex-col gap-3">
<button
type="button"
onClick={() => signIn("discord", { callbackUrl: "/" })}
className="w-full rounded-xl font-bold text-sm py-3 transition-all hover:scale-[1.02] active:scale-95 flex items-center justify-center gap-2.5"
style={{
background: "#5865F2",
color: "#ffffff",
border: "none",
}}
>
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/>
</svg>
{t("continueWithDiscord")}
</button>
<button
type="button"
onClick={() => signIn("google", { callbackUrl: "/" })}
className="w-full rounded-xl font-bold text-sm py-3 transition-all hover:scale-[1.02] active:scale-95 flex items-center justify-center gap-2.5 border-2"
style={{
borderColor: "color-mix(in srgb, var(--color-text-muted) 20%, transparent)",
color: "var(--color-text-readable)",
background: "transparent",
}}
>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
<path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z" fill="#4285F4"/>
<path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/>
<path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"/>
<path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"/>
</svg>
{t("continueWithGoogle")}
</button>
</div>
</>
)}
<p
className="text-xs text-center mt-6"
+1 -6
View File
@@ -166,12 +166,7 @@ export function RegisterForm({
borderColor: "color-mix(in srgb, var(--color-text-muted) 25%, transparent)",
}}
/>
<p
className="text-xs mt-1"
style={{ color: "var(--color-text-muted)" }}
>
Geen e-mail? Je kunt later via Discord verifiëren.
</p>
</div>
</div>
+1 -5
View File
@@ -39,11 +39,7 @@ const schema = z.object({
AUTH_SECRET: z.string().min(1).optional(),
// Laravel APP_KEY (base64:...) — needed to read existing 2FA secrets.
APP_KEY: z.string().optional(),
// Optional OAuth providers (enabled only when both id+secret are set).
DISCORD_CLIENT_ID: z.string().optional(),
DISCORD_CLIENT_SECRET: z.string().optional(),
GOOGLE_CLIENT_ID: z.string().optional(),
GOOGLE_CLIENT_SECRET: z.string().optional(),
// Mirrors Laravel config('habbo.site.convert_passwords') — enables md5->argon2id.
CONVERT_PASSWORDS: z
.string()
+1 -133
View File
@@ -1,7 +1,5 @@
import NextAuth from "next-auth";
import Credentials from "next-auth/providers/credentials";
import Discord from "next-auth/providers/discord";
import Google from "next-auth/providers/google";
import { env } from "@/env";
import { LaravelEncrypter } from "@/lib/auth/laravel-encrypter";
import { getCachedJwtVersion } from "@/lib/auth/jwt-version-cache";
@@ -144,67 +142,8 @@ export const { handlers, signIn, signOut, auth } = NextAuth({
};
},
}),
// OAuth providers — enabled only when both id + secret are configured.
...(env.DISCORD_CLIENT_ID && env.DISCORD_CLIENT_SECRET
? [
Discord({
clientId: env.DISCORD_CLIENT_ID,
clientSecret: env.DISCORD_CLIENT_SECRET,
}),
]
: []),
...(env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET
? [
Google({
clientId: env.GOOGLE_CLIENT_ID,
clientSecret: env.GOOGLE_CLIENT_SECRET,
}),
]
: []),
],
callbacks: {
async signIn({ user, account }) {
if (account?.provider === "credentials") return true;
const requireLink = await siteSettings.getBool(
"oauth_require_link",
false,
);
// Always allow explicitly linked accounts.
if (account?.provider === "discord" && account.providerAccountId) {
try {
const linked = await prisma.socialAccounts.findUnique({
where: {
provider_providerId: {
provider: "discord",
providerId: account.providerAccountId,
},
},
select: { userId: true },
});
if (linked) return true;
} catch {
return "/login?error=Unavailable";
}
}
// Email-based binding: only allowed when oauth_require_link is disabled
// AND the matched account does NOT have 2FA enabled (account takeover guard).
if (!requireLink && user.email) {
try {
const dbUser = await prisma.user.findFirst({
where: { mail: user.email, twoFactorConfirmedAt: null },
select: { id: true },
});
if (dbUser) return true;
} catch {
return "/login?error=Unavailable";
}
}
return "/login?error=NoAccount";
},
async jwt({ token, user, account }) {
if (user) {
token.jwtVersion =
@@ -216,81 +155,10 @@ export const { handlers, signIn, signOut, auth } = NextAuth({
if (user && account?.provider === "credentials") {
token.rank = (user as { rank?: number }).rank;
token.sub = String((user as { id?: string }).id);
return token;
}
// OAuth account linking only when establishing a session — not on
// every subsequent request (avoids siteSettings + DB on each hit).
if (user || account) {
const requireLink = await siteSettings.getBool(
"oauth_require_link",
false,
);
// Try Discord ID via SocialAccounts (always allowed, even when requireLink is true).
if (
!token.sub &&
account?.provider === "discord" &&
account.providerAccountId
) {
try {
const linked = await prisma.socialAccounts.findUnique({
where: {
provider_providerId: {
provider: "discord",
providerId: account.providerAccountId,
},
},
});
if (linked) {
const dbUser = await prisma.user.findUnique({
where: { id: Number(linked.userId) },
select: {
id: true,
rank: true,
username: true,
websiteJwtVersion: true,
},
});
if (dbUser) {
token.sub = String(dbUser.id);
token.rank = dbUser.rank;
token.name = dbUser.username;
token.jwtVersion = dbUser.websiteJwtVersion;
token.jwtCheckedAt = Date.now();
return token;
}
}
} catch {
// leave token as-is on lookup failure
}
}
// Email-based binding: only when requireLink is off AND account has no 2FA.
if (!requireLink && user?.email && !token.sub) {
try {
const dbUser = await prisma.user.findFirst({
where: { mail: user.email, twoFactorConfirmedAt: null },
select: {
id: true,
rank: true,
username: true,
websiteJwtVersion: true,
},
});
if (dbUser) {
token.sub = String(dbUser.id);
token.rank = dbUser.rank;
token.name = dbUser.username;
token.jwtVersion = dbUser.websiteJwtVersion;
token.jwtCheckedAt = Date.now();
}
} catch {
// leave token as-is on lookup failure
}
}
}
// Re-check jwt version at most once per minute (memory/Redis cached).
if (token.sub && !token.invalid) {
const lastCheck =
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "сигурност",
"securitySubtitle": "Двуфакторна автентификация",
"securityDescription": "Добавете втори слой на защита към вашия акаунт.",
"twoFactorLink": "Двуфакторна автентификация",
"connectionsTitle": "Свързани акаунти",
"connectionsSubtitle": "Влезте с едно кликване",
"connectionsDescription": "Свържете Discord или Google с хотелския си акаунт.",
"manageConnections": "Управление на връзките"
},
"twoFactorLink": "Двуфакторна автентификация"},
"settings2fa": {
"backToSettings": "← Настройки",
"title": "Двуфакторна автентификация",
@@ -735,20 +730,10 @@
"enableIntro": "Добавете втори слой на сигурност с приложение за удостоверяване.",
"enable": "Активирайте 2FA"
},
"connections": {
"backToSettings": "← Настройки",
"title": "Свързани акаунти",
"subtitle": "Свържете социален акаунт, за да можете да влезете с едно щракване",
"matchByEmail": "Свързваме го с вашия хотелски акаунт по имейл, така че използвайте посочения адрес:",
"lookupFailed": "В момента не можахме да прочетем свързаните ви акаунти. Все още можете да се свържете по-долу — състоянието ви ще се покаже, след като стане налично.",
"statusUnavailable": "Не се предлага в този хотел.",
"statusConnected": "Свързан — влезте с този акаунт.",
"statusNotConnected": "Не е свързан.",
"connected": "Свързан",
"connectProvider": "Свържете {provider}",
"unavailable": "Недостъпен",
"footerNote": "Свързването ви отвежда до доставчика за упълномощаване и след това обратно тук. Ако имейлът на вашия социален акаунт не съвпада с хотелски акаунт, ще бъдете върнати на екрана за вход с бележка."
},
"login": {
"title": "влезте",
"subtitle": "Добре дошли отново — влезте, за да влезете в хотела.",
@@ -760,8 +745,6 @@
"verify": "Проверете",
"signIn": "влезте",
"or": "или",
"continueWithDiscord": "Продължете с Discord",
"continueWithGoogle": "Продължете с Google",
"noAccount": "Нямате акаунт?",
"createOne": "Създайте такъв",
"forgotPassword": "Забравена парола?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Bezpečnost",
"securitySubtitle": "Dvoufaktorová autentizace",
"securityDescription": "Přidejte do svého účtu druhou vrstvu ochrany.",
"twoFactorLink": "Dvoufaktorová autentizace",
"connectionsTitle": "Propojené účty",
"connectionsSubtitle": "Přihlaste se jedním kliknutím",
"connectionsDescription": "Propojte Discord nebo Google se svým hotelovým účtem.",
"manageConnections": "Správa připojení"
},
"twoFactorLink": "Dvoufaktorová autentizace"},
"settings2fa": {
"backToSettings": "← Nastavení",
"title": "Dvoufaktorová autentizace",
@@ -735,20 +730,10 @@
"enableIntro": "Přidejte druhou vrstvu zabezpečení pomocí ověřovací aplikace.",
"enable": "Povolit 2FA"
},
"connections": {
"backToSettings": "← Nastavení",
"title": "Propojené účty",
"subtitle": "Propojte sociální účet, abyste se mohli přihlásit jedním kliknutím",
"matchByEmail": "Přiřadíme jej k vašemu hotelovému účtu prostřednictvím e-mailu, použijte tedy uvedenou adresu:",
"lookupFailed": "Vaše propojené účty jsme teď nemohli přečíst. Stále se můžete připojit níže – váš stav se zobrazí, jakmile bude k dispozici.",
"statusUnavailable": "V tomto hotelu není k dispozici.",
"statusConnected": "Připojeno – přihlaste se pomocí tohoto účtu.",
"statusNotConnected": "Nepřipojeno.",
"connected": "Připojeno",
"connectProvider": "Připojit {provider}",
"unavailable": "Není k dispozici",
"footerNote": "Po připojení se dostanete k poskytovateli k autorizaci a poté zpět sem. Pokud e-mail vašeho účtu na sociální síti neodpovídá účtu hotelu, vrátíte se na přihlašovací obrazovku s poznámkou."
},
"login": {
"title": "Přihlaste se",
"subtitle": "Vítejte zpět – přihlaste se pro vstup do hotelu.",
@@ -760,8 +745,6 @@
"verify": "Ověřte",
"signIn": "Přihlaste se",
"or": "nebo",
"continueWithDiscord": "Pokračujte s Discordem",
"continueWithGoogle": "Pokračujte s Googlem",
"noAccount": "Žádný účet?",
"createOne": "Vytvořte jeden",
"forgotPassword": "Zapomněli jste heslo?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Sikkerhed",
"securitySubtitle": "To-faktor autentificering",
"securityDescription": "Tilføj et ekstra beskyttelseslag til din konto.",
"twoFactorLink": "To-faktor autentificering",
"connectionsTitle": "Tilknyttede konti",
"connectionsSubtitle": "Log ind med et enkelt klik",
"connectionsDescription": "Link Discord eller Google til din hotelkonto.",
"manageConnections": "Administrer forbindelser"
},
"twoFactorLink": "To-faktor autentificering"},
"settings2fa": {
"backToSettings": "← Indstillinger",
"title": "To-faktor autentificering",
@@ -735,20 +730,10 @@
"enableIntro": "Tilføj et ekstra sikkerhedslag med en godkendelsesapp.",
"enable": "Aktiver 2FA"
},
"connections": {
"backToSettings": "← Indstillinger",
"title": "Tilknyttede konti",
"subtitle": "Link en social konto, så du kan logge ind med et enkelt klik",
"matchByEmail": "Vi matcher den til din hotelkonto via e-mail, så brug den registrerede adresse:",
"lookupFailed": "Vi kunne ikke læse dine linkede konti lige nu. Du kan stadig oprette forbindelse nedenfor - din status vises, når den er tilgængelig.",
"statusUnavailable": "Ikke tilgængelig på dette hotel.",
"statusConnected": "Forbundet — log ind med denne konto.",
"statusNotConnected": "Ikke forbundet.",
"connected": "Forbundet",
"connectProvider": "Tilslut {provider}",
"unavailable": "Ikke tilgængelig",
"footerNote": "Tilslutning fører dig til udbyderen for at godkende og derefter tilbage hertil. Hvis din sociale kontos e-mail ikke matcher en hotelkonto, vil du blive returneret til login-skærmen med en note."
},
"login": {
"title": "Log ind",
"subtitle": "Velkommen tilbage - log ind for at komme ind på hotellet.",
@@ -760,8 +745,6 @@
"verify": "Bekræft",
"signIn": "Log ind",
"or": "eller",
"continueWithDiscord": "Fortsæt med Discord",
"continueWithGoogle": "Fortsæt med Google",
"noAccount": "Ingen konto?",
"createOne": "Opret en",
"forgotPassword": "Glemt adgangskode?",
+1 -18
View File
@@ -663,12 +663,7 @@
"securityTitle": "Sicherheit",
"securitySubtitle": "Zwei-Faktor-Authentifizierung",
"securityDescription": "Füge deinem Konto eine zweite Sicherheitsebene hinzu.",
"twoFactorLink": "Zwei-Faktor-Authentifizierung",
"connectionsTitle": "Verbundene Konten",
"connectionsSubtitle": "Mit einem Klick anmelden",
"connectionsDescription": "Verbinde Discord oder Google mit deinem Hotelkonto.",
"manageConnections": "Verbindungen verwalten"
},
"twoFactorLink": "Zwei-Faktor-Authentifizierung"},
"settings2fa": {
"backToSettings": "← Einstellungen",
"title": "Zwei-Faktor-Authentifizierung",
@@ -690,20 +685,10 @@
"enableIntro": "Füge eine zweite Sicherheitsebene mit einer Authenticator-App hinzu.",
"enable": "2FA aktivieren"
},
"connections": {
"backToSettings": "← Einstellungen",
"title": "Verbundene Konten",
"subtitle": "Verknüpfe ein Social-Media-Konto, damit du dich mit einem Klick anmelden kannst",
"matchByEmail": "Wir gleichen es mit deinem Hotelkonto per E-Mail ab. Verwende daher die hinterlegte Adresse:",
"lookupFailed": "Wir konnten deine verknüpften Konten momentan nicht auslesen. Du kannst dich unten trotzdem verbinden — dein Status wird angezeigt, sobald er verfügbar ist.",
"statusUnavailable": "In diesem Hotel nicht verfügbar.",
"statusConnected": "Verbunden — mit diesem Konto anmelden.",
"statusNotConnected": "Nicht verbunden.",
"connected": "Verbunden",
"connectProvider": "{provider} verbinden",
"unavailable": "Nicht verfügbar",
"footerNote": "Beim Verbinden wirst du zum Anbieter weitergeleitet, um zu autorisieren, und dann hierher zurückgebracht. Wenn die E-Mail deines Social-Media-Kontos nicht mit einem Hotelkonto übereinstimmt, wirst du mit einem Hinweis zum Anmeldebildschirm zurückgeleitet."
},
"login": {
"title": "Anmelden",
"subtitle": "Willkommen zurück — melde dich an, um das Hotel zu betreten.",
@@ -715,8 +700,6 @@
"verify": "Verifizieren",
"signIn": "Anmelden",
"or": "oder",
"continueWithDiscord": "Weiter mit Discord",
"continueWithGoogle": "Weiter mit Google",
"noAccount": "Noch kein Konto?",
"createOne": "Konto erstellen",
"forgotPassword": "Passwort vergessen?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Ασφάλεια",
"securitySubtitle": "Έλεγχος ταυτότητας δύο παραγόντων",
"securityDescription": "Προσθέστε ένα δεύτερο επίπεδο προστασίας στον λογαριασμό σας.",
"twoFactorLink": "Έλεγχος ταυτότητας δύο παραγόντων",
"connectionsTitle": "Συνδεδεμένοι λογαριασμοί",
"connectionsSubtitle": "Συνδεθείτε με ένα κλικ",
"connectionsDescription": "Συνδέστε το Discord ή το Google με τον λογαριασμό του ξενοδοχείου σας.",
"manageConnections": "Διαχειριστείτε τις συνδέσεις"
},
"twoFactorLink": "Έλεγχος ταυτότητας δύο παραγόντων"},
"settings2fa": {
"backToSettings": "← Ρυθμίσεις",
"title": "Έλεγχος ταυτότητας δύο παραγόντων",
@@ -735,20 +730,10 @@
"enableIntro": "Προσθέστε ένα δεύτερο επίπεδο ασφάλειας με μια εφαρμογή ελέγχου ταυτότητας.",
"enable": "Ενεργοποίηση 2FA"
},
"connections": {
"backToSettings": "← Ρυθμίσεις",
"title": "Συνδεδεμένοι λογαριασμοί",
"subtitle": "Συνδέστε έναν λογαριασμό κοινωνικής δικτύωσης για να μπορείτε να συνδεθείτε με ένα κλικ",
"matchByEmail": "Το αντιστοιχίζουμε στον λογαριασμό του ξενοδοχείου σας μέσω e-mail, επομένως χρησιμοποιήστε τη διεύθυνση στο αρχείο:",
"lookupFailed": "Δεν μπορέσαμε να διαβάσουμε τους συνδεδεμένους λογαριασμούς σας αυτήν τη στιγμή. Μπορείτε ακόμα να συνδεθείτε παρακάτω — η κατάστασή σας θα εμφανιστεί μόλις είναι διαθέσιμη.",
"statusUnavailable": "Δεν είναι διαθέσιμο σε αυτό το ξενοδοχείο.",
"statusConnected": "Συνδεδεμένο — συνδεθείτε με αυτόν τον λογαριασμό.",
"statusNotConnected": "Δεν είναι συνδεδεμένο.",
"connected": "Συνδεδεμένος",
"connectProvider": "Σύνδεση {provider}",
"unavailable": "Μη διαθέσιμο",
"footerNote": "Η σύνδεση σάς μεταφέρει στον πάροχο για εξουσιοδότηση και μετά πάλι εδώ. Εάν το e-mail του λογαριασμού σας κοινωνικής δικτύωσης δεν ταιριάζει με έναν λογαριασμό ξενοδοχείου, θα επιστρέψετε στην οθόνη σύνδεσης με μια σημείωση."
},
"login": {
"title": "Συνδεθείτε",
"subtitle": "Καλώς ήρθατε πίσω — συνδεθείτε για να μπείτε στο ξενοδοχείο.",
@@ -760,8 +745,6 @@
"verify": "Επαλήθευση",
"signIn": "Συνδεθείτε",
"or": "ή",
"continueWithDiscord": "Συνεχίστε με το Discord",
"continueWithGoogle": "Συνεχίστε με την Google",
"noAccount": "Δεν υπάρχει λογαριασμός;",
"createOne": "Δημιουργήστε ένα",
"forgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης;",
+1 -22
View File
@@ -862,12 +862,7 @@
"securityTitle": "Security",
"securitySubtitle": "Two-factor authentication",
"securityDescription": "Add a second layer of protection to your account.",
"twoFactorLink": "Two-factor authentication",
"connectionsTitle": "Connected accounts",
"connectionsSubtitle": "Sign in with one click",
"connectionsDescription": "Link Discord or Google to your hotel account.",
"manageConnections": "Manage connections"
},
"twoFactorLink": "Two-factor authentication"},
"settings2fa": {
"backToSettings": "← Settings",
"title": "Two-factor authentication",
@@ -889,20 +884,6 @@
"enableIntro": "Add a second layer of security with an authenticator app.",
"enable": "Enable 2FA"
},
"connections": {
"backToSettings": "← Settings",
"title": "Connected accounts",
"subtitle": "Link a social account so you can sign in with one click",
"matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:",
"lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.",
"statusUnavailable": "Not available on this hotel.",
"statusConnected": "Connected — sign in with this account.",
"statusNotConnected": "Not connected.",
"connected": "Connected",
"connectProvider": "Connect {provider}",
"unavailable": "Unavailable",
"footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note."
},
"login": {
"title": "Sign in",
"subtitle": "Welcome back — log in to enter the hotel.",
@@ -916,8 +897,6 @@
"verify": "Verify",
"signIn": "Sign in",
"or": "or",
"continueWithDiscord": "Continue with Discord",
"continueWithGoogle": "Continue with Google",
"noAccount": "No account?",
"createOne": "Create one",
"forgotPassword": "Forgot password?",
+1 -18
View File
@@ -663,12 +663,7 @@
"securityTitle": "Seguridad",
"securitySubtitle": "Autenticación de dos factores",
"securityDescription": "Añade una segunda capa de protección a tu cuenta.",
"twoFactorLink": "Autenticación de dos factores",
"connectionsTitle": "Cuentas conectadas",
"connectionsSubtitle": "Inicia sesión con un solo clic",
"connectionsDescription": "Vincula Discord o Google a tu cuenta del hotel.",
"manageConnections": "Gestionar conexiones"
},
"twoFactorLink": "Autenticación de dos factores"},
"settings2fa": {
"backToSettings": "← Configuración",
"title": "Autenticación de dos factores",
@@ -690,20 +685,10 @@
"enableIntro": "Añade una segunda capa de seguridad con una aplicación de autenticación.",
"enable": "Activar 2FA"
},
"connections": {
"backToSettings": "← Configuración",
"title": "Cuentas conectadas",
"subtitle": "Vincula una cuenta social para iniciar sesión con un clic",
"matchByEmail": "La vinculamos a tu cuenta del hotel por correo electrónico, así que usa la dirección registrada:",
"lookupFailed": "No pudimos leer tus cuentas vinculadas ahora mismo. Aún puedes conectar abajo — tu estado se mostrará cuando esté disponible.",
"statusUnavailable": "No disponible en este hotel.",
"statusConnected": "Conectado — inicia sesión con esta cuenta.",
"statusNotConnected": "No conectado.",
"connected": "Conectado",
"connectProvider": "Conectar {provider}",
"unavailable": "No disponible",
"footerNote": "Conectar te lleva al proveedor para autorizar, y luego de vuelta aquí. Si el correo electrónico de tu cuenta social no coincide con una cuenta del hotel, serás redirigido a la pantalla de inicio de sesión con una nota."
},
"login": {
"title": "Iniciar sesión",
"subtitle": "Bienvenido de nuevo — inicia sesión para entrar al hotel.",
@@ -715,8 +700,6 @@
"verify": "Verificar",
"signIn": "Iniciar sesión",
"or": "o",
"continueWithDiscord": "Continuar con Discord",
"continueWithGoogle": "Continuar con Google",
"noAccount": "¿No tienes cuenta?",
"createOne": "Crea una",
"forgotPassword": "¿Olvidaste tu contraseña?",
+1 -18
View File
@@ -663,12 +663,7 @@
"securityTitle": "Sécurité",
"securitySubtitle": "Authentification à deux facteurs",
"securityDescription": "Ajoutez une deuxième couche de protection à votre compte.",
"twoFactorLink": "Authentification à deux facteurs",
"connectionsTitle": "Comptes connectés",
"connectionsSubtitle": "Connectez-vous en un clic",
"connectionsDescription": "Associez Discord ou Google à votre compte hôtel.",
"manageConnections": "Gérer les connexions"
},
"twoFactorLink": "Authentification à deux facteurs"},
"settings2fa": {
"backToSettings": "← Paramètres",
"title": "Authentification à deux facteurs",
@@ -690,20 +685,10 @@
"enableIntro": "Ajoutez une deuxième couche de sécurité avec une application d'authentification.",
"enable": "Activer l'A2F"
},
"connections": {
"backToSettings": "← Paramètres",
"title": "Comptes connectés",
"subtitle": "Associez un compte social pour vous connecter en un clic",
"matchByEmail": "Nous le faisons correspondre à votre compte hôtel par e-mail, donc utilisez l'adresse enregistrée :",
"lookupFailed": "Nous n'avons pas pu lire vos comptes liés pour le moment. Vous pouvez toujours vous connecter ci-dessous — votre statut apparaîtra dès qu'il sera disponible.",
"statusUnavailable": "Non disponible sur cet hôtel.",
"statusConnected": "Connecté — connectez-vous avec ce compte.",
"statusNotConnected": "Non connecté.",
"connected": "Connecté",
"connectProvider": "Connecter {provider}",
"unavailable": "Indisponible",
"footerNote": "La connexion vous redirige vers le fournisseur pour autoriser, puis vous revient ici. Si l'e-mail de votre compte social ne correspond pas à un compte hôtel, vous serez redirigé vers l'écran de connexion avec une note."
},
"login": {
"title": "Connexion",
"subtitle": "Bon retour — connectez-vous pour entrer dans l'hôtel.",
@@ -715,8 +700,6 @@
"verify": "Vérifier",
"signIn": "Se connecter",
"or": "ou",
"continueWithDiscord": "Continuer avec Discord",
"continueWithGoogle": "Continuer avec Google",
"noAccount": "Pas de compte ?",
"createOne": "Créer un compte",
"forgotPassword": "Mot de passe oublié ?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Sigurnost",
"securitySubtitle": "Dvofaktorska autentifikacija",
"securityDescription": "Dodajte drugi sloj zaštite svom računu.",
"twoFactorLink": "Dvofaktorska autentifikacija",
"connectionsTitle": "Povezani računi",
"connectionsSubtitle": "Prijavite se jednim klikom",
"connectionsDescription": "Povežite Discord ili Google sa svojim hotelskim računom.",
"manageConnections": "Upravljanje vezama"
},
"twoFactorLink": "Dvofaktorska autentifikacija"},
"settings2fa": {
"backToSettings": "← Postavke",
"title": "Dvofaktorska autentifikacija",
@@ -735,20 +730,10 @@
"enableIntro": "Dodajte drugi sloj sigurnosti pomoću aplikacije za autentifikaciju.",
"enable": "Omogućite 2FA"
},
"connections": {
"backToSettings": "← Postavke",
"title": "Povezani računi",
"subtitle": "Povežite društveni račun kako biste se mogli prijaviti jednim klikom",
"matchByEmail": "Spajamo je s vašim hotelskim računom putem e-pošte, stoga koristite adresu u evidenciji:",
"lookupFailed": "Trenutačno nismo mogli pročitati vaše povezane račune. I dalje se možete povezati u nastavku — vaš će se status prikazati kada bude dostupan.",
"statusUnavailable": "Nije dostupno u ovom hotelu.",
"statusConnected": "Povezano — prijavite se ovim računom.",
"statusNotConnected": "Nije povezano.",
"connected": "Povezan",
"connectProvider": "Poveži {provider}",
"unavailable": "Nedostupan",
"footerNote": "Povezivanje vas vodi do davatelja usluga za autorizaciju, a zatim natrag ovdje. Ako e-pošta vašeg računa na društvenoj mreži ne odgovara hotelskom računu, vratit ćete se na zaslon za prijavu s porukom."
},
"login": {
"title": "Prijavite se",
"subtitle": "Dobrodošli nazad — prijavite se za ulazak u hotel.",
@@ -760,8 +745,6 @@
"verify": "Potvrdi",
"signIn": "Prijavite se",
"or": "ili",
"continueWithDiscord": "Nastavite s Discordom",
"continueWithGoogle": "Nastavite s Googleom",
"noAccount": "Nemate račun?",
"createOne": "Stvorite jedan",
"forgotPassword": "Zaboravili ste lozinku?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Biztonság",
"securitySubtitle": "Kéttényezős hitelesítés",
"securityDescription": "Adjon hozzá egy második védelmi réteget fiókjához.",
"twoFactorLink": "Kéttényezős hitelesítés",
"connectionsTitle": "Kapcsolt fiókok",
"connectionsSubtitle": "Jelentkezzen be egyetlen kattintással",
"connectionsDescription": "Kapcsolja össze a Discordot vagy a Google-t szállodai fiókjával.",
"manageConnections": "Kapcsolatok kezelése"
},
"twoFactorLink": "Kéttényezős hitelesítés"},
"settings2fa": {
"backToSettings": "← Beállítások",
"title": "Kéttényezős hitelesítés",
@@ -735,20 +730,10 @@
"enableIntro": "Adjon hozzá egy második biztonsági réteget egy hitelesítő alkalmazással.",
"enable": "2FA engedélyezése"
},
"connections": {
"backToSettings": "← Beállítások",
"title": "Kapcsolt fiókok",
"subtitle": "Kapcsoljon össze egy közösségi fiókot, hogy egyetlen kattintással bejelentkezhessen",
"matchByEmail": "E-mailben egyeztetjük szállodai fiókjával, ezért használja a fájlban szereplő címet:",
"lookupFailed": "Jelenleg nem tudtuk olvasni az összekapcsolt fiókokat. Az alábbiakban továbbra is csatlakozhat – állapota akkor jelenik meg, ha elérhető lesz.",
"statusUnavailable": "Nem elérhető ebben a szállodában.",
"statusConnected": "Csatlakozva – jelentkezzen be ezzel a fiókkal.",
"statusNotConnected": "Nincs csatlakoztatva.",
"connected": "Csatlakozva",
"connectProvider": "Csatlakozás a következőhöz: {provider}",
"unavailable": "Nem elérhető",
"footerNote": "A csatlakozás a szolgáltatóhoz viszi az engedélyezést, majd vissza ide. Ha közösségi fiókod e-mail-címe nem egyezik a szállodai fiókkal, akkor egy megjegyzéssel visszakerül a bejelentkezési képernyőre."
},
"login": {
"title": "Jelentkezzen be",
"subtitle": "Üdvözöljük újra – jelentkezzen be a szállodába való belépéshez.",
@@ -760,8 +745,6 @@
"verify": "Ellenőrizze",
"signIn": "Jelentkezzen be",
"or": "vagy",
"continueWithDiscord": "Folytatás a Discorddal",
"continueWithGoogle": "Folytassa a Google-lal",
"noAccount": "Nincs fiók?",
"createOne": "Hozzon létre egyet",
"forgotPassword": "Elfelejtetted a jelszavad?",
+1 -18
View File
@@ -817,12 +817,7 @@
"securityTitle": "Sicurezza",
"securitySubtitle": "Autenticazione a due fattori",
"securityDescription": "Aggiungi un ulteriore livello di protezione al tuo account.",
"twoFactorLink": "Autenticazione a due fattori",
"connectionsTitle": "Account collegati",
"connectionsSubtitle": "Accedi con un clic",
"connectionsDescription": "Collega Discord o Google al tuo account dell'hotel.",
"manageConnections": "Gestisci collegamenti"
},
"twoFactorLink": "Autenticazione a due fattori"},
"settings2fa": {
"backToSettings": "← Impostazioni",
"title": "Autenticazione a due fattori",
@@ -844,20 +839,10 @@
"enableIntro": "Aggiungi un livello di sicurezza in più con un'app di autenticazione.",
"enable": "Attiva 2FA"
},
"connections": {
"backToSettings": "← Impostazioni",
"title": "Account collegati",
"subtitle": "Collega un account social per poter accedere con un clic",
"matchByEmail": "Lo abbiniamo al tuo account dell'hotel tramite e-mail, quindi usa l'indirizzo registrato:",
"lookupFailed": "Al momento non riusciamo a leggere i tuoi account collegati. Puoi comunque collegarne uno qui sotto: lo stato verrà mostrato non appena disponibile.",
"statusUnavailable": "Non disponibile su questo hotel.",
"statusConnected": "Collegato — accedi con questo account.",
"statusNotConnected": "Non collegato.",
"connected": "Collegato",
"connectProvider": "Collega {provider}",
"unavailable": "Non disponibile",
"footerNote": "Il collegamento ti porta al provider per l'autorizzazione, poi ti riporta qui. Se l'e-mail del tuo account social non corrisponde a un account dell'hotel, verrai riportato alla schermata di accesso con una nota."
},
"login": {
"title": "Accedi",
"subtitle": "Bentornato — accedi per entrare nell'hotel.",
@@ -869,8 +854,6 @@
"verify": "Verifica",
"signIn": "Accedi",
"or": "oppure",
"continueWithDiscord": "Continua con Discord",
"continueWithGoogle": "Continua con Google",
"noAccount": "Non hai un account?",
"createOne": "Creane uno",
"forgotPassword": "Password dimenticata?",
+1 -18
View File
@@ -862,12 +862,7 @@
"securityTitle": "Beveiliging",
"securitySubtitle": "Twee factor authenticatie",
"securityDescription": "Voeg een extra beveiligingslaag toe aan je account.",
"twoFactorLink": "Twee factor authenticatie",
"connectionsTitle": "Gekoppelde accounts",
"connectionsSubtitle": "Inloggen met één klik",
"connectionsDescription": "Koppel Discord of Google aan je hotelaccount.",
"manageConnections": "Koppelingen beheren"
},
"twoFactorLink": "Twee factor authenticatie"},
"settings2fa": {
"backToSettings": "← Instellingen",
"title": "Twee factor authenticatie",
@@ -889,20 +884,10 @@
"enableIntro": "Voeg een extra beveiligingslaag toe met een authenticator-app.",
"enable": "2FA inschakelen"
},
"connections": {
"backToSettings": "← Instellingen",
"title": "Gekoppelde accounts",
"subtitle": "Koppel een sociaal account zodat je met één klik kunt inloggen",
"matchByEmail": "We koppelen het aan je hotelaccount op basis van e-mail, gebruik dus het volgende adres:",
"lookupFailed": "We konden je gekoppelde accounts nu niet uitlezen. Je kunt hieronder nog steeds koppelen — je status wordt getoond zodra deze beschikbaar is.",
"statusUnavailable": "Niet beschikbaar in dit hotel.",
"statusConnected": "Gekoppeld — log in met dit account.",
"statusNotConnected": "Niet gekoppeld.",
"connected": "Gekoppeld",
"connectProvider": "{provider} koppelen",
"unavailable": "Niet beschikbaar",
"footerNote": "Koppelen brengt je naar de provider om te autoriseren en daarna terug hierheen. Als het e-mailadres van je sociale account niet overeenkomt met een hotelaccount, word je teruggestuurd naar het inlogscherm met een melding."
},
"login": {
"title": "Inloggen",
"subtitle": "Welkom terug — log in om het hotel te betreden.",
@@ -914,8 +899,6 @@
"verify": "Verifiëren",
"signIn": "Inloggen",
"or": "of",
"continueWithDiscord": "Doorgaan met Discord",
"continueWithGoogle": "Doorgaan met Google",
"noAccount": "Nog geen account?",
"createOne": "Account aanmaken",
"forgotPassword": "Wachtwoord vergeten?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Sikkerhet",
"securitySubtitle": "To-faktor autentisering",
"securityDescription": "Legg til et ekstra lag med beskyttelse til kontoen din.",
"twoFactorLink": "To-faktor autentisering",
"connectionsTitle": "Tilknyttede kontoer",
"connectionsSubtitle": "Logg på med ett klikk",
"connectionsDescription": "Koble Discord eller Google til hotellkontoen din.",
"manageConnections": "Administrer tilkoblinger"
},
"twoFactorLink": "To-faktor autentisering"},
"settings2fa": {
"backToSettings": "← Innstillinger",
"title": "To-faktor autentisering",
@@ -735,20 +730,10 @@
"enableIntro": "Legg til et ekstra lag med sikkerhet med en autentiseringsapp.",
"enable": "Aktiver 2FA"
},
"connections": {
"backToSettings": "← Innstillinger",
"title": "Tilknyttede kontoer",
"subtitle": "Koble til en sosial konto slik at du kan logge på med ett klikk",
"matchByEmail": "Vi matcher den til hotellkontoen din via e-post, så bruk adressen som er registrert:",
"lookupFailed": "Vi kunne ikke lese de tilknyttede kontoene dine akkurat nå. Du kan fortsatt koble til nedenfor – statusen din vises når den er tilgjengelig.",
"statusUnavailable": "Ikke tilgjengelig på dette hotellet.",
"statusConnected": "Tilkoblet – logg på med denne kontoen.",
"statusNotConnected": "Ikke tilkoblet.",
"connected": "Tilkoblet",
"connectProvider": "Koble til {provider}",
"unavailable": "Utilgjengelig",
"footerNote": "Tilkobling tar deg til leverandøren for å godkjenne, og deretter tilbake hit. Hvis e-posten til den sosiale kontoen din ikke samsvarer med en hotellkonto, blir du returnert til påloggingsskjermen med en merknad."
},
"login": {
"title": "Logg på",
"subtitle": "Velkommen tilbake – logg inn for å komme inn på hotellet.",
@@ -760,8 +745,6 @@
"verify": "Bekreft",
"signIn": "Logg på",
"or": "eller",
"continueWithDiscord": "Fortsett med Discord",
"continueWithGoogle": "Fortsett med Google",
"noAccount": "Ingen konto?",
"createOne": "Lag en",
"forgotPassword": "Glemt passord?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Bezpieczeństwo",
"securitySubtitle": "Uwierzytelnianie dwuskładnikowe",
"securityDescription": "Dodaj drugą warstwę ochrony do swojego konta.",
"twoFactorLink": "Uwierzytelnianie dwuskładnikowe",
"connectionsTitle": "Połączone konta",
"connectionsSubtitle": "Zaloguj się jednym kliknięciem",
"connectionsDescription": "Połącz Discord lub Google ze swoim kontem hotelowym.",
"manageConnections": "Zarządzaj połączeniami"
},
"twoFactorLink": "Uwierzytelnianie dwuskładnikowe"},
"settings2fa": {
"backToSettings": "← Ustawienia",
"title": "Uwierzytelnianie dwuskładnikowe",
@@ -735,20 +730,10 @@
"enableIntro": "Dodaj drugą warstwę zabezpieczeń za pomocą aplikacji uwierzytelniającej.",
"enable": "Włącz 2FA"
},
"connections": {
"backToSettings": "← Ustawienia",
"title": "Połączone konta",
"subtitle": "Połącz konto społecznościowe, aby móc zalogować się jednym kliknięciem",
"matchByEmail": "Dopasowujemy go do Twojego konta hotelowego przez e-mail, więc użyj adresu zapisanego w pliku:",
"lookupFailed": "Nie mogliśmy teraz odczytać Twoich połączonych kont. Nadal możesz się połączyć poniżej — Twój status wyświetli się, gdy będzie dostępny.",
"statusUnavailable": "Niedostępne w tym hotelu.",
"statusConnected": "Połączono — zaloguj się na to konto.",
"statusNotConnected": "Nie podłączony.",
"connected": "Połączono",
"connectProvider": "Połącz {provider}",
"unavailable": "Niedostępne",
"footerNote": "Po nawiązaniu połączenia przejdziesz do dostawcy w celu autoryzacji, a następnie wrócisz tutaj. Jeśli adres e-mail Twojego konta społecznościowego nie jest zgodny z kontem hotelowym, nastąpi powrót do ekranu logowania z notatką."
},
"login": {
"title": "Zaloguj się",
"subtitle": "Witamy ponownie — zaloguj się, aby wejść do hotelu.",
@@ -760,8 +745,6 @@
"verify": "Zweryfikuj",
"signIn": "Zaloguj się",
"or": "lub",
"continueWithDiscord": "Kontynuuj z Discordem",
"continueWithGoogle": "Kontynuuj z Google",
"noAccount": "Nie masz konta?",
"createOne": "Utwórz jeden",
"forgotPassword": "Zapomniałeś hasła?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Segurança",
"securitySubtitle": "Autenticação de dois fatores",
"securityDescription": "Adicione uma segunda camada de proteção à sua conta.",
"twoFactorLink": "Autenticação de dois fatores",
"connectionsTitle": "Contas conectadas",
"connectionsSubtitle": "Faça login com um clique",
"connectionsDescription": "Vincule o Discord ou o Google à sua conta do hotel.",
"manageConnections": "Gerenciar conexões"
},
"twoFactorLink": "Autenticação de dois fatores"},
"settings2fa": {
"backToSettings": "← Configurações",
"title": "Autenticação de dois fatores",
@@ -735,20 +730,10 @@
"enableIntro": "Adicione uma segunda camada de segurança com um aplicativo autenticador.",
"enable": "Habilitar 2FA"
},
"connections": {
"backToSettings": "← Configurações",
"title": "Contas conectadas",
"subtitle": "Vincule uma conta social para poder fazer login com um clique",
"matchByEmail": "Nós o associamos à sua conta do hotel por e-mail, então use o endereço registrado:",
"lookupFailed": "Não foi possível ler suas contas vinculadas no momento. Você ainda pode se conectar abaixo – seu status será exibido assim que estiver disponível.",
"statusUnavailable": "Não disponível neste hotel.",
"statusConnected": "Conectado – faça login com esta conta.",
"statusNotConnected": "Não conectado.",
"connected": "Conectado",
"connectProvider": "Conectar {provider}",
"unavailable": "Indisponível",
"footerNote": "A conexão leva você ao provedor para autorizar e depois volta aqui. Se o e-mail da sua conta social não corresponder à conta do hotel, você retornará à tela de login com uma nota."
},
"login": {
"title": "Faça login",
"subtitle": "Bem-vindo de volta – faça login para entrar no hotel.",
@@ -760,8 +745,6 @@
"verify": "Verifique",
"signIn": "Faça login",
"or": "ou",
"continueWithDiscord": "Continuar com discórdia",
"continueWithGoogle": "Continuar com o Google",
"noAccount": "Sem conta?",
"createOne": "Crie um",
"forgotPassword": "Esqueceu a senha?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Securitate",
"securitySubtitle": "Autentificare cu doi factori",
"securityDescription": "Adăugați un al doilea nivel de protecție contului dvs.",
"twoFactorLink": "Autentificare cu doi factori",
"connectionsTitle": "Conturi conectate",
"connectionsSubtitle": "Conectați-vă cu un singur clic",
"connectionsDescription": "Conectați Discord sau Google la contul dvs. de hotel.",
"manageConnections": "Gestionați conexiunile"
},
"twoFactorLink": "Autentificare cu doi factori"},
"settings2fa": {
"backToSettings": "← Setări",
"title": "Autentificare cu doi factori",
@@ -735,20 +730,10 @@
"enableIntro": "Adăugați un al doilea nivel de securitate cu o aplicație de autentificare.",
"enable": "Activați 2FA"
},
"connections": {
"backToSettings": "← Setări",
"title": "Conturi conectate",
"subtitle": "Conectați un cont social pentru a vă putea conecta cu un singur clic",
"matchByEmail": "Îl potrivim prin e-mail cu contul dvs. de hotel, așa că utilizați adresa din dosar:",
"lookupFailed": "Nu am putut citi conturile dvs. conectate în acest moment. Vă puteți conecta în continuare mai jos — starea dvs. se va afișa odată ce va fi disponibil.",
"statusUnavailable": "Nu este disponibil la acest hotel.",
"statusConnected": "Conectat — conectați-vă cu acest cont.",
"statusNotConnected": "Nu este conectat.",
"connected": "Conectat",
"connectProvider": "Conectați {provider}",
"unavailable": "Indisponibil",
"footerNote": "Conectarea vă duce la furnizor pentru a autoriza, apoi înapoi aici. Dacă adresa de e-mail a contului dvs. social nu se potrivește cu un cont de hotel, veți fi returnat la ecranul de conectare cu o notă."
},
"login": {
"title": "Conectați-vă",
"subtitle": "Bine ați revenit - conectați-vă pentru a intra în hotel.",
@@ -760,8 +745,6 @@
"verify": "Verificați",
"signIn": "Conectați-vă",
"or": "sau",
"continueWithDiscord": "Continuați cu Discord",
"continueWithGoogle": "Continuați cu Google",
"noAccount": "Fără cont?",
"createOne": "Creați unul",
"forgotPassword": "Ai uitat parola?",
+1 -20
View File
@@ -708,12 +708,7 @@
"securityTitle": "Безопасность",
"securitySubtitle": "Двухфакторная аутентификация",
"securityDescription": "Добавьте в аккаунт второй уровень защиты.",
"twoFactorLink": "Двухфакторная аутентификация",
"connectionsTitle": "Связанные аккаунты",
"connectionsSubtitle": "Войти одним щелчком мыши",
"connectionsDescription": "Привяжите Discord или Google к аккаунту отеля.",
"manageConnections": "Управление подключениями"
},
"twoFactorLink": "Двухфакторная аутентификация"},
"settings2fa": {
"backToSettings": "← Настройки",
"title": "Двухфакторная аутентификация",
@@ -735,20 +730,8 @@
"enableIntro": "Добавьте второй уровень безопасности с помощью приложения-аутентификатора.",
"enable": "Включить 2FA"
},
"connections": {
"backToSettings": "← Настройки",
"title": "Связанные аккаунты",
"subtitle": "Привяжите аккаунт в соцсетях, чтобы войти в систему одним щелчком мыши",
"matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:",
"lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.",
"statusUnavailable": "Not available on this hotel.",
"statusConnected": "Connected — sign in with this account.",
"statusNotConnected": "Not connected.",
"connected": "Connected",
"connectProvider": "Connect {provider}",
"unavailable": "Unavailable",
"footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note."
},
"login": {
"title": "Sign in",
"subtitle": "С возвращением! Войдите в систему, чтобы войти в отель.",
@@ -760,8 +743,6 @@
"verify": "Подтвердить",
"signIn": "Войти",
"or": "или",
"continueWithDiscord": "Продолжить с Discord",
"continueWithGoogle": "Продолжить с помощью Google",
"noAccount": "Нет аккаунта?",
"createOne": "Создать",
"forgotPassword": "Забыли пароль?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Bezpečnosť",
"securitySubtitle": "Dvojfaktorové overenie",
"securityDescription": "Pridajte do svojho účtu druhú vrstvu ochrany.",
"twoFactorLink": "Dvojfaktorové overenie",
"connectionsTitle": "Prepojené účty",
"connectionsSubtitle": "Prihláste sa jedným kliknutím",
"connectionsDescription": "Prepojte Discord alebo Google so svojím hotelovým účtom.",
"manageConnections": "Spravujte pripojenia"
},
"twoFactorLink": "Dvojfaktorové overenie"},
"settings2fa": {
"backToSettings": "← Nastavenia",
"title": "Dvojfaktorové overenie",
@@ -735,20 +730,10 @@
"enableIntro": "Pridajte druhú vrstvu zabezpečenia pomocou autentifikačnej aplikácie.",
"enable": "Povoliť 2FA"
},
"connections": {
"backToSettings": "← Nastavenia",
"title": "Prepojené účty",
"subtitle": "Prepojte sociálny účet, aby ste sa mohli prihlásiť jedným kliknutím",
"matchByEmail": "Priradíme ho k vášmu hotelovému účtu prostredníctvom e-mailu, takže použite evidovanú adresu:",
"lookupFailed": "Vaše prepojené účty sa nám momentálne nepodarilo prečítať. Stále sa môžete pripojiť nižšie – váš stav sa zobrazí, keď bude k dispozícii.",
"statusUnavailable": "Nie je k dispozícii v tomto hoteli.",
"statusConnected": "Pripojené – prihláste sa pomocou tohto účtu.",
"statusNotConnected": "Nepripojené.",
"connected": "Pripojené",
"connectProvider": "Pripojiť {provider}",
"unavailable": "nedostupné",
"footerNote": "Po pripojení sa dostanete k poskytovateľovi na autorizáciu a potom späť sem. Ak sa e-mail vášho účtu na sociálnej sieti nezhoduje s účtom hotela, vrátite sa na prihlasovaciu obrazovku s poznámkou."
},
"login": {
"title": "Prihláste sa",
"subtitle": "Vitajte späť — prihláste sa pre vstup do hotela.",
@@ -760,8 +745,6 @@
"verify": "Overiť",
"signIn": "Prihláste sa",
"or": "alebo",
"continueWithDiscord": "Pokračujte s Discordom",
"continueWithGoogle": "Pokračujte so službou Google",
"noAccount": "Žiadny účet?",
"createOne": "Vytvorte si ho",
"forgotPassword": "Zabudli ste heslo?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Безбедност",
"securitySubtitle": "Two-factor authentication",
"securityDescription": "Додајте други слој заштите свом налогу.",
"twoFactorLink": "Two-factor authentication",
"connectionsTitle": "Повезани налози",
"connectionsSubtitle": "Пријавите се једним кликом",
"connectionsDescription": "Link Discord or Google to your hotel account.",
"manageConnections": "Управљајте везама"
},
"twoFactorLink": "Two-factor authentication"},
"settings2fa": {
"backToSettings": "← Подешавања",
"title": "Двофакторска аутентификација",
@@ -735,20 +730,10 @@
"enableIntro": "Додајте други ниво безбедности помоћу апликације за аутентификацију.",
"enable": "Омогући 2ФА"
},
"connections": {
"backToSettings": "← Подешавања",
"title": "Повезани налози",
"subtitle": "Повежите друштвени налог да бисте се могли пријавити једним кликом",
"matchByEmail": "Повезујемо га са вашим хотелским налогом путем е-поште, па користите адресу у евиденцији:",
"lookupFailed": "We couldn't read your linked accounts right now. Још увек можете да се повежете испод — ваш статус ће се приказати када буде доступан.",
"statusUnavailable": "Није доступно у овом хотелу.",
"statusConnected": "Повезано — пријавите се са овим налогом.",
"statusNotConnected": "Није повезан.",
"connected": "Повезано",
"connectProvider": "Повежите {provider}",
"unavailable": "Недоступно",
"footerNote": "Повезивање вас води до провајдера за ауторизацију, а затим назад овде. Ако се е-пошта вашег друштвеног налога не подудара са хотелским налогом, бићете враћени на екран за пријаву са напоменом."
},
"login": {
"title": "Пријавите се",
"subtitle": "Добродошли назад — пријавите се да бисте ушли у хотел.",
@@ -760,8 +745,6 @@
"verify": "Верифи",
"signIn": "Пријавите се",
"or": "или",
"continueWithDiscord": "Наставите са Дисцорд-ом",
"continueWithGoogle": "Наставите са Гоогле-ом",
"noAccount": "Немате налог?",
"createOne": "Направите један",
"forgotPassword": "Заборавили сте лозинку?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Säkerhet",
"securitySubtitle": "Tvåfaktorsautentisering",
"securityDescription": "Lägg till ett andra lager av skydd till ditt konto.",
"twoFactorLink": "Tvåfaktorsautentisering",
"connectionsTitle": "Anslutna konton",
"connectionsSubtitle": "Logga in med ett klick",
"connectionsDescription": "Länka Discord eller Google till ditt hotellkonto.",
"manageConnections": "Hantera anslutningar"
},
"twoFactorLink": "Tvåfaktorsautentisering"},
"settings2fa": {
"backToSettings": "← Inställningar",
"title": "Tvåfaktorsautentisering",
@@ -735,20 +730,10 @@
"enableIntro": "Lägg till ett andra lager av säkerhet med en autentiseringsapp.",
"enable": "Aktivera 2FA"
},
"connections": {
"backToSettings": "← Inställningar",
"title": "Anslutna konton",
"subtitle": "Länka ett socialt konto så att du kan logga in med ett klick",
"matchByEmail": "Vi matchar det med ditt hotellkonto via e-post, så använd adressen i filen:",
"lookupFailed": "Vi kunde inte läsa dina länkade konton just nu. Du kan fortfarande ansluta nedan – din status visas när den är tillgänglig.",
"statusUnavailable": "Inte tillgängligt på detta hotell.",
"statusConnected": "Ansluten – logga in med det här kontot.",
"statusNotConnected": "Ej ansluten.",
"connected": "Ansluten",
"connectProvider": "Anslut {provider}",
"unavailable": "Ej tillgänglig",
"footerNote": "Anslutning tar dig till leverantören för att auktorisera och sedan tillbaka hit. Om ditt sociala kontos e-post inte stämmer överens med ett hotellkonto kommer du att återvända till inloggningsskärmen med en anteckning."
},
"login": {
"title": "Logga in",
"subtitle": "Välkommen tillbaka — logga in för att komma in på hotellet.",
@@ -760,8 +745,6 @@
"verify": "Verifiera",
"signIn": "Logga in",
"or": "eller",
"continueWithDiscord": "Fortsätt med Discord",
"continueWithGoogle": "Fortsätt med Google",
"noAccount": "Inget konto?",
"createOne": "Skapa en",
"forgotPassword": "Glömt lösenordet?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Güvenlik",
"securitySubtitle": "İki faktörlü kimlik doğrulama",
"securityDescription": "Hesabınıza ikinci bir koruma katmanı ekleyin.",
"twoFactorLink": "İki faktörlü kimlik doğrulama",
"connectionsTitle": "Bağlı hesaplar",
"connectionsSubtitle": "Tek tıklamayla oturum açın",
"connectionsDescription": "Discord veya Google'ı otel hesabınıza bağlayın.",
"manageConnections": "Bağlantıları yönet"
},
"twoFactorLink": "İki faktörlü kimlik doğrulama"},
"settings2fa": {
"backToSettings": "← Ayarlar",
"title": "İki faktörlü kimlik doğrulama",
@@ -735,20 +730,10 @@
"enableIntro": "Kimlik doğrulama uygulamasıyla ikinci bir güvenlik katmanı ekleyin.",
"enable": "2FA'yı etkinleştir"
},
"connections": {
"backToSettings": "← Ayarlar",
"title": "Bağlı hesaplar",
"subtitle": "Tek tıklamayla oturum açabilmek için bir sosyal hesap bağlayın",
"matchByEmail": "Bunu e-posta yoluyla otel hesabınızla eşleştiriyoruz, bu nedenle kayıtlı adresi kullanın:",
"lookupFailed": "Bağlı hesaplarınızı şu anda okuyamıyoruz. Aşağıdan hâlâ bağlanabilirsiniz; durumunuz uygun olduğunda gösterilecektir.",
"statusUnavailable": "Bu otelde mevcut değil.",
"statusConnected": "Bağlandı — bu hesapla oturum açın.",
"statusNotConnected": "Bağlı değil.",
"connected": "Bağlı",
"connectProvider": "{provider} bağlayın",
"unavailable": "Kullanılamıyor",
"footerNote": "Bağlanmak sizi yetkilendirmek için sağlayıcıya götürür, ardından buraya geri döner. Sosyal hesabınızın e-postası bir otel hesabıyla eşleşmiyorsa bir notla giriş ekranına geri döneceksiniz."
},
"login": {
"title": "Oturum aç",
"subtitle": "Tekrar hoş geldiniz; otele girmek için oturum açın.",
@@ -760,8 +745,6 @@
"verify": "Doğrula",
"signIn": "Oturum aç",
"or": "veya",
"continueWithDiscord": "Discord'a devam et",
"continueWithGoogle": "Google ile devam et",
"noAccount": "Hesabın yok mu?",
"createOne": "Bir tane oluştur",
"forgotPassword": "Şifrenizi mi unuttunuz?",
+1 -18
View File
@@ -708,12 +708,7 @@
"securityTitle": "Безпека",
"securitySubtitle": "Двофакторна аутентифікація",
"securityDescription": "Додайте другий рівень захисту до свого облікового запису.",
"twoFactorLink": "Двофакторна аутентифікація",
"connectionsTitle": "Підключені облікові записи",
"connectionsSubtitle": "Увійдіть в один клік",
"connectionsDescription": "Прив’яжіть Discord або Google до свого облікового запису готелю.",
"manageConnections": "Керуйте підключеннями"
},
"twoFactorLink": "Двофакторна аутентифікація"},
"settings2fa": {
"backToSettings": "← Налаштування",
"title": "Двофакторна аутентифікація",
@@ -735,20 +730,10 @@
"enableIntro": "Додайте другий рівень безпеки за допомогою програми автентифікації.",
"enable": "Увімкніть 2FA"
},
"connections": {
"backToSettings": "← Налаштування",
"title": "Підключені облікові записи",
"subtitle": "Зв’яжіть обліковий запис у соціальній мережі, щоб увійти одним клацанням миші",
"matchByEmail": "Ми зв’яжемо його з вашим обліковим записом готелю електронною поштою, тому використовуйте адресу в файлі:",
"lookupFailed": "Нам зараз не вдалося прочитати ваші зв’язані облікові записи. Ви все ще можете підключитися нижче — ваш статус з’явиться, коли він стане доступним.",
"statusUnavailable": "Недоступно в цьому готелі.",
"statusConnected": "Підключено — увійдіть за допомогою цього облікового запису.",
"statusNotConnected": "Не підключено.",
"connected": "Підключено",
"connectProvider": "Підключити {provider}",
"unavailable": "Недоступний",
"footerNote": "Після підключення ви перейдете до постачальника для авторизації, а потім повернетеся сюди. Якщо адреса електронної пошти вашого соціального облікового запису не збігається з обліковим записом готелю, ви повернетеся на екран входу з приміткою."
},
"login": {
"title": "Увійдіть",
"subtitle": "Ласкаво просимо назад — увійдіть, щоб увійти в готель.",
@@ -760,8 +745,6 @@
"verify": "Підтвердити",
"signIn": "Увійдіть",
"or": "або",
"continueWithDiscord": "Продовжуйте з Discord",
"continueWithGoogle": "Продовжуйте з Google",
"noAccount": "Немає облікового запису?",
"createOne": "Створіть один",
"forgotPassword": "Забули пароль?",