✨ feat(locales): Replace 'nodeGroupId' with 'groupId' in multiple language files for consistency
This commit is contained in:
parent
70497af0aa
commit
a4e9d5da59
@ -139,7 +139,7 @@ export default function NodeForm<T extends { [x: string]: any }>({
|
||||
name='group_id'
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>{t('form.nodeGroupId')}</FormLabel>
|
||||
<FormLabel>{t('form.groupId')}</FormLabel>
|
||||
<FormControl>
|
||||
<Combobox<number, false>
|
||||
placeholder={t('form.selectNodeGroup')}
|
||||
@ -148,6 +148,9 @@ export default function NodeForm<T extends { [x: string]: any }>({
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}))}
|
||||
onChange={(value) => {
|
||||
form.setValue(field.name, value || 0);
|
||||
}}
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
|
||||
@ -135,7 +135,7 @@ export default function NodeTable() {
|
||||
accessorKey: 'speed_limit',
|
||||
header: t('speedLimit'),
|
||||
cell: ({ row }) => (
|
||||
<Display type='traffic' value={row.getValue('speed_limit')} unlimited />
|
||||
<Display type='trafficSpeed' value={row.getValue('speed_limit')} unlimited />
|
||||
),
|
||||
},
|
||||
{
|
||||
|
||||
@ -219,13 +219,13 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
||||
name='group_id'
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>{t('form.subscribeGroup')}</FormLabel>
|
||||
<FormLabel>{t('form.groupId')}</FormLabel>
|
||||
<FormControl>
|
||||
<Combobox<number, false>
|
||||
placeholder={t('form.selectSubscribeGroup')}
|
||||
{...field}
|
||||
onChange={(value) => {
|
||||
form.setValue(field.name, value);
|
||||
form.setValue(field.name, value || 0);
|
||||
}}
|
||||
options={group?.map((item) => ({
|
||||
label: item.name,
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
'use client';
|
||||
|
||||
import { Display } from '@/components/display';
|
||||
import { ProTable, ProTableActions } from '@/components/pro-table';
|
||||
import { createUser, deleteUser, getUserList, updateUser } from '@/services/admin/user';
|
||||
import { Button } from '@workspace/ui/components/button';
|
||||
import { Switch } from '@workspace/ui/components/switch';
|
||||
import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button';
|
||||
import { formatDate, unitConversion } from '@workspace/ui/utils';
|
||||
import { formatDate } from '@workspace/ui/utils';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { useRef, useState } from 'react';
|
||||
import { toast } from 'sonner';
|
||||
@ -77,7 +78,22 @@ export default function Page() {
|
||||
{
|
||||
accessorKey: 'balance',
|
||||
header: t('balance'),
|
||||
cell: ({ row }) => unitConversion('centsToDollars', row.getValue('balance')),
|
||||
cell: ({ row }) => <Display type='currency' value={row.getValue('balance')} />,
|
||||
},
|
||||
{
|
||||
accessorKey: 'gift_amount',
|
||||
header: t('giftAmount'),
|
||||
cell: ({ row }) => <Display type='currency' value={row.getValue('gift_amount')} />,
|
||||
},
|
||||
{
|
||||
accessorKey: 'commission',
|
||||
header: t('commission'),
|
||||
cell: ({ row }) => <Display type='currency' value={row.getValue('commission')} />,
|
||||
},
|
||||
{
|
||||
accessorKey: 'refer_code',
|
||||
header: t('inviteCode'),
|
||||
cell: ({ row }) => row.getValue('refer_code') || '--',
|
||||
},
|
||||
{
|
||||
accessorKey: 'referer_id',
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
'use client';
|
||||
|
||||
import { Display } from '@/components/display';
|
||||
import { getUserDetail } from '@/services/admin/user';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { Button } from '@workspace/ui/components/button';
|
||||
import { HoverCard, HoverCardContent, HoverCardTrigger } from '@workspace/ui/components/hover-card';
|
||||
import { formatDate, unitConversion } from '@workspace/ui/utils';
|
||||
import { formatDate } from '@workspace/ui/utils';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { useState } from 'react';
|
||||
|
||||
@ -43,7 +44,21 @@ export function UserDetail({ id }: { id: number }) {
|
||||
</li>
|
||||
<li className='flex items-center justify-between font-semibold'>
|
||||
<span className='text-muted-foreground'>{t('balance')}</span>
|
||||
<span>{unitConversion('centsToDollars', data?.balance)}</span>
|
||||
<span>
|
||||
<Display type='currency' value={data?.balance} />
|
||||
</span>
|
||||
</li>
|
||||
<li className='flex items-center justify-between'>
|
||||
<span className='text-muted-foreground'>{t('giftAmount')}</span>
|
||||
<span>
|
||||
<Display type='currency' value={data?.gift_amount} />
|
||||
</span>
|
||||
</li>
|
||||
<li className='flex items-center justify-between'>
|
||||
<span className='text-muted-foreground'>{t('commission')}</span>
|
||||
<span>
|
||||
<Display type='currency' value={data?.commission} />
|
||||
</span>
|
||||
</li>
|
||||
<li className='flex items-center justify-between'>
|
||||
<span className='text-muted-foreground'>{t('createdAt')}</span>
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
import { Icon } from '@iconify/react';
|
||||
import { Button } from '@workspace/ui/components/button';
|
||||
@ -43,8 +44,10 @@ export default function UserForm<T extends Record<string, any>>({
|
||||
loading,
|
||||
trigger,
|
||||
title,
|
||||
}: UserFormProps<T>) {
|
||||
}: Readonly<UserFormProps<T>>) {
|
||||
const t = useTranslations('user');
|
||||
const { common } = useGlobalStore();
|
||||
const { currency } = common;
|
||||
|
||||
const [open, setOpen] = useState(false);
|
||||
const formSchema = z.object({
|
||||
@ -54,6 +57,8 @@ export default function UserForm<T extends Record<string, any>>({
|
||||
refer_code: z.string().optional(),
|
||||
is_admin: z.boolean().optional(),
|
||||
balance: z.number().optional(),
|
||||
gift_amount: z.number().optional(),
|
||||
commission: z.number().optional(),
|
||||
});
|
||||
const form = useForm({
|
||||
resolver: zodResolver(formSchema),
|
||||
@ -176,7 +181,7 @@ export default function UserForm<T extends Record<string, any>>({
|
||||
<FormLabel>{t('form.balance')}</FormLabel>
|
||||
<FormControl>
|
||||
<EnhancedInput
|
||||
prefix='¥'
|
||||
prefix={currency?.currency_symbol ?? '$'}
|
||||
placeholder={t('form.balancePlaceholder')}
|
||||
type='number'
|
||||
{...field}
|
||||
@ -192,6 +197,54 @@ export default function UserForm<T extends Record<string, any>>({
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='gift_amount'
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>{t('form.giftAmount')}</FormLabel>
|
||||
<FormControl>
|
||||
<EnhancedInput
|
||||
prefix={currency?.currency_symbol ?? '$'}
|
||||
placeholder={t('form.giftAmountPlaceholder')}
|
||||
type='number'
|
||||
{...field}
|
||||
formatInput={(value) => unitConversion('centsToDollars', value)}
|
||||
formatOutput={(value) => unitConversion('dollarsToCents', value)}
|
||||
onValueChange={(value) => {
|
||||
form.setValue(field.name, value);
|
||||
}}
|
||||
min={0}
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='commission'
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>{t('form.commission')}</FormLabel>
|
||||
<FormControl>
|
||||
<EnhancedInput
|
||||
prefix={currency?.currency_symbol ?? '$'}
|
||||
placeholder={t('form.commissionPlaceholder')}
|
||||
type='number'
|
||||
{...field}
|
||||
formatInput={(value) => unitConversion('centsToDollars', value)}
|
||||
formatOutput={(value) => unitConversion('dollarsToCents', value)}
|
||||
onValueChange={(value) => {
|
||||
form.setValue(field.name, value);
|
||||
}}
|
||||
min={0}
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='is_admin'
|
||||
|
||||
@ -4,7 +4,7 @@ import useGlobalStore from '@/config/use-global';
|
||||
import { formatBytes, unitConversion } from '@workspace/ui/utils';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
type DisplayType = 'currency' | 'traffic' | 'number';
|
||||
type DisplayType = 'currency' | 'traffic' | 'number' | 'trafficSpeed';
|
||||
|
||||
interface DisplayProps<T> {
|
||||
value?: T;
|
||||
@ -26,12 +26,16 @@ export function Display<T extends number | undefined | null>({
|
||||
return formattedValue;
|
||||
}
|
||||
|
||||
if (['traffic', 'number'].includes(type) && unlimited && !value) {
|
||||
if (['traffic', 'trafficSpeed', 'number'].includes(type) && unlimited && !value) {
|
||||
return t('unlimited');
|
||||
}
|
||||
|
||||
if (type === 'traffic') {
|
||||
return value ? formatBytes(value as number) : '0';
|
||||
return value ? formatBytes(value) : '0';
|
||||
}
|
||||
|
||||
if (type === 'trafficSpeed') {
|
||||
return value ? formatBytes(value).replace('B', 'b') + 'ps' : '0';
|
||||
}
|
||||
|
||||
if (type === 'number') {
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Povolit TLS",
|
||||
"encryptionMethod": "Metoda šifrování",
|
||||
"flow": "Algoritmus řízení toku",
|
||||
"groupId": "Skupina uzlů",
|
||||
"hopInterval": "Interval skoků",
|
||||
"hopPorts": "Porty skoků",
|
||||
"hopPortsPlaceholder": "Více portů oddělených čárkou",
|
||||
"name": "Název",
|
||||
"nodeGroupId": "ID skupiny uzlů",
|
||||
"obfsPassword": "Heslo pro zmatení",
|
||||
"obfsPasswordPlaceholder": "Nechte prázdné, pokud nechcete zmást",
|
||||
"path": "Cesta",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Procento slevy",
|
||||
"discount_price": "Cena po slevě",
|
||||
"duration": "Doba trvání (měsíce)",
|
||||
"groupId": "Skupina předplatného",
|
||||
"inventory": "Sklad",
|
||||
"monthlyReset": "Měsíční Reset",
|
||||
"name": "Název",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Žádný Reset",
|
||||
"pricing": "Cenotvorba",
|
||||
"purchaseWithDiscount": "Povolit Odpočet",
|
||||
"purchaseWithDiscountDescription": "Povolit nebo zakázat funkci odpočtu. Když je povolena, systém zpracovává odpočty na základě nakonfigurovaných pravidel a poměrů",
|
||||
"purchaseWithDiscountDescription": "Povolit nebo zakázat funkci odhlášení. Po aktivaci systém provede zpracování odpočtu podle nakonfigurovaných pravidel a poměrů a zbývající hodnota bude vrácena na zůstatek.",
|
||||
"quota": "Limit nákupu",
|
||||
"renewalReset": "Reset při Obnovení",
|
||||
"renewalResetDescription": "Resetovací cyklus při obnovení",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Server",
|
||||
"serverGroup": "Skupina serverů",
|
||||
"servers": "Servery",
|
||||
"speedLimit": "Omezení rychlosti (Mbps)",
|
||||
"subscribeGroup": "Skupina předplatného",
|
||||
"speedLimit": "Omezení rychlosti ",
|
||||
"traffic": "Přenos dat",
|
||||
"unitPrice": "Jednotková cena",
|
||||
"unitTime": "Jednotka času"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "akce",
|
||||
"balance": "Zůstatek",
|
||||
"cancel": "zrušit",
|
||||
"commission": "Provize",
|
||||
"confirm": "Potvrdit",
|
||||
"confirmDelete": "Opravdu chcete smazat?",
|
||||
"create": "Vytvořit",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Zůstatek",
|
||||
"balancePlaceholder": "Zůstatek",
|
||||
"cancel": "Zrušit",
|
||||
"commission": "Provize",
|
||||
"commissionPlaceholder": "Zadejte provizi",
|
||||
"confirm": "Potvrdit",
|
||||
"giftAmount": "Částka daru",
|
||||
"giftAmountPlaceholder": "Zadejte částku daru",
|
||||
"invalidEmailFormat": "Neplatný formát e-mailu",
|
||||
"inviteCode": "Pozvánkový kód",
|
||||
"inviteCodePlaceholder": "Zadejte pozvánkový kód (ponechte prázdné pro automatické generování)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "E-mail uživatele",
|
||||
"userEmailPlaceholder": "Zadejte e-mail uživatele"
|
||||
},
|
||||
"giftAmount": "Částka dárku",
|
||||
"inviteCode": "Pozvánkový kód",
|
||||
"referer": "Doporučitel",
|
||||
"updateSuccess": "Aktualizace byla úspěšná",
|
||||
"userList": "Seznam uživatelů",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLS aktivieren",
|
||||
"encryptionMethod": "Verschlüsselungsmethode",
|
||||
"flow": "Flusskontrollalgorithmus",
|
||||
"groupId": "Knotengruppe",
|
||||
"hopInterval": "Sprungintervall",
|
||||
"hopPorts": "Sprungports",
|
||||
"hopPortsPlaceholder": "Mehrere Ports durch Kommas trennen",
|
||||
"name": "Name",
|
||||
"nodeGroupId": "Knotengruppen-ID",
|
||||
"obfsPassword": "Verschleierungspasswort",
|
||||
"obfsPasswordPlaceholder": "Leer lassen für keine Verschleierung",
|
||||
"path": "Pfad",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Rabattprozentsatz",
|
||||
"discount_price": "Rabattpreis",
|
||||
"duration": "Dauer (Monate)",
|
||||
"groupId": "Abonnementgruppe",
|
||||
"inventory": "Bestand",
|
||||
"monthlyReset": "Monatliches Zurücksetzen",
|
||||
"name": "Name",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Kein Zurücksetzen",
|
||||
"pricing": "Preisgestaltung",
|
||||
"purchaseWithDiscount": "Abzug erlauben",
|
||||
"purchaseWithDiscountDescription": "Aktivieren oder deaktivieren Sie die Abzugsfunktion. Wenn aktiviert, verarbeitet das System Abzüge basierend auf den konfigurierten Regeln und Verhältnissen.",
|
||||
"purchaseWithDiscountDescription": "Aktivieren oder deaktivieren Sie die Abmeldefunktion. Nach der Aktivierung führt das System die Abzugsverarbeitung gemäß den konfigurierten Regeln und Anteilen durch, und der verbleibende Wert wird dem Guthaben gutgeschrieben.",
|
||||
"quota": "Kaufbeschränkung",
|
||||
"renewalReset": "Zurücksetzen bei Erneuerung",
|
||||
"renewalResetDescription": "Zurücksetzungszyklus bei Erneuerung",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Dienst",
|
||||
"serverGroup": "Dienstgruppe",
|
||||
"servers": "Server",
|
||||
"speedLimit": "Geschwindigkeitsbegrenzung (Mbps)",
|
||||
"subscribeGroup": "Abonnementgruppe",
|
||||
"speedLimit": "Geschwindigkeitsbegrenzung ",
|
||||
"traffic": "Datenvolumen",
|
||||
"unitPrice": "Einheitspreis",
|
||||
"unitTime": "Zeiteinheit"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "Aktionen",
|
||||
"balance": "Kontostand",
|
||||
"cancel": "Abbrechen",
|
||||
"commission": "Provision",
|
||||
"confirm": "Bestätigen",
|
||||
"confirmDelete": "Sind Sie sicher, dass Sie löschen möchten?",
|
||||
"create": "Erstellen",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Kontostand",
|
||||
"balancePlaceholder": "Kontostand",
|
||||
"cancel": "Abbrechen",
|
||||
"commission": "Provision",
|
||||
"commissionPlaceholder": "Geben Sie die Provision ein",
|
||||
"confirm": "Bestätigen",
|
||||
"giftAmount": "Geschenkbetrag",
|
||||
"giftAmountPlaceholder": "Geben Sie den Geschenkbetrag ein",
|
||||
"invalidEmailFormat": "Ungültiges E-Mail-Format",
|
||||
"inviteCode": "Einladungscode",
|
||||
"inviteCodePlaceholder": "Bitte Einladungscode eingeben (leer lassen für automatische Generierung)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Benutzer-E-Mail",
|
||||
"userEmailPlaceholder": "Bitte Benutzer-E-Mail eingeben"
|
||||
},
|
||||
"giftAmount": "Geschenkbetrag",
|
||||
"inviteCode": "Einladungscode",
|
||||
"referer": "Empfehler",
|
||||
"updateSuccess": "Aktualisierung erfolgreich",
|
||||
"userList": "Benutzerliste",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Enable TLS",
|
||||
"encryptionMethod": "Encryption Method",
|
||||
"flow": "Flow Control Algorithm",
|
||||
"groupId": "Node Group",
|
||||
"hopInterval": "Hop Interval",
|
||||
"hopPorts": "Hop Ports",
|
||||
"hopPortsPlaceholder": "Separate multiple ports with commas",
|
||||
"name": "Name",
|
||||
"nodeGroupId": "Node Group ID",
|
||||
"obfsPassword": "Obfuscation Password",
|
||||
"obfsPasswordPlaceholder": "Leave blank for no obfuscation",
|
||||
"path": "Path",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Discount Percentage",
|
||||
"discount_price": "Discount Price",
|
||||
"duration": "Duration (months)",
|
||||
"groupId": "Subscription Group",
|
||||
"inventory": "Inventory",
|
||||
"monthlyReset": "Monthly Reset",
|
||||
"name": "Name",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "No Reset",
|
||||
"pricing": "Pricing",
|
||||
"purchaseWithDiscount": "Allow Deduction",
|
||||
"purchaseWithDiscountDescription": "Enable or disable the deduction feature. When enabled, the system will process deductions based on the configured rules and ratios",
|
||||
"purchaseWithDiscountDescription": "Enable or disable unsubscribe functionality. After activation, the system will perform deduction processing according to the configured rules and proportions, and the remaining value will be returned to the balance",
|
||||
"quota": "Purchase Limit",
|
||||
"renewalReset": "Renewal Reset",
|
||||
"renewalResetDescription": "Reset cycle upon renewal",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Server",
|
||||
"serverGroup": "Server Group",
|
||||
"servers": "Servers",
|
||||
"speedLimit": "Speed Limit (Mbps)",
|
||||
"subscribeGroup": "Subscription Group",
|
||||
"speedLimit": "Speed Limit ",
|
||||
"traffic": "Traffic",
|
||||
"unitPrice": "Unit Price",
|
||||
"unitTime": "Unit Time"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "Actions",
|
||||
"balance": "Balance",
|
||||
"cancel": "Cancel",
|
||||
"commission": "Commission",
|
||||
"confirm": "Confirm",
|
||||
"confirmDelete": "Are you sure you want to delete?",
|
||||
"create": "Create",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Balance",
|
||||
"balancePlaceholder": "Balance",
|
||||
"cancel": "Cancel",
|
||||
"commission": "Commission",
|
||||
"commissionPlaceholder": "Enter commission",
|
||||
"confirm": "Confirm",
|
||||
"giftAmount": "Gift Amount",
|
||||
"giftAmountPlaceholder": "Enter gift amount",
|
||||
"invalidEmailFormat": "Invalid email format",
|
||||
"inviteCode": "Invite Code",
|
||||
"inviteCodePlaceholder": "Enter invite code (leave blank to generate)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "User Email",
|
||||
"userEmailPlaceholder": "Enter user email"
|
||||
},
|
||||
"giftAmount": "Gift Amount",
|
||||
"inviteCode": "Invite Code",
|
||||
"referer": "Referer",
|
||||
"updateSuccess": "Update successful",
|
||||
"userList": "User List",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Habilitar TLS",
|
||||
"encryptionMethod": "Método de encriptación",
|
||||
"flow": "Algoritmo de control de flujo",
|
||||
"groupId": "Grupo de Nodo",
|
||||
"hopInterval": "Intervalo de salto",
|
||||
"hopPorts": "Puertos de salto",
|
||||
"hopPortsPlaceholder": "Varios puertos separados por comas",
|
||||
"name": "Nombre",
|
||||
"nodeGroupId": "ID del grupo de nodos",
|
||||
"obfsPassword": "Contraseña de ofuscación",
|
||||
"obfsPasswordPlaceholder": "Dejar en blanco para no ofuscar",
|
||||
"path": "Ruta",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Porcentaje de descuento",
|
||||
"discount_price": "Precio con descuento",
|
||||
"duration": "Duración (meses)",
|
||||
"groupId": "Grupo de Suscripción",
|
||||
"inventory": "Inventario",
|
||||
"monthlyReset": "Reinicio Mensual",
|
||||
"name": "Nombre",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Sin Reinicio",
|
||||
"pricing": "Precios",
|
||||
"purchaseWithDiscount": "Permitir Deducción",
|
||||
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la función de deducción. Cuando está habilitada, el sistema procesará las deducciones basadas en las reglas y ratios configurados",
|
||||
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la funcionalidad de cancelación de suscripción. Después de la activación, el sistema realizará el procesamiento de deducción según las reglas y proporciones configuradas, y el valor restante se devolverá al saldo",
|
||||
"quota": "Cantidad de compra limitada",
|
||||
"renewalReset": "Reinicio por Renovación",
|
||||
"renewalResetDescription": "Reiniciar ciclo al renovar",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Servidor",
|
||||
"serverGroup": "Grupo de servidores",
|
||||
"servers": "Servidores",
|
||||
"speedLimit": "Límite de velocidad (Mbps)",
|
||||
"subscribeGroup": "Grupo de suscripción",
|
||||
"speedLimit": "Límite de velocidad ",
|
||||
"traffic": "Tráfico",
|
||||
"unitPrice": "Precio unitario",
|
||||
"unitTime": "Unidad de tiempo"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "acciones",
|
||||
"balance": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comisión",
|
||||
"confirm": "Confirmar",
|
||||
"confirmDelete": "¿Está seguro de que desea eliminar?",
|
||||
"create": "Crear",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Saldo",
|
||||
"balancePlaceholder": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comisión",
|
||||
"commissionPlaceholder": "Ingrese la comisión",
|
||||
"confirm": "Confirmar",
|
||||
"giftAmount": "Monto del Regalo",
|
||||
"giftAmountPlaceholder": "Ingrese el monto del regalo",
|
||||
"invalidEmailFormat": "Formato de correo electrónico no válido",
|
||||
"inviteCode": "Código de invitación",
|
||||
"inviteCodePlaceholder": "Por favor, introduzca el código de invitación (déjelo en blanco para generar automáticamente)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Correo electrónico del usuario",
|
||||
"userEmailPlaceholder": "Por favor, introduzca el correo electrónico del usuario"
|
||||
},
|
||||
"giftAmount": "Monto del Regalo",
|
||||
"inviteCode": "Código de invitación",
|
||||
"referer": "Recomendador",
|
||||
"updateSuccess": "Actualización exitosa",
|
||||
"userList": "Lista de usuarios",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Habilitar TLS",
|
||||
"encryptionMethod": "Método de encriptación",
|
||||
"flow": "Algoritmo de control de flujo",
|
||||
"groupId": "Grupo de Nodo",
|
||||
"hopInterval": "Intervalo de salto",
|
||||
"hopPorts": "Puertos de salto",
|
||||
"hopPortsPlaceholder": "Varios puertos separados por comas",
|
||||
"name": "Nombre",
|
||||
"nodeGroupId": "ID del grupo de nodos",
|
||||
"obfsPassword": "Contraseña de ofuscación",
|
||||
"obfsPasswordPlaceholder": "Dejar en blanco para no ofuscar",
|
||||
"path": "Ruta",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Porcentaje de descuento",
|
||||
"discount_price": "Precio con descuento",
|
||||
"duration": "Duración (meses)",
|
||||
"groupId": "Grupo de Suscripción",
|
||||
"inventory": "Inventario",
|
||||
"monthlyReset": "Reinicio Mensual",
|
||||
"name": "Nombre",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Sin Reinicio",
|
||||
"pricing": "Precios",
|
||||
"purchaseWithDiscount": "Permitir Deducción",
|
||||
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la función de deducción. Cuando está habilitada, el sistema procesará deducciones basadas en las reglas y ratios configurados.",
|
||||
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la funcionalidad de cancelación de suscripción. Después de la activación, el sistema realizará el procesamiento de deducción según las reglas y proporciones configuradas, y el valor restante se devolverá al saldo",
|
||||
"quota": "Cantidad máxima de compra",
|
||||
"renewalReset": "Reinicio por Renovación",
|
||||
"renewalResetDescription": "Reiniciar ciclo al renovar",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Servidor",
|
||||
"serverGroup": "Grupo de servidores",
|
||||
"servers": "Servidores",
|
||||
"speedLimit": "Límite de velocidad (Mbps)",
|
||||
"subscribeGroup": "Grupo de suscripción",
|
||||
"speedLimit": "Límite de velocidad ",
|
||||
"traffic": "Tráfico",
|
||||
"unitPrice": "Precio unitario",
|
||||
"unitTime": "Unidad de tiempo"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "acciones",
|
||||
"balance": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comisión",
|
||||
"confirm": "Confirmar",
|
||||
"confirmDelete": "¿Está seguro de que desea eliminar?",
|
||||
"create": "Crear",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Saldo",
|
||||
"balancePlaceholder": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comisión",
|
||||
"commissionPlaceholder": "Ingrese la comisión",
|
||||
"confirm": "Confirmar",
|
||||
"giftAmount": "Monto del Regalo",
|
||||
"giftAmountPlaceholder": "Ingrese el monto del regalo",
|
||||
"invalidEmailFormat": "Formato de correo electrónico no válido",
|
||||
"inviteCode": "Código de invitación",
|
||||
"inviteCodePlaceholder": "Ingrese el código de invitación (déjelo en blanco para generar automáticamente)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Correo electrónico del usuario",
|
||||
"userEmailPlaceholder": "Ingrese el correo electrónico del usuario"
|
||||
},
|
||||
"giftAmount": "Monto del Regalo",
|
||||
"inviteCode": "Código de Invitación",
|
||||
"referer": "Recomendador",
|
||||
"updateSuccess": "Actualización exitosa",
|
||||
"userList": "Lista de usuarios",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "فعالسازی TLS",
|
||||
"encryptionMethod": "روش رمزنگاری",
|
||||
"flow": "الگوریتم کنترل جریان",
|
||||
"groupId": "گروه نود",
|
||||
"hopInterval": "فاصله پرش",
|
||||
"hopPorts": "پورتهای پرش",
|
||||
"hopPortsPlaceholder": "پورتهای متعدد را با کاما جدا کنید",
|
||||
"name": "نام",
|
||||
"nodeGroupId": "شناسه گروه گره",
|
||||
"obfsPassword": "رمز عبور مبهمسازی",
|
||||
"obfsPasswordPlaceholder": "برای عدم مبهمسازی خالی بگذارید",
|
||||
"path": "مسیر",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "درصد تخفیف",
|
||||
"discount_price": "قیمت تخفیف",
|
||||
"duration": "مدت زمان (ماهها)",
|
||||
"groupId": "گروه اشتراک",
|
||||
"inventory": "موجودی",
|
||||
"monthlyReset": "بازنشانی ماهانه",
|
||||
"name": "نام",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "بدون بازنشانی",
|
||||
"pricing": "قیمتگذاری",
|
||||
"purchaseWithDiscount": "اجازه کسر",
|
||||
"purchaseWithDiscountDescription": "فعال یا غیرفعال کردن ویژگی کسر. هنگامی که فعال است، سیستم کسرها را بر اساس قوانین و نسبتهای پیکربندی شده پردازش میکند.",
|
||||
"purchaseWithDiscountDescription": "فعال یا غیرفعال کردن قابلیت لغو اشتراک. پس از فعالسازی، سیستم بر اساس قوانین و نسبتهای تنظیمشده، پردازش کسر را انجام میدهد و مقدار باقیمانده به موجودی بازگردانده میشود.",
|
||||
"quota": "محدودیت خرید",
|
||||
"renewalReset": "بازنشانی تمدید",
|
||||
"renewalResetDescription": "بازنشانی چرخه در زمان تمدید",
|
||||
@ -56,7 +57,6 @@
|
||||
"serverGroup": "گروه سرور",
|
||||
"servers": "سرورها",
|
||||
"speedLimit": "محدودیت سرعت (مگابیت بر ثانیه)",
|
||||
"subscribeGroup": "گروه اشتراک",
|
||||
"traffic": "ترافیک",
|
||||
"unitPrice": "قیمت واحد",
|
||||
"unitTime": "واحد زمان"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "اقدامات",
|
||||
"balance": "تعادل",
|
||||
"cancel": "لغو",
|
||||
"commission": "کمیسیون",
|
||||
"confirm": "تأیید",
|
||||
"confirmDelete": "آیا مطمئن هستید که میخواهید حذف کنید؟",
|
||||
"create": "ایجاد",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "موجودی",
|
||||
"balancePlaceholder": "موجودی",
|
||||
"cancel": "لغو",
|
||||
"commission": "کمیسیون",
|
||||
"commissionPlaceholder": "کمیسیون را وارد کنید",
|
||||
"confirm": "تأیید",
|
||||
"giftAmount": "مبلغ هدیه",
|
||||
"giftAmountPlaceholder": "مبلغ هدیه را وارد کنید",
|
||||
"invalidEmailFormat": "فرمت ایمیل نامعتبر است",
|
||||
"inviteCode": "کد دعوت",
|
||||
"inviteCodePlaceholder": "کد دعوت را وارد کنید (برای تولید خالی بگذارید)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "ایمیل کاربر",
|
||||
"userEmailPlaceholder": "ایمیل کاربر را وارد کنید"
|
||||
},
|
||||
"giftAmount": "مقدار هدیه",
|
||||
"inviteCode": "کد دعوت",
|
||||
"referer": "ارجاعدهنده",
|
||||
"updateSuccess": "بهروزرسانی با موفقیت انجام شد",
|
||||
"userList": "فهرست کاربران",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Ota TLS käyttöön",
|
||||
"encryptionMethod": "Salausmenetelmä",
|
||||
"flow": "Virtausalgoritmi",
|
||||
"groupId": "Solmu Ryhmä",
|
||||
"hopInterval": "Hyppyväli",
|
||||
"hopPorts": "Hyppyportit",
|
||||
"hopPortsPlaceholder": "Erota useat portit pilkulla",
|
||||
"name": "Nimi",
|
||||
"nodeGroupId": "Solmuryhmän ID",
|
||||
"obfsPassword": "Hämäyssalasana",
|
||||
"obfsPasswordPlaceholder": "Jätä tyhjäksi, jos ei hämäystä",
|
||||
"path": "Polku",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Alennusprosentti",
|
||||
"discount_price": "Alennettu hinta",
|
||||
"duration": "Kesto (kuukautta)",
|
||||
"groupId": "Tilausryhmä",
|
||||
"inventory": "Varasto",
|
||||
"monthlyReset": "Kuukausittainen Nollaus",
|
||||
"name": "Nimi",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Ei Nollausta",
|
||||
"pricing": "Hinnoittelu",
|
||||
"purchaseWithDiscount": "Salli Vähennys",
|
||||
"purchaseWithDiscountDescription": "Ota vähennystoiminto käyttöön tai poista se käytöstä. Kun se on käytössä, järjestelmä käsittelee vähennykset määritettyjen sääntöjen ja suhteiden perusteella.",
|
||||
"purchaseWithDiscountDescription": "Ota käyttöön tai poista käytöstä peruutustoiminto. Aktivoinnin jälkeen järjestelmä suorittaa vähennyskäsittelyn määritettyjen sääntöjen ja osuuksien mukaisesti, ja jäljelle jäävä arvo palautetaan saldolle.",
|
||||
"quota": "Ostorajoitus",
|
||||
"renewalReset": "Uusimisen Nollaus",
|
||||
"renewalResetDescription": "Nollaa jakso uusimisen yhteydessä",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Palvelin",
|
||||
"serverGroup": "Palvelinryhmä",
|
||||
"servers": "Palvelimet",
|
||||
"speedLimit": "Nopeusrajoitus (Mbps)",
|
||||
"subscribeGroup": "Tilausryhmä",
|
||||
"speedLimit": "Nopeusrajoitus ",
|
||||
"traffic": "Liikenne",
|
||||
"unitPrice": "Yksikköhinta",
|
||||
"unitTime": "Aikayksikkö"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "toiminnot",
|
||||
"balance": "Saldo",
|
||||
"cancel": "Peruuta",
|
||||
"commission": "Komissio",
|
||||
"confirm": "Vahvista",
|
||||
"confirmDelete": "Oletko varma, että haluat poistaa?",
|
||||
"create": "Luo",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Saldo",
|
||||
"balancePlaceholder": "Saldo",
|
||||
"cancel": "Peruuta",
|
||||
"commission": "Komissio",
|
||||
"commissionPlaceholder": "Syötä komissio",
|
||||
"confirm": "Vahvista",
|
||||
"giftAmount": "Lahjan määrä",
|
||||
"giftAmountPlaceholder": "Syötä lahjan määrä",
|
||||
"invalidEmailFormat": "Virheellinen sähköpostimuoto",
|
||||
"inviteCode": "Kutsukoodi",
|
||||
"inviteCodePlaceholder": "Syötä kutsukoodi (jätä tyhjäksi, jos haluat luoda automaattisesti)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Käyttäjän sähköposti",
|
||||
"userEmailPlaceholder": "Syötä käyttäjän sähköposti"
|
||||
},
|
||||
"giftAmount": "Lahjan määrä",
|
||||
"inviteCode": "Kutsukoodi",
|
||||
"referer": "Suosittelija",
|
||||
"updateSuccess": "Päivitys onnistui",
|
||||
"userList": "Käyttäjälista",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Activer TLS",
|
||||
"encryptionMethod": "Méthode de cryptage",
|
||||
"flow": "Algorithme de contrôle de flux",
|
||||
"groupId": "Groupe de nœuds",
|
||||
"hopInterval": "Intervalle de saut",
|
||||
"hopPorts": "Ports de saut",
|
||||
"hopPortsPlaceholder": "Séparer plusieurs ports par des virgules",
|
||||
"name": "Nom",
|
||||
"nodeGroupId": "ID du groupe de nœuds",
|
||||
"obfsPassword": "Mot de passe d'obfuscation",
|
||||
"obfsPasswordPlaceholder": "Laisser vide pour ne pas obfusquer",
|
||||
"path": "Chemin",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Pourcentage de remise",
|
||||
"discount_price": "Prix remisé",
|
||||
"duration": "Durée (mois)",
|
||||
"groupId": "Groupe d'abonnement",
|
||||
"inventory": "Stock",
|
||||
"monthlyReset": "Réinitialisation Mensuelle",
|
||||
"name": "Nom",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Pas de Réinitialisation",
|
||||
"pricing": "Tarification",
|
||||
"purchaseWithDiscount": "Autoriser la Déduction",
|
||||
"purchaseWithDiscountDescription": "Activer ou désactiver la fonction de déduction. Lorsqu'elle est activée, le système traitera les déductions selon les règles et ratios configurés",
|
||||
"purchaseWithDiscountDescription": "Activer ou désactiver la fonctionnalité de désabonnement. Après activation, le système effectuera un traitement de déduction selon les règles et proportions configurées, et la valeur restante sera retournée au solde.",
|
||||
"quota": "Quantité d'achat limitée",
|
||||
"renewalReset": "Réinitialisation au Renouvellement",
|
||||
"renewalResetDescription": "Réinitialiser le cycle lors du renouvellement",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Serveur",
|
||||
"serverGroup": "Groupe de serveurs",
|
||||
"servers": "Serveurs",
|
||||
"speedLimit": "Limite de vitesse (Mbps)",
|
||||
"subscribeGroup": "Groupe d'abonnement",
|
||||
"speedLimit": "Limite de vitesse ",
|
||||
"traffic": "Trafic",
|
||||
"unitPrice": "Prix unitaire",
|
||||
"unitTime": "Unité de temps"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "actions",
|
||||
"balance": "Solde",
|
||||
"cancel": "Annuler",
|
||||
"commission": "Commission",
|
||||
"confirm": "Confirmer",
|
||||
"confirmDelete": "Êtes-vous sûr de vouloir supprimer ?",
|
||||
"create": "Créer",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Solde",
|
||||
"balancePlaceholder": "Solde",
|
||||
"cancel": "Annuler",
|
||||
"commission": "Commission",
|
||||
"commissionPlaceholder": "Entrez la commission",
|
||||
"confirm": "Confirmer",
|
||||
"giftAmount": "Montant du cadeau",
|
||||
"giftAmountPlaceholder": "Entrez le montant du cadeau",
|
||||
"invalidEmailFormat": "Format d'e-mail invalide",
|
||||
"inviteCode": "Code d'invitation",
|
||||
"inviteCodePlaceholder": "Veuillez entrer le code d'invitation (laissez vide pour générer automatiquement)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "E-mail de l'utilisateur",
|
||||
"userEmailPlaceholder": "Veuillez entrer l'e-mail de l'utilisateur"
|
||||
},
|
||||
"giftAmount": "Montant du cadeau",
|
||||
"inviteCode": "Code d'invitation",
|
||||
"referer": "Référent",
|
||||
"updateSuccess": "Mise à jour réussie",
|
||||
"userList": "Liste des utilisateurs",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLS सक्षम करें",
|
||||
"encryptionMethod": "एन्क्रिप्शन विधि",
|
||||
"flow": "फ्लो कंट्रोल एल्गोरिदम",
|
||||
"groupId": "नोड समूह",
|
||||
"hopInterval": "हॉप अंतराल",
|
||||
"hopPorts": "हॉप पोर्ट्स",
|
||||
"hopPortsPlaceholder": "कई पोर्ट्स को कॉमा से अलग करें",
|
||||
"name": "नाम",
|
||||
"nodeGroupId": "नोड समूह ID",
|
||||
"obfsPassword": "ऑबफ्स पासवर्ड",
|
||||
"obfsPasswordPlaceholder": "खाली छोड़ें तो ऑबफ्स नहीं होगा",
|
||||
"path": "पथ",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "छूट प्रतिशत",
|
||||
"discount_price": "छूट मूल्य",
|
||||
"duration": "अवधि (महीने)",
|
||||
"groupId": "सदस्यता समूह",
|
||||
"inventory": "भंडार",
|
||||
"monthlyReset": "मासिक रीसेट",
|
||||
"name": "नाम",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "कोई रीसेट नहीं",
|
||||
"pricing": "मूल्य निर्धारण",
|
||||
"purchaseWithDiscount": "कटौती की अनुमति दें",
|
||||
"purchaseWithDiscountDescription": "कटौती सुविधा को सक्षम या अक्षम करें। जब सक्षम किया जाता है, तो सिस्टम कॉन्फ़िगर किए गए नियमों और अनुपातों के आधार पर कटौती को संसाधित करेगा।",
|
||||
"purchaseWithDiscountDescription": "अनसब्सक्राइब कार्यक्षमता को सक्षम या अक्षम करें। सक्रियण के बाद, सिस्टम कॉन्फ़िगर किए गए नियमों और अनुपातों के अनुसार कटौती प्रसंस्करण करेगा, और शेष मूल्य को बैलेंस में वापस कर दिया जाएगा।",
|
||||
"quota": "खरीद सीमा",
|
||||
"renewalReset": "नवीनीकरण रीसेट",
|
||||
"renewalResetDescription": "नवीनीकरण पर रीसेट चक्र",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "सर्वर",
|
||||
"serverGroup": "सर्वर समूह",
|
||||
"servers": "सर्वर",
|
||||
"speedLimit": "गति सीमा (Mbps)",
|
||||
"subscribeGroup": "सदस्यता समूह",
|
||||
"speedLimit": "गति सीमा ",
|
||||
"traffic": "ट्रैफिक",
|
||||
"unitPrice": "इकाई मूल्य",
|
||||
"unitTime": "इकाई समय"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "क्रियाएँ",
|
||||
"balance": "शेष",
|
||||
"cancel": "रद्द करें",
|
||||
"commission": "आयोग",
|
||||
"confirm": "पुष्टि करें",
|
||||
"confirmDelete": "क्या आप वाकई हटाना चाहते हैं?",
|
||||
"create": "सृजन",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "शेष राशि",
|
||||
"balancePlaceholder": "शेष राशि",
|
||||
"cancel": "रद्द करें",
|
||||
"commission": "कमीशन",
|
||||
"commissionPlaceholder": "कमीशन दर्ज करें",
|
||||
"confirm": "पुष्टि करें",
|
||||
"giftAmount": "उपहार राशि",
|
||||
"giftAmountPlaceholder": "उपहार राशि दर्ज करें",
|
||||
"invalidEmailFormat": "अमान्य ईमेल प्रारूप",
|
||||
"inviteCode": "आमंत्रण कोड",
|
||||
"inviteCodePlaceholder": "कृपया आमंत्रण कोड दर्ज करें (खाली छोड़ने पर स्वचालित रूप से उत्पन्न होगा)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "उपयोगकर्ता ईमेल",
|
||||
"userEmailPlaceholder": "कृपया उपयोगकर्ता ईमेल दर्ज करें"
|
||||
},
|
||||
"giftAmount": "उपहार राशि",
|
||||
"inviteCode": "आमंत्रण कोड",
|
||||
"referer": "सिफारिशकर्ता",
|
||||
"updateSuccess": "अपडेट सफल",
|
||||
"userList": "उपयोगकर्ता सूची",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLS engedélyezése",
|
||||
"encryptionMethod": "Titkosítási módszer",
|
||||
"flow": "Áramlásszabályozási algoritmus",
|
||||
"groupId": "Csomópont csoport",
|
||||
"hopInterval": "Ugrási intervallum",
|
||||
"hopPorts": "Ugrási portok",
|
||||
"hopPortsPlaceholder": "Több portot vesszővel elválasztva",
|
||||
"name": "Név",
|
||||
"nodeGroupId": "Csomópont csoport ID",
|
||||
"obfsPassword": "Zavaró jelszó",
|
||||
"obfsPasswordPlaceholder": "Hagyja üresen, ha nem zavarosít",
|
||||
"path": "Útvonal",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Kedvezmény százalék",
|
||||
"discount_price": "Kedvezményes ár",
|
||||
"duration": "Időtartam (hónap)",
|
||||
"groupId": "Előfizetési csoport",
|
||||
"inventory": "Készlet",
|
||||
"monthlyReset": "Havi Visszaállítás",
|
||||
"name": "Név",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Nincs Visszaállítás",
|
||||
"pricing": "Árazás",
|
||||
"purchaseWithDiscount": "Levonás Engedélyezése",
|
||||
"purchaseWithDiscountDescription": "A levonási funkció engedélyezése vagy letiltása. Ha engedélyezve van, a rendszer a beállított szabályok és arányok alapján dolgozza fel a levonásokat.",
|
||||
"purchaseWithDiscountDescription": "Leiratkozási funkció engedélyezése vagy letiltása. Aktiválás után a rendszer a beállított szabályok és arányok szerint végzi el a levonási feldolgozást, és a fennmaradó értéket visszatéríti az egyenlegre.",
|
||||
"quota": "Vásárlási korlát",
|
||||
"renewalReset": "Megújítási Visszaállítás",
|
||||
"renewalResetDescription": "Visszaállítási ciklus megújításkor",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Szolgáltatás",
|
||||
"serverGroup": "Szolgáltatáscsoport",
|
||||
"servers": "Szerverek",
|
||||
"speedLimit": "Sebességkorlát (Mbps)",
|
||||
"subscribeGroup": "Előfizetési csoport",
|
||||
"speedLimit": "Sebességkorlát ",
|
||||
"traffic": "Forgalom",
|
||||
"unitPrice": "Egységár",
|
||||
"unitTime": "Időegység"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "műveletek",
|
||||
"balance": "Egyenleg",
|
||||
"cancel": "Mégse",
|
||||
"commission": "Jutalék",
|
||||
"confirm": "Megerősítés",
|
||||
"confirmDelete": "Biztosan törölni szeretné?",
|
||||
"create": "Létrehozás",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Egyenleg",
|
||||
"balancePlaceholder": "Egyenleg",
|
||||
"cancel": "Mégse",
|
||||
"commission": "Jutalék",
|
||||
"commissionPlaceholder": "Adja meg a jutalékot",
|
||||
"confirm": "Megerősít",
|
||||
"giftAmount": "Ajándék összege",
|
||||
"giftAmountPlaceholder": "Adja meg az ajándék összegét",
|
||||
"invalidEmailFormat": "Érvénytelen e-mail formátum",
|
||||
"inviteCode": "Meghívókód",
|
||||
"inviteCodePlaceholder": "Kérjük, adja meg a meghívókódot (ha üres, automatikusan generálódik)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Felhasználói e-mail",
|
||||
"userEmailPlaceholder": "Kérjük, adja meg a felhasználói e-mail címet"
|
||||
},
|
||||
"giftAmount": "Ajándék Összeg",
|
||||
"inviteCode": "Meghívókód",
|
||||
"referer": "Ajánló",
|
||||
"updateSuccess": "Sikeres frissítés",
|
||||
"userList": "Felhasználói lista",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLSを有効化",
|
||||
"encryptionMethod": "暗号化方式",
|
||||
"flow": "フロー制御アルゴリズム",
|
||||
"groupId": "ノードグループ",
|
||||
"hopInterval": "ホップ間隔",
|
||||
"hopPorts": "ホップポート",
|
||||
"hopPortsPlaceholder": "複数のポートはカンマで区切る",
|
||||
"name": "名前",
|
||||
"nodeGroupId": "ノードグループID",
|
||||
"obfsPassword": "オブフスケーションパスワード",
|
||||
"obfsPasswordPlaceholder": "空白の場合はオブフスケーションなし",
|
||||
"path": "パス",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "割引率",
|
||||
"discount_price": "割引価格",
|
||||
"duration": "期間(月)",
|
||||
"groupId": "サブスクリプショングループ",
|
||||
"inventory": "在庫",
|
||||
"monthlyReset": "毎月リセット",
|
||||
"name": "名称",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "リセットなし",
|
||||
"pricing": "価格設定",
|
||||
"purchaseWithDiscount": "控除を許可",
|
||||
"purchaseWithDiscountDescription": "控除機能を有効または無効にします。有効にすると、システムは設定されたルールと比率に基づいて控除を処理します。",
|
||||
"purchaseWithDiscountDescription": "購読解除機能を有効または無効にします。有効化後、システムは設定されたルールと割合に従って控除処理を行い、残りの金額を残高に返金します。",
|
||||
"quota": "購入制限数",
|
||||
"renewalReset": "更新時リセット",
|
||||
"renewalResetDescription": "更新時にリセットサイクル",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "サーバー",
|
||||
"serverGroup": "サーバーグループ",
|
||||
"servers": "サーバー",
|
||||
"speedLimit": "速度制限(Mbps)",
|
||||
"subscribeGroup": "サブスクリプショングループ",
|
||||
"speedLimit": "速度制限",
|
||||
"traffic": "トラフィック",
|
||||
"unitPrice": "単価",
|
||||
"unitTime": "単位時間"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "アクション",
|
||||
"balance": "残高",
|
||||
"cancel": "キャンセル",
|
||||
"commission": "手数料",
|
||||
"confirm": "確認",
|
||||
"confirmDelete": "削除してもよろしいですか?",
|
||||
"create": "作成",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "残高",
|
||||
"balancePlaceholder": "残高",
|
||||
"cancel": "キャンセル",
|
||||
"commission": "手数料",
|
||||
"commissionPlaceholder": "手数料を入力してください",
|
||||
"confirm": "確認",
|
||||
"giftAmount": "ギフト金額",
|
||||
"giftAmountPlaceholder": "ギフト金額を入力してください",
|
||||
"invalidEmailFormat": "無効なメール形式",
|
||||
"inviteCode": "招待コード",
|
||||
"inviteCodePlaceholder": "招待コードを入力してください(空白の場合は自動生成されます)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "ユーザーのメール",
|
||||
"userEmailPlaceholder": "ユーザーのメールを入力してください"
|
||||
},
|
||||
"giftAmount": "ギフト金額",
|
||||
"inviteCode": "招待コード",
|
||||
"referer": "推薦者",
|
||||
"updateSuccess": "更新が成功しました",
|
||||
"userList": "ユーザーリスト",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLS 활성화",
|
||||
"encryptionMethod": "암호화 방법",
|
||||
"flow": "흐름 제어 알고리즘",
|
||||
"groupId": "노드 그룹",
|
||||
"hopInterval": "홉 간격",
|
||||
"hopPorts": "홉 포트",
|
||||
"hopPortsPlaceholder": "여러 포트는 쉼표로 구분",
|
||||
"name": "이름",
|
||||
"nodeGroupId": "노드 그룹 ID",
|
||||
"obfsPassword": "난독화 비밀번호",
|
||||
"obfsPasswordPlaceholder": "비워두면 난독화 안 함",
|
||||
"path": "경로",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "할인율",
|
||||
"discount_price": "할인가",
|
||||
"duration": "기간 (개월)",
|
||||
"groupId": "구독 그룹",
|
||||
"inventory": "재고",
|
||||
"monthlyReset": "월별 초기화",
|
||||
"name": "이름",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "초기화 없음",
|
||||
"pricing": "가격",
|
||||
"purchaseWithDiscount": "공제 허용",
|
||||
"purchaseWithDiscountDescription": "공제 기능을 활성화하거나 비활성화합니다. 활성화되면 시스템은 구성된 규칙과 비율에 따라 공제를 처리합니다.",
|
||||
"purchaseWithDiscountDescription": "구독 취소 기능을 활성화하거나 비활성화합니다. 활성화 후, 시스템은 설정된 규칙과 비율에 따라 공제 처리를 수행하며, 남은 가치는 잔액으로 반환됩니다.",
|
||||
"quota": "구매 한도",
|
||||
"renewalReset": "갱신 초기화",
|
||||
"renewalResetDescription": "갱신 시 초기화 주기",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "서버",
|
||||
"serverGroup": "서버 그룹",
|
||||
"servers": "서버",
|
||||
"speedLimit": "속도 제한 (Mbps)",
|
||||
"subscribeGroup": "구독 그룹",
|
||||
"speedLimit": "속도 제한 ",
|
||||
"traffic": "트래픽",
|
||||
"unitPrice": "단가",
|
||||
"unitTime": "단위 시간"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "작업",
|
||||
"balance": "잔액",
|
||||
"cancel": "취소",
|
||||
"commission": "커미션",
|
||||
"confirm": "확인",
|
||||
"confirmDelete": "삭제하시겠습니까?",
|
||||
"create": "생성",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "잔액",
|
||||
"balancePlaceholder": "잔액",
|
||||
"cancel": "취소",
|
||||
"commission": "수수료",
|
||||
"commissionPlaceholder": "수수료 입력",
|
||||
"confirm": "확인",
|
||||
"giftAmount": "선물 금액",
|
||||
"giftAmountPlaceholder": "선물 금액 입력",
|
||||
"invalidEmailFormat": "유효하지 않은 이메일 형식",
|
||||
"inviteCode": "초대 코드",
|
||||
"inviteCodePlaceholder": "초대 코드를 입력하세요 (비워두면 자동 생성)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "사용자 이메일",
|
||||
"userEmailPlaceholder": "사용자 이메일을 입력하세요"
|
||||
},
|
||||
"giftAmount": "선물 금액",
|
||||
"inviteCode": "초대 코드",
|
||||
"referer": "추천인",
|
||||
"updateSuccess": "업데이트 성공",
|
||||
"userList": "사용자 목록",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Aktiver TLS",
|
||||
"encryptionMethod": "Krypteringsmetode",
|
||||
"flow": "Flytkontrollalgoritme",
|
||||
"groupId": "Nodegruppe",
|
||||
"hopInterval": "Hoppintervall",
|
||||
"hopPorts": "Hoppporter",
|
||||
"hopPortsPlaceholder": "Flere porter separeres med komma",
|
||||
"name": "Navn",
|
||||
"nodeGroupId": "Nodegruppe-ID",
|
||||
"obfsPassword": "Forvirringspassord",
|
||||
"obfsPasswordPlaceholder": "La stå tomt for ingen forvirring",
|
||||
"path": "Sti",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Rabattprosent",
|
||||
"discount_price": "Rabattert pris",
|
||||
"duration": "Varighet (måneder)",
|
||||
"groupId": "Abonnementsgruppe",
|
||||
"inventory": "Lager",
|
||||
"monthlyReset": "Månedlig Tilbakestilling",
|
||||
"name": "Navn",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Ingen Tilbakestilling",
|
||||
"pricing": "Prissetting",
|
||||
"purchaseWithDiscount": "Tillat Fradrag",
|
||||
"purchaseWithDiscountDescription": "Aktiver eller deaktiver fradragsfunksjonen. Når den er aktivert, vil systemet behandle fradrag basert på de konfigurerte reglene og forholdene",
|
||||
"purchaseWithDiscountDescription": "Aktiver eller deaktiver funksjonaliteten for avmelding. Etter aktivering vil systemet utføre fradragsbehandling i henhold til de konfigurerte reglene og proporsjonene, og den gjenværende verdien vil bli returnert til saldoen",
|
||||
"quota": "Kjøpskvote",
|
||||
"renewalReset": "Fornyelsestilbakestilling",
|
||||
"renewalResetDescription": "Tilbakestill syklus ved fornyelse",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Tjeneste",
|
||||
"serverGroup": "Tjenestegruppe",
|
||||
"servers": "Servere",
|
||||
"speedLimit": "Hastighetsbegrensning (Mbps)",
|
||||
"subscribeGroup": "Abonnementsgruppe",
|
||||
"speedLimit": "Hastighetsbegrensning ",
|
||||
"traffic": "Trafikk",
|
||||
"unitPrice": "Enhetspris",
|
||||
"unitTime": "Enhetstid"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "handlinger",
|
||||
"balance": "Balanse",
|
||||
"cancel": "Avbryt",
|
||||
"commission": "Kommisjon",
|
||||
"confirm": "bekreft",
|
||||
"confirmDelete": "Er du sikker på at du vil slette?",
|
||||
"create": "opprett",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Balanse",
|
||||
"balancePlaceholder": "Balanse",
|
||||
"cancel": "Avbryt",
|
||||
"commission": "Provisjon",
|
||||
"commissionPlaceholder": "Skriv inn provisjon",
|
||||
"confirm": "Bekreft",
|
||||
"giftAmount": "Gavebeløp",
|
||||
"giftAmountPlaceholder": "Skriv inn gavebeløp",
|
||||
"invalidEmailFormat": "Ugyldig e-postformat",
|
||||
"inviteCode": "Invitasjonskode",
|
||||
"inviteCodePlaceholder": "Vennligst skriv inn invitasjonskode (la stå tom for automatisk generering)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Brukerens e-post",
|
||||
"userEmailPlaceholder": "Vennligst skriv inn brukerens e-post"
|
||||
},
|
||||
"giftAmount": "Gavebeløp",
|
||||
"inviteCode": "Invitasjonskode",
|
||||
"referer": "Henviser",
|
||||
"updateSuccess": "Oppdatering vellykket",
|
||||
"userList": "Brukerliste",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Włącz TLS",
|
||||
"encryptionMethod": "Metoda szyfrowania",
|
||||
"flow": "Algorytm kontroli przepływu",
|
||||
"groupId": "Grupa węzłów",
|
||||
"hopInterval": "Interwał skoku",
|
||||
"hopPorts": "Porty skoku",
|
||||
"hopPortsPlaceholder": "Wiele portów oddziel przecinkami",
|
||||
"name": "Nazwa",
|
||||
"nodeGroupId": "ID grupy węzłów",
|
||||
"obfsPassword": "Hasło zaciemnienia",
|
||||
"obfsPasswordPlaceholder": "Pozostaw puste, aby nie zaciemniać",
|
||||
"path": "Ścieżka",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Procent zniżki",
|
||||
"discount_price": "Cena po zniżce",
|
||||
"duration": "Czas trwania (miesiące)",
|
||||
"groupId": "Grupa subskrypcyjna",
|
||||
"inventory": "Zapas",
|
||||
"monthlyReset": "Miesięczny Reset",
|
||||
"name": "Nazwa",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Brak Resetu",
|
||||
"pricing": "Cennik",
|
||||
"purchaseWithDiscount": "Zezwól na Potrącenie",
|
||||
"purchaseWithDiscountDescription": "Włącz lub wyłącz funkcję potrąceń. Po włączeniu system przetworzy potrącenia na podstawie skonfigurowanych zasad i współczynników",
|
||||
"purchaseWithDiscountDescription": "Włącz lub wyłącz funkcję rezygnacji z subskrypcji. Po aktywacji system przeprowadzi proces odliczenia zgodnie z skonfigurowanymi zasadami i proporcjami, a pozostała wartość zostanie zwrócona na saldo",
|
||||
"quota": "Limit zakupu",
|
||||
"renewalReset": "Reset przy Odnowieniu",
|
||||
"renewalResetDescription": "Reset cyklu przy odnowieniu",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Serwer",
|
||||
"serverGroup": "Grupa serwerów",
|
||||
"servers": "Serwery",
|
||||
"speedLimit": "Limit prędkości (Mbps)",
|
||||
"subscribeGroup": "Grupa subskrypcji",
|
||||
"speedLimit": "Limit prędkości ",
|
||||
"traffic": "Ruch",
|
||||
"unitPrice": "Cena jednostkowa",
|
||||
"unitTime": "Jednostka czasu"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "działania",
|
||||
"balance": "saldo",
|
||||
"cancel": "Anuluj",
|
||||
"commission": "Prowizja",
|
||||
"confirm": "Potwierdź",
|
||||
"confirmDelete": "Czy na pewno chcesz usunąć?",
|
||||
"create": "Utwórz",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Saldo",
|
||||
"balancePlaceholder": "Saldo",
|
||||
"cancel": "Anuluj",
|
||||
"commission": "Prowizja",
|
||||
"commissionPlaceholder": "Wprowadź prowizję",
|
||||
"confirm": "Potwierdź",
|
||||
"giftAmount": "Kwota prezentu",
|
||||
"giftAmountPlaceholder": "Wprowadź kwotę prezentu",
|
||||
"invalidEmailFormat": "Nieprawidłowy format e-maila",
|
||||
"inviteCode": "Kod zaproszenia",
|
||||
"inviteCodePlaceholder": "Wprowadź kod zaproszenia (pozostaw puste, aby wygenerować automatycznie)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "E-mail użytkownika",
|
||||
"userEmailPlaceholder": "Wprowadź e-mail użytkownika"
|
||||
},
|
||||
"giftAmount": "Kwota Prezentu",
|
||||
"inviteCode": "Kod zaproszenia",
|
||||
"referer": "Polecający",
|
||||
"updateSuccess": "Aktualizacja zakończona pomyślnie",
|
||||
"userList": "Lista użytkowników",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Habilitar TLS",
|
||||
"encryptionMethod": "Método de Criptografia",
|
||||
"flow": "Algoritmo de Controle de Fluxo",
|
||||
"groupId": "Grupo de Nós",
|
||||
"hopInterval": "Intervalo de Salto",
|
||||
"hopPorts": "Portas de Salto",
|
||||
"hopPortsPlaceholder": "Várias portas separadas por vírgula",
|
||||
"name": "Nome",
|
||||
"nodeGroupId": "ID do Grupo de Nós",
|
||||
"obfsPassword": "Senha de Ofuscação",
|
||||
"obfsPasswordPlaceholder": "Deixe em branco para não ofuscar",
|
||||
"path": "Caminho",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Percentual de desconto",
|
||||
"discount_price": "Preço com desconto",
|
||||
"duration": "Duração (meses)",
|
||||
"groupId": "Grupo de Assinatura",
|
||||
"inventory": "Estoque",
|
||||
"monthlyReset": "Reinicialização Mensal",
|
||||
"name": "Nome",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Sem Reinicialização",
|
||||
"pricing": "Preços",
|
||||
"purchaseWithDiscount": "Permitir Dedução",
|
||||
"purchaseWithDiscountDescription": "Habilitar ou desabilitar a funcionalidade de dedução. Quando habilitada, o sistema processará deduções com base nas regras e proporções configuradas",
|
||||
"purchaseWithDiscountDescription": "Ative ou desative a funcionalidade de cancelamento de inscrição. Após a ativação, o sistema realizará o processamento de dedução de acordo com as regras e proporções configuradas, e o valor restante será retornado ao saldo",
|
||||
"quota": "Quantidade limitada",
|
||||
"renewalReset": "Reinicialização na Renovação",
|
||||
"renewalResetDescription": "Reiniciar ciclo ao renovar",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Servidor",
|
||||
"serverGroup": "Grupo de servidores",
|
||||
"servers": "Servidores",
|
||||
"speedLimit": "Limite de velocidade (Mbps)",
|
||||
"subscribeGroup": "Grupo de assinatura",
|
||||
"speedLimit": "Limite de velocidade ",
|
||||
"traffic": "Tráfego",
|
||||
"unitPrice": "Preço unitário",
|
||||
"unitTime": "Unidade de tempo"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "ações",
|
||||
"balance": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comissão",
|
||||
"confirm": "confirmar",
|
||||
"confirmDelete": "Você tem certeza de que deseja excluir?",
|
||||
"create": "Criar",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Saldo",
|
||||
"balancePlaceholder": "Saldo",
|
||||
"cancel": "Cancelar",
|
||||
"commission": "Comissão",
|
||||
"commissionPlaceholder": "Insira a comissão",
|
||||
"confirm": "Confirmar",
|
||||
"giftAmount": "Valor do Presente",
|
||||
"giftAmountPlaceholder": "Insira o valor do presente",
|
||||
"invalidEmailFormat": "Formato de e-mail inválido",
|
||||
"inviteCode": "Código de Convite",
|
||||
"inviteCodePlaceholder": "Insira o código de convite (deixe em branco para gerar automaticamente)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "E-mail do Usuário",
|
||||
"userEmailPlaceholder": "Insira o e-mail do usuário"
|
||||
},
|
||||
"giftAmount": "Valor do Presente",
|
||||
"inviteCode": "Código de Convite",
|
||||
"referer": "Referente",
|
||||
"updateSuccess": "Atualização bem-sucedida",
|
||||
"userList": "Lista de Usuários",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Activează TLS",
|
||||
"encryptionMethod": "Metodă de criptare",
|
||||
"flow": "Algoritm de control al fluxului",
|
||||
"groupId": "Grup Nod",
|
||||
"hopInterval": "Interval de salt",
|
||||
"hopPorts": "Porturi de salt",
|
||||
"hopPortsPlaceholder": "Mai multe porturi separate prin virgulă",
|
||||
"name": "Nume",
|
||||
"nodeGroupId": "ID grup nod",
|
||||
"obfsPassword": "Parolă de obfuscare",
|
||||
"obfsPasswordPlaceholder": "Lasă gol pentru a nu obfusca",
|
||||
"path": "Cale",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Procent reducere",
|
||||
"discount_price": "Preț redus",
|
||||
"duration": "Durată (luni)",
|
||||
"groupId": "Grup de Abonament",
|
||||
"inventory": "Stoc",
|
||||
"monthlyReset": "Resetare Lunară",
|
||||
"name": "Nume",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Fără Resetare",
|
||||
"pricing": "Prețuri",
|
||||
"purchaseWithDiscount": "Permite Deducerea",
|
||||
"purchaseWithDiscountDescription": "Activează sau dezactivează funcția de deducere. Când este activată, sistemul va procesa deducerile pe baza regulilor și rapoartelor configurate",
|
||||
"purchaseWithDiscountDescription": "Activează sau dezactivează funcționalitatea de dezabonare. După activare, sistemul va efectua procesarea deducerilor conform regulilor și proporțiilor configurate, iar valoarea rămasă va fi returnată în sold.",
|
||||
"quota": "Limită de achiziție",
|
||||
"renewalReset": "Resetare la Reînnoire",
|
||||
"renewalResetDescription": "Resetează ciclul la reînnoire",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Server",
|
||||
"serverGroup": "Grup server",
|
||||
"servers": "Servere",
|
||||
"speedLimit": "Limită de viteză (Mbps)",
|
||||
"subscribeGroup": "Grup de abonament",
|
||||
"speedLimit": "Limită de viteză ",
|
||||
"traffic": "Trafic",
|
||||
"unitPrice": "Preț unitar",
|
||||
"unitTime": "Unitate de timp"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "acțiuni",
|
||||
"balance": "Sold",
|
||||
"cancel": "Anulare",
|
||||
"commission": "Comision",
|
||||
"confirm": "Confirmare",
|
||||
"confirmDelete": "Sunteți sigur că doriți să ștergeți?",
|
||||
"create": "crea",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Sold",
|
||||
"balancePlaceholder": "Sold",
|
||||
"cancel": "Anulează",
|
||||
"commission": "Comision",
|
||||
"commissionPlaceholder": "Introduceți comisionul",
|
||||
"confirm": "Confirmă",
|
||||
"giftAmount": "Sumă Cadou",
|
||||
"giftAmountPlaceholder": "Introduceți suma cadou",
|
||||
"invalidEmailFormat": "Format de e-mail invalid",
|
||||
"inviteCode": "Cod de invitație",
|
||||
"inviteCodePlaceholder": "Introduceți codul de invitație (lăsați gol pentru generare automată)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "E-mail utilizator",
|
||||
"userEmailPlaceholder": "Introduceți e-mailul utilizatorului"
|
||||
},
|
||||
"giftAmount": "Sumă Cadou",
|
||||
"inviteCode": "Cod de invitație",
|
||||
"referer": "Referent",
|
||||
"updateSuccess": "Actualizare reușită",
|
||||
"userList": "Lista utilizatorilor",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Включить TLS",
|
||||
"encryptionMethod": "Метод шифрования",
|
||||
"flow": "Алгоритм управления потоком",
|
||||
"groupId": "Группа узлов",
|
||||
"hopInterval": "Интервал прыжка",
|
||||
"hopPorts": "Порты прыжка",
|
||||
"hopPortsPlaceholder": "Несколько портов разделяются запятыми",
|
||||
"name": "Имя",
|
||||
"nodeGroupId": "ID группы узлов",
|
||||
"obfsPassword": "Пароль обфускации",
|
||||
"obfsPasswordPlaceholder": "Оставьте пустым для отсутствия обфускации",
|
||||
"path": "Путь",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Процент скидки",
|
||||
"discount_price": "Цена со скидкой",
|
||||
"duration": "Продолжительность (месяцы)",
|
||||
"groupId": "Группа подписки",
|
||||
"inventory": "Инвентарь",
|
||||
"monthlyReset": "Ежемесячный Сброс",
|
||||
"name": "Название",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Без Сброса",
|
||||
"pricing": "Цены",
|
||||
"purchaseWithDiscount": "Разрешить Вычет",
|
||||
"purchaseWithDiscountDescription": "Включить или отключить функцию вычета. При включении система будет обрабатывать вычеты на основе настроенных правил и соотношений",
|
||||
"purchaseWithDiscountDescription": "Включить или отключить функцию отписки. После активации система выполнит обработку вычетов в соответствии с настроенными правилами и пропорциями, а оставшаяся сумма будет возвращена на баланс",
|
||||
"quota": "Лимит покупки",
|
||||
"renewalReset": "Сброс при Обновлении",
|
||||
"renewalResetDescription": "Сброс цикла при обновлении",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Сервер",
|
||||
"serverGroup": "Группа серверов",
|
||||
"servers": "Серверы",
|
||||
"speedLimit": "Ограничение скорости (Мбит/с)",
|
||||
"subscribeGroup": "Группа подписки",
|
||||
"speedLimit": "Ограничение скорости",
|
||||
"traffic": "Трафик",
|
||||
"unitPrice": "Цена за единицу",
|
||||
"unitTime": "Единица времени"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "действия",
|
||||
"balance": "Баланс",
|
||||
"cancel": "Отмена",
|
||||
"commission": "Комиссия",
|
||||
"confirm": "Подтвердить",
|
||||
"confirmDelete": "Вы уверены, что хотите удалить?",
|
||||
"create": "Создать",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Баланс",
|
||||
"balancePlaceholder": "Баланс",
|
||||
"cancel": "Отмена",
|
||||
"commission": "Комиссия",
|
||||
"commissionPlaceholder": "Введите комиссию",
|
||||
"confirm": "Подтвердить",
|
||||
"giftAmount": "Сумма подарка",
|
||||
"giftAmountPlaceholder": "Введите сумму подарка",
|
||||
"invalidEmailFormat": "Недопустимый формат электронной почты",
|
||||
"inviteCode": "Код приглашения",
|
||||
"inviteCodePlaceholder": "Введите код приглашения (оставьте пустым для автоматической генерации)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Электронная почта пользователя",
|
||||
"userEmailPlaceholder": "Введите электронную почту пользователя"
|
||||
},
|
||||
"giftAmount": "Сумма подарка",
|
||||
"inviteCode": "Код приглашения",
|
||||
"referer": "Реферер",
|
||||
"updateSuccess": "Обновление успешно",
|
||||
"userList": "Список пользователей",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "เปิดใช้งานTLS",
|
||||
"encryptionMethod": "วิธีการเข้ารหัส",
|
||||
"flow": "อัลกอริทึมควบคุมการไหล",
|
||||
"groupId": "กลุ่มโหนด",
|
||||
"hopInterval": "ช่วงเวลาการกระโดด",
|
||||
"hopPorts": "พอร์ตการกระโดด",
|
||||
"hopPortsPlaceholder": "หลายพอร์ตใช้เครื่องหมายจุลภาคคั่น",
|
||||
"name": "ชื่อ",
|
||||
"nodeGroupId": "รหัสกลุ่มโหนด",
|
||||
"obfsPassword": "รหัสผ่านการปกปิด",
|
||||
"obfsPasswordPlaceholder": "เว้นว่างเพื่อไม่ปกปิด",
|
||||
"path": "เส้นทาง",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "เปอร์เซ็นต์ส่วนลด",
|
||||
"discount_price": "ราคาหลังหักส่วนลด",
|
||||
"duration": "ระยะเวลา (เดือน)",
|
||||
"groupId": "กลุ่มการสมัครสมาชิก",
|
||||
"inventory": "สต็อก",
|
||||
"monthlyReset": "รีเซ็ตทุกเดือน",
|
||||
"name": "ชื่อ",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "ไม่รีเซ็ต",
|
||||
"pricing": "การตั้งราคา",
|
||||
"purchaseWithDiscount": "อนุญาตให้หัก",
|
||||
"purchaseWithDiscountDescription": "เปิดหรือปิดฟีเจอร์การหัก เมื่อเปิดใช้งาน ระบบจะดำเนินการหักตามกฎและอัตราส่วนที่กำหนดไว้",
|
||||
"purchaseWithDiscountDescription": "เปิดหรือปิดการทำงานของฟังก์ชันยกเลิกการสมัคร หลังจากเปิดใช้งาน ระบบจะดำเนินการหักเงินตามกฎและสัดส่วนที่กำหนดไว้ และมูลค่าที่เหลือจะถูกคืนไปยังยอดคงเหลือ",
|
||||
"quota": "จำนวนจำกัดการซื้อ",
|
||||
"renewalReset": "รีเซ็ตเมื่อมีการต่ออายุ",
|
||||
"renewalResetDescription": "รีเซ็ตรอบเมื่อมีการต่ออายุ",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "เซิร์ฟเวอร์",
|
||||
"serverGroup": "กลุ่มเซิร์ฟเวอร์",
|
||||
"servers": "เซิร์ฟเวอร์",
|
||||
"speedLimit": "จำกัดความเร็ว (Mbps)",
|
||||
"subscribeGroup": "กลุ่มการสมัครสมาชิก",
|
||||
"speedLimit": "จำกัดความเร็ว ",
|
||||
"traffic": "ปริมาณข้อมูล",
|
||||
"unitPrice": "ราคาต่อหน่วย",
|
||||
"unitTime": "หน่วยเวลา"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "การดำเนินการ",
|
||||
"balance": "ยอดคงเหลือ",
|
||||
"cancel": "ยกเลิก",
|
||||
"commission": "คอมมิชชั่น",
|
||||
"confirm": "ยืนยัน",
|
||||
"confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?",
|
||||
"create": "สร้าง",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "ยอดคงเหลือ",
|
||||
"balancePlaceholder": "ยอดคงเหลือ",
|
||||
"cancel": "ยกเลิก",
|
||||
"commission": "ค่าคอมมิชชั่น",
|
||||
"commissionPlaceholder": "กรอกค่าคอมมิชชั่น",
|
||||
"confirm": "ยืนยัน",
|
||||
"giftAmount": "จำนวนของขวัญ",
|
||||
"giftAmountPlaceholder": "กรอกจำนวนของขวัญ",
|
||||
"invalidEmailFormat": "รูปแบบอีเมลไม่ถูกต้อง",
|
||||
"inviteCode": "รหัสเชิญ",
|
||||
"inviteCodePlaceholder": "กรุณาใส่รหัสเชิญ (เว้นว่างเพื่อสร้างอัตโนมัติ)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "อีเมลผู้ใช้",
|
||||
"userEmailPlaceholder": "กรุณาใส่อีเมลผู้ใช้"
|
||||
},
|
||||
"giftAmount": "จำนวนเงินของขวัญ",
|
||||
"inviteCode": "รหัสเชิญ",
|
||||
"referer": "ผู้แนะนำ",
|
||||
"updateSuccess": "อัปเดตสำเร็จ",
|
||||
"userList": "รายชื่อผู้ใช้",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "TLS'i Etkinleştir",
|
||||
"encryptionMethod": "Şifreleme Yöntemi",
|
||||
"flow": "Akış Kontrol Algoritması",
|
||||
"groupId": "Düğüm Grubu",
|
||||
"hopInterval": "Atlama Aralığı",
|
||||
"hopPorts": "Atlama Portları",
|
||||
"hopPortsPlaceholder": "Birden fazla portu virgülle ayırın",
|
||||
"name": "Ad",
|
||||
"nodeGroupId": "Düğüm Grubu ID",
|
||||
"obfsPassword": "Karmaşık Şifre",
|
||||
"obfsPasswordPlaceholder": "Boş bırakılırsa karmaşıklaştırılmaz",
|
||||
"path": "Yol",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "İndirim Yüzdesi",
|
||||
"discount_price": "İndirimli Fiyat",
|
||||
"duration": "Süre (ay)",
|
||||
"groupId": "Abonelik Grubu",
|
||||
"inventory": "Stok",
|
||||
"monthlyReset": "Aylık Sıfırlama",
|
||||
"name": "Ad",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Sıfırlama Yok",
|
||||
"pricing": "Fiyatlandırma",
|
||||
"purchaseWithDiscount": "Kesintiye İzin Ver",
|
||||
"purchaseWithDiscountDescription": "Kesinti özelliğini etkinleştir veya devre dışı bırak. Etkinleştirildiğinde, sistem yapılandırılmış kurallar ve oranlara göre kesintileri işler.",
|
||||
"purchaseWithDiscountDescription": "Abonelikten çıkma işlevini etkinleştir veya devre dışı bırak. Etkinleştirildikten sonra, sistem yapılandırılmış kurallar ve oranlara göre kesinti işlemi yapacak ve kalan değer bakiyeye iade edilecektir.",
|
||||
"quota": "Satın Alma Limiti",
|
||||
"renewalReset": "Yenileme Sıfırlaması",
|
||||
"renewalResetDescription": "Yenileme üzerine sıfırlama döngüsü",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Sunucu",
|
||||
"serverGroup": "Sunucu Grubu",
|
||||
"servers": "Sunucular",
|
||||
"speedLimit": "Hız Sınırı (Mbps)",
|
||||
"subscribeGroup": "Abonelik Grubu",
|
||||
"speedLimit": "Hız Sınırı ",
|
||||
"traffic": "Trafik",
|
||||
"unitPrice": "Birim fiyatı",
|
||||
"unitTime": "Birim zamanı"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "eylemler",
|
||||
"balance": "Bakiye",
|
||||
"cancel": "İptal",
|
||||
"commission": "Komisyon",
|
||||
"confirm": "Onayla",
|
||||
"confirmDelete": "Silmek istediğinizden emin misiniz?",
|
||||
"create": "oluştur",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Bakiye",
|
||||
"balancePlaceholder": "Bakiye",
|
||||
"cancel": "İptal",
|
||||
"commission": "Komisyon",
|
||||
"commissionPlaceholder": "Komisyonu girin",
|
||||
"confirm": "Onayla",
|
||||
"giftAmount": "Hediye Tutarı",
|
||||
"giftAmountPlaceholder": "Hediye tutarını girin",
|
||||
"invalidEmailFormat": "Geçersiz e-posta formatı",
|
||||
"inviteCode": "Davet Kodu",
|
||||
"inviteCodePlaceholder": "Lütfen davet kodunu girin (boş bırakılırsa otomatik oluşturulur)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Kullanıcı E-postası",
|
||||
"userEmailPlaceholder": "Lütfen kullanıcı e-postasını girin"
|
||||
},
|
||||
"giftAmount": "Hediye Miktarı",
|
||||
"inviteCode": "Davet Kodu",
|
||||
"referer": "Referans",
|
||||
"updateSuccess": "Güncelleme başarılı",
|
||||
"userList": "Kullanıcı Listesi",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Увімкнути TLS",
|
||||
"encryptionMethod": "Метод шифрування",
|
||||
"flow": "Алгоритм контролю потоку",
|
||||
"groupId": "Група вузлів",
|
||||
"hopInterval": "Інтервал стрибка",
|
||||
"hopPorts": "Порти стрибка",
|
||||
"hopPortsPlaceholder": "Кілька портів розділяйте комами",
|
||||
"name": "Назва",
|
||||
"nodeGroupId": "ID групи вузлів",
|
||||
"obfsPassword": "Пароль обфускації",
|
||||
"obfsPasswordPlaceholder": "Залиште порожнім для відсутності обфускації",
|
||||
"path": "Шлях",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Відсоток знижки",
|
||||
"discount_price": "Ціна зі знижкою",
|
||||
"duration": "Тривалість (місяці)",
|
||||
"groupId": "Група підписки",
|
||||
"inventory": "Запаси",
|
||||
"monthlyReset": "Щомісячне Скидання",
|
||||
"name": "Назва",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Без Скидання",
|
||||
"pricing": "Ціноутворення",
|
||||
"purchaseWithDiscount": "Дозволити Вирахування",
|
||||
"purchaseWithDiscountDescription": "Увімкнути або вимкнути функцію вирахувань. Коли увімкнено, система обробляє вирахування на основі налаштованих правил і співвідношень",
|
||||
"purchaseWithDiscountDescription": "Увімкніть або вимкніть функцію відписки. Після активації система виконає обробку відрахувань згідно з налаштованими правилами та пропорціями, а залишкова вартість буде повернена на баланс",
|
||||
"quota": "Ліміт покупки",
|
||||
"renewalReset": "Скидання при Поновленні",
|
||||
"renewalResetDescription": "Скидання циклу при поновленні",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Сервер",
|
||||
"serverGroup": "Група серверів",
|
||||
"servers": "Сервери",
|
||||
"speedLimit": "Обмеження швидкості (Мбіт/с)",
|
||||
"subscribeGroup": "Група підписки",
|
||||
"speedLimit": "Обмеження швидкості",
|
||||
"traffic": "Трафік",
|
||||
"unitPrice": "Ціна за одиницю",
|
||||
"unitTime": "Одиниця часу"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "дії",
|
||||
"balance": "Баланс",
|
||||
"cancel": "Скасувати",
|
||||
"commission": "Комісія",
|
||||
"confirm": "Підтвердити",
|
||||
"confirmDelete": "Ви впевнені, що хочете видалити?",
|
||||
"create": "створити",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Баланс",
|
||||
"balancePlaceholder": "Баланс",
|
||||
"cancel": "Скасувати",
|
||||
"commission": "Комісія",
|
||||
"commissionPlaceholder": "Введіть комісію",
|
||||
"confirm": "Підтвердити",
|
||||
"giftAmount": "Сума подарунка",
|
||||
"giftAmountPlaceholder": "Введіть суму подарунка",
|
||||
"invalidEmailFormat": "Недійсний формат електронної пошти",
|
||||
"inviteCode": "Код запрошення",
|
||||
"inviteCodePlaceholder": "Введіть код запрошення (залиште порожнім для автоматичної генерації)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Електронна пошта користувача",
|
||||
"userEmailPlaceholder": "Введіть електронну пошту користувача"
|
||||
},
|
||||
"giftAmount": "Сума подарунка",
|
||||
"inviteCode": "Код запрошення",
|
||||
"referer": "Реферер",
|
||||
"updateSuccess": "Оновлення успішне",
|
||||
"userList": "Список користувачів",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "Kích hoạt TLS",
|
||||
"encryptionMethod": "Phương pháp mã hóa",
|
||||
"flow": "Thuật toán điều khiển luồng",
|
||||
"groupId": "Nhóm Nút",
|
||||
"hopInterval": "Khoảng cách nhảy",
|
||||
"hopPorts": "Cổng nhảy",
|
||||
"hopPortsPlaceholder": "Nhiều cổng cách nhau bằng dấu phẩy",
|
||||
"name": "Tên",
|
||||
"nodeGroupId": "ID nhóm nút",
|
||||
"obfsPassword": "Mật khẩu làm mờ",
|
||||
"obfsPasswordPlaceholder": "Để trống nếu không làm mờ",
|
||||
"path": "Đường dẫn",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "Phần trăm giảm giá",
|
||||
"discount_price": "Giá sau giảm",
|
||||
"duration": "Thời gian (tháng)",
|
||||
"groupId": "Nhóm Đăng Ký",
|
||||
"inventory": "Tồn kho",
|
||||
"monthlyReset": "Đặt Lại Hàng Tháng",
|
||||
"name": "Tên",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "Không Đặt Lại",
|
||||
"pricing": "Giá Cả",
|
||||
"purchaseWithDiscount": "Cho Phép Khấu Trừ",
|
||||
"purchaseWithDiscountDescription": "Bật hoặc tắt tính năng khấu trừ. Khi được bật, hệ thống sẽ xử lý khấu trừ dựa trên các quy tắc và tỷ lệ đã cấu hình",
|
||||
"purchaseWithDiscountDescription": "Bật hoặc tắt chức năng hủy đăng ký. Sau khi kích hoạt, hệ thống sẽ thực hiện xử lý khấu trừ theo các quy tắc và tỷ lệ đã cấu hình, và giá trị còn lại sẽ được trả về số dư",
|
||||
"quota": "Số lượng mua giới hạn",
|
||||
"renewalReset": "Đặt Lại Khi Gia Hạn",
|
||||
"renewalResetDescription": "Đặt lại chu kỳ khi gia hạn",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "Dịch vụ",
|
||||
"serverGroup": "Nhóm dịch vụ",
|
||||
"servers": "Máy Chủ",
|
||||
"speedLimit": "Giới hạn tốc độ (Mbps)",
|
||||
"subscribeGroup": "Nhóm đăng ký",
|
||||
"speedLimit": "Giới hạn tốc độ ",
|
||||
"traffic": "Lưu lượng",
|
||||
"unitPrice": "Đơn giá",
|
||||
"unitTime": "Đơn vị thời gian"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "Hành động",
|
||||
"balance": "Số dư",
|
||||
"cancel": "Hủy",
|
||||
"commission": "Hoa hồng",
|
||||
"confirm": "Xác nhận",
|
||||
"confirmDelete": "Bạn có chắc chắn muốn xóa không?",
|
||||
"create": "Tạo",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "Số dư",
|
||||
"balancePlaceholder": "Số dư",
|
||||
"cancel": "Hủy",
|
||||
"commission": "Hoa hồng",
|
||||
"commissionPlaceholder": "Nhập hoa hồng",
|
||||
"confirm": "Xác nhận",
|
||||
"giftAmount": "Số tiền quà tặng",
|
||||
"giftAmountPlaceholder": "Nhập số tiền quà tặng",
|
||||
"invalidEmailFormat": "Định dạng email không hợp lệ",
|
||||
"inviteCode": "Mã mời",
|
||||
"inviteCodePlaceholder": "Vui lòng nhập mã mời (để trống sẽ tự động tạo)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "Email người dùng",
|
||||
"userEmailPlaceholder": "Vui lòng nhập email người dùng"
|
||||
},
|
||||
"giftAmount": "Số tiền quà tặng",
|
||||
"inviteCode": "Mã Mời",
|
||||
"referer": "Người giới thiệu",
|
||||
"updateSuccess": "Cập nhật thành công",
|
||||
"userList": "Danh sách người dùng",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "启用TLS",
|
||||
"encryptionMethod": "加密方法",
|
||||
"flow": "流控算法",
|
||||
"groupId": "节点组",
|
||||
"hopInterval": "跳跃间隔",
|
||||
"hopPorts": "跳跃端口",
|
||||
"hopPortsPlaceholder": "多个端口用逗号分隔",
|
||||
"name": "名称",
|
||||
"nodeGroupId": "节点组ID",
|
||||
"obfsPassword": "混淆密码",
|
||||
"obfsPasswordPlaceholder": "留空则不混淆",
|
||||
"path": "路径",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "折扣比",
|
||||
"discount_price": "折扣价格",
|
||||
"duration": "时长(月)",
|
||||
"groupId": "订阅组",
|
||||
"inventory": "库存",
|
||||
"monthlyReset": "按月重置",
|
||||
"name": "名称",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "不重置",
|
||||
"pricing": "定价",
|
||||
"purchaseWithDiscount": "允许抵扣",
|
||||
"purchaseWithDiscountDescription": "启用或禁用抵扣功能。启用后,系统将根据配置的规则和比例进行抵扣处理。",
|
||||
"purchaseWithDiscountDescription": "启用或禁用退订功能。激活后,系统将根据配置的规则和比例进行扣除处理,剩余价值将返回到余额中",
|
||||
"quota": "限购数量",
|
||||
"renewalReset": "续费重置",
|
||||
"renewalResetDescription": "续费时重置周期",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "服务",
|
||||
"serverGroup": "服务组",
|
||||
"servers": "服务",
|
||||
"speedLimit": "速度限制(Mbps)",
|
||||
"subscribeGroup": "订阅组",
|
||||
"speedLimit": "速度限制",
|
||||
"traffic": "流量",
|
||||
"unitPrice": "单价",
|
||||
"unitTime": "单位时间"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "操作",
|
||||
"balance": "余额",
|
||||
"cancel": "取消",
|
||||
"commission": "佣金",
|
||||
"confirm": "确认",
|
||||
"confirmDelete": "您确定要删除吗?",
|
||||
"create": "创建",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "余额",
|
||||
"balancePlaceholder": "余额",
|
||||
"cancel": "取消",
|
||||
"commission": "佣金",
|
||||
"commissionPlaceholder": "输入佣金",
|
||||
"confirm": "确认",
|
||||
"giftAmount": "礼品金额",
|
||||
"giftAmountPlaceholder": "输入礼品金额",
|
||||
"invalidEmailFormat": "无效的电子邮件格式",
|
||||
"inviteCode": "邀请码",
|
||||
"inviteCodePlaceholder": "请输入邀请码(留空则自动生成)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "用户邮箱",
|
||||
"userEmailPlaceholder": "请输入用户邮箱"
|
||||
},
|
||||
"giftAmount": "礼物金额",
|
||||
"inviteCode": "邀请码",
|
||||
"referer": "推荐人",
|
||||
"updateSuccess": "更新成功",
|
||||
"userList": "用户列表",
|
||||
|
||||
@ -52,11 +52,11 @@
|
||||
"enableTLS": "啟用TLS",
|
||||
"encryptionMethod": "加密方法",
|
||||
"flow": "流控算法",
|
||||
"groupId": "節點組",
|
||||
"hopInterval": "跳躍間隔",
|
||||
"hopPorts": "跳躍端口",
|
||||
"hopPortsPlaceholder": "多個端口用逗號分隔",
|
||||
"name": "名稱",
|
||||
"nodeGroupId": "節點組ID",
|
||||
"obfsPassword": "混淆密碼",
|
||||
"obfsPasswordPlaceholder": "留空則不混淆",
|
||||
"path": "路徑",
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
"discountPercent": "折扣比",
|
||||
"discount_price": "折扣價格",
|
||||
"duration": "時長(月)",
|
||||
"groupId": "訂閱組別",
|
||||
"inventory": "庫存",
|
||||
"monthlyReset": "每月重置",
|
||||
"name": "名稱",
|
||||
@ -42,7 +43,7 @@
|
||||
"noReset": "不重置",
|
||||
"pricing": "定價",
|
||||
"purchaseWithDiscount": "允許扣減",
|
||||
"purchaseWithDiscountDescription": "啟用或禁用扣減功能。啟用時,系統將根據配置的規則和比例進行扣減處理",
|
||||
"purchaseWithDiscountDescription": "啟用或停用取消訂閱功能。啟用後,系統將根據配置的規則和比例進行扣減處理,剩餘的價值將返回到餘額中",
|
||||
"quota": "限購數量",
|
||||
"renewalReset": "續訂重置",
|
||||
"renewalResetDescription": "續訂時重置週期",
|
||||
@ -55,8 +56,7 @@
|
||||
"server": "服務",
|
||||
"serverGroup": "服務組",
|
||||
"servers": "伺服器",
|
||||
"speedLimit": "速度限制(Mbps)",
|
||||
"subscribeGroup": "訂閱組",
|
||||
"speedLimit": "速度限制",
|
||||
"traffic": "流量",
|
||||
"unitPrice": "單價",
|
||||
"unitTime": "單位時間"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
"actions": "操作",
|
||||
"balance": "餘額",
|
||||
"cancel": "取消",
|
||||
"commission": "佣金",
|
||||
"confirm": "確認",
|
||||
"confirmDelete": "您確定要刪除嗎?",
|
||||
"create": "建立",
|
||||
@ -19,7 +20,11 @@
|
||||
"balance": "餘額",
|
||||
"balancePlaceholder": "餘額",
|
||||
"cancel": "取消",
|
||||
"commission": "佣金",
|
||||
"commissionPlaceholder": "輸入佣金",
|
||||
"confirm": "確認",
|
||||
"giftAmount": "禮物金額",
|
||||
"giftAmountPlaceholder": "輸入禮物金額",
|
||||
"invalidEmailFormat": "無效的電子郵件格式",
|
||||
"inviteCode": "邀請碼",
|
||||
"inviteCodePlaceholder": "請輸入邀請碼(留空則自動生成)",
|
||||
@ -31,6 +36,8 @@
|
||||
"userEmail": "用戶信箱",
|
||||
"userEmailPlaceholder": "請輸入用戶信箱"
|
||||
},
|
||||
"giftAmount": "禮物金額",
|
||||
"inviteCode": "邀請碼",
|
||||
"referer": "推薦人",
|
||||
"updateSuccess": "更新成功",
|
||||
"userList": "使用者列表",
|
||||
|
||||
@ -1,8 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import { Display } from '@/components/display';
|
||||
import Renewal from '@/components/subscribe/renewal';
|
||||
import ResetTraffic from '@/components/subscribe/reset-traffic';
|
||||
import Unsubscribe from '@/components/subscribe/unsubscribe';
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import { getStat } from '@/services/common/common';
|
||||
import { queryApplicationConfig } from '@/services/user/subscribe';
|
||||
import { queryUserSubscribe } from '@/services/user/user';
|
||||
import { getPlatform } from '@/utils/common';
|
||||
import { Icon } from '@iconify/react';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import {
|
||||
@ -33,15 +39,8 @@ import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { QRCodeCanvas } from 'qrcode.react';
|
||||
import { useState } from 'react';
|
||||
import { toast } from 'sonner';
|
||||
|
||||
import Renewal from '@/components/subscribe/renewal';
|
||||
import ResetTraffic from '@/components/subscribe/reset-traffic';
|
||||
import Unsubscribe from '@/components/subscribe/unsubscribe';
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import { getStat } from '@/services/common/common';
|
||||
import { getPlatform } from '@/utils/common';
|
||||
import CopyToClipboard from 'react-copy-to-clipboard';
|
||||
import { toast } from 'sonner';
|
||||
import Subscribe from '../subscribe/page';
|
||||
|
||||
export default function Content() {
|
||||
@ -195,6 +194,7 @@ export default function Content() {
|
||||
<CardTitle className='text-sm font-medium'>
|
||||
{t('subscriptionUrl')} {index + 1}
|
||||
</CardTitle>
|
||||
|
||||
<CopyToClipboard
|
||||
text={url}
|
||||
onCopy={(text, result) => {
|
||||
@ -205,9 +205,7 @@ export default function Content() {
|
||||
>
|
||||
<span
|
||||
className='text-primary hover:bg-accent mr-4 flex cursor-pointer rounded p-2 text-sm'
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
}}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<Icon icon='uil:copy' className='mr-2 size-5' />
|
||||
{t('copy')}
|
||||
@ -217,43 +215,48 @@ export default function Content() {
|
||||
</AccordionTrigger>
|
||||
<AccordionContent>
|
||||
<div className='grid grid-cols-3 gap-4 lg:grid-cols-4 xl:grid-cols-7'>
|
||||
{application &&
|
||||
application[platform]?.map((app) => (
|
||||
<div
|
||||
key={app.name}
|
||||
className='text-muted-foreground flex size-full flex-col items-center justify-between gap-2 text-xs'
|
||||
>
|
||||
<span>{app.name}</span>
|
||||
{app.icon && (
|
||||
<Image src={app.icon} alt={app.name} width={50} height={50} />
|
||||
)}
|
||||
<div className='flex'>
|
||||
<Button size='sm' variant='secondary' className='px-1.5' asChild>
|
||||
<Link href={app.url!}>{t('download')}</Link>
|
||||
{application?.[platform]?.map((app) => (
|
||||
<div
|
||||
key={app.name}
|
||||
className='text-muted-foreground flex size-full flex-col items-center justify-between gap-2 text-xs'
|
||||
>
|
||||
<span>{app.name}</span>
|
||||
{app.icon && (
|
||||
<Image src={app.icon} alt={app.name} width={50} height={50} />
|
||||
)}
|
||||
<div className='flex'>
|
||||
<Button
|
||||
size='sm'
|
||||
variant='secondary'
|
||||
className='rounded-r-none px-1.5'
|
||||
asChild
|
||||
>
|
||||
<Link href={app.url}>{t('download')}</Link>
|
||||
</Button>
|
||||
|
||||
<CopyToClipboard
|
||||
text={url}
|
||||
onCopy={(text, result) => {
|
||||
const href = getAppSubLink(app.subscribe_type, url);
|
||||
if (isBrowser() && href) {
|
||||
window.location.href = href;
|
||||
} else if (result) {
|
||||
toast.success(
|
||||
<>
|
||||
<p>{t('copySuccess')}</p>
|
||||
<p>{t('manualImportMessage')}</p>
|
||||
</>,
|
||||
);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Button size='sm' className='rounded-l-none p-2'>
|
||||
{t('import')}
|
||||
</Button>
|
||||
<CopyToClipboard
|
||||
text={url}
|
||||
onCopy={(text, result) => {
|
||||
const href = getAppSubLink(app.subscribe_type, url);
|
||||
if (isBrowser() && href) {
|
||||
window.location.href = href;
|
||||
} else if (result) {
|
||||
toast.success(
|
||||
<>
|
||||
<p>{t('copySuccess')}</p>
|
||||
<p>{t('manualImportMessage')}</p>
|
||||
</>,
|
||||
);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Button size='sm' className='p-2'>
|
||||
{t('import')}
|
||||
</Button>
|
||||
</CopyToClipboard>
|
||||
</div>
|
||||
</CopyToClipboard>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
<div className='text-muted-foreground hidden size-full flex-col items-center justify-between gap-2 text-sm lg:flex'>
|
||||
<span>{t('qrCode')}</span>
|
||||
<QRCodeCanvas
|
||||
|
||||
@ -4,7 +4,7 @@ import useGlobalStore from '@/config/use-global';
|
||||
import { formatBytes, unitConversion } from '@workspace/ui/utils';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
type DisplayType = 'currency' | 'traffic' | 'number';
|
||||
type DisplayType = 'currency' | 'traffic' | 'number' | 'trafficSpeed';
|
||||
|
||||
interface DisplayProps<T> {
|
||||
value?: T;
|
||||
@ -26,12 +26,16 @@ export function Display<T extends number | undefined | null>({
|
||||
return formattedValue;
|
||||
}
|
||||
|
||||
if (['traffic', 'number'].includes(type) && unlimited && !value) {
|
||||
if (['traffic', 'trafficSpeed', 'number'].includes(type) && unlimited && !value) {
|
||||
return t('unlimited');
|
||||
}
|
||||
|
||||
if (type === 'traffic') {
|
||||
return value ? formatBytes(value as number) : '0';
|
||||
return value ? formatBytes(value) : '0';
|
||||
}
|
||||
|
||||
if (type === 'trafficSpeed') {
|
||||
return value ? formatBytes(value).replace('B', 'b') + 'ps' : '0';
|
||||
}
|
||||
|
||||
if (type === 'number') {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { Display } from '@/components/display';
|
||||
import { unitConversion } from '@workspace/ui/utils';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
interface SubscribeDetailProps {
|
||||
@ -37,11 +36,7 @@ export function SubscribeDetail({ subscribe }: Readonly<SubscribeDetailProps>) {
|
||||
<li>
|
||||
<span className='text-muted-foreground'>{t('connectionSpeed')}</span>
|
||||
<span>
|
||||
{subscribe?.speed_limit ? (
|
||||
`${unitConversion('bitsToMb', subscribe?.speed_limit)} Mbps`
|
||||
) : (
|
||||
<Display type='traffic' value={subscribe?.speed_limit} unlimited />
|
||||
)}
|
||||
<Display type='trafficSpeed' value={subscribe?.speed_limit} unlimited />
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user