feat(marketing): Add marketing management features and localization updates

This commit is contained in:
web 2025-08-08 08:59:19 -07:00 committed by speakeloudest
parent 47d19d1b44
commit ec3133e0c8
53 changed files with 2962 additions and 401 deletions

View File

@ -1,5 +1,6 @@
'use client';
import { createBatchSendEmailTask, getPreSendEmailCount } from '@/services/admin/marketing';
import { zodResolver } from '@hookform/resolvers/zod';
import { Button } from '@workspace/ui/components/button';
import {
@ -33,49 +34,42 @@ import { Textarea } from '@workspace/ui/components/textarea';
import { MarkdownEditor } from '@workspace/ui/custom-components/editor';
import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input';
import { Icon } from '@workspace/ui/custom-components/icon';
import { useTranslations } from 'next-intl';
import { useEffect, useState } from 'react';
import { useForm } from 'react-hook-form';
import { toast } from 'sonner';
import { z } from 'zod';
const emailBroadcastSchema = z.object({
subject: z.string().min(1, 'Email subject cannot be empty'),
content: z.string().min(1, 'Email content cannot be empty'),
// Send settings
additional_emails: z
.string()
.optional()
.refine(
(value) => {
if (!value || value.trim() === '') return true;
const emails = value.split('\n').filter((email) => email.trim() !== '');
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emails.every((email) => emailRegex.test(email.trim()));
},
{
message: 'Please enter valid email addresses, one per line',
},
),
// Send time settings
scheduled_time: z.string().optional(),
user_filters: z.object({
subscription_status: z.string().optional(),
registration_date_from: z.string().optional(),
registration_date_to: z.string().optional(),
user_groups: z.array(z.string()).default([]),
}),
rate_limit: z.object({
email_interval_seconds: z
.number()
.min(1, 'Email interval (seconds) cannot be less than 1')
.default(1),
daily_limit: z.number().min(1, 'Daily limit must be at least 1').default(1000),
}),
});
type EmailBroadcastFormData = z.infer<typeof emailBroadcastSchema>;
export default function EmailBroadcastForm() {
const t = useTranslations('marketing');
// Define schema with internationalized error messages
const emailBroadcastSchema = z.object({
subject: z.string().min(1, t('subject') + ' ' + t('cannotBeEmpty')),
content: z.string().min(1, t('content') + ' ' + t('cannotBeEmpty')),
scope: z.string().default('all'),
register_start_time: z.string().optional(),
register_end_time: z.string().optional(),
additional: z
.string()
.optional()
.refine(
(value) => {
if (!value || value.trim() === '') return true;
const emails = value.split('\n').filter((email) => email.trim() !== '');
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emails.every((email) => emailRegex.test(email.trim()));
},
{
message: t('pleaseEnterValidEmailAddresses'),
},
),
scheduled: z.string().optional(),
interval: z.number().min(0.1, t('emailIntervalMinimum')).optional(),
limit: z.number().min(1, t('dailyLimit')).optional(),
});
type EmailBroadcastFormData = z.infer<typeof emailBroadcastSchema>;
const [open, setOpen] = useState(false);
const [loading, setLoading] = useState(false);
const [estimatedRecipients, setEstimatedRecipients] = useState<{
@ -89,68 +83,71 @@ export default function EmailBroadcastForm() {
defaultValues: {
subject: '',
content: '',
additional_emails: '',
scheduled_time: '',
user_filters: {
subscription_status: 'all',
registration_date_from: '',
registration_date_to: '',
user_groups: [],
},
rate_limit: {
email_interval_seconds: 1,
daily_limit: 1000,
},
scope: 'all',
register_start_time: '',
register_end_time: '',
additional: '',
scheduled: '',
interval: 1,
limit: 1000,
},
});
// Calculate recipient count
const calculateRecipients = () => {
const calculateRecipients = async () => {
const formData = form.getValues();
// Simulate user data statistics (should call API in real implementation)
let userCount = 0;
try {
// Call API to get actual recipient count
const scope = formData.scope || 'all';
const sendingScope = formData.user_filters.subscription_status;
if (sendingScope === 'skip') {
// Send only to additional emails
userCount = 0;
} else {
let baseCount = 1500;
// Convert dates to timestamps if they exist
let register_start_time: number = 0;
let register_end_time: number = 0;
if (sendingScope === 'active') {
baseCount = Math.floor(baseCount * 0.3); // 30% active subscription users
} else if (sendingScope === 'expired') {
baseCount = Math.floor(baseCount * 0.2); // 20% expired subscription users
} else if (sendingScope === 'none') {
baseCount = Math.floor(baseCount * 0.5); // 50% no subscription users
}
// If 'all' or empty, keep baseCount unchanged (all platform users)
// Date filter impact (simplified calculation)
if (
formData.user_filters.registration_date_from ||
formData.user_filters.registration_date_to
) {
baseCount = Math.floor(baseCount * 0.7); // Estimate about 70% after date filtering
if (formData.register_start_time) {
register_start_time = Math.floor(new Date(formData.register_start_time).getTime());
}
userCount = baseCount;
if (formData.register_end_time) {
register_end_time = Math.floor(new Date(formData.register_end_time).getTime());
}
const response = await getPreSendEmailCount({
scope,
register_start_time,
register_end_time,
});
const userCount = response.data?.data?.count || 0;
// Calculate additional email count
const additionalEmails = formData.additional || '';
const additionalCount = additionalEmails
.split('\n')
.filter((email: string) => email.trim() !== '').length;
const total = userCount + additionalCount;
setEstimatedRecipients({
users: userCount,
additional: additionalCount,
total,
});
} catch (error) {
console.error('Failed to get recipient count:', error);
// Set to 0 if API fails, don't use fallback simulation
const additionalEmails = formData.additional || '';
const additionalCount = additionalEmails
.split('\n')
.filter((email: string) => email.trim() !== '').length;
setEstimatedRecipients({
users: 0,
additional: additionalCount,
total: additionalCount,
});
}
// Calculate additional email count
const additionalEmails = formData.additional_emails || '';
const additionalCount = additionalEmails
.split('\n')
.filter((email: string) => email.trim() !== '').length;
const total = userCount + additionalCount;
setEstimatedRecipients({
users: userCount,
additional: additionalCount,
total,
});
};
// Listen to form changes
@ -158,42 +155,72 @@ export default function EmailBroadcastForm() {
// Use useEffect to respond to form changes
useEffect(() => {
calculateRecipients();
const debounceTimer = setTimeout(() => {
calculateRecipients();
}, 500); // Add debounce to avoid too frequent API calls
return () => clearTimeout(debounceTimer);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
watchedValues.user_filters?.subscription_status,
watchedValues.user_filters?.registration_date_from,
watchedValues.user_filters?.registration_date_to,
watchedValues.additional_emails,
watchedValues.scope,
watchedValues.register_start_time,
watchedValues.register_end_time,
watchedValues.additional,
]);
const onSubmit = async (data: EmailBroadcastFormData) => {
setLoading(true);
try {
// Validate scheduled send time
if (data.scheduled_time && data.scheduled_time.trim() !== '') {
const scheduledDate = new Date(data.scheduled_time);
let scheduled: number | undefined;
if (data.scheduled && data.scheduled.trim() !== '') {
const scheduledDate = new Date(data.scheduled);
const now = new Date();
if (scheduledDate <= now) {
toast.error('Scheduled send time must be later than current time');
toast.error(t('scheduledSendTimeMustBeLater'));
return;
}
scheduled = Math.floor(scheduledDate.getTime());
}
// Simulate API call
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log('Email broadcast data:', data);
let register_start_time: number = 0;
let register_end_time: number = 0;
if (!data.scheduled_time || data.scheduled_time.trim() === '') {
toast.success('Email sent successfully');
if (data.register_start_time) {
register_start_time = Math.floor(new Date(data.register_start_time).getTime());
}
if (data.register_end_time) {
register_end_time = Math.floor(new Date(data.register_end_time).getTime());
}
// Prepare API request data
const requestData: API.CreateBatchSendEmailTaskRequest = {
subject: data.subject,
content: data.content,
scope: data.scope,
register_start_time,
register_end_time,
additional: data.additional || undefined,
scheduled,
interval: data.interval ? data.interval * 1000 : undefined, // Convert seconds to milliseconds
limit: data.limit,
};
// Call API to create batch send email task
await createBatchSendEmailTask(requestData);
if (!data.scheduled || data.scheduled.trim() === '') {
toast.success(t('emailBroadcastTaskCreatedSuccessfully'));
} else {
toast.success('Email added to scheduled send queue');
toast.success(t('emailAddedToScheduledQueue'));
}
form.reset();
setOpen(false);
} catch (error) {
toast.error('Send failed, please try again');
console.error('Email broadcast failed:', error);
toast.error(t('sendFailed'));
} finally {
setLoading(false);
}
@ -208,8 +235,10 @@ export default function EmailBroadcastForm() {
<Icon icon='mdi:email-send' className='text-primary h-5 w-5' />
</div>
<div className='flex-1'>
<p className='font-medium'>Email Broadcast</p>
<p className='text-muted-foreground text-sm'>Create new email broadcast campaign</p>
<p className='font-medium'>{t('emailBroadcast')}</p>
<p className='text-muted-foreground text-sm'>
{t('createNewEmailBroadcastCampaign')}
</p>
</div>
</div>
<Icon icon='mdi:chevron-right' className='size-6' />
@ -217,7 +246,7 @@ export default function EmailBroadcastForm() {
</SheetTrigger>
<SheetContent className='w-[700px] max-w-full md:max-w-screen-lg'>
<SheetHeader>
<SheetTitle>Create Email Broadcast</SheetTitle>
<SheetTitle>{t('createBroadcast')}</SheetTitle>
</SheetHeader>
<ScrollArea className='-mx-6 h-[calc(100dvh-48px-36px-36px-env(safe-area-inset-top))] px-6'>
<Form {...form}>
@ -228,8 +257,8 @@ export default function EmailBroadcastForm() {
>
<Tabs defaultValue='content' className='space-y-2'>
<TabsList className='grid w-full grid-cols-2'>
<TabsTrigger value='content'>Email Content</TabsTrigger>
<TabsTrigger value='settings'>Send Settings</TabsTrigger>
<TabsTrigger value='content'>{t('content')}</TabsTrigger>
<TabsTrigger value='settings'>{t('sendSettings')}</TabsTrigger>
</TabsList>
{/* Email Content Tab */}
<TabsContent value='content' className='space-y-2'>
@ -238,9 +267,12 @@ export default function EmailBroadcastForm() {
name='subject'
render={({ field }) => (
<FormItem>
<FormLabel>Email Subject</FormLabel>
<FormLabel>{t('subject')}</FormLabel>
<FormControl>
<Input placeholder='Please enter email subject' {...field} />
<Input
placeholder={`${t('pleaseEnter')} ${t('subject').toLowerCase()}`}
{...field}
/>
</FormControl>
<FormMessage />
</FormItem>
@ -252,7 +284,7 @@ export default function EmailBroadcastForm() {
name='content'
render={({ field }) => (
<FormItem>
<FormLabel>Email Content</FormLabel>
<FormLabel>{t('content')}</FormLabel>
<FormControl>
<MarkdownEditor
value={field.value}
@ -261,9 +293,7 @@ export default function EmailBroadcastForm() {
}}
/>
</FormControl>
<FormDescription>
Use Markdown editor to write email content with preview functionality
</FormDescription>
<FormDescription>{t('useMarkdownEditor')}</FormDescription>
<FormMessage />
</FormItem>
)}
@ -276,32 +306,27 @@ export default function EmailBroadcastForm() {
<div className='grid grid-cols-2 items-center gap-4'>
<FormField
control={form.control}
name='user_filters.subscription_status'
name='scope'
render={({ field }) => (
<FormItem>
<FormLabel>Send Scope</FormLabel>
<FormLabel>{t('sendScope')}</FormLabel>
<Select onValueChange={field.onChange} value={field.value || 'all'}>
<FormControl>
<SelectTrigger>
<SelectValue placeholder='Select send scope' />
<SelectValue placeholder={t('selectSendScope')} />
</SelectTrigger>
</FormControl>
<SelectContent>
<SelectItem value='all'>All platform users</SelectItem>
<SelectItem value='active'>Active subscription users only</SelectItem>
<SelectItem value='all'>{t('allUsers')}</SelectItem>
<SelectItem value='active'>{t('subscribedUsersOnly')}</SelectItem>
<SelectItem value='expired'>
Expired subscription users only
</SelectItem>
<SelectItem value='none'>No subscription users only</SelectItem>
<SelectItem value='skip'>
Additional emails only (skip platform users)
{t('expiredSubscriptionUsersOnly')}
</SelectItem>
<SelectItem value='none'>{t('noSubscriptionUsersOnly')}</SelectItem>
<SelectItem value='skip'>{t('specificUsersOnly')}</SelectItem>
</SelectContent>
</Select>
<FormDescription>
Choose the user scope for email sending. Select &ldquo;Additional emails
only&rdquo; to send only to the email addresses filled below
</FormDescription>
<FormDescription>{t('sendScopeDescription')}</FormDescription>
</FormItem>
)}
/>
@ -309,12 +334,12 @@ export default function EmailBroadcastForm() {
{/* Estimated recipients info */}
<div className='flex justify-end'>
<div className='border-l-primary bg-primary/10 border-l-4 px-4 py-3 text-sm'>
<span className='text-muted-foreground'>Estimated recipients: </span>
<span className='text-muted-foreground'>{t('estimatedRecipients')}: </span>
<span className='text-primary text-lg font-medium'>
{estimatedRecipients.total}
</span>
<span className='text-muted-foreground ml-2 text-xs'>
(users: {estimatedRecipients.users}, additional:{' '}
({t('users')}: {estimatedRecipients.users}, {t('additional')}:{' '}
{estimatedRecipients.additional})
</span>
</div>
@ -324,41 +349,37 @@ export default function EmailBroadcastForm() {
<div className='grid grid-cols-2 gap-4'>
<FormField
control={form.control}
name='user_filters.registration_date_from'
name='register_start_time'
render={({ field }) => (
<FormItem>
<FormLabel>Registration Start Date</FormLabel>
<FormLabel>{t('registrationStartDate')}</FormLabel>
<FormControl>
<EnhancedInput
type='datetime-local'
disabled={form.watch('user_filters.subscription_status') === 'skip'}
disabled={form.watch('scope') === 'skip'}
value={field.value}
onValueChange={field.onChange}
/>
</FormControl>
<FormDescription>
Include users registered on or after this date
</FormDescription>
<FormDescription>{t('includeUsersRegisteredAfter')}</FormDescription>
</FormItem>
)}
/>
<FormField
control={form.control}
name='user_filters.registration_date_to'
name='register_end_time'
render={({ field }) => (
<FormItem>
<FormLabel>Registration End Date</FormLabel>
<FormLabel>{t('registrationEndDate')}</FormLabel>
<FormControl>
<EnhancedInput
type='datetime-local'
disabled={form.watch('user_filters.subscription_status') === 'skip'}
disabled={form.watch('scope') === 'skip'}
value={field.value}
onValueChange={field.onChange}
/>
</FormControl>
<FormDescription>
Include users registered on or before this date
</FormDescription>
<FormDescription>{t('includeUsersRegisteredBefore')}</FormDescription>
</FormItem>
)}
/>
@ -367,21 +388,18 @@ export default function EmailBroadcastForm() {
{/* Additional recipients */}
<FormField
control={form.control}
name='additional_emails'
name='additional'
render={({ field }) => (
<FormItem>
<FormLabel>Additional Recipient Emails</FormLabel>
<FormLabel>{t('additionalRecipientEmails')}</FormLabel>
<FormControl>
<Textarea
placeholder={`Please enter additional recipient emails, one per line, for example:\nexample1@domain.com\nexample2@domain.com\nexample3@domain.com`}
placeholder={`${t('pleaseEnter')}${t('additionalRecipientEmails').toLowerCase()}${t('onePerLine')}for example:\nexample1@domain.com\nexample2@domain.com\nexample3@domain.com`}
className='min-h-[120px] font-mono text-sm'
{...field}
/>
</FormControl>
<FormDescription>
These emails will receive the email additionally, not affected by the user
filter conditions above
</FormDescription>
<FormDescription>{t('additionalRecipientsDescription')}</FormDescription>
<FormMessage />
</FormItem>
)}
@ -390,21 +408,19 @@ export default function EmailBroadcastForm() {
{/* Send time settings */}
<FormField
control={form.control}
name='scheduled_time'
name='scheduled'
render={({ field }) => (
<FormItem>
<FormLabel>Scheduled Send</FormLabel>
<FormLabel>{t('scheduledSend')}</FormLabel>
<FormControl>
<EnhancedInput
type='datetime-local'
placeholder='Leave empty for immediate send'
placeholder={t('leaveEmptyForImmediateSend')}
value={field.value}
onValueChange={field.onChange}
/>
</FormControl>
<FormDescription>
Select send time, leave empty for immediate send
</FormDescription>
<FormDescription>{t('selectSendTime')}</FormDescription>
<FormMessage />
</FormItem>
)}
@ -414,43 +430,42 @@ export default function EmailBroadcastForm() {
<div className='grid grid-cols-2 gap-4'>
<FormField
control={form.control}
name='rate_limit.email_interval_seconds'
name='interval'
render={({ field }) => (
<FormItem>
<FormLabel>Email Interval (seconds)</FormLabel>
<FormLabel>{t('emailInterval')}</FormLabel>
<FormControl>
<Input
type='number'
min={0}
min={1}
step={0.1}
placeholder='1'
{...field}
onChange={(e) => field.onChange(parseFloat(e.target.value) || 1)}
/>
</FormControl>
<FormDescription>Interval time between each email</FormDescription>
<FormDescription>{t('intervalTimeBetweenEmails')}</FormDescription>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='rate_limit.daily_limit'
name='limit'
render={({ field }) => (
<FormItem>
<FormLabel>Daily Send Limit</FormLabel>
<FormLabel>{t('dailySendLimit')}</FormLabel>
<FormControl>
<Input
type='number'
min={1}
step={1}
placeholder='1000'
{...field}
onChange={(e) => field.onChange(parseInt(e.target.value) || 1000)}
/>
</FormControl>
<FormDescription>
Maximum number of emails to send per day
</FormDescription>
<FormDescription>{t('maximumNumberPerDay')}</FormDescription>
<FormMessage />
</FormItem>
)}
@ -463,15 +478,15 @@ export default function EmailBroadcastForm() {
</ScrollArea>
<SheetFooter className='flex flex-row items-center justify-end gap-2 pt-3'>
<Button variant='outline' onClick={() => setOpen(false)}>
Cancel
{t('cancel')}
</Button>
<Button type='submit' form='broadcast-form' disabled={loading}>
{loading && <Icon icon='mdi:loading' className='mr-2 h-4 w-4 animate-spin' />}
{loading
? 'Processing...'
: !form.watch('scheduled_time') || form.watch('scheduled_time')?.trim() === ''
? 'Send Now'
: 'Schedule Send'}
? t('processing')
: !form.watch('scheduled') || form.watch('scheduled')?.trim() === ''
? t('sendNow')
: t('scheduleSend')}
</Button>
</SheetFooter>
</SheetContent>

View File

@ -1,225 +0,0 @@
'use client';
import { ProTable, ProTableActions } from '@/components/pro-table';
import { Badge } from '@workspace/ui/components/badge';
import { Button } from '@workspace/ui/components/button';
import { ScrollArea } from '@workspace/ui/components/scroll-area';
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
SheetTrigger,
} from '@workspace/ui/components/sheet';
import { Icon } from '@workspace/ui/custom-components/icon';
import { formatDate } from '@workspace/ui/utils';
import { useTranslations } from 'next-intl';
import { useRef, useState } from 'react';
interface EmailLog extends Record<string, unknown> {
id: number;
subject: string;
recipient_email: string;
status: 'pending' | 'sent' | 'failed';
sent_at?: string;
error_message?: string;
broadcast_id: number;
}
interface GetEmailLogsParams extends Record<string, unknown> {
page: number;
size: number;
status?: string;
search?: string;
}
// Mock API function
const getEmailLogs = async (params: GetEmailLogsParams) => {
// Simulate API call
await new Promise((resolve) => setTimeout(resolve, 500));
// Mock data
const mockData: EmailLog[] = [
{
id: 1,
subject: 'New Feature Release Notification',
recipient_email: 'user1@example.com',
status: 'sent',
sent_at: '2024-01-15T10:05:00Z',
broadcast_id: 1,
},
{
id: 2,
subject: 'New Feature Release Notification',
recipient_email: 'user2@example.com',
status: 'sent',
sent_at: '2024-01-15T10:05:30Z',
broadcast_id: 1,
},
{
id: 3,
subject: 'New Feature Release Notification',
recipient_email: 'user3@example.com',
status: 'failed',
error_message: 'Invalid email address',
broadcast_id: 1,
},
{
id: 4,
subject: 'System Maintenance Notice',
recipient_email: 'user4@example.com',
status: 'sent',
sent_at: '2024-01-14T15:35:00Z',
broadcast_id: 2,
},
{
id: 5,
subject: 'System Maintenance Notice',
recipient_email: 'user5@example.com',
status: 'pending',
broadcast_id: 2,
},
];
return {
data: {
data: {
list: mockData,
total: mockData.length,
},
},
};
};
export default function BroadcastLogsTable() {
const t = useTranslations('marketing');
const [open, setOpen] = useState(false);
const ref = useRef<ProTableActions>(null);
const getStatusBadge = (status: string) => {
const statusMap = {
pending: { variant: 'secondary' as const, label: 'Pending' },
sent: { variant: 'default' as const, label: 'Sent' },
failed: { variant: 'destructive' as const, label: 'Failed' },
};
const statusInfo = statusMap[status as keyof typeof statusMap] || statusMap.pending;
return <Badge variant={statusInfo.variant}>{statusInfo.label}</Badge>;
};
return (
<Sheet open={open} onOpenChange={setOpen}>
<SheetTrigger asChild>
<div className='flex cursor-pointer items-center justify-between transition-colors'>
<div className='flex items-center gap-3'>
<div className='bg-primary/10 flex h-10 w-10 items-center justify-center rounded-lg'>
<Icon icon='mdi:email-newsletter' className='text-primary h-5 w-5' />
</div>
<div className='flex-1'>
<p className='font-medium'>Broadcast Logs</p>
<p className='text-muted-foreground text-sm'>
View email send records and detailed status
</p>
</div>
</div>
<Icon icon='mdi:chevron-right' className='size-6' />
</div>
</SheetTrigger>
<SheetContent className='w-[90vw] max-w-full md:max-w-screen-xl'>
<SheetHeader>
<SheetTitle>Broadcast Logs</SheetTitle>
</SheetHeader>
<ScrollArea className='-mx-6 h-[calc(100dvh-48px-36px-env(safe-area-inset-top))] px-6'>
<div className='pt-4'>
<ProTable<EmailLog, GetEmailLogsParams>
action={ref}
columns={[
{
accessorKey: 'id',
header: 'ID',
size: 80,
},
{
accessorKey: 'subject',
header: 'Subject',
size: 200,
cell: ({ row }) => (
<div
className='max-w-[200px] truncate'
title={row.getValue('subject') as string}
>
{row.getValue('subject') as string}
</div>
),
},
{
accessorKey: 'recipient_email',
header: 'Recipient Email',
size: 200,
},
{
accessorKey: 'status',
header: 'Status',
size: 100,
cell: ({ row }) => getStatusBadge(row.getValue('status') as string),
},
{
accessorKey: 'sent_at',
header: 'Sent At',
size: 150,
cell: ({ row }) => {
const sentAt = row.getValue('sent_at') as string;
return sentAt ? formatDate(new Date(sentAt)) : '--';
},
},
{
accessorKey: 'error_message',
header: 'Error Message',
size: 200,
cell: ({ row }) => {
const error = row.getValue('error_message') as string;
return error ? <span className='text-sm text-red-600'>{error}</span> : '--';
},
},
]}
request={async (pagination, filter) => {
const { data } = await getEmailLogs({
...pagination,
...filter,
});
return {
list: data.data?.list || [],
total: data.data?.total || 0,
};
}}
params={[
{
key: 'status',
placeholder: 'Status',
options: [
{ label: 'Pending', value: 'pending' },
{ label: 'Sent', value: 'sent' },
{ label: 'Failed', value: 'failed' },
],
},
{
key: 'search',
placeholder: 'Recipient Email',
},
]}
actions={{
render: (row) => {
return [
<Button key='view' variant='outline' size='sm'>
View
</Button>,
];
},
}}
/>
</div>
</ScrollArea>
</SheetContent>
</Sheet>
);
}

View File

@ -0,0 +1,302 @@
'use client';
import { ProTable } from '@/components/pro-table';
import {
getBatchSendEmailTaskList,
getBatchSendEmailTaskStatus,
stopBatchSendEmailTask,
} from '@/services/admin/marketing';
import { Badge } from '@workspace/ui/components/badge';
import { Button } from '@workspace/ui/components/button';
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
DialogTrigger,
} from '@workspace/ui/components/dialog';
import { ScrollArea } from '@workspace/ui/components/scroll-area';
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
SheetTrigger,
} from '@workspace/ui/components/sheet';
import { Icon } from '@workspace/ui/custom-components/icon';
import { formatDate } from '@workspace/ui/utils';
import { useTranslations } from 'next-intl';
import { useState } from 'react';
import { toast } from 'sonner';
export default function EmailTaskManager() {
const t = useTranslations('marketing');
const [refreshing, setRefreshing] = useState<Record<number, boolean>>({});
const [selectedTask, setSelectedTask] = useState<API.BatchSendEmailTask | null>(null);
// Get task status
const refreshTaskStatus = async (taskId: number) => {
setRefreshing((prev) => ({ ...prev, [taskId]: true }));
try {
const response = await getBatchSendEmailTaskStatus({
id: taskId,
});
const taskStatus = response.data?.data;
if (taskStatus) {
// Just show success message, ProTable will auto-refresh
toast.success(t('taskStatusRefreshed'));
}
} catch (error) {
console.error('Failed to refresh task status:', error);
toast.error(t('failedToRefreshTaskStatus'));
} finally {
setRefreshing((prev) => ({ ...prev, [taskId]: false }));
}
};
// Stop task
const stopTask = async (taskId: number) => {
try {
await stopBatchSendEmailTask({
id: taskId,
});
toast.success(t('taskStoppedSuccessfully'));
await refreshTaskStatus(taskId);
} catch (error) {
console.error('Failed to stop task:', error);
toast.error(t('failedToStopTask'));
}
};
const getStatusBadge = (status: number) => {
const statusConfig = {
0: { label: t('notStarted'), variant: 'secondary' as const },
1: { label: t('inProgress'), variant: 'default' as const },
2: { label: t('completed'), variant: 'default' as const },
};
const config = statusConfig[status as keyof typeof statusConfig] || {
label: `${t('status')} ${status}`,
variant: 'secondary' as const,
};
return <Badge variant={config.variant}>{config.label}</Badge>;
};
return (
<Sheet>
<SheetTrigger asChild>
<div className='flex cursor-pointer items-center justify-between transition-colors'>
<div className='flex items-center gap-3'>
<div className='bg-primary/10 flex h-10 w-10 items-center justify-center rounded-lg'>
<Icon icon='mdi:email-multiple' className='text-primary h-5 w-5' />
</div>
<div className='flex-1'>
<p className='font-medium'>{t('emailTaskManager')}</p>
<p className='text-muted-foreground text-sm'>
{t('viewAndManageEmailBroadcastTasks')}
</p>
</div>
</div>
<Icon icon='mdi:chevron-right' className='size-6' />
</div>
</SheetTrigger>
<SheetContent className='w-[1000px] max-w-full md:max-w-screen-lg'>
<SheetHeader>
<SheetTitle>{t('emailBroadcastTasks')}</SheetTitle>
</SheetHeader>
<ScrollArea className='-mx-6 h-[calc(100dvh-48px-36px-env(safe-area-inset-top))] px-6'>
<div className='mt-4 space-y-4'>
<ProTable<API.BatchSendEmailTask, API.GetBatchSendEmailTaskListParams>
columns={[
{
accessorKey: 'subject',
header: t('subject'),
size: 200,
cell: ({ row }) => (
<div
className='max-w-[200px] truncate font-medium'
title={row.getValue('subject') as string}
>
{row.getValue('subject') as string}
</div>
),
},
{
accessorKey: 'scope',
header: t('recipientType'),
size: 120,
cell: ({ row }) => {
const scope = row.getValue('scope') as string;
const scopeLabels = {
all: t('allUsers'),
active: t('subscribedUsers'),
expired: t('expiredUsers'),
none: t('nonSubscribers'),
skip: t('specificUsers'),
};
return scopeLabels[scope as keyof typeof scopeLabels] || scope;
},
},
{
accessorKey: 'status',
header: t('status'),
size: 100,
cell: ({ row }) => getStatusBadge(row.getValue('status') as number),
},
{
accessorKey: 'progress',
header: t('progress'),
size: 150,
cell: ({ row }) => {
const task = row.original as API.BatchSendEmailTask;
const progress = task.total > 0 ? (task.current / task.total) * 100 : 0;
return (
<div className='space-y-1'>
<div className='flex justify-between text-sm'>
<span>
{task.current} / {task.total}
</span>
<span>{progress.toFixed(1)}%</span>
</div>
<div className='bg-muted h-2 overflow-hidden rounded-full'>
<div
className='bg-primary h-full transition-all duration-300'
style={{ width: `${progress}%` }}
/>
</div>
</div>
);
},
},
{
accessorKey: 'created_at',
header: t('createdAt'),
size: 150,
cell: ({ row }) => {
const createdAt = row.getValue('created_at') as number;
return formatDate(createdAt);
},
},
{
accessorKey: 'scheduled',
header: t('sendTime'),
size: 150,
cell: ({ row }) => {
const scheduled = row.getValue('scheduled') as number;
return scheduled && scheduled > 0 ? formatDate(scheduled) : '--';
},
},
]}
request={async (pagination, filters) => {
const response = await getBatchSendEmailTaskList({
...filters,
page: pagination.page,
size: pagination.size,
});
return {
list: response.data?.data?.list || [],
total: response.data?.data?.total || 0,
};
}}
params={[
{
key: 'status',
placeholder: t('status'),
options: [
{ label: t('notStarted'), value: '0' },
{ label: t('inProgress'), value: '1' },
{ label: t('completed'), value: '2' },
],
},
{
key: 'scope',
placeholder: t('sendScope'),
options: [
{ label: t('allUsers'), value: 'all' },
{ label: t('subscribedUsers'), value: 'active' },
{ label: t('expiredUsers'), value: 'expired' },
{ label: t('nonSubscribers'), value: 'none' },
{ label: t('specificUsers'), value: 'skip' },
],
},
]}
actions={{
render: (row) => {
return [
<Dialog key='view-content'>
<DialogTrigger asChild>
<Button
variant='outline'
size='icon'
onClick={() => setSelectedTask(row as API.BatchSendEmailTask)}
>
<Icon icon='mdi:eye' />
</Button>
</DialogTrigger>
<DialogContent className='max-h-[80vh] max-w-4xl'>
<DialogHeader>
<DialogTitle>{t('emailContent')}</DialogTitle>
</DialogHeader>
<ScrollArea className='h-[60vh] pr-4'>
{selectedTask && (
<div className='space-y-4'>
<div>
<h4 className='text-muted-foreground mb-2 text-sm font-medium'>
{t('subject')}
</h4>
<p className='font-medium'>{selectedTask.subject}</p>
</div>
<div>
<h4 className='text-muted-foreground mb-2 text-sm font-medium'>
{t('content')}
</h4>
<div
className='prose prose-sm max-w-none'
dangerouslySetInnerHTML={{ __html: selectedTask.content }}
/>
</div>
{selectedTask.additional && (
<div>
<h4 className='text-muted-foreground mb-2 text-sm font-medium'>
{t('additionalRecipients')}
</h4>
<p className='text-sm'>{selectedTask.additional}</p>
</div>
)}
</div>
)}
</ScrollArea>
</DialogContent>
</Dialog>,
<Button
key='refresh'
variant='outline'
size='icon'
onClick={() => refreshTaskStatus(row.id)}
disabled={refreshing[row.id]}
>
{refreshing[row.id] && (
<Icon icon='mdi:loading' className='mr-2 h-3 w-3 animate-spin' />
)}
<Icon icon='mdi:refresh' className='h-3 w-3' />
</Button>,
...([0, 1].includes(row.status)
? [
<Button key='stop' variant='destructive' onClick={() => stopTask(row.id)}>
{t('stop')}
</Button>,
]
: []),
];
},
}}
/>
</div>
</ScrollArea>
</SheetContent>
</Sheet>
);
}

View File

@ -3,15 +3,15 @@
import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table';
import { useTranslations } from 'next-intl';
import EmailBroadcastForm from './email/broadcast-form';
import BroadcastLogsTable from './email/logs-table';
import EmailTaskManager from './email/task-manager';
export default function MarketingPage() {
const t = useTranslations('marketing');
const formSections = [
{
title: 'Email Marketing',
forms: [{ component: EmailBroadcastForm }, { component: BroadcastLogsTable }],
title: t('emailMarketing'),
forms: [{ component: EmailBroadcastForm }, { component: EmailTaskManager }],
},
];

View File

@ -0,0 +1,97 @@
{
"additional": "Další",
"additionalRecipientEmails": "Další e-mailové adresy příjemců",
"additionalRecipients": "Další příjemci",
"additionalRecipientsDescription": "Tyto e-maily obdrží vysílání kromě uživatelského filtru výše",
"allUsers": "Všichni uživatelé",
"broadcastList": "Seznam vysílání",
"broadcastLogs": "Záznamy vysílání",
"cancel": "Zrušit",
"cannotBeEmpty": "nemůže být prázdné",
"completed": "Dokončeno",
"confirm": "Potvrdit",
"confirmDelete": "Potvrdit smazání",
"content": "Obsah e-mailu",
"create": "Vytvořit",
"createBroadcast": "Vytvořit vysílání",
"createNewEmailBroadcastCampaign": "Vytvořit novou kampaň e-mailového vysílání",
"createSuccess": "Úspěšně vytvořeno",
"createdAt": "Vytvořeno dne",
"dailyLimit": "Denní limit musí být alespoň 1",
"dailySendLimit": "Denní limit odeslání",
"delete": "Smazat",
"deleteDescription": "Tuto operaci nelze vrátit zpět. Opravdu chcete smazat?",
"deleteSuccess": "Úspěšně smazáno",
"edit": "Upravit",
"emailAddedToScheduledQueue": "E-mail přidán do naplánované fronty odeslání",
"emailBroadcast": "E-mailové vysílání",
"emailBroadcastTaskCreatedSuccessfully": "Úkol e-mailového vysílání byl úspěšně vytvořen",
"emailBroadcastTasks": "Úkoly e-mailového vysílání",
"emailContent": "Obsah e-mailu",
"emailInterval": "Interval e-mailu (sekundy)",
"emailIntervalMinimum": "Interval e-mailu musí být alespoň 0,1 sekundy",
"emailMarketing": "E-mailový marketing",
"emailTaskManager": "Správce úkolů e-mailu",
"errorMessage": "Zpráva o chybě",
"estimatedRecipients": "Odhadovaný počet příjemců",
"expiredSubscriptionUsersOnly": "Pouze uživatelé s vypršeným předplatným",
"expiredUsers": "Uživatelé s vypršeným předplatným",
"failCount": "Počet neúspěchů",
"failed": "Neúspěšně",
"failedToRefreshTaskStatus": "Nepodařilo se obnovit stav úkolu",
"failedToStopTask": "Nepodařilo se zastavit úkol",
"inProgress": "Probíhá",
"includeUsersRegisteredAfter": "Zahrnout uživatele registrované po tomto datu",
"includeUsersRegisteredBefore": "Zahrnout uživatele registrované před tímto datem",
"intervalTimeBetweenEmails": "Časový interval mezi jednotlivými e-maily",
"leaveEmptyForImmediateSend": "Nechte prázdné pro okamžité odeslání",
"logList": "Seznam záznamů",
"marketingManagement": "Správa marketingu",
"maximumNumberPerDay": "Maximální počet e-mailů k odeslání za den",
"noSubscriptionUsersOnly": "Pouze uživatelé bez předplatného",
"nonSubscribers": "Nepředplatitelé",
"notStarted": "Nebylo zahájeno",
"onePerLine": "jeden na řádek",
"only": "pouze",
"pending": "Čeká se",
"pleaseEnter": "Prosím zadejte",
"pleaseEnterValidEmailAddresses": "Prosím zadejte platné e-mailové adresy, jednu na řádek",
"processing": "Zpracovává se...",
"progress": "Pokrok",
"recipient": "Příjemce",
"recipientEmail": "E-mail příjemce",
"recipientType": "Typ příjemce",
"registrationEndDate": "Datum ukončení registrace",
"registrationStartDate": "Datum zahájení registrace",
"scheduleSend": "Naplánovat odeslání",
"scheduledSend": "Naplánované odeslání",
"scheduledSendTimeMustBeLater": "Čas naplánovaného odeslání musí být pozdější než aktuální čas",
"selectSendScope": "Vyberte rozsah odeslání",
"selectSendTime": "Vyberte čas odeslání, nechte prázdné pro okamžité odeslání",
"sendFailed": "Odeslání selhalo, zkuste to prosím znovu",
"sendNow": "Odeslat nyní",
"sendScope": "Rozsah odeslání",
"sendScopeDescription": "Vyberte uživatelský rozsah pro odesílání e-mailů. Vyberte \"Pouze další e-maily\" pro odeslání pouze na e-mailové adresy vyplněné níže",
"sendSettings": "Nastavení odeslání",
"sendTime": "Čas odeslání",
"sending": "Odesílání",
"sentAt": "Odesláno dne",
"specificUsers": "Specifičtí uživatelé",
"specificUsersOnly": "Pouze další e-maily (přeskočit uživatele platformy)",
"status": "Stav",
"stop": "Zastavit",
"stopped": "Zastaveno",
"subject": "Předmět e-mailu",
"subscribedUsers": "Přihlášení uživatelé",
"subscribedUsersOnly": "Pouze přihlášení uživatelé",
"successCount": "Počet úspěchů",
"taskStatusRefreshed": "Stav úkolu obnoven",
"taskStoppedSuccessfully": "Úkol úspěšně zastaven",
"totalSent": "Celkem odesláno",
"updateSuccess": "Úspěšně aktualizováno",
"useMarkdownEditor": "Použijte editor Markdown pro psaní obsahu e-mailu s funkcí náhledu",
"users": "uživatelé",
"view": "Zobrazit",
"viewAndManageEmailBroadcastTasks": "Zobrazit a spravovat úkoly e-mailového vysílání",
"viewContent": "Zobrazit obsah"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Přístrojová deska",
"Document Management": "Správa dokumentů",
"Finance": "Finance",
"Marketing Management": "Řízení marketingu",
"Order Management": "Správa objednávek",
"Payment Config": "Konfigurace platby",
"Product Management": "Správa produktů",

View File

@ -0,0 +1,97 @@
{
"additional": "Zusätzlich",
"additionalRecipientEmails": "Zusätzliche Empfänger-E-Mails",
"additionalRecipients": "Zusätzliche Empfänger",
"additionalRecipientsDescription": "Diese E-Mails erhalten die Übertragung zusätzlich zu dem oben genannten Benutzerfilter",
"allUsers": "Alle Benutzer",
"broadcastList": "Übertragungsliste",
"broadcastLogs": "Übertragungsprotokolle",
"cancel": "Abbrechen",
"cannotBeEmpty": "darf nicht leer sein",
"completed": "Abgeschlossen",
"confirm": "Bestätigen",
"confirmDelete": "Löschen bestätigen",
"content": "E-Mail-Inhalt",
"create": "Erstellen",
"createBroadcast": "Übertragung erstellen",
"createNewEmailBroadcastCampaign": "Neue E-Mail-Übertragungskampagne erstellen",
"createSuccess": "Erfolgreich erstellt",
"createdAt": "Erstellt am",
"dailyLimit": "Tägliches Limit muss mindestens 1 betragen",
"dailySendLimit": "Tägliches Sendelimit",
"delete": "Löschen",
"deleteDescription": "Dieser Vorgang kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie löschen möchten?",
"deleteSuccess": "Erfolgreich gelöscht",
"edit": "Bearbeiten",
"emailAddedToScheduledQueue": "E-Mail zur geplanten Sendewarteschlange hinzugefügt",
"emailBroadcast": "E-Mail-Übertragung",
"emailBroadcastTaskCreatedSuccessfully": "E-Mail-Übertragungsaufgabe erfolgreich erstellt",
"emailBroadcastTasks": "E-Mail-Übertragungsaufgaben",
"emailContent": "E-Mail-Inhalt",
"emailInterval": "E-Mail-Intervall (Sekunden)",
"emailIntervalMinimum": "E-Mail-Intervall muss mindestens 0,1 Sekunden betragen",
"emailMarketing": "E-Mail-Marketing",
"emailTaskManager": "E-Mail-Aufgabenmanager",
"errorMessage": "Fehlermeldung",
"estimatedRecipients": "Geschätzte Empfänger",
"expiredSubscriptionUsersOnly": "Nur abgelaufene Abonnenten",
"expiredUsers": "Abgelaufene Benutzer",
"failCount": "Fehleranzahl",
"failed": "Fehlgeschlagen",
"failedToRefreshTaskStatus": "Aktualisierung des Aufgabenstatus fehlgeschlagen",
"failedToStopTask": "Beenden der Aufgabe fehlgeschlagen",
"inProgress": "In Bearbeitung",
"includeUsersRegisteredAfter": "Benutzer einbeziehen, die nach diesem Datum registriert sind",
"includeUsersRegisteredBefore": "Benutzer einbeziehen, die vor diesem Datum registriert sind",
"intervalTimeBetweenEmails": "Intervallzeit zwischen jeder E-Mail",
"leaveEmptyForImmediateSend": "Leer lassen für sofortige Sendung",
"logList": "Protokollliste",
"marketingManagement": "Marketing-Management",
"maximumNumberPerDay": "Maximale Anzahl von E-Mails, die pro Tag gesendet werden dürfen",
"noSubscriptionUsersOnly": "Nur keine Abonnenten",
"nonSubscribers": "Nicht-Abonnenten",
"notStarted": "Nicht gestartet",
"onePerLine": "eine pro Zeile",
"only": "nur",
"pending": "Ausstehend",
"pleaseEnter": "Bitte eingeben",
"pleaseEnterValidEmailAddresses": "Bitte geben Sie gültige E-Mail-Adressen ein, eine pro Zeile",
"processing": "Verarbeitung...",
"progress": "Fortschritt",
"recipient": "Empfänger",
"recipientEmail": "Empfänger-E-Mail",
"recipientType": "Empfängertyp",
"registrationEndDate": "Registrierungsenddatum",
"registrationStartDate": "Registrierungsstartdatum",
"scheduleSend": "Sendung planen",
"scheduledSend": "Geplante Sendung",
"scheduledSendTimeMustBeLater": "Die geplante Sendezeit muss später als die aktuelle Zeit sein",
"selectSendScope": "Sendeumfang auswählen",
"selectSendTime": "Sendezeit auswählen, leer lassen für sofortige Sendung",
"sendFailed": "Sendung fehlgeschlagen, bitte erneut versuchen",
"sendNow": "Jetzt senden",
"sendScope": "Sendeumfang",
"sendScopeDescription": "Wählen Sie den Benutzerumfang für den E-Mail-Versand. Wählen Sie \"Nur zusätzliche E-Mails\", um nur an die unten ausgefüllten E-Mail-Adressen zu senden",
"sendSettings": "Sendeinstellungen",
"sendTime": "Sendezeit",
"sending": "Senden",
"sentAt": "Gesendet am",
"specificUsers": "Spezifische Benutzer",
"specificUsersOnly": "Nur zusätzliche E-Mails (Plattformbenutzer überspringen)",
"status": "Status",
"stop": "Stoppen",
"stopped": "Gestoppt",
"subject": "E-Mail-Betreff",
"subscribedUsers": "Abonnierte Benutzer",
"subscribedUsersOnly": "Nur abonnierte Benutzer",
"successCount": "Erfolgsanzahl",
"taskStatusRefreshed": "Aufgabenstatus aktualisiert",
"taskStoppedSuccessfully": "Aufgabe erfolgreich gestoppt",
"totalSent": "Insgesamt gesendet",
"updateSuccess": "Erfolgreich aktualisiert",
"useMarkdownEditor": "Markdown-Editor verwenden, um E-Mail-Inhalte mit Vorschaufunktion zu schreiben",
"users": "Benutzer",
"view": "Anzeigen",
"viewAndManageEmailBroadcastTasks": "E-Mail-Übertragungsaufgaben anzeigen und verwalten",
"viewContent": "Inhalt anzeigen"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Armaturenbrett",
"Document Management": "Dokumentenverwaltung",
"Finance": "Finanzen",
"Marketing Management": "Marketingmanagement",
"Order Management": "Bestellverwaltung",
"Payment Config": "Zahlungskonfiguration",
"Product Management": "Produktmanagement",

View File

@ -1,39 +1,97 @@
{
"additional": "Additional",
"additionalRecipientEmails": "Additional recipient emails",
"additionalRecipients": "Additional Recipients",
"additionalRecipientsDescription": "These emails will receive the broadcast in addition to the user filter above",
"allUsers": "All Users",
"broadcastList": "Broadcast List",
"broadcastLogs": "Broadcast Logs",
"cancel": "Cancel",
"cannotBeEmpty": "cannot be empty",
"completed": "Completed",
"confirm": "Confirm",
"confirmDelete": "Confirm Delete",
"content": "Email Content",
"create": "Create",
"createBroadcast": "Create Broadcast",
"createNewEmailBroadcastCampaign": "Create new email broadcast campaign",
"createSuccess": "Created Successfully",
"createdAt": "Created At",
"dailyLimit": "Daily limit must be at least 1",
"dailySendLimit": "Daily Send Limit",
"delete": "Delete",
"deleteDescription": "This operation cannot be undone. Are you sure you want to delete?",
"deleteSuccess": "Deleted Successfully",
"edit": "Edit",
"emailAddedToScheduledQueue": "Email added to scheduled send queue",
"emailBroadcast": "Email Broadcast",
"emailBroadcastTaskCreatedSuccessfully": "Email broadcast task created successfully",
"emailBroadcastTasks": "Email Broadcast Tasks",
"emailContent": "Email Content",
"emailInterval": "Email Interval (seconds)",
"emailIntervalMinimum": "Email interval must be at least 0.1 seconds",
"emailMarketing": "Email Marketing",
"emailTaskManager": "Email Task Manager",
"errorMessage": "Error Message",
"estimatedRecipients": "Estimated recipients",
"expiredSubscriptionUsersOnly": "Expired subscription users only",
"expiredUsers": "Expired Users",
"failCount": "Fail Count",
"failed": "Failed",
"failedToRefreshTaskStatus": "Failed to refresh task status",
"failedToStopTask": "Failed to stop task",
"inProgress": "In Progress",
"includeUsersRegisteredAfter": "Include users registered on or after this date",
"includeUsersRegisteredBefore": "Include users registered on or before this date",
"intervalTimeBetweenEmails": "Interval time between each email",
"leaveEmptyForImmediateSend": "Leave empty for immediate send",
"logList": "Log List",
"marketingManagement": "Marketing Management",
"maximumNumberPerDay": "Maximum number of emails to send per day",
"noSubscriptionUsersOnly": "No subscription users only",
"nonSubscribers": "Non-subscribers",
"notStarted": "Not Started",
"onePerLine": "one per line",
"only": "only",
"pending": "Pending",
"pleaseEnter": "Please enter",
"pleaseEnterValidEmailAddresses": "Please enter valid email addresses, one per line",
"processing": "Processing...",
"progress": "Progress",
"recipient": "Recipient",
"recipientEmail": "Recipient Email",
"recipientType": "Recipient Type",
"registrationEndDate": "Registration End Date",
"registrationStartDate": "Registration Start Date",
"scheduleSend": "Schedule Send",
"scheduledSend": "Scheduled Send",
"scheduledSendTimeMustBeLater": "Scheduled send time must be later than current time",
"selectSendScope": "Select send scope",
"selectSendTime": "Select send time, leave empty for immediate send",
"sendFailed": "Send failed, please try again",
"sendNow": "Send Now",
"sendScope": "Send Scope",
"sendScopeDescription": "Choose the user scope for email sending. Select \"Additional emails only\" to send only to the email addresses filled below",
"sendSettings": "Send Settings",
"sendTime": "Send Time",
"sending": "Sending",
"sentAt": "Sent At",
"specificUsers": "Specific Users",
"specificUsersOnly": "Additional emails only (skip platform users)",
"status": "Status",
"stop": "Stop",
"stopped": "Stopped",
"subject": "Email Subject",
"subscribedUsers": "Subscribed Users",
"subscribedUsersOnly": "Subscribed users only",
"successCount": "Success Count",
"taskStatusRefreshed": "Task status refreshed",
"taskStoppedSuccessfully": "Task stopped successfully",
"totalSent": "Total Sent",
"updateSuccess": "Updated Successfully",
"view": "View"
"useMarkdownEditor": "Use Markdown editor to write email content with preview functionality",
"users": "users",
"view": "View",
"viewAndManageEmailBroadcastTasks": "View and manage email broadcast tasks",
"viewContent": "View Content"
}

View File

@ -0,0 +1,97 @@
{
"additional": "Adicional",
"additionalRecipientEmails": "Correos electrónicos de destinatarios adicionales",
"additionalRecipients": "Destinatarios adicionales",
"additionalRecipientsDescription": "Estos correos electrónicos recibirán la transmisión además del filtro de usuario anterior",
"allUsers": "Todos los usuarios",
"broadcastList": "Lista de difusión",
"broadcastLogs": "Registros de difusión",
"cancel": "Cancelar",
"cannotBeEmpty": "no puede estar vacío",
"completed": "Completado",
"confirm": "Confirmar",
"confirmDelete": "Confirmar eliminación",
"content": "Contenido del correo electrónico",
"create": "Crear",
"createBroadcast": "Crear difusión",
"createNewEmailBroadcastCampaign": "Crear nueva campaña de difusión por correo electrónico",
"createSuccess": "Creado con éxito",
"createdAt": "Creado en",
"dailyLimit": "El límite diario debe ser al menos 1",
"dailySendLimit": "Límite de envío diario",
"delete": "Eliminar",
"deleteDescription": "Esta operación no se puede deshacer. ¿Está seguro de que desea eliminar?",
"deleteSuccess": "Eliminado con éxito",
"edit": "Editar",
"emailAddedToScheduledQueue": "Correo electrónico añadido a la cola de envío programado",
"emailBroadcast": "Difusión por correo electrónico",
"emailBroadcastTaskCreatedSuccessfully": "Tarea de difusión por correo electrónico creada con éxito",
"emailBroadcastTasks": "Tareas de difusión por correo electrónico",
"emailContent": "Contenido del correo electrónico",
"emailInterval": "Intervalo de correo electrónico (segundos)",
"emailIntervalMinimum": "El intervalo de correo electrónico debe ser al menos 0.1 segundos",
"emailMarketing": "Marketing por correo electrónico",
"emailTaskManager": "Administrador de tareas de correo electrónico",
"errorMessage": "Mensaje de error",
"estimatedRecipients": "Destinatarios estimados",
"expiredSubscriptionUsersOnly": "Solo usuarios con suscripción expirada",
"expiredUsers": "Usuarios expirados",
"failCount": "Conteo de fallos",
"failed": "Fallido",
"failedToRefreshTaskStatus": "Error al actualizar el estado de la tarea",
"failedToStopTask": "Error al detener la tarea",
"inProgress": "En progreso",
"includeUsersRegisteredAfter": "Incluir usuarios registrados en o después de esta fecha",
"includeUsersRegisteredBefore": "Incluir usuarios registrados en o antes de esta fecha",
"intervalTimeBetweenEmails": "Tiempo de intervalo entre cada correo electrónico",
"leaveEmptyForImmediateSend": "Dejar vacío para envío inmediato",
"logList": "Lista de registros",
"marketingManagement": "Gestión de marketing",
"maximumNumberPerDay": "Número máximo de correos electrónicos a enviar por día",
"noSubscriptionUsersOnly": "Solo usuarios sin suscripción",
"nonSubscribers": "No suscriptores",
"notStarted": "No iniciado",
"onePerLine": "uno por línea",
"only": "solo",
"pending": "Pendiente",
"pleaseEnter": "Por favor ingrese",
"pleaseEnterValidEmailAddresses": "Por favor ingrese direcciones de correo electrónico válidas, una por línea",
"processing": "Procesando...",
"progress": "Progreso",
"recipient": "Destinatario",
"recipientEmail": "Correo electrónico del destinatario",
"recipientType": "Tipo de destinatario",
"registrationEndDate": "Fecha de finalización de registro",
"registrationStartDate": "Fecha de inicio de registro",
"scheduleSend": "Programar envío",
"scheduledSend": "Envío programado",
"scheduledSendTimeMustBeLater": "La hora de envío programado debe ser posterior a la hora actual",
"selectSendScope": "Seleccionar alcance de envío",
"selectSendTime": "Seleccionar hora de envío, dejar vacío para envío inmediato",
"sendFailed": "Envío fallido, por favor intente de nuevo",
"sendNow": "Enviar ahora",
"sendScope": "Alcance de envío",
"sendScopeDescription": "Elija el alcance de usuarios para el envío de correos electrónicos. Seleccione \"Solo correos electrónicos adicionales\" para enviar solo a las direcciones de correo electrónico completadas a continuación",
"sendSettings": "Configuraciones de envío",
"sendTime": "Hora de envío",
"sending": "Enviando",
"sentAt": "Enviado en",
"specificUsers": "Usuarios específicos",
"specificUsersOnly": "Solo correos electrónicos adicionales (omitir usuarios de la plataforma)",
"status": "Estado",
"stop": "Detener",
"stopped": "Detenido",
"subject": "Asunto del correo electrónico",
"subscribedUsers": "Usuarios suscritos",
"subscribedUsersOnly": "Solo usuarios suscritos",
"successCount": "Conteo de éxitos",
"taskStatusRefreshed": "Estado de la tarea actualizado",
"taskStoppedSuccessfully": "Tarea detenida con éxito",
"totalSent": "Total enviado",
"updateSuccess": "Actualizado con éxito",
"useMarkdownEditor": "Utilice el editor Markdown para escribir el contenido del correo electrónico con funcionalidad de vista previa",
"users": "usuarios",
"view": "Ver",
"viewAndManageEmailBroadcastTasks": "Ver y gestionar tareas de difusión por correo electrónico",
"viewContent": "Ver contenido"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Tablero",
"Document Management": "Gestión de Documentos",
"Finance": "Finanzas",
"Marketing Management": "Gestión de Marketing",
"Order Management": "Gestión de Pedidos",
"Payment Config": "Configuración de Pago",
"Product Management": "Gestión de Productos",

View File

@ -0,0 +1,97 @@
{
"additional": "Adicional",
"additionalRecipientEmails": "Correos electrónicos de destinatarios adicionales",
"additionalRecipients": "Destinatarios Adicionales",
"additionalRecipientsDescription": "Estos correos electrónicos recibirán la transmisión además del filtro de usuario anterior",
"allUsers": "Todos los Usuarios",
"broadcastList": "Lista de Transmisión",
"broadcastLogs": "Registros de Transmisión",
"cancel": "Cancelar",
"cannotBeEmpty": "no puede estar vacío",
"completed": "Completado",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Eliminación",
"content": "Contenido del Correo Electrónico",
"create": "Crear",
"createBroadcast": "Crear Transmisión",
"createNewEmailBroadcastCampaign": "Crear nueva campaña de transmisión de correo electrónico",
"createSuccess": "Creado Exitosamente",
"createdAt": "Creado En",
"dailyLimit": "El límite diario debe ser al menos 1",
"dailySendLimit": "Límite de Envío Diario",
"delete": "Eliminar",
"deleteDescription": "Esta operación no se puede deshacer. ¿Está seguro de que desea eliminar?",
"deleteSuccess": "Eliminado Exitosamente",
"edit": "Editar",
"emailAddedToScheduledQueue": "Correo electrónico agregado a la cola de envío programado",
"emailBroadcast": "Transmisión de Correo Electrónico",
"emailBroadcastTaskCreatedSuccessfully": "Tarea de transmisión de correo electrónico creada exitosamente",
"emailBroadcastTasks": "Tareas de Transmisión de Correo Electrónico",
"emailContent": "Contenido del Correo Electrónico",
"emailInterval": "Intervalo de Correo Electrónico (segundos)",
"emailIntervalMinimum": "El intervalo de correo electrónico debe ser al menos 0.1 segundos",
"emailMarketing": "Marketing por Correo Electrónico",
"emailTaskManager": "Administrador de Tareas de Correo Electrónico",
"errorMessage": "Mensaje de Error",
"estimatedRecipients": "Destinatarios Estimados",
"expiredSubscriptionUsersOnly": "Solo usuarios con suscripción expirada",
"expiredUsers": "Usuarios Expirados",
"failCount": "Conteo de Fallos",
"failed": "Fallido",
"failedToRefreshTaskStatus": "Error al actualizar el estado de la tarea",
"failedToStopTask": "Error al detener la tarea",
"inProgress": "En Progreso",
"includeUsersRegisteredAfter": "Incluir usuarios registrados en o después de esta fecha",
"includeUsersRegisteredBefore": "Incluir usuarios registrados en o antes de esta fecha",
"intervalTimeBetweenEmails": "Tiempo de intervalo entre cada correo electrónico",
"leaveEmptyForImmediateSend": "Deje vacío para envío inmediato",
"logList": "Lista de Registros",
"marketingManagement": "Gestión de Marketing",
"maximumNumberPerDay": "Número máximo de correos electrónicos a enviar por día",
"noSubscriptionUsersOnly": "Solo usuarios sin suscripción",
"nonSubscribers": "No suscriptores",
"notStarted": "No Iniciado",
"onePerLine": "uno por línea",
"only": "solo",
"pending": "Pendiente",
"pleaseEnter": "Por favor ingrese",
"pleaseEnterValidEmailAddresses": "Por favor ingrese direcciones de correo electrónico válidas, una por línea",
"processing": "Procesando...",
"progress": "Progreso",
"recipient": "Destinatario",
"recipientEmail": "Correo Electrónico del Destinatario",
"recipientType": "Tipo de Destinatario",
"registrationEndDate": "Fecha de Fin de Registro",
"registrationStartDate": "Fecha de Inicio de Registro",
"scheduleSend": "Programar Envío",
"scheduledSend": "Envío Programado",
"scheduledSendTimeMustBeLater": "La hora de envío programado debe ser posterior a la hora actual",
"selectSendScope": "Seleccionar alcance de envío",
"selectSendTime": "Seleccionar hora de envío, dejar vacío para envío inmediato",
"sendFailed": "Envío fallido, por favor intente de nuevo",
"sendNow": "Enviar Ahora",
"sendScope": "Alcance de Envío",
"sendScopeDescription": "Elija el alcance de usuario para el envío de correos electrónicos. Seleccione \"Solo correos electrónicos adicionales\" para enviar solo a las direcciones de correo electrónico completadas a continuación",
"sendSettings": "Configuraciones de Envío",
"sendTime": "Hora de Envío",
"sending": "Enviando",
"sentAt": "Enviado En",
"specificUsers": "Usuarios Específicos",
"specificUsersOnly": "Solo correos electrónicos adicionales (omitir usuarios de la plataforma)",
"status": "Estado",
"stop": "Detener",
"stopped": "Detenido",
"subject": "Asunto del Correo Electrónico",
"subscribedUsers": "Usuarios Suscritos",
"subscribedUsersOnly": "Solo usuarios suscritos",
"successCount": "Conteo de Éxitos",
"taskStatusRefreshed": "Estado de la tarea actualizado",
"taskStoppedSuccessfully": "Tarea detenida exitosamente",
"totalSent": "Total Enviado",
"updateSuccess": "Actualizado Exitosamente",
"useMarkdownEditor": "Utilice el editor Markdown para escribir contenido de correo electrónico con funcionalidad de vista previa",
"users": "usuarios",
"view": "Ver",
"viewAndManageEmailBroadcastTasks": "Ver y gestionar tareas de transmisión de correo electrónico",
"viewContent": "Ver Contenido"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Tablero",
"Document Management": "Gestión de Documentos",
"Finance": "Finanzas",
"Marketing Management": "Gestión de Marketing",
"Order Management": "Gestión de Pedidos",
"Payment Config": "Configuración de Pago",
"Product Management": "Gestión de Productos",

View File

@ -0,0 +1,97 @@
{
"additional": "اضافی",
"additionalRecipientEmails": "ایمیل‌های اضافی گیرندگان",
"additionalRecipients": "گیرندگان اضافی",
"additionalRecipientsDescription": "این ایمیل‌ها به همراه فیلتر کاربر بالا، پخش را دریافت خواهند کرد",
"allUsers": "تمام کاربران",
"broadcastList": "لیست پخش",
"broadcastLogs": "گزارش‌های پخش",
"cancel": "لغو",
"cannotBeEmpty": "نمی‌تواند خالی باشد",
"completed": "تکمیل شده",
"confirm": "تأیید",
"confirmDelete": "تأیید حذف",
"content": "محتوای ایمیل",
"create": "ایجاد",
"createBroadcast": "ایجاد پخش",
"createNewEmailBroadcastCampaign": "ایجاد کمپین جدید پخش ایمیل",
"createSuccess": "با موفقیت ایجاد شد",
"createdAt": "تاریخ ایجاد",
"dailyLimit": "حداکثر روزانه باید حداقل ۱ باشد",
"dailySendLimit": "حداکثر ارسال روزانه",
"delete": "حذف",
"deleteDescription": "این عملیات قابل بازگشت نیست. آیا مطمئن هستید که می‌خواهید حذف کنید؟",
"deleteSuccess": "با موفقیت حذف شد",
"edit": "ویرایش",
"emailAddedToScheduledQueue": "ایمیل به صف ارسال زمان‌بندی شده اضافه شد",
"emailBroadcast": "پخش ایمیل",
"emailBroadcastTaskCreatedSuccessfully": "وظیفه پخش ایمیل با موفقیت ایجاد شد",
"emailBroadcastTasks": "وظایف پخش ایمیل",
"emailContent": "محتوای ایمیل",
"emailInterval": "فاصله زمانی ایمیل (ثانیه)",
"emailIntervalMinimum": "فاصله زمانی ایمیل باید حداقل ۰.۱ ثانیه باشد",
"emailMarketing": "بازاریابی ایمیلی",
"emailTaskManager": "مدیر وظایف ایمیل",
"errorMessage": "پیام خطا",
"estimatedRecipients": "گیرندگان تخمینی",
"expiredSubscriptionUsersOnly": "فقط کاربران با اشتراک منقضی شده",
"expiredUsers": "کاربران منقضی شده",
"failCount": "تعداد شکست‌ها",
"failed": "شکست خورده",
"failedToRefreshTaskStatus": "عدم توانایی در به‌روزرسانی وضعیت وظیفه",
"failedToStopTask": "عدم توانایی در متوقف کردن وظیفه",
"inProgress": "در حال انجام",
"includeUsersRegisteredAfter": "شامل کاربران ثبت‌نام شده در یا بعد از این تاریخ",
"includeUsersRegisteredBefore": "شامل کاربران ثبت‌نام شده در یا قبل از این تاریخ",
"intervalTimeBetweenEmails": "فاصله زمانی بین هر ایمیل",
"leaveEmptyForImmediateSend": "برای ارسال فوری خالی بگذارید",
"logList": "لیست گزارش‌ها",
"marketingManagement": "مدیریت بازاریابی",
"maximumNumberPerDay": "حداکثر تعداد ایمیل‌ها برای ارسال در روز",
"noSubscriptionUsersOnly": "فقط کاربران بدون اشتراک",
"nonSubscribers": "غیر مشترکین",
"notStarted": "شروع نشده",
"onePerLine": "یکی در هر خط",
"only": "فقط",
"pending": "در انتظار",
"pleaseEnter": "لطفاً وارد کنید",
"pleaseEnterValidEmailAddresses": "لطفاً آدرس‌های ایمیل معتبر را وارد کنید، یکی در هر خط",
"processing": "در حال پردازش...",
"progress": "پیشرفت",
"recipient": "گیرنده",
"recipientEmail": "ایمیل گیرنده",
"recipientType": "نوع گیرنده",
"registrationEndDate": "تاریخ پایان ثبت‌نام",
"registrationStartDate": "تاریخ شروع ثبت‌نام",
"scheduleSend": "زمان‌بندی ارسال",
"scheduledSend": "ارسال زمان‌بندی شده",
"scheduledSendTimeMustBeLater": "زمان ارسال زمان‌بندی شده باید بعد از زمان کنونی باشد",
"selectSendScope": "دامنه ارسال را انتخاب کنید",
"selectSendTime": "زمان ارسال را انتخاب کنید، برای ارسال فوری خالی بگذارید",
"sendFailed": "ارسال ناموفق بود، لطفاً دوباره تلاش کنید",
"sendNow": "اکنون ارسال کنید",
"sendScope": "دامنه ارسال",
"sendScopeDescription": "دامنه کاربری برای ارسال ایمیل را انتخاب کنید. برای ارسال فقط به آدرس‌های ایمیل پر شده در زیر، \"فقط ایمیل‌های اضافی\" را انتخاب کنید",
"sendSettings": "تنظیمات ارسال",
"sendTime": "زمان ارسال",
"sending": "در حال ارسال",
"sentAt": "در تاریخ ارسال شد",
"specificUsers": "کاربران خاص",
"specificUsersOnly": "فقط ایمیل‌های اضافی (کاربران پلتفرم را نادیده بگیرید)",
"status": "وضعیت",
"stop": "متوقف کردن",
"stopped": "متوقف شده",
"subject": "موضوع ایمیل",
"subscribedUsers": "کاربران مشترک",
"subscribedUsersOnly": "فقط کاربران مشترک",
"successCount": "تعداد موفقیت‌ها",
"taskStatusRefreshed": "وضعیت وظیفه به‌روزرسانی شد",
"taskStoppedSuccessfully": "وظیفه با موفقیت متوقف شد",
"totalSent": "مجموع ارسال شده",
"updateSuccess": "با موفقیت به‌روزرسانی شد",
"useMarkdownEditor": "از ویرایشگر Markdown برای نوشتن محتوای ایمیل با قابلیت پیش‌نمایش استفاده کنید",
"users": "کاربران",
"view": "مشاهده",
"viewAndManageEmailBroadcastTasks": "مشاهده و مدیریت وظایف پخش ایمیل",
"viewContent": "مشاهده محتوا"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "داشبورد",
"Document Management": "مدیریت اسناد",
"Finance": "امور مالی",
"Marketing Management": "مدیریت بازاریابی",
"Order Management": "مدیریت سفارش",
"Payment Config": "پیکربندی پرداخت",
"Product Management": "مدیریت محصول",

View File

@ -0,0 +1,97 @@
{
"additional": "Lisä",
"additionalRecipientEmails": "Lisä vastaanottaja sähköpostit",
"additionalRecipients": "Lisä vastaanottajat",
"additionalRecipientsDescription": "Nämä sähköpostit saavat lähetyksen lisäksi yllä olevaan käyttäjäsuodattimeen",
"allUsers": "Kaikki käyttäjät",
"broadcastList": "Lähetyslista",
"broadcastLogs": "Lähetyspäiväkirjat",
"cancel": "Peruuta",
"cannotBeEmpty": "ei voi olla tyhjää",
"completed": "Valmis",
"confirm": "Vahvista",
"confirmDelete": "Vahvista poisto",
"content": "Sähköpostin sisältö",
"create": "Luo",
"createBroadcast": "Luo lähetys",
"createNewEmailBroadcastCampaign": "Luo uusi sähköpostilähetyskampanja",
"createSuccess": "Luotiin onnistuneesti",
"createdAt": "Luotu",
"dailyLimit": "Päivittäinen raja on oltava vähintään 1",
"dailySendLimit": "Päivittäinen lähetysraja",
"delete": "Poista",
"deleteDescription": "Tätä toimintoa ei voi peruuttaa. Oletko varma, että haluat poistaa?",
"deleteSuccess": "Poistettu onnistuneesti",
"edit": "Muokkaa",
"emailAddedToScheduledQueue": "Sähköposti lisätty aikataulutettujen lähetyksien jonoon",
"emailBroadcast": "Sähköpostilähetys",
"emailBroadcastTaskCreatedSuccessfully": "Sähköpostilähetystehtävä luotiin onnistuneesti",
"emailBroadcastTasks": "Sähköpostilähetystehtävät",
"emailContent": "Sähköpostin sisältö",
"emailInterval": "Sähköpostiväli (sekunteina)",
"emailIntervalMinimum": "Sähköpostivälin on oltava vähintään 0,1 sekuntia",
"emailMarketing": "Sähköpostimarkkinointi",
"emailTaskManager": "Sähköpostitehtävien hallinta",
"errorMessage": "Virheviesti",
"estimatedRecipients": "Arvioidut vastaanottajat",
"expiredSubscriptionUsersOnly": "Vain vanhentuneen tilauksen käyttäjät",
"expiredUsers": "Vanhentuneet käyttäjät",
"failCount": "Epäonnistumisten määrä",
"failed": "Epäonnistui",
"failedToRefreshTaskStatus": "Tehtävän tilan päivittäminen epäonnistui",
"failedToStopTask": "Tehtävän pysäyttäminen epäonnistui",
"inProgress": "Käynnissä",
"includeUsersRegisteredAfter": "Sisällytä käyttäjät, jotka on rekisteröity tämän päivämäärän jälkeen",
"includeUsersRegisteredBefore": "Sisällytä käyttäjät, jotka on rekisteröity tämän päivämäärän ennen",
"intervalTimeBetweenEmails": "Väli sähköpostien välillä",
"leaveEmptyForImmediateSend": "Jätä tyhjäksi välittömäksi lähetykseksi",
"logList": "Päiväkirjalista",
"marketingManagement": "Markkinoinnin hallinta",
"maximumNumberPerDay": "Suurin määrä sähköposteja lähetettäväksi päivässä",
"noSubscriptionUsersOnly": "Vain ei-tilauksen käyttäjät",
"nonSubscribers": "Ei-tilaajat",
"notStarted": "Ei aloitettu",
"onePerLine": "yksi per rivi",
"only": "vain",
"pending": "Odottaa",
"pleaseEnter": "Ole hyvä ja syötä",
"pleaseEnterValidEmailAddresses": "Ole hyvä ja syötä voimassa olevat sähköpostiosoitteet, yksi per rivi",
"processing": "Käsitellään...",
"progress": "Edistyminen",
"recipient": "Vastaanottaja",
"recipientEmail": "Vastaanottajan sähköposti",
"recipientType": "Vastaanottajan tyyppi",
"registrationEndDate": "Rekisteröinnin päättymispäivämäärä",
"registrationStartDate": "Rekisteröinnin aloituspäivämäärä",
"scheduleSend": "Aikatauluta lähetys",
"scheduledSend": "Aikataulutettu lähetys",
"scheduledSendTimeMustBeLater": "Aikataulutetun lähetyksen ajan on oltava myöhemmin kuin nykyinen aika",
"selectSendScope": "Valitse lähetyksen laajuus",
"selectSendTime": "Valitse lähetysaika, jätä tyhjäksi välittömäksi lähetykseksi",
"sendFailed": "Lähetys epäonnistui, yritä uudelleen",
"sendNow": "Lähetä nyt",
"sendScope": "Lähetyksen laajuus",
"sendScopeDescription": "Valitse käyttäjälaajuus sähköpostin lähettämiseen. Valitse \"Vain lisäsähköpostit\" lähettääksesi vain alla täytettyihin sähköpostiosoitteisiin",
"sendSettings": "Lähetyksen asetukset",
"sendTime": "Lähetysaika",
"sending": "Lähetetään",
"sentAt": "Lähetetty",
"specificUsers": "Erityiset käyttäjät",
"specificUsersOnly": "Vain lisäsähköpostit (ohita alustan käyttäjät)",
"status": "Tila",
"stop": "Pysäytä",
"stopped": "Pysäytetty",
"subject": "Sähköpostin aihe",
"subscribedUsers": "Tilatut käyttäjät",
"subscribedUsersOnly": "Vain tilatut käyttäjät",
"successCount": "Onnistumisten määrä",
"taskStatusRefreshed": "Tehtävän tila päivitetty",
"taskStoppedSuccessfully": "Tehtävä pysäytetty onnistuneesti",
"totalSent": "Yhteensä lähetetty",
"updateSuccess": "Päivitetty onnistuneesti",
"useMarkdownEditor": "Käytä Markdown-editoria sähköpostin sisällön kirjoittamiseen esikatselutoiminnolla",
"users": "käyttäjät",
"view": "Näytä",
"viewAndManageEmailBroadcastTasks": "Näytä ja hallitse sähköpostilähetystehtäviä",
"viewContent": "Näytä sisältö"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Kojelauta",
"Document Management": "Asiakirjojen hallinta",
"Finance": "Rahoitus",
"Marketing Management": "Markkinoinnin Hallinta",
"Order Management": "Tilausten hallinta",
"Payment Config": "Maksukonfiguraatio",
"Product Management": "Tuotteen hallinta",

View File

@ -0,0 +1,97 @@
{
"additional": "Supplémentaire",
"additionalRecipientEmails": "Emails supplémentaires des destinataires",
"additionalRecipients": "Destinataires supplémentaires",
"additionalRecipientsDescription": "Ces emails recevront la diffusion en plus du filtre utilisateur ci-dessus",
"allUsers": "Tous les utilisateurs",
"broadcastList": "Liste de diffusion",
"broadcastLogs": "Journaux de diffusion",
"cancel": "Annuler",
"cannotBeEmpty": "ne peut pas être vide",
"completed": "Terminé",
"confirm": "Confirmer",
"confirmDelete": "Confirmer la suppression",
"content": "Contenu de l'email",
"create": "Créer",
"createBroadcast": "Créer une diffusion",
"createNewEmailBroadcastCampaign": "Créer une nouvelle campagne de diffusion par email",
"createSuccess": "Créé avec succès",
"createdAt": "Créé le",
"dailyLimit": "La limite quotidienne doit être d'au moins 1",
"dailySendLimit": "Limite d'envoi quotidienne",
"delete": "Supprimer",
"deleteDescription": "Cette opération ne peut pas être annulée. Êtes-vous sûr de vouloir supprimer ?",
"deleteSuccess": "Supprimé avec succès",
"edit": "Modifier",
"emailAddedToScheduledQueue": "Email ajouté à la file d'envoi programmée",
"emailBroadcast": "Diffusion par email",
"emailBroadcastTaskCreatedSuccessfully": "Tâche de diffusion par email créée avec succès",
"emailBroadcastTasks": "Tâches de diffusion par email",
"emailContent": "Contenu de l'email",
"emailInterval": "Intervalle d'envoi des emails (secondes)",
"emailIntervalMinimum": "L'intervalle d'email doit être d'au moins 0,1 seconde",
"emailMarketing": "Marketing par email",
"emailTaskManager": "Gestionnaire de tâches d'email",
"errorMessage": "Message d'erreur",
"estimatedRecipients": "Destinataires estimés",
"expiredSubscriptionUsersOnly": "Utilisateurs avec abonnement expiré uniquement",
"expiredUsers": "Utilisateurs expirés",
"failCount": "Nombre d'échecs",
"failed": "Échoué",
"failedToRefreshTaskStatus": "Échec de la mise à jour du statut de la tâche",
"failedToStopTask": "Échec de l'arrêt de la tâche",
"inProgress": "En cours",
"includeUsersRegisteredAfter": "Inclure les utilisateurs enregistrés à partir de cette date",
"includeUsersRegisteredBefore": "Inclure les utilisateurs enregistrés avant cette date",
"intervalTimeBetweenEmails": "Temps d'intervalle entre chaque email",
"leaveEmptyForImmediateSend": "Laissez vide pour un envoi immédiat",
"logList": "Liste des journaux",
"marketingManagement": "Gestion du marketing",
"maximumNumberPerDay": "Nombre maximum d'emails à envoyer par jour",
"noSubscriptionUsersOnly": "Aucun utilisateur avec abonnement uniquement",
"nonSubscribers": "Non-abonnés",
"notStarted": "Non commencé",
"onePerLine": "un par ligne",
"only": "uniquement",
"pending": "En attente",
"pleaseEnter": "Veuillez entrer",
"pleaseEnterValidEmailAddresses": "Veuillez entrer des adresses email valides, une par ligne",
"processing": "Traitement...",
"progress": "Progrès",
"recipient": "Destinataire",
"recipientEmail": "Email du destinataire",
"recipientType": "Type de destinataire",
"registrationEndDate": "Date de fin d'inscription",
"registrationStartDate": "Date de début d'inscription",
"scheduleSend": "Planifier l'envoi",
"scheduledSend": "Envoi programmé",
"scheduledSendTimeMustBeLater": "L'heure d'envoi programmée doit être ultérieure à l'heure actuelle",
"selectSendScope": "Sélectionner le champ d'envoi",
"selectSendTime": "Sélectionner l'heure d'envoi, laissez vide pour un envoi immédiat",
"sendFailed": "Échec de l'envoi, veuillez réessayer",
"sendNow": "Envoyer maintenant",
"sendScope": "Champ d'envoi",
"sendScopeDescription": "Choisissez le champ d'utilisateurs pour l'envoi d'emails. Sélectionnez \"Emails supplémentaires uniquement\" pour envoyer uniquement aux adresses email remplies ci-dessous",
"sendSettings": "Paramètres d'envoi",
"sendTime": "Heure d'envoi",
"sending": "Envoi en cours",
"sentAt": "Envoyé le",
"specificUsers": "Utilisateurs spécifiques",
"specificUsersOnly": "Emails supplémentaires uniquement (ignorer les utilisateurs de la plateforme)",
"status": "Statut",
"stop": "Arrêter",
"stopped": "Arrêté",
"subject": "Objet de l'email",
"subscribedUsers": "Utilisateurs abonnés",
"subscribedUsersOnly": "Utilisateurs abonnés uniquement",
"successCount": "Nombre de succès",
"taskStatusRefreshed": "Statut de la tâche mis à jour",
"taskStoppedSuccessfully": "Tâche arrêtée avec succès",
"totalSent": "Total envoyé",
"updateSuccess": "Mis à jour avec succès",
"useMarkdownEditor": "Utilisez l'éditeur Markdown pour rédiger le contenu de l'email avec une fonctionnalité d'aperçu",
"users": "utilisateurs",
"view": "Voir",
"viewAndManageEmailBroadcastTasks": "Voir et gérer les tâches de diffusion par email",
"viewContent": "Voir le contenu"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Tableau de bord",
"Document Management": "Gestion des documents",
"Finance": "Finance",
"Marketing Management": "Gestion du marketing",
"Order Management": "Gestion des commandes",
"Payment Config": "Configuration de paiement",
"Product Management": "Gestion de produit",

View File

@ -0,0 +1,97 @@
{
"additional": "अतिरिक्त",
"additionalRecipientEmails": "अतिरिक्त प्राप्तकर्ता ईमेल",
"additionalRecipients": "अतिरिक्त प्राप्तकर्ता",
"additionalRecipientsDescription": "ये ईमेल उपरोक्त उपयोगकर्ता फ़िल्टर के अलावा प्रसारण प्राप्त करेंगे",
"allUsers": "सभी उपयोगकर्ता",
"broadcastList": "प्रसारण सूची",
"broadcastLogs": "प्रसारण लॉग",
"cancel": "रद्द करें",
"cannotBeEmpty": "खाली नहीं हो सकता",
"completed": "पूर्ण",
"confirm": "पुष्टि करें",
"confirmDelete": "हटाने की पुष्टि करें",
"content": "ईमेल सामग्री",
"create": "बनाएँ",
"createBroadcast": "प्रसारण बनाएँ",
"createNewEmailBroadcastCampaign": "नई ईमेल प्रसारण अभियान बनाएँ",
"createSuccess": "सफलता से बनाया गया",
"createdAt": "बनाया गया",
"dailyLimit": "दैनिक सीमा कम से कम 1 होनी चाहिए",
"dailySendLimit": "दैनिक भेजने की सीमा",
"delete": "हटाएँ",
"deleteDescription": "यह क्रिया पूर्ववत नहीं की जा सकती। क्या आप वास्तव में हटाना चाहते हैं?",
"deleteSuccess": "सफलता से हटाया गया",
"edit": "संपादित करें",
"emailAddedToScheduledQueue": "ईमेल अनुसूचित भेजने की कतार में जोड़ा गया",
"emailBroadcast": "ईमेल प्रसारण",
"emailBroadcastTaskCreatedSuccessfully": "ईमेल प्रसारण कार्य सफलतापूर्वक बनाया गया",
"emailBroadcastTasks": "ईमेल प्रसारण कार्य",
"emailContent": "ईमेल सामग्री",
"emailInterval": "ईमेल अंतराल (सेकंड)",
"emailIntervalMinimum": "ईमेल अंतराल कम से कम 0.1 सेकंड होना चाहिए",
"emailMarketing": "ईमेल विपणन",
"emailTaskManager": "ईमेल कार्य प्रबंधक",
"errorMessage": "त्रुटि संदेश",
"estimatedRecipients": "अनुमानित प्राप्तकर्ता",
"expiredSubscriptionUsersOnly": "केवल समाप्त सदस्यता वाले उपयोगकर्ता",
"expiredUsers": "समाप्त उपयोगकर्ता",
"failCount": "विफलता की संख्या",
"failed": "विफल",
"failedToRefreshTaskStatus": "कार्य स्थिति को ताज़ा करने में विफल",
"failedToStopTask": "कार्य को रोकने में विफल",
"inProgress": "प्रगति पर",
"includeUsersRegisteredAfter": "इस तिथि के बाद पंजीकृत उपयोगकर्ताओं को शामिल करें",
"includeUsersRegisteredBefore": "इस तिथि से पहले पंजीकृत उपयोगकर्ताओं को शामिल करें",
"intervalTimeBetweenEmails": "प्रत्येक ईमेल के बीच का अंतराल समय",
"leaveEmptyForImmediateSend": "तत्काल भेजने के लिए खाली छोड़ें",
"logList": "लॉग सूची",
"marketingManagement": "विपणन प्रबंधन",
"maximumNumberPerDay": "प्रति दिन भेजने के लिए अधिकतम ईमेल की संख्या",
"noSubscriptionUsersOnly": "केवल कोई सदस्यता वाले उपयोगकर्ता",
"nonSubscribers": "गैर-सदस्य",
"notStarted": "शुरू नहीं हुआ",
"onePerLine": "एक प्रति पंक्ति",
"only": "केवल",
"pending": "लंबित",
"pleaseEnter": "कृपया दर्ज करें",
"pleaseEnterValidEmailAddresses": "कृपया मान्य ईमेल पते दर्ज करें, एक प्रति पंक्ति",
"processing": "प्रसंस्करण...",
"progress": "प्रगति",
"recipient": "प्राप्तकर्ता",
"recipientEmail": "प्राप्तकर्ता ईमेल",
"recipientType": "प्राप्तकर्ता प्रकार",
"registrationEndDate": "पंजीकरण समाप्ति तिथि",
"registrationStartDate": "पंजीकरण प्रारंभ तिथि",
"scheduleSend": "भेजने का कार्यक्रम",
"scheduledSend": "अनुसूचित भेजें",
"scheduledSendTimeMustBeLater": "अनुसूचित भेजने का समय वर्तमान समय से बाद में होना चाहिए",
"selectSendScope": "भेजने के दायरे का चयन करें",
"selectSendTime": "भेजने का समय चुनें, तत्काल भेजने के लिए खाली छोड़ें",
"sendFailed": "भेजने में विफल, कृपया पुनः प्रयास करें",
"sendNow": "अब भेजें",
"sendScope": "भेजने का दायरा",
"sendScopeDescription": "ईमेल भेजने के लिए उपयोगकर्ता दायरा चुनें। केवल नीचे भरे गए ईमेल पते पर भेजने के लिए \"अतिरिक्त ईमेल केवल\" चुनें",
"sendSettings": "भेजने की सेटिंग्स",
"sendTime": "भेजने का समय",
"sending": "भेजना",
"sentAt": "भेजा गया",
"specificUsers": "विशिष्ट उपयोगकर्ता",
"specificUsersOnly": "केवल अतिरिक्त ईमेल (प्लेटफ़ॉर्म उपयोगकर्ताओं को छोड़कर)",
"status": "स्थिति",
"stop": "रोकें",
"stopped": "रुका हुआ",
"subject": "ईमेल विषय",
"subscribedUsers": "सदस्यता प्राप्त उपयोगकर्ता",
"subscribedUsersOnly": "केवल सदस्यता प्राप्त उपयोगकर्ता",
"successCount": "सफलता की संख्या",
"taskStatusRefreshed": "कार्य स्थिति को ताज़ा किया गया",
"taskStoppedSuccessfully": "कार्य सफलतापूर्वक रोका गया",
"totalSent": "कुल भेजा गया",
"updateSuccess": "सफलता से अपडेट किया गया",
"useMarkdownEditor": "ईमेल सामग्री लिखने के लिए मार्कडाउन संपादक का उपयोग करें जिसमें पूर्वावलोकन कार्यक्षमता है",
"users": "उपयोगकर्ता",
"view": "देखें",
"viewAndManageEmailBroadcastTasks": "ईमेल प्रसारण कार्यों को देखें और प्रबंधित करें",
"viewContent": "सामग्री देखें"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "डैशबोर्ड",
"Document Management": "दस्तावेज़ प्रबंधन",
"Finance": "वित्त",
"Marketing Management": "मार्केटिंग प्रबंधन",
"Order Management": "ऑर्डर प्रबंधन",
"Payment Config": "भुगतान कॉन्फ़िगरेशन",
"Product Management": "उत्पाद प्रबंधन",

View File

@ -0,0 +1,97 @@
{
"additional": "További",
"additionalRecipientEmails": "További címzett e-mailek",
"additionalRecipients": "További címzettek",
"additionalRecipientsDescription": "Ezek az e-mailek a fenti felhasználói szűrőn kívül is megkapják a közvetítést",
"allUsers": "Minden felhasználó",
"broadcastList": "Közvetítési lista",
"broadcastLogs": "Közvetítési naplók",
"cancel": "Mégse",
"cannotBeEmpty": "nem lehet üres",
"completed": "Befejezve",
"confirm": "Megerősít",
"confirmDelete": "Törlés megerősítése",
"content": "E-mail tartalom",
"create": "Létrehoz",
"createBroadcast": "Közvetítés létrehozása",
"createNewEmailBroadcastCampaign": "Új e-mail közvetítési kampány létrehozása",
"createSuccess": "Sikeresen létrehozva",
"createdAt": "Létrehozva",
"dailyLimit": "A napi limitnek legalább 1-nek kell lennie",
"dailySendLimit": "Napi küldési limit",
"delete": "Törlés",
"deleteDescription": "Ez a művelet nem vonható vissza. Biztosan törölni szeretné?",
"deleteSuccess": "Sikeresen törölve",
"edit": "Szerkeszt",
"emailAddedToScheduledQueue": "E-mail hozzáadva a tervezett küldési sorhoz",
"emailBroadcast": "E-mail közvetítés",
"emailBroadcastTaskCreatedSuccessfully": "E-mail közvetítési feladat sikeresen létrehozva",
"emailBroadcastTasks": "E-mail közvetítési feladatok",
"emailContent": "E-mail tartalom",
"emailInterval": "E-mail intervallum (másodperc)",
"emailIntervalMinimum": "Az e-mail intervallumnak legalább 0,1 másodpercesnek kell lennie",
"emailMarketing": "E-mail marketing",
"emailTaskManager": "E-mail feladatkezelő",
"errorMessage": "Hibaüzenet",
"estimatedRecipients": "Becsült címzettek",
"expiredSubscriptionUsersOnly": "Csak lejárt előfizetésű felhasználók",
"expiredUsers": "Lejárt felhasználók",
"failCount": "Hibák száma",
"failed": "Sikertelen",
"failedToRefreshTaskStatus": "A feladat állapotának frissítése sikertelen",
"failedToStopTask": "A feladat leállítása sikertelen",
"inProgress": "Folyamatban",
"includeUsersRegisteredAfter": "Felhasználók, akik ezen a napon vagy azt követően regisztráltak",
"includeUsersRegisteredBefore": "Felhasználók, akik ezen a napon vagy azt megelőzően regisztráltak",
"intervalTimeBetweenEmails": "Időintervallum az egyes e-mailek között",
"leaveEmptyForImmediateSend": "Hagyja üresen az azonnali küldéshez",
"logList": "Napló lista",
"marketingManagement": "Marketing menedzsment",
"maximumNumberPerDay": "Maximum e-mailek száma naponta",
"noSubscriptionUsersOnly": "Csak előfizetéssel nem rendelkező felhasználók",
"nonSubscribers": "Nem előfizetők",
"notStarted": "Nem indult el",
"onePerLine": "egy sorban",
"only": "csak",
"pending": "Függőben",
"pleaseEnter": "Kérjük, adja meg",
"pleaseEnterValidEmailAddresses": "Kérjük, adjon meg érvényes e-mail címeket, egy sorban",
"processing": "Feldolgozás...",
"progress": "Haladás",
"recipient": "Címzett",
"recipientEmail": "Címzett e-mail",
"recipientType": "Címzett típusa",
"registrationEndDate": "Regisztrációs végdátum",
"registrationStartDate": "Regisztrációs kezdődátum",
"scheduleSend": "Küldés ütemezése",
"scheduledSend": "Ütemezett küldés",
"scheduledSendTimeMustBeLater": "Az ütemezett küldési időnek később kell lennie, mint a jelenlegi idő",
"selectSendScope": "Küldési terjedelem kiválasztása",
"selectSendTime": "Küldési idő kiválasztása, hagyja üresen az azonnali küldéshez",
"sendFailed": "A küldés sikertelen, kérjük, próbálja újra",
"sendNow": "Küldés most",
"sendScope": "Küldési terjedelem",
"sendScopeDescription": "Válassza ki a felhasználói terjedelmet az e-mail küldéséhez. Válassza a \"Csak további e-mailek\" lehetőséget, ha csak az alább megadott e-mail címekre szeretne küldeni",
"sendSettings": "Küldési beállítások",
"sendTime": "Küldési idő",
"sending": "Küldés alatt",
"sentAt": "Küldve",
"specificUsers": "Különleges felhasználók",
"specificUsersOnly": "Csak további e-mailek (platform felhasználók kihagyása)",
"status": "Állapot",
"stop": "Megállít",
"stopped": "Megállítva",
"subject": "E-mail téma",
"subscribedUsers": "Előfizetett felhasználók",
"subscribedUsersOnly": "Csak előfizetett felhasználók",
"successCount": "Sikeres küldések száma",
"taskStatusRefreshed": "Feladat állapota frissítve",
"taskStoppedSuccessfully": "Feladat sikeresen leállítva",
"totalSent": "Összes küldve",
"updateSuccess": "Sikeresen frissítve",
"useMarkdownEditor": "Használja a Markdown szerkesztőt az e-mail tartalom írásához előnézeti funkcióval",
"users": "felhasználók",
"view": "Megtekintés",
"viewAndManageEmailBroadcastTasks": "E-mail közvetítési feladatok megtekintése és kezelése",
"viewContent": "Tartalom megtekintése"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Irányítópult",
"Document Management": "Dokumentumkezelés",
"Finance": "Pénzügy",
"Marketing Management": "Marketing Menedzsment",
"Order Management": "Rendeléskezelés",
"Payment Config": "Fizetési beállítások",
"Product Management": "Termékmenedzsment",

View File

@ -0,0 +1,97 @@
{
"additional": "追加",
"additionalRecipientEmails": "追加の受信者メール",
"additionalRecipients": "追加の受信者",
"additionalRecipientsDescription": "これらのメールは、上記のユーザーフィルターに加えて放送を受信します",
"allUsers": "すべてのユーザー",
"broadcastList": "放送リスト",
"broadcastLogs": "放送ログ",
"cancel": "キャンセル",
"cannotBeEmpty": "空にすることはできません",
"completed": "完了",
"confirm": "確認",
"confirmDelete": "削除を確認",
"content": "メール内容",
"create": "作成",
"createBroadcast": "放送を作成",
"createNewEmailBroadcastCampaign": "新しいメール放送キャンペーンを作成",
"createSuccess": "作成に成功しました",
"createdAt": "作成日時",
"dailyLimit": "1以上のデイリーログが必要です",
"dailySendLimit": "デイリー送信制限",
"delete": "削除",
"deleteDescription": "この操作は元に戻せません。本当に削除しますか?",
"deleteSuccess": "削除に成功しました",
"edit": "編集",
"emailAddedToScheduledQueue": "メールがスケジュール送信キューに追加されました",
"emailBroadcast": "メール放送",
"emailBroadcastTaskCreatedSuccessfully": "メール放送タスクが正常に作成されました",
"emailBroadcastTasks": "メール放送タスク",
"emailContent": "メール内容",
"emailInterval": "メール間隔(秒)",
"emailIntervalMinimum": "メール間隔は0.1秒以上でなければなりません",
"emailMarketing": "メールマーケティング",
"emailTaskManager": "メールタスクマネージャー",
"errorMessage": "エラーメッセージ",
"estimatedRecipients": "推定受信者",
"expiredSubscriptionUsersOnly": "期限切れのサブスクリプションユーザーのみ",
"expiredUsers": "期限切れのユーザー",
"failCount": "失敗数",
"failed": "失敗",
"failedToRefreshTaskStatus": "タスクステータスの更新に失敗しました",
"failedToStopTask": "タスクの停止に失敗しました",
"inProgress": "進行中",
"includeUsersRegisteredAfter": "この日以降に登録されたユーザーを含める",
"includeUsersRegisteredBefore": "この日以前に登録されたユーザーを含める",
"intervalTimeBetweenEmails": "各メール間の間隔時間",
"leaveEmptyForImmediateSend": "即時送信のために空白のままにする",
"logList": "ログリスト",
"marketingManagement": "マーケティング管理",
"maximumNumberPerDay": "1日に送信できるメールの最大数",
"noSubscriptionUsersOnly": "サブスクリプションのないユーザーのみ",
"nonSubscribers": "非購読者",
"notStarted": "未開始",
"onePerLine": "1行に1つ",
"only": "のみ",
"pending": "保留中",
"pleaseEnter": "入力してください",
"pleaseEnterValidEmailAddresses": "有効なメールアドレスを入力してください1行に1つ",
"processing": "処理中...",
"progress": "進捗",
"recipient": "受信者",
"recipientEmail": "受信者メール",
"recipientType": "受信者タイプ",
"registrationEndDate": "登録終了日",
"registrationStartDate": "登録開始日",
"scheduleSend": "送信スケジュール",
"scheduledSend": "スケジュール送信",
"scheduledSendTimeMustBeLater": "スケジュール送信時間は現在の時間よりも遅くなければなりません",
"selectSendScope": "送信範囲を選択",
"selectSendTime": "送信時間を選択、即時送信のために空白のままにする",
"sendFailed": "送信に失敗しました。再試行してください",
"sendNow": "今すぐ送信",
"sendScope": "送信範囲",
"sendScopeDescription": "メール送信のユーザー範囲を選択します。「追加のメールのみ」を選択すると、下に入力されたメールアドレスのみに送信されます",
"sendSettings": "送信設定",
"sendTime": "送信時間",
"sending": "送信中",
"sentAt": "送信日時",
"specificUsers": "特定のユーザー",
"specificUsersOnly": "追加のメールのみ(プラットフォームユーザーをスキップ)",
"status": "ステータス",
"stop": "停止",
"stopped": "停止しました",
"subject": "メール件名",
"subscribedUsers": "購読ユーザー",
"subscribedUsersOnly": "購読ユーザーのみ",
"successCount": "成功数",
"taskStatusRefreshed": "タスクステータスが更新されました",
"taskStoppedSuccessfully": "タスクが正常に停止しました",
"totalSent": "合計送信数",
"updateSuccess": "更新に成功しました",
"useMarkdownEditor": "プレビュー機能を使ってメール内容を書くためにMarkdownエディタを使用",
"users": "ユーザー",
"view": "表示",
"viewAndManageEmailBroadcastTasks": "メール放送タスクを表示および管理",
"viewContent": "内容を表示"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "ダッシュボード",
"Document Management": "ドキュメント管理",
"Finance": "財務",
"Marketing Management": "マーケティングマネジメント",
"Order Management": "注文管理",
"Payment Config": "支払い設定",
"Product Management": "プロダクトマネジメント",

View File

@ -0,0 +1,97 @@
{
"additional": "추가",
"additionalRecipientEmails": "추가 수신자 이메일",
"additionalRecipients": "추가 수신자",
"additionalRecipientsDescription": "이 이메일은 위의 사용자 필터 외에 방송을 수신합니다.",
"allUsers": "모든 사용자",
"broadcastList": "방송 목록",
"broadcastLogs": "방송 로그",
"cancel": "취소",
"cannotBeEmpty": "비어 있을 수 없습니다",
"completed": "완료",
"confirm": "확인",
"confirmDelete": "삭제 확인",
"content": "이메일 내용",
"create": "생성",
"createBroadcast": "방송 생성",
"createNewEmailBroadcastCampaign": "새 이메일 방송 캠페인 생성",
"createSuccess": "성공적으로 생성됨",
"createdAt": "생성일",
"dailyLimit": "일일 한도는 최소 1 이상이어야 합니다",
"dailySendLimit": "일일 발송 한도",
"delete": "삭제",
"deleteDescription": "이 작업은 취소할 수 없습니다. 정말로 삭제하시겠습니까?",
"deleteSuccess": "성공적으로 삭제됨",
"edit": "편집",
"emailAddedToScheduledQueue": "이메일이 예약 발송 대기열에 추가됨",
"emailBroadcast": "이메일 방송",
"emailBroadcastTaskCreatedSuccessfully": "이메일 방송 작업이 성공적으로 생성됨",
"emailBroadcastTasks": "이메일 방송 작업",
"emailContent": "이메일 내용",
"emailInterval": "이메일 간격 (초)",
"emailIntervalMinimum": "이메일 간격은 최소 0.1초 이상이어야 합니다",
"emailMarketing": "이메일 마케팅",
"emailTaskManager": "이메일 작업 관리자",
"errorMessage": "오류 메시지",
"estimatedRecipients": "예상 수신자",
"expiredSubscriptionUsersOnly": "만료된 구독 사용자만",
"expiredUsers": "만료된 사용자",
"failCount": "실패 수",
"failed": "실패",
"failedToRefreshTaskStatus": "작업 상태를 새로 고치는 데 실패했습니다",
"failedToStopTask": "작업 중지에 실패했습니다",
"inProgress": "진행 중",
"includeUsersRegisteredAfter": "이 날짜 이후에 등록된 사용자 포함",
"includeUsersRegisteredBefore": "이 날짜 이전에 등록된 사용자 포함",
"intervalTimeBetweenEmails": "각 이메일 간의 간격 시간",
"leaveEmptyForImmediateSend": "즉시 발송을 위해 비워 두세요",
"logList": "로그 목록",
"marketingManagement": "마케팅 관리",
"maximumNumberPerDay": "하루에 보낼 수 있는 최대 이메일 수",
"noSubscriptionUsersOnly": "구독 없는 사용자만",
"nonSubscribers": "비구독자",
"notStarted": "시작되지 않음",
"onePerLine": "한 줄에 하나",
"only": "오직",
"pending": "대기 중",
"pleaseEnter": "입력해 주세요",
"pleaseEnterValidEmailAddresses": "유효한 이메일 주소를 입력해 주세요, 한 줄에 하나씩",
"processing": "처리 중...",
"progress": "진행 상황",
"recipient": "수신자",
"recipientEmail": "수신자 이메일",
"recipientType": "수신자 유형",
"registrationEndDate": "등록 종료 날짜",
"registrationStartDate": "등록 시작 날짜",
"scheduleSend": "예약 발송",
"scheduledSend": "예약 발송",
"scheduledSendTimeMustBeLater": "예약 발송 시간은 현재 시간 이후여야 합니다",
"selectSendScope": "발송 범위 선택",
"selectSendTime": "발송 시간 선택, 즉시 발송을 위해 비워 두세요",
"sendFailed": "발송 실패, 다시 시도해 주세요",
"sendNow": "지금 발송",
"sendScope": "발송 범위",
"sendScopeDescription": "이메일 발송을 위한 사용자 범위를 선택하세요. 아래에 입력된 이메일 주소로만 발송하려면 '추가 이메일만'을 선택하세요.",
"sendSettings": "발송 설정",
"sendTime": "발송 시간",
"sending": "발송 중",
"sentAt": "발송일",
"specificUsers": "특정 사용자",
"specificUsersOnly": "추가 이메일만 (플랫폼 사용자 제외)",
"status": "상태",
"stop": "중지",
"stopped": "중지됨",
"subject": "이메일 제목",
"subscribedUsers": "구독한 사용자",
"subscribedUsersOnly": "구독한 사용자만",
"successCount": "성공 수",
"taskStatusRefreshed": "작업 상태가 새로 고쳐졌습니다",
"taskStoppedSuccessfully": "작업이 성공적으로 중지되었습니다",
"totalSent": "총 발송 수",
"updateSuccess": "성공적으로 업데이트됨",
"useMarkdownEditor": "미리보기 기능이 있는 Markdown 편집기를 사용하여 이메일 내용을 작성하세요",
"users": "사용자",
"view": "보기",
"viewAndManageEmailBroadcastTasks": "이메일 방송 작업 보기 및 관리",
"viewContent": "내용 보기"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "대시보드",
"Document Management": "문서 관리",
"Finance": "재무",
"Marketing Management": "마케팅 관리",
"Order Management": "주문 관리",
"Payment Config": "결제 구성",
"Product Management": "제품 관리",

View File

@ -0,0 +1,97 @@
{
"additional": "Tillegg",
"additionalRecipientEmails": "Ytterligere mottaker-e-poster",
"additionalRecipients": "Ytterligere mottakere",
"additionalRecipientsDescription": "Disse e-postene vil motta sendingen i tillegg til brukerfilteret ovenfor",
"allUsers": "Alle brukere",
"broadcastList": "Sende liste",
"broadcastLogs": "Sende logger",
"cancel": "Avbryt",
"cannotBeEmpty": "kan ikke være tom",
"completed": "Fullført",
"confirm": "Bekreft",
"confirmDelete": "Bekreft sletting",
"content": "E-postinnhold",
"create": "Opprett",
"createBroadcast": "Opprett sending",
"createNewEmailBroadcastCampaign": "Opprett ny e-postsending kampanje",
"createSuccess": "Opprettet med suksess",
"createdAt": "Opprettet den",
"dailyLimit": "Daglig grense må være minst 1",
"dailySendLimit": "Daglig sendingsgrense",
"delete": "Slett",
"deleteDescription": "Denne operasjonen kan ikke angres. Er du sikker på at du vil slette?",
"deleteSuccess": "Slettet med suksess",
"edit": "Rediger",
"emailAddedToScheduledQueue": "E-post lagt til i planlagt sendekø",
"emailBroadcast": "E-postsending",
"emailBroadcastTaskCreatedSuccessfully": "E-postsending oppgave opprettet med suksess",
"emailBroadcastTasks": "E-postsending oppgaver",
"emailContent": "E-postinnhold",
"emailInterval": "E-postintervall (sekunder)",
"emailIntervalMinimum": "E-postintervall må være minst 0,1 sekunder",
"emailMarketing": "E-postmarkedsføring",
"emailTaskManager": "E-postoppgavebehandler",
"errorMessage": "Feilmelding",
"estimatedRecipients": "Estimert antall mottakere",
"expiredSubscriptionUsersOnly": "Kun brukere med utløpt abonnement",
"expiredUsers": "Utløpte brukere",
"failCount": "Feilantall",
"failed": "Feilet",
"failedToRefreshTaskStatus": "Feilet å oppdatere oppgave-status",
"failedToStopTask": "Feilet å stoppe oppgave",
"inProgress": "Pågår",
"includeUsersRegisteredAfter": "Inkluder brukere registrert på eller etter denne datoen",
"includeUsersRegisteredBefore": "Inkluder brukere registrert på eller før denne datoen",
"intervalTimeBetweenEmails": "Intervall tid mellom hver e-post",
"leaveEmptyForImmediateSend": "La stå tomt for umiddelbar sending",
"logList": "Loggliste",
"marketingManagement": "Markedsføringsledelse",
"maximumNumberPerDay": "Maksimalt antall e-poster som kan sendes per dag",
"noSubscriptionUsersOnly": "Kun brukere uten abonnement",
"nonSubscribers": "Ikke-abonnenter",
"notStarted": "Ikke startet",
"onePerLine": "en per linje",
"only": "kun",
"pending": "Venter",
"pleaseEnter": "Vennligst skriv inn",
"pleaseEnterValidEmailAddresses": "Vennligst skriv inn gyldige e-postadresser, en per linje",
"processing": "Behandler...",
"progress": "Fremdrift",
"recipient": "Mottaker",
"recipientEmail": "Mottakerens e-post",
"recipientType": "Mottakertype",
"registrationEndDate": "Registreringssluttdato",
"registrationStartDate": "Registreringsstartdato",
"scheduleSend": "Planlegg sending",
"scheduledSend": "Planlagt sending",
"scheduledSendTimeMustBeLater": "Planlagt sendetid må være senere enn nåværende tid",
"selectSendScope": "Velg sendingsomfang",
"selectSendTime": "Velg sendetid, la stå tomt for umiddelbar sending",
"sendFailed": "Sending feilet, vennligst prøv igjen",
"sendNow": "Send nå",
"sendScope": "Sendingsomfang",
"sendScopeDescription": "Velg brukeromfang for e-postsending. Velg \"Kun ytterligere e-poster\" for å sende kun til e-postadressene fylt ut nedenfor",
"sendSettings": "Sendingsinnstillinger",
"sendTime": "Sendetid",
"sending": "Sender",
"sentAt": "Sendt den",
"specificUsers": "Spesifikke brukere",
"specificUsersOnly": "Kun ytterligere e-poster (hopp over plattformbrukere)",
"status": "Status",
"stop": "Stopp",
"stopped": "Stoppet",
"subject": "E-postemne",
"subscribedUsers": "Abonnerte brukere",
"subscribedUsersOnly": "Kun abonnenter",
"successCount": "Suksessantall",
"taskStatusRefreshed": "Oppgave-status oppdatert",
"taskStoppedSuccessfully": "Oppgave stoppet med suksess",
"totalSent": "Totalt sendt",
"updateSuccess": "Oppdatert med suksess",
"useMarkdownEditor": "Bruk Markdown-editor for å skrive e-postinnhold med forhåndsvisningsfunksjonalitet",
"users": "brukere",
"view": "Vis",
"viewAndManageEmailBroadcastTasks": "Vis og administrer e-postsending oppgaver",
"viewContent": "Vis innhold"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Dashbord",
"Document Management": "Dokumenthåndtering",
"Finance": "Finans",
"Marketing Management": "Markedsføringsledelse",
"Order Management": "Bestillingsadministrasjon",
"Payment Config": "Betalingskonfigurasjon",
"Product Management": "Produktledelse",

View File

@ -0,0 +1,97 @@
{
"additional": "Dodatkowe",
"additionalRecipientEmails": "Dodatkowe adresy e-mail odbiorców",
"additionalRecipients": "Dodatkowi odbiorcy",
"additionalRecipientsDescription": "Te adresy e-mail otrzymają transmisję oprócz filtru użytkownika powyżej",
"allUsers": "Wszyscy użytkownicy",
"broadcastList": "Lista transmisji",
"broadcastLogs": "Dzienniki transmisji",
"cancel": "Anuluj",
"cannotBeEmpty": "nie może być puste",
"completed": "Zakończone",
"confirm": "Potwierdź",
"confirmDelete": "Potwierdź usunięcie",
"content": "Treść e-maila",
"create": "Utwórz",
"createBroadcast": "Utwórz transmisję",
"createNewEmailBroadcastCampaign": "Utwórz nową kampanię e-mailową",
"createSuccess": "Utworzono pomyślnie",
"createdAt": "Utworzono",
"dailyLimit": "Dzienny limit musi wynosić co najmniej 1",
"dailySendLimit": "Dzienny limit wysyłki",
"delete": "Usuń",
"deleteDescription": "Ta operacja nie może być cofnięta. Czy na pewno chcesz usunąć?",
"deleteSuccess": "Usunięto pomyślnie",
"edit": "Edytuj",
"emailAddedToScheduledQueue": "E-mail dodany do kolejki wysyłki",
"emailBroadcast": "Transmisja e-mailowa",
"emailBroadcastTaskCreatedSuccessfully": "Zadanie transmisji e-mailowej utworzone pomyślnie",
"emailBroadcastTasks": "Zadania transmisji e-mailowej",
"emailContent": "Treść e-maila",
"emailInterval": "Interwał e-mailowy (sekundy)",
"emailIntervalMinimum": "Interwał e-mailowy musi wynosić co najmniej 0,1 sekundy",
"emailMarketing": "Marketing e-mailowy",
"emailTaskManager": "Menadżer zadań e-mailowych",
"errorMessage": "Wiadomość o błędzie",
"estimatedRecipients": "Szacunkowa liczba odbiorców",
"expiredSubscriptionUsersOnly": "Tylko użytkownicy z wygasłymi subskrypcjami",
"expiredUsers": "Wygasłe konta",
"failCount": "Liczba niepowodzeń",
"failed": "Niepowodzenie",
"failedToRefreshTaskStatus": "Nie udało się odświeżyć statusu zadania",
"failedToStopTask": "Nie udało się zatrzymać zadania",
"inProgress": "W trakcie",
"includeUsersRegisteredAfter": "Uwzględnij użytkowników zarejestrowanych po tej dacie",
"includeUsersRegisteredBefore": "Uwzględnij użytkowników zarejestrowanych przed tą datą",
"intervalTimeBetweenEmails": "Czas interwału między każdym e-mailem",
"leaveEmptyForImmediateSend": "Pozostaw puste, aby wysłać natychmiast",
"logList": "Lista dzienników",
"marketingManagement": "Zarządzanie marketingiem",
"maximumNumberPerDay": "Maksymalna liczba e-maili do wysłania dziennie",
"noSubscriptionUsersOnly": "Tylko użytkownicy bez subskrypcji",
"nonSubscribers": "Nie subskrybenci",
"notStarted": "Nie rozpoczęto",
"onePerLine": "jeden w linii",
"only": "tylko",
"pending": "Oczekujące",
"pleaseEnter": "Proszę wprowadzić",
"pleaseEnterValidEmailAddresses": "Proszę wprowadzić poprawne adresy e-mail, jeden w linii",
"processing": "Przetwarzanie...",
"progress": "Postęp",
"recipient": "Odbiorca",
"recipientEmail": "Adres e-mail odbiorcy",
"recipientType": "Typ odbiorcy",
"registrationEndDate": "Data zakończenia rejestracji",
"registrationStartDate": "Data rozpoczęcia rejestracji",
"scheduleSend": "Zaplanuj wysyłkę",
"scheduledSend": "Zaplanuj wysyłkę",
"scheduledSendTimeMustBeLater": "Czas zaplanowanej wysyłki musi być późniejszy niż obecny czas",
"selectSendScope": "Wybierz zakres wysyłki",
"selectSendTime": "Wybierz czas wysyłki, pozostaw puste dla natychmiastowej wysyłki",
"sendFailed": "Wysyłka nie powiodła się, spróbuj ponownie",
"sendNow": "Wyślij teraz",
"sendScope": "Zakres wysyłki",
"sendScopeDescription": "Wybierz zakres użytkowników do wysyłki e-maili. Wybierz \"Tylko dodatkowe e-maile\", aby wysłać tylko na adresy e-mail wypełnione poniżej",
"sendSettings": "Ustawienia wysyłki",
"sendTime": "Czas wysyłki",
"sending": "Wysyłanie",
"sentAt": "Wysłano",
"specificUsers": "Specyficzni użytkownicy",
"specificUsersOnly": "Tylko dodatkowe e-maile (pomiń użytkowników platformy)",
"status": "Status",
"stop": "Zatrzymaj",
"stopped": "Zatrzymano",
"subject": "Temat e-maila",
"subscribedUsers": "Subskrybowani użytkownicy",
"subscribedUsersOnly": "Tylko subskrybowani użytkownicy",
"successCount": "Liczba sukcesów",
"taskStatusRefreshed": "Status zadania odświeżony",
"taskStoppedSuccessfully": "Zadanie zatrzymane pomyślnie",
"totalSent": "Łącznie wysłano",
"updateSuccess": "Zaktualizowano pomyślnie",
"useMarkdownEditor": "Użyj edytora Markdown do pisania treści e-maila z funkcjonalnością podglądu",
"users": "użytkownicy",
"view": "Widok",
"viewAndManageEmailBroadcastTasks": "Wyświetl i zarządzaj zadaniami transmisji e-mailowej",
"viewContent": "Wyświetl treść"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Pulpit",
"Document Management": "Zarządzanie dokumentami",
"Finance": "Finanse",
"Marketing Management": "Zarządzanie Marketingiem",
"Order Management": "Zarządzanie zamówieniami",
"Payment Config": "Konfiguracja płatności",
"Product Management": "Zarządzanie Produktem",

View File

@ -0,0 +1,97 @@
{
"additional": "Adicional",
"additionalRecipientEmails": "Emails de destinatários adicionais",
"additionalRecipients": "Destinatários Adicionais",
"additionalRecipientsDescription": "Esses emails receberão a transmissão além do filtro de usuário acima",
"allUsers": "Todos os Usuários",
"broadcastList": "Lista de Transmissão",
"broadcastLogs": "Registros de Transmissão",
"cancel": "Cancelar",
"cannotBeEmpty": "não pode estar vazio",
"completed": "Concluído",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Exclusão",
"content": "Conteúdo do Email",
"create": "Criar",
"createBroadcast": "Criar Transmissão",
"createNewEmailBroadcastCampaign": "Criar nova campanha de transmissão de email",
"createSuccess": "Criado com Sucesso",
"createdAt": "Criado Em",
"dailyLimit": "O limite diário deve ser pelo menos 1",
"dailySendLimit": "Limite de Envio Diário",
"delete": "Excluir",
"deleteDescription": "Esta operação não pode ser desfeita. Você tem certeza de que deseja excluir?",
"deleteSuccess": "Excluído com Sucesso",
"edit": "Editar",
"emailAddedToScheduledQueue": "Email adicionado à fila de envio programado",
"emailBroadcast": "Transmissão de Email",
"emailBroadcastTaskCreatedSuccessfully": "Tarefa de transmissão de email criada com sucesso",
"emailBroadcastTasks": "Tarefas de Transmissão de Email",
"emailContent": "Conteúdo do Email",
"emailInterval": "Intervalo de Email (segundos)",
"emailIntervalMinimum": "O intervalo de email deve ser de pelo menos 0,1 segundos",
"emailMarketing": "Marketing por Email",
"emailTaskManager": "Gerenciador de Tarefas de Email",
"errorMessage": "Mensagem de Erro",
"estimatedRecipients": "Destinatários Estimados",
"expiredSubscriptionUsersOnly": "Apenas usuários com assinatura expirada",
"expiredUsers": "Usuários Expirados",
"failCount": "Contagem de Falhas",
"failed": "Falhou",
"failedToRefreshTaskStatus": "Falha ao atualizar o status da tarefa",
"failedToStopTask": "Falha ao parar a tarefa",
"inProgress": "Em Andamento",
"includeUsersRegisteredAfter": "Incluir usuários registrados a partir desta data",
"includeUsersRegisteredBefore": "Incluir usuários registrados até esta data",
"intervalTimeBetweenEmails": "Tempo de intervalo entre cada email",
"leaveEmptyForImmediateSend": "Deixe vazio para envio imediato",
"logList": "Lista de Registros",
"marketingManagement": "Gestão de Marketing",
"maximumNumberPerDay": "Número máximo de emails a serem enviados por dia",
"noSubscriptionUsersOnly": "Apenas usuários sem assinatura",
"nonSubscribers": "Não assinantes",
"notStarted": "Não Iniciado",
"onePerLine": "um por linha",
"only": "apenas",
"pending": "Pendente",
"pleaseEnter": "Por favor, insira",
"pleaseEnterValidEmailAddresses": "Por favor, insira endereços de email válidos, um por linha",
"processing": "Processando...",
"progress": "Progresso",
"recipient": "Destinatário",
"recipientEmail": "Email do Destinatário",
"recipientType": "Tipo de Destinatário",
"registrationEndDate": "Data de Fim da Inscrição",
"registrationStartDate": "Data de Início da Inscrição",
"scheduleSend": "Agendar Envio",
"scheduledSend": "Envio Programado",
"scheduledSendTimeMustBeLater": "O horário de envio programado deve ser posterior ao horário atual",
"selectSendScope": "Selecionar escopo de envio",
"selectSendTime": "Selecionar horário de envio, deixe vazio para envio imediato",
"sendFailed": "Envio falhou, por favor tente novamente",
"sendNow": "Enviar Agora",
"sendScope": "Escopo de Envio",
"sendScopeDescription": "Escolha o escopo de usuários para envio de email. Selecione \"Apenas emails adicionais\" para enviar apenas para os endereços de email preenchidos abaixo",
"sendSettings": "Configurações de Envio",
"sendTime": "Horário de Envio",
"sending": "Enviando",
"sentAt": "Enviado Em",
"specificUsers": "Usuários Específicos",
"specificUsersOnly": "Apenas emails adicionais (pular usuários da plataforma)",
"status": "Status",
"stop": "Parar",
"stopped": "Parado",
"subject": "Assunto do Email",
"subscribedUsers": "Usuários Inscritos",
"subscribedUsersOnly": "Apenas usuários inscritos",
"successCount": "Contagem de Sucessos",
"taskStatusRefreshed": "Status da tarefa atualizado",
"taskStoppedSuccessfully": "Tarefa parada com sucesso",
"totalSent": "Total Enviado",
"updateSuccess": "Atualizado com Sucesso",
"useMarkdownEditor": "Use o editor Markdown para escrever o conteúdo do email com funcionalidade de visualização",
"users": "usuários",
"view": "Visualizar",
"viewAndManageEmailBroadcastTasks": "Visualizar e gerenciar tarefas de transmissão de email",
"viewContent": "Visualizar Conteúdo"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Painel de Controle",
"Document Management": "Gerenciamento de Documentos",
"Finance": "Finanças",
"Marketing Management": "Gestão de Marketing",
"Order Management": "Gerenciamento de Pedidos",
"Payment Config": "Configuração de Pagamento",
"Product Management": "Gestão de Produtos",

View File

@ -0,0 +1,97 @@
{
"additional": "Aditional",
"additionalRecipientEmails": "Emailuri suplimentare pentru destinatari",
"additionalRecipients": "Destinatari suplimentari",
"additionalRecipientsDescription": "Aceste emailuri vor primi difuzarea în plus față de filtrul utilizatorului de mai sus",
"allUsers": "Toți utilizatorii",
"broadcastList": "Lista de difuzare",
"broadcastLogs": "Jurnalele de difuzare",
"cancel": "Anulează",
"cannotBeEmpty": "nu poate fi gol",
"completed": "Finalizat",
"confirm": "Confirmă",
"confirmDelete": "Confirmă ștergerea",
"content": "Conținutul emailului",
"create": "Creează",
"createBroadcast": "Creează difuzare",
"createNewEmailBroadcastCampaign": "Creează o nouă campanie de difuzare prin email",
"createSuccess": "Creat cu succes",
"createdAt": "Creat la",
"dailyLimit": "Limita zilnică trebuie să fie de cel puțin 1",
"dailySendLimit": "Limita de trimitere zilnică",
"delete": "Șterge",
"deleteDescription": "Această operațiune nu poate fi anulată. Ești sigur că vrei să ștergi?",
"deleteSuccess": "Șters cu succes",
"edit": "Editează",
"emailAddedToScheduledQueue": "Email adăugat în coada de trimitere programată",
"emailBroadcast": "Difuzare prin email",
"emailBroadcastTaskCreatedSuccessfully": "Sarcina de difuzare prin email a fost creată cu succes",
"emailBroadcastTasks": "Sarcini de difuzare prin email",
"emailContent": "Conținutul emailului",
"emailInterval": "Interval email (secunde)",
"emailIntervalMinimum": "Intervalul emailului trebuie să fie de cel puțin 0.1 secunde",
"emailMarketing": "Marketing prin email",
"emailTaskManager": "Manager de sarcini email",
"errorMessage": "Mesaj de eroare",
"estimatedRecipients": "Destinatari estimați",
"expiredSubscriptionUsersOnly": "Numai utilizatorii cu abonamente expirate",
"expiredUsers": "Utilizatori expirați",
"failCount": "Numărul de eșecuri",
"failed": "Eșuat",
"failedToRefreshTaskStatus": "Eșec la actualizarea stării sarcinii",
"failedToStopTask": "Eșec la oprirea sarcinii",
"inProgress": "În desfășurare",
"includeUsersRegisteredAfter": "Include utilizatorii înregistrați la sau după această dată",
"includeUsersRegisteredBefore": "Include utilizatorii înregistrați la sau înainte de această dată",
"intervalTimeBetweenEmails": "Timpul de interval între fiecare email",
"leaveEmptyForImmediateSend": "Lasă gol pentru trimitere imediată",
"logList": "Lista de jurnale",
"marketingManagement": "Managementul marketingului",
"maximumNumberPerDay": "Numărul maxim de emailuri de trimis pe zi",
"noSubscriptionUsersOnly": "Numai utilizatorii fără abonamente",
"nonSubscribers": "Non-abonați",
"notStarted": "Nu a început",
"onePerLine": "unul pe linie",
"only": "doar",
"pending": "În așteptare",
"pleaseEnter": "Te rugăm să introduci",
"pleaseEnterValidEmailAddresses": "Te rugăm să introduci adrese de email valide, unul pe linie",
"processing": "Se procesează...",
"progress": "Progres",
"recipient": "Destinatar",
"recipientEmail": "Emailul destinatarului",
"recipientType": "Tipul destinatarului",
"registrationEndDate": "Data de încheiere a înregistrării",
"registrationStartDate": "Data de început a înregistrării",
"scheduleSend": "Programează trimiterea",
"scheduledSend": "Trimitere programată",
"scheduledSendTimeMustBeLater": "Timpul de trimitere programată trebuie să fie mai târziu decât timpul curent",
"selectSendScope": "Selectează domeniul de trimitere",
"selectSendTime": "Selectează timpul de trimitere, lasă gol pentru trimitere imediată",
"sendFailed": "Trimiterea a eșuat, te rugăm să încerci din nou",
"sendNow": "Trimite acum",
"sendScope": "Domeniul de trimitere",
"sendScopeDescription": "Alege domeniul utilizatorilor pentru trimiterea emailului. Selectează \"Numai emailuri suplimentare\" pentru a trimite doar la adresele de email completate mai jos",
"sendSettings": "Setările de trimitere",
"sendTime": "Timpul de trimitere",
"sending": "Se trimite",
"sentAt": "Trimis la",
"specificUsers": "Utilizatori specifici",
"specificUsersOnly": "Numai emailuri suplimentare (sari utilizatorii platformei)",
"status": "Stare",
"stop": "Oprește",
"stopped": "Oprit",
"subject": "Subiectul emailului",
"subscribedUsers": "Utilizatori abonați",
"subscribedUsersOnly": "Numai utilizatorii abonați",
"successCount": "Numărul de succes",
"taskStatusRefreshed": "Starea sarcinii a fost actualizată",
"taskStoppedSuccessfully": "Sarcina a fost oprită cu succes",
"totalSent": "Total trimis",
"updateSuccess": "Actualizat cu succes",
"useMarkdownEditor": "Folosește editorul Markdown pentru a scrie conținutul emailului cu funcționalitate de previzualizare",
"users": "utilizatori",
"view": "Vizualizează",
"viewAndManageEmailBroadcastTasks": "Vizualizează și gestionează sarcinile de difuzare prin email",
"viewContent": "Vizualizează conținutul"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Tablou de bord",
"Document Management": "Managementul documentelor",
"Finance": "Finanțe",
"Marketing Management": "Managementul Marketingului",
"Order Management": "Gestionarea comenzilor",
"Payment Config": "Configurație Plată",
"Product Management": "Gestionarea Produselor",

View File

@ -0,0 +1,97 @@
{
"additional": "Дополнительно",
"additionalRecipientEmails": "Дополнительные адреса электронной почты получателей",
"additionalRecipients": "Дополнительные получатели",
"additionalRecipientsDescription": "Эти адреса электронной почты получат рассылку в дополнение к фильтру пользователей выше",
"allUsers": "Все пользователи",
"broadcastList": "Список рассылки",
"broadcastLogs": "Журналы рассылки",
"cancel": "Отмена",
"cannotBeEmpty": "не может быть пустым",
"completed": "Завершено",
"confirm": "Подтвердить",
"confirmDelete": "Подтвердить удаление",
"content": "Содержимое электронной почты",
"create": "Создать",
"createBroadcast": "Создать рассылку",
"createNewEmailBroadcastCampaign": "Создать новую кампанию по рассылке электронной почты",
"createSuccess": "Успешно создано",
"createdAt": "Создано в",
"dailyLimit": "Ежедневный лимит должен быть не менее 1",
"dailySendLimit": "Ежедневный лимит отправки",
"delete": "Удалить",
"deleteDescription": "Это действие нельзя отменить. Вы уверены, что хотите удалить?",
"deleteSuccess": "Успешно удалено",
"edit": "Редактировать",
"emailAddedToScheduledQueue": "Электронная почта добавлена в очередь запланированной отправки",
"emailBroadcast": "Рассылка электронной почты",
"emailBroadcastTaskCreatedSuccessfully": "Задача рассылки электронной почты успешно создана",
"emailBroadcastTasks": "Задачи рассылки электронной почты",
"emailContent": "Содержимое электронной почты",
"emailInterval": "Интервал отправки электронной почты (секунды)",
"emailIntervalMinimum": "Интервал отправки электронной почты должен быть не менее 0,1 секунды",
"emailMarketing": "Email-маркетинг",
"emailTaskManager": "Менеджер задач электронной почты",
"errorMessage": "Сообщение об ошибке",
"estimatedRecipients": "Ориентировочное количество получателей",
"expiredSubscriptionUsersOnly": "Только пользователи с истекшей подпиской",
"expiredUsers": "Истекшие пользователи",
"failCount": "Количество неудач",
"failed": "Не удалось",
"failedToRefreshTaskStatus": "Не удалось обновить статус задачи",
"failedToStopTask": "Не удалось остановить задачу",
"inProgress": "В процессе",
"includeUsersRegisteredAfter": "Включить пользователей, зарегистрированных после этой даты",
"includeUsersRegisteredBefore": "Включить пользователей, зарегистрированных до этой даты",
"intervalTimeBetweenEmails": "Интервал времени между каждой электронной почтой",
"leaveEmptyForImmediateSend": "Оставьте пустым для немедленной отправки",
"logList": "Список журналов",
"marketingManagement": "Управление маркетингом",
"maximumNumberPerDay": "Максимальное количество электронных писем для отправки в день",
"noSubscriptionUsersOnly": "Только пользователи без подписки",
"nonSubscribers": "Несубскрипционные пользователи",
"notStarted": "Не начато",
"onePerLine": "по одному в строке",
"only": "только",
"pending": "В ожидании",
"pleaseEnter": "Пожалуйста, введите",
"pleaseEnterValidEmailAddresses": "Пожалуйста, введите действительные адреса электронной почты, по одному в строке",
"processing": "Обработка...",
"progress": "Прогресс",
"recipient": "Получатель",
"recipientEmail": "Электронная почта получателя",
"recipientType": "Тип получателя",
"registrationEndDate": "Дата окончания регистрации",
"registrationStartDate": "Дата начала регистрации",
"scheduleSend": "Запланировать отправку",
"scheduledSend": "Запланированная отправка",
"scheduledSendTimeMustBeLater": "Время запланированной отправки должно быть позже текущего времени",
"selectSendScope": "Выберите область отправки",
"selectSendTime": "Выберите время отправки, оставьте пустым для немедленной отправки",
"sendFailed": "Отправка не удалась, пожалуйста, попробуйте снова",
"sendNow": "Отправить сейчас",
"sendScope": "Область отправки",
"sendScopeDescription": "Выберите область пользователей для отправки электронной почты. Выберите \"Только дополнительные адреса электронной почты\", чтобы отправить только на указанные ниже адреса",
"sendSettings": "Настройки отправки",
"sendTime": "Время отправки",
"sending": "Отправка",
"sentAt": "Отправлено в",
"specificUsers": "Конкретные пользователи",
"specificUsersOnly": "Только дополнительные адреса электронной почты (пропустить пользователей платформы)",
"status": "Статус",
"stop": "Остановить",
"stopped": "Остановлено",
"subject": "Тема электронной почты",
"subscribedUsers": "Подписанные пользователи",
"subscribedUsersOnly": "Только подписанные пользователи",
"successCount": "Количество успешных отправок",
"taskStatusRefreshed": "Статус задачи обновлен",
"taskStoppedSuccessfully": "Задача успешно остановлена",
"totalSent": "Всего отправлено",
"updateSuccess": "Успешно обновлено",
"useMarkdownEditor": "Используйте редактор Markdown для написания содержимого электронной почты с функцией предварительного просмотра",
"users": "пользователи",
"view": "Просмотр",
"viewAndManageEmailBroadcastTasks": "Просмотреть и управлять задачами рассылки электронной почты",
"viewContent": "Просмотреть содержимое"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Панель управления",
"Document Management": "Управление документами",
"Finance": "Финансы",
"Marketing Management": "Управление маркетингом",
"Order Management": "Управление заказами",
"Payment Config": "Настройки оплаты",
"Product Management": "Управление продуктом",

View File

@ -0,0 +1,97 @@
{
"additional": "เพิ่มเติม",
"additionalRecipientEmails": "อีเมลผู้รับเพิ่มเติม",
"additionalRecipients": "ผู้รับเพิ่มเติม",
"additionalRecipientsDescription": "อีเมลเหล่านี้จะได้รับการส่งต่อในนอกเหนือจากผู้ใช้ที่กรองข้างต้น",
"allUsers": "ผู้ใช้ทั้งหมด",
"broadcastList": "รายการส่ง",
"broadcastLogs": "บันทึกการส่ง",
"cancel": "ยกเลิก",
"cannotBeEmpty": "ไม่สามารถเว้นว่างได้",
"completed": "เสร็จสิ้น",
"confirm": "ยืนยัน",
"confirmDelete": "ยืนยันการลบ",
"content": "เนื้อหาอีเมล",
"create": "สร้าง",
"createBroadcast": "สร้างการส่ง",
"createNewEmailBroadcastCampaign": "สร้างแคมเปญการส่งอีเมลใหม่",
"createSuccess": "สร้างสำเร็จ",
"createdAt": "สร้างเมื่อ",
"dailyLimit": "จำนวนสูงสุดต่อวันต้องไม่น้อยกว่า 1",
"dailySendLimit": "จำนวนการส่งต่อวัน",
"delete": "ลบ",
"deleteDescription": "การดำเนินการนี้ไม่สามารถย้อนกลับได้ คุณแน่ใจหรือไม่ว่าต้องการลบ?",
"deleteSuccess": "ลบสำเร็จ",
"edit": "แก้ไข",
"emailAddedToScheduledQueue": "อีเมลถูกเพิ่มไปยังคิวการส่งที่กำหนด",
"emailBroadcast": "การส่งอีเมล",
"emailBroadcastTaskCreatedSuccessfully": "สร้างงานการส่งอีเมลสำเร็จ",
"emailBroadcastTasks": "งานการส่งอีเมล",
"emailContent": "เนื้อหาอีเมล",
"emailInterval": "ช่วงเวลาการส่งอีเมล (วินาที)",
"emailIntervalMinimum": "ช่วงเวลาการส่งอีเมลต้องไม่น้อยกว่า 0.1 วินาที",
"emailMarketing": "การตลาดทางอีเมล",
"emailTaskManager": "ผู้จัดการงานอีเมล",
"errorMessage": "ข้อความผิดพลาด",
"estimatedRecipients": "จำนวนผู้รับที่ประมาณการ",
"expiredSubscriptionUsersOnly": "เฉพาะผู้ใช้ที่หมดอายุการสมัคร",
"expiredUsers": "ผู้ใช้ที่หมดอายุ",
"failCount": "จำนวนที่ล้มเหลว",
"failed": "ล้มเหลว",
"failedToRefreshTaskStatus": "ไม่สามารถรีเฟรชสถานะงานได้",
"failedToStopTask": "ไม่สามารถหยุดงานได้",
"inProgress": "กำลังดำเนินการ",
"includeUsersRegisteredAfter": "รวมผู้ที่ลงทะเบียนตั้งแต่วันที่นี้",
"includeUsersRegisteredBefore": "รวมผู้ที่ลงทะเบียนก่อนวันที่นี้",
"intervalTimeBetweenEmails": "ช่วงเวลาระหว่างการส่งอีเมลแต่ละฉบับ",
"leaveEmptyForImmediateSend": "เว้นว่างไว้เพื่อส่งทันที",
"logList": "รายการบันทึก",
"marketingManagement": "การจัดการการตลาด",
"maximumNumberPerDay": "จำนวนสูงสุดของอีเมลที่ส่งต่อวัน",
"noSubscriptionUsersOnly": "เฉพาะผู้ใช้ที่ไม่มีการสมัคร",
"nonSubscribers": "ผู้ที่ไม่ได้สมัคร",
"notStarted": "ยังไม่เริ่ม",
"onePerLine": "หนึ่งต่อบรรทัด",
"only": "เท่านั้น",
"pending": "รอดำเนินการ",
"pleaseEnter": "กรุณาใส่",
"pleaseEnterValidEmailAddresses": "กรุณาใส่อีเมลที่ถูกต้อง หนึ่งต่อบรรทัด",
"processing": "กำลังประมวลผล...",
"progress": "ความก้าวหน้า",
"recipient": "ผู้รับ",
"recipientEmail": "อีเมลผู้รับ",
"recipientType": "ประเภทผู้รับ",
"registrationEndDate": "วันที่สิ้นสุดการลงทะเบียน",
"registrationStartDate": "วันที่เริ่มต้นการลงทะเบียน",
"scheduleSend": "กำหนดการส่ง",
"scheduledSend": "การส่งที่กำหนด",
"scheduledSendTimeMustBeLater": "เวลาการส่งที่กำหนดต้องอยู่หลังเวลาปัจจุบัน",
"selectSendScope": "เลือกขอบเขตการส่ง",
"selectSendTime": "เลือกเวลาการส่ง เว้นว่างไว้เพื่อส่งทันที",
"sendFailed": "การส่งล้มเหลว กรุณาลองอีกครั้ง",
"sendNow": "ส่งตอนนี้",
"sendScope": "ขอบเขตการส่ง",
"sendScopeDescription": "เลือกขอบเขตผู้ใช้สำหรับการส่งอีเมล เลือก \"อีเมลเพิ่มเติมเท่านั้น\" เพื่อส่งเฉพาะที่อยู่อีเมลที่กรอกด้านล่าง",
"sendSettings": "การตั้งค่าการส่ง",
"sendTime": "เวลาการส่ง",
"sending": "กำลังส่ง",
"sentAt": "ส่งเมื่อ",
"specificUsers": "ผู้ใช้เฉพาะ",
"specificUsersOnly": "อีเมลเพิ่มเติมเท่านั้น (ข้ามผู้ใช้แพลตฟอร์ม)",
"status": "สถานะ",
"stop": "หยุด",
"stopped": "หยุดแล้ว",
"subject": "หัวข้ออีเมล",
"subscribedUsers": "ผู้ใช้ที่สมัคร",
"subscribedUsersOnly": "เฉพาะผู้ใช้ที่สมัคร",
"successCount": "จำนวนที่สำเร็จ",
"taskStatusRefreshed": "สถานะงานถูกรีเฟรช",
"taskStoppedSuccessfully": "หยุดงานสำเร็จ",
"totalSent": "จำนวนที่ส่งทั้งหมด",
"updateSuccess": "อัปเดตสำเร็จ",
"useMarkdownEditor": "ใช้ตัวแก้ไข Markdown เพื่อเขียนเนื้อหาอีเมลพร้อมฟังก์ชันการแสดงตัวอย่าง",
"users": "ผู้ใช้",
"view": "ดู",
"viewAndManageEmailBroadcastTasks": "ดูและจัดการงานการส่งอีเมล",
"viewContent": "ดูเนื้อหา"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "แดชบอร์ด",
"Document Management": "การจัดการเอกสาร",
"Finance": "การเงิน",
"Marketing Management": "การจัดการการตลาด",
"Order Management": "การจัดการคำสั่งซื้อ",
"Payment Config": "การตั้งค่าการชำระเงิน",
"Product Management": "การจัดการผลิตภัณฑ์",

View File

@ -0,0 +1,97 @@
{
"additional": "Ek",
"additionalRecipientEmails": "Ek alıcı e-postaları",
"additionalRecipients": "Ek Alıcılar",
"additionalRecipientsDescription": "Bu e-postalar, yukarıdaki kullanıcı filtresine ek olarak yayını alacak",
"allUsers": "Tüm Kullanıcılar",
"broadcastList": "Yayın Listesi",
"broadcastLogs": "Yayın Kayıtları",
"cancel": "İptal",
"cannotBeEmpty": "boş olamaz",
"completed": "Tamamlandı",
"confirm": "Onayla",
"confirmDelete": "Silme işlemini onayla",
"content": "E-posta İçeriği",
"create": "Oluştur",
"createBroadcast": "Yayın Oluştur",
"createNewEmailBroadcastCampaign": "Yeni e-posta yayını kampanyası oluştur",
"createSuccess": "Başarıyla Oluşturuldu",
"createdAt": "Oluşturulma Tarihi",
"dailyLimit": "Günlük limit en az 1 olmalıdır",
"dailySendLimit": "Günlük Gönderim Limiti",
"delete": "Sil",
"deleteDescription": "Bu işlem geri alınamaz. Silmek istediğinize emin misiniz?",
"deleteSuccess": "Başarıyla Silindi",
"edit": "Düzenle",
"emailAddedToScheduledQueue": "E-posta planlı gönderim kuyruğuna eklendi",
"emailBroadcast": "E-posta Yayını",
"emailBroadcastTaskCreatedSuccessfully": "E-posta yayını görevi başarıyla oluşturuldu",
"emailBroadcastTasks": "E-posta Yayını Görevleri",
"emailContent": "E-posta İçeriği",
"emailInterval": "E-posta Aralığı (saniye)",
"emailIntervalMinimum": "E-posta aralığı en az 0.1 saniye olmalıdır",
"emailMarketing": "E-posta Pazarlama",
"emailTaskManager": "E-posta Görev Yöneticisi",
"errorMessage": "Hata Mesajı",
"estimatedRecipients": "Tahmini alıcılar",
"expiredSubscriptionUsersOnly": "Süresi dolmuş abonelik kullanıcıları yalnızca",
"expiredUsers": "Süresi Dolmuş Kullanıcılar",
"failCount": "Başarısız Sayısı",
"failed": "Başarısız",
"failedToRefreshTaskStatus": "Görev durumunu yenilemede başarısız",
"failedToStopTask": "Görevi durdurmada başarısız",
"inProgress": "Devam Ediyor",
"includeUsersRegisteredAfter": "Bu tarihten sonra kayıtlı kullanıcıları dahil et",
"includeUsersRegisteredBefore": "Bu tarihten önce kayıtlı kullanıcıları dahil et",
"intervalTimeBetweenEmails": "Her e-posta arasındaki aralık süresi",
"leaveEmptyForImmediateSend": "Anında gönderim için boş bırakın",
"logList": "Kayıt Listesi",
"marketingManagement": "Pazarlama Yönetimi",
"maximumNumberPerDay": "Günlük gönderilecek maksimum e-posta sayısı",
"noSubscriptionUsersOnly": "Aboneliği olmayan kullanıcılar yalnızca",
"nonSubscribers": "Abone Olmayanlar",
"notStarted": "Başlamadı",
"onePerLine": "bir satıra bir",
"only": "sadece",
"pending": "Beklemede",
"pleaseEnter": "Lütfen girin",
"pleaseEnterValidEmailAddresses": "Lütfen geçerli e-posta adreslerini girin, her biri bir satıra",
"processing": "İşleniyor...",
"progress": "İlerleme",
"recipient": "Alıcı",
"recipientEmail": "Alıcı E-postası",
"recipientType": "Alıcı Türü",
"registrationEndDate": "Kayıt Bitiş Tarihi",
"registrationStartDate": "Kayıt Başlangıç Tarihi",
"scheduleSend": "Gönderimi Planla",
"scheduledSend": "Planlı Gönderim",
"scheduledSendTimeMustBeLater": "Planlı gönderim zamanı mevcut zamandan sonra olmalıdır",
"selectSendScope": "Gönderim kapsamını seçin",
"selectSendTime": "Gönderim zamanını seçin, anında gönderim için boş bırakın",
"sendFailed": "Gönderim başarısız, lütfen tekrar deneyin",
"sendNow": "Şimdi Gönder",
"sendScope": "Gönderim Kapsamı",
"sendScopeDescription": "E-posta gönderimi için kullanıcı kapsamını seçin. Aşağıda doldurulan e-posta adreslerine yalnızca \"Ek e-postalar\" seçeneğini seçerek gönderin",
"sendSettings": "Gönderim Ayarları",
"sendTime": "Gönderim Zamanı",
"sending": "Gönderiliyor",
"sentAt": "Gönderildiği Tarih",
"specificUsers": "Belirli Kullanıcılar",
"specificUsersOnly": "Yalnızca ek e-postalar (platform kullanıcılarını atla)",
"status": "Durum",
"stop": "Durdur",
"stopped": "Durduruldu",
"subject": "E-posta Konusu",
"subscribedUsers": "Abone Olmuş Kullanıcılar",
"subscribedUsersOnly": "Yalnızca abone olmuş kullanıcılar",
"successCount": "Başarı Sayısı",
"taskStatusRefreshed": "Görev durumu yenilendi",
"taskStoppedSuccessfully": "Görev başarıyla durduruldu",
"totalSent": "Toplam Gönderilen",
"updateSuccess": "Başarıyla Güncellendi",
"useMarkdownEditor": "Önizleme işlevi ile e-posta içeriği yazmak için Markdown editörünü kullanın",
"users": "kullanıcılar",
"view": "Görüntüle",
"viewAndManageEmailBroadcastTasks": "E-posta yayını görevlerini görüntüle ve yönet",
"viewContent": "İçeriği Görüntüle"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Gösterge Paneli",
"Document Management": "Belge Yönetimi",
"Finance": "Finans",
"Marketing Management": "Pazarlama Yönetimi",
"Order Management": "Sipariş Yönetimi",
"Payment Config": "Ödeme Yapılandırması",
"Product Management": "Ürün Yönetimi",

View File

@ -0,0 +1,97 @@
{
"additional": "Додатково",
"additionalRecipientEmails": "Додаткові електронні адреси отримувачів",
"additionalRecipients": "Додаткові отримувачі",
"additionalRecipientsDescription": "Ці електронні адреси отримають розсилку на додаток до фільтру користувачів вище",
"allUsers": "Усі користувачі",
"broadcastList": "Список розсилки",
"broadcastLogs": "Журнали розсилки",
"cancel": "Скасувати",
"cannotBeEmpty": "не може бути порожнім",
"completed": "Завершено",
"confirm": "Підтвердити",
"confirmDelete": "Підтвердити видалення",
"content": "Зміст електронного листа",
"create": "Створити",
"createBroadcast": "Створити розсилку",
"createNewEmailBroadcastCampaign": "Створити нову кампанію електронної розсилки",
"createSuccess": "Успішно створено",
"createdAt": "Створено о",
"dailyLimit": "Щоденний ліміт повинен бути не менше 1",
"dailySendLimit": "Щоденній ліміт відправки",
"delete": "Видалити",
"deleteDescription": "Цю операцію не можна скасувати. Ви впевнені, що хочете видалити?",
"deleteSuccess": "Успішно видалено",
"edit": "Редагувати",
"emailAddedToScheduledQueue": "Електронний лист додано до черги запланованих відправлень",
"emailBroadcast": "Електронна розсилка",
"emailBroadcastTaskCreatedSuccessfully": "Завдання електронної розсилки успішно створено",
"emailBroadcastTasks": "Завдання електронної розсилки",
"emailContent": "Зміст електронного листа",
"emailInterval": "Інтервал електронних листів (секунди)",
"emailIntervalMinimum": "Інтервал електронних листів повинен бути не менше 0.1 секунди",
"emailMarketing": "Email-маркетинг",
"emailTaskManager": "Менеджер завдань електронної пошти",
"errorMessage": "Повідомлення про помилку",
"estimatedRecipients": "Орієнтовна кількість отримувачів",
"expiredSubscriptionUsersOnly": "Тільки користувачі з закінченими підписками",
"expiredUsers": "Користувачі з закінченими підписками",
"failCount": "Кількість невдач",
"failed": "Не вдалося",
"failedToRefreshTaskStatus": "Не вдалося оновити статус завдання",
"failedToStopTask": "Не вдалося зупинити завдання",
"inProgress": "В процесі",
"includeUsersRegisteredAfter": "Включити користувачів, зареєстрованих після цієї дати",
"includeUsersRegisteredBefore": "Включити користувачів, зареєстрованих до цієї дати",
"intervalTimeBetweenEmails": "Часовий інтервал між кожним електронним листом",
"leaveEmptyForImmediateSend": "Залиште порожнім для миттєвого відправлення",
"logList": "Список журналів",
"marketingManagement": "Управління маркетингом",
"maximumNumberPerDay": "Максимальна кількість електронних листів для відправки на день",
"noSubscriptionUsersOnly": "Тільки користувачі без підписки",
"nonSubscribers": "Не підписники",
"notStarted": "Не розпочато",
"onePerLine": "один на рядок",
"only": "тільки",
"pending": "В очікуванні",
"pleaseEnter": "Будь ласка, введіть",
"pleaseEnterValidEmailAddresses": "Будь ласка, введіть дійсні електронні адреси, по одному на рядок",
"processing": "Обробка...",
"progress": "Прогрес",
"recipient": "Отримувач",
"recipientEmail": "Електронна адреса отримувача",
"recipientType": "Тип отримувача",
"registrationEndDate": "Дата закінчення реєстрації",
"registrationStartDate": "Дата початку реєстрації",
"scheduleSend": "Запланувати відправлення",
"scheduledSend": "Заплановане відправлення",
"scheduledSendTimeMustBeLater": "Час запланованого відправлення повинен бути пізніше за поточний час",
"selectSendScope": "Виберіть обсяг відправлення",
"selectSendTime": "Виберіть час відправлення, залиште порожнім для миттєвого відправлення",
"sendFailed": "Відправка не вдалася, будь ласка, спробуйте ще раз",
"sendNow": "Відправити зараз",
"sendScope": "Обсяг відправлення",
"sendScopeDescription": "Виберіть обсяг користувачів для відправки електронної пошти. Виберіть \"Тільки додаткові електронні адреси\", щоб відправити лише на електронні адреси, заповнені нижче",
"sendSettings": "Налаштування відправлення",
"sendTime": "Час відправлення",
"sending": "Відправка",
"sentAt": "Відправлено о",
"specificUsers": "Конкретні користувачі",
"specificUsersOnly": "Тільки додаткові електронні адреси (пропустити користувачів платформи)",
"status": "Статус",
"stop": "Зупинити",
"stopped": "Зупинено",
"subject": "Тема електронного листа",
"subscribedUsers": "Підписані користувачі",
"subscribedUsersOnly": "Тільки підписані користувачі",
"successCount": "Кількість успішних відправлень",
"taskStatusRefreshed": "Статус завдання оновлено",
"taskStoppedSuccessfully": "Завдання успішно зупинено",
"totalSent": "Всього відправлено",
"updateSuccess": "Успішно оновлено",
"useMarkdownEditor": "Використовуйте редактор Markdown для написання змісту електронного листа з функцією попереднього перегляду",
"users": "користувачі",
"view": "Переглянути",
"viewAndManageEmailBroadcastTasks": "Переглянути та керувати завданнями електронної розсилки",
"viewContent": "Переглянути зміст"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Панель приладів",
"Document Management": "Управління документами",
"Finance": "Фінанси",
"Marketing Management": "Управління маркетингом",
"Order Management": "Управління замовленнями",
"Payment Config": "Налаштування оплати",
"Product Management": "Управління продуктом",

View File

@ -0,0 +1,97 @@
{
"additional": "Thêm",
"additionalRecipientEmails": "Email người nhận bổ sung",
"additionalRecipients": "Người nhận bổ sung",
"additionalRecipientsDescription": "Những email này sẽ nhận bản phát sóng ngoài bộ lọc người dùng ở trên",
"allUsers": "Tất cả người dùng",
"broadcastList": "Danh sách phát sóng",
"broadcastLogs": "Nhật ký phát sóng",
"cancel": "Hủy",
"cannotBeEmpty": "không được để trống",
"completed": "Đã hoàn thành",
"confirm": "Xác nhận",
"confirmDelete": "Xác nhận xóa",
"content": "Nội dung email",
"create": "Tạo",
"createBroadcast": "Tạo phát sóng",
"createNewEmailBroadcastCampaign": "Tạo chiến dịch phát sóng email mới",
"createSuccess": "Tạo thành công",
"createdAt": "Được tạo vào",
"dailyLimit": "Giới hạn hàng ngày phải ít nhất 1",
"dailySendLimit": "Giới hạn gửi hàng ngày",
"delete": "Xóa",
"deleteDescription": "Hành động này không thể hoàn tác. Bạn có chắc chắn muốn xóa không?",
"deleteSuccess": "Xóa thành công",
"edit": "Chỉnh sửa",
"emailAddedToScheduledQueue": "Email đã được thêm vào hàng đợi gửi theo lịch",
"emailBroadcast": "Phát sóng email",
"emailBroadcastTaskCreatedSuccessfully": "Nhiệm vụ phát sóng email đã được tạo thành công",
"emailBroadcastTasks": "Nhiệm vụ phát sóng email",
"emailContent": "Nội dung email",
"emailInterval": "Khoảng thời gian giữa các email (giây)",
"emailIntervalMinimum": "Khoảng thời gian email phải ít nhất 0.1 giây",
"emailMarketing": "Tiếp thị qua email",
"emailTaskManager": "Quản lý nhiệm vụ email",
"errorMessage": "Thông báo lỗi",
"estimatedRecipients": "Số lượng người nhận ước tính",
"expiredSubscriptionUsersOnly": "Chỉ người dùng có đăng ký hết hạn",
"expiredUsers": "Người dùng hết hạn",
"failCount": "Số lần thất bại",
"failed": "Thất bại",
"failedToRefreshTaskStatus": "Không thể làm mới trạng thái nhiệm vụ",
"failedToStopTask": "Không thể dừng nhiệm vụ",
"inProgress": "Đang tiến hành",
"includeUsersRegisteredAfter": "Bao gồm người dùng đã đăng ký sau ngày này",
"includeUsersRegisteredBefore": "Bao gồm người dùng đã đăng ký trước ngày này",
"intervalTimeBetweenEmails": "Thời gian giữa mỗi email",
"leaveEmptyForImmediateSend": "Để trống để gửi ngay lập tức",
"logList": "Danh sách nhật ký",
"marketingManagement": "Quản lý tiếp thị",
"maximumNumberPerDay": "Số lượng email tối đa gửi mỗi ngày",
"noSubscriptionUsersOnly": "Chỉ người dùng không có đăng ký",
"nonSubscribers": "Người không đăng ký",
"notStarted": "Chưa bắt đầu",
"onePerLine": "một trên mỗi dòng",
"only": "chỉ",
"pending": "Đang chờ",
"pleaseEnter": "Vui lòng nhập",
"pleaseEnterValidEmailAddresses": "Vui lòng nhập địa chỉ email hợp lệ, một địa chỉ trên mỗi dòng",
"processing": "Đang xử lý...",
"progress": "Tiến độ",
"recipient": "Người nhận",
"recipientEmail": "Email người nhận",
"recipientType": "Loại người nhận",
"registrationEndDate": "Ngày kết thúc đăng ký",
"registrationStartDate": "Ngày bắt đầu đăng ký",
"scheduleSend": "Lên lịch gửi",
"scheduledSend": "Gửi theo lịch",
"scheduledSendTimeMustBeLater": "Thời gian gửi theo lịch phải muộn hơn thời gian hiện tại",
"selectSendScope": "Chọn phạm vi gửi",
"selectSendTime": "Chọn thời gian gửi, để trống để gửi ngay lập tức",
"sendFailed": "Gửi thất bại, vui lòng thử lại",
"sendNow": "Gửi ngay",
"sendScope": "Phạm vi gửi",
"sendScopeDescription": "Chọn phạm vi người dùng để gửi email. Chọn \"Chỉ email bổ sung\" để gửi chỉ đến các địa chỉ email được điền bên dưới",
"sendSettings": "Cài đặt gửi",
"sendTime": "Thời gian gửi",
"sending": "Đang gửi",
"sentAt": "Đã gửi vào",
"specificUsers": "Người dùng cụ thể",
"specificUsersOnly": "Chỉ email bổ sung (bỏ qua người dùng nền tảng)",
"status": "Trạng thái",
"stop": "Dừng",
"stopped": "Đã dừng",
"subject": "Chủ đề email",
"subscribedUsers": "Người dùng đã đăng ký",
"subscribedUsersOnly": "Chỉ người dùng đã đăng ký",
"successCount": "Số lần thành công",
"taskStatusRefreshed": "Trạng thái nhiệm vụ đã được làm mới",
"taskStoppedSuccessfully": "Nhiệm vụ đã dừng thành công",
"totalSent": "Tổng số đã gửi",
"updateSuccess": "Cập nhật thành công",
"useMarkdownEditor": "Sử dụng trình soạn thảo Markdown để viết nội dung email với chức năng xem trước",
"users": "người dùng",
"view": "Xem",
"viewAndManageEmailBroadcastTasks": "Xem và quản lý các nhiệm vụ phát sóng email",
"viewContent": "Xem nội dung"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "Bảng điều khiển",
"Document Management": "Quản lý tài liệu",
"Finance": "Tài chính",
"Marketing Management": "Quản lý Tiếp thị",
"Order Management": "Quản lý đơn hàng",
"Payment Config": "Cấu hình thanh toán",
"Product Management": "Quản lý sản phẩm",

View File

@ -1,39 +1,97 @@
{
"additional": "额外",
"additionalRecipientEmails": "额外收件人邮箱",
"additionalRecipients": "额外收件人",
"additionalRecipientsDescription": "这些邮箱将额外收到邮件,不受上述用户筛选条件影响",
"allUsers": "所有用户",
"broadcastList": "群发列表",
"broadcastLogs": "群发日志",
"cancel": "取消",
"cannotBeEmpty": "不能为空",
"completed": "已完成",
"confirm": "确认",
"confirmDelete": "确认删除",
"content": "邮件内容",
"create": "创建",
"createBroadcast": "创建群发",
"createNewEmailBroadcastCampaign": "创建新的邮件群发活动",
"createSuccess": "创建成功",
"createdAt": "创建时间",
"dailyLimit": "每日限制必须至少为1",
"dailySendLimit": "每日发送限制",
"delete": "删除",
"deleteDescription": "此操作无法撤销,确定要删除吗?",
"deleteSuccess": "删除成功",
"edit": "编辑",
"emailAddedToScheduledQueue": "邮件已添加到定时发送队列",
"emailBroadcast": "邮件群发",
"emailBroadcastTaskCreatedSuccessfully": "邮件群发任务创建成功",
"emailBroadcastTasks": "邮件群发任务",
"emailContent": "邮件内容",
"emailInterval": "邮件间隔(秒)",
"emailIntervalMinimum": "邮件间隔必须至少为0.1秒",
"emailMarketing": "邮件营销",
"emailTaskManager": "邮件任务管理",
"errorMessage": "错误信息",
"estimatedRecipients": "预估收件人",
"expiredSubscriptionUsersOnly": "仅过期订阅用户",
"expiredUsers": "过期用户",
"failCount": "失败数量",
"failed": "发送失败",
"failedToRefreshTaskStatus": "刷新任务状态失败",
"failedToStopTask": "停止任务失败",
"inProgress": "进行中",
"includeUsersRegisteredAfter": "包含在此日期当天或之后注册的用户",
"includeUsersRegisteredBefore": "包含在此日期当天或之前注册的用户",
"intervalTimeBetweenEmails": "每封邮件之间的间隔时间",
"leaveEmptyForImmediateSend": "留空表示立即发送",
"logList": "日志列表",
"marketingManagement": "营销管理",
"maximumNumberPerDay": "每天发送邮件的最大数量",
"noSubscriptionUsersOnly": "仅无订阅用户",
"nonSubscribers": "非订阅用户",
"notStarted": "未开始",
"onePerLine": "每行一个",
"only": "仅",
"pending": "待发送",
"pleaseEnter": "请输入",
"pleaseEnterValidEmailAddresses": "请输入有效的邮箱地址,每行一个",
"processing": "处理中...",
"progress": "进度",
"recipient": "收件人",
"recipientEmail": "收件人邮箱",
"recipientType": "收件人类型",
"registrationEndDate": "注册结束日期",
"registrationStartDate": "注册开始日期",
"scheduleSend": "定时发送",
"scheduledSend": "定时发送",
"scheduledSendTimeMustBeLater": "定时发送时间必须晚于当前时间",
"selectSendScope": "选择发送范围",
"selectSendTime": "选择发送时间,留空表示立即发送",
"sendFailed": "发送失败,请重试",
"sendNow": "立即发送",
"sendScope": "发送范围",
"sendScopeDescription": "选择邮件发送的用户范围。选择\"仅额外邮箱\"将只发送给下方填写的邮箱地址",
"sendSettings": "发送设置",
"sendTime": "发送时间",
"sending": "发送中",
"sentAt": "发送时间",
"specificUsers": "指定用户",
"specificUsersOnly": "仅额外邮箱(跳过平台用户)",
"status": "状态",
"stop": "停止",
"stopped": "已停止",
"subject": "邮件主题",
"subscribedUsers": "订阅用户",
"subscribedUsersOnly": "仅订阅用户",
"successCount": "成功数量",
"taskStatusRefreshed": "任务状态已刷新",
"taskStoppedSuccessfully": "任务停止成功",
"totalSent": "总发送数",
"updateSuccess": "更新成功",
"view": "查看"
"useMarkdownEditor": "使用Markdown编辑器编写邮件内容支持预览功能",
"users": "用户",
"view": "查看",
"viewAndManageEmailBroadcastTasks": "查看和管理邮件群发任务",
"viewContent": "查看内容"
}

View File

@ -0,0 +1,97 @@
{
"additional": "附加",
"additionalRecipientEmails": "附加收件人電郵",
"additionalRecipients": "附加收件人",
"additionalRecipientsDescription": "這些電郵將在上述用戶篩選之外接收廣播",
"allUsers": "所有用戶",
"broadcastList": "廣播列表",
"broadcastLogs": "廣播日誌",
"cancel": "取消",
"cannotBeEmpty": "不能為空",
"completed": "已完成",
"confirm": "確認",
"confirmDelete": "確認刪除",
"content": "電郵內容",
"create": "創建",
"createBroadcast": "創建廣播",
"createNewEmailBroadcastCampaign": "創建新的電郵廣播活動",
"createSuccess": "創建成功",
"createdAt": "創建於",
"dailyLimit": "每日限額必須至少為 1",
"dailySendLimit": "每日發送限額",
"delete": "刪除",
"deleteDescription": "此操作無法撤銷。你確定要刪除嗎?",
"deleteSuccess": "刪除成功",
"edit": "編輯",
"emailAddedToScheduledQueue": "電郵已添加到預定發送隊列",
"emailBroadcast": "電郵廣播",
"emailBroadcastTaskCreatedSuccessfully": "電郵廣播任務創建成功",
"emailBroadcastTasks": "電郵廣播任務",
"emailContent": "電郵內容",
"emailInterval": "電郵間隔(秒)",
"emailIntervalMinimum": "電郵間隔必須至少為 0.1 秒",
"emailMarketing": "電郵營銷",
"emailTaskManager": "電郵任務管理器",
"errorMessage": "錯誤信息",
"estimatedRecipients": "預估收件人",
"expiredSubscriptionUsersOnly": "僅限過期訂閱用戶",
"expiredUsers": "過期用戶",
"failCount": "失敗次數",
"failed": "失敗",
"failedToRefreshTaskStatus": "無法刷新任務狀態",
"failedToStopTask": "無法停止任務",
"inProgress": "進行中",
"includeUsersRegisteredAfter": "包括在此日期之後註冊的用戶",
"includeUsersRegisteredBefore": "包括在此日期之前註冊的用戶",
"intervalTimeBetweenEmails": "每封電郵之間的間隔時間",
"leaveEmptyForImmediateSend": "留空以立即發送",
"logList": "日誌列表",
"marketingManagement": "營銷管理",
"maximumNumberPerDay": "每日最多發送電郵數量",
"noSubscriptionUsersOnly": "僅限無訂閱用戶",
"nonSubscribers": "非訂閱者",
"notStarted": "尚未開始",
"onePerLine": "每行一個",
"only": "僅限",
"pending": "待處理",
"pleaseEnter": "請輸入",
"pleaseEnterValidEmailAddresses": "請輸入有效的電郵地址,每行一個",
"processing": "處理中...",
"progress": "進度",
"recipient": "收件人",
"recipientEmail": "收件人電郵",
"recipientType": "收件人類型",
"registrationEndDate": "註冊結束日期",
"registrationStartDate": "註冊開始日期",
"scheduleSend": "預定發送",
"scheduledSend": "預定發送",
"scheduledSendTimeMustBeLater": "預定發送時間必須晚於當前時間",
"selectSendScope": "選擇發送範圍",
"selectSendTime": "選擇發送時間,留空以立即發送",
"sendFailed": "發送失敗,請重試",
"sendNow": "立即發送",
"sendScope": "發送範圍",
"sendScopeDescription": "選擇電郵發送的用戶範圍。選擇「僅限附加電郵」以僅發送到下面填寫的電郵地址",
"sendSettings": "發送設置",
"sendTime": "發送時間",
"sending": "發送中",
"sentAt": "發送於",
"specificUsers": "特定用戶",
"specificUsersOnly": "僅限附加電郵(跳過平台用戶)",
"status": "狀態",
"stop": "停止",
"stopped": "已停止",
"subject": "電郵主題",
"subscribedUsers": "已訂閱用戶",
"subscribedUsersOnly": "僅限已訂閱用戶",
"successCount": "成功次數",
"taskStatusRefreshed": "任務狀態已刷新",
"taskStoppedSuccessfully": "任務已成功停止",
"totalSent": "總發送數量",
"updateSuccess": "更新成功",
"useMarkdownEditor": "使用 Markdown 編輯器撰寫電郵內容並提供預覽功能",
"users": "用戶",
"view": "查看",
"viewAndManageEmailBroadcastTasks": "查看和管理電郵廣播任務",
"viewContent": "查看內容"
}

View File

@ -7,6 +7,7 @@
"Dashboard": "儀表板",
"Document Management": "文件管理",
"Finance": "財務",
"Marketing Management": "市場營銷管理",
"Order Management": "訂單管理",
"Payment Config": "支付配置",
"Product Management": "產品管理",

View File

@ -0,0 +1,69 @@
// @ts-ignore
import request from '@/utils/request';
/** Create subscribe application POST /v1/admin/application/ */
export async function createSubscribeApplication(
body: API.CreateSubscribeApplicationRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.SubscribeApplication }>('/v1/admin/application/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Update subscribe application PUT /v1/admin/application/subscribe_application */
export async function updateSubscribeApplication(
body: API.UpdateSubscribeApplicationRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.SubscribeApplication }>(
'/v1/admin/application/subscribe_application',
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** Delete subscribe application DELETE /v1/admin/application/subscribe_application */
export async function deleteSubscribeApplication(
body: API.DeleteSubscribeApplicationRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/application/subscribe_application', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get subscribe application list GET /v1/admin/application/subscribe_application_list */
export async function getSubscribeApplicationList(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.GetSubscribeApplicationListParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.GetSubscribeApplicationListResponse }>(
'/v1/admin/application/subscribe_application_list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}

View File

@ -1,14 +1,16 @@
// @ts-ignore
// API 更新时间:
// API 唯一标识:
import * as ads from './ads';
import * as announcement from './announcement';
import * as application from './application';
import * as authMethod from './authMethod';
import * as console from './console';
import * as coupon from './coupon';
import * as document from './document';
import * as log from './log';
import * as marketing from './marketing';
import * as order from './order';
import * as payment from './payment';
import * as server from './server';
@ -20,11 +22,13 @@ import * as user from './user';
export default {
ads,
announcement,
application,
authMethod,
console,
coupon,
document,
log,
marketing,
order,
payment,
server,

View File

@ -0,0 +1,87 @@
// @ts-ignore
/* eslint-disable */
import request from '@/utils/request';
/** Get batch send email task list GET /v1/admin/marketing/email/batch/list */
export async function getBatchSendEmailTaskList(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.GetBatchSendEmailTaskListParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.GetBatchSendEmailTaskListResponse }>(
'/v1/admin/marketing/email/batch/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Get pre-send email count POST /v1/admin/marketing/email/batch/pre-send-count */
export async function getPreSendEmailCount(
body: API.GetPreSendEmailCountRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.GetPreSendEmailCountResponse }>(
'/v1/admin/marketing/email/batch/pre-send-count',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** Create a batch send email task POST /v1/admin/marketing/email/batch/send */
export async function createBatchSendEmailTask(
body: API.CreateBatchSendEmailTaskRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/marketing/email/batch/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get batch send email task status POST /v1/admin/marketing/email/batch/status */
export async function getBatchSendEmailTaskStatus(
body: API.GetBatchSendEmailTaskStatusRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.GetBatchSendEmailTaskStatusResponse }>(
'/v1/admin/marketing/email/batch/status',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** Stop a batch send email task POST /v1/admin/marketing/email/batch/stop */
export async function stopBatchSendEmailTask(
body: API.StopBatchSendEmailTaskRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/marketing/email/batch/stop', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}

View File

@ -155,6 +155,26 @@ declare namespace API {
ids: number[];
};
type BatchSendEmailTask = {
id: number;
subject: string;
content: string;
recipients: string;
scope: string;
register_start_time: number;
register_end_time: number;
additional: string;
scheduled: number;
interval: number;
limit: number;
status: number;
errors: string;
total: number;
current: number;
created_at: number;
updated_at: number;
};
type CheckoutOrderRequest = {
orderNo: string;
returnUrl?: string;
@ -220,6 +240,18 @@ declare namespace API {
application_id: number;
};
type CreateBatchSendEmailTaskRequest = {
subject: string;
content: string;
scope: string;
register_start_time?: number;
register_end_time?: number;
additional?: string;
scheduled?: number;
interval?: number;
limit?: number;
};
type CreateCouponRequest = {
name: string;
code?: string;
@ -303,6 +335,18 @@ declare namespace API {
enable: boolean;
};
type CreateSubscribeApplicationRequest = {
name: string;
description?: string;
icon?: string;
user_agent: string;
is_default: boolean;
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
};
type CreateSubscribeGroupRequest = {
name: string;
description: string;
@ -412,6 +456,10 @@ declare namespace API {
id: number;
};
type DeleteSubscribeApplicationRequest = {
id: number;
};
type DeleteSubscribeGroupRequest = {
id: number;
};
@ -550,6 +598,36 @@ declare namespace API {
list: PaymentMethod[];
};
type GetBatchSendEmailTaskListParams = {
page: number;
size: number;
scope?: string;
status?: number;
};
type GetBatchSendEmailTaskListRequest = {
page: number;
size: number;
scope?: string;
status?: number;
};
type GetBatchSendEmailTaskListResponse = {
total: number;
list: BatchSendEmailTask[];
};
type GetBatchSendEmailTaskStatusRequest = {
id: number;
};
type GetBatchSendEmailTaskStatusResponse = {
status: number;
current: number;
total: number;
errors: string;
};
type GetCouponListParams = {
page: number;
size: number;
@ -709,11 +787,36 @@ declare namespace API {
list: PaymentMethodDetail[];
};
type GetPreSendEmailCountRequest = {
scope: string;
register_start_time?: number;
register_end_time?: number;
};
type GetPreSendEmailCountResponse = {
count: number;
};
type GetRuleGroupResponse = {
total: number;
list: ServerRuleGroup[];
};
type GetSubscribeApplicationListParams = {
page: number;
size: number;
};
type GetSubscribeApplicationListRequest = {
page: number;
size: number;
};
type GetSubscribeApplicationListResponse = {
total: number;
list: SubscribeApplication[];
};
type GetSubscribeDetailsParams = {
id: number;
};
@ -1347,6 +1450,10 @@ declare namespace API {
sort: number;
};
type StopBatchSendEmailTaskRequest = {
id: number;
};
type StripePayment = {
method: string;
client_secret: string;
@ -1380,6 +1487,21 @@ declare namespace API {
updated_at: number;
};
type SubscribeApplication = {
id: number;
name: string;
description?: string;
icon?: string;
user_agent: string;
is_default: boolean;
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
created_at: number;
updated_at: number;
};
type SubscribeConfig = {
single_model: boolean;
subscribe_path: string;
@ -1641,6 +1763,19 @@ declare namespace API {
enable: boolean;
};
type UpdateSubscribeApplicationRequest = {
id: number;
name: string;
description?: string;
icon?: string;
user_agent: string;
is_default: boolean;
proxy_template: string;
template: string;
output_format: string;
download_link?: string;
};
type UpdateSubscribeGroupRequest = {
id: number;
name: string;

View File

@ -1,5 +1,5 @@
// @ts-ignore
// API 更新时间:
// API 唯一标识:
import * as auth from './auth';