🐛 fix(user): Update notification and verify code settings
This commit is contained in:
parent
e3f9ef6ebe
commit
574b043be6
@ -3,13 +3,15 @@
|
||||
import { Invite } from './invite';
|
||||
import { Register } from './register';
|
||||
import { Verify } from './verify';
|
||||
import { VerifyCode } from './verify-code';
|
||||
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className='space-y-3'>
|
||||
<Register />
|
||||
<Verify />
|
||||
<Invite />
|
||||
<Register />
|
||||
<VerifyCode />
|
||||
<Verify />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@ -0,0 +1,95 @@
|
||||
'use client';
|
||||
|
||||
import { getVerifyCodeConfig, updateVerifyCodeConfig } from '@/services/admin/system';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card';
|
||||
import { Label } from '@workspace/ui/components/label';
|
||||
import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table';
|
||||
import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { toast } from 'sonner';
|
||||
|
||||
export function VerifyCode() {
|
||||
const t = useTranslations('auth-control.verify-code');
|
||||
|
||||
const { data, refetch } = useQuery({
|
||||
queryKey: ['getVerifyCodeConfig'],
|
||||
queryFn: async () => {
|
||||
const { data } = await getVerifyCodeConfig();
|
||||
return data.data;
|
||||
},
|
||||
});
|
||||
|
||||
async function updateConfig(key: string, value: unknown) {
|
||||
if (data?.[key] === value) return;
|
||||
try {
|
||||
await updateVerifyCodeConfig({
|
||||
...data,
|
||||
[key]: value,
|
||||
} as API.VerifyCodeConfig);
|
||||
toast.success(t('saveSuccess'));
|
||||
refetch();
|
||||
} catch (error) {
|
||||
/* empty */
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Card className='mb-6'>
|
||||
<CardHeader>
|
||||
<CardTitle>{t('verifyCodeSettings')}</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<Table>
|
||||
<TableBody>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('expireTime')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('expireTimeDescription')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
placeholder='5'
|
||||
value={data?.verify_code_expire_time}
|
||||
onValueBlur={(value) => updateConfig('verify_code_expire_time', Number(value))}
|
||||
suffix={t('minute')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('interval')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('intervalDescription')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
placeholder='60'
|
||||
value={data?.verify_code_interval}
|
||||
onValueBlur={(value) => updateConfig('verify_code_interval', Number(value))}
|
||||
suffix={t('second')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('dailyLimit')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('dailyLimitDescription')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
placeholder='15'
|
||||
value={data?.verify_code_limit}
|
||||
onValueBlur={(value) => updateConfig('verify_code_limit', Number(value))}
|
||||
suffix={t('times')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
</TableBody>
|
||||
</Table>
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
@ -96,71 +96,6 @@ export default function Page() {
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('expireTime')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('expireTimeTip')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
min={0}
|
||||
value={data?.config?.expire_time ?? 300}
|
||||
onValueBlur={(value) =>
|
||||
updateConfig('config', {
|
||||
...data?.config,
|
||||
expire_time: value,
|
||||
})
|
||||
}
|
||||
suffix='S'
|
||||
disabled={isFetching}
|
||||
placeholder={t('placeholders.expireTime')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell className='align-top'>
|
||||
<Label>{t('interval')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('intervalTip')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
value={data?.config?.interval ?? 60}
|
||||
min={0}
|
||||
onValueBlur={(value) =>
|
||||
updateConfig('config', {
|
||||
...data?.config,
|
||||
interval: value,
|
||||
})
|
||||
}
|
||||
suffix='S'
|
||||
disabled={isFetching}
|
||||
placeholder={t('placeholders.interval')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('limit')}</Label>
|
||||
<p className='text-muted-foreground text-xs'>{t('limitTip')}</p>
|
||||
</TableCell>
|
||||
<TableCell className='text-right'>
|
||||
<EnhancedInput
|
||||
type='number'
|
||||
value={data?.config?.limit ?? 20}
|
||||
min={0}
|
||||
onValueBlur={(value) =>
|
||||
updateConfig('config', {
|
||||
...data?.config,
|
||||
limit: value,
|
||||
})
|
||||
}
|
||||
disabled={isFetching}
|
||||
placeholder={t('placeholders.limit')}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableCell>
|
||||
<Label>{t('whitelistValidation')}</Label>
|
||||
|
||||
@ -35,7 +35,7 @@ function getTimeRangeData(slots: API.TimePeriod[]) {
|
||||
.filter((slot) => slot.start_time && slot.end_time)
|
||||
.flatMap((slot) => {
|
||||
const [startH = 0, startM = 0] = slot.start_time.split(':').map(Number);
|
||||
const [endH = 0, endM = 0] = slot?.end_time?.split(':').map(Number);
|
||||
const [endH = 0, endM = 0] = slot?.end_time.split(':').map(Number);
|
||||
const start = startH * 60 + startM;
|
||||
let end = endH * 60 + endM;
|
||||
if (end < start) end += MINUTES_IN_DAY;
|
||||
@ -117,7 +117,7 @@ export default function NodeConfig() {
|
||||
}, [timeSlots]);
|
||||
|
||||
const chartConfig = useMemo(() => {
|
||||
return chartTimeSlots.reduce(
|
||||
return chartTimeSlots?.reduce(
|
||||
(acc, item, index) => {
|
||||
acc[item.name] = {
|
||||
label: item.name,
|
||||
|
||||
@ -12,8 +12,6 @@ import { toast } from 'sonner';
|
||||
import * as z from 'zod';
|
||||
|
||||
const notifySettingsSchema = z.object({
|
||||
enable_email_notify: z.boolean(),
|
||||
enable_telegram_notify: z.boolean(),
|
||||
enable_balance_notify: z.boolean(),
|
||||
enable_login_notify: z.boolean(),
|
||||
enable_subscribe_notify: z.boolean(),
|
||||
@ -28,8 +26,6 @@ export function NotifySettingsForm({ user }: { user: API.User }) {
|
||||
const form = useForm<NotifySettingsValues>({
|
||||
resolver: zodResolver(notifySettingsSchema),
|
||||
defaultValues: {
|
||||
enable_email_notify: user.enable_email_notify,
|
||||
enable_telegram_notify: user.enable_telegram_notify,
|
||||
enable_balance_notify: user.enable_balance_notify,
|
||||
enable_login_notify: user.enable_login_notify,
|
||||
enable_subscribe_notify: user.enable_subscribe_notify,
|
||||
@ -57,32 +53,6 @@ export function NotifySettingsForm({ user }: { user: API.User }) {
|
||||
</CardHeader>
|
||||
<CardContent className='space-y-4'>
|
||||
<div className='grid grid-cols-1 gap-4'>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='enable_email_notify'
|
||||
render={({ field }) => (
|
||||
<FormItem className='flex items-center justify-between space-x-2'>
|
||||
<FormLabel>{t('emailNotifications')}</FormLabel>
|
||||
<FormControl>
|
||||
<Switch checked={field.value} onCheckedChange={field.onChange} />
|
||||
</FormControl>
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='enable_telegram_notify'
|
||||
render={({ field }) => (
|
||||
<FormItem className='flex items-center justify-between space-x-2'>
|
||||
<FormLabel>{t('telegramNotifications')}</FormLabel>
|
||||
<FormControl>
|
||||
<Switch checked={field.value} onCheckedChange={field.onChange} />
|
||||
</FormControl>
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='enable_balance_notify'
|
||||
|
||||
@ -37,6 +37,9 @@ export const useGlobalStore = create<GlobalStore>((set) => ({
|
||||
register: {
|
||||
stop_register: false,
|
||||
enable_trial: false,
|
||||
trial_subscribe: 0,
|
||||
trial_time: 0,
|
||||
trial_time_unit: '',
|
||||
enable_ip_register_limit: false,
|
||||
ip_register_limit: 0,
|
||||
ip_register_limit_duration: 0,
|
||||
@ -48,8 +51,8 @@ export const useGlobalStore = create<GlobalStore>((set) => ({
|
||||
only_first_purchase: false,
|
||||
},
|
||||
currency: {
|
||||
currency_unit: '',
|
||||
currency_symbol: '',
|
||||
currency_unit: 'USD',
|
||||
currency_symbol: '$',
|
||||
},
|
||||
subscribe: {
|
||||
single_model: false,
|
||||
@ -57,6 +60,11 @@ export const useGlobalStore = create<GlobalStore>((set) => ({
|
||||
subscribe_domain: '',
|
||||
pan_domain: false,
|
||||
},
|
||||
verify_code: {
|
||||
verify_code_expire_time: 5,
|
||||
verify_code_limit: 15,
|
||||
verify_code_interval: 60,
|
||||
},
|
||||
oauth_methods: [],
|
||||
},
|
||||
user: undefined,
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Tajný klíč turniketu poskytovaný Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Klíč pro web turniketu poskytovaný Cloudflare",
|
||||
"verifySettings": "Nastavení ověření"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Denní limit",
|
||||
"dailyLimitDescription": "Maximální počet ověřovacích kódů, které lze odeslat za den",
|
||||
"expireTime": "Čas vypršení",
|
||||
"expireTimeDescription": "Doba platnosti ověřovacího kódu (minuty)",
|
||||
"interval": "Interval odesílání",
|
||||
"intervalDescription": "Minimální interval mezi odesíláním ověřovacích kódů (sekundy)",
|
||||
"minute": "minuty",
|
||||
"saveSuccess": "Uložení úspěšné",
|
||||
"second": "sekundy",
|
||||
"times": "krát",
|
||||
"verifyCodeSettings": "Nastavení ověřovacího kódu"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Povolit",
|
||||
"enableTip": "Po povolení budou povoleny funkce registrace, přihlášení, připojení a odpojení mobilního telefonu",
|
||||
"endpointLabel": "Koncový bod",
|
||||
"expireTime": "Čas vypršení",
|
||||
"expireTimeTip": "Doba platnosti ověřovacího kódu SMS (v sekundách)",
|
||||
"interval": "Interval",
|
||||
"intervalTip": "Interval odesílání SMS ověřovacího kódu pro stejné telefonní číslo (v sekundách), 0 znamená bez omezení",
|
||||
"limit": "Denní limit",
|
||||
"limitTip": "Denní limit pro odesílání ověřovacích SMS kódů na stejné telefonní číslo, 0 znamená bez omezení",
|
||||
"logs": "Protokoly",
|
||||
"phoneNumberLabel": "Telefonní číslo",
|
||||
"placeholders": {
|
||||
"expireTime": "Zadejte dobu vypršení, výchozí je 300",
|
||||
"interval": "Zadejte interval, výchozí je 60",
|
||||
"limit": "Zadejte denní limit, výchozí je 20",
|
||||
"template": "Váš ověřovací kód je {code}, platný po dobu 5 minut",
|
||||
"templateCode": "Zadejte kód šablony"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Upravit předplatné",
|
||||
"editUser": "Upravit uživatele",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "E-mailová oznámení",
|
||||
"enable": "Povolit",
|
||||
"expireTime": "Čas vypršení",
|
||||
"expiredAt": "Platnost vypršela",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Název předplatného",
|
||||
"subscriptionNotifications": "Oznámení o předplatném",
|
||||
"success": "Úspěch",
|
||||
"telegramNotifications": "Telegram oznámení",
|
||||
"telephone": "Telefonní číslo",
|
||||
"telephonePlaceholder": "Zadejte telefonní číslo",
|
||||
"time": "Čas",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Turnstile-Geheimschlüssel, bereitgestellt von Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Turnstile-Seitenschlüssel, bereitgestellt von Cloudflare",
|
||||
"verifySettings": "Überprüfungseinstellungen"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Tägliches Limit",
|
||||
"dailyLimitDescription": "Maximale Anzahl von Bestätigungscodes, die pro Tag gesendet werden können",
|
||||
"expireTime": "Ablaufzeit",
|
||||
"expireTimeDescription": "Ablaufzeit des Bestätigungscodes (Minuten)",
|
||||
"interval": "Sendeintervall",
|
||||
"intervalDescription": "Minimales Intervall zwischen dem Versenden von Bestätigungscodes (Sekunden)",
|
||||
"minute": "Minuten",
|
||||
"saveSuccess": "Erfolgreich gespeichert",
|
||||
"second": "Sekunden",
|
||||
"times": "Mal",
|
||||
"verifyCodeSettings": "Einstellungen für den Bestätigungscode"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Aktivieren",
|
||||
"enableTip": "Nach der Aktivierung werden die Funktionen zur Registrierung, Anmeldung, Bindung und Entbindung von Mobiltelefonen aktiviert",
|
||||
"endpointLabel": "Endpunkt",
|
||||
"expireTime": "Ablaufzeit",
|
||||
"expireTimeTip": "Gültigkeitsdauer des SMS-Bestätigungscodes (Sekunden)",
|
||||
"interval": "Intervall",
|
||||
"intervalTip": "SMS-Bestätigungscode-Sendeintervall für dieselbe Telefonnummer (Sekunden), 0 bedeutet keine Begrenzung",
|
||||
"limit": "Tageslimit",
|
||||
"limitTip": "Tägliches Limit für das Senden von SMS-Verifizierungscodes an dieselbe Telefonnummer, 0 bedeutet kein Limit",
|
||||
"logs": "Protokolle",
|
||||
"phoneNumberLabel": "Telefonnummer",
|
||||
"placeholders": {
|
||||
"expireTime": "Geben Sie die Ablaufzeit ein, Standard ist 300",
|
||||
"interval": "Geben Sie das Intervall ein, Standard ist 60",
|
||||
"limit": "Geben Sie das tägliche Limit ein, Standard ist 20",
|
||||
"template": "Ihr Bestätigungscode ist {code}, gültig für 5 Minuten",
|
||||
"templateCode": "Geben Sie den Vorlagen-Code ein"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Abonnement bearbeiten",
|
||||
"editUser": "Benutzer bearbeiten",
|
||||
"email": "E-Mail",
|
||||
"emailNotifications": "E-Mail-Benachrichtigungen",
|
||||
"enable": "Aktivieren",
|
||||
"expireTime": "Ablaufzeit",
|
||||
"expiredAt": "Abgelaufen am",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Abonnementname",
|
||||
"subscriptionNotifications": "Abonnement-Benachrichtigungen",
|
||||
"success": "Erfolg",
|
||||
"telegramNotifications": "Telegram-Benachrichtigungen",
|
||||
"telephone": "Telefonnummer",
|
||||
"telephonePlaceholder": "Telefonnummer eingeben",
|
||||
"time": "Zeit",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Turnstile secret key provided by Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Turnstile site key provided by Cloudflare",
|
||||
"verifySettings": "Verify Settings"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Daily Limit",
|
||||
"dailyLimitDescription": "Maximum number of verification codes that can be sent per day",
|
||||
"expireTime": "Expire Time",
|
||||
"expireTimeDescription": "Verification code expiration time (minutes)",
|
||||
"interval": "Send Interval",
|
||||
"intervalDescription": "Minimum interval between sending verification codes (seconds)",
|
||||
"minute": "minutes",
|
||||
"saveSuccess": "Save Successful",
|
||||
"second": "seconds",
|
||||
"times": "times",
|
||||
"verifyCodeSettings": "Verification Code Settings"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Enable",
|
||||
"enableTip": "After enabling, mobile phone registration, login, binding, and unbinding functions will be enabled",
|
||||
"endpointLabel": "Endpoint",
|
||||
"expireTime": "Expire Time",
|
||||
"expireTimeTip": "SMS verification code validity period (seconds)",
|
||||
"interval": "Interval",
|
||||
"intervalTip": "SMS verification code sending interval for the same phone number (seconds), 0 means no limit",
|
||||
"limit": "Daily Limit",
|
||||
"limitTip": "Daily SMS verification code sending limit for the same phone number, 0 means no limit",
|
||||
"logs": "Logs",
|
||||
"phoneNumberLabel": "Phone Number",
|
||||
"placeholders": {
|
||||
"expireTime": "Enter expire time, default is 300",
|
||||
"interval": "Enter interval time, default is 60",
|
||||
"limit": "Enter daily limit, default is 20",
|
||||
"template": "Your verification code is {code}, valid for 5 minutes",
|
||||
"templateCode": "Enter template code"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Edit Subscription",
|
||||
"editUser": "Edit User",
|
||||
"email": "Email",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"enable": "Enable",
|
||||
"expireTime": "Expire Time",
|
||||
"expiredAt": "Expired At",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Subscription Name",
|
||||
"subscriptionNotifications": "Subscription Notifications",
|
||||
"success": "Success",
|
||||
"telegramNotifications": "Telegram Notifications",
|
||||
"telephone": "Phone Number",
|
||||
"telephonePlaceholder": "Enter phone number",
|
||||
"time": "Time",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Clave secreta de Turnstile proporcionada por Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Clave del sitio de Turnstile proporcionada por Cloudflare",
|
||||
"verifySettings": "Configuración de Verificación"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Límite Diario",
|
||||
"dailyLimitDescription": "Número máximo de códigos de verificación que se pueden enviar por día",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expireTimeDescription": "Tiempo de expiración del código de verificación (minutos)",
|
||||
"interval": "Intervalo de Envío",
|
||||
"intervalDescription": "Intervalo mínimo entre el envío de códigos de verificación (segundos)",
|
||||
"minute": "minutos",
|
||||
"saveSuccess": "Guardado Exitoso",
|
||||
"second": "segundos",
|
||||
"times": "veces",
|
||||
"verifyCodeSettings": "Configuración del Código de Verificación"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Habilitar",
|
||||
"enableTip": "Después de habilitar, se activarán las funciones de registro, inicio de sesión, vinculación y desvinculación del teléfono móvil",
|
||||
"endpointLabel": "Punto final",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expireTimeTip": "Periodo de validez del código de verificación por SMS (segundos)",
|
||||
"interval": "Intervalo",
|
||||
"intervalTip": "Intervalo de envío del código de verificación por SMS para el mismo número de teléfono (segundos), 0 significa sin límite",
|
||||
"limit": "Límite Diario",
|
||||
"limitTip": "Límite diario de envío de códigos de verificación por SMS para el mismo número de teléfono, 0 significa sin límite",
|
||||
"logs": "Registros",
|
||||
"phoneNumberLabel": "Número de Teléfono",
|
||||
"placeholders": {
|
||||
"expireTime": "Ingrese el tiempo de expiración, el valor predeterminado es 300",
|
||||
"interval": "Ingrese el tiempo de intervalo, el valor predeterminado es 60",
|
||||
"limit": "Ingrese el límite diario, el valor predeterminado es 20",
|
||||
"template": "Su código de verificación es {code}, válido por 5 minutos",
|
||||
"templateCode": "Ingrese el código de la plantilla"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Editar suscripción",
|
||||
"editUser": "Editar usuario",
|
||||
"email": "correo electrónico",
|
||||
"emailNotifications": "Notificaciones por correo electrónico",
|
||||
"enable": "Habilitar",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expiredAt": "Fecha de vencimiento",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Nombre de la Suscripción",
|
||||
"subscriptionNotifications": "Notificaciones de suscripción",
|
||||
"success": "Éxito",
|
||||
"telegramNotifications": "Notificaciones de Telegram",
|
||||
"telephone": "Número de Teléfono",
|
||||
"telephonePlaceholder": "Ingrese número de teléfono",
|
||||
"time": "Hora",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Clave secreta de Turnstile proporcionada por Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Clave del sitio de Turnstile proporcionada por Cloudflare",
|
||||
"verifySettings": "Configuración de Verificación"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Límite Diario",
|
||||
"dailyLimitDescription": "Número máximo de códigos de verificación que se pueden enviar por día",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expireTimeDescription": "Tiempo de expiración del código de verificación (minutos)",
|
||||
"interval": "Intervalo de Envío",
|
||||
"intervalDescription": "Intervalo mínimo entre el envío de códigos de verificación (segundos)",
|
||||
"minute": "minutos",
|
||||
"saveSuccess": "Guardado Exitoso",
|
||||
"second": "segundos",
|
||||
"times": "veces",
|
||||
"verifyCodeSettings": "Configuración del Código de Verificación"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Habilitar",
|
||||
"enableTip": "Después de habilitar, se activarán las funciones de registro, inicio de sesión, vinculación y desvinculación del teléfono móvil",
|
||||
"endpointLabel": "Punto final",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expireTimeTip": "Periodo de validez del código de verificación por SMS (segundos)",
|
||||
"interval": "Intervalo",
|
||||
"intervalTip": "Intervalo de envío del código de verificación por SMS para el mismo número de teléfono (segundos), 0 significa sin límite",
|
||||
"limit": "Límite Diario",
|
||||
"limitTip": "Límite diario de envío de códigos de verificación por SMS para el mismo número de teléfono, 0 significa sin límite",
|
||||
"logs": "Registros",
|
||||
"phoneNumberLabel": "Número de Teléfono",
|
||||
"placeholders": {
|
||||
"expireTime": "Ingrese el tiempo de expiración, el valor predeterminado es 300",
|
||||
"interval": "Ingrese el tiempo de intervalo, el valor predeterminado es 60",
|
||||
"limit": "Ingrese el límite diario, el valor predeterminado es 20",
|
||||
"template": "Su código de verificación es {code}, válido por 5 minutos",
|
||||
"templateCode": "Ingrese el código de la plantilla"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Editar Suscripción",
|
||||
"editUser": "Editar usuario",
|
||||
"email": "correo electrónico",
|
||||
"emailNotifications": "Notificaciones por Correo Electrónico",
|
||||
"enable": "Habilitar",
|
||||
"expireTime": "Tiempo de Expiración",
|
||||
"expiredAt": "Fecha de vencimiento",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Nombre de la Suscripción",
|
||||
"subscriptionNotifications": "Notificaciones de Suscripción",
|
||||
"success": "Éxito",
|
||||
"telegramNotifications": "Notificaciones de Telegram",
|
||||
"telephone": "Número de Teléfono",
|
||||
"telephonePlaceholder": "Ingrese número de teléfono",
|
||||
"time": "Hora",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "کلید مخفی ترنستایل ارائه شده توسط Cloudflare",
|
||||
"turnstileSiteKeyDescription": "کلید سایت ترنستایل ارائه شده توسط Cloudflare",
|
||||
"verifySettings": "تنظیمات تأیید"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "حداکثر روزانه",
|
||||
"dailyLimitDescription": "حداکثر تعداد کدهای تأیید که میتوان در روز ارسال کرد",
|
||||
"expireTime": "زمان انقضا",
|
||||
"expireTimeDescription": "زمان انقضای کد تأیید (دقیقه)",
|
||||
"interval": "فاصله ارسال",
|
||||
"intervalDescription": "حداقل فاصله بین ارسال کدهای تأیید (ثانیه)",
|
||||
"minute": "دقیقه",
|
||||
"saveSuccess": "ذخیره با موفقیت",
|
||||
"second": "ثانیه",
|
||||
"times": "بار",
|
||||
"verifyCodeSettings": "تنظیمات کد تأیید"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "فعال کردن",
|
||||
"enableTip": "پس از فعالسازی، عملکردهای ثبتنام، ورود، اتصال و قطع اتصال تلفن همراه فعال خواهند شد",
|
||||
"endpointLabel": "نقطه پایانی",
|
||||
"expireTime": "زمان انقضا",
|
||||
"expireTimeTip": "مدت اعتبار کد تأیید پیامکی (ثانیه)",
|
||||
"interval": "فاصله زمانی",
|
||||
"intervalTip": "فاصله زمانی ارسال کد تأیید پیامکی برای همان شماره تلفن (ثانیه)، 0 به معنای بدون محدودیت است",
|
||||
"limit": "محدودیت روزانه",
|
||||
"limitTip": "محدودیت ارسال کد تأییدیه پیامکی روزانه برای همان شماره تلفن، ۰ به معنای بدون محدودیت است",
|
||||
"logs": "لاگها",
|
||||
"phoneNumberLabel": "شماره تلفن",
|
||||
"placeholders": {
|
||||
"expireTime": "زمان انقضا را وارد کنید، پیشفرض ۳۰۰ است",
|
||||
"interval": "زمان فاصله را وارد کنید، پیشفرض ۶۰ است",
|
||||
"limit": "محدودیت روزانه را وارد کنید، پیشفرض ۲۰ است",
|
||||
"template": "کد تأیید شما {code} است و به مدت ۵ دقیقه معتبر است",
|
||||
"templateCode": "کد قالب را وارد کنید"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "ویرایش اشتراک",
|
||||
"editUser": "ویرایش کاربر",
|
||||
"email": "ایمیل",
|
||||
"emailNotifications": "اعلانهای ایمیل",
|
||||
"enable": "فعال کردن",
|
||||
"expireTime": "زمان انقضا",
|
||||
"expiredAt": "منقضی شده در",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "نام اشتراک",
|
||||
"subscriptionNotifications": "اعلانهای اشتراک",
|
||||
"success": "موفقیت",
|
||||
"telegramNotifications": "اعلانهای تلگرام",
|
||||
"telephone": "شماره تلفن",
|
||||
"telephonePlaceholder": "شماره تلفن را وارد کنید",
|
||||
"time": "زمان",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Turnstile-salaisavain, jonka Cloudflare on toimittanut",
|
||||
"turnstileSiteKeyDescription": "Turnstile-sivuston avain, jonka Cloudflare on toimittanut",
|
||||
"verifySettings": "Vahvistusasetukset"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Päivittäinen raja",
|
||||
"dailyLimitDescription": "Suurin määrä vahvistuskoodien lähettämistä päivässä",
|
||||
"expireTime": "Voimassaoloaika",
|
||||
"expireTimeDescription": "Vahvistuskoodin voimassaoloaika (minuutteina)",
|
||||
"interval": "Lähetysväli",
|
||||
"intervalDescription": "Minimi väli vahvistuskoodien lähettämisen välillä (sekunteina)",
|
||||
"minute": "minuuttia",
|
||||
"saveSuccess": "Tallennus onnistui",
|
||||
"second": "sekuntia",
|
||||
"times": "kertaa",
|
||||
"verifyCodeSettings": "Vahvistuskoodin asetukset"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Ota käyttöön",
|
||||
"enableTip": "Kun otat tämän käyttöön, matkapuhelimen rekisteröinti-, kirjautumis-, sitomis- ja purkutoiminnot otetaan käyttöön",
|
||||
"endpointLabel": "Päätepiste",
|
||||
"expireTime": "Vanhentumisaika",
|
||||
"expireTimeTip": "Tekstiviestivarmennuskoodin voimassaoloaika (sekunteina)",
|
||||
"interval": "Aikaväli",
|
||||
"intervalTip": "Saman puhelinnumeron SMS-varmistuskoodin lähetysväli (sekunteina), 0 tarkoittaa ei rajoitusta",
|
||||
"limit": "Päivittäinen raja",
|
||||
"limitTip": "Päivittäinen tekstiviestivarmistuskoodin lähetysraja samalle puhelinnumerolle, 0 tarkoittaa ei rajoitusta",
|
||||
"logs": "Lokit",
|
||||
"phoneNumberLabel": "Puhelinnumero",
|
||||
"placeholders": {
|
||||
"expireTime": "Syötä vanhentumisaika, oletus on 300",
|
||||
"interval": "Anna aikaväli, oletus on 60",
|
||||
"limit": "Anna päivittäinen raja, oletus on 20",
|
||||
"template": "Vahvistuskoodisi on {code}, voimassa 5 minuuttia",
|
||||
"templateCode": "Anna mallikoodi"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Muokkaa tilausta",
|
||||
"editUser": "Muokkaa käyttäjää",
|
||||
"email": "sähköposti",
|
||||
"emailNotifications": "Sähköposti-ilmoitukset",
|
||||
"enable": "Ota käyttöön",
|
||||
"expireTime": "Vanhentumisaika",
|
||||
"expiredAt": "Vanhentunut",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Tilauksen nimi",
|
||||
"subscriptionNotifications": "Tilausilmoitukset",
|
||||
"success": "Onnistuminen",
|
||||
"telegramNotifications": "Telegram-ilmoitukset",
|
||||
"telephone": "Puhelinnumero",
|
||||
"telephonePlaceholder": "Syötä puhelinnumero",
|
||||
"time": "Aika",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Clé secrète de tourniquet fournie par Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Clé de site de tourniquet fournie par Cloudflare",
|
||||
"verifySettings": "Paramètres de vérification"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Limite quotidienne",
|
||||
"dailyLimitDescription": "Nombre maximum de codes de vérification pouvant être envoyés par jour",
|
||||
"expireTime": "Temps d'expiration",
|
||||
"expireTimeDescription": "Temps d'expiration du code de vérification (minutes)",
|
||||
"interval": "Intervalle d'envoi",
|
||||
"intervalDescription": "Intervalle minimum entre l'envoi des codes de vérification (secondes)",
|
||||
"minute": "minutes",
|
||||
"saveSuccess": "Enregistrement réussi",
|
||||
"second": "secondes",
|
||||
"times": "fois",
|
||||
"verifyCodeSettings": "Paramètres du code de vérification"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Activer",
|
||||
"enableTip": "Après activation, les fonctions d'enregistrement, de connexion, de liaison et de déliaison par téléphone mobile seront activées",
|
||||
"endpointLabel": "Point de terminaison",
|
||||
"expireTime": "Date d'expiration",
|
||||
"expireTimeTip": "Période de validité du code de vérification par SMS (secondes)",
|
||||
"interval": "Intervalle",
|
||||
"intervalTip": "Intervalle d'envoi du code de vérification par SMS pour le même numéro de téléphone (secondes), 0 signifie aucune limite",
|
||||
"limit": "Limite quotidienne",
|
||||
"limitTip": "Limite quotidienne d'envoi de code de vérification par SMS pour le même numéro de téléphone, 0 signifie aucune limite",
|
||||
"logs": "Journaux",
|
||||
"phoneNumberLabel": "Numéro de téléphone",
|
||||
"placeholders": {
|
||||
"expireTime": "Entrez le temps d'expiration, par défaut 300",
|
||||
"interval": "Entrez le temps d'intervalle, par défaut 60",
|
||||
"limit": "Entrez la limite quotidienne, par défaut 20",
|
||||
"template": "Votre code de vérification est {code}, valable pendant 5 minutes",
|
||||
"templateCode": "Entrez le code du modèle"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Modifier l'abonnement",
|
||||
"editUser": "Modifier l'utilisateur",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "Notifications par e-mail",
|
||||
"enable": "Activer",
|
||||
"expireTime": "Date d'expiration",
|
||||
"expiredAt": "Expiré le",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Nom de l'abonnement",
|
||||
"subscriptionNotifications": "Notifications d'abonnement",
|
||||
"success": "Succès",
|
||||
"telegramNotifications": "Notifications Telegram",
|
||||
"telephone": "Numéro de téléphone",
|
||||
"telephonePlaceholder": "Entrez le numéro de téléphone",
|
||||
"time": "Temps",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "क्लाउडफ्लेयर द्वारा प्रदान की गई टर्नस्टाइल गुप्त कुंजी",
|
||||
"turnstileSiteKeyDescription": "क्लाउडफ्लेयर द्वारा प्रदान की गई टर्नस्टाइल साइट कुंजी",
|
||||
"verifySettings": "सत्यापन सेटिंग्स"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "दैनिक सीमा",
|
||||
"dailyLimitDescription": "प्रति दिन भेजे जा सकने वाले अधिकतम सत्यापन कोड की संख्या",
|
||||
"expireTime": "समाप्ति समय",
|
||||
"expireTimeDescription": "सत्यापन कोड की समाप्ति का समय (मिनट)",
|
||||
"interval": "भेजने का अंतराल",
|
||||
"intervalDescription": "सत्यापन कोड भेजने के बीच का न्यूनतम अंतराल (सेकंड)",
|
||||
"minute": "मिनट",
|
||||
"saveSuccess": "सफलतापूर्वक सहेजा गया",
|
||||
"second": "सेकंड",
|
||||
"times": "बार",
|
||||
"verifyCodeSettings": "सत्यापन कोड सेटिंग्स"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "सक्षम करें",
|
||||
"enableTip": "सक्षम करने के बाद, मोबाइल फोन पंजीकरण, लॉगिन, बाइंडिंग, और अनबाइंडिंग कार्यक्षमताएँ सक्षम हो जाएँगी",
|
||||
"endpointLabel": "अंतिम बिंदु",
|
||||
"expireTime": "समाप्ति समय",
|
||||
"expireTimeTip": "एसएमएस सत्यापन कोड की वैधता अवधि (सेकंड)",
|
||||
"interval": "अंतराल",
|
||||
"intervalTip": "उसी फोन नंबर के लिए एसएमएस सत्यापन कोड भेजने का अंतराल (सेकंड में), 0 का मतलब है कोई सीमा नहीं",
|
||||
"limit": "दैनिक सीमा",
|
||||
"limitTip": "उसी फोन नंबर के लिए दैनिक एसएमएस सत्यापन कोड भेजने की सीमा, 0 का मतलब कोई सीमा नहीं है",
|
||||
"logs": "लॉग्स",
|
||||
"phoneNumberLabel": "फोन नंबर",
|
||||
"placeholders": {
|
||||
"expireTime": "समाप्ति समय दर्ज करें, डिफ़ॉल्ट 300 है",
|
||||
"interval": "अंतराल समय दर्ज करें, डिफ़ॉल्ट 60 है",
|
||||
"limit": "दैनिक सीमा दर्ज करें, डिफ़ॉल्ट 20 है",
|
||||
"template": "आपका सत्यापन कोड {code} है, 5 मिनट के लिए मान्य",
|
||||
"templateCode": "टेम्पलेट कोड दर्ज करें"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "सदस्यता संपादित करें",
|
||||
"editUser": "उपयोगकर्ता संपादित करें",
|
||||
"email": "ईमेल",
|
||||
"emailNotifications": "ईमेल सूचनाएं",
|
||||
"enable": "सक्षम करें",
|
||||
"expireTime": "समाप्ति समय",
|
||||
"expiredAt": "समाप्ति तिथि",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "सदस्यता नाम",
|
||||
"subscriptionNotifications": "सदस्यता सूचनाएं",
|
||||
"success": "सफलता",
|
||||
"telegramNotifications": "टेलीग्राम सूचनाएं",
|
||||
"telephone": "फ़ोन नंबर",
|
||||
"telephonePlaceholder": "फ़ोन नंबर दर्ज करें",
|
||||
"time": "समय",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "A Cloudflare által biztosított forgókapu titkos kulcs",
|
||||
"turnstileSiteKeyDescription": "A Cloudflare által biztosított forgókapu webhely kulcs",
|
||||
"verifySettings": "Ellenőrzési beállítások"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Napi Korlát",
|
||||
"dailyLimitDescription": "A naponta küldhető ellenőrző kódok maximális száma",
|
||||
"expireTime": "Lejárati Idő",
|
||||
"expireTimeDescription": "Az ellenőrző kód lejárati ideje (perc)",
|
||||
"interval": "Küldési Intervallum",
|
||||
"intervalDescription": "Minimum intervallum az ellenőrző kódok küldése között (másodperc)",
|
||||
"minute": "perc",
|
||||
"saveSuccess": "Mentés Sikeres",
|
||||
"second": "másodperc",
|
||||
"times": "alkalom",
|
||||
"verifyCodeSettings": "Ellenőrző Kód Beállítások"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Engedélyez",
|
||||
"enableTip": "A bekapcsolás után a mobiltelefon regisztráció, bejelentkezés, kötés és oldás funkciók elérhetővé válnak",
|
||||
"endpointLabel": "Végpont",
|
||||
"expireTime": "Lejárati idő",
|
||||
"expireTimeTip": "Az SMS ellenőrző kód érvényességi ideje (másodpercben)",
|
||||
"interval": "Intervallum",
|
||||
"intervalTip": "SMS ellenőrző kód küldési intervalluma ugyanarra a telefonszámra (másodpercben), 0 azt jelenti, hogy nincs korlátozás",
|
||||
"limit": "Napi limit",
|
||||
"limitTip": "Napi SMS ellenőrző kód küldési limit ugyanarra a telefonszámra, 0 azt jelenti, hogy nincs korlátozás",
|
||||
"logs": "Naplók",
|
||||
"phoneNumberLabel": "Telefonszám",
|
||||
"placeholders": {
|
||||
"expireTime": "Adja meg a lejárati időt, alapértelmezett érték: 300",
|
||||
"interval": "Adja meg az intervallum időt, alapértelmezett 60",
|
||||
"limit": "Adja meg a napi limitet, alapértelmezett 20",
|
||||
"template": "Az Ön ellenőrző kódja {code}, érvényes 5 percig",
|
||||
"templateCode": "Adja meg a sablonkódot"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Előfizetés szerkesztése",
|
||||
"editUser": "Felhasználó szerkesztése",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "Email értesítések",
|
||||
"enable": "Engedélyezés",
|
||||
"expireTime": "Lejárati idő",
|
||||
"expiredAt": "Lejárati dátum",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Előfizetés neve",
|
||||
"subscriptionNotifications": "Előfizetési értesítések",
|
||||
"success": "Siker",
|
||||
"telegramNotifications": "Telegram értesítések",
|
||||
"telephone": "Telefonszám",
|
||||
"telephonePlaceholder": "Adja meg a telefonszámot",
|
||||
"time": "Idő",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Cloudflareが提供するターンスタイル秘密鍵",
|
||||
"turnstileSiteKeyDescription": "Cloudflareが提供するターンスタイルサイトキー",
|
||||
"verifySettings": "確認設定"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "1日の制限",
|
||||
"dailyLimitDescription": "1日に送信できる認証コードの最大数",
|
||||
"expireTime": "有効期限",
|
||||
"expireTimeDescription": "認証コードの有効期限(分)",
|
||||
"interval": "送信間隔",
|
||||
"intervalDescription": "認証コード送信の最小間隔(秒)",
|
||||
"minute": "分",
|
||||
"saveSuccess": "保存成功",
|
||||
"second": "秒",
|
||||
"times": "回",
|
||||
"verifyCodeSettings": "認証コード設定"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "有効にする",
|
||||
"enableTip": "有効にすると、携帯電話の登録、ログイン、バインド、アンバインド機能が有効になります",
|
||||
"endpointLabel": "エンドポイント",
|
||||
"expireTime": "有効期限",
|
||||
"expireTimeTip": "SMS認証コードの有効期間(秒)",
|
||||
"interval": "間隔",
|
||||
"intervalTip": "同じ電話番号へのSMS認証コード送信間隔(秒)、0は制限なしを意味します",
|
||||
"limit": "1日の制限",
|
||||
"limitTip": "同一の電話番号に対する1日のSMS認証コード送信制限。0は制限なしを意味します。",
|
||||
"logs": "ログ",
|
||||
"phoneNumberLabel": "電話番号",
|
||||
"placeholders": {
|
||||
"expireTime": "有効期限を入力してください。デフォルトは300です",
|
||||
"interval": "間隔時間を入力してください。デフォルトは60です",
|
||||
"limit": "1日の制限を入力してください。デフォルトは20です",
|
||||
"template": "あなたの認証コードは{code}です。5分間有効です",
|
||||
"templateCode": "テンプレートコードを入力してください"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "サブスクリプションを編集",
|
||||
"editUser": "ユーザー編集",
|
||||
"email": "メールアドレス",
|
||||
"emailNotifications": "メール通知",
|
||||
"enable": "有効",
|
||||
"expireTime": "有効期限",
|
||||
"expiredAt": "有効期限",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "サブスクリプション名",
|
||||
"subscriptionNotifications": "サブスクリプション通知",
|
||||
"success": "成功",
|
||||
"telegramNotifications": "Telegram通知",
|
||||
"telephone": "電話番号",
|
||||
"telephonePlaceholder": "電話番号を入力してください",
|
||||
"time": "時間",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Cloudflare에서 제공하는 턴스타일 비밀 키",
|
||||
"turnstileSiteKeyDescription": "Cloudflare에서 제공하는 턴스타일 사이트 키",
|
||||
"verifySettings": "검증 설정"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "일일 한도",
|
||||
"dailyLimitDescription": "하루에 보낼 수 있는 인증 코드의 최대 수",
|
||||
"expireTime": "만료 시간",
|
||||
"expireTimeDescription": "인증 코드 만료 시간(분)",
|
||||
"interval": "전송 간격",
|
||||
"intervalDescription": "인증 코드 전송 간의 최소 간격(초)",
|
||||
"minute": "분",
|
||||
"saveSuccess": "저장 성공",
|
||||
"second": "초",
|
||||
"times": "회",
|
||||
"verifyCodeSettings": "인증 코드 설정"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "활성화",
|
||||
"enableTip": "활성화 후, 휴대폰 등록, 로그인, 연결 및 연결 해제 기능이 활성화됩니다",
|
||||
"endpointLabel": "엔드포인트",
|
||||
"expireTime": "만료 시간",
|
||||
"expireTimeTip": "SMS 인증 코드 유효 기간 (초)",
|
||||
"interval": "간격",
|
||||
"intervalTip": "같은 전화번호로 SMS 인증 코드를 보내는 간격(초), 0은 제한 없음",
|
||||
"limit": "일일 한도",
|
||||
"limitTip": "동일한 전화번호에 대한 일일 SMS 인증 코드 전송 제한, 0은 제한 없음",
|
||||
"logs": "로그",
|
||||
"phoneNumberLabel": "전화번호",
|
||||
"placeholders": {
|
||||
"expireTime": "만료 시간을 입력하세요. 기본값은 300입니다",
|
||||
"interval": "간격 시간을 입력하세요, 기본값은 60입니다",
|
||||
"limit": "일일 제한을 입력하세요, 기본값은 20입니다",
|
||||
"template": "귀하의 인증 코드는 {code}이며, 5분 동안 유효합니다",
|
||||
"templateCode": "템플릿 코드를 입력하세요"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "구독 수정",
|
||||
"editUser": "사용자 편집",
|
||||
"email": "이메일",
|
||||
"emailNotifications": "이메일 알림",
|
||||
"enable": "사용",
|
||||
"expireTime": "만료 시간",
|
||||
"expiredAt": "만료일",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "구독 이름",
|
||||
"subscriptionNotifications": "구독 알림",
|
||||
"success": "성공",
|
||||
"telegramNotifications": "텔레그램 알림",
|
||||
"telephone": "전화번호",
|
||||
"telephonePlaceholder": "전화번호 입력",
|
||||
"time": "시간",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Turnstile hemmelig nøkkel levert av Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Turnstile nettsted nøkkel levert av Cloudflare",
|
||||
"verifySettings": "Verifiseringsinnstillinger"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Dagsgrense",
|
||||
"dailyLimitDescription": "Maksimalt antall bekreftelseskoder som kan sendes per dag",
|
||||
"expireTime": "Utløpstid",
|
||||
"expireTimeDescription": "Utløpstid for bekreftelseskode (minutter)",
|
||||
"interval": "Sendingsintervall",
|
||||
"intervalDescription": "Minimum intervall mellom sending av bekreftelseskoder (sekunder)",
|
||||
"minute": "minutter",
|
||||
"saveSuccess": "Lagring vellykket",
|
||||
"second": "sekunder",
|
||||
"times": "ganger",
|
||||
"verifyCodeSettings": "Innstillinger for bekreftelseskode"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Aktiver",
|
||||
"enableTip": "Etter aktivering vil funksjonene for registrering, innlogging, binding og frakobling av mobiltelefon bli aktivert",
|
||||
"endpointLabel": "Endepunkt",
|
||||
"expireTime": "Utløpstid",
|
||||
"expireTimeTip": "Gyldighetsperiode for SMS-bekreftelseskode (sekunder)",
|
||||
"interval": "Intervall",
|
||||
"intervalTip": "SMS-verifiseringskode sendingsintervall for samme telefonnummer (sekunder), 0 betyr ingen begrensning",
|
||||
"limit": "Daglig grense",
|
||||
"limitTip": "Daglig grense for sending av SMS-verifiseringskode til samme telefonnummer, 0 betyr ingen grense",
|
||||
"logs": "Logger",
|
||||
"phoneNumberLabel": "Telefonnummer",
|
||||
"placeholders": {
|
||||
"expireTime": "Skriv inn utløpstid, standard er 300",
|
||||
"interval": "Skriv inn intervalltid, standard er 60",
|
||||
"limit": "Skriv inn daglig grense, standard er 20",
|
||||
"template": "Din verifiseringskode er {code}, gyldig i 5 minutter",
|
||||
"templateCode": "Skriv inn malkode"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Rediger abonnement",
|
||||
"editUser": "Rediger bruker",
|
||||
"email": "e-post",
|
||||
"emailNotifications": "E-postvarsler",
|
||||
"enable": "Aktiver",
|
||||
"expireTime": "Utløpstid",
|
||||
"expiredAt": "Utløpt Dato",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Abonnementsnavn",
|
||||
"subscriptionNotifications": "Abonnementsvarsler",
|
||||
"success": "Suksess",
|
||||
"telegramNotifications": "Telegramvarsler",
|
||||
"telephone": "Telefonnummer",
|
||||
"telephonePlaceholder": "Skriv inn telefonnummer",
|
||||
"time": "Tid",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Sekretny klucz bramki dostarczony przez Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Klucz witryny bramki dostarczony przez Cloudflare",
|
||||
"verifySettings": "Ustawienia weryfikacji"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Limit dzienny",
|
||||
"dailyLimitDescription": "Maksymalna liczba kodów weryfikacyjnych, które można wysłać dziennie",
|
||||
"expireTime": "Czas wygaśnięcia",
|
||||
"expireTimeDescription": "Czas wygaśnięcia kodu weryfikacyjnego (minuty)",
|
||||
"interval": "Interwał wysyłania",
|
||||
"intervalDescription": "Minimalny interwał między wysyłaniem kodów weryfikacyjnych (sekundy)",
|
||||
"minute": "minuty",
|
||||
"saveSuccess": "Zapisano pomyślnie",
|
||||
"second": "sekundy",
|
||||
"times": "razy",
|
||||
"verifyCodeSettings": "Ustawienia kodu weryfikacyjnego"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Włącz",
|
||||
"enableTip": "Po włączeniu zostaną aktywowane funkcje rejestracji, logowania, wiązania i odwiązywania telefonu komórkowego",
|
||||
"endpointLabel": "Punkt końcowy",
|
||||
"expireTime": "Czas wygaśnięcia",
|
||||
"expireTimeTip": "Okres ważności kodu weryfikacyjnego SMS (sekundy)",
|
||||
"interval": "Interwał",
|
||||
"intervalTip": "Interwał wysyłania kodu weryfikacyjnego SMS dla tego samego numeru telefonu (w sekundach), 0 oznacza brak ograniczeń",
|
||||
"limit": "Dzienne ograniczenie",
|
||||
"limitTip": "Dzienny limit wysyłania kodów weryfikacyjnych SMS dla tego samego numeru telefonu, 0 oznacza brak limitu",
|
||||
"logs": "Dzienniki",
|
||||
"phoneNumberLabel": "Numer telefonu",
|
||||
"placeholders": {
|
||||
"expireTime": "Wprowadź czas wygaśnięcia, domyślnie 300",
|
||||
"interval": "Wprowadź czas interwału, domyślnie 60",
|
||||
"limit": "Wprowadź dzienny limit, domyślnie 20",
|
||||
"template": "Twój kod weryfikacyjny to {code}, ważny przez 5 minut",
|
||||
"templateCode": "Wprowadź kod szablonu"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Edytuj subskrypcję",
|
||||
"editUser": "Edytuj użytkownika",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "Powiadomienia e-mailowe",
|
||||
"enable": "Włącz",
|
||||
"expireTime": "Czas wygaśnięcia",
|
||||
"expiredAt": "Data wygaśnięcia",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Nazwa subskrypcji",
|
||||
"subscriptionNotifications": "Powiadomienia o subskrypcji",
|
||||
"success": "Sukces",
|
||||
"telegramNotifications": "Powiadomienia Telegram",
|
||||
"telephone": "Numer telefonu",
|
||||
"telephonePlaceholder": "Wprowadź numer telefonu",
|
||||
"time": "Czas",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Chave secreta do Turnstile fornecida pela Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Chave do site do Turnstile fornecida pela Cloudflare",
|
||||
"verifySettings": "Configurações de Verificação"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Limite Diário",
|
||||
"dailyLimitDescription": "Número máximo de códigos de verificação que podem ser enviados por dia",
|
||||
"expireTime": "Tempo de Expiração",
|
||||
"expireTimeDescription": "Tempo de expiração do código de verificação (minutos)",
|
||||
"interval": "Intervalo de Envio",
|
||||
"intervalDescription": "Intervalo mínimo entre o envio de códigos de verificação (segundos)",
|
||||
"minute": "minutos",
|
||||
"saveSuccess": "Salvo com Sucesso",
|
||||
"second": "segundos",
|
||||
"times": "vezes",
|
||||
"verifyCodeSettings": "Configurações do Código de Verificação"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Habilitar",
|
||||
"enableTip": "Após a ativação, as funções de registro, login, vinculação e desvinculação de telefone celular serão ativadas",
|
||||
"endpointLabel": "Endpoint",
|
||||
"expireTime": "Tempo de Expiração",
|
||||
"expireTimeTip": "Período de validade do código de verificação por SMS (segundos)",
|
||||
"interval": "Intervalo",
|
||||
"intervalTip": "Intervalo de envio do código de verificação por SMS para o mesmo número de telefone (segundos), 0 significa sem limite",
|
||||
"limit": "Limite Diário",
|
||||
"limitTip": "Limite diário de envio de código de verificação por SMS para o mesmo número de telefone, 0 significa sem limite",
|
||||
"logs": "Registros",
|
||||
"phoneNumberLabel": "Número de Telefone",
|
||||
"placeholders": {
|
||||
"expireTime": "Insira o tempo de expiração, o padrão é 300",
|
||||
"interval": "Insira o tempo de intervalo, o padrão é 60",
|
||||
"limit": "Insira o limite diário, o padrão é 20",
|
||||
"template": "Seu código de verificação é {code}, válido por 5 minutos",
|
||||
"templateCode": "Insira o código do modelo"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Editar Assinatura",
|
||||
"editUser": "Editar Usuário",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "Notificações por Email",
|
||||
"enable": "Habilitar",
|
||||
"expireTime": "Tempo de Expiração",
|
||||
"expiredAt": "Expirado Em",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Nome da Assinatura",
|
||||
"subscriptionNotifications": "Notificações de Assinatura",
|
||||
"success": "Sucesso",
|
||||
"telegramNotifications": "Notificações do Telegram",
|
||||
"telephone": "Número de Telefone",
|
||||
"telephonePlaceholder": "Digite o número de telefone",
|
||||
"time": "Hora",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Cheia secretă a turnstilei furnizată de Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Cheia site-ului turnstile furnizată de Cloudflare",
|
||||
"verifySettings": "Setări Verificare"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Limită Zilnică",
|
||||
"dailyLimitDescription": "Numărul maxim de coduri de verificare care pot fi trimise pe zi",
|
||||
"expireTime": "Timp de Expirare",
|
||||
"expireTimeDescription": "Timpul de expirare a codului de verificare (minute)",
|
||||
"interval": "Interval de Trimitere",
|
||||
"intervalDescription": "Intervalul minim între trimiterea codurilor de verificare (secunde)",
|
||||
"minute": "minute",
|
||||
"saveSuccess": "Salvare cu Succes",
|
||||
"second": "secunde",
|
||||
"times": "ori",
|
||||
"verifyCodeSettings": "Setări Cod de Verificare"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Activează",
|
||||
"enableTip": "După activare, funcțiile de înregistrare, autentificare, asociere și disociere a telefonului mobil vor fi activate",
|
||||
"endpointLabel": "Punct de acces",
|
||||
"expireTime": "Timp de expirare",
|
||||
"expireTimeTip": "Perioada de valabilitate a codului de verificare prin SMS (secunde)",
|
||||
"interval": "Interval",
|
||||
"intervalTip": "Intervalul de trimitere a codului de verificare prin SMS pentru același număr de telefon (secunde), 0 înseamnă fără limită",
|
||||
"limit": "Limită zilnică",
|
||||
"limitTip": "Limita zilnică de trimitere a codului de verificare prin SMS pentru același număr de telefon, 0 înseamnă fără limită",
|
||||
"logs": "Jurnale",
|
||||
"phoneNumberLabel": "Număr de telefon",
|
||||
"placeholders": {
|
||||
"expireTime": "Introduceți timpul de expirare, implicit este 300",
|
||||
"interval": "Introduceți timpul de interval, implicit este 60",
|
||||
"limit": "Introduceți limita zilnică, implicit este 20",
|
||||
"template": "Codul dumneavoastră de verificare este {code}, valabil timp de 5 minute",
|
||||
"templateCode": "Introduceți codul șablonului"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Editează Abonamentul",
|
||||
"editUser": "Editare utilizator",
|
||||
"email": "e-mail",
|
||||
"emailNotifications": "Notificări prin email",
|
||||
"enable": "Activare",
|
||||
"expireTime": "Timp de expirare",
|
||||
"expiredAt": "Expiră la",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Numele Abonamentului",
|
||||
"subscriptionNotifications": "Notificări de abonament",
|
||||
"success": "Succes",
|
||||
"telegramNotifications": "Notificări Telegram",
|
||||
"telephone": "Număr de telefon",
|
||||
"telephonePlaceholder": "Introduceți numărul de telefon",
|
||||
"time": "Timp",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Секретный ключ Turnstile, предоставленный Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Ключ сайта Turnstile, предоставленный Cloudflare",
|
||||
"verifySettings": "Настройки проверки"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Ежедневный лимит",
|
||||
"dailyLimitDescription": "Максимальное количество кодов подтверждения, которые можно отправить за день",
|
||||
"expireTime": "Время истечения",
|
||||
"expireTimeDescription": "Время истечения кода подтверждения (минуты)",
|
||||
"interval": "Интервал отправки",
|
||||
"intervalDescription": "Минимальный интервал между отправкой кодов подтверждения (секунды)",
|
||||
"minute": "минуты",
|
||||
"saveSuccess": "Сохранение успешно",
|
||||
"second": "секунды",
|
||||
"times": "раз",
|
||||
"verifyCodeSettings": "Настройки кода подтверждения"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Включить",
|
||||
"enableTip": "После включения будут доступны функции регистрации, входа, привязки и отвязки мобильного телефона",
|
||||
"endpointLabel": "Конечная точка",
|
||||
"expireTime": "Время истечения",
|
||||
"expireTimeTip": "Срок действия кода подтверждения по SMS (в секундах)",
|
||||
"interval": "Интервал",
|
||||
"intervalTip": "Интервал отправки SMS-кода подтверждения для одного и того же номера телефона (в секундах), 0 означает отсутствие ограничений",
|
||||
"limit": "Дневной лимит",
|
||||
"limitTip": "Дневной лимит отправки SMS-кодов подтверждения на один и тот же номер телефона, 0 означает отсутствие лимита",
|
||||
"logs": "Журналы",
|
||||
"phoneNumberLabel": "Номер телефона",
|
||||
"placeholders": {
|
||||
"expireTime": "Введите время истечения, по умолчанию 300",
|
||||
"interval": "Введите интервал времени, по умолчанию 60",
|
||||
"limit": "Введите дневной лимит, по умолчанию 20",
|
||||
"template": "Ваш проверочный код: {code}, действителен в течение 5 минут",
|
||||
"templateCode": "Введите код шаблона"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Редактировать подписку",
|
||||
"editUser": "Редактировать пользователя",
|
||||
"email": "Электронная почта",
|
||||
"emailNotifications": "Уведомления по электронной почте",
|
||||
"enable": "Включить",
|
||||
"expireTime": "Время истечения",
|
||||
"expiredAt": "Срок действия истек",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Название подписки",
|
||||
"subscriptionNotifications": "Уведомления о подписке",
|
||||
"success": "Успех",
|
||||
"telegramNotifications": "Уведомления Telegram",
|
||||
"telephone": "Номер телефона",
|
||||
"telephonePlaceholder": "Введите номер телефона",
|
||||
"time": "Время",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "รหัสลับ Turnstile ที่จัดเตรียมโดย Cloudflare",
|
||||
"turnstileSiteKeyDescription": "รหัสไซต์ Turnstile ที่จัดเตรียมโดย Cloudflare",
|
||||
"verifySettings": "การตั้งค่าการตรวจสอบ"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "ขีดจำกัดรายวัน",
|
||||
"dailyLimitDescription": "จำนวนสูงสุดของรหัสยืนยันที่สามารถส่งได้ต่อวัน",
|
||||
"expireTime": "เวลาหมดอายุ",
|
||||
"expireTimeDescription": "เวลาหมดอายุของรหัสยืนยัน (นาที)",
|
||||
"interval": "ช่วงเวลาส่ง",
|
||||
"intervalDescription": "ช่วงเวลาขั้นต่ำระหว่างการส่งรหัสยืนยัน (วินาที)",
|
||||
"minute": "นาที",
|
||||
"saveSuccess": "บันทึกสำเร็จ",
|
||||
"second": "วินาที",
|
||||
"times": "ครั้ง",
|
||||
"verifyCodeSettings": "การตั้งค่ารหัสยืนยัน"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "เปิดใช้งาน",
|
||||
"enableTip": "หลังจากเปิดใช้งานแล้ว ฟังก์ชันการลงทะเบียน การเข้าสู่ระบบ การผูก และการยกเลิกการผูกโทรศัพท์มือถือจะถูกเปิดใช้งาน",
|
||||
"endpointLabel": "จุดสิ้นสุด",
|
||||
"expireTime": "เวลาหมดอายุ",
|
||||
"expireTimeTip": "ระยะเวลาหมดอายุของรหัสยืนยันทาง SMS (วินาที)",
|
||||
"interval": "ช่วงเวลา",
|
||||
"intervalTip": "ช่วงเวลาการส่งรหัสยืนยันทาง SMS สำหรับหมายเลขโทรศัพท์เดียวกัน (วินาที), 0 หมายถึงไม่มีข้อจำกัด",
|
||||
"limit": "ขีดจำกัดรายวัน",
|
||||
"limitTip": "จำกัดการส่งรหัสยืนยันทาง SMS รายวันสำหรับหมายเลขโทรศัพท์เดียวกัน, 0 หมายถึงไม่จำกัด",
|
||||
"logs": "บันทึก",
|
||||
"phoneNumberLabel": "หมายเลขโทรศัพท์",
|
||||
"placeholders": {
|
||||
"expireTime": "กรอกเวลาหมดอายุ ค่าเริ่มต้นคือ 300",
|
||||
"interval": "กรอกช่วงเวลา ค่าเริ่มต้นคือ 60",
|
||||
"limit": "กรอกขีดจำกัดรายวัน ค่าเริ่มต้นคือ 20",
|
||||
"template": "รหัสยืนยันของคุณคือ {code} ใช้ได้ภายใน 5 นาที",
|
||||
"templateCode": "กรอกรหัสเทมเพลต"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "แก้ไขการสมัครสมาชิก",
|
||||
"editUser": "แก้ไขผู้ใช้",
|
||||
"email": "อีเมล",
|
||||
"emailNotifications": "การแจ้งเตือนทางอีเมล",
|
||||
"enable": "เปิดใช้งาน",
|
||||
"expireTime": "เวลาหมดอายุ",
|
||||
"expiredAt": "วันหมดอายุ",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "ชื่อการสมัครสมาชิก",
|
||||
"subscriptionNotifications": "การแจ้งเตือนการสมัครสมาชิก",
|
||||
"success": "สำเร็จ",
|
||||
"telegramNotifications": "การแจ้งเตือนทาง Telegram",
|
||||
"telephone": "หมายเลขโทรศัพท์",
|
||||
"telephonePlaceholder": "กรอกหมายเลขโทรศัพท์",
|
||||
"time": "เวลา",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Cloudflare tarafından sağlanan turnstile gizli anahtarı.",
|
||||
"turnstileSiteKeyDescription": "Cloudflare tarafından sağlanan turnstile site anahtarı.",
|
||||
"verifySettings": "Doğrulama Ayarları"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Günlük Limit",
|
||||
"dailyLimitDescription": "Günde gönderilebilecek maksimum doğrulama kodu sayısı",
|
||||
"expireTime": "Son Kullanma Süresi",
|
||||
"expireTimeDescription": "Doğrulama kodunun son kullanma süresi (dakika)",
|
||||
"interval": "Gönderim Aralığı",
|
||||
"intervalDescription": "Doğrulama kodlarının gönderimi arasındaki minimum aralık (saniye)",
|
||||
"minute": "dakika",
|
||||
"saveSuccess": "Başarıyla Kaydedildi",
|
||||
"second": "saniye",
|
||||
"times": "kez",
|
||||
"verifyCodeSettings": "Doğrulama Kodu Ayarları"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Etkinleştir",
|
||||
"enableTip": "Etkinleştirildikten sonra, cep telefonu kaydı, giriş, bağlama ve bağlantı kesme işlevleri etkinleştirilecektir",
|
||||
"endpointLabel": "Uç Nokta",
|
||||
"expireTime": "Sona Erme Süresi",
|
||||
"expireTimeTip": "SMS doğrulama kodu geçerlilik süresi (saniye)",
|
||||
"interval": "Aralık",
|
||||
"intervalTip": "Aynı telefon numarası için SMS doğrulama kodu gönderme aralığı (saniye), 0 sınırsız demektir",
|
||||
"limit": "Günlük Limit",
|
||||
"limitTip": "Aynı telefon numarası için günlük SMS doğrulama kodu gönderim limiti, 0 sınırsız demektir",
|
||||
"logs": "Günlükler",
|
||||
"phoneNumberLabel": "Telefon Numarası",
|
||||
"placeholders": {
|
||||
"expireTime": "Sona erme süresini girin, varsayılan 300",
|
||||
"interval": "Aralık süresini girin, varsayılan 60'tır",
|
||||
"limit": "Günlük limiti girin, varsayılan 20'dir",
|
||||
"template": "Doğrulama kodunuz {code}, 5 dakika geçerlidir",
|
||||
"templateCode": "Şablon kodunu girin"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Aboneliği Düzenle",
|
||||
"editUser": "Kullanıcıyı Düzenle",
|
||||
"email": "e-posta",
|
||||
"emailNotifications": "E-posta Bildirimleri",
|
||||
"enable": "etkinleştir",
|
||||
"expireTime": "Sona Erme Zamanı",
|
||||
"expiredAt": "Son Kullanma Tarihi",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Abonelik Adı",
|
||||
"subscriptionNotifications": "Abonelik Bildirimleri",
|
||||
"success": "Başarı",
|
||||
"telegramNotifications": "Telegram Bildirimleri",
|
||||
"telephone": "Telefon Numarası",
|
||||
"telephonePlaceholder": "Telefon numarasını girin",
|
||||
"time": "Zaman",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Секретний ключ Turnstile, наданий Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Ключ сайту Turnstile, наданий Cloudflare",
|
||||
"verifySettings": "Налаштування перевірки"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Щоденний ліміт",
|
||||
"dailyLimitDescription": "Максимальна кількість кодів підтвердження, які можуть бути надіслані за день",
|
||||
"expireTime": "Час закінчення",
|
||||
"expireTimeDescription": "Час закінчення коду підтвердження (хвилини)",
|
||||
"interval": "Інтервал надсилання",
|
||||
"intervalDescription": "Мінімальний інтервал між надсиланням кодів підтвердження (секунди)",
|
||||
"minute": "хвилин",
|
||||
"saveSuccess": "Успішно збережено",
|
||||
"second": "секунд",
|
||||
"times": "разів",
|
||||
"verifyCodeSettings": "Налаштування коду підтвердження"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Увімкнути",
|
||||
"enableTip": "Після увімкнення будуть доступні функції реєстрації, входу, прив'язки та відв'язки мобільного телефону",
|
||||
"endpointLabel": "Кінцева точка",
|
||||
"expireTime": "Час закінчення",
|
||||
"expireTimeTip": "Термін дії коду перевірки SMS (секунди)",
|
||||
"interval": "Інтервал",
|
||||
"intervalTip": "Інтервал відправки SMS-коду підтвердження для одного і того ж номера телефону (в секундах), 0 означає без обмежень",
|
||||
"limit": "Денний ліміт",
|
||||
"limitTip": "Добова межа відправлення SMS-кодів перевірки для одного і того ж номера телефону, 0 означає відсутність обмежень",
|
||||
"logs": "Журнали",
|
||||
"phoneNumberLabel": "Номер телефону",
|
||||
"placeholders": {
|
||||
"expireTime": "Введіть час закінчення, за замовчуванням 300",
|
||||
"interval": "Введіть інтервал часу, за замовчуванням 60",
|
||||
"limit": "Введіть денний ліміт, за замовчуванням 20",
|
||||
"template": "Ваш код підтвердження {code}, дійсний протягом 5 хвилин",
|
||||
"templateCode": "Введіть код шаблону"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Редагувати підписку",
|
||||
"editUser": "Редагувати користувача",
|
||||
"email": "електронна пошта",
|
||||
"emailNotifications": "Сповіщення електронною поштою",
|
||||
"enable": "Увімкнути",
|
||||
"expireTime": "Час закінчення",
|
||||
"expiredAt": "Термін дії закінчився",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Назва підписки",
|
||||
"subscriptionNotifications": "Сповіщення про підписку",
|
||||
"success": "Успіх",
|
||||
"telegramNotifications": "Сповіщення Telegram",
|
||||
"telephone": "Номер телефону",
|
||||
"telephonePlaceholder": "Введіть номер телефону",
|
||||
"time": "Час",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Khóa bí mật Turnstile được cung cấp bởi Cloudflare",
|
||||
"turnstileSiteKeyDescription": "Khóa trang Turnstile được cung cấp bởi Cloudflare",
|
||||
"verifySettings": "Cài đặt Xác minh"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "Giới hạn hàng ngày",
|
||||
"dailyLimitDescription": "Số lượng mã xác minh tối đa có thể gửi trong một ngày",
|
||||
"expireTime": "Thời gian hết hạn",
|
||||
"expireTimeDescription": "Thời gian hết hạn của mã xác minh (phút)",
|
||||
"interval": "Khoảng thời gian gửi",
|
||||
"intervalDescription": "Khoảng thời gian tối thiểu giữa các lần gửi mã xác minh (giây)",
|
||||
"minute": "phút",
|
||||
"saveSuccess": "Lưu thành công",
|
||||
"second": "giây",
|
||||
"times": "lần",
|
||||
"verifyCodeSettings": "Cài đặt mã xác minh"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "Kích hoạt",
|
||||
"enableTip": "Sau khi kích hoạt, các chức năng đăng ký, đăng nhập, liên kết và hủy liên kết điện thoại di động sẽ được kích hoạt",
|
||||
"endpointLabel": "Điểm cuối",
|
||||
"expireTime": "Thời Gian Hết Hạn",
|
||||
"expireTimeTip": "Thời gian hiệu lực của mã xác minh SMS (giây)",
|
||||
"interval": "Khoảng thời gian",
|
||||
"intervalTip": "Khoảng thời gian gửi mã xác minh SMS cho cùng một số điện thoại (giây), 0 có nghĩa là không giới hạn",
|
||||
"limit": "Giới hạn hàng ngày",
|
||||
"limitTip": "Giới hạn gửi mã xác minh SMS hàng ngày cho cùng một số điện thoại, 0 có nghĩa là không giới hạn",
|
||||
"logs": "Nhật ký",
|
||||
"phoneNumberLabel": "Số Điện Thoại",
|
||||
"placeholders": {
|
||||
"expireTime": "Nhập thời gian hết hạn, mặc định là 300",
|
||||
"interval": "Nhập thời gian khoảng cách, mặc định là 60",
|
||||
"limit": "Nhập giới hạn hàng ngày, mặc định là 20",
|
||||
"template": "Mã xác minh của bạn là {code}, có hiệu lực trong 5 phút",
|
||||
"templateCode": "Nhập mã mẫu"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "Chỉnh sửa Đăng ký",
|
||||
"editUser": "Chỉnh sửa người dùng",
|
||||
"email": "Email",
|
||||
"emailNotifications": "Thông báo qua Email",
|
||||
"enable": "Kích hoạt",
|
||||
"expireTime": "Thời gian hết hạn",
|
||||
"expiredAt": "Ngày hết hạn",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "Tên Đăng Ký",
|
||||
"subscriptionNotifications": "Thông báo Đăng ký",
|
||||
"success": "Thành công",
|
||||
"telegramNotifications": "Thông báo Telegram",
|
||||
"telephone": "Số điện thoại",
|
||||
"telephonePlaceholder": "Nhập số điện thoại",
|
||||
"time": "Thời Gian",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "由 Cloudflare 提供的闸机密钥",
|
||||
"turnstileSiteKeyDescription": "由 Cloudflare 提供的闸机站点密钥",
|
||||
"verifySettings": "验证设置"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "每日限制",
|
||||
"dailyLimitDescription": "每天最多可发送的验证码数量",
|
||||
"expireTime": "过期时间",
|
||||
"expireTimeDescription": "验证码的有效期(分钟)",
|
||||
"interval": "发送间隔",
|
||||
"intervalDescription": "两次发送验证码的最小间隔时间(秒)",
|
||||
"minute": "分钟",
|
||||
"saveSuccess": "保存成功",
|
||||
"second": "秒",
|
||||
"times": "次",
|
||||
"verifyCodeSettings": "验证码设置"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "启用",
|
||||
"enableTip": "启用后,将启用手机注册、登录、绑定和解绑功能",
|
||||
"endpointLabel": "端点",
|
||||
"expireTime": "过期时间",
|
||||
"expireTimeTip": "短信验证码有效期(秒)",
|
||||
"interval": "间隔",
|
||||
"intervalTip": "同一手机号发送短信验证码的间隔时间(秒),0表示无限制",
|
||||
"limit": "每日限额",
|
||||
"limitTip": "同一手机号每日短信验证码发送限制,0表示无限制",
|
||||
"logs": "日志",
|
||||
"phoneNumberLabel": "电话号码",
|
||||
"placeholders": {
|
||||
"expireTime": "输入过期时间,默认为300",
|
||||
"interval": "输入间隔时间,默认为60",
|
||||
"limit": "输入每日限制,默认为20",
|
||||
"template": "您的验证码是{code},有效期为5分钟",
|
||||
"templateCode": "输入模板代码"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "编辑订阅",
|
||||
"editUser": "编辑用户",
|
||||
"email": "邮箱",
|
||||
"emailNotifications": "邮件通知",
|
||||
"enable": "启用",
|
||||
"expireTime": "到期时间",
|
||||
"expiredAt": "过期时间",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "订阅名称",
|
||||
"subscriptionNotifications": "订阅通知",
|
||||
"success": "成功",
|
||||
"telegramNotifications": "Telegram通知",
|
||||
"telephone": "手机号",
|
||||
"telephonePlaceholder": "输入手机号",
|
||||
"time": "时间",
|
||||
|
||||
@ -58,5 +58,18 @@
|
||||
"turnstileSecretDescription": "Cloudflare 提供的轉閘密鑰",
|
||||
"turnstileSiteKeyDescription": "Cloudflare 提供的轉閘網站密鑰",
|
||||
"verifySettings": "驗證設置"
|
||||
},
|
||||
"verify-code": {
|
||||
"dailyLimit": "每日限制",
|
||||
"dailyLimitDescription": "每天可以發送的最大驗證碼數量",
|
||||
"expireTime": "過期時間",
|
||||
"expireTimeDescription": "驗證碼過期時間(分鐘)",
|
||||
"interval": "發送間隔",
|
||||
"intervalDescription": "發送驗證碼的最小間隔(秒)",
|
||||
"minute": "分鐘",
|
||||
"saveSuccess": "保存成功",
|
||||
"second": "秒",
|
||||
"times": "次",
|
||||
"verifyCodeSettings": "驗證碼設置"
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,9 @@
|
||||
"enable": "啟用",
|
||||
"enableTip": "啟用後,將啟用手機註冊、登入、綁定和解綁功能",
|
||||
"endpointLabel": "端點",
|
||||
"expireTime": "到期時間",
|
||||
"expireTimeTip": "SMS 驗證碼有效期(秒)",
|
||||
"interval": "間隔",
|
||||
"intervalTip": "相同電話號碼的短信驗證碼發送間隔(秒),0 表示無限制",
|
||||
"limit": "每日限額",
|
||||
"limitTip": "同一電話號碼每日發送SMS驗證碼的限制,0表示無限制",
|
||||
"logs": "日誌",
|
||||
"phoneNumberLabel": "電話號碼",
|
||||
"placeholders": {
|
||||
"expireTime": "輸入過期時間,預設為300",
|
||||
"interval": "輸入間隔時間,默認為60",
|
||||
"limit": "輸入每日限制,默認為20",
|
||||
"template": "您的驗證碼是{code},有效期為5分鐘",
|
||||
"templateCode": "輸入模板代碼"
|
||||
},
|
||||
|
||||
@ -39,7 +39,6 @@
|
||||
"editSubscription": "編輯訂閱",
|
||||
"editUser": "編輯使用者",
|
||||
"email": "電子郵件",
|
||||
"emailNotifications": "電郵通知",
|
||||
"enable": "啟用",
|
||||
"expireTime": "到期時間",
|
||||
"expiredAt": "到期時間",
|
||||
@ -82,7 +81,6 @@
|
||||
"subscriptionName": "訂閱名稱",
|
||||
"subscriptionNotifications": "訂閱通知",
|
||||
"success": "成功",
|
||||
"telegramNotifications": "Telegram 通知",
|
||||
"telephone": "電話號碼",
|
||||
"telephonePlaceholder": "輸入電話號碼",
|
||||
"time": "時間",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as announcement from './announcement';
|
||||
|
||||
@ -323,6 +323,32 @@ export async function updateTosConfig(body: API.TosConfig, options?: { [key: str
|
||||
});
|
||||
}
|
||||
|
||||
/** Get Verify Code Config GET /v1/admin/system/verify_code_config */
|
||||
export async function getVerifyCodeConfig(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.VerifyCodeConfig }>(
|
||||
'/v1/admin/system/verify_code_config',
|
||||
{
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/** Update Verify Code Config PUT /v1/admin/system/verify_code_config */
|
||||
export async function updateVerifyCodeConfig(
|
||||
body: API.VerifyCodeConfig,
|
||||
options?: { [key: string]: any },
|
||||
) {
|
||||
return request<API.Response & { data?: any }>('/v1/admin/system/verify_code_config', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Get verify config GET /v1/admin/system/verify_config */
|
||||
export async function getVerifyConfig(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.VerifyConfig }>('/v1/admin/system/verify_config', {
|
||||
|
||||
11
apps/admin/services/admin/typings.d.ts
vendored
11
apps/admin/services/admin/typings.d.ts
vendored
@ -1362,8 +1362,6 @@ declare namespace API {
|
||||
|
||||
type UpdateUserNotifySettingRequest = {
|
||||
user_id: number;
|
||||
enable_email_notify: boolean;
|
||||
enable_telegram_notify: boolean;
|
||||
enable_balance_notify: boolean;
|
||||
enable_login_notify: boolean;
|
||||
enable_subscribe_notify: boolean;
|
||||
@ -1390,9 +1388,6 @@ declare namespace API {
|
||||
referer_id: number;
|
||||
enable: boolean;
|
||||
is_admin?: boolean;
|
||||
valid_email: boolean;
|
||||
enable_email_notify: boolean;
|
||||
enable_telegram_notify: boolean;
|
||||
enable_balance_notify: boolean;
|
||||
enable_login_notify: boolean;
|
||||
enable_subscribe_notify: boolean;
|
||||
@ -1497,6 +1492,12 @@ declare namespace API {
|
||||
download: number;
|
||||
};
|
||||
|
||||
type VerifyCodeConfig = {
|
||||
verify_code_expire_time: number;
|
||||
verify_code_limit: number;
|
||||
verify_code_interval: number;
|
||||
};
|
||||
|
||||
type VerifyConfig = {
|
||||
turnstile_site_key: string;
|
||||
turnstile_secret: string;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as auth from './auth';
|
||||
|
||||
10
apps/admin/services/common/typings.d.ts
vendored
10
apps/admin/services/common/typings.d.ts
vendored
@ -152,6 +152,7 @@ declare namespace API {
|
||||
invite: InviteConfig;
|
||||
currency: CurrencyConfig;
|
||||
subscribe: SubscribeConfig;
|
||||
verify_code: VerifyCodeConfig;
|
||||
oauth_methods: string[];
|
||||
};
|
||||
|
||||
@ -579,9 +580,6 @@ declare namespace API {
|
||||
referer_id: number;
|
||||
enable: boolean;
|
||||
is_admin?: boolean;
|
||||
valid_email: boolean;
|
||||
enable_email_notify: boolean;
|
||||
enable_telegram_notify: boolean;
|
||||
enable_balance_notify: boolean;
|
||||
enable_login_notify: boolean;
|
||||
enable_subscribe_notify: boolean;
|
||||
@ -686,6 +684,12 @@ declare namespace API {
|
||||
enable_reset_password_verify: boolean;
|
||||
};
|
||||
|
||||
type VerifyCodeConfig = {
|
||||
verify_code_expire_time: number;
|
||||
verify_code_limit: number;
|
||||
verify_code_interval: number;
|
||||
};
|
||||
|
||||
type VerifyConfig = {
|
||||
turnstile_site_key: string;
|
||||
turnstile_secret: string;
|
||||
|
||||
@ -13,9 +13,6 @@ import { toast } from 'sonner';
|
||||
import { z } from 'zod';
|
||||
|
||||
const FormSchema = z.object({
|
||||
telegram: z.number().nullish(),
|
||||
enable_email_notify: z.boolean(),
|
||||
enable_telegram_notify: z.boolean(),
|
||||
enable_balance_notify: z.boolean(),
|
||||
enable_login_notify: z.boolean(),
|
||||
enable_subscribe_notify: z.boolean(),
|
||||
@ -28,9 +25,6 @@ export default function NotifySettings() {
|
||||
const form = useForm<z.infer<typeof FormSchema>>({
|
||||
resolver: zodResolver(FormSchema),
|
||||
defaultValues: {
|
||||
telegram: user?.telegram,
|
||||
enable_email_notify: user?.enable_email_notify,
|
||||
enable_telegram_notify: user?.enable_telegram_notify,
|
||||
enable_balance_notify: user?.enable_balance_notify,
|
||||
enable_login_notify: user?.enable_login_notify,
|
||||
enable_subscribe_notify: user?.enable_subscribe_notify,
|
||||
@ -59,8 +53,6 @@ export default function NotifySettings() {
|
||||
<form id='notify-form' onSubmit={form.handleSubmit(onSubmit)} className='space-y-4'>
|
||||
<div className='space-y-4'>
|
||||
{[
|
||||
{ name: 'enable_email_notify', label: 'emailNotification' },
|
||||
{ name: 'enable_telegram_notify', label: 'telegramNotification' },
|
||||
{ name: 'enable_balance_notify', label: 'balanceChange' },
|
||||
{ name: 'enable_login_notify', label: 'login' },
|
||||
{ name: 'enable_subscribe_notify', label: 'subscribe' },
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
'use client';
|
||||
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import { sendEmailCode, sendSmsCode } from '@/services/common/common';
|
||||
import { Button } from '@workspace/ui/components/button';
|
||||
import { useCountDown } from 'ahooks';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { useState } from 'react';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
interface SendCodeProps {
|
||||
type: 'email' | 'phone';
|
||||
@ -17,22 +18,43 @@ interface SendCodeProps {
|
||||
}
|
||||
export default function SendCode({ type, params }: SendCodeProps) {
|
||||
const t = useTranslations('auth');
|
||||
const { common } = useGlobalStore();
|
||||
const { verify_code_interval } = common.verify_code;
|
||||
const [targetDate, setTargetDate] = useState<number>();
|
||||
|
||||
useEffect(() => {
|
||||
const storedEndTime = localStorage.getItem(`verify_code_${type}`);
|
||||
if (storedEndTime) {
|
||||
const endTime = parseInt(storedEndTime);
|
||||
if (endTime > Date.now()) {
|
||||
setTargetDate(endTime);
|
||||
} else {
|
||||
localStorage.removeItem(`verify_code_${type}`);
|
||||
}
|
||||
}
|
||||
}, [type]);
|
||||
|
||||
const [, { seconds }] = useCountDown({
|
||||
targetDate,
|
||||
onEnd: () => {
|
||||
setTargetDate(undefined);
|
||||
localStorage.removeItem(`verify_code_${type}`);
|
||||
},
|
||||
});
|
||||
|
||||
const setCodeTimer = () => {
|
||||
const endTime = Date.now() + verify_code_interval * 1000;
|
||||
setTargetDate(endTime);
|
||||
localStorage.setItem(`verify_code_${type}`, endTime.toString());
|
||||
};
|
||||
|
||||
const getEmailCode = async () => {
|
||||
if (params.email && params.type) {
|
||||
await sendEmailCode({
|
||||
email: params.email,
|
||||
type: params.type,
|
||||
});
|
||||
setTargetDate(Date.now() + 60000);
|
||||
setCodeTimer();
|
||||
}
|
||||
};
|
||||
|
||||
@ -43,7 +65,7 @@ export default function SendCode({ type, params }: SendCodeProps) {
|
||||
telephone_area_code: params.telephone_area_code,
|
||||
type: params.type,
|
||||
});
|
||||
setTargetDate(Date.now() + 60000);
|
||||
setCodeTimer();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -84,7 +84,7 @@ export default function Purchase({ subscribe, setSubscribe }: Readonly<PurchaseP
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}, [params, router]);
|
||||
}, [params, router, getUserInfo]);
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
|
||||
@ -92,7 +92,7 @@ export default function Renewal({ id, subscribe }: Readonly<RenewalProps>) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}, [params, router]);
|
||||
}, [params, router, getUserInfo]);
|
||||
|
||||
return (
|
||||
<Dialog open={open} onOpenChange={setOpen}>
|
||||
|
||||
@ -43,6 +43,9 @@ export const useGlobalStore = create<GlobalStore>((set, get) => ({
|
||||
register: {
|
||||
stop_register: false,
|
||||
enable_trial: false,
|
||||
trial_subscribe: 0,
|
||||
trial_time: 0,
|
||||
trial_time_unit: '',
|
||||
enable_ip_register_limit: false,
|
||||
ip_register_limit: 0,
|
||||
ip_register_limit_duration: 0,
|
||||
@ -63,6 +66,11 @@ export const useGlobalStore = create<GlobalStore>((set, get) => ({
|
||||
subscribe_domain: '',
|
||||
pan_domain: false,
|
||||
},
|
||||
verify_code: {
|
||||
verify_code_expire_time: 5,
|
||||
verify_code_limit: 15,
|
||||
verify_code_interval: 60,
|
||||
},
|
||||
oauth_methods: [],
|
||||
},
|
||||
user: undefined,
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Změna zůstatku",
|
||||
"bind": "Přejít na vazbu",
|
||||
"channels": "Notifikační kanály",
|
||||
"emailNotification": "E-mailové oznámení",
|
||||
"finance": "Finance",
|
||||
"login": "Přihlášení",
|
||||
"notificationSettings": "Nastavení oznámení",
|
||||
"notificationTypes": "Typy notifikací",
|
||||
"save": "Uložit změny",
|
||||
"subscribe": "Přihlásit se",
|
||||
"telegramIdPlaceholder": "Zadejte Telegram ID",
|
||||
"telegramNotification": "Telegram oznámení",
|
||||
"unbind": "Zrušit vazbu",
|
||||
"updateSuccess": "Aktualizace byla úspěšná"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Kontostandsänderung",
|
||||
"bind": "Zur Bindung gehen",
|
||||
"channels": "Benachrichtigungskanäle",
|
||||
"emailNotification": "E-Mail-Benachrichtigung",
|
||||
"finance": "Finanzen",
|
||||
"login": "Anmelden",
|
||||
"notificationSettings": "Benachrichtigungseinstellungen",
|
||||
"notificationTypes": "Benachrichtigungstypen",
|
||||
"save": "Änderungen speichern",
|
||||
"subscribe": "Abonnieren",
|
||||
"telegramIdPlaceholder": "Telegram-ID eingeben",
|
||||
"telegramNotification": "Telegram-Benachrichtigung",
|
||||
"unbind": "Lösen",
|
||||
"updateSuccess": "Erfolgreich aktualisiert"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Balance Change",
|
||||
"bind": "Go to Binding",
|
||||
"channels": "Notification Channels",
|
||||
"emailNotification": "Email Notification",
|
||||
"finance": "Finance",
|
||||
"login": "Login",
|
||||
"notificationSettings": "Notification Settings",
|
||||
"notificationTypes": "Notification Types",
|
||||
"save": "Save Changes",
|
||||
"subscribe": "Subscribe",
|
||||
"telegramIdPlaceholder": "Enter Telegram ID",
|
||||
"telegramNotification": "Telegram Notification",
|
||||
"unbind": "Unbind",
|
||||
"updateSuccess": "Update Successful"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Cambio de Saldo",
|
||||
"bind": "Ir a Vinculación",
|
||||
"channels": "Canales de Notificación",
|
||||
"emailNotification": "Notificación por correo electrónico",
|
||||
"finance": "Finanzas",
|
||||
"login": "Iniciar Sesión",
|
||||
"notificationSettings": "Configuración de notificaciones",
|
||||
"notificationTypes": "Tipos de Notificación",
|
||||
"save": "Guardar Cambios",
|
||||
"subscribe": "Suscribirse",
|
||||
"telegramIdPlaceholder": "Ingrese ID de Telegram",
|
||||
"telegramNotification": "Notificación de Telegram",
|
||||
"unbind": "Desvincular",
|
||||
"updateSuccess": "Actualización exitosa"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Cambio de Saldo",
|
||||
"bind": "Ir a Vinculación",
|
||||
"channels": "Canales de Notificación",
|
||||
"emailNotification": "Notificación por correo electrónico",
|
||||
"finance": "Finanzas",
|
||||
"login": "Iniciar Sesión",
|
||||
"notificationSettings": "Configuración de notificaciones",
|
||||
"notificationTypes": "Tipos de Notificación",
|
||||
"save": "Guardar Cambios",
|
||||
"subscribe": "Suscribirse",
|
||||
"telegramIdPlaceholder": "Ingrese ID de Telegram",
|
||||
"telegramNotification": "Notificación de Telegram",
|
||||
"unbind": "Desvincular",
|
||||
"updateSuccess": "Actualización exitosa"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "تغییر موجودی",
|
||||
"bind": "رفتن به اتصال",
|
||||
"channels": "کانالهای اعلان",
|
||||
"emailNotification": "اعلان ایمیل",
|
||||
"finance": "مالی",
|
||||
"login": "ورود",
|
||||
"notificationSettings": "تنظیمات اعلان",
|
||||
"notificationTypes": "نوعهای اعلان",
|
||||
"save": "ذخیره تغییرات",
|
||||
"subscribe": "اشتراکگذاری",
|
||||
"telegramIdPlaceholder": "شناسه تلگرام را وارد کنید",
|
||||
"telegramNotification": "اعلان تلگرام",
|
||||
"unbind": "لغو اتصال",
|
||||
"updateSuccess": "بهروزرسانی موفقیتآمیز"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Saldo Muutos",
|
||||
"bind": "Siirry sitomiseen",
|
||||
"channels": "Ilmoituskanavat",
|
||||
"emailNotification": "Sähköposti-ilmoitus",
|
||||
"finance": "Rahoitus",
|
||||
"login": "Kirjaudu",
|
||||
"notificationSettings": "Ilmoitusasetukset",
|
||||
"notificationTypes": "Ilmoitustyypit",
|
||||
"save": "Tallenna muutokset",
|
||||
"subscribe": "Tilaa",
|
||||
"telegramIdPlaceholder": "Syötä Telegram ID",
|
||||
"telegramNotification": "Telegram-ilmoitus",
|
||||
"unbind": "Poista sitominen",
|
||||
"updateSuccess": "Päivitys onnistui"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Changement de Solde",
|
||||
"bind": "Aller à la liaison",
|
||||
"channels": "Canaux de Notification",
|
||||
"emailNotification": "Notification par e-mail",
|
||||
"finance": "Finance",
|
||||
"login": "Connexion",
|
||||
"notificationSettings": "Paramètres de notification",
|
||||
"notificationTypes": "Types de Notification",
|
||||
"save": "Enregistrer les Modifications",
|
||||
"subscribe": "S'abonner",
|
||||
"telegramIdPlaceholder": "Entrez l'ID Telegram",
|
||||
"telegramNotification": "Notification Telegram",
|
||||
"unbind": "Délier",
|
||||
"updateSuccess": "Mise à jour réussie"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "बैलेंस परिवर्तन",
|
||||
"bind": "बाइंडिंग पर जाएं",
|
||||
"channels": "सूचना चैनल",
|
||||
"emailNotification": "ईमेल सूचना",
|
||||
"finance": "वित्त",
|
||||
"login": "लॉगिन",
|
||||
"notificationSettings": "सूचना सेटिंग्स",
|
||||
"notificationTypes": "सूचना प्रकार",
|
||||
"save": "परिवर्तन सहेजें",
|
||||
"subscribe": "सदस्यता लें",
|
||||
"telegramIdPlaceholder": "टेलीग्राम आईडी दर्ज करें",
|
||||
"telegramNotification": "टेलीग्राम सूचना",
|
||||
"unbind": "अनबाइंड करें",
|
||||
"updateSuccess": "सफलतापूर्वक अपडेट किया गया"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Egyenleg Változás",
|
||||
"bind": "Menj a kötéshez",
|
||||
"channels": "Értesítési Csatornák",
|
||||
"emailNotification": "E-mail értesítés",
|
||||
"finance": "Pénzügy",
|
||||
"login": "Bejelentkezés",
|
||||
"notificationSettings": "Értesítési beállítások",
|
||||
"notificationTypes": "Értesítési Típusok",
|
||||
"save": "Változtatások Mentése",
|
||||
"subscribe": "Feliratkozás",
|
||||
"telegramIdPlaceholder": "Adja meg a Telegram azonosítót",
|
||||
"telegramNotification": "Telegram értesítés",
|
||||
"unbind": "Kötés feloldása",
|
||||
"updateSuccess": "Sikeres frissítés"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "残高の変更",
|
||||
"bind": "バインディングに移動",
|
||||
"channels": "通知チャネル",
|
||||
"emailNotification": "メール通知",
|
||||
"finance": "ファイナンス",
|
||||
"login": "ログイン",
|
||||
"notificationSettings": "通知設定",
|
||||
"notificationTypes": "通知タイプ",
|
||||
"save": "変更を保存",
|
||||
"subscribe": "購読する",
|
||||
"telegramIdPlaceholder": "Telegram IDを入力",
|
||||
"telegramNotification": "Telegram通知",
|
||||
"unbind": "バインド解除",
|
||||
"updateSuccess": "更新成功"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "잔액 변경",
|
||||
"bind": "바인딩으로 이동",
|
||||
"channels": "알림 채널",
|
||||
"emailNotification": "이메일 알림",
|
||||
"finance": "재무",
|
||||
"login": "로그인",
|
||||
"notificationSettings": "알림 설정",
|
||||
"notificationTypes": "알림 유형",
|
||||
"save": "변경 사항 저장",
|
||||
"subscribe": "구독",
|
||||
"telegramIdPlaceholder": "텔레그램 ID 입력",
|
||||
"telegramNotification": "텔레그램 알림",
|
||||
"unbind": "바인딩 해제",
|
||||
"updateSuccess": "업데이트 성공"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Endring i saldo",
|
||||
"bind": "Gå til binding",
|
||||
"channels": "Varslingskanaler",
|
||||
"emailNotification": "E-postvarsling",
|
||||
"finance": "Økonomi",
|
||||
"login": "Logg inn",
|
||||
"notificationSettings": "Varslingsinnstillinger",
|
||||
"notificationTypes": "Varslingstyper",
|
||||
"save": "Lagre endringer",
|
||||
"subscribe": "Abonner",
|
||||
"telegramIdPlaceholder": "Skriv inn Telegram-ID",
|
||||
"telegramNotification": "Telegram-varsling",
|
||||
"unbind": "Løsne",
|
||||
"updateSuccess": "Oppdatering vellykket"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Zmiana salda",
|
||||
"bind": "Przejdź do wiązania",
|
||||
"channels": "Kanały powiadomień",
|
||||
"emailNotification": "Powiadomienie e-mail",
|
||||
"finance": "Finanse",
|
||||
"login": "Zaloguj się",
|
||||
"notificationSettings": "Ustawienia powiadomień",
|
||||
"notificationTypes": "Typy powiadomień",
|
||||
"save": "Zapisz zmiany",
|
||||
"subscribe": "Subskrybuj",
|
||||
"telegramIdPlaceholder": "Wprowadź Telegram ID",
|
||||
"telegramNotification": "Powiadomienie Telegram",
|
||||
"unbind": "Odwiąż",
|
||||
"updateSuccess": "Aktualizacja zakończona sukcesem"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
@ -9,18 +9,13 @@
|
||||
},
|
||||
"notify": {
|
||||
"balanceChange": "Mudança de Saldo",
|
||||
"bind": "Ir para Vinculação",
|
||||
"channels": "Canais de Notificação",
|
||||
"emailNotification": "Notificação por e-mail",
|
||||
"finance": "Finanças",
|
||||
"login": "Login",
|
||||
"notificationSettings": "Configurações de notificação",
|
||||
"notificationTypes": "Tipos de Notificação",
|
||||
"save": "Salvar Alterações",
|
||||
"subscribe": "Inscrever-se",
|
||||
"telegramIdPlaceholder": "Insira o ID do Telegram",
|
||||
"telegramNotification": "Notificação do Telegram",
|
||||
"unbind": "Desvincular",
|
||||
"updateSuccess": "Atualização bem-sucedida"
|
||||
},
|
||||
"thirdParty": {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user