mirror of
https://github.com/perfect-panel/ppanel-web.git
synced 2026-02-06 11:40:28 -05:00
✨ feat(subscribe): Update subscription management localization and add new fields
This commit is contained in:
parent
ea08de0aa2
commit
1d9b0a4e06
@ -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>
|
||||
)}
|
||||
|
||||
@ -17,7 +17,6 @@ export default function SubscribePage() {
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<h2 className='text-lg font-semibold'>{t('protocol.title')}</h2>
|
||||
<ProtocolForm />
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -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[];
|
||||
}
|
||||
// 表单验证规则 - 基于 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 clientFormSchema = z.object({
|
||||
template: 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,
|
||||
});
|
||||
// 模拟API调用
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
if (editingClient) {
|
||||
await updateSubscribeApplication({
|
||||
...data,
|
||||
is_default: editingClient.is_default,
|
||||
id: editingClient.id,
|
||||
});
|
||||
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)}
|
||||
>
|
||||
<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}`);
|
||||
}}
|
||||
/>
|
||||
</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>
|
||||
<>
|
||||
<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)}
|
||||
>
|
||||
{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')}
|
||||
/>,
|
||||
],
|
||||
}}
|
||||
/>
|
||||
|
||||
<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'
|
||||
>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name='template'
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>{t('protocol.templateContent')}</FormLabel>
|
||||
<FormControl>
|
||||
<Textarea
|
||||
placeholder={t('protocol.templatePlaceholder')}
|
||||
value={field.value}
|
||||
onChange={field.onChange}
|
||||
rows={20}
|
||||
className='font-mono text-sm'
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<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('form.fields.template')}</FormLabel>
|
||||
<FormControl>
|
||||
<Textarea
|
||||
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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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ý"
|
||||
}
|
||||
},
|
||||
"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 klientů"
|
||||
},
|
||||
"title": "Správa předplatného"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Výchozí",
|
||||
"description": "Popis",
|
||||
"name": "Název klienta",
|
||||
"outputFormat": "Výstupní formát",
|
||||
"supportedPlatforms": "Podporované platformy"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": "Client-Verwaltung"
|
||||
},
|
||||
"title": "Abonnementverwaltung"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Standard",
|
||||
"description": "Beschreibung",
|
||||
"name": "Clientname",
|
||||
"outputFormat": "Ausgabeformat",
|
||||
"supportedPlatforms": "Unterstützte Plattformen"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"title": "Subscription Management"
|
||||
"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 Management"
|
||||
},
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Default",
|
||||
"name": "Client Name",
|
||||
"description": "Description",
|
||||
"outputFormat": "Output Format",
|
||||
"supportedPlatforms": "Supported Platforms"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 verán 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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 Clientes"
|
||||
},
|
||||
"title": "Gestión de Suscripciones"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Predeterminado",
|
||||
"description": "Descripción",
|
||||
"name": "Nombre del Cliente",
|
||||
"outputFormat": "Formato de Salida",
|
||||
"supportedPlatforms": "Plataformas Soportadas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 Clientes"
|
||||
},
|
||||
"title": "Gestión de Suscripciones"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Predeterminado",
|
||||
"description": "Descripción",
|
||||
"name": "Nombre del Cliente",
|
||||
"outputFormat": "Formato de Salida",
|
||||
"supportedPlatforms": "Plataformas Soportadas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "اکوسیستم بزرگ، قوانین جامع، جامعه فعال"
|
||||
},
|
||||
"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": "مشتری محبوب اندروید، سبک"
|
||||
}
|
||||
},
|
||||
"description": "مدیریت الگوهای پیکربندی اشتراک برای مشتریان پروکسی",
|
||||
"features": "ویژگیهای کلیدی",
|
||||
"platforms": "پلتفرمها",
|
||||
"subscribeTemplate": "پیکربندی الگوی اشتراک",
|
||||
"templateContent": "محتوای الگو",
|
||||
"templatePlaceholder": "الگوی پیکربندی مشتری را وارد کنید...",
|
||||
"title": "الگوهای اشتراک مشتری"
|
||||
"title": "مدیریت مشتری"
|
||||
},
|
||||
"title": "مدیریت اشتراک"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "پیشفرض",
|
||||
"description": "توضیحات",
|
||||
"name": "نام مشتری",
|
||||
"outputFormat": "فرمت خروجی",
|
||||
"supportedPlatforms": "پلتفرمهای پشتیبانی شده"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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ö"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": "Asiakashallinta"
|
||||
},
|
||||
"title": "Tilauksen Hallinta"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Oletus",
|
||||
"description": "Kuvaus",
|
||||
"name": "Asiakkaan nimi",
|
||||
"outputFormat": "Tulostusmuoto",
|
||||
"supportedPlatforms": "Tuetut alustat"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 clients"
|
||||
},
|
||||
"title": "Gestion des abonnements"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Par défaut",
|
||||
"description": "Description",
|
||||
"name": "Nom du client",
|
||||
"outputFormat": "Format de sortie",
|
||||
"supportedPlatforms": "Plateformes prises en charge"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "बड़ा पारिस्थितिकी तंत्र, व्यापक नियम, सक्रिय समुदाय"
|
||||
},
|
||||
"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 क्लाइंट, हल्का"
|
||||
}
|
||||
},
|
||||
"description": "प्रॉक्सी क्लाइंट्स के लिए सदस्यता कॉन्फ़िगरेशन टेम्पलेट्स प्रबंधित करें",
|
||||
"features": "मुख्य विशेषताएँ",
|
||||
"platforms": "प्लेटफ़ॉर्म",
|
||||
"subscribeTemplate": "सदस्यता टेम्पलेट कॉन्फ़िगरेशन",
|
||||
"templateContent": "टेम्पलेट सामग्री",
|
||||
"templatePlaceholder": "क्लाइंट कॉन्फ़िगरेशन टेम्पलेट दर्ज करें...",
|
||||
"title": "क्लाइंट सदस्यता टेम्पलेट्स"
|
||||
"title": "क्लाइंट प्रबंधन"
|
||||
},
|
||||
"title": "सदस्यता प्रबंधन"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "डिफ़ॉल्ट",
|
||||
"description": "विवरण",
|
||||
"name": "क्लाइंट नाम",
|
||||
"outputFormat": "आउटपुट प्रारूप",
|
||||
"supportedPlatforms": "समर्थित प्लेटफ़ॉर्म"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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ú"
|
||||
}
|
||||
},
|
||||
"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": "Klienskezelés"
|
||||
},
|
||||
"title": "Előfizetés Kezelés"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Alapértelmezett",
|
||||
"description": "Leírás",
|
||||
"name": "Ügyfél Neve",
|
||||
"outputFormat": "Kimeneti Formátum",
|
||||
"supportedPlatforms": "Támogatott Platformok"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "大規模なエコシステム、包括的なルール、活発なコミュニティ"
|
||||
},
|
||||
"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クライアント、軽量"
|
||||
}
|
||||
},
|
||||
"description": "プロキシクライアントのサブスクリプション設定テンプレートを管理",
|
||||
"features": "主な機能",
|
||||
"platforms": "プラットフォーム",
|
||||
"subscribeTemplate": "サブスクリプションテンプレート設定",
|
||||
"templateContent": "テンプレート内容",
|
||||
"templatePlaceholder": "クライアント設定テンプレートを入力してください...",
|
||||
"title": "クライアントサブスクリプションテンプレート"
|
||||
"title": "クライアント管理"
|
||||
},
|
||||
"title": "サブスクリプション管理"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "デフォルト",
|
||||
"description": "説明",
|
||||
"name": "クライアント名",
|
||||
"outputFormat": "出力形式",
|
||||
"supportedPlatforms": "サポートされているプラットフォーム"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "대규모 생태계, 포괄적인 규칙, 활발한 커뮤니티"
|
||||
},
|
||||
"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 클라이언트, 경량"
|
||||
}
|
||||
},
|
||||
"description": "프록시 클라이언트를 위한 구독 구성 템플릿 관리",
|
||||
"features": "주요 기능",
|
||||
"platforms": "플랫폼",
|
||||
"subscribeTemplate": "구독 템플릿 구성",
|
||||
"templateContent": "템플릿 내용",
|
||||
"templatePlaceholder": "클라이언트 구성 템플릿을 입력하세요...",
|
||||
"title": "클라이언트 구독 템플릿"
|
||||
"title": "클라이언트 관리"
|
||||
},
|
||||
"title": "구독 관리"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "기본",
|
||||
"description": "설명",
|
||||
"name": "클라이언트 이름",
|
||||
"outputFormat": "출력 형식",
|
||||
"supportedPlatforms": "지원되는 플랫폼"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"description": "Administrer abonnementsmaler for proxy-klienter",
|
||||
"features": "Nøkkelfunksjoner",
|
||||
"platforms": "Plattformer",
|
||||
"subscribeTemplate": "Abonnementsmal Konfigurasjon",
|
||||
"templateContent": "Malinnhold",
|
||||
"templatePlaceholder": "Skriv inn klientkonfigurasjonsmal...",
|
||||
"title": "Klient Abonnementsmaler"
|
||||
"title": "Klientadministrasjon"
|
||||
},
|
||||
"title": "Abonnementsadministrasjon"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Standard",
|
||||
"description": "Beskrivelse",
|
||||
"name": "Klientnavn",
|
||||
"outputFormat": "Utdataformat",
|
||||
"supportedPlatforms": "Støttede Plattformer"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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ść"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 klientami"
|
||||
},
|
||||
"title": "Zarządzanie Subskrypcjami"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Domyślny",
|
||||
"description": "Opis",
|
||||
"name": "Nazwa klienta",
|
||||
"outputFormat": "Format wyjściowy",
|
||||
"supportedPlatforms": "Obsługiwane platformy"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 Clientes"
|
||||
},
|
||||
"title": "Gerenciamento de Assinaturas"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Padrão",
|
||||
"description": "Descrição",
|
||||
"name": "Nome do Cliente",
|
||||
"outputFormat": "Formato de Saída",
|
||||
"supportedPlatforms": "Plataformas Suportadas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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ă"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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 Clienților"
|
||||
},
|
||||
"title": "Gestionarea Abonamentelor"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Implicit",
|
||||
"description": "Descriere",
|
||||
"name": "Numele Clientului",
|
||||
"outputFormat": "Format de Ieșire",
|
||||
"supportedPlatforms": "Platforme Suportate"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "Большая экосистема, обширные правила, активное сообщество"
|
||||
},
|
||||
"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, легковесный"
|
||||
}
|
||||
},
|
||||
"description": "Управление шаблонами конфигурации подписки для прокси-клиентов",
|
||||
"features": "Ключевые Особенности",
|
||||
"platforms": "Платформы",
|
||||
"subscribeTemplate": "Конфигурация Шаблона Подписки",
|
||||
"templateContent": "Содержимое Шаблона",
|
||||
"templatePlaceholder": "Введите шаблон конфигурации клиента...",
|
||||
"title": "Шаблоны Подписки Клиентов"
|
||||
"title": "Управление клиентами"
|
||||
},
|
||||
"title": "Управление Подписками"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "По умолчанию",
|
||||
"description": "Описание",
|
||||
"name": "Имя клиента",
|
||||
"outputFormat": "Формат вывода",
|
||||
"supportedPlatforms": "Поддерживаемые платформы"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "ระบบนิเวศขนาดใหญ่, กฎที่ครอบคลุม, ชุมชนที่กระตือรือร้น"
|
||||
},
|
||||
"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, น้ำหนักเบา"
|
||||
}
|
||||
},
|
||||
"description": "จัดการเทมเพลตการกำหนดค่าการสมัครสมาชิกสำหรับลูกค้าพร็อกซี",
|
||||
"features": "คุณสมบัติหลัก",
|
||||
"platforms": "แพลตฟอร์ม",
|
||||
"subscribeTemplate": "การกำหนดค่าเทมเพลตการสมัครสมาชิก",
|
||||
"templateContent": "เนื้อหาเทมเพลต",
|
||||
"templatePlaceholder": "กรอกเทมเพลตการกำหนดค่าลูกค้า...",
|
||||
"title": "เทมเพลตการสมัครสมาชิกของลูกค้า"
|
||||
"title": "การจัดการลูกค้า"
|
||||
},
|
||||
"title": "การจัดการการสมัครสมาชิก"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "ค่าเริ่มต้น",
|
||||
"description": "คำอธิบาย",
|
||||
"name": "ชื่อลูกค้า",
|
||||
"outputFormat": "รูปแบบผลลัพธ์",
|
||||
"supportedPlatforms": "แพลตฟอร์มที่รองรับ"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": "İstemci Yönetimi"
|
||||
},
|
||||
"title": "Abonelik Yönetimi"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "Varsayılan",
|
||||
"description": "Açıklama",
|
||||
"name": "Müşteri Adı",
|
||||
"outputFormat": "Çıktı Formatı",
|
||||
"supportedPlatforms": "Desteklenen Platformlar"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "Велика екосистема, всебічні правила, активна спільнота"
|
||||
},
|
||||
"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, легкий"
|
||||
}
|
||||
},
|
||||
"description": "Керування шаблонами конфігурації підписки для проксі-клієнтів",
|
||||
"features": "Ключові Особливості",
|
||||
"platforms": "Платформи",
|
||||
"subscribeTemplate": "Конфігурація Шаблону Підписки",
|
||||
"templateContent": "Зміст Шаблону",
|
||||
"templatePlaceholder": "Введіть шаблон конфігурації клієнта...",
|
||||
"title": "Шаблони Підписки Клієнтів"
|
||||
"title": "Управління клієнтами"
|
||||
},
|
||||
"title": "Управління Підписками"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "За замовчуванням",
|
||||
"description": "Опис",
|
||||
"name": "Ім'я клієнта",
|
||||
"outputFormat": "Формат виходу",
|
||||
"supportedPlatforms": "Підтримувані платформи"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
},
|
||||
"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ẹ"
|
||||
}
|
||||
},
|
||||
"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ý Khách hàng"
|
||||
},
|
||||
"title": "Quản Lý Đăng Ký"
|
||||
"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ợ"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "生态丰富,规则完善,社区活跃"
|
||||
},
|
||||
"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 客户端,轻量级"
|
||||
}
|
||||
},
|
||||
"description": "管理代理客户端的订阅配置模板",
|
||||
"features": "主要特点",
|
||||
"platforms": "支持平台",
|
||||
"subscribeTemplate": "订阅模板配置",
|
||||
"templateContent": "模板内容",
|
||||
"templatePlaceholder": "输入客户端配置模板...",
|
||||
"title": "客户端订阅模板"
|
||||
"title": "客户端管理"
|
||||
},
|
||||
"title": "订阅管理"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "默认",
|
||||
"description": "描述",
|
||||
"name": "客户端名称",
|
||||
"outputFormat": "输出格式",
|
||||
"supportedPlatforms": "支持的平台"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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": "龐大的生態系統,全面的規則,活躍的社區"
|
||||
},
|
||||
"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客戶端,輕量級"
|
||||
}
|
||||
},
|
||||
"description": "管理代理客戶端的訂閱配置模板",
|
||||
"features": "主要特點",
|
||||
"platforms": "平台",
|
||||
"subscribeTemplate": "訂閱模板配置",
|
||||
"templateContent": "模板內容",
|
||||
"templatePlaceholder": "輸入客戶端配置模板...",
|
||||
"title": "客戶端訂閱模板"
|
||||
"title": "客戶端管理"
|
||||
},
|
||||
"title": "訂閱管理"
|
||||
"table": {
|
||||
"columns": {
|
||||
"default": "默認",
|
||||
"description": "描述",
|
||||
"name": "客戶端名稱",
|
||||
"outputFormat": "輸出格式",
|
||||
"supportedPlatforms": "支持的平台"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
/* eslint-disable */
|
||||
import request from '@/utils/request';
|
||||
|
||||
/** Create subscribe application POST /v1/admin/application/ */
|
||||
|
||||
17
apps/admin/services/admin/typings.d.ts
vendored
17
apps/admin/services/admin/typings.d.ts
vendored
@ -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 = {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as auth from './auth';
|
||||
|
||||
2
apps/admin/services/common/typings.d.ts
vendored
2
apps/admin/services/common/typings.d.ts
vendored
@ -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 = {
|
||||
|
||||
2
apps/user/services/common/typings.d.ts
vendored
2
apps/user/services/common/typings.d.ts
vendored
@ -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 = {
|
||||
|
||||
2
apps/user/services/user/typings.d.ts
vendored
2
apps/user/services/user/typings.d.ts
vendored
@ -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 = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user