feat(subscribe): Update subscription management localization and add new fields

This commit is contained in:
web 2025-08-08 11:22:31 -07:00 committed by speakeloudest
parent ec3133e0c8
commit 63842e5d99
32 changed files with 2297 additions and 1707 deletions

View File

@ -38,8 +38,8 @@ const subscribeConfigSchema = z.object({
pan_domain: z.boolean().optional(),
subscribe_path: z.string().optional(),
subscribe_domain: z.string().optional(),
restrict_user_agent: z.boolean().optional(),
user_agent_whitelist: z.string().optional(),
user_agent_limit: z.boolean().optional(),
user_agent_list: z.string().optional(),
});
type SubscribeConfigFormData = z.infer<typeof subscribeConfigSchema>;
@ -65,8 +65,8 @@ export default function ConfigForm() {
pan_domain: false,
subscribe_path: '',
subscribe_domain: '',
restrict_user_agent: false,
user_agent_whitelist: '',
user_agent_limit: false,
user_agent_list: '',
},
});
@ -197,10 +197,10 @@ export default function ConfigForm() {
<FormField
control={form.control}
name='restrict_user_agent'
name='user_agent_limit'
render={({ field }) => (
<FormItem>
<FormLabel>{t('config.restrictUserAgent')}</FormLabel>
<FormLabel>{t('config.userAgentLimit', { userAgent: 'User-Agent' })}</FormLabel>
<FormControl>
<Switch
checked={field.value}
@ -208,7 +208,9 @@ export default function ConfigForm() {
className='float-end !mt-0'
/>
</FormControl>
<FormDescription>{t('config.restrictUserAgentDescription')}</FormDescription>
<FormDescription>
{t('config.userAgentLimitDescription', { userAgent: 'User-Agent' })}
</FormDescription>
<FormMessage />
</FormItem>
)}
@ -216,18 +218,24 @@ export default function ConfigForm() {
<FormField
control={form.control}
name='user_agent_whitelist'
name='user_agent_list'
render={({ field }) => (
<FormItem>
<FormLabel>{t('config.userAgentWhitelist')}</FormLabel>
<FormLabel>
{t('config.userAgentList', {
userAgent: 'User-Agent',
})}
</FormLabel>
<FormControl>
<Textarea
className='h-32'
placeholder={`${t('config.userAgentWhitelistPlaceholder')}\nClashX\nClashForAndroid\nClash-verge`}
placeholder={`${t('config.userAgentListPlaceholder', { userAgent: 'User-Agent' })}\nClashX\nClashForAndroid\nClash-verge`}
{...field}
/>
</FormControl>
<FormDescription>{t('config.userAgentWhitelistDescription')}</FormDescription>
<FormDescription>
{t('config.userAgentListDescription', { userAgent: 'User-Agent' })}
</FormDescription>
<FormMessage />
</FormItem>
)}

View File

@ -17,7 +17,6 @@ export default function SubscribePage() {
</CardContent>
</Card>
<h2 className='text-lg font-semibold'>{t('protocol.title')}</h2>
<ProtocolForm />
</div>
);

View File

@ -1,18 +1,34 @@
'use client';
import { ProTable, ProTableActions } from '@/components/pro-table';
import {
createSubscribeApplication,
deleteSubscribeApplication,
getSubscribeApplicationList,
updateSubscribeApplication,
} from '@/services/admin/application';
import { zodResolver } from '@hookform/resolvers/zod';
import { ColumnDef } from '@tanstack/react-table';
import { Badge } from '@workspace/ui/components/badge';
import { Button } from '@workspace/ui/components/button';
import { Card, CardContent } from '@workspace/ui/components/card';
import {
Form,
FormControl,
FormDescription,
FormField,
FormItem,
FormLabel,
FormMessage,
} from '@workspace/ui/components/form';
import { Input } from '@workspace/ui/components/input';
import { ScrollArea } from '@workspace/ui/components/scroll-area';
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@workspace/ui/components/select';
import {
Sheet,
SheetContent,
@ -20,221 +36,541 @@ import {
SheetHeader,
SheetTitle,
} from '@workspace/ui/components/sheet';
import { Switch } from '@workspace/ui/components/switch';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs';
import { Textarea } from '@workspace/ui/components/textarea';
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from '@workspace/ui/components/tooltip';
import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button';
import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input';
import { Icon } from '@workspace/ui/custom-components/icon';
import { UploadImage } from '@workspace/ui/custom-components/upload-image';
import { useTranslations } from 'next-intl';
import Image from 'next/image';
import { useState } from 'react';
import { useRef, useState } from 'react';
import { useForm } from 'react-hook-form';
import { toast } from 'sonner';
import { z } from 'zod';
interface Client {
name: string;
platforms: string[];
}
const clientFormSchema = z.object({
template: z.string().optional(),
// 表单验证规则 - 基于 API.CreateSubscribeApplicationRequest
const createClientFormSchema = (t: any) =>
z.object({
name: z.string().min(1, t('form.validation.nameRequired')),
description: z.string().optional(),
icon: z.string().optional(),
user_agent: z.string().min(1, `User-Agent ${t('form.validation.userAgentRequiredSuffix')}`),
proxy_template: z.string().default(''),
template: z.string().default(''),
output_format: z.string().default(''),
download_link: z.object({
windows: z.string().optional(),
mac: z.string().optional(),
linux: z.string().optional(),
ios: z.string().optional(),
android: z.string().optional(),
harmony: z.string().optional(),
}),
});
const clientsConfig = [
{
name: 'Hiddify',
platforms: ['Windows', 'macOS', 'Linux', 'iOS', 'Android'],
},
{
name: 'SingBox',
platforms: ['Windows', 'macOS', 'Linux', 'iOS', 'Android'],
},
{
name: 'Clash',
platforms: ['Windows', 'macOS', 'Linux', 'Android'],
},
{
name: 'V2rayN',
platforms: ['Windows', 'macOS', 'Linux'],
},
{
name: 'Stash',
platforms: ['macOS', 'iOS'],
},
{
name: 'Surge',
platforms: ['macOS', 'iOS'],
},
{
name: 'V2Box',
platforms: ['macOS', 'iOS'],
},
{
name: 'Shadowrocket',
platforms: ['iOS'],
},
{
name: 'Quantumult',
platforms: ['iOS'],
},
{
name: 'Loon',
platforms: ['iOS'],
},
{
name: 'Egern',
platforms: ['iOS'],
},
{
name: 'V2rayNG',
platforms: ['Android'],
},
{
name: 'Surfboard',
platforms: ['Android'],
},
{
name: 'Netch',
platforms: ['Windows'],
},
];
type ClientFormData = z.infer<typeof clientFormSchema>;
type ClientFormData = z.infer<ReturnType<typeof createClientFormSchema>>;
export function ProtocolForm() {
const t = useTranslations('subscribe');
const [selectedClient, setSelectedClient] = useState<Client | null>(null);
const [open, setOpen] = useState(false);
const [loading, setLoading] = useState(false);
const [open, setOpen] = useState(false);
const [editingClient, setEditingClient] = useState<API.SubscribeApplication | null>(null);
const tableRef = useRef<ProTableActions>(null);
const clientFormSchema = createClientFormSchema(t);
const form = useForm<ClientFormData>({
resolver: zodResolver(clientFormSchema),
defaultValues: {
name: '',
description: '',
icon: '',
user_agent: '',
proxy_template: '',
template: '',
output_format: '',
download_link: {
windows: '',
mac: '',
linux: '',
ios: '',
android: '',
harmony: '',
},
},
});
const clients: Client[] = clientsConfig;
// API请求函数
const request = async (
pagination: { page: number; size: number },
filter: Record<string, unknown>,
) => {
const { data } = await getSubscribeApplicationList({
page: pagination.page,
size: pagination.size,
});
const handleClientClick = (client: Client) => {
setSelectedClient(client);
// 请求当前客户端的配置模板
// 这里可以替换为实际的API调用
// 模拟获取模板数据
const mockTemplate = `# ${client.name} 配置模板`;
return {
list: data.data?.list || [],
total: data.data?.total || 0,
};
};
// 表格列定义
const columns: ColumnDef<API.SubscribeApplication, any>[] = [
{
accessorKey: 'is_default',
header: t('table.columns.default'),
cell: ({ row }) => (
<Switch
checked={row.original.is_default || false}
onCheckedChange={async (checked) => {
await updateSubscribeApplication({
...row.original,
is_default: checked,
});
tableRef.current?.refresh();
}}
/>
),
},
{
accessorKey: 'name',
header: t('table.columns.name'),
cell: ({ row }) => (
<div className='flex items-center gap-2'>
{row.original.icon && (
<div className='relative h-6 w-6 flex-shrink-0'>
<Image
src={row.original.icon}
alt={row.original.name}
width={24}
height={24}
className='rounded object-contain'
onError={() => {
console.log(`Failed to load image for ${row.original.name}`);
}}
/>
</div>
)}
<span className='font-medium'>{row.original.name}</span>
</div>
),
},
{
accessorKey: 'description',
header: t('table.columns.description'),
cell: ({ row }) => (
<TooltipProvider>
<Tooltip>
<TooltipTrigger>
<div className='text-muted-foreground max-w-[200px] truncate text-sm'>
{row.original.description}
</div>
</TooltipTrigger>
<TooltipContent className='max-w-xs'>
<p>{row.original.description}</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
),
},
{
accessorKey: 'output_format',
header: t('table.columns.outputFormat'),
cell: ({ row }) => (
<Badge variant='secondary' className='text-xs'>
{t(`outputFormats.${row.original.output_format}`) || row.original.output_format}
</Badge>
),
},
{
accessorKey: 'download_link',
header: t('table.columns.supportedPlatforms'),
cell: ({ row }) => {
return (
<div className='flex flex-wrap gap-1'>
{Object.entries(row.original.download_link || {}).map(([key, value]) => {
if (value) {
return (
<Badge key={key} variant='secondary' className='text-xs'>
{t(`platforms.${key}`)}
</Badge>
);
}
return null;
})}
</div>
);
},
},
{
accessorKey: 'user_agent',
header: 'User-Agent',
cell: ({ row }) => (
<div className='text-muted-foreground max-w-[150px] truncate font-mono text-sm'>
{row.original.user_agent}
</div>
),
},
];
const handleAdd = () => {
setEditingClient(null);
form.reset({
template: mockTemplate,
name: '',
description: '',
icon: '',
user_agent: '',
proxy_template: '',
template: '',
output_format: '',
download_link: {
windows: '',
mac: '',
linux: '',
ios: '',
android: '',
harmony: '',
},
});
setOpen(true);
};
const handleEdit = (client: API.SubscribeApplication) => {
setEditingClient(client);
form.reset({
name: client.name,
description: client.description || '',
icon: client.icon || '',
user_agent: client.user_agent,
proxy_template: client.proxy_template || '',
template: client.template || '',
output_format: client.output_format || '',
download_link: {
windows: '',
mac: '',
linux: '',
ios: '',
android: '',
harmony: '',
},
});
setOpen(true);
};
const handleDelete = async (client: API.SubscribeApplication) => {
setLoading(true);
try {
await deleteSubscribeApplication({ id: client.id });
tableRef.current?.refresh();
toast.success(t('actions.deleteSuccess'));
} catch (error) {
console.error('Failed to delete client:', error);
toast.error(t('actions.deleteFailed'));
} finally {
setLoading(false);
}
};
const handleBatchDelete = async (clients: API.SubscribeApplication[]) => {
setLoading(true);
try {
await Promise.all(clients.map((client) => deleteSubscribeApplication({ id: client.id })));
tableRef.current?.refresh();
toast.success(t('actions.batchDeleteSuccess', { count: clients.length }));
} catch (error) {
console.error('Failed to batch delete clients:', error);
toast.error(t('actions.deleteFailed'));
} finally {
setLoading(false);
}
};
const onSubmit = async (data: ClientFormData) => {
setLoading(true);
try {
// TODO: 实现保存逻辑
console.log('Save client template:', {
name: selectedClient?.name,
template: data.template,
if (editingClient) {
await updateSubscribeApplication({
...data,
is_default: editingClient.is_default,
id: editingClient.id,
});
// 模拟API调用
await new Promise((resolve) => setTimeout(resolve, 1000));
toast.success(t('actions.updateSuccess'));
} else {
await createSubscribeApplication({
...data,
is_default: false,
});
toast.success(t('actions.createSuccess'));
}
setOpen(false);
tableRef.current?.refresh();
} catch (error) {
console.error('Failed to save client template:', error);
console.error('Failed to save client:', error);
toast.error(t('actions.saveFailed'));
} finally {
setLoading(false);
}
};
return (
<div className='space-y-4'>
<div className='grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'>
{clients.map((client) => (
<Card
key={client.name}
className='hover:bg-muted/50 cursor-pointer transition-colors'
onClick={() => handleClientClick(client)}
<>
<ProTable<API.SubscribeApplication, Record<string, unknown>>
action={tableRef}
columns={columns}
request={request}
header={{
title: <h2 className='text-lg font-semibold'>{t('protocol.title')}</h2>,
toolbar: <Button onClick={handleAdd}>{t('actions.add')}</Button>,
}}
actions={{
render: (row) => [
<Button
key='edit'
onClick={() => handleEdit(row as unknown as API.SubscribeApplication)}
>
<CardContent className='p-4'>
<div className='space-y-3'>
<div className='flex items-center gap-2'>
<div className='relative h-6 w-6 flex-shrink-0'>
<Image
src={`/images/protocols/${client.name}.webp`}
alt={client.name}
width={24}
height={24}
className='object-contain'
onError={() => {
console.log(`Failed to load image for ${client.name}`);
{t('actions.edit')}
</Button>,
<ConfirmButton
key='delete'
trigger={
<Button variant='destructive' disabled={loading}>
{t('actions.delete')}
</Button>
}
title={t('actions.confirmDelete')}
description={t('actions.deleteWarning')}
onConfirm={() => handleDelete(row as unknown as API.SubscribeApplication)}
cancelText={t('actions.cancel')}
confirmText={t('actions.confirm')}
/>,
],
batchRender: (rows) => [
<ConfirmButton
key='batchDelete'
trigger={<Button variant='destructive'>{t('actions.batchDelete')}</Button>}
title={t('actions.confirmDelete')}
description={t('actions.batchDeleteWarning', { count: rows.length })}
onConfirm={() => handleBatchDelete(rows as unknown as API.SubscribeApplication[])}
cancelText={t('actions.cancel')}
confirmText={t('actions.confirm')}
/>,
],
}}
/>
</div>
<h3 className='text-base font-semibold'>{client.name}</h3>
<Icon icon='mdi:chevron-right' className='ml-auto flex-shrink-0' />
</div>
<div className='flex flex-wrap gap-1'>
{client.platforms.map((platform) => (
<Badge key={platform} variant='secondary' className='text-xs'>
{platform}
</Badge>
))}
</div>
<p className='text-muted-foreground text-sm leading-relaxed'>
{t(`protocol.clients.${client.name.toLowerCase().replace(/\s+/g, '')}.features`)}
</p>
</div>
</CardContent>
</Card>
))}
</div>
<Sheet open={open} onOpenChange={setOpen}>
<SheetContent className='w-[600px] max-w-full md:max-w-screen-md'>
<SheetContent className='w-[580px] max-w-full md:max-w-screen-md'>
<SheetHeader>
<SheetTitle>
{t('protocol.subscribeTemplate')} - {selectedClient?.name}
</SheetTitle>
<SheetTitle>{editingClient ? t('form.editTitle') : t('form.addTitle')}</SheetTitle>
</SheetHeader>
<ScrollArea className='-mx-6 h-[calc(100dvh-48px-36px-36px-env(safe-area-inset-top))] px-6'>
<ScrollArea className='h-[calc(100dvh-48px-36px-36px)]'>
<Form {...form}>
<form
onSubmit={form.handleSubmit(onSubmit)}
className='space-y-4 pt-4'
id='client-template-form'
>
<form className='space-y-6 py-4'>
<Tabs defaultValue='basic' className='w-full'>
<TabsList className='grid w-full grid-cols-3'>
<TabsTrigger value='basic'>{t('form.tabs.basic')}</TabsTrigger>
<TabsTrigger value='template'>{t('form.tabs.template')}</TabsTrigger>
<TabsTrigger value='download'>{t('form.tabs.download')}</TabsTrigger>
</TabsList>
<TabsContent value='basic' className='space-y-4'>
<FormField
control={form.control}
name='icon'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.fields.icon')}</FormLabel>
<FormControl>
<EnhancedInput
type='text'
placeholder='https://example.com/icon.png'
suffix={
<UploadImage
className='bg-muted h-9 rounded-none border-none px-2'
onChange={(value) => {
form.setValue(field.name, value as string);
}}
/>
}
value={field.value}
onValueChange={(value) => {
form.setValue(field.name, value as string);
}}
/>
</FormControl>
<FormDescription>{t('form.descriptions.icon')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='name'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.fields.name')}</FormLabel>
<FormControl>
<Input placeholder='Clash for Windows' {...field} />
</FormControl>
<FormDescription>{t('form.descriptions.name')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='user_agent'
render={({ field }) => (
<FormItem>
<FormLabel>User-Agent</FormLabel>
<FormControl>
<Input placeholder='Clash' {...field} />
</FormControl>
<FormDescription>
{t('form.descriptions.userAgentPrefix')}
</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='description'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.fields.description')}</FormLabel>
<FormControl>
<Textarea placeholder={t('form.descriptions.description')} {...field} />
</FormControl>
<FormDescription>{t('form.descriptions.description')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
</TabsContent>
<TabsContent value='template' className='space-y-4'>
<FormField
control={form.control}
name='output_format'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.fields.outputFormat')}</FormLabel>
<FormControl>
<Select value={field.value} onValueChange={field.onChange}>
<SelectTrigger>
<SelectValue placeholder='Select ...' />
</SelectTrigger>
<SelectContent>
<SelectItem value='yaml'>{t('outputFormats.yaml')}</SelectItem>
<SelectItem value='json'>{t('outputFormats.json')}</SelectItem>
<SelectItem value='base64'>{t('outputFormats.base64')}</SelectItem>
<SelectItem value='plain'>{t('outputFormats.plain')}</SelectItem>
</SelectContent>
</Select>
</FormControl>
<FormDescription>{t('form.descriptions.outputFormat')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='proxy_template'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.fields.proxyTemplate')}</FormLabel>
<FormControl>
<Input
placeholder='clash://install-config?url={url}&name={name}'
{...field}
/>
</FormControl>
<FormDescription>
{t('form.descriptions.proxyTemplate')}
{`{url} {name}`}
</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='template'
render={({ field }) => (
<FormItem>
<FormLabel>{t('protocol.templateContent')}</FormLabel>
<FormLabel>{t('form.fields.template')}</FormLabel>
<FormControl>
<Textarea
placeholder={t('protocol.templatePlaceholder')}
value={field.value}
onChange={field.onChange}
rows={20}
className='font-mono text-sm'
placeholder='proxies:\n - name: {name}\n type: {type}\n server: {server}\n port: {port}'
className='min-h-[120px] font-mono text-sm'
{...field}
/>
</FormControl>
<FormDescription>{t('form.descriptions.template')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
</TabsContent>
<TabsContent value='download' className='space-y-4'>
<div className='space-y-4'>
<div className='grid gap-3'>
{['windows', 'mac', 'linux', 'ios', 'android', 'harmony'].map((key) => (
<FormField
key={key}
control={form.control}
name={
`download_link.${key}` as `download_link.${keyof ClientFormData['download_link']}`
}
render={({ field }) => (
<FormItem>
<FormLabel>{t(`platforms.${key}`)}</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormDescription>
{t(`platforms.${key}`)} {t('form.descriptions.downloadLink')}
</FormDescription>
</FormItem>
)}
/>
))}
</div>
</div>
</TabsContent>
</Tabs>
</form>
</Form>
</ScrollArea>
<SheetFooter className='flex-row justify-end gap-2 pt-3'>
<Button variant='outline' disabled={loading} onClick={() => setOpen(false)}>
<Button variant='outline' onClick={() => setOpen(false)}>
{t('actions.cancel')}
</Button>
<Button disabled={loading} type='submit' form='client-template-form'>
<Button onClick={form.handleSubmit(onSubmit)} disabled={loading}>
{loading && <Icon icon='mdi:loading' className='mr-2 animate-spin' />}
{t('actions.saveTemplate')}
{editingClient ? t('actions.update') : t('actions.add')}
</Button>
</SheetFooter>
</SheetContent>
</Sheet>
</div>
</>
);
}

View File

@ -1,17 +1,27 @@
{
"actions": {
"add": "Přidat",
"batchDelete": "Hromadné mazání",
"batchDeleteSuccess": "Úspěšně smazáno {count} klientů",
"batchDeleteWarning": "Opravdu chcete smazat vybrané {count} klienty?",
"cancel": "Zrušit",
"confirm": "Potvrdit",
"confirmDelete": "Potvrdit mazání",
"createSuccess": "Úspěšně vytvořeno",
"delete": "Smazat",
"deleteFailed": "Mazání selhalo",
"deleteSuccess": "Úspěšně smazáno",
"deleteWarning": "Tuto operaci nelze vrátit zpět. Opravdu chcete smazat tohoto klienta?",
"edit": "Upravit",
"save": "Uložit",
"saveTemplate": "Uložit šablonu"
"saveFailed": "Uložení selhalo",
"update": "Aktualizovat",
"updateSuccess": "Úspěšně aktualizováno"
},
"config": {
"description": "Spravujte nastavení systému předplatného",
"restrictUserAgent": "Omezení User-Agent",
"restrictUserAgentDescription": "Povolit omezení přístupu na základě User-Agent",
"singleSubscriptionMode": "Režim jednoho předplatného",
"singleSubscriptionModeDescription": "Převeďte všechna uživatelská předplatná na zůstatek účtu",
"singleSubscriptionModeDescription": "Omezit uživatele na jedno aktivní předplatné. Stávající předplatná nejsou ovlivněna",
"subscriptionDomain": "Doména předplatného",
"subscriptionDomainDescription": "Vlastní doména pro odkazy na předplatné",
"subscriptionDomainPlaceholder": "Zadejte doménu předplatného, jednu na řádek",
@ -21,69 +31,69 @@
"title": "Konfigurace předplatného",
"updateError": "Aktualizace selhala",
"updateSuccess": "Nastavení bylo úspěšně aktualizováno",
"userAgentWhitelist": "Whitelist User-Agent",
"userAgentWhitelistDescription": "Povolené User-Agenty pro přístup k předplatnému, jeden na řádek. Vestavěné šablony jsou automaticky zahrnuty do whitelistu",
"userAgentWhitelistPlaceholder": "Zadejte povolené User-Agenty, jeden na řádek",
"userAgentLimit": "Omezení {userAgent}",
"userAgentLimitDescription": "Povolit omezení přístupu na základě {userAgent}",
"userAgentList": "Whitelist {userAgent}",
"userAgentListDescription": "Povolené {userAgent} pro přístup k odběru, jeden na řádek. Konfigurovaná aplikace {userAgent} bude automaticky zahrnuta",
"userAgentListPlaceholder": "Zadejte povolené {userAgent}, jeden na řádek",
"wildcardResolution": "Řešení zástupných znaků",
"wildcardResolutionDescription": "Povolit řešení domén se zástupnými znaky pro předplatná"
},
"description": "Nastavte nastavení předplatného a šablony klientů",
"messages": {
"noClients": "Žádné šablony klientů",
"noClientsDescription": "Žádné šablony klientů zatím nejsou nakonfigurovány. Přidejte svou první šablonu a začněte."
"form": {
"addTitle": "Přidat klienta",
"descriptions": {
"description": "Podrobný popis klienta",
"downloadLink": "URL pro stažení platformy",
"icon": "URL ikony nebo base64 kódování",
"name": "Zobrazovaný název klienta",
"outputFormat": "Formát konfiguračního souboru předplatného",
"proxyTemplate": "Šablona odkazu na předplatné, podporuje proměnné: {{variables}}",
"template": "Šablona konfigurace předplatného, podporuje různé proměnné",
"userAgentPrefix": "Identifikátor klienta pro rozlišení různých klientů."
},
"editTitle": "Upravit klienta",
"fields": {
"description": "Popis",
"icon": "Ikona",
"name": "Název",
"outputFormat": "Výstupní formát",
"proxyTemplate": "Odkaz na předplatné",
"template": "Konfigurační šablona"
},
"tabs": {
"basic": "Základní informace",
"download": "Stažení",
"template": "Šablony"
},
"validation": {
"nameRequired": "Název klienta je povinný",
"userAgentRequiredSuffix": "je povinný"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Prostý text",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Velký ekosystém, komplexní pravidla, aktivní komunita"
"title": "Správa klientů"
},
"egern": {
"features": "Moderní klient pro iOS, vynikající výkon"
},
"hiddify": {
"features": "Víceplatformní, komplexní protokoly, přívětivé pro začátečníky"
},
"loon": {
"features": "Pokročilý klient pro iOS, bohatá pravidla, krásné rozhraní"
},
"netch": {
"features": "Proxy klient zaměřený na hry"
},
"quantumult": {
"features": "Pokročilý klient pro iOS, flexibilní pravidla, bohaté skripty"
},
"shadowrocket": {
"features": "Klasický klient pro iOS, flexibilní konfigurace"
},
"singbox": {
"features": "Nejnovější jádro, oficiální GUI, podpora více platforem"
},
"stash": {
"features": "Moderní mobilní UI, komplexní protokoly"
},
"surfboard": {
"features": "Zdarma, aktivní vývoj, moderní rozhraní"
},
"surge": {
"features": "Prémiový nástroj pro iOS/Mac, silné funkce"
},
"v2box": {
"features": "Uživatelsky přívětivý klient V2Ray"
},
"v2rayn": {
"features": "Populární klient pro Windows, bohatý na funkce"
},
"v2rayng": {
"features": "Populární klient pro Android, lehký"
"table": {
"columns": {
"default": "Výchozí",
"description": "Popis",
"name": "Název klienta",
"outputFormat": "Výstupní formát",
"supportedPlatforms": "Podporované platformy"
}
}
},
"description": "Spravujte šablony konfigurace předplatného pro proxy klienty",
"features": "Klíčové vlastnosti",
"platforms": "Platformy",
"subscribeTemplate": "Konfigurace šablony předplatného",
"templateContent": "Obsah šablony",
"templatePlaceholder": "Zadejte šablonu konfigurace klienta...",
"title": "Šablony předplatného klienta"
},
"title": "Správa předplatného"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Hinzufügen",
"batchDelete": "Massenlöschung",
"batchDeleteSuccess": "{count} Clients erfolgreich gelöscht",
"batchDeleteWarning": "Sind Sie sicher, dass Sie die ausgewählten {count} Clients löschen möchten?",
"cancel": "Abbrechen",
"confirm": "Bestätigen",
"confirmDelete": "Löschen bestätigen",
"createSuccess": "Erfolgreich erstellt",
"delete": "Löschen",
"deleteFailed": "Löschen fehlgeschlagen",
"deleteSuccess": "Erfolgreich gelöscht",
"deleteWarning": "Dieser Vorgang kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie diesen Client löschen möchten?",
"edit": "Bearbeiten",
"save": "Speichern",
"saveTemplate": "Vorlage speichern"
"saveFailed": "Speichern fehlgeschlagen",
"update": "Aktualisieren",
"updateSuccess": "Erfolgreich aktualisiert"
},
"config": {
"description": "Verwalten Sie die Einstellungen des Abonnementsystems",
"restrictUserAgent": "Benutzer-Agent-Einschränkung",
"restrictUserAgentDescription": "Zugriffseinschränkungen basierend auf dem Benutzer-Agent aktivieren",
"singleSubscriptionMode": "Einzelnes Abonnement-Modus",
"description": "Verwalten Sie die Systemeinstellungen für Abonnements",
"singleSubscriptionMode": "Einzelnes Abonnement",
"singleSubscriptionModeDescription": "Benutzer auf ein aktives Abonnement beschränken. Bestehende Abonnements bleiben unberührt",
"subscriptionDomain": "Abonnement-Domain",
"subscriptionDomainDescription": "Benutzerdefinierte Domain für Abonnement-Links",
"subscriptionDomainPlaceholder": "Geben Sie die Abonnement-Domain ein, eine pro Zeile",
"subscriptionPath": "Abonnement-Pfad",
"subscriptionPathDescription": "Benutzerdefinierter Pfad für Abonnement-Endpunkte (bessere Leistung nach Systemneustart)",
"subscriptionPathPlaceholder": "Geben Sie den Abonnement-Pfad ein",
"subscriptionDomain": "Abonnementdomäne",
"subscriptionDomainDescription": "Benutzerdefinierte Domäne für Abonnementlinks",
"subscriptionDomainPlaceholder": "Geben Sie die Abonnementdomäne ein, eine pro Zeile",
"subscriptionPath": "Abonnementpfad",
"subscriptionPathDescription": "Benutzerdefinierter Pfad für Abonnementendpunkte (bessere Leistung nach Systemneustart)",
"subscriptionPathPlaceholder": "Geben Sie den Abonnementpfad ein",
"title": "Abonnementkonfiguration",
"updateError": "Aktualisierung fehlgeschlagen",
"updateSuccess": "Einstellungen erfolgreich aktualisiert",
"userAgentWhitelist": "Benutzer-Agent-Whitelist",
"userAgentWhitelistDescription": "Erlaubte Benutzer-Agents für den Abonnementzugriff, jeweils eine pro Zeile. Eingebaute Vorlagen werden automatisch in die Whitelist aufgenommen",
"userAgentWhitelistPlaceholder": "Erlaubte Benutzer-Agents eingeben, jeweils eine pro Zeile",
"userAgentLimit": "{userAgent} Einschränkung",
"userAgentLimitDescription": "Zugriffsrestriktionen basierend auf {userAgent} aktivieren",
"userAgentList": "{userAgent} Whitelist",
"userAgentListDescription": "Erlaubte {userAgent} für den Abonnementzugang, jeweils eine pro Zeile. Konfigurierte Anwendung {userAgent} wird automatisch hinzugefügt",
"userAgentListPlaceholder": "Erlaubte {userAgent} eingeben, jeweils eine pro Zeile",
"wildcardResolution": "Wildcard-Auflösung",
"wildcardResolutionDescription": "Aktivieren Sie die Wildcard-Domainauflösung für Abonnements"
"wildcardResolutionDescription": "Aktivieren Sie die Wildcard-Domänenauflösung für Abonnements"
},
"description": "Konfigurieren Sie Abonnementeinstellungen und Clientvorlagen",
"messages": {
"noClients": "Keine Clientvorlagen",
"noClientsDescription": "Es sind noch keine Clientvorlagen konfiguriert. Fügen Sie Ihre erste Vorlage hinzu, um zu beginnen."
"form": {
"addTitle": "Client hinzufügen",
"descriptions": {
"description": "Detaillierte Clientbeschreibung",
"downloadLink": "Plattform-Download-URL",
"icon": "Icon-URL oder Base64-Codierung",
"name": "Anzeigename des Clients",
"outputFormat": "Format der Abonnementkonfigurationsdatei",
"proxyTemplate": "Vorlage für den Abonnementlink, unterstützt Variablen: ",
"template": "Abonnementkonfigurationsvorlage, unterstützt verschiedene Variablen",
"userAgentPrefix": "Client-Identifikator zur Unterscheidung verschiedener Clients"
},
"editTitle": "Client bearbeiten",
"fields": {
"description": "Beschreibung",
"icon": "Icon",
"name": "Name",
"outputFormat": "Ausgabeformat",
"proxyTemplate": "Abonnementlink",
"template": "Konfigurationsvorlage"
},
"tabs": {
"basic": "Basisinformationen",
"download": "Downloads",
"template": "Vorlagen"
},
"validation": {
"nameRequired": "Clientname ist erforderlich",
"userAgentRequiredSuffix": "ist erforderlich"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Plain Text",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Großes Ökosystem, umfassende Regeln, aktive Community"
"title": "Client-Verwaltung"
},
"egern": {
"features": "Moderner iOS-Client, hervorragende Leistung"
},
"hiddify": {
"features": "Plattformübergreifend, umfassende Protokolle, anfängerfreundlich"
},
"loon": {
"features": "Fortgeschrittener iOS-Client, reichhaltige Regeln, schönes Interface"
},
"netch": {
"features": "Gaming-fokussierter Proxy-Client"
},
"quantumult": {
"features": "Fortgeschrittener iOS-Client, flexible Regeln, reichhaltige Skripte"
},
"shadowrocket": {
"features": "Klassischer iOS-Client, flexible Konfiguration"
},
"singbox": {
"features": "Neuester Kernel, offizielle GUI, plattformübergreifende Unterstützung"
},
"stash": {
"features": "Modernes mobiles UI, umfassende Protokolle"
},
"surfboard": {
"features": "Kostenlos, aktive Entwicklung, modernes Interface"
},
"surge": {
"features": "Premium iOS/Mac-Tool, leistungsstarke Funktionen"
},
"v2box": {
"features": "Benutzerfreundlicher V2Ray-Client"
},
"v2rayn": {
"features": "Beliebter Windows-Client, funktionsreich"
},
"v2rayng": {
"features": "Beliebter Android-Client, leichtgewichtig"
"table": {
"columns": {
"default": "Standard",
"description": "Beschreibung",
"name": "Clientname",
"outputFormat": "Ausgabeformat",
"supportedPlatforms": "Unterstützte Plattformen"
}
}
},
"description": "Verwalten Sie Konfigurationsvorlagen für Abonnements von Proxy-Clients",
"features": "Hauptmerkmale",
"platforms": "Plattformen",
"subscribeTemplate": "Konfiguration der Abonnementvorlage",
"templateContent": "Vorlageninhalt",
"templatePlaceholder": "Geben Sie die Clientkonfigurationsvorlage ein...",
"title": "Client-Abonnementvorlagen"
},
"title": "Abonnementverwaltung"
}

View File

@ -1,16 +1,26 @@
{
"actions": {
"edit": "Edit",
"delete": "Delete",
"save": "Save",
"add": "Add",
"batchDelete": "Batch Delete",
"batchDeleteSuccess": "Successfully deleted {count} clients",
"batchDeleteWarning": "Are you sure you want to delete the selected {count} clients?",
"cancel": "Cancel",
"saveTemplate": "Save Template"
"confirm": "Confirm",
"confirmDelete": "Confirm Delete",
"createSuccess": "Created successfully",
"delete": "Delete",
"deleteFailed": "Delete failed",
"deleteSuccess": "Deleted successfully",
"deleteWarning": "This operation cannot be undone. Are you sure you want to delete this client?",
"edit": "Edit",
"save": "Save",
"saveFailed": "Save failed",
"update": "Update",
"updateSuccess": "Updated successfully"
},
"config": {
"title": "Subscription Configuration",
"description": "Manage subscription system settings",
"restrictUserAgent": "User-Agent Restriction",
"restrictUserAgentDescription": "Enable access restrictions based on User-Agent",
"singleSubscriptionMode": "Single Subscription Mode",
"singleSubscriptionModeDescription": "Limit users to one active subscription. Existing subscriptions unaffected",
"subscriptionDomain": "Subscription Domain",
@ -21,69 +31,69 @@
"subscriptionPathPlaceholder": "Enter subscription path",
"updateError": "Update failed",
"updateSuccess": "Settings updated successfully",
"userAgentWhitelist": "User-Agent Whitelist",
"userAgentWhitelistDescription": "Allowed User-Agents for subscription access, one per line. Built-in templates are automatically included in the whitelist",
"userAgentWhitelistPlaceholder": "Enter allowed User-Agents, one per line",
"userAgentLimit": "{userAgent} Restriction",
"userAgentLimitDescription": "Enable access restrictions based on {userAgent}",
"userAgentList": "{userAgent} Whitelist",
"userAgentListDescription": "Allowed {userAgent} for subscription access, one per line. Configured application {userAgent} will be automatically included",
"userAgentListPlaceholder": "Enter allowed {userAgent}, one per line",
"wildcardResolution": "Wildcard Resolution",
"wildcardResolutionDescription": "Enable wildcard domain resolution for subscriptions"
},
"description": "Configure subscription settings and client templates",
"messages": {
"noClients": "No Client Templates",
"noClientsDescription": "No client templates configured yet. Add your first template to get started."
"form": {
"addTitle": "Add Client",
"editTitle": "Edit Client",
"tabs": {
"basic": "Basic Info",
"template": "Templates",
"download": "Downloads"
},
"fields": {
"icon": "Icon",
"name": "Name",
"description": "Description",
"outputFormat": "Output Format",
"proxyTemplate": "Subscription Link",
"template": "Config Template"
},
"descriptions": {
"icon": "Icon URL or base64 encoding",
"name": "Client display name",
"userAgentPrefix": "Client identifier for distinguishing different clients",
"description": "Detailed client description",
"outputFormat": "Subscription configuration file format",
"proxyTemplate": "Subscription link template, supports variables: ",
"template": "Subscription configuration template, supports various variables",
"downloadLink": "platform download URL"
},
"validation": {
"nameRequired": "Client name is required",
"userAgentRequiredSuffix": "is required"
}
},
"outputFormats": {
"yaml": "YAML",
"json": "JSON",
"base64": "Base64",
"plain": "Plain Text"
},
"platforms": {
"windows": "Windows",
"mac": "macOS",
"linux": "Linux",
"ios": "iOS",
"android": "Android",
"harmony": "HarmonyOS"
},
"protocol": {
"title": "Client Subscription Templates",
"description": "Manage subscription configuration templates for proxy clients",
"subscribeTemplate": "Subscription Template Configuration",
"templateContent": "Template Content",
"templatePlaceholder": "Enter client configuration template...",
"platforms": "Platforms",
"features": "Key Features",
"clients": {
"clash": {
"features": "Large ecosystem, comprehensive rules, active community"
"title": "Client Management"
},
"hiddify": {
"features": "Multi-platform, comprehensive protocols, beginner-friendly"
},
"singbox": {
"features": "Latest kernel, official GUI, multi-platform support"
},
"stash": {
"features": "Modern mobile UI, comprehensive protocols"
},
"surge": {
"features": "Premium iOS/Mac tool, powerful features"
},
"quantumult": {
"features": "iOS advanced client, flexible rules, rich scripts"
},
"shadowrocket": {
"features": "Classic iOS client, flexible configuration"
},
"surfboard": {
"features": "Free, active development, modern interface"
},
"v2box": {
"features": "User-friendly V2Ray client"
},
"v2rayn": {
"features": "Popular Windows client, feature-rich"
},
"v2rayng": {
"features": "Popular Android client, lightweight"
},
"netch": {
"features": "Gaming-focused proxy client"
},
"loon": {
"features": "iOS advanced client, rich rules, beautiful interface"
},
"egern": {
"features": "Modern iOS client, excellent performance"
"table": {
"columns": {
"default": "Default",
"name": "Client Name",
"description": "Description",
"outputFormat": "Output Format",
"supportedPlatforms": "Supported Platforms"
}
}
},
"title": "Subscription Management"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Agregar",
"batchDelete": "Eliminar en lote",
"batchDeleteSuccess": "Se eliminaron con éxito {count} clientes",
"batchDeleteWarning": "¿Está seguro de que desea eliminar los {count} clientes seleccionados?",
"cancel": "Cancelar",
"confirm": "Confirmar",
"confirmDelete": "Confirmar eliminación",
"createSuccess": "Creado con éxito",
"delete": "Eliminar",
"deleteFailed": "Error al eliminar",
"deleteSuccess": "Eliminado con éxito",
"deleteWarning": "Esta operación no se puede deshacer. ¿Está seguro de que desea eliminar este cliente?",
"edit": "Editar",
"save": "Guardar",
"saveTemplate": "Guardar Plantilla"
"saveFailed": "Error al guardar",
"update": "Actualizar",
"updateSuccess": "Actualizado con éxito"
},
"config": {
"description": "Gestionar la configuración del sistema de suscripciones",
"restrictUserAgent": "Restricción de User-Agent",
"restrictUserAgentDescription": "Habilitar restricciones de acceso basadas en User-Agent",
"description": "Gestionar la configuración del sistema de suscripción",
"singleSubscriptionMode": "Modo de Suscripción Única",
"singleSubscriptionModeDescription": "Limitar a los usuarios a una única suscripción activa. Las suscripciones existentes no se ven afectadas.",
"singleSubscriptionModeDescription": "Limitar a los usuarios a una suscripción activa. Las suscripciones existentes no se ven afectadas",
"subscriptionDomain": "Dominio de Suscripción",
"subscriptionDomainDescription": "Dominio personalizado para enlaces de suscripción",
"subscriptionDomainPlaceholder": "Ingrese el dominio de suscripción, uno por línea",
"subscriptionPath": "Ruta de Suscripción",
"subscriptionPathDescription": "Ruta personalizada para los puntos finales de suscripción (mejor rendimiento después del reinicio del sistema)",
"subscriptionPathPlaceholder": "Ingrese la ruta de suscripción",
"title": "Configuración de Suscripciones",
"title": "Configuración de Suscripción",
"updateError": "Error al actualizar",
"updateSuccess": "Configuraciones actualizadas con éxito",
"userAgentWhitelist": "Lista Blanca de User-Agent",
"userAgentWhitelistDescription": "User-Agents permitidos para acceder a las suscripciones, uno por línea. Las plantillas integradas se incluyen automáticamente en la lista blanca",
"userAgentWhitelistPlaceholder": "Ingrese los User-Agents permitidos, uno por línea",
"wildcardResolution": "Resolución de Comodines",
"wildcardResolutionDescription": "Habilitar la resolución de dominio comodín para suscripciones"
"userAgentLimit": "Restricción de {userAgent}",
"userAgentLimitDescription": "Habilitar restricciones de acceso basadas en {userAgent}",
"userAgentList": "Lista blanca de {userAgent}",
"userAgentListDescription": "{userAgent} permitidos para acceso a la suscripción, uno por línea. La aplicación configurada {userAgent} se incluirá automáticamente",
"userAgentListPlaceholder": "Ingrese {userAgent} permitidos, uno por línea",
"wildcardResolution": "Resolución de comodines",
"wildcardResolutionDescription": "Habilitar resolución de dominio comodín para suscripciones"
},
"description": "Configurar ajustes de suscripción y plantillas de cliente",
"messages": {
"noClients": "No hay Plantillas de Cliente",
"noClientsDescription": "Aún no se han configurado plantillas de cliente. Agregue su primera plantilla para comenzar."
"form": {
"addTitle": "Agregar Cliente",
"descriptions": {
"description": "Descripción detallada del cliente",
"downloadLink": "URL de descarga de la plataforma",
"icon": "URL del ícono o codificación base64",
"name": "Nombre para mostrar del cliente",
"outputFormat": "Formato del archivo de configuración de suscripción",
"proxyTemplate": "Plantilla de enlace de suscripción, admite variables: ",
"template": "Plantilla de configuración de suscripción, admite varias variables",
"userAgentPrefix": "Identificador del cliente para distinguir diferentes clientes."
},
"editTitle": "Editar Cliente",
"fields": {
"description": "Descripción",
"icon": "Ícono",
"name": "Nombre",
"outputFormat": "Formato de Salida",
"proxyTemplate": "Enlace de Suscripción",
"template": "Plantilla de Configuración"
},
"tabs": {
"basic": "Información Básica",
"download": "Descargas",
"template": "Plantillas"
},
"validation": {
"nameRequired": "El nombre del cliente es obligatorio",
"userAgentRequiredSuffix": "es obligatorio"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Texto Plano",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Gran ecosistema, reglas completas, comunidad activa"
"title": "Gestión de Clientes"
},
"egern": {
"features": "Cliente moderno para iOS, excelente rendimiento"
},
"hiddify": {
"features": "Multiplataforma, protocolos completos, fácil de usar"
},
"loon": {
"features": "Cliente avanzado para iOS, reglas ricas, interfaz hermosa"
},
"netch": {
"features": "Cliente proxy enfocado en juegos"
},
"quantumult": {
"features": "Cliente avanzado para iOS, reglas flexibles, scripts ricos"
},
"shadowrocket": {
"features": "Cliente clásico para iOS, configuración flexible"
},
"singbox": {
"features": "Último núcleo, GUI oficial, soporte multiplataforma"
},
"stash": {
"features": "Interfaz móvil moderna, protocolos completos"
},
"surfboard": {
"features": "Gratis, desarrollo activo, interfaz moderna"
},
"surge": {
"features": "Herramienta premium para iOS/Mac, características potentes"
},
"v2box": {
"features": "Cliente V2Ray fácil de usar"
},
"v2rayn": {
"features": "Cliente popular para Windows, rico en características"
},
"v2rayng": {
"features": "Cliente popular para Android, ligero"
"table": {
"columns": {
"default": "Predeterminado",
"description": "Descripción",
"name": "Nombre del Cliente",
"outputFormat": "Formato de Salida",
"supportedPlatforms": "Plataformas Soportadas"
}
}
},
"description": "Gestionar plantillas de configuración de suscripción para clientes proxy",
"features": "Características Clave",
"platforms": "Plataformas",
"subscribeTemplate": "Configuración de Plantilla de Suscripción",
"templateContent": "Contenido de la Plantilla",
"templatePlaceholder": "Ingrese la plantilla de configuración del cliente...",
"title": "Plantillas de Suscripción de Cliente"
},
"title": "Gestión de Suscripciones"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Agregar",
"batchDelete": "Eliminar en Lote",
"batchDeleteSuccess": "Se eliminaron exitosamente {count} clientes",
"batchDeleteWarning": "¿Está seguro de que desea eliminar los {count} clientes seleccionados?",
"cancel": "Cancelar",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Eliminación",
"createSuccess": "Creado exitosamente",
"delete": "Eliminar",
"deleteFailed": "Error al eliminar",
"deleteSuccess": "Eliminado exitosamente",
"deleteWarning": "Esta operación no se puede deshacer. ¿Está seguro de que desea eliminar este cliente?",
"edit": "Editar",
"save": "Guardar",
"saveTemplate": "Guardar Plantilla"
"saveFailed": "Error al guardar",
"update": "Actualizar",
"updateSuccess": "Actualizado exitosamente"
},
"config": {
"description": "Gestionar la configuración del sistema de suscripciones",
"restrictUserAgent": "Restricción de User-Agent",
"restrictUserAgentDescription": "Habilitar restricciones de acceso basadas en User-Agent",
"description": "Gestionar la configuración del sistema de suscripción",
"singleSubscriptionMode": "Modo de Suscripción Única",
"singleSubscriptionModeDescription": "Limitar a los usuarios a una suscripción activa. Las suscripciones existentes no se ven afectadas",
"subscriptionDomain": "Dominio de Suscripción",
"subscriptionDomainDescription": "Dominio personalizado para enlaces de suscripción",
"subscriptionDomainPlaceholder": "Ingresa el dominio de suscripción, uno por línea",
"subscriptionDomainPlaceholder": "Ingrese el dominio de suscripción, uno por línea",
"subscriptionPath": "Ruta de Suscripción",
"subscriptionPathDescription": "Ruta personalizada para los puntos finales de suscripción (mejor rendimiento después del reinicio del sistema)",
"subscriptionPathPlaceholder": "Ingresa la ruta de suscripción",
"subscriptionPathPlaceholder": "Ingrese la ruta de suscripción",
"title": "Configuración de Suscripción",
"updateError": "Error al actualizar",
"updateSuccess": "Configuraciones actualizadas con éxito",
"userAgentWhitelist": "Lista blanca de User-Agent",
"userAgentWhitelistDescription": "User-Agents permitidos para acceso a la suscripción, uno por línea. Las plantillas integradas se incluyen automáticamente en la lista blanca",
"userAgentWhitelistPlaceholder": "Ingresa los User-Agents permitidos, uno por línea",
"wildcardResolution": "Resolución de Comodín",
"wildcardResolutionDescription": "Habilitar la resolución de dominio comodín para suscripciones"
"updateSuccess": "Configuraciones actualizadas exitosamente",
"userAgentLimit": "Restricción de {userAgent}",
"userAgentLimitDescription": "Habilitar restricciones de acceso basadas en {userAgent}",
"userAgentList": "Lista blanca de {userAgent}",
"userAgentListDescription": "{userAgent} permitidos para acceso a suscripciones, uno por línea. La aplicación configurada {userAgent} se incluirá automáticamente",
"userAgentListPlaceholder": "Ingresa {userAgent} permitidos, uno por línea",
"wildcardResolution": "Resolución de Comodines",
"wildcardResolutionDescription": "Habilitar resolución de dominio comodín para suscripciones"
},
"description": "Configurar ajustes de suscripción y plantillas de cliente",
"messages": {
"noClients": "Sin Plantillas de Cliente",
"noClientsDescription": "Aún no hay plantillas de cliente configuradas. Agrega tu primera plantilla para comenzar."
"form": {
"addTitle": "Agregar Cliente",
"descriptions": {
"description": "Descripción detallada del cliente",
"downloadLink": "URL de descarga de la plataforma",
"icon": "URL del ícono o codificación base64",
"name": "Nombre para mostrar del cliente",
"outputFormat": "Formato del archivo de configuración de suscripción",
"proxyTemplate": "Plantilla de enlace de suscripción, soporta variables: ",
"template": "Plantilla de configuración de suscripción, soporta varias variables",
"userAgentPrefix": "Identificador del cliente para distinguir diferentes clientes"
},
"editTitle": "Editar Cliente",
"fields": {
"description": "Descripción",
"icon": "Ícono",
"name": "Nombre",
"outputFormat": "Formato de Salida",
"proxyTemplate": "Enlace de Suscripción",
"template": "Plantilla de Configuración"
},
"tabs": {
"basic": "Información Básica",
"download": "Descargas",
"template": "Plantillas"
},
"validation": {
"nameRequired": "El nombre del cliente es obligatorio",
"userAgentRequiredSuffix": "es obligatorio"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Texto Plano",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Gran ecosistema, reglas completas, comunidad activa"
"title": "Gestión de Clientes"
},
"egern": {
"features": "Cliente moderno para iOS, excelente rendimiento"
},
"hiddify": {
"features": "Multiplataforma, protocolos completos, amigable para principiantes"
},
"loon": {
"features": "Cliente avanzado para iOS, reglas ricas, interfaz hermosa"
},
"netch": {
"features": "Cliente proxy enfocado en juegos"
},
"quantumult": {
"features": "Cliente avanzado para iOS, reglas flexibles, scripts ricos"
},
"shadowrocket": {
"features": "Cliente clásico para iOS, configuración flexible"
},
"singbox": {
"features": "Último núcleo, GUI oficial, soporte multiplataforma"
},
"stash": {
"features": "Interfaz móvil moderna, protocolos completos"
},
"surfboard": {
"features": "Gratis, desarrollo activo, interfaz moderna"
},
"surge": {
"features": "Herramienta premium para iOS/Mac, características poderosas"
},
"v2box": {
"features": "Cliente V2Ray fácil de usar"
},
"v2rayn": {
"features": "Cliente popular para Windows, rico en características"
},
"v2rayng": {
"features": "Cliente popular para Android, ligero"
"table": {
"columns": {
"default": "Predeterminado",
"description": "Descripción",
"name": "Nombre del Cliente",
"outputFormat": "Formato de Salida",
"supportedPlatforms": "Plataformas Soportadas"
}
}
},
"description": "Gestionar plantillas de configuración de suscripción para clientes proxy",
"features": "Características Clave",
"platforms": "Plataformas",
"subscribeTemplate": "Configuración de Plantilla de Suscripción",
"templateContent": "Contenido de la Plantilla",
"templatePlaceholder": "Ingresa la plantilla de configuración del cliente...",
"title": "Plantillas de Suscripción de Cliente"
},
"title": "Gestión de Suscripciones"
}

View File

@ -1,15 +1,25 @@
{
"actions": {
"add": "افزودن",
"batchDelete": "حذف گروهی",
"batchDeleteSuccess": "با موفقیت {count} مشتری حذف شد",
"batchDeleteWarning": "آیا مطمئن هستید که می‌خواهید {count} مشتری انتخاب شده را حذف کنید؟",
"cancel": "لغو",
"confirm": "تأیید",
"confirmDelete": "تأیید حذف",
"createSuccess": "با موفقیت ایجاد شد",
"delete": "حذف",
"deleteFailed": "حذف ناموفق بود",
"deleteSuccess": "با موفقیت حذف شد",
"deleteWarning": "این عملیات قابل بازگشت نیست. آیا مطمئن هستید که می‌خواهید این مشتری را حذف کنید؟",
"edit": "ویرایش",
"save": "ذخیره",
"saveTemplate": "ذخیره الگو"
"saveFailed": "ذخیره ناموفق بود",
"update": "به‌روزرسانی",
"updateSuccess": "با موفقیت به‌روزرسانی شد"
},
"config": {
"description": "مدیریت تنظیمات سیستم اشتراک",
"restrictUserAgent": "محدودیت User-Agent",
"restrictUserAgentDescription": "فعال‌سازی محدودیت‌های دسترسی بر اساس User-Agent",
"singleSubscriptionMode": "حالت اشتراک تک",
"singleSubscriptionModeDescription": "محدود کردن کاربران به یک اشتراک فعال. اشتراک‌های موجود تحت تأثیر قرار نمی‌گیرند",
"subscriptionDomain": "دامنه اشتراک",
@ -21,69 +31,69 @@
"title": "پیکربندی اشتراک",
"updateError": "به‌روزرسانی ناموفق بود",
"updateSuccess": "تنظیمات با موفقیت به‌روزرسانی شد",
"userAgentWhitelist": "فهرست سفید User-Agent",
"userAgentWhitelistDescription": "User-Agent های مجاز برای دسترسی به اشتراک، هر کدام در یک خط. الگوهای داخلی به‌طور خودکار در فهرست سفید گنجانده می‌شوند",
"userAgentWhitelistPlaceholder": "User-Agent های مجاز را وارد کنید، هر کدام در یک خط",
"wildcardResolution": "حل دامنه‌های wildcard",
"userAgentLimit": "محدودیت {userAgent}",
"userAgentLimitDescription": "فعال‌سازی محدودیت‌های دسترسی بر اساس {userAgent}",
"userAgentList": "لیست سفید {userAgent}",
"userAgentListDescription": "{userAgent} های مجاز برای دسترسی به اشتراک، هر کدام در یک خط. {userAgent} های پیکربندی شده به‌طور خودکار شامل خواهند شد",
"userAgentListPlaceholder": "{userAgent} های مجاز را وارد کنید، هر کدام در یک خط",
"wildcardResolution": "حل wildcard",
"wildcardResolutionDescription": "فعال‌سازی حل دامنه wildcard برای اشتراک‌ها"
},
"description": "تنظیمات اشتراک و الگوهای مشتری را پیکربندی کنید",
"messages": {
"noClients": "هیچ الگوی مشتری وجود ندارد",
"noClientsDescription": "هنوز هیچ الگوی مشتری پیکربندی نشده است. اولین الگوی خود را برای شروع اضافه کنید."
"form": {
"addTitle": "افزودن مشتری",
"descriptions": {
"description": "توضیحات دقیق مشتری",
"downloadLink": "آدرس دانلود پلتفرم",
"icon": "آدرس URL آیکون یا کدگذاری base64",
"name": "نام نمایشی مشتری",
"outputFormat": "فرمت فایل پیکربندی اشتراک",
"proxyTemplate": "الگوی لینک اشتراک، از متغیرها پشتیبانی می‌کند: ",
"template": "الگوی پیکربندی اشتراک، از متغیرهای مختلف پشتیبانی می‌کند",
"userAgentPrefix": "شناسه مشتری برای تمایز بین مشتریان مختلف"
},
"editTitle": "ویرایش مشتری",
"fields": {
"description": "توضیحات",
"icon": "آیکون",
"name": "نام",
"outputFormat": "فرمت خروجی",
"proxyTemplate": "لینک اشتراک",
"template": "الگوی پیکربندی"
},
"tabs": {
"basic": "اطلاعات پایه",
"download": "دانلودها",
"template": "الگوها"
},
"validation": {
"nameRequired": "نام مشتری الزامی است",
"userAgentRequiredSuffix": "الزامی است"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "متن ساده",
"yaml": "YAML"
},
"platforms": {
"android": "اندروید",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "لینوکس",
"mac": "macOS",
"windows": "ویندوز"
},
"protocol": {
"clients": {
"clash": {
"features": "اکوسیستم بزرگ، قوانین جامع، جامعه فعال"
"title": "مدیریت مشتری"
},
"egern": {
"features": "مشتری مدرن iOS، عملکرد عالی"
},
"hiddify": {
"features": "چندپلتفرمی، پروتکل‌های جامع، مناسب برای مبتدیان"
},
"loon": {
"features": "مشتری پیشرفته iOS، قوانین غنی، رابط زیبا"
},
"netch": {
"features": "مشتری پروکسی متمرکز بر بازی"
},
"quantumult": {
"features": "مشتری پیشرفته iOS، قوانین انعطاف‌پذیر، اسکریپت‌های غنی"
},
"shadowrocket": {
"features": "مشتری کلاسیک iOS، پیکربندی انعطاف‌پذیر"
},
"singbox": {
"features": "هسته جدید، رابط کاربری رسمی، پشتیبانی چندپلتفرمی"
},
"stash": {
"features": "رابط کاربری مدرن موبایل، پروتکل‌های جامع"
},
"surfboard": {
"features": "رایگان، توسعه فعال، رابط مدرن"
},
"surge": {
"features": "ابزار پریمیوم iOS/Mac، ویژگی‌های قدرتمند"
},
"v2box": {
"features": "مشتری کاربرپسند V2Ray"
},
"v2rayn": {
"features": "مشتری محبوب ویندوز، پر از ویژگی"
},
"v2rayng": {
"features": "مشتری محبوب اندروید، سبک"
"table": {
"columns": {
"default": "پیش‌فرض",
"description": "توضیحات",
"name": "نام مشتری",
"outputFormat": "فرمت خروجی",
"supportedPlatforms": "پلتفرم‌های پشتیبانی شده"
}
}
},
"description": "مدیریت الگوهای پیکربندی اشتراک برای مشتریان پروکسی",
"features": "ویژگی‌های کلیدی",
"platforms": "پلتفرم‌ها",
"subscribeTemplate": "پیکربندی الگوی اشتراک",
"templateContent": "محتوای الگو",
"templatePlaceholder": "الگوی پیکربندی مشتری را وارد کنید...",
"title": "الگوهای اشتراک مشتری"
},
"title": "مدیریت اشتراک"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Lisää",
"batchDelete": "Ryhmän poistaminen",
"batchDeleteSuccess": "Poistettiin onnistuneesti {count} asiakasta",
"batchDeleteWarning": "Oletko varma, että haluat poistaa valitut {count} asiakasta?",
"cancel": "Peruuta",
"confirm": "Vahvista",
"confirmDelete": "Vahvista poisto",
"createSuccess": "Luotiin onnistuneesti",
"delete": "Poista",
"deleteFailed": "Poisto epäonnistui",
"deleteSuccess": "Poistettu onnistuneesti",
"deleteWarning": "Tätä toimintoa ei voi peruuttaa. Oletko varma, että haluat poistaa tämän asiakkaan?",
"edit": "Muokkaa",
"save": "Tallenna",
"saveTemplate": "Tallenna Malli"
"saveFailed": "Tallennus epäonnistui",
"update": "Päivitä",
"updateSuccess": "Päivitys onnistui"
},
"config": {
"description": "Hallitse tilausjärjestelmän asetuksia",
"restrictUserAgent": "Käyttäjä-agentin rajoitus",
"restrictUserAgentDescription": "Ota käyttöön pääsyn rajoitukset käyttäjä-agentin perusteella",
"singleSubscriptionMode": "Yksittäinen Tilausmode",
"singleSubscriptionModeDescription": "Muunna kaikki käyttäjien tilaukset tilitaseeksi",
"subscriptionDomain": "Tilauksen Verkkotunnus",
"singleSubscriptionMode": "Yksittäinen tilausmoodi",
"singleSubscriptionModeDescription": "Rajoita käyttäjät yhteen aktiiviseen tilaukseen. Olemassa olevat tilaukset eivät vaikuta",
"subscriptionDomain": "Tilauksen verkkotunnus",
"subscriptionDomainDescription": "Mukautettu verkkotunnus tilauslinkeille",
"subscriptionDomainPlaceholder": "Syötä tilauksen verkkotunnus, yksi per rivi",
"subscriptionPath": "Tilauksen Polku",
"subscriptionPath": "Tilauksen polku",
"subscriptionPathDescription": "Mukautettu polku tilauspisteille (parempi suorituskyky järjestelmän uudelleenkäynnistyksen jälkeen)",
"subscriptionPathPlaceholder": "Syötä tilauksen polku",
"title": "Tilauksen Konfigurointi",
"title": "Tilauksen asetukset",
"updateError": "Päivitys epäonnistui",
"updateSuccess": "Asetukset päivitettiin onnistuneesti",
"userAgentWhitelist": "Käyttäjä-agentin valkoinen lista",
"userAgentWhitelistDescription": "Sallitut käyttäjä-agentit tilauspääsyyn, yksi per rivi. Oletusmallit sisältyvät automaattisesti valkoiseen listaan",
"userAgentWhitelistPlaceholder": "Syötä sallitut käyttäjä-agentit, yksi per rivi",
"wildcardResolution": "Wildcard Ratkaisu",
"userAgentLimit": "{userAgent} Rajoitus",
"userAgentLimitDescription": "Ota käyttöön pääsyn rajoitukset perustuen {userAgent}",
"userAgentList": "{userAgent} Valkoinen lista",
"userAgentListDescription": "Sallitut {userAgent} tilauspääsyyn, yksi per rivi. Määritetty sovellus {userAgent} lisätään automaattisesti",
"userAgentListPlaceholder": "Syötä sallitut {userAgent}, yksi per rivi",
"wildcardResolution": "Wildcard-ratkaisu",
"wildcardResolutionDescription": "Ota käyttöön wildcard-verkkotunnuksen ratkaisu tilauksille"
},
"description": "Määritä tilausasetukset ja asiakasmallit",
"messages": {
"noClients": "Ei Asiakasmalleja",
"noClientsDescription": "Asiakasmalleja ei ole vielä määritetty. Lisää ensimmäinen mallisi aloittaaksesi."
"form": {
"addTitle": "Lisää asiakas",
"descriptions": {
"description": "Yksityiskohtainen asiakaskuvaus",
"downloadLink": "alustalataus-URL",
"icon": "Ikonin URL-osoite tai base64-koodaus",
"name": "Asiakkaan näyttönimi",
"outputFormat": "Tilauksen asetustiedoston muoto",
"proxyTemplate": "Tilauksen linkkimalli, tukee muuttujia: ",
"template": "Tilauksen asetusmalli, tukee erilaisia muuttujia",
"userAgentPrefix": "Asiakasidentifikaattori eri asiakkaiden erottamiseksi"
},
"editTitle": "Muokkaa asiakasta",
"fields": {
"description": "Kuvaus",
"icon": "Ikoni",
"name": "Nimi",
"outputFormat": "Tulostusmuoto",
"proxyTemplate": "Tilauksen linkki",
"template": "Asetusmalli"
},
"tabs": {
"basic": "Perustiedot",
"download": "Lataukset",
"template": "Mallit"
},
"validation": {
"nameRequired": "Asiakkaan nimi on pakollinen",
"userAgentRequiredSuffix": "on pakollinen"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Plain Text",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Laaja ekosysteemi, kattavat säännöt, aktiivinen yhteisö"
"title": "Asiakashallinta"
},
"egern": {
"features": "Moderni iOS asiakas, erinomainen suorituskyky"
},
"hiddify": {
"features": "Monialustainen, kattavat protokollat, aloittelijaystävällinen"
},
"loon": {
"features": "iOS edistynyt asiakas, runsaat säännöt, kaunis käyttöliittymä"
},
"netch": {
"features": "Pelaamiseen keskittyvä proxy-asiakas"
},
"quantumult": {
"features": "iOS edistynyt asiakas, joustavat säännöt, runsaat skriptit"
},
"shadowrocket": {
"features": "Klassinen iOS asiakas, joustava konfigurointi"
},
"singbox": {
"features": "Uusin ydin, virallinen GUI, monialustatuki"
},
"stash": {
"features": "Moderni mobiili UI, kattavat protokollat"
},
"surfboard": {
"features": "Ilmainen, aktiivinen kehitys, moderni käyttöliittymä"
},
"surge": {
"features": "Premium iOS/Mac työkalu, tehokkaat ominaisuudet"
},
"v2box": {
"features": "Käyttäjäystävällinen V2Ray asiakas"
},
"v2rayn": {
"features": "Suosittu Windows asiakas, ominaisuusrikas"
},
"v2rayng": {
"features": "Suosittu Android asiakas, kevyt"
"table": {
"columns": {
"default": "Oletus",
"description": "Kuvaus",
"name": "Asiakkaan nimi",
"outputFormat": "Tulostusmuoto",
"supportedPlatforms": "Tuetut alustat"
}
}
},
"description": "Hallitse tilauskonfiguraatiomalleja proxy-asiakkaille",
"features": "Keskeiset Ominaisuudet",
"platforms": "Alustat",
"subscribeTemplate": "Tilauksen Mallin Konfigurointi",
"templateContent": "Malli Sisältö",
"templatePlaceholder": "Syötä asiakaskonfiguraatiomalli...",
"title": "Asiakkaan Tilausmallit"
},
"title": "Tilauksen Hallinta"
}

View File

@ -1,17 +1,27 @@
{
"actions": {
"add": "Ajouter",
"batchDelete": "Suppression par lot",
"batchDeleteSuccess": "Suppression de {count} clients réussie",
"batchDeleteWarning": "Êtes-vous sûr de vouloir supprimer les {count} clients sélectionnés ?",
"cancel": "Annuler",
"confirm": "Confirmer",
"confirmDelete": "Confirmer la suppression",
"createSuccess": "Créé avec succès",
"delete": "Supprimer",
"deleteFailed": "Échec de la suppression",
"deleteSuccess": "Supprimé avec succès",
"deleteWarning": "Cette opération ne peut pas être annulée. Êtes-vous sûr de vouloir supprimer ce client ?",
"edit": "Modifier",
"save": "Enregistrer",
"saveTemplate": "Enregistrer le modèle"
"saveFailed": "Échec de l'enregistrement",
"update": "Mettre à jour",
"updateSuccess": "Mis à jour avec succès"
},
"config": {
"description": "Gérer les paramètres du système d'abonnement",
"restrictUserAgent": "Restriction de l'User-Agent",
"restrictUserAgentDescription": "Activer les restrictions d'accès basées sur l'User-Agent",
"singleSubscriptionMode": "Mode d'abonnement unique",
"singleSubscriptionModeDescription": "Limiter les utilisateurs à une seule souscription active. Les souscriptions existantes ne sont pas affectées",
"singleSubscriptionModeDescription": "Limiter les utilisateurs à un abonnement actif. Les abonnements existants ne sont pas affectés",
"subscriptionDomain": "Domaine d'abonnement",
"subscriptionDomainDescription": "Domaine personnalisé pour les liens d'abonnement",
"subscriptionDomainPlaceholder": "Entrez le domaine d'abonnement, un par ligne",
@ -21,69 +31,69 @@
"title": "Configuration de l'abonnement",
"updateError": "Échec de la mise à jour",
"updateSuccess": "Paramètres mis à jour avec succès",
"userAgentWhitelist": "Liste blanche des User-Agents",
"userAgentWhitelistDescription": "User-Agents autorisés pour l'accès à la souscription, un par ligne. Les modèles intégrés sont automatiquement inclus dans la liste blanche",
"userAgentWhitelistPlaceholder": "Entrez les User-Agents autorisés, un par ligne",
"userAgentLimit": "Restriction de {userAgent}",
"userAgentLimitDescription": "Activer les restrictions d'accès basées sur {userAgent}",
"userAgentList": "Liste blanche {userAgent}",
"userAgentListDescription": "{userAgent} autorisés pour l'accès à l'abonnement, un par ligne. L'application configurée {userAgent} sera automatiquement incluse",
"userAgentListPlaceholder": "Entrez les {userAgent} autorisés, un par ligne",
"wildcardResolution": "Résolution de wildcard",
"wildcardResolutionDescription": "Activer la résolution de domaine wildcard pour les abonnements"
},
"description": "Configurer les paramètres d'abonnement et les modèles de client",
"messages": {
"noClients": "Aucun modèle de client",
"noClientsDescription": "Aucun modèle de client configuré pour le moment. Ajoutez votre premier modèle pour commencer."
"form": {
"addTitle": "Ajouter un client",
"descriptions": {
"description": "Description détaillée du client",
"downloadLink": "URL de téléchargement de la plateforme",
"icon": "URL de l'icône ou encodage base64",
"name": "Nom d'affichage du client",
"outputFormat": "Format du fichier de configuration d'abonnement",
"proxyTemplate": "Modèle de lien d'abonnement, prend en charge les variables : ",
"template": "Modèle de configuration d'abonnement, prend en charge diverses variables",
"userAgentPrefix": "Identifiant du client pour distinguer les différents clients."
},
"editTitle": "Modifier un client",
"fields": {
"description": "Description",
"icon": "Icône",
"name": "Nom",
"outputFormat": "Format de sortie",
"proxyTemplate": "Lien d'abonnement",
"template": "Modèle de configuration"
},
"tabs": {
"basic": "Informations de base",
"download": "Téléchargements",
"template": "Modèles"
},
"validation": {
"nameRequired": "Le nom du client est requis",
"userAgentRequiredSuffix": "est requis"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Texte brut",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Écosystème vaste, règles complètes, communauté active"
"title": "Gestion des clients"
},
"egern": {
"features": "Client iOS moderne, excellente performance"
},
"hiddify": {
"features": "Multi-plateforme, protocoles complets, convivial pour les débutants"
},
"loon": {
"features": "Client avancé iOS, règles riches, interface magnifique"
},
"netch": {
"features": "Client proxy axé sur le jeu"
},
"quantumult": {
"features": "Client avancé iOS, règles flexibles, scripts riches"
},
"shadowrocket": {
"features": "Client classique iOS, configuration flexible"
},
"singbox": {
"features": "Noyau le plus récent, interface graphique officielle, support multi-plateforme"
},
"stash": {
"features": "Interface mobile moderne, protocoles complets"
},
"surfboard": {
"features": "Gratuit, développement actif, interface moderne"
},
"surge": {
"features": "Outil premium iOS/Mac, fonctionnalités puissantes"
},
"v2box": {
"features": "Client V2Ray convivial"
},
"v2rayn": {
"features": "Client Windows populaire, riche en fonctionnalités"
},
"v2rayng": {
"features": "Client Android populaire, léger"
"table": {
"columns": {
"default": "Par défaut",
"description": "Description",
"name": "Nom du client",
"outputFormat": "Format de sortie",
"supportedPlatforms": "Plateformes prises en charge"
}
}
},
"description": "Gérer les modèles de configuration d'abonnement pour les clients proxy",
"features": "Fonctionnalités clés",
"platforms": "Plateformes",
"subscribeTemplate": "Configuration du modèle d'abonnement",
"templateContent": "Contenu du modèle",
"templatePlaceholder": "Entrez le modèle de configuration du client...",
"title": "Modèles d'abonnement des clients"
},
"title": "Gestion des abonnements"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "जोड़ें",
"batchDelete": "बैच हटाएं",
"batchDeleteSuccess": "सफलता से {count} क्लाइंट हटाए गए",
"batchDeleteWarning": "क्या आप सुनिश्चित हैं कि आप चयनित {count} क्लाइंट को हटाना चाहते हैं?",
"cancel": "रद्द करें",
"confirm": "पुष्टि करें",
"confirmDelete": "हटाने की पुष्टि करें",
"createSuccess": "सफलता से बनाया गया",
"delete": "हटाएं",
"deleteFailed": "हटाना विफल",
"deleteSuccess": "सफलता से हटाया गया",
"deleteWarning": "यह क्रिया पूर्ववत नहीं की जा सकती। क्या आप सुनिश्चित हैं कि आप इस क्लाइंट को हटाना चाहते हैं?",
"edit": "संपादित करें",
"save": "सहेजें",
"saveTemplate": "टेम्पलेट सहेजें"
"saveFailed": "सहेजना विफल",
"update": "अपडेट करें",
"updateSuccess": "सफलता से अपडेट किया गया"
},
"config": {
"description": "सदस्यता प्रणाली सेटिंग्स प्रबंधित करें",
"restrictUserAgent": "यूजर-एजेंट प्रतिबंध",
"restrictUserAgentDescription": "यूजर-एजेंट के आधार पर पहुंच प्रतिबंध सक्षम करें",
"singleSubscriptionMode": "एकल सदस्यता मोड",
"singleSubscriptionModeDescription": "उपयोगकर्ताओं को एक सक्रिय सदस्यता तक सीमित करें। मौजूदा सदस्यताओं पर कोई प्रभाव नहीं",
"singleSubscriptionModeDescription": "उपयोगकर्ताओं को एक सक्रिय सदस्यता तक सीमित करें। मौजूदा सदस्यताएँ अप्रभावित रहेंगी",
"subscriptionDomain": "सदस्यता डोमेन",
"subscriptionDomainDescription": "सदस्यता लिंक के लिए कस्टम डोमेन",
"subscriptionDomainPlaceholder": "सदस्यता डोमेन दर्ज करें, एक प्रति पंक्ति",
"subscriptionPath": "सदस्यता पथ",
"subscriptionPathDescription": "सदस्यता अंत बिंदुओं के लिए कस्टम पथ (सिस्टम पुनरारंभ के बाद बेहतर प्रदर्शन)",
"subscriptionPathDescription": "सदस्यता एंडपॉइंट्स के लिए कस्टम पथ (सिस्टम पुनरारंभ के बाद बेहतर प्रदर्शन)",
"subscriptionPathPlaceholder": "सदस्यता पथ दर्ज करें",
"title": "सदस्यता कॉन्फ़िगरेशन",
"updateError": "अपडेट विफल",
"updateSuccess": "सेटिंग्स सफलतापूर्वक अपडेट की गईं",
"userAgentWhitelist": "यूजर-एजेंट श्वेतसूची",
"userAgentWhitelistDescription": "सदस्यता पहुंच के लिए अनुमत यूजर-एजेंट, प्रत्येक पंक्ति में एक। अंतर्निहित टेम्पलेट स्वचालित रूप से श्वेतसूची में शामिल होते हैं",
"userAgentWhitelistPlaceholder": "अनुमत यूजर-एजेंट दर्ज करें, प्रत्येक पंक्ति में एक",
"userAgentLimit": "{userAgent} प्रतिबंध",
"userAgentLimitDescription": "{userAgent} के आधार पर पहुंच प्रतिबंध सक्षम करें",
"userAgentList": "{userAgent} श्वेतसूची",
"userAgentListDescription": "सदस्यता पहुंच के लिए अनुमत {userAgent}, प्रत्येक पंक्ति में एक। कॉन्फ़िगर की गई एप्लिकेशन {userAgent} स्वचालित रूप से शामिल की जाएगी",
"userAgentListPlaceholder": "अनुमत {userAgent} दर्ज करें, प्रत्येक पंक्ति में एक",
"wildcardResolution": "वाइल्डकार्ड समाधान",
"wildcardResolutionDescription": "सदस्यताओं के लिए वाइल्डकार्ड डोमेन समाधान सक्षम करें"
},
"description": "सदस्यता सेटिंग्स और क्लाइंट टेम्पलेट्स कॉन्फ़िगर करें",
"messages": {
"noClients": "कोई क्लाइंट टेम्पलेट नहीं",
"noClientsDescription": "अभी तक कोई क्लाइंट टेम्पलेट कॉन्फ़िगर नहीं किया गया है। शुरू करने के लिए अपना पहला टेम्पलेट जोड़ें।"
"form": {
"addTitle": "क्लाइंट जोड़ें",
"descriptions": {
"description": "विस्तृत क्लाइंट विवरण",
"downloadLink": "प्लेटफ़ॉर्म डाउनलोड URL",
"icon": "आइकन URL या बेस64 एन्कोडिंग",
"name": "क्लाइंट प्रदर्शन नाम",
"outputFormat": "सदस्यता कॉन्फ़िगरेशन फ़ाइल प्रारूप",
"proxyTemplate": "सदस्यता लिंक टेम्पलेट, वेरिएबल का समर्थन करता है: ",
"template": "सदस्यता कॉन्फ़िगरेशन टेम्पलेट, विभिन्न वेरिएबल का समर्थन करता है",
"userAgentPrefix": "विभिन्न क्लाइंट्स को अलग करने के लिए क्लाइंट पहचानकर्ता"
},
"editTitle": "क्लाइंट संपादित करें",
"fields": {
"description": "विवरण",
"icon": "आइकन",
"name": "नाम",
"outputFormat": "आउटपुट प्रारूप",
"proxyTemplate": "सदस्यता लिंक",
"template": "कॉन्फ़िग टेम्पलेट"
},
"tabs": {
"basic": "बुनियादी जानकारी",
"download": "डाउनलोड",
"template": "टेम्पलेट"
},
"validation": {
"nameRequired": "क्लाइंट नाम आवश्यक है",
"userAgentRequiredSuffix": "आवश्यक है"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "सादा पाठ",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "बड़ा पारिस्थितिकी तंत्र, व्यापक नियम, सक्रिय समुदाय"
"title": "क्लाइंट प्रबंधन"
},
"egern": {
"features": "आधुनिक iOS क्लाइंट, उत्कृष्ट प्रदर्शन"
},
"hiddify": {
"features": "बहु-प्लेटफ़ॉर्म, व्यापक प्रोटोकॉल, शुरुआती के लिए अनुकूल"
},
"loon": {
"features": "iOS उन्नत क्लाइंट, समृद्ध नियम, सुंदर इंटरफ़ेस"
},
"netch": {
"features": "गेमिंग-केंद्रित प्रॉक्सी क्लाइंट"
},
"quantumult": {
"features": "iOS उन्नत क्लाइंट, लचीले नियम, समृद्ध स्क्रिप्ट"
},
"shadowrocket": {
"features": "क्लासिक iOS क्लाइंट, लचीली कॉन्फ़िगरेशन"
},
"singbox": {
"features": "नवीनतम कर्नेल, आधिकारिक GUI, बहु-प्लेटफ़ॉर्म समर्थन"
},
"stash": {
"features": "आधुनिक मोबाइल UI, व्यापक प्रोटोकॉल"
},
"surfboard": {
"features": "मुफ्त, सक्रिय विकास, आधुनिक इंटरफ़ेस"
},
"surge": {
"features": "प्रीमियम iOS/Mac उपकरण, शक्तिशाली विशेषताएँ"
},
"v2box": {
"features": "उपयोगकर्ता-अनुकूल V2Ray क्लाइंट"
},
"v2rayn": {
"features": "लोकप्रिय Windows क्लाइंट, विशेषताओं से भरपूर"
},
"v2rayng": {
"features": "लोकप्रिय Android क्लाइंट, हल्का"
"table": {
"columns": {
"default": "डिफ़ॉल्ट",
"description": "विवरण",
"name": "क्लाइंट नाम",
"outputFormat": "आउटपुट प्रारूप",
"supportedPlatforms": "समर्थित प्लेटफ़ॉर्म"
}
}
},
"description": "प्रॉक्सी क्लाइंट्स के लिए सदस्यता कॉन्फ़िगरेशन टेम्पलेट्स प्रबंधित करें",
"features": "मुख्य विशेषताएँ",
"platforms": "प्लेटफ़ॉर्म",
"subscribeTemplate": "सदस्यता टेम्पलेट कॉन्फ़िगरेशन",
"templateContent": "टेम्पलेट सामग्री",
"templatePlaceholder": "क्लाइंट कॉन्फ़िगरेशन टेम्पलेट दर्ज करें...",
"title": "क्लाइंट सदस्यता टेम्पलेट्स"
},
"title": "सदस्यता प्रबंधन"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Hozzáadás",
"batchDelete": "Tömeges törlés",
"batchDeleteSuccess": "Sikeresen törölt {count} ügyfelet",
"batchDeleteWarning": "Biztosan törölni szeretné a kiválasztott {count} ügyfelet?",
"cancel": "Mégse",
"confirm": "Megerősít",
"confirmDelete": "Törlés megerősítése",
"createSuccess": "Sikeresen létrehozva",
"delete": "Törlés",
"deleteFailed": "Törlés sikertelen",
"deleteSuccess": "Sikeresen törölve",
"deleteWarning": "Ez a művelet nem vonható vissza. Biztosan törölni szeretné ezt az ügyfelet?",
"edit": "Szerkesztés",
"save": "Mentés",
"saveTemplate": "Sablon mentése"
"saveFailed": "Mentés sikertelen",
"update": "Frissítés",
"updateSuccess": "Sikeresen frissítve"
},
"config": {
"description": "Az előfizetési rendszer beállításainak kezelése",
"restrictUserAgent": "Felhasználói ügynök korlátozás",
"restrictUserAgentDescription": "Hozzáférési korlátozások engedélyezése a felhasználói ügynök alapján",
"description": "Előfizetési rendszer beállításainak kezelése",
"singleSubscriptionMode": "Egyszeri Előfizetési Mód",
"singleSubscriptionModeDescription": "A felhasználókat egy aktív előfizetésre korlátozza. A meglévő előfizetések nincsenek hatással",
"singleSubscriptionModeDescription": "Korlátozza a felhasználókat egy aktív előfizetésre. A meglévő előfizetések nem érintettek",
"subscriptionDomain": "Előfizetési Domain",
"subscriptionDomainDescription": "Egyedi domain az előfizetési linkekhez",
"subscriptionDomainPlaceholder": "Írja be az előfizetési domaint, soronként egyet",
"subscriptionDomainPlaceholder": "Adja meg az előfizetési domaint, soronként egyet",
"subscriptionPath": "Előfizetési Útvonal",
"subscriptionPathDescription": "Egyedi útvonal az előfizetési végpontokhoz (jobb teljesítmény a rendszer újraindítása után)",
"subscriptionPathPlaceholder": "Írja be az előfizetési útvonalat",
"subscriptionPathPlaceholder": "Adja meg az előfizetési útvonalat",
"title": "Előfizetés Beállítások",
"updateError": "A frissítés meghiúsult",
"updateSuccess": "A beállítások sikeresen frissítve",
"userAgentWhitelist": "Felhasználói ügynök fehérlista",
"userAgentWhitelistDescription": "Engedélyezett felhasználói ügynökök az előfizetési hozzáféréshez, soronként egy. A beépített sablonok automatikusan bekerülnek a fehérlistába",
"userAgentWhitelistPlaceholder": "Írja be az engedélyezett felhasználói ügynököket, soronként egy",
"updateError": "Frissítés sikertelen",
"updateSuccess": "Beállítások sikeresen frissítve",
"userAgentLimit": "{userAgent} Korlátozás",
"userAgentLimitDescription": "Engedélyezze a hozzáférési korlátozásokat a(z) {userAgent} alapján",
"userAgentList": "{userAgent} Fehér lista",
"userAgentListDescription": "Engedélyezett {userAgent} az előfizetési hozzáféréshez, soronként egy. A konfigurált alkalmazás {userAgent} automatikusan belekerül",
"userAgentListPlaceholder": "Adja meg az engedélyezett {userAgent}-t, soronként egy",
"wildcardResolution": "Wildcard Feloldás",
"wildcardResolutionDescription": "Engedélyezze a wildcard domain feloldást az előfizetésekhez"
},
"description": "Előfizetési beállítások és kliens sablonok konfigurálása",
"messages": {
"noClients": "Nincs Kliens Sablon",
"noClientsDescription": "Még nincs konfigurálva kliens sablon. Adja hozzá az első sablont a kezdéshez."
"form": {
"addTitle": "Ügyfél Hozzáadása",
"descriptions": {
"description": "Részletes ügyfél leírás",
"downloadLink": "platform letöltési URL",
"icon": "Ikon URL vagy base64 kódolás",
"name": "Ügyfél megjelenítési neve",
"outputFormat": "Előfizetési konfigurációs fájl formátum",
"proxyTemplate": "Előfizetési link sablon, támogatja a változókat: ",
"template": "Előfizetési konfigurációs sablon, támogatja a különböző változókat",
"userAgentPrefix": "Kliens azonosító a különböző kliensek megkülönböztetésére."
},
"editTitle": "Ügyfél Szerkesztése",
"fields": {
"description": "Leírás",
"icon": "Ikon",
"name": "Név",
"outputFormat": "Kimeneti Formátum",
"proxyTemplate": "Előfizetési Link",
"template": "Beállítási Sablon"
},
"tabs": {
"basic": "Alap Információk",
"download": "Letöltések",
"template": "Sablonok"
},
"validation": {
"nameRequired": "Az ügyfél neve kötelező",
"userAgentRequiredSuffix": "kötelező"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Egyszerű Szöveg",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Nagy ökoszisztéma, átfogó szabályok, aktív közösség"
"title": "Klienskezelés"
},
"egern": {
"features": "Modern iOS kliens, kiváló teljesítmény"
},
"hiddify": {
"features": "Többplatformos, átfogó protokollok, kezdőbarát"
},
"loon": {
"features": "iOS fejlett kliens, gazdag szabályok, szép felület"
},
"netch": {
"features": "Játékra fókuszáló proxy kliens"
},
"quantumult": {
"features": "iOS fejlett kliens, rugalmas szabályok, gazdag szkriptek"
},
"shadowrocket": {
"features": "Klasszikus iOS kliens, rugalmas konfiguráció"
},
"singbox": {
"features": "Legújabb kernel, hivatalos GUI, többplatformos támogatás"
},
"stash": {
"features": "Modern mobil UI, átfogó protokollok"
},
"surfboard": {
"features": "Ingyenes, aktív fejlesztés, modern felület"
},
"surge": {
"features": "Prémium iOS/Mac eszköz, erőteljes funkciók"
},
"v2box": {
"features": "Felhasználóbarát V2Ray kliens"
},
"v2rayn": {
"features": "Népszerű Windows kliens, funkciógazdag"
},
"v2rayng": {
"features": "Népszerű Android kliens, könnyű súlyú"
"table": {
"columns": {
"default": "Alapértelmezett",
"description": "Leírás",
"name": "Ügyfél Neve",
"outputFormat": "Kimeneti Formátum",
"supportedPlatforms": "Támogatott Platformok"
}
}
},
"description": "Az előfizetési konfigurációs sablonok kezelése proxy kliensek számára",
"features": "Főbb Jellemzők",
"platforms": "Platformok",
"subscribeTemplate": "Előfizetési Sablon Beállítása",
"templateContent": "Sablon Tartalom",
"templatePlaceholder": "Írja be a kliens konfigurációs sablont...",
"title": "Kliens Előfizetési Sablonok"
},
"title": "Előfizetés Kezelés"
}

View File

@ -1,16 +1,26 @@
{
"actions": {
"add": "追加",
"batchDelete": "一括削除",
"batchDeleteSuccess": "{count} 件のクライアントを正常に削除しました",
"batchDeleteWarning": "選択した {count} 件のクライアントを削除してもよろしいですか?",
"cancel": "キャンセル",
"confirm": "確認",
"confirmDelete": "削除を確認",
"createSuccess": "正常に作成されました",
"delete": "削除",
"deleteFailed": "削除に失敗しました",
"deleteSuccess": "正常に削除されました",
"deleteWarning": "この操作は元に戻せません。本当にこのクライアントを削除してもよろしいですか?",
"edit": "編集",
"save": "保存",
"saveTemplate": "テンプレートを保存"
"saveFailed": "保存に失敗しました",
"update": "更新",
"updateSuccess": "正常に更新されました"
},
"config": {
"description": "サブスクリプションシステムの設定を管理",
"restrictUserAgent": "ユーザーエージェント制限",
"restrictUserAgentDescription": "ユーザーエージェントに基づくアクセス制限を有効にします",
"singleSubscriptionMode": "単一サブスクリプションモード",
"description": "サブスクリプションシステムの設定を管理します",
"singleSubscriptionMode": "シングルサブスクリプションモード",
"singleSubscriptionModeDescription": "ユーザーを1つのアクティブなサブスクリプションに制限します。既存のサブスクリプションには影響しません",
"subscriptionDomain": "サブスクリプションドメイン",
"subscriptionDomainDescription": "サブスクリプションリンク用のカスタムドメイン",
@ -21,69 +31,69 @@
"title": "サブスクリプション設定",
"updateError": "更新に失敗しました",
"updateSuccess": "設定が正常に更新されました",
"userAgentWhitelist": "ユーザーエージェントホワイトリスト",
"userAgentWhitelistDescription": "サブスクリプションアクセスのために許可されたユーザーエージェント。1行につき1つ。組み込みテンプレートは自動的にホワイトリストに含まれます",
"userAgentWhitelistPlaceholder": "許可されたユーザーエージェントを入力してください。1行につき1つ",
"userAgentLimit": "{userAgent} 制限",
"userAgentLimitDescription": "{userAgent} に基づくアクセス制限を有効にする",
"userAgentList": "{userAgent} ホワイトリスト",
"userAgentListDescription": "サブスクリプションアクセスのために許可された {userAgent}、1行ごとに1つ。設定されたアプリケーションの {userAgent} は自動的に含まれます",
"userAgentListPlaceholder": "許可された {userAgent} を入力してください、1行ごとに",
"wildcardResolution": "ワイルドカード解決",
"wildcardResolutionDescription": "サブスクリプション用のワイルドカードドメイン解決を有効にする"
"wildcardResolutionDescription": "サブスクリプション用のワイルドカードドメイン解決を有効にします"
},
"description": "サブスクリプション設定とクライアントテンプレートを構成",
"messages": {
"noClients": "クライアントテンプレートがありません",
"noClientsDescription": "まだクライアントテンプレートが設定されていません。最初のテンプレートを追加して始めましょう。"
"form": {
"addTitle": "クライアントを追加",
"descriptions": {
"description": "詳細なクライアント説明",
"downloadLink": "プラットフォームダウンロードURL",
"icon": "アイコンのURLまたはbase64エンコーディング",
"name": "クライアントの表示名",
"outputFormat": "サブスクリプション設定ファイル形式",
"proxyTemplate": "サブスクリプションリンクテンプレート、変数をサポートします:",
"template": "サブスクリプション設定テンプレート、さまざまな変数をサポートします",
"userAgentPrefix": "異なるクライアントを区別するためのクライアント識別子"
},
"editTitle": "クライアントを編集",
"fields": {
"description": "説明",
"icon": "アイコン",
"name": "名前",
"outputFormat": "出力形式",
"proxyTemplate": "サブスクリプションリンク",
"template": "設定テンプレート"
},
"tabs": {
"basic": "基本情報",
"download": "ダウンロード",
"template": "テンプレート"
},
"validation": {
"nameRequired": "クライアント名は必須です",
"userAgentRequiredSuffix": "は必須です"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "プレーンテキスト",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "大規模なエコシステム、包括的なルール、活発なコミュニティ"
"title": "クライアント管理"
},
"egern": {
"features": "モダンなiOSクライアント、優れたパフォーマンス"
},
"hiddify": {
"features": "マルチプラットフォーム、包括的なプロトコル、初心者に優しい"
},
"loon": {
"features": "iOSの高度なクライアント、豊富なルール、美しいインターフェース"
},
"netch": {
"features": "ゲーム向けプロキシクライアント"
},
"quantumult": {
"features": "iOSの高度なクライアント、柔軟なルール、豊富なスクリプト"
},
"shadowrocket": {
"features": "クラシックなiOSクライアント、柔軟な設定"
},
"singbox": {
"features": "最新のカーネル、公式GUI、マルチプラットフォームサポート"
},
"stash": {
"features": "モダンなモバイルUI、包括的なプロトコル"
},
"surfboard": {
"features": "無料、アクティブな開発、モダンなインターフェース"
},
"surge": {
"features": "プレミアムiOS/Macツール、強力な機能"
},
"v2box": {
"features": "ユーザーフレンドリーなV2Rayクライアント"
},
"v2rayn": {
"features": "人気のWindowsクライアント、機能豊富"
},
"v2rayng": {
"features": "人気のAndroidクライアント、軽量"
"table": {
"columns": {
"default": "デフォルト",
"description": "説明",
"name": "クライアント名",
"outputFormat": "出力形式",
"supportedPlatforms": "サポートされているプラットフォーム"
}
}
},
"description": "プロキシクライアントのサブスクリプション設定テンプレートを管理",
"features": "主な機能",
"platforms": "プラットフォーム",
"subscribeTemplate": "サブスクリプションテンプレート設定",
"templateContent": "テンプレート内容",
"templatePlaceholder": "クライアント設定テンプレートを入力してください...",
"title": "クライアントサブスクリプションテンプレート"
},
"title": "サブスクリプション管理"
}

View File

@ -1,15 +1,25 @@
{
"actions": {
"add": "추가",
"batchDelete": "일괄 삭제",
"batchDeleteSuccess": "{count}명의 클라이언트를 성공적으로 삭제했습니다",
"batchDeleteWarning": "선택한 {count}명의 클라이언트를 삭제하시겠습니까?",
"cancel": "취소",
"confirm": "확인",
"confirmDelete": "삭제 확인",
"createSuccess": "성공적으로 생성되었습니다",
"delete": "삭제",
"deleteFailed": "삭제 실패",
"deleteSuccess": "성공적으로 삭제되었습니다",
"deleteWarning": "이 작업은 취소할 수 없습니다. 이 클라이언트를 삭제하시겠습니까?",
"edit": "편집",
"save": "저장",
"saveTemplate": "템플릿 저장"
"saveFailed": "저장 실패",
"update": "업데이트",
"updateSuccess": "성공적으로 업데이트되었습니다"
},
"config": {
"description": "구독 시스템 설정 관리",
"restrictUserAgent": "사용자 에이전트 제한",
"restrictUserAgentDescription": "사용자 에이전트를 기반으로 한 접근 제한 활성화",
"singleSubscriptionMode": "단일 구독 모드",
"singleSubscriptionModeDescription": "사용자를 하나의 활성 구독으로 제한합니다. 기존 구독에는 영향을 미치지 않습니다",
"subscriptionDomain": "구독 도메인",
@ -21,69 +31,69 @@
"title": "구독 설정",
"updateError": "업데이트 실패",
"updateSuccess": "설정이 성공적으로 업데이트되었습니다",
"userAgentWhitelist": "사용자 에이전트 허용 목록",
"userAgentWhitelistDescription": "구독 접근을 위한 허용된 사용자 에이전트, 한 줄에 하나씩 입력합니다. 내장 템플릿은 자동으로 허용 목록에 포함됩니다",
"userAgentWhitelistPlaceholder": "허용된 사용자 에이전트를 입력하세요, 한 줄에 하나씩",
"userAgentLimit": "{userAgent} 제한",
"userAgentLimitDescription": "{userAgent} 기반의 접근 제한 활성화",
"userAgentList": "{userAgent} 허용 목록",
"userAgentListDescription": "구독 접근을 위한 허용된 {userAgent}, 한 줄에 하나씩 입력. 구성된 애플리케이션 {userAgent}는 자동으로 포함됩니다.",
"userAgentListPlaceholder": "허용된 {userAgent}를 입력하세요, 한 줄에 하나씩",
"wildcardResolution": "와일드카드 해상도",
"wildcardResolutionDescription": "구독을 위한 와일드카드 도메인 해상도 활성화"
"wildcardResolutionDescription": "구독을 위한 와일드카드 도메인 해상도 활성화합니다"
},
"description": "구독 설정 및 클라이언트 템플릿 구성",
"messages": {
"noClients": "클라이언트 템플릿 없음",
"noClientsDescription": "아직 구성된 클라이언트 템플릿이 없습니다. 첫 번째 템플릿을 추가하여 시작하세요."
"form": {
"addTitle": "클라이언트 추가",
"descriptions": {
"description": "상세 클라이언트 설명",
"downloadLink": "플랫폼 다운로드 URL",
"icon": "아이콘 URL 또는 base64 인코딩",
"name": "클라이언트 표시 이름",
"outputFormat": "구독 구성 파일 형식",
"proxyTemplate": "구독 링크 템플릿, 변수 지원: ",
"template": "구독 구성 템플릿, 다양한 변수 지원",
"userAgentPrefix": "다양한 클라이언트를 구별하기 위한 클라이언트 식별자"
},
"editTitle": "클라이언트 편집",
"fields": {
"description": "설명",
"icon": "아이콘",
"name": "이름",
"outputFormat": "출력 형식",
"proxyTemplate": "구독 링크",
"template": "구성 템플릿"
},
"tabs": {
"basic": "기본 정보",
"download": "다운로드",
"template": "템플릿"
},
"validation": {
"nameRequired": "클라이언트 이름은 필수입니다",
"userAgentRequiredSuffix": "는 필수입니다"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "일반 텍스트",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "대규모 생태계, 포괄적인 규칙, 활발한 커뮤니티"
"title": "클라이언트 관리"
},
"egern": {
"features": "현대적인 iOS 클라이언트, 뛰어난 성능"
},
"hiddify": {
"features": "다중 플랫폼, 포괄적인 프로토콜, 초보자 친화적"
},
"loon": {
"features": "iOS 고급 클라이언트, 풍부한 규칙, 아름다운 인터페이스"
},
"netch": {
"features": "게임 중심의 프록시 클라이언트"
},
"quantumult": {
"features": "iOS 고급 클라이언트, 유연한 규칙, 풍부한 스크립트"
},
"shadowrocket": {
"features": "클래식 iOS 클라이언트, 유연한 구성"
},
"singbox": {
"features": "최신 커널, 공식 GUI, 다중 플랫폼 지원"
},
"stash": {
"features": "현대적인 모바일 UI, 포괄적인 프로토콜"
},
"surfboard": {
"features": "무료, 활발한 개발, 현대적인 인터페이스"
},
"surge": {
"features": "프리미엄 iOS/Mac 도구, 강력한 기능"
},
"v2box": {
"features": "사용자 친화적인 V2Ray 클라이언트"
},
"v2rayn": {
"features": "인기 있는 Windows 클라이언트, 기능이 풍부함"
},
"v2rayng": {
"features": "인기 있는 Android 클라이언트, 경량"
"table": {
"columns": {
"default": "기본",
"description": "설명",
"name": "클라이언트 이름",
"outputFormat": "출력 형식",
"supportedPlatforms": "지원되는 플랫폼"
}
}
},
"description": "프록시 클라이언트를 위한 구독 구성 템플릿 관리",
"features": "주요 기능",
"platforms": "플랫폼",
"subscribeTemplate": "구독 템플릿 구성",
"templateContent": "템플릿 내용",
"templatePlaceholder": "클라이언트 구성 템플릿을 입력하세요...",
"title": "클라이언트 구독 템플릿"
},
"title": "구독 관리"
}

View File

@ -1,15 +1,25 @@
{
"actions": {
"add": "Legg til",
"batchDelete": "Batch Slett",
"batchDeleteSuccess": "Slettet {count} klienter med suksess",
"batchDeleteWarning": "Er du sikker på at du vil slette de valgte {count} klientene?",
"cancel": "Avbryt",
"confirm": "Bekreft",
"confirmDelete": "Bekreft sletting",
"createSuccess": "Opprettet med suksess",
"delete": "Slett",
"deleteFailed": "Sletting feilet",
"deleteSuccess": "Slettet med suksess",
"deleteWarning": "Denne operasjonen kan ikke angres. Er du sikker på at du vil slette denne klienten?",
"edit": "Rediger",
"save": "Lagre",
"saveTemplate": "Lagre Mal"
"saveFailed": "Lagring feilet",
"update": "Oppdater",
"updateSuccess": "Oppdatert med suksess"
},
"config": {
"description": "Administrer innstillinger for abonnementsystemet",
"restrictUserAgent": "Bruker-Agent Restriksjon",
"restrictUserAgentDescription": "Aktiver tilgangsrestriksjoner basert på Bruker-Agent",
"singleSubscriptionMode": "Enkelt Abonnementsmodus",
"singleSubscriptionModeDescription": "Begrens brukere til ett aktivt abonnement. Eksisterende abonnementer påvirkes ikke",
"subscriptionDomain": "Abonnementsdomene",
@ -20,70 +30,70 @@
"subscriptionPathPlaceholder": "Skriv inn abonnementsbane",
"title": "Abonnementsinnstillinger",
"updateError": "Oppdatering feilet",
"updateSuccess": "Innstillinger oppdatert",
"userAgentWhitelist": "Bruker-Agent Hviteliste",
"userAgentWhitelistDescription": "Tillatte Bruker-Agenter for abonnementstilgang, én per linje. Innebygde maler inkluderes automatisk i hvitelisten",
"userAgentWhitelistPlaceholder": "Skriv inn tillatte Bruker-Agenter, én per linje",
"wildcardResolution": "Wildcard-oppløsning",
"wildcardResolutionDescription": "Aktiver wildcard-domeneoppløsning for abonnementer"
"updateSuccess": "Innstillinger oppdatert med suksess",
"userAgentLimit": "{userAgent} Begrensning",
"userAgentLimitDescription": "Aktiver tilgangsbegrensninger basert på {userAgent}",
"userAgentList": "{userAgent} Hvitliste",
"userAgentListDescription": "Tillatte {userAgent} for abonnementsadgang, én per linje. Konfigurert applikasjon {userAgent} vil bli automatisk inkludert",
"userAgentListPlaceholder": "Skriv inn tillatte {userAgent}, én per linje",
"wildcardResolution": "Wildcard Oppløsning",
"wildcardResolutionDescription": "Aktiver wildcard domeneoppløsning for abonnementer"
},
"description": "Konfigurer abonnementsinnstillinger og klientmaler",
"messages": {
"noClients": "Ingen Klientmaler",
"noClientsDescription": "Ingen klientmaler er konfigurert ennå. Legg til din første mal for å komme i gang."
"form": {
"addTitle": "Legg til Klient",
"descriptions": {
"description": "Detaljert klientbeskrivelse",
"downloadLink": "Plattform nedlastings-URL",
"icon": "Ikon-URL eller base64-koding",
"name": "Klientens visningsnavn",
"outputFormat": "Format for abonnements konfigurasjonsfil",
"proxyTemplate": "Mal for abonnementslenke, støtter variabler: ",
"template": "Abonnements konfigurasjonsmal, støtter ulike variabler",
"userAgentPrefix": "Klientidentifikator for å skille mellom forskjellige klienter"
},
"editTitle": "Rediger Klient",
"fields": {
"description": "Beskrivelse",
"icon": "Ikon",
"name": "Navn",
"outputFormat": "Utdataformat",
"proxyTemplate": "Abonnementslenke",
"template": "Konfigurasjonsmal"
},
"tabs": {
"basic": "Grunnleggende Info",
"download": "Nedlastinger",
"template": "Maler"
},
"validation": {
"nameRequired": "Klientnavn er påkrevd",
"userAgentRequiredSuffix": "er påkrevd"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Ren Tekst",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Stort økosystem, omfattende regler, aktivt fellesskap"
"title": "Klientadministrasjon"
},
"egern": {
"features": "Moderne iOS-klient, utmerket ytelse"
},
"hiddify": {
"features": "Flere plattformer, omfattende protokoller, nybegynnervennlig"
},
"loon": {
"features": "Avansert iOS-klient, rike regler, vakkert grensesnitt"
},
"netch": {
"features": "Spillfokusert proxy-klient"
},
"quantumult": {
"features": "Avansert iOS-klient, fleksible regler, rike skript"
},
"shadowrocket": {
"features": "Klassisk iOS-klient, fleksibel konfigurasjon"
},
"singbox": {
"features": "Nyeste kjerne, offisiell GUI, støtte for flere plattformer"
},
"stash": {
"features": "Moderne mobilgrensesnitt, omfattende protokoller"
},
"surfboard": {
"features": "Gratis, aktiv utvikling, moderne grensesnitt"
},
"surge": {
"features": "Premium iOS/Mac-verktøy, kraftige funksjoner"
},
"v2box": {
"features": "Brukervennlig V2Ray-klient"
},
"v2rayn": {
"features": "Populær Windows-klient, funksjonsrik"
},
"v2rayng": {
"features": "Populær Android-klient, lettvekts"
"table": {
"columns": {
"default": "Standard",
"description": "Beskrivelse",
"name": "Klientnavn",
"outputFormat": "Utdataformat",
"supportedPlatforms": "Støttede Plattformer"
}
}
},
"description": "Administrer abonnementsmaler for proxy-klienter",
"features": "Nøkkelfunksjoner",
"platforms": "Plattformer",
"subscribeTemplate": "Abonnementsmal Konfigurasjon",
"templateContent": "Malinnhold",
"templatePlaceholder": "Skriv inn klientkonfigurasjonsmal...",
"title": "Klient Abonnementsmaler"
},
"title": "Abonnementsadministrasjon"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Dodaj",
"batchDelete": "Usunięcie zbiorcze",
"batchDeleteSuccess": "Pomyślnie usunięto {count} klientów",
"batchDeleteWarning": "Czy na pewno chcesz usunąć wybranych {count} klientów?",
"cancel": "Anuluj",
"confirm": "Potwierdź",
"confirmDelete": "Potwierdź usunięcie",
"createSuccess": "Utworzono pomyślnie",
"delete": "Usuń",
"deleteFailed": "Usunięcie nie powiodło się",
"deleteSuccess": "Pomyślnie usunięto",
"deleteWarning": "Ta operacja nie może być cofnięta. Czy na pewno chcesz usunąć tego klienta?",
"edit": "Edytuj",
"save": "Zapisz",
"saveTemplate": "Zapisz Szablon"
"saveFailed": "Zapis nie powiódł się",
"update": "Aktualizuj",
"updateSuccess": "Pomyślnie zaktualizowano"
},
"config": {
"description": "Zarządzaj ustawieniami systemu subskrypcyjnego",
"restrictUserAgent": "Ograniczenie User-Agent",
"restrictUserAgentDescription": "Włącz ograniczenia dostępu na podstawie User-Agent",
"singleSubscriptionMode": "Tryb Pojedynczej Subskrypcji",
"singleSubscriptionModeDescription": "Przekształć wszystkie subskrypcje użytkowników w saldo konta",
"subscriptionDomain": "Domena Subskrypcyjna",
"singleSubscriptionMode": "Tryb pojedynczej subskrypcji",
"singleSubscriptionModeDescription": "Ogranicz użytkowników do jednej aktywnej subskrypcji. Istniejące subskrypcje pozostają bez zmian",
"subscriptionDomain": "Domena subskrypcyjna",
"subscriptionDomainDescription": "Niestandardowa domena dla linków subskrypcyjnych",
"subscriptionDomainPlaceholder": "Wprowadź domenę subskrypcyjną, jedna na linię",
"subscriptionPath": "Ścieżka Subskrypcyjna",
"subscriptionPath": "Ścieżka subskrypcyjna",
"subscriptionPathDescription": "Niestandardowa ścieżka dla punktów końcowych subskrypcji (lepsza wydajność po restarcie systemu)",
"subscriptionPathPlaceholder": "Wprowadź ścieżkę subskrypcyjną",
"title": "Konfiguracja Subskrypcji",
"title": "Konfiguracja subskrypcji",
"updateError": "Aktualizacja nie powiodła się",
"updateSuccess": "Ustawienia zaktualizowane pomyślnie",
"userAgentWhitelist": "Biała lista User-Agent",
"userAgentWhitelistDescription": "Dozwolone User-Agents do dostępu subskrypcyjnego, jeden na linię. Wbudowane szablony są automatycznie dodawane do białej listy",
"userAgentWhitelistPlaceholder": "Wprowadź dozwolone User-Agents, jeden na linię",
"wildcardResolution": "Rozwiązywanie Dzikich Znaków",
"wildcardResolutionDescription": "Włącz rozwiązywanie dzikich znaków dla subskrypcji"
"userAgentLimit": "Ograniczenie {userAgent}",
"userAgentLimitDescription": "Włącz ograniczenia dostępu na podstawie {userAgent}",
"userAgentList": "Biała lista {userAgent}",
"userAgentListDescription": "Dozwolone {userAgent} do dostępu subskrypcyjnego, jeden na linię. Skonfigurowana aplikacja {userAgent} zostanie automatycznie uwzględniona",
"userAgentListPlaceholder": "Wprowadź dozwolone {userAgent}, jeden na linię",
"wildcardResolution": "Rozwiązywanie symboli wieloznacznych",
"wildcardResolutionDescription": "Włącz rozwiązywanie domen wieloznacznych dla subskrypcji"
},
"description": "Skonfiguruj ustawienia subskrypcji i szablony klientów",
"messages": {
"noClients": "Brak Szablonów Klientów",
"noClientsDescription": "Brak skonfigurowanych szablonów klientów. Dodaj swój pierwszy szablon, aby rozpocząć."
"form": {
"addTitle": "Dodaj klienta",
"descriptions": {
"description": "Szczegółowy opis klienta",
"downloadLink": "URL pobierania platformy",
"icon": "URL ikony lub kodowanie base64",
"name": "Nazwa wyświetlana klienta",
"outputFormat": "Format pliku konfiguracyjnego subskrypcji",
"proxyTemplate": "Szablon linku subskrypcyjnego, obsługuje zmienne: ",
"template": "Szablon konfiguracji subskrypcji, obsługuje różne zmienne",
"userAgentPrefix": "Identyfikator klienta do rozróżniania różnych klientów"
},
"editTitle": "Edytuj klienta",
"fields": {
"description": "Opis",
"icon": "Ikona",
"name": "Nazwa",
"outputFormat": "Format wyjściowy",
"proxyTemplate": "Link subskrypcyjny",
"template": "Szablon konfiguracji"
},
"tabs": {
"basic": "Podstawowe informacje",
"download": "Pobierania",
"template": "Szablony"
},
"validation": {
"nameRequired": "Nazwa klienta jest wymagana",
"userAgentRequiredSuffix": "jest wymagany"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Zwykły tekst",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Duży ekosystem, kompleksowe zasady, aktywna społeczność"
"title": "Zarządzanie klientami"
},
"egern": {
"features": "Nowoczesny klient iOS, doskonała wydajność"
},
"hiddify": {
"features": "Wieloplatformowy, kompleksowe protokoły, przyjazny dla początkujących"
},
"loon": {
"features": "Zaawansowany klient iOS, bogate zasady, piękny interfejs"
},
"netch": {
"features": "Klient proxy skoncentrowany na grach"
},
"quantumult": {
"features": "Zaawansowany klient iOS, elastyczne zasady, bogate skrypty"
},
"shadowrocket": {
"features": "Klasyczny klient iOS, elastyczna konfiguracja"
},
"singbox": {
"features": "Najnowsze jądro, oficjalny interfejs GUI, wsparcie dla wielu platform"
},
"stash": {
"features": "Nowoczesny interfejs mobilny, kompleksowe protokoły"
},
"surfboard": {
"features": "Darmowy, aktywny rozwój, nowoczesny interfejs"
},
"surge": {
"features": "Premium narzędzie iOS/Mac, potężne funkcje"
},
"v2box": {
"features": "Przyjazny dla użytkownika klient V2Ray"
},
"v2rayn": {
"features": "Popularny klient Windows, bogaty w funkcje"
},
"v2rayng": {
"features": "Popularny klient Android, lekki"
"table": {
"columns": {
"default": "Domyślny",
"description": "Opis",
"name": "Nazwa klienta",
"outputFormat": "Format wyjściowy",
"supportedPlatforms": "Obsługiwane platformy"
}
}
},
"description": "Zarządzaj szablonami konfiguracji subskrypcji dla klientów proxy",
"features": "Kluczowe Funkcje",
"platforms": "Platformy",
"subscribeTemplate": "Konfiguracja Szablonu Subskrypcji",
"templateContent": "Zawartość Szablonu",
"templatePlaceholder": "Wprowadź szablon konfiguracji klienta...",
"title": "Szablony Subskrypcji Klientów"
},
"title": "Zarządzanie Subskrypcjami"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Adicionar",
"batchDelete": "Excluir em Lote",
"batchDeleteSuccess": "Clientes excluídos com sucesso: {count}",
"batchDeleteWarning": "Você tem certeza de que deseja excluir os {count} clientes selecionados?",
"cancel": "Cancelar",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Exclusão",
"createSuccess": "Criado com sucesso",
"delete": "Excluir",
"deleteFailed": "Falha ao excluir",
"deleteSuccess": "Excluído com sucesso",
"deleteWarning": "Esta operação não pode ser desfeita. Você tem certeza de que deseja excluir este cliente?",
"edit": "Editar",
"save": "Salvar",
"saveTemplate": "Salvar Modelo"
"saveFailed": "Falha ao salvar",
"update": "Atualizar",
"updateSuccess": "Atualizado com sucesso"
},
"config": {
"description": "Gerenciar configurações do sistema de assinatura",
"restrictUserAgent": "Restrição de User-Agent",
"restrictUserAgentDescription": "Ativar restrições de acesso com base no User-Agent",
"singleSubscriptionMode": "Modo de Assinatura Única",
"singleSubscriptionModeDescription": "Limitar usuários a uma assinatura ativa. Assinaturas existentes não são afetadas",
"subscriptionDomain": "Domínio de Assinatura",
"subscriptionDomain": "Domínio da Assinatura",
"subscriptionDomainDescription": "Domínio personalizado para links de assinatura",
"subscriptionDomainPlaceholder": "Digite o domínio de assinatura, um por linha",
"subscriptionPath": "Caminho de Assinatura",
"subscriptionDomainPlaceholder": "Insira o domínio da assinatura, um por linha",
"subscriptionPath": "Caminho da Assinatura",
"subscriptionPathDescription": "Caminho personalizado para endpoints de assinatura (melhor desempenho após reinício do sistema)",
"subscriptionPathPlaceholder": "Digite o caminho de assinatura",
"subscriptionPathPlaceholder": "Insira o caminho da assinatura",
"title": "Configuração de Assinatura",
"updateError": "Falha na atualização",
"updateSuccess": "Configurações atualizadas com sucesso",
"userAgentWhitelist": "Lista Branca de User-Agent",
"userAgentWhitelistDescription": "User-Agents permitidos para acesso à assinatura, um por linha. Modelos embutidos são automaticamente incluídos na lista branca",
"userAgentWhitelistPlaceholder": "Insira os User-Agents permitidos, um por linha",
"wildcardResolution": "Resolução de Curinga",
"wildcardResolutionDescription": "Ativar resolução de domínio curinga para assinaturas"
"userAgentLimit": "Limitação de {userAgent}",
"userAgentLimitDescription": "Ativar restrições de acesso com base em {userAgent}",
"userAgentList": "Lista de {userAgent} Permitidos",
"userAgentListDescription": "{userAgent} permitidos para acesso à assinatura, um por linha. O {userAgent} do aplicativo configurado será incluído automaticamente",
"userAgentListPlaceholder": "Digite {userAgent} permitidos, um por linha",
"wildcardResolution": "Resolução de Coringa",
"wildcardResolutionDescription": "Habilitar resolução de domínio coringa para assinaturas"
},
"description": "Configurar configurações de assinatura e modelos de cliente",
"messages": {
"noClients": "Sem Modelos de Cliente",
"noClientsDescription": "Nenhum modelo de cliente configurado ainda. Adicione seu primeiro modelo para começar."
"form": {
"addTitle": "Adicionar Cliente",
"descriptions": {
"description": "Descrição detalhada do cliente",
"downloadLink": "URL de download da plataforma",
"icon": "URL do ícone ou codificação base64",
"name": "Nome de exibição do cliente",
"outputFormat": "Formato do arquivo de configuração da assinatura",
"proxyTemplate": "Modelo de link de assinatura, suporta variáveis: ",
"template": "Modelo de configuração de assinatura, suporta várias variáveis",
"userAgentPrefix": "Identificador do cliente para distinguir diferentes clientes"
},
"editTitle": "Editar Cliente",
"fields": {
"description": "Descrição",
"icon": "Ícone",
"name": "Nome",
"outputFormat": "Formato de Saída",
"proxyTemplate": "Link de Assinatura",
"template": "Modelo de Configuração"
},
"tabs": {
"basic": "Informações Básicas",
"download": "Downloads",
"template": "Modelos"
},
"validation": {
"nameRequired": "O nome do cliente é obrigatório",
"userAgentRequiredSuffix": "é obrigatório"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Texto Simples",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Grande ecossistema, regras abrangentes, comunidade ativa"
"title": "Gerenciamento de Clientes"
},
"egern": {
"features": "Cliente moderno para iOS, excelente desempenho"
},
"hiddify": {
"features": "Multiplataforma, protocolos abrangentes, amigável para iniciantes"
},
"loon": {
"features": "Cliente avançado para iOS, regras ricas, interface bonita"
},
"netch": {
"features": "Cliente proxy focado em jogos"
},
"quantumult": {
"features": "Cliente avançado para iOS, regras flexíveis, scripts ricos"
},
"shadowrocket": {
"features": "Cliente clássico para iOS, configuração flexível"
},
"singbox": {
"features": "Kernel mais recente, GUI oficial, suporte multiplataforma"
},
"stash": {
"features": "Interface móvel moderna, protocolos abrangentes"
},
"surfboard": {
"features": "Gratuito, desenvolvimento ativo, interface moderna"
},
"surge": {
"features": "Ferramenta premium para iOS/Mac, recursos poderosos"
},
"v2box": {
"features": "Cliente V2Ray amigável ao usuário"
},
"v2rayn": {
"features": "Cliente popular para Windows, rico em recursos"
},
"v2rayng": {
"features": "Cliente popular para Android, leve"
"table": {
"columns": {
"default": "Padrão",
"description": "Descrição",
"name": "Nome do Cliente",
"outputFormat": "Formato de Saída",
"supportedPlatforms": "Plataformas Suportadas"
}
}
},
"description": "Gerenciar modelos de configuração de assinatura para clientes proxy",
"features": "Principais Recursos",
"platforms": "Plataformas",
"subscribeTemplate": "Configuração de Modelo de Assinatura",
"templateContent": "Conteúdo do Modelo",
"templatePlaceholder": "Digite o modelo de configuração do cliente...",
"title": "Modelos de Assinatura de Cliente"
},
"title": "Gerenciamento de Assinaturas"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Adaugă",
"batchDelete": "Ștergere în masă",
"batchDeleteSuccess": "Ștergerea a {count} clienți a fost realizată cu succes",
"batchDeleteWarning": "Ești sigur că vrei să ștergi cei {count} clienți selectați?",
"cancel": "Anulează",
"confirm": "Confirmă",
"confirmDelete": "Confirmă ștergerea",
"createSuccess": "Creat cu succes",
"delete": "Șterge",
"deleteFailed": "Ștergerea a eșuat",
"deleteSuccess": "Șters cu succes",
"deleteWarning": "Această operațiune nu poate fi anulată. Ești sigur că vrei să ștergi acest client?",
"edit": "Editează",
"save": "Salvează",
"saveTemplate": "Salvează Șablon"
"saveFailed": "Salvarea a eșuat",
"update": "Actualizează",
"updateSuccess": "Actualizat cu succes"
},
"config": {
"description": "Gestionează setările sistemului de abonamente",
"restrictUserAgent": "Restricție User-Agent",
"restrictUserAgentDescription": "Activează restricții de acces bazate pe User-Agent",
"singleSubscriptionMode": "Mod Abonament Unic",
"singleSubscriptionModeDescription": "Limitează utilizatorii la o singură subscripție activă. Subscripțiile existente nu sunt afectate",
"subscriptionDomain": "Domeniu Abonament",
"singleSubscriptionMode": "Mod de Abonament Unic",
"singleSubscriptionModeDescription": "Limitează utilizatorii la un singur abonament activ. Abonamentele existente nu sunt afectate",
"subscriptionDomain": "Domeniu de Abonament",
"subscriptionDomainDescription": "Domeniu personalizat pentru linkurile de abonament",
"subscriptionDomainPlaceholder": "Introdu domeniul de abonament, câte unul pe linie",
"subscriptionPath": "Cale Abonament",
"subscriptionPath": "Cale de Abonament",
"subscriptionPathDescription": "Cale personalizată pentru punctele finale de abonament (performanță mai bună după repornirea sistemului)",
"subscriptionPathPlaceholder": "Introdu calea de abonament",
"title": "Configurare Abonament",
"updateError": "Actualizarea a eșuat",
"updateSuccess": "Setările au fost actualizate cu succes",
"userAgentWhitelist": "Lista albă User-Agent",
"userAgentWhitelistDescription": "User-Agent-uri permise pentru accesul la subscripție, câte unul pe linie. Șabloanele încorporate sunt incluse automat în lista albă",
"userAgentWhitelistPlaceholder": "Introdu User-Agent-uri permise, câte unul pe linie",
"userAgentLimit": "Restricție {userAgent}",
"userAgentLimitDescription": "Activați restricțiile de acces bazate pe {userAgent}",
"userAgentList": "Lista albă {userAgent}",
"userAgentListDescription": "{userAgent} permise pentru accesul la abonament, câte unul pe linie. Aplicația configurată {userAgent} va fi inclusă automat",
"userAgentListPlaceholder": "Introduceți {userAgent} permise, câte unul pe linie",
"wildcardResolution": "Rezolvare Wildcard",
"wildcardResolutionDescription": "Activează rezolvarea domeniului wildcard pentru abonamente"
},
"description": "Configurează setările de abonament și șabloanele clientului",
"messages": {
"noClients": "Niciun Șablon Client",
"noClientsDescription": "Nu sunt configurate încă șabloane pentru clienți. Adaugă primul tău șablon pentru a începe."
"form": {
"addTitle": "Adaugă Client",
"descriptions": {
"description": "Descriere detaliată a clientului",
"downloadLink": "URL-ul de descărcare al platformei",
"icon": "URL-ul iconiței sau codificare base64",
"name": "Numele de afișare al clientului",
"outputFormat": "Formatul fișierului de configurare a abonamentului",
"proxyTemplate": "Șablonul linkului de abonament, suportă variabile: ",
"template": "Șablonul de configurare a abonamentului, suportă diverse variabile",
"userAgentPrefix": "Identificatorul clientului pentru a distinge diferite clienți"
},
"editTitle": "Editează Client",
"fields": {
"description": "Descriere",
"icon": "Iconiță",
"name": "Nume",
"outputFormat": "Format de Ieșire",
"proxyTemplate": "Link de Abonament",
"template": "Șablon Config"
},
"tabs": {
"basic": "Informații de Bază",
"download": "Descărcări",
"template": "Șabloane"
},
"validation": {
"nameRequired": "Numele clientului este necesar",
"userAgentRequiredSuffix": "este necesar"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Text Simplu",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Ecosistem mare, reguli cuprinzătoare, comunitate activă"
"title": "Gestionarea Clienților"
},
"egern": {
"features": "Client modern pentru iOS, performanță excelentă"
},
"hiddify": {
"features": "Multi-platformă, protocoale cuprinzătoare, prietenos pentru începători"
},
"loon": {
"features": "Client avansat pentru iOS, reguli bogate, interfață frumoasă"
},
"netch": {
"features": "Client proxy axat pe gaming"
},
"quantumult": {
"features": "Client avansat pentru iOS, reguli flexibile, scripturi bogate"
},
"shadowrocket": {
"features": "Client clasic pentru iOS, configurare flexibilă"
},
"singbox": {
"features": "Kernelul cel mai recent, GUI oficial, suport multi-platformă"
},
"stash": {
"features": "UI modern pentru mobil, protocoale cuprinzătoare"
},
"surfboard": {
"features": "Gratuit, dezvoltare activă, interfață modernă"
},
"surge": {
"features": "Instrument premium pentru iOS/Mac, caracteristici puternice"
},
"v2box": {
"features": "Client V2Ray prietenos cu utilizatorul"
},
"v2rayn": {
"features": "Client popular pentru Windows, bogat în caracteristici"
},
"v2rayng": {
"features": "Client popular pentru Android, ușor"
"table": {
"columns": {
"default": "Implicit",
"description": "Descriere",
"name": "Numele Clientului",
"outputFormat": "Format de Ieșire",
"supportedPlatforms": "Platforme Suportate"
}
}
},
"description": "Gestionează șabloanele de configurare a abonamentului pentru clienții proxy",
"features": "Caracteristici Cheie",
"platforms": "Platforme",
"subscribeTemplate": "Configurare Șablon Abonament",
"templateContent": "Conținut Șablon",
"templatePlaceholder": "Introdu șablonul de configurare a clientului...",
"title": "Șabloane de Abonament pentru Clienți"
},
"title": "Gestionarea Abonamentelor"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"cancel": "Отменить",
"add": "Добавить",
"batchDelete": "Пакетное удаление",
"batchDeleteSuccess": "Успешно удалено {count} клиентов",
"batchDeleteWarning": "Вы уверены, что хотите удалить выбранные {count} клиентов?",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDelete": "Подтвердить удаление",
"createSuccess": "Успешно создано",
"delete": "Удалить",
"deleteFailed": "Ошибка удаления",
"deleteSuccess": "Успешно удалено",
"deleteWarning": "Это действие нельзя отменить. Вы уверены, что хотите удалить этого клиента?",
"edit": "Редактировать",
"save": "Сохранить",
"saveTemplate": "Сохранить Шаблон"
"saveFailed": "Ошибка сохранения",
"update": "Обновить",
"updateSuccess": "Успешно обновлено"
},
"config": {
"description": "Управление настройками системы подписки",
"restrictUserAgent": "Ограничение User-Agent",
"restrictUserAgentDescription": "Включить ограничения доступа на основе User-Agent",
"singleSubscriptionMode": "Режим Единой Подписки",
"singleSubscriptionMode": "Режим единственной подписки",
"singleSubscriptionModeDescription": "Ограничить пользователей одной активной подпиской. Существующие подписки не затрагиваются",
"subscriptionDomain": "Домен Подписки",
"subscriptionDomain": "Домен подписки",
"subscriptionDomainDescription": "Пользовательский домен для ссылок на подписку",
"subscriptionDomainPlaceholder": "Введите домен подписки, по одному на строку",
"subscriptionPath": "Путь Подписки",
"subscriptionPath": "Путь подписки",
"subscriptionPathDescription": "Пользовательский путь для конечных точек подписки (лучшее выполнение после перезапуска системы)",
"subscriptionPathPlaceholder": "Введите путь подписки",
"title": "Настройки Подписки",
"title": "Настройки подписки",
"updateError": "Ошибка обновления",
"updateSuccess": "Настройки успешно обновлены",
"userAgentWhitelist": "Белый список User-Agent",
"userAgentWhitelistDescription": "Разрешенные User-Agent для доступа к подписке, по одному на строку. Встроенные шаблоны автоматически включаются в белый список",
"userAgentWhitelistPlaceholder": "Введите разрешенные User-Agent, по одному на строку",
"wildcardResolution": "Разрешение Подстановочных Знаков",
"wildcardResolutionDescription": "Включить разрешение подстановочных доменов для подписок"
"userAgentLimit": "Ограничение {userAgent}",
"userAgentLimitDescription": "Включить ограничения доступа на основе {userAgent}",
"userAgentList": "Белый список {userAgent}",
"userAgentListDescription": "Разрешенные {userAgent} для доступа по подписке, по одному на строку. Настроенное приложение {userAgent} будет автоматически включено",
"userAgentListPlaceholder": "Введите разрешенные {userAgent}, по одному на строку",
"wildcardResolution": "Разрешение подстановочных знаков",
"wildcardResolutionDescription": "Включить разрешение доменов с подстановочными знаками для подписок"
},
"description": "Настройка параметров подписки и шаблонов клиентов",
"messages": {
"noClients": "Нет Шаблонов Клиентов",
"noClientsDescription": "Шаблоны клиентов еще не настроены. Добавьте свой первый шаблон, чтобы начать."
"form": {
"addTitle": "Добавить клиента",
"descriptions": {
"description": "Подробное описание клиента",
"downloadLink": "URL загрузки платформы",
"icon": "URL иконки или кодировка base64",
"name": "Отображаемое имя клиента",
"outputFormat": "Формат файла конфигурации подписки",
"proxyTemplate": "Шаблон ссылки на подписку, поддерживает переменные: ",
"template": "Шаблон конфигурации подписки, поддерживает различные переменные",
"userAgentPrefix": "Идентификатор клиента для различения различных клиентов"
},
"editTitle": "Редактировать клиента",
"fields": {
"description": "Описание",
"icon": "Иконка",
"name": "Имя",
"outputFormat": "Формат вывода",
"proxyTemplate": "Ссылка на подписку",
"template": "Шаблон конфигурации"
},
"tabs": {
"basic": "Основная информация",
"download": "Загрузки",
"template": "Шаблоны"
},
"validation": {
"nameRequired": "Имя клиента обязательно",
"userAgentRequiredSuffix": "обязательно"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Обычный текст",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Большая экосистема, обширные правила, активное сообщество"
"title": "Управление клиентами"
},
"egern": {
"features": "Современный клиент для iOS, отличная производительность"
},
"hiddify": {
"features": "Мультиплатформенный, обширные протоколы, дружелюбный к новичкам"
},
"loon": {
"features": "Расширенный клиент для iOS, богатые правила, красивый интерфейс"
},
"netch": {
"features": "Прокси-клиент, ориентированный на игры"
},
"quantumult": {
"features": "Расширенный клиент для iOS, гибкие правила, богатые скрипты"
},
"shadowrocket": {
"features": "Классический клиент для iOS, гибкая конфигурация"
},
"singbox": {
"features": "Последнее ядро, официальный GUI, поддержка нескольких платформ"
},
"stash": {
"features": "Современный мобильный интерфейс, обширные протоколы"
},
"surfboard": {
"features": "Бесплатный, активная разработка, современный интерфейс"
},
"surge": {
"features": "Премиум инструмент для iOS/Mac, мощные функции"
},
"v2box": {
"features": "Удобный клиент V2Ray"
},
"v2rayn": {
"features": "Популярный клиент для Windows, богатый функциями"
},
"v2rayng": {
"features": "Популярный клиент для Android, легковесный"
"table": {
"columns": {
"default": "По умолчанию",
"description": "Описание",
"name": "Имя клиента",
"outputFormat": "Формат вывода",
"supportedPlatforms": "Поддерживаемые платформы"
}
}
},
"description": "Управление шаблонами конфигурации подписки для прокси-клиентов",
"features": "Ключевые Особенности",
"platforms": "Платформы",
"subscribeTemplate": "Конфигурация Шаблона Подписки",
"templateContent": "Содержимое Шаблона",
"templatePlaceholder": "Введите шаблон конфигурации клиента...",
"title": "Шаблоны Подписки Клиентов"
},
"title": "Управление Подписками"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "เพิ่ม",
"batchDelete": "ลบแบบกลุ่ม",
"batchDeleteSuccess": "ลบลูกค้า {count} รายเรียบร้อยแล้ว",
"batchDeleteWarning": "คุณแน่ใจหรือว่าต้องการลบลูกค้า {count} รายที่เลือก?",
"cancel": "ยกเลิก",
"confirm": "ยืนยัน",
"confirmDelete": "ยืนยันการลบ",
"createSuccess": "สร้างเรียบร้อยแล้ว",
"delete": "ลบ",
"deleteFailed": "ลบไม่สำเร็จ",
"deleteSuccess": "ลบเรียบร้อยแล้ว",
"deleteWarning": "การดำเนินการนี้ไม่สามารถย้อนกลับได้ คุณแน่ใจหรือว่าต้องการลบลูกค้านี้?",
"edit": "แก้ไข",
"save": "บันทึก",
"saveTemplate": "บันทึกเทมเพลต"
"saveFailed": "บันทึกไม่สำเร็จ",
"update": "อัปเดต",
"updateSuccess": "อัปเดตเรียบร้อยแล้ว"
},
"config": {
"description": "จัดการการตั้งค่าระบบการสมัครสมาชิก",
"restrictUserAgent": "การจำกัด User-Agent",
"restrictUserAgentDescription": "เปิดใช้งานการจำกัดการเข้าถึงตาม User-Agent",
"singleSubscriptionMode": "โหมดการสมัครสมาชิกเดียว",
"singleSubscriptionModeDescription": "จำกัดผู้ใช้ให้มีการสมัครสมาชิกที่ใช้งานอยู่เพียงหนึ่งรายการ การสมัครสมาชิกที่มีอยู่ไม่ถูกกระทบ",
"subscriptionDomain": "โดเมนการสมัครสมาชิก",
"subscriptionDomainDescription": "โดเมนที่กำหนดเองสำหรับลิงก์การสมัครสมาชิก",
"subscriptionDomainPlaceholder": "กรอกโดเมนการสมัครสมาชิก, หนึ่งต่อบรรทัด",
"subscriptionDomainPlaceholder": "กรอกโดเมนการสมัครสมาชิก หนึ่งรายการต่อบรรทัด",
"subscriptionPath": "เส้นทางการสมัครสมาชิก",
"subscriptionPathDescription": "เส้นทางที่กำหนดเองสำหรับจุดสิ้นสุดการสมัครสมาชิก (ประสิทธิภาพดีขึ้นหลังจากการรีสตาร์ทระบบ)",
"subscriptionPathDescription": "เส้นทางที่กำหนดเองสำหรับจุดสิ้นสุดการสมัครสมาชิก (ประสิทธิภาพดีขึ้นหลังจากรีสตาร์ทระบบ)",
"subscriptionPathPlaceholder": "กรอกเส้นทางการสมัครสมาชิก",
"title": "การตั้งค่าการสมัครสมาชิก",
"updateError": "การอัปเดตล้มเหลว",
"updateError": "การอัปเดตไม่สำเร็จ",
"updateSuccess": "อัปเดตการตั้งค่าเรียบร้อยแล้ว",
"userAgentWhitelist": "รายการอนุญาต User-Agent",
"userAgentWhitelistDescription": "User-Agent ที่อนุญาตสำหรับการเข้าถึงการสมัครสมาชิก หนึ่งรายการต่อบรรทัด เทมเพลตที่มีอยู่จะถูกเพิ่มโดยอัตโนมัติในรายการอนุญาต",
"userAgentWhitelistPlaceholder": "กรอก User-Agent ที่อนุญาต หนึ่งรายการต่อบรรทัด",
"wildcardResolution": "การแก้ไขโดเมนแบบไวลด์การ์ด",
"wildcardResolutionDescription": "เปิดใช้งานการแก้ไขโดเมนแบบไวลด์การ์ดสำหรับการสมัครสมาชิก"
"userAgentLimit": "ข้อจำกัด {userAgent}",
"userAgentLimitDescription": "เปิดใช้งานข้อจำกัดการเข้าถึงตาม {userAgent}",
"userAgentList": "รายการอนุญาต {userAgent}",
"userAgentListDescription": "อนุญาต {userAgent} สำหรับการเข้าถึงการสมัครสมาชิก รายการละบรรทัด แอปพลิเคชันที่กำหนด {userAgent} จะถูกเพิ่มโดยอัตโนมัติ",
"userAgentListPlaceholder": "กรอก {userAgent} ที่อนุญาต หนึ่งต่อบรรทัด",
"wildcardResolution": "การแก้ไข Wildcard",
"wildcardResolutionDescription": "เปิดใช้งานการแก้ไขโดเมน wildcard สำหรับการสมัครสมาชิก"
},
"description": "กำหนดค่าการตั้งค่าการสมัครสมาชิกและเทมเพลตของลูกค้า",
"messages": {
"noClients": "ไม่มีเทมเพลตลูกค้า",
"noClientsDescription": "ยังไม่มีการกำหนดเทมเพลตลูกค้า เพิ่มเทมเพลตแรกของคุณเพื่อเริ่มต้น"
"form": {
"addTitle": "เพิ่มลูกค้า",
"descriptions": {
"description": "คำอธิบายรายละเอียดของลูกค้า",
"downloadLink": "ลิงก์ดาวน์โหลดแพลตฟอร์ม",
"icon": "URL ของไอคอนหรือการเข้ารหัส base64",
"name": "ชื่อที่แสดงของลูกค้า",
"outputFormat": "รูปแบบไฟล์การกำหนดค่าการสมัครสมาชิก",
"proxyTemplate": "เทมเพลตลิงก์การสมัครสมาชิก รองรับตัวแปร: ",
"template": "เทมเพลตการกำหนดค่าการสมัครสมาชิก รองรับตัวแปรต่างๆ",
"userAgentPrefix": "ตัวระบุของลูกค้าเพื่อแยกแยะลูกค้าที่แตกต่างกัน"
},
"editTitle": "แก้ไขลูกค้า",
"fields": {
"description": "คำอธิบาย",
"icon": "ไอคอน",
"name": "ชื่อ",
"outputFormat": "รูปแบบผลลัพธ์",
"proxyTemplate": "ลิงก์การสมัครสมาชิก",
"template": "เทมเพลตการกำหนดค่า"
},
"tabs": {
"basic": "ข้อมูลพื้นฐาน",
"download": "ดาวน์โหลด",
"template": "เทมเพลต"
},
"validation": {
"nameRequired": "ชื่อของลูกค้าจำเป็นต้องระบุ",
"userAgentRequiredSuffix": "จำเป็นต้องระบุ"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "ข้อความธรรมดา",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "ระบบนิเวศขนาดใหญ่, กฎที่ครอบคลุม, ชุมชนที่กระตือรือร้น"
"title": "การจัดการลูกค้า"
},
"egern": {
"features": "ลูกค้า iOS ที่ทันสมัย, ประสิทธิภาพยอดเยี่ยม"
},
"hiddify": {
"features": "หลายแพลตฟอร์ม, โปรโตคอลที่ครอบคลุม, เหมาะสำหรับผู้เริ่มต้น"
},
"loon": {
"features": "ลูกค้าขั้นสูงสำหรับ iOS, กฎที่หลากหลาย, อินเทอร์เฟซที่สวยงาม"
},
"netch": {
"features": "ลูกค้าพร็อกซีที่มุ่งเน้นการเล่นเกม"
},
"quantumult": {
"features": "ลูกค้าขั้นสูงสำหรับ iOS, กฎที่ยืดหยุ่น, สคริปต์ที่หลากหลาย"
},
"shadowrocket": {
"features": "ลูกค้า iOS คลาสสิก, การกำหนดค่าที่ยืดหยุ่น"
},
"singbox": {
"features": "เคอร์เนลล่าสุด, GUI อย่างเป็นทางการ, รองรับหลายแพลตฟอร์ม"
},
"stash": {
"features": "UI มือถือที่ทันสมัย, โปรโตคอลที่ครอบคลุม"
},
"surfboard": {
"features": "ฟรี, การพัฒนาที่กระตือรือร้น, อินเทอร์เฟซที่ทันสมัย"
},
"surge": {
"features": "เครื่องมือ iOS/Mac ระดับพรีเมียม, คุณสมบัติที่ทรงพลัง"
},
"v2box": {
"features": "ลูกค้า V2Ray ที่ใช้งานง่าย"
},
"v2rayn": {
"features": "ลูกค้าที่ได้รับความนิยมสำหรับ Windows, ฟีเจอร์มากมาย"
},
"v2rayng": {
"features": "ลูกค้าที่ได้รับความนิยมสำหรับ Android, น้ำหนักเบา"
"table": {
"columns": {
"default": "ค่าเริ่มต้น",
"description": "คำอธิบาย",
"name": "ชื่อลูกค้า",
"outputFormat": "รูปแบบผลลัพธ์",
"supportedPlatforms": "แพลตฟอร์มที่รองรับ"
}
}
},
"description": "จัดการเทมเพลตการกำหนดค่าการสมัครสมาชิกสำหรับลูกค้าพร็อกซี",
"features": "คุณสมบัติหลัก",
"platforms": "แพลตฟอร์ม",
"subscribeTemplate": "การกำหนดค่าเทมเพลตการสมัครสมาชิก",
"templateContent": "เนื้อหาเทมเพลต",
"templatePlaceholder": "กรอกเทมเพลตการกำหนดค่าลูกค้า...",
"title": "เทมเพลตการสมัครสมาชิกของลูกค้า"
},
"title": "การจัดการการสมัครสมาชิก"
}

View File

@ -1,15 +1,25 @@
{
"actions": {
"add": "Ekle",
"batchDelete": "Toplu Sil",
"batchDeleteSuccess": "{count} müşterinin başarıyla silindi",
"batchDeleteWarning": "Seçilen {count} müşteriyi silmek istediğinize emin misiniz?",
"cancel": "İptal",
"confirm": "Onayla",
"confirmDelete": "Silme İşlemini Onayla",
"createSuccess": "Başarıyla oluşturuldu",
"delete": "Sil",
"deleteFailed": "Silme işlemi başarısız",
"deleteSuccess": "Başarıyla silindi",
"deleteWarning": "Bu işlem geri alınamaz. Bu müşteriyi silmek istediğinize emin misiniz?",
"edit": "Düzenle",
"save": "Kaydet",
"saveTemplate": "Şablonu Kaydet"
"saveFailed": "Kaydetme işlemi başarısız",
"update": "Güncelle",
"updateSuccess": "Başarıyla güncellendi"
},
"config": {
"description": "Abonelik sistemi ayarlarını yönetin",
"restrictUserAgent": "Kullanıcı Aracısı Kısıtlaması",
"restrictUserAgentDescription": "Kullanıcı Aracısına dayalı erişim kısıtlamalarını etkinleştir",
"singleSubscriptionMode": "Tek Abonelik Modu",
"singleSubscriptionModeDescription": "Kullanıcıları bir aktif abonelikle sınırlayın. Mevcut abonelikler etkilenmez",
"subscriptionDomain": "Abonelik Alanı",
@ -19,71 +29,71 @@
"subscriptionPathDescription": "Abonelik uç noktaları için özel yol (sistem yeniden başlatıldığında daha iyi performans)",
"subscriptionPathPlaceholder": "Abonelik yolunu girin",
"title": "Abonelik Yapılandırması",
"updateError": "Güncelleme başarısız oldu",
"updateError": "Güncelleme başarısız",
"updateSuccess": "Ayarlar başarıyla güncellendi",
"userAgentWhitelist": "Kullanıcı Aracısı Beyaz Listesi",
"userAgentWhitelistDescription": "Abonelik erişimi için izin verilen Kullanıcı Aracıları, her biri bir satıra. Yerleşik şablonlar otomatik olarak beyaz listeye dahil edilir",
"userAgentWhitelistPlaceholder": "İzin verilen Kullanıcı Aracılarını girin, her biri bir satıra",
"wildcardResolution": "Wildcard Çözümü",
"wildcardResolutionDescription": "Abonelikler için wildcard alan çözümlemesini etkinleştir"
"userAgentLimit": "{userAgent} Kısıtlaması",
"userAgentLimitDescription": "{userAgent}'ye dayalı erişim kısıtlamalarını etkinleştir",
"userAgentList": "{userAgent} Beyaz Liste",
"userAgentListDescription": "Abonelik erişimi için izin verilen {userAgent}, her biri bir satırda. Yapılandırılmış uygulama {userAgent} otomatik olarak dahil edilecektir",
"userAgentListPlaceholder": "İzin verilen {userAgent}'yi girin, her biri bir satırda",
"wildcardResolution": "Joker Karakter Çözümü",
"wildcardResolutionDescription": "Abonelikler için joker alan çözümünü etkinleştir"
},
"description": "Abonelik ayarlarını ve istemci şablonlarını yapılandırın",
"messages": {
"noClients": "İstemci Şablonu Yok",
"noClientsDescription": "Henüz yapılandırılmış istemci şablonu yok. Başlamak için ilk şablonunuzu ekleyin."
"form": {
"addTitle": "Müşteri Ekle",
"descriptions": {
"description": "Detaylı müşteri açıklaması",
"downloadLink": "platform indirme URL'si",
"icon": "Simge URL'si veya base64 kodlaması",
"name": "Müşteri görüntüleme adı",
"outputFormat": "Abonelik yapılandırma dosyası formatı",
"proxyTemplate": "Abonelik bağlantısı şablonu, değişkenleri destekler: ",
"template": "Abonelik yapılandırma şablonu, çeşitli değişkenleri destekler",
"userAgentPrefix": "Farklı istemcileri ayırt etmek için istemci tanımlayıcısı"
},
"editTitle": "Müşteri Düzenle",
"fields": {
"description": "Açıklama",
"icon": "Simge",
"name": "İsim",
"outputFormat": ıktı Formatı",
"proxyTemplate": "Abonelik Bağlantısı",
"template": "Yapılandırma Şablonu"
},
"tabs": {
"basic": "Temel Bilgiler",
"download": "İndirmeler",
"template": "Şablonlar"
},
"validation": {
"nameRequired": "Müşteri adı gereklidir",
"userAgentRequiredSuffix": "gereklidir"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Düz Metin",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Geniş ekosistem, kapsamlı kurallar, aktif topluluk"
"title": "İstemci Yönetimi"
},
"egern": {
"features": "Modern iOS istemcisi, mükemmel performans"
},
"hiddify": {
"features": "Çoklu platform, kapsamlı protokoller, başlangıç dostu"
},
"loon": {
"features": "iOS gelişmiş istemcisi, zengin kurallar, güzel arayüz"
},
"netch": {
"features": "Oyun odaklı proxy istemcisi"
},
"quantumult": {
"features": "iOS gelişmiş istemcisi, esnek kurallar, zengin betikler"
},
"shadowrocket": {
"features": "Klasik iOS istemcisi, esnek yapılandırma"
},
"singbox": {
"features": "En son çekirdek, resmi GUI, çoklu platform desteği"
},
"stash": {
"features": "Modern mobil arayüz, kapsamlı protokoller"
},
"surfboard": {
"features": "Ücretsiz, aktif geliştirme, modern arayüz"
},
"surge": {
"features": "Premium iOS/Mac aracı, güçlü özellikler"
},
"v2box": {
"features": "Kullanıcı dostu V2Ray istemcisi"
},
"v2rayn": {
"features": "Popüler Windows istemcisi, özellik zengini"
},
"v2rayng": {
"features": "Popüler Android istemcisi, hafif"
"table": {
"columns": {
"default": "Varsayılan",
"description": "Açıklama",
"name": "Müşteri Adı",
"outputFormat": ıktı Formatı",
"supportedPlatforms": "Desteklenen Platformlar"
}
}
},
"description": "Proxy istemcileri için abonelik yapılandırma şablonlarını yönetin",
"features": "Ana Özellikler",
"platforms": "Platformlar",
"subscribeTemplate": "Abonelik Şablonu Yapılandırması",
"templateContent": "Şablon İçeriği",
"templatePlaceholder": "İstemci yapılandırma şablonunu girin...",
"title": "İstemci Abonelik Şablonları"
},
"title": "Abonelik Yönetimi"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Додати",
"batchDelete": "Пакетне видалення",
"batchDeleteSuccess": "Успішно видалено {count} клієнтів",
"batchDeleteWarning": "Ви впевнені, що хочете видалити вибрані {count} клієнтів?",
"cancel": "Скасувати",
"confirm": "Підтвердити",
"confirmDelete": "Підтвердити видалення",
"createSuccess": "Успішно створено",
"delete": "Видалити",
"deleteFailed": "Не вдалося видалити",
"deleteSuccess": "Успішно видалено",
"deleteWarning": "Цю операцію не можна скасувати. Ви впевнені, що хочете видалити цього клієнта?",
"edit": "Редагувати",
"save": "Зберегти",
"saveTemplate": "Зберегти Шаблон"
"saveFailed": "Не вдалося зберегти",
"update": "Оновити",
"updateSuccess": "Успішно оновлено"
},
"config": {
"description": "Керування налаштуваннями системи підписки",
"restrictUserAgent": "Обмеження User-Agent",
"restrictUserAgentDescription": "Увімкнути обмеження доступу на основі User-Agent",
"singleSubscriptionMode": "Режим Одиничної Підписки",
"singleSubscriptionModeDescription": "Обмежити користувачів до однієї активної підписки. Існуючі підписки не підлягають змінам",
"subscriptionDomain": "Домен Підписки",
"singleSubscriptionMode": "Режим одноразової підписки",
"singleSubscriptionModeDescription": "Обмежити користувачів однією активною підпискою. Існуючі підписки не підлягають змінам",
"subscriptionDomain": "Домен підписки",
"subscriptionDomainDescription": "Користувацький домен для посилань на підписки",
"subscriptionDomainPlaceholder": "Введіть домен підписки, по одному в рядку",
"subscriptionPath": "Шлях Підписки",
"subscriptionPath": "Шлях підписки",
"subscriptionPathDescription": "Користувацький шлях для кінцевих точок підписки (краща продуктивність після перезавантаження системи)",
"subscriptionPathPlaceholder": "Введіть шлях підписки",
"title": "Налаштування Підписки",
"title": "Налаштування підписки",
"updateError": "Не вдалося оновити",
"updateSuccess": "Налаштування успішно оновлено",
"userAgentWhitelist": "Список дозволених User-Agent",
"userAgentWhitelistDescription": "Дозволені User-Agent для доступу до підписки, по одному в рядку. Вбудовані шаблони автоматично включаються до списку дозволених",
"userAgentWhitelistPlaceholder": "Введіть дозволені User-Agent, по одному в рядку",
"wildcardResolution": "Розв'язання Доменів з Підстановкою",
"wildcardResolutionDescription": "Увімкнути розв'язання доменів з підстановкою для підписок"
"userAgentLimit": "Обмеження {userAgent}",
"userAgentLimitDescription": "Увімкнути обмеження доступу на основі {userAgent}",
"userAgentList": "Список дозволених {userAgent}",
"userAgentListDescription": "Дозволені {userAgent} для доступу до підписки, по одному на рядок. Налаштований додаток {userAgent} буде автоматично включено",
"userAgentListPlaceholder": "Введіть дозволені {userAgent}, по одному на рядок",
"wildcardResolution": "Розв'язання підстановочних знаків",
"wildcardResolutionDescription": "Увімкнути розв'язання доменів з підстановочними знаками для підписок"
},
"description": "Налаштуйте параметри підписки та шаблони клієнтів",
"messages": {
"noClients": "Немає Шаблонів Клієнтів",
"noClientsDescription": "Шаблони клієнтів ще не налаштовані. Додайте свій перший шаблон, щоб почати."
"form": {
"addTitle": "Додати клієнта",
"descriptions": {
"description": "Детальний опис клієнта",
"downloadLink": "URL для завантаження платформи",
"icon": "URL іконки або кодування base64",
"name": "Відображуване ім'я клієнта",
"outputFormat": "Формат файлу конфігурації підписки",
"proxyTemplate": "Шаблон посилання на підписку, підтримує змінні: ",
"template": "Шаблон конфігурації підписки, підтримує різні змінні",
"userAgentPrefix": "Ідентифікатор клієнта для розрізнення різних клієнтів"
},
"editTitle": "Редагувати клієнта",
"fields": {
"description": "Опис",
"icon": "Іконка",
"name": "Ім'я",
"outputFormat": "Формат виходу",
"proxyTemplate": "Посилання на підписку",
"template": "Шаблон конфігурації"
},
"tabs": {
"basic": "Основна інформація",
"download": "Завантаження",
"template": "Шаблони"
},
"validation": {
"nameRequired": "Ім'я клієнта є обов'язковим",
"userAgentRequiredSuffix": "є обов'язковим"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Текстовий формат",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Велика екосистема, всебічні правила, активна спільнота"
"title": "Управління клієнтами"
},
"egern": {
"features": "Сучасний клієнт для iOS, відмінна продуктивність"
},
"hiddify": {
"features": "Багатоплатформенний, всебічні протоколи, дружній до початківців"
},
"loon": {
"features": "Розширений клієнт для iOS, багаті правила, красивий інтерфейс"
},
"netch": {
"features": "Клієнт проксі, орієнтований на ігри"
},
"quantumult": {
"features": "Розширений клієнт для iOS, гнучкі правила, багаті скрипти"
},
"shadowrocket": {
"features": "Класичний клієнт для iOS, гнучка конфігурація"
},
"singbox": {
"features": "Останнє ядро, офіційний GUI, підтримка багатьох платформ"
},
"stash": {
"features": "Сучасний мобільний інтерфейс, всебічні протоколи"
},
"surfboard": {
"features": "Безкоштовний, активна розробка, сучасний інтерфейс"
},
"surge": {
"features": "Преміум інструмент для iOS/Mac, потужні функції"
},
"v2box": {
"features": "Зручний клієнт V2Ray"
},
"v2rayn": {
"features": "Популярний клієнт для Windows, багатий на функції"
},
"v2rayng": {
"features": "Популярний клієнт для Android, легкий"
"table": {
"columns": {
"default": "За замовчуванням",
"description": "Опис",
"name": "Ім'я клієнта",
"outputFormat": "Формат виходу",
"supportedPlatforms": "Підтримувані платформи"
}
}
},
"description": "Керування шаблонами конфігурації підписки для проксі-клієнтів",
"features": "Ключові Особливості",
"platforms": "Платформи",
"subscribeTemplate": "Конфігурація Шаблону Підписки",
"templateContent": "Зміст Шаблону",
"templatePlaceholder": "Введіть шаблон конфігурації клієнта...",
"title": "Шаблони Підписки Клієнтів"
},
"title": "Управління Підписками"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "Thêm",
"batchDelete": "Xóa hàng loạt",
"batchDeleteSuccess": "Đã xóa thành công {count} khách hàng",
"batchDeleteWarning": "Bạn có chắc chắn muốn xóa {count} khách hàng đã chọn không?",
"cancel": "Hủy",
"confirm": "Xác nhận",
"confirmDelete": "Xác nhận xóa",
"createSuccess": "Tạo thành công",
"delete": "Xóa",
"deleteFailed": "Xóa không thành công",
"deleteSuccess": "Đã xóa thành công",
"deleteWarning": "Hành động này không thể hoàn tác. Bạn có chắc chắn muốn xóa khách hàng này không?",
"edit": "Chỉnh sửa",
"save": "Lưu",
"saveTemplate": "Lưu Mẫu"
"saveFailed": "Lưu không thành công",
"update": "Cập nhật",
"updateSuccess": "Đã cập nhật thành công"
},
"config": {
"description": "Quản lý cài đặt hệ thống đăng ký",
"restrictUserAgent": "Hạn chế User-Agent",
"restrictUserAgentDescription": "Bật hạn chế truy cập dựa trên User-Agent",
"singleSubscriptionMode": "Chế Độ Đăng Ký Đơn",
"singleSubscriptionModeDescription": "Giới hạn người dùng chỉ có một đăng ký hoạt động. Các đăng ký hiện có không bị ảnh hưởng",
"subscriptionDomain": "Miền Đăng Ký",
"singleSubscriptionMode": "Chế độ Đăng ký Đơn",
"singleSubscriptionModeDescription": "Giới hạn người dùng chỉ một đăng ký hoạt động. Các đăng ký hiện có không bị ảnh hưởng",
"subscriptionDomain": "Miền Đăng ký",
"subscriptionDomainDescription": "Miền tùy chỉnh cho các liên kết đăng ký",
"subscriptionDomainPlaceholder": "Nhập miền đăng ký, mỗi miền một dòng",
"subscriptionPath": "Đường Dẫn Đăng Ký",
"subscriptionPath": "Đường dẫn Đăng ký",
"subscriptionPathDescription": "Đường dẫn tùy chỉnh cho các điểm cuối đăng ký (hiệu suất tốt hơn sau khi khởi động lại hệ thống)",
"subscriptionPathPlaceholder": "Nhập đường dẫn đăng ký",
"title": "Cấu Hình Đăng Ký",
"title": "Cấu hình Đăng ký",
"updateError": "Cập nhật không thành công",
"updateSuccess": "Cài đặt đã được cập nhật thành công",
"userAgentWhitelist": "Danh sách trắng User-Agent",
"userAgentWhitelistDescription": "Các User-Agent được phép truy cập đăng ký, mỗi dòng một User-Agent. Các mẫu tích hợp sẽ tự động được bao gồm trong danh sách trắng",
"userAgentWhitelistPlaceholder": "Nhập User-Agent được phép, mỗi dòng một User-Agent",
"wildcardResolution": "Giải Quyết Wildcard",
"wildcardResolutionDescription": "Bật giải quyết miền wildcard cho các đăng ký"
"userAgentLimit": "Giới hạn {userAgent}",
"userAgentLimitDescription": "Bật hạn chế truy cập dựa trên {userAgent}",
"userAgentList": "Danh sách trắng {userAgent}",
"userAgentListDescription": "Các {userAgent} được phép truy cập đăng ký, mỗi cái một dòng. Ứng dụng đã cấu hình {userAgent} sẽ được tự động bao gồm",
"userAgentListPlaceholder": "Nhập {userAgent} được phép, mỗi cái một dòng",
"wildcardResolution": "Giải quyết Wildcard",
"wildcardResolutionDescription": "Kích hoạt giải quyết miền wildcard cho các đăng ký"
},
"description": "Cấu hình cài đặt đăng ký và mẫu khách hàng",
"messages": {
"noClients": "Không Có Mẫu Khách Hàng",
"noClientsDescription": "Chưa có mẫu khách hàng nào được cấu hình. Thêm mẫu đầu tiên của bạn để bắt đầu."
"form": {
"addTitle": "Thêm Khách hàng",
"descriptions": {
"description": "Mô tả chi tiết về khách hàng",
"downloadLink": "URL tải xuống nền tảng",
"icon": "URL biểu tượng hoặc mã hóa base64",
"name": "Tên hiển thị của khách hàng",
"outputFormat": "Định dạng tệp cấu hình đăng ký",
"proxyTemplate": "Mẫu liên kết đăng ký, hỗ trợ các biến: ",
"template": "Mẫu cấu hình đăng ký, hỗ trợ nhiều biến khác nhau",
"userAgentPrefix": "Định danh khách hàng để phân biệt các khách hàng khác nhau."
},
"editTitle": "Chỉnh sửa Khách hàng",
"fields": {
"description": "Mô tả",
"icon": "Biểu tượng",
"name": "Tên",
"outputFormat": "Định dạng Đầu ra",
"proxyTemplate": "Liên kết Đăng ký",
"template": "Mẫu Cấu hình"
},
"tabs": {
"basic": "Thông tin Cơ bản",
"download": "Tải xuống",
"template": "Mẫu"
},
"validation": {
"nameRequired": "Tên khách hàng là bắt buộc",
"userAgentRequiredSuffix": "là bắt buộc"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "Văn bản thuần",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "Hệ sinh thái lớn, quy tắc toàn diện, cộng đồng năng động"
"title": "Quản lý Khách hàng"
},
"egern": {
"features": "Khách hàng iOS hiện đại, hiệu suất xuất sắc"
},
"hiddify": {
"features": "Đa nền tảng, giao thức toàn diện, thân thiện với người mới"
},
"loon": {
"features": "Khách hàng nâng cao cho iOS, quy tắc phong phú, giao diện đẹp"
},
"netch": {
"features": "Khách hàng proxy tập trung vào game"
},
"quantumult": {
"features": "Khách hàng nâng cao cho iOS, quy tắc linh hoạt, kịch bản phong phú"
},
"shadowrocket": {
"features": "Khách hàng iOS cổ điển, cấu hình linh hoạt"
},
"singbox": {
"features": "Nhân mới nhất, GUI chính thức, hỗ trợ đa nền tảng"
},
"stash": {
"features": "Giao diện di động hiện đại, giao thức toàn diện"
},
"surfboard": {
"features": "Miễn phí, phát triển tích cực, giao diện hiện đại"
},
"surge": {
"features": "Công cụ cao cấp cho iOS/Mac, tính năng mạnh mẽ"
},
"v2box": {
"features": "Khách hàng V2Ray thân thiện với người dùng"
},
"v2rayn": {
"features": "Khách hàng Windows phổ biến, nhiều tính năng"
},
"v2rayng": {
"features": "Khách hàng Android phổ biến, nhẹ"
"table": {
"columns": {
"default": "Mặc định",
"description": "Mô tả",
"name": "Tên Khách hàng",
"outputFormat": "Định dạng Đầu ra",
"supportedPlatforms": "Nền tảng Hỗ trợ"
}
}
},
"description": "Quản lý các mẫu cấu hình đăng ký cho khách hàng proxy",
"features": "Tính Năng Chính",
"platforms": "Nền Tảng",
"subscribeTemplate": "Cấu Hình Mẫu Đăng Ký",
"templateContent": "Nội Dung Mẫu",
"templatePlaceholder": "Nhập mẫu cấu hình khách hàng...",
"title": "Mẫu Đăng Ký Khách Hàng"
},
"title": "Quản Lý Đăng Ký"
}

View File

@ -1,89 +1,99 @@
{
"actions": {
"add": "添加",
"batchDelete": "批量删除",
"batchDeleteSuccess": "成功删除 {count} 个客户端",
"batchDeleteWarning": "您确定要删除选定的 {count} 个客户端吗?",
"cancel": "取消",
"confirm": "确认",
"confirmDelete": "确认删除",
"createSuccess": "创建成功",
"delete": "删除",
"deleteFailed": "删除失败",
"deleteSuccess": "删除成功",
"deleteWarning": "此操作无法撤销。您确定要删除此客户端吗?",
"edit": "编辑",
"save": "保存",
"saveTemplate": "保存模板"
"saveFailed": "保存失败",
"update": "更新",
"updateSuccess": "更新成功"
},
"config": {
"description": "管理订阅系统的相关配置",
"restrictUserAgent": "用户代理限制",
"restrictUserAgentDescription": "根据用户代理启用访问限制",
"description": "管理订阅系统设置",
"singleSubscriptionMode": "单一订阅模式",
"singleSubscriptionModeDescription": "限制用户只能有一个有效的订阅。现有订阅不受影响",
"singleSubscriptionModeDescription": "限制用户只能有一个有效的订阅。现有订阅不受影响",
"subscriptionDomain": "订阅域名",
"subscriptionDomainDescription": "自定义订阅链接域名",
"subscriptionDomainDescription": "订阅链接的自定义域名",
"subscriptionDomainPlaceholder": "输入订阅域名,每行一个",
"subscriptionPath": "订阅路径",
"subscriptionPathDescription": "自定义订阅端点路径(重启系统后性能更佳)",
"subscriptionPathDescription": "订阅端点的自定义路径(系统重启后性能更佳)",
"subscriptionPathPlaceholder": "输入订阅路径",
"title": "订阅配置",
"updateError": "更新失败",
"updateSuccess": "设置更新成功",
"userAgentWhitelist": "用户代理白名单",
"userAgentWhitelistDescription": "允许的用户代理用于订阅访问,每行一个。内置模板会自动包含在白名单中",
"userAgentWhitelistPlaceholder": "输入允许的用户代理,每行一个",
"userAgentLimit": "{userAgent} 限制",
"userAgentLimitDescription": "启用基于 {userAgent} 的访问限制",
"userAgentList": "{userAgent} 白名单",
"userAgentListDescription": "允许的 {userAgent} 用于订阅访问,每行一个。配置的应用程序 {userAgent} 将自动包含在内",
"userAgentListPlaceholder": "输入允许的 {userAgent},每行一个",
"wildcardResolution": "通配符解析",
"wildcardResolutionDescription": "启用订阅域名的通配符解析"
"wildcardResolutionDescription": "启用订阅的通配符域名解析"
},
"description": "配置订阅设置和客户端模板",
"messages": {
"noClients": "暂无客户端模板",
"noClientsDescription": "还没有配置任何客户端模板,请添加第一个模板开始使用。"
"form": {
"addTitle": "添加客户端",
"descriptions": {
"description": "详细的客户端描述",
"downloadLink": "平台下载 URL",
"icon": "图标 URL 或 base64 编码",
"name": "客户端显示名称",
"outputFormat": "订阅配置文件格式",
"proxyTemplate": "订阅链接模板,支持变量:",
"template": "订阅配置模板,支持各种变量",
"userAgentPrefix": "用于区分不同客户端的客户端标识符"
},
"editTitle": "编辑客户端",
"fields": {
"description": "描述",
"icon": "图标",
"name": "名称",
"outputFormat": "输出格式",
"proxyTemplate": "订阅链接",
"template": "配置模板"
},
"tabs": {
"basic": "基本信息",
"download": "下载",
"template": "模板"
},
"validation": {
"nameRequired": "客户端名称是必需的",
"userAgentRequiredSuffix": "是必需的"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "纯文本",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "生态丰富,规则完善,社区活跃"
"title": "客户端管理"
},
"egern": {
"features": "现代化 iOS 客户端,性能优异"
},
"hiddify": {
"features": "全平台支持,协议全面,新手友好"
},
"loon": {
"features": "iOS 高级客户端,规则丰富,界面美观"
},
"netch": {
"features": "游戏专用代理客户端"
},
"quantumult": {
"features": "iOS 高级客户端,规则灵活,脚本丰富"
},
"shadowrocket": {
"features": "经典 iOS 客户端,配置灵活"
},
"singbox": {
"features": "最新内核,官方图形界面,多平台支持"
},
"stash": {
"features": "现代移动端界面,协议全面"
},
"surfboard": {
"features": "免费开源,持续更新,界面现代"
},
"surge": {
"features": "iOS/Mac 专业工具,功能强大"
},
"v2box": {
"features": "用户友好的 V2Ray 客户端"
},
"v2rayn": {
"features": "热门 Windows 客户端,功能丰富"
},
"v2rayng": {
"features": "热门 Android 客户端,轻量级"
"table": {
"columns": {
"default": "默认",
"description": "描述",
"name": "客户端名称",
"outputFormat": "输出格式",
"supportedPlatforms": "支持的平台"
}
}
},
"description": "管理代理客户端的订阅配置模板",
"features": "主要特点",
"platforms": "支持平台",
"subscribeTemplate": "订阅模板配置",
"templateContent": "模板内容",
"templatePlaceholder": "输入客户端配置模板...",
"title": "客户端订阅模板"
},
"title": "订阅管理"
}

View File

@ -1,17 +1,27 @@
{
"actions": {
"add": "添加",
"batchDelete": "批量刪除",
"batchDeleteSuccess": "成功刪除 {count} 個客戶端",
"batchDeleteWarning": "您確定要刪除選定的 {count} 個客戶端嗎?",
"cancel": "取消",
"confirm": "確認",
"confirmDelete": "確認刪除",
"createSuccess": "創建成功",
"delete": "刪除",
"deleteFailed": "刪除失敗",
"deleteSuccess": "刪除成功",
"deleteWarning": "此操作無法撤銷。您確定要刪除此客戶端嗎?",
"edit": "編輯",
"save": "保存",
"saveTemplate": "保存模板"
"saveFailed": "保存失敗",
"update": "更新",
"updateSuccess": "更新成功"
},
"config": {
"description": "管理訂閱系統設置",
"restrictUserAgent": "用戶代理限制",
"restrictUserAgentDescription": "根據用戶代理啟用訪問限制",
"singleSubscriptionMode": "單一訂閱模式",
"singleSubscriptionModeDescription": "將所有用戶訂閱轉換為賬戶餘額",
"singleSubscriptionModeDescription": "限制用戶只能有一個有效的訂閱。現有訂閱不受影響",
"subscriptionDomain": "訂閱域名",
"subscriptionDomainDescription": "訂閱鏈接的自定義域名",
"subscriptionDomainPlaceholder": "輸入訂閱域名,每行一個",
@ -21,69 +31,69 @@
"title": "訂閱配置",
"updateError": "更新失敗",
"updateSuccess": "設置更新成功",
"userAgentWhitelist": "用戶代理白名單",
"userAgentWhitelistDescription": "訂閱訪問的允許用戶代理,每行一個。內置模板會自動包含在白名單中",
"userAgentWhitelistPlaceholder": "輸入允許的用戶代理,每行一個",
"userAgentLimit": "{userAgent} 限制",
"userAgentLimitDescription": "根據 {userAgent} 啟用訪問限制",
"userAgentList": "{userAgent} 白名單",
"userAgentListDescription": "允許的 {userAgent} 用於訂閱訪問,每行一個。配置的應用程序 {userAgent} 將自動包含",
"userAgentListPlaceholder": "輸入允許的 {userAgent},每行一個",
"wildcardResolution": "通配符解析",
"wildcardResolutionDescription": "啟用訂閱的通配符域名解析"
},
"description": "配置訂閱設置和客戶端模板",
"messages": {
"noClients": "沒有客戶端模板",
"noClientsDescription": "尚未配置客戶端模板。添加您的第一個模板以開始。"
"form": {
"addTitle": "添加客戶端",
"descriptions": {
"description": "詳細的客戶端描述",
"downloadLink": "平台下載 URL",
"icon": "圖標 URL 或 base64 編碼",
"name": "客戶端顯示名稱",
"outputFormat": "訂閱配置文件格式",
"proxyTemplate": "訂閱鏈接模板,支持變量:",
"template": "訂閱配置模板,支持各種變量",
"userAgentPrefix": "用於區分不同客戶端的客戶端標識符"
},
"editTitle": "編輯客戶端",
"fields": {
"description": "描述",
"icon": "圖標",
"name": "名稱",
"outputFormat": "輸出格式",
"proxyTemplate": "訂閱鏈接",
"template": "配置模板"
},
"tabs": {
"basic": "基本信息",
"download": "下載",
"template": "模板"
},
"validation": {
"nameRequired": "客戶端名稱是必需的",
"userAgentRequiredSuffix": "是必需的"
}
},
"outputFormats": {
"base64": "Base64",
"json": "JSON",
"plain": "純文本",
"yaml": "YAML"
},
"platforms": {
"android": "Android",
"harmony": "HarmonyOS",
"ios": "iOS",
"linux": "Linux",
"mac": "macOS",
"windows": "Windows"
},
"protocol": {
"clients": {
"clash": {
"features": "龐大的生態系統,全面的規則,活躍的社區"
"title": "客戶端管理"
},
"egern": {
"features": "現代iOS客戶端卓越的性能"
},
"hiddify": {
"features": "多平台,全面的協議,適合初學者"
},
"loon": {
"features": "iOS高級客戶端豐富的規則美觀的界面"
},
"netch": {
"features": "以遊戲為重點的代理客戶端"
},
"quantumult": {
"features": "iOS高級客戶端靈活的規則豐富的腳本"
},
"shadowrocket": {
"features": "經典iOS客戶端靈活的配置"
},
"singbox": {
"features": "最新內核官方GUI多平台支持"
},
"stash": {
"features": "現代移動UI全面的協議"
},
"surfboard": {
"features": "免費,活躍開發,現代界面"
},
"surge": {
"features": "高級iOS/Mac工具強大的功能"
},
"v2box": {
"features": "用戶友好的V2Ray客戶端"
},
"v2rayn": {
"features": "流行的Windows客戶端功能豐富"
},
"v2rayng": {
"features": "流行的Android客戶端輕量級"
"table": {
"columns": {
"default": "默認",
"description": "描述",
"name": "客戶端名稱",
"outputFormat": "輸出格式",
"supportedPlatforms": "支持的平台"
}
}
},
"description": "管理代理客戶端的訂閱配置模板",
"features": "主要特點",
"platforms": "平台",
"subscribeTemplate": "訂閱模板配置",
"templateContent": "模板內容",
"templatePlaceholder": "輸入客戶端配置模板...",
"title": "客戶端訂閱模板"
},
"title": "訂閱管理"
}

View File

@ -1,5 +1,5 @@
// @ts-ignore
/* eslint-disable */
import request from '@/utils/request';
/** Create subscribe application POST /v1/admin/application/ */

View File

@ -344,7 +344,7 @@ declare namespace API {
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
download_link: DownloadLink;
};
type CreateSubscribeGroupRequest = {
@ -495,6 +495,15 @@ declare namespace API {
updated_at: number;
};
type DownloadLink = {
ios?: string;
android?: string;
windows?: string;
mac?: string;
linux?: string;
harmony?: string;
};
type EmailAuthticateConfig = {
enable: boolean;
enable_verify: boolean;
@ -1497,7 +1506,7 @@ declare namespace API {
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
download_link?: DownloadLink;
created_at: number;
updated_at: number;
};
@ -1507,6 +1516,8 @@ declare namespace API {
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
user_agent_limit: boolean;
user_agent_list: string;
};
type SubscribeDiscount = {
@ -1773,7 +1784,7 @@ declare namespace API {
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
download_link?: DownloadLink;
};
type UpdateSubscribeGroupRequest = {

View File

@ -770,6 +770,8 @@ declare namespace API {
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
user_agent_limit: boolean;
user_agent_list: string;
};
type SubscribeDiscount = {

View File

@ -774,6 +774,8 @@ declare namespace API {
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
user_agent_limit: boolean;
user_agent_list: string;
};
type SubscribeDiscount = {

View File

@ -868,6 +868,8 @@ declare namespace API {
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
user_agent_limit: boolean;
user_agent_list: string;
};
type SubscribeDiscount = {