mirror of
https://github.com/rustmailer/bichon.git
synced 2026-08-30 01:44:23 +00:00
refactor: reorder import UI flow to select files before folder
This commit is contained in:
@@ -363,196 +363,20 @@ export default function ImportPage() {
|
||||
</Command>
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
{!accountId && (
|
||||
<p className="text-xs text-destructive mt-1.5 flex items-center gap-1">
|
||||
<AlertTriangle className="h-3 w-3" />
|
||||
{t('import.selectAccountRequired', 'Please select a target account before importing.')}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
{/* Step 2: Folder determination mode */}
|
||||
{/* Step 2: File upload */}
|
||||
<Card>
|
||||
<CardHeader className="pb-3">
|
||||
<CardTitle className="text-sm font-medium">
|
||||
{isPstSelected
|
||||
? t('import.folderStructure', '2. Folder structure')
|
||||
: t('import.folderMethod', '2. Choose folder method')}
|
||||
</CardTitle>
|
||||
<CardDescription className="text-xs">
|
||||
{isPstSelected
|
||||
? t('import.pstFolderDesc', 'The PST file contains its own folder structure (e.g. Inbox, Sent Items, etc.). Folders will be automatically created during import.')
|
||||
: files.length === 0
|
||||
? t('import.selectFileFirst', 'Select a file first to determine available options.')
|
||||
: t('import.folderMethodDesc', 'How should the target mail folder be determined?')}
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
{!isPstSelected && (
|
||||
<RadioGroup
|
||||
value={folderMode}
|
||||
onValueChange={(v) => handleModeChange(v as FolderMode)}
|
||||
className="gap-3"
|
||||
>
|
||||
{/* Mode 1: Auto-detect from headers */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'header'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="header" id="mode-header" className="mt-0.5" />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<Sparkles className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeHeader', 'Auto-detect from email headers')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeHeaderDesc', 'Read X-Gmail-Labels / X-Bichon-Metadata from the uploaded file. Falls back to filename.')}
|
||||
</p>
|
||||
{folderMode === 'header' && (
|
||||
<div className="mt-2 flex items-center gap-2">
|
||||
<Badge variant="secondary" className="text-xs font-normal">
|
||||
{folderHint
|
||||
? t('import.detectedFolder', 'Detected') + ': ' + headerFolder
|
||||
: t('import.noFileYet', 'No file selected yet')}
|
||||
</Badge>
|
||||
{folderHint && (
|
||||
<span className="text-[10px] text-muted-foreground">
|
||||
({t('import.source')}: {folderHintLabel(folderHint)}{files.length > 1 && `, ${folderHint.fileName}`})
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
|
||||
{/* Mode 2: Pick from existing mailboxes */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'existing'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
!accountId && 'opacity-50 pointer-events-none',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="existing" id="mode-existing" className="mt-0.5" disabled={!accountId} />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<ListTree className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeExisting', 'Choose from existing mailboxes')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeExistingDesc', 'Select one of the mailboxes already present in this account.')}
|
||||
</p>
|
||||
{folderMode === 'existing' && (
|
||||
<div className="mt-2">
|
||||
{mailboxes.length === 0 ? (
|
||||
<span className="text-xs text-muted-foreground">
|
||||
{accountId
|
||||
? t('import.noMailboxes', 'No mailboxes found in this account.')
|
||||
: t('import.selectAccountFirst', 'Select an account first.')}
|
||||
</span>
|
||||
) : (
|
||||
<Popover open={mailboxOpen} onOpenChange={setMailboxOpen}>
|
||||
<PopoverTrigger asChild>
|
||||
<Button
|
||||
variant="outline"
|
||||
role="combobox"
|
||||
className="h-8 justify-between text-xs max-w-xs w-full"
|
||||
>
|
||||
<span className="truncate">
|
||||
{folder || t('import.selectMailbox', 'Select a mailbox...')}
|
||||
</span>
|
||||
<ChevronsUpDown className="ml-2 h-3.5 w-3.5 shrink-0 opacity-50" />
|
||||
</Button>
|
||||
</PopoverTrigger>
|
||||
<PopoverContent className="w-[280px] p-0" align="start">
|
||||
<Command>
|
||||
<CommandInput
|
||||
placeholder={t('import.searchMailbox', 'Search mailboxes...')}
|
||||
className="h-9 text-xs"
|
||||
/>
|
||||
<CommandList>
|
||||
<CommandEmpty>
|
||||
{t('import.noMailboxFound', 'No mailbox found.')}
|
||||
</CommandEmpty>
|
||||
<CommandGroup>
|
||||
{mailboxes.map((mb) => (
|
||||
<CommandItem
|
||||
key={mb.id}
|
||||
value={mb.name}
|
||||
onSelect={(value) => {
|
||||
setFolder(value);
|
||||
setMailboxOpen(false);
|
||||
}}
|
||||
className='text-xs'
|
||||
>
|
||||
<Check
|
||||
className={cn(
|
||||
'h-4 w-4',
|
||||
folder === mb.name ? 'opacity-100' : 'opacity-0',
|
||||
)}
|
||||
/>
|
||||
{mb.name}
|
||||
</CommandItem>
|
||||
))}
|
||||
</CommandGroup>
|
||||
</CommandList>
|
||||
</Command>
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
|
||||
{/* Mode 3: Manual input */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'custom'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="custom" id="mode-custom" className="mt-0.5" />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<PenLine className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeCustom', 'Enter a custom folder name')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeCustomDesc', 'Manually type the target mail folder name.')}
|
||||
</p>
|
||||
{folderMode === 'custom' && (
|
||||
<div className="mt-2">
|
||||
<Input
|
||||
className="h-8 text-xs max-w-xs"
|
||||
value={folder}
|
||||
onChange={(e) => setFolder(e.target.value)}
|
||||
placeholder="INBOX"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
</RadioGroup>
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
{/* Step 3: File upload */}
|
||||
<Card>
|
||||
<CardHeader className="pb-3">
|
||||
<CardTitle className="text-sm font-medium">
|
||||
{t('import.chooseFiles', '3. Choose files')}
|
||||
{t('import.chooseFiles', '2. Choose files')}
|
||||
</CardTitle>
|
||||
<CardDescription className="text-xs">
|
||||
{t('import.limits', {
|
||||
@@ -631,9 +455,194 @@ export default function ImportPage() {
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{files.length === 0 && phase === 'idle' && (
|
||||
<div className="mt-3 text-xs text-destructive flex items-center gap-1.5">
|
||||
<AlertTriangle className="h-3.5 w-3.5" />
|
||||
<span>{t('import.noFilesSelected')}</span>
|
||||
</div>
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
{/* Step 3: Folder determination mode */}
|
||||
<Card>
|
||||
<CardHeader className="pb-3">
|
||||
<CardTitle className="text-sm font-medium">
|
||||
{isPstSelected
|
||||
? t('import.folderStructure', '3. Folder structure')
|
||||
: t('import.folderMethod', '3. Choose folder method')}
|
||||
</CardTitle>
|
||||
<CardDescription className="text-xs">
|
||||
{isPstSelected
|
||||
? t('import.pstFolderDesc', 'The PST file contains its own folder structure (e.g. Inbox, Sent Items, etc.). Folders will be automatically created during import.')
|
||||
: files.length === 0
|
||||
? t('import.selectFileFirst', 'Select a file first to determine available options.')
|
||||
: t('import.folderMethodDesc', 'How should the target mail folder be determined?')}
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
{!isPstSelected && (
|
||||
<RadioGroup
|
||||
value={folderMode}
|
||||
onValueChange={(v) => handleModeChange(v as FolderMode)}
|
||||
className="gap-3"
|
||||
>
|
||||
{/* Mode 1: Auto-detect from headers */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'header'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="header" id="mode-header" className="mt-0.5" />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<Sparkles className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeHeader', 'Auto-detect from email headers')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeHeaderDesc', 'Read X-Gmail-Labels / X-Bichon-Metadata from the uploaded file. Falls back to filename.')}
|
||||
</p>
|
||||
{folderMode === 'header' && (
|
||||
<div className="mt-2 flex items-center gap-2">
|
||||
<Badge variant="secondary" className="text-xs font-normal">
|
||||
{folderHint
|
||||
? t('import.detectedFolder', 'Detected') + ': ' + headerFolder
|
||||
: t('import.noFileYet', 'No file selected yet')}
|
||||
</Badge>
|
||||
{folderHint && (
|
||||
<span className="text-[10px] text-muted-foreground">
|
||||
({t('import.source')}: {folderHintLabel(folderHint)}{files.length > 1 && `, ${folderHint.fileName}`})
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
|
||||
{/* Mode 2: Pick from existing mailboxes */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'existing'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
!accountId && 'opacity-50 pointer-events-none',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="existing" id="mode-existing" className="mt-0.5" disabled={!accountId} />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<ListTree className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeExisting', 'Choose from existing mailboxes')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeExistingDesc', 'Select one of the mailboxes already present in this account.')}
|
||||
</p>
|
||||
{folderMode === 'existing' && (
|
||||
<div className="mt-2">
|
||||
{mailboxes.length === 0 ? (
|
||||
<span className="text-xs text-muted-foreground">
|
||||
{accountId
|
||||
? t('import.noMailboxes', 'No mailboxes found in this account.')
|
||||
: t('import.selectAccountFirst', 'Select an account first.')}
|
||||
</span>
|
||||
) : (
|
||||
<Popover open={mailboxOpen} onOpenChange={setMailboxOpen}>
|
||||
<PopoverTrigger asChild>
|
||||
<Button
|
||||
variant="outline"
|
||||
role="combobox"
|
||||
className="h-8 justify-between text-xs max-w-xs w-full"
|
||||
>
|
||||
<span className="truncate">
|
||||
{folder || t('import.selectMailbox', 'Select a mailbox...')}
|
||||
</span>
|
||||
<ChevronsUpDown className="ml-2 h-3.5 w-3.5 shrink-0 opacity-50" />
|
||||
</Button>
|
||||
</PopoverTrigger>
|
||||
<PopoverContent className="w-[280px] p-0" align="start">
|
||||
<Command>
|
||||
<CommandInput
|
||||
placeholder={t('import.searchMailbox', 'Search mailboxes...')}
|
||||
className="h-9 text-xs"
|
||||
/>
|
||||
<CommandList>
|
||||
<CommandEmpty>
|
||||
{t('import.noMailboxFound', 'No mailbox found.')}
|
||||
</CommandEmpty>
|
||||
<CommandGroup>
|
||||
{mailboxes.map((mb) => (
|
||||
<CommandItem
|
||||
key={mb.id}
|
||||
value={mb.name}
|
||||
onSelect={(value) => {
|
||||
setFolder(value);
|
||||
setMailboxOpen(false);
|
||||
}}
|
||||
className='text-xs'
|
||||
>
|
||||
<Check
|
||||
className={cn(
|
||||
'h-4 w-4',
|
||||
folder === mb.name ? 'opacity-100' : 'opacity-0',
|
||||
)}
|
||||
/>
|
||||
{mb.name}
|
||||
</CommandItem>
|
||||
))}
|
||||
</CommandGroup>
|
||||
</CommandList>
|
||||
</Command>
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
|
||||
{/* Mode 3: Manual input */}
|
||||
<label
|
||||
className={cn(
|
||||
'flex items-start gap-3 rounded-lg border p-3 cursor-pointer transition-colors',
|
||||
folderMode === 'custom'
|
||||
? 'border-primary bg-primary/5'
|
||||
: 'border-border hover:bg-muted/50',
|
||||
)}
|
||||
>
|
||||
<RadioGroupItem value="custom" id="mode-custom" className="mt-0.5" />
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-2">
|
||||
<PenLine className="h-4 w-4 text-primary" />
|
||||
<span className="text-sm font-medium">
|
||||
{t('import.modeCustom', 'Enter a custom folder name')}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{t('import.modeCustomDesc', 'Manually type the target mail folder name.')}
|
||||
</p>
|
||||
{folderMode === 'custom' && (
|
||||
<div className="mt-2">
|
||||
<Input
|
||||
className="h-8 text-xs max-w-xs"
|
||||
value={folder}
|
||||
onChange={(e) => setFolder(e.target.value)}
|
||||
placeholder="INBOX"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</label>
|
||||
</RadioGroup>
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
{/* Step 4: Progress & Results */}
|
||||
{(phase !== 'idle' || progress) && (
|
||||
<Card>
|
||||
@@ -707,27 +716,43 @@ export default function ImportPage() {
|
||||
</Card>
|
||||
)}
|
||||
|
||||
{/* Import button */}
|
||||
<div className="flex justify-between items-center">
|
||||
<div className="text-xs text-muted-foreground">
|
||||
{isPstSelected
|
||||
? t('import.pstFolders', 'PST folder structure will be preserved during import')
|
||||
: (<>{t('import.willImportTo', 'Will import to')}: <span className="font-medium text-foreground">{effectiveFolder}</span>{files.length > 1 && <> · {t('import.fileCount', { count: files.length })}</>}</>)}
|
||||
<div className="flex flex-col gap-2">
|
||||
<div className="flex justify-between items-center">
|
||||
<div className="text-xs text-muted-foreground">
|
||||
{isPstSelected
|
||||
? t('import.pstFolders', 'PST folder structure will be preserved during import')
|
||||
: (<>{t('import.willImportTo', 'Will import to')}: <span className="font-medium text-foreground">{effectiveFolder}</span>{files.length > 1 && <> · {t('import.fileCount', { count: files.length })}</>}</>)}
|
||||
</div>
|
||||
<Button
|
||||
onClick={() => importMutation.mutate()}
|
||||
disabled={!canImport || importMutation.isPending}
|
||||
className="gap-2"
|
||||
>
|
||||
{importMutation.isPending ? (
|
||||
<Upload className="h-4 w-4 animate-pulse" />
|
||||
) : (
|
||||
<Upload className="h-4 w-4" />
|
||||
)}
|
||||
{t('import.startImport', 'Import')}
|
||||
</Button>
|
||||
</div>
|
||||
<Button
|
||||
onClick={() => importMutation.mutate()}
|
||||
disabled={!canImport || importMutation.isPending}
|
||||
className="gap-2"
|
||||
>
|
||||
{importMutation.isPending ? (
|
||||
<Upload className="h-4 w-4 animate-pulse" />
|
||||
) : (
|
||||
<Upload className="h-4 w-4" />
|
||||
)}
|
||||
{t('import.startImport', 'Import')}
|
||||
</Button>
|
||||
{(!accountId || files.length === 0) && (
|
||||
<div className="text-xs text-destructive flex items-center justify-end gap-1.5">
|
||||
<AlertTriangle className="h-3.5 w-3.5" />
|
||||
<span>
|
||||
{!accountId && !files.length && (
|
||||
t('import.selectAccountAndFiles', 'Please select a target account and files first.')
|
||||
)}
|
||||
{!accountId && files.length > 0 && (
|
||||
t('import.selectAccountRequired', 'Please select a target account first.')
|
||||
)}
|
||||
{accountId && files.length === 0 && (
|
||||
t('import.selectFilesRequired', 'Please select files to import.')
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Import history */}
|
||||
{history.length > 0 && (
|
||||
<CollapsibleHistory
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "الحساب",
|
||||
"chooseFiles": "3. اختر الملفات",
|
||||
"chooseFiles": "2. اختر الملفات",
|
||||
"completed": "اكتمل الاستيراد",
|
||||
"description": "استيراد ملفات البريد إلى حساب محلي (NoSync). للملفات الكبيرة، استخدم CLI.",
|
||||
"detectedFolder": "مكتشف",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "فشل الاستيراد",
|
||||
"failedCount": "{{count}} فشل",
|
||||
"failedDetails": "العناصر الفاشلة",
|
||||
"fileCount": "{{count}} ملف",
|
||||
"folder": "المجلد",
|
||||
"folderMethod": "2. اختر طريقة تحديد المجلد",
|
||||
"folderMethod": "3. اختر طريقة تحديد المجلد",
|
||||
"folderMethodDesc": "كيف سيتم تحديد مجلد البريد المستهدف؟",
|
||||
"folderStructure": "2. هيكل المجلدات",
|
||||
"folderStructure": "3. هيكل المجلدات",
|
||||
"importHistory": "سجل الاستيراد",
|
||||
"limits": "الحد الأقصى: EML 100 م.ب · MBOX {{maxMbox}} م.ب · PST {{maxPst}} م.ب. للملفات الأكبر ← CLI.",
|
||||
"modeCustom": "أدخل اسم مجلد مخصص",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "قراءة X-Gmail-Labels / X-Bichon-Metadata من الملف. يعتمد على اسم الملف كبديل.",
|
||||
"noAccountFound": "لم يتم العثور على حساب.",
|
||||
"noFileYet": "لم يتم اختيار أي ملف بعد",
|
||||
"noFilesSelected": "لم يتم تحديد أي ملفات",
|
||||
"noMailboxFound": "لم يتم العثور على صندوق بريد.",
|
||||
"noMailboxes": "لم يتم العثور على صناديق بريد في هذا الحساب.",
|
||||
"orClick": "أو انقر للتصفح",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "البحث عن الحسابات...",
|
||||
"searchMailbox": "البحث عن صناديق البريد...",
|
||||
"selectAccount": "اختر حسابًا",
|
||||
"selectAccountAndFiles": "يرجى تحديد الحساب المستهدف والملفات أولاً.",
|
||||
"selectAccountFirst": "يرجى اختيار حساب أولاً.",
|
||||
"selectAccountRequired": "يرجى تحديد الحساب المستهدف أولاً.",
|
||||
"selectFileFirst": "يرجى اختيار ملف أولاً لتحديد الخيارات المتاحة.",
|
||||
"selectFilesRequired": "يرجى تحديد الملفات للاستيراد.",
|
||||
"selectMailbox": "اختر صندوق بريد...",
|
||||
"source": "المصدر",
|
||||
"startImport": "استيراد",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Konto",
|
||||
"chooseFiles": "3. Vælg filer",
|
||||
"chooseFiles": "2. Vælg filer",
|
||||
"completed": "Import fuldført",
|
||||
"description": "Importer e-mailfiler til en lokal konto (NoSync). Brug CLI til større filer.",
|
||||
"detectedFolder": "Registreret",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import mislykkedes",
|
||||
"failedCount": "{{count}} fejlet",
|
||||
"failedDetails": "Fejlede elementer",
|
||||
"fileCount": "{{count}} filer",
|
||||
"folder": "Mappe",
|
||||
"folderMethod": "2. Vælg mappemetode",
|
||||
"folderMethod": "3. Vælg mappemetode",
|
||||
"folderMethodDesc": "Hvordan skal destinationsmappen bestemmes?",
|
||||
"folderStructure": "2. Mappestruktur",
|
||||
"folderStructure": "3. Mappestruktur",
|
||||
"importHistory": "Importhistorik",
|
||||
"limits": "Maks: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Større filer → CLI.",
|
||||
"modeCustom": "Indtast et brugerdefineret mappenavn",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Læs X-Gmail-Labels / X-Bichon-Metadata fra filen. Falder tilbage til filnavn.",
|
||||
"noAccountFound": "Ingen konto fundet.",
|
||||
"noFileYet": "Ingen fil valgt endnu",
|
||||
"noFilesSelected": "Ingen filer valgt",
|
||||
"noMailboxFound": "Ingen postkasse fundet.",
|
||||
"noMailboxes": "Ingen postkasser fundet på denne konto.",
|
||||
"orClick": "eller klik for at gennemse",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Søg efter konti...",
|
||||
"searchMailbox": "Søg efter postkasser...",
|
||||
"selectAccount": "Vælg en konto",
|
||||
"selectAccountAndFiles": "Vælg venligst en målkonto og filer først.",
|
||||
"selectAccountFirst": "Vælg en konto først.",
|
||||
"selectAccountRequired": "Vælg venligst en målkonto først.",
|
||||
"selectFileFirst": "Vælg en fil først for at bestemme tilgængelige muligheder.",
|
||||
"selectFilesRequired": "Vælg venligst filer, der skal importeres.",
|
||||
"selectMailbox": "Vælg en postkasse...",
|
||||
"source": "kilde",
|
||||
"startImport": "Importer",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Konto",
|
||||
"chooseFiles": "3. Dateien auswählen",
|
||||
"chooseFiles": "2. Dateien auswählen",
|
||||
"completed": "Import abgeschlossen",
|
||||
"description": "E-Mail-Dateien in ein lokales Konto (NoSync) importieren. Für größere Dateien CLI nutzen.",
|
||||
"detectedFolder": "Erkannt",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import fehlgeschlagen",
|
||||
"failedCount": "{{count}} fehlgeschlagen",
|
||||
"failedDetails": "Fehlgeschlagene Elemente",
|
||||
"fileCount": "{{count}} Dateien",
|
||||
"folder": "Ordner",
|
||||
"folderMethod": "2. Ordnermethode wählen",
|
||||
"folderMethod": "3. Ordnermethode wählen",
|
||||
"folderMethodDesc": "Wie soll der Zielordner bestimmt werden?",
|
||||
"folderStructure": "2. Ordnerstruktur",
|
||||
"folderStructure": "3. Ordnerstruktur",
|
||||
"importHistory": "Importverlauf",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Größere Dateien → CLI.",
|
||||
"modeCustom": "Benutzerdefinierten Ordnernamen eingeben",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Liest X-Gmail-Labels / X-Bichon-Metadata aus der Datei. Fallback auf Dateiname.",
|
||||
"noAccountFound": "Kein Konto gefunden.",
|
||||
"noFileYet": "Noch keine Datei ausgewählt",
|
||||
"noFilesSelected": "Keine Dateien ausgewählt",
|
||||
"noMailboxFound": "Kein Postfach gefunden.",
|
||||
"noMailboxes": "Keine Postfächer in diesem Konto gefunden.",
|
||||
"orClick": "oder zum Durchsuchen klicken",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Konten suchen...",
|
||||
"searchMailbox": "Postfächer suchen...",
|
||||
"selectAccount": "Konto auswählen",
|
||||
"selectAccountAndFiles": "Bitte wählen Sie zuerst ein Zielkonto und Dateien aus.",
|
||||
"selectAccountFirst": "Wählen Sie zuerst ein Konto aus.",
|
||||
"selectAccountRequired": "Bitte wählen Sie zuerst ein Zielkonto aus.",
|
||||
"selectFileFirst": "Wählen Sie zuerst eine Datei aus, um die verfügbaren Optionen zu ermitteln.",
|
||||
"selectFilesRequired": "Bitte wählen Sie die zu importierenden Dateien aus.",
|
||||
"selectMailbox": "Postfach auswählen...",
|
||||
"source": "Quelle",
|
||||
"startImport": "Importieren",
|
||||
|
||||
@@ -733,7 +733,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Account",
|
||||
"chooseFiles": "3. Choose files",
|
||||
"chooseFiles": "2. Choose files",
|
||||
"completed": "Import complete",
|
||||
"description": "Import email files into a local account (NoSync). For larger files, use the CLI.",
|
||||
"detectedFolder": "Detected",
|
||||
@@ -744,9 +744,9 @@
|
||||
"failedDetails": "Failed items",
|
||||
"fileCount": "{{count}} files",
|
||||
"folder": "Folder",
|
||||
"folderMethod": "2. Choose folder method",
|
||||
"folderMethod": "3. Choose folder method",
|
||||
"folderMethodDesc": "How should the target mail folder be determined?",
|
||||
"folderStructure": "2. Folder structure",
|
||||
"folderStructure": "3. Folder structure",
|
||||
"importHistory": "Import History",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Larger files → CLI.",
|
||||
"modeCustom": "Enter a custom folder name",
|
||||
@@ -757,6 +757,7 @@
|
||||
"modeHeaderDesc": "Read X-Gmail-Labels / X-Bichon-Metadata from the uploaded file. Falls back to filename.",
|
||||
"noAccountFound": "No account found.",
|
||||
"noFileYet": "No file selected yet",
|
||||
"noFilesSelected": "No files selected",
|
||||
"noMailboxFound": "No mailbox found.",
|
||||
"noMailboxes": "No mailboxes found in this account.",
|
||||
"orClick": "or click to browse",
|
||||
@@ -767,8 +768,11 @@
|
||||
"searchAccount": "Search accounts...",
|
||||
"searchMailbox": "Search mailboxes...",
|
||||
"selectAccount": "Select an account",
|
||||
"selectAccountAndFiles": "Please select a target account and files first.",
|
||||
"selectAccountFirst": "Select an account first.",
|
||||
"selectAccountRequired": "Please select a target account first.",
|
||||
"selectFileFirst": "Select a file first to determine available options.",
|
||||
"selectFilesRequired": "Please select files to import.",
|
||||
"selectMailbox": "Select a mailbox...",
|
||||
"source": "source",
|
||||
"startImport": "Import",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Cuenta",
|
||||
"chooseFiles": "3. Seleccionar archivos",
|
||||
"chooseFiles": "2. Seleccionar archivos",
|
||||
"completed": "Importación completada",
|
||||
"description": "Importar archivos de correo a una cuenta local (NoSync). Para archivos más grandes, use la CLI.",
|
||||
"detectedFolder": "Detectado",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Error al importar",
|
||||
"failedCount": "{{count}} fallidos",
|
||||
"failedDetails": "Elementos fallidos",
|
||||
"fileCount": "{{count}} archivos",
|
||||
"folder": "Carpeta",
|
||||
"folderMethod": "2. Elegir método de carpeta",
|
||||
"folderMethod": "3. Elegir método de carpeta",
|
||||
"folderMethodDesc": "¿Cómo se debe determinar la carpeta de correo de destino?",
|
||||
"folderStructure": "2. Estructura de carpetas",
|
||||
"folderStructure": "3. Estructura de carpetas",
|
||||
"importHistory": "Historial de importación",
|
||||
"limits": "Máx: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Archivos más grandes → CLI.",
|
||||
"modeCustom": "Ingresar un nombre de carpeta personalizado",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Lee X-Gmail-Labels / X-Bichon-Metadata del archivo. Alternativa: nombre del archivo.",
|
||||
"noAccountFound": "No se encontró ninguna cuenta.",
|
||||
"noFileYet": "Ningún archivo seleccionado",
|
||||
"noFilesSelected": "No hay archivos seleccionados",
|
||||
"noMailboxFound": "No se encontró ningún buzón.",
|
||||
"noMailboxes": "No se encontraron buzones en esta cuenta.",
|
||||
"orClick": "o haga clic para buscar",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Buscar cuentas...",
|
||||
"searchMailbox": "Buscar buzones...",
|
||||
"selectAccount": "Seleccionar una cuenta",
|
||||
"selectAccountAndFiles": "Seleccione primero una cuenta de destino y los archivos.",
|
||||
"selectAccountFirst": "Seleccione una cuenta primero.",
|
||||
"selectAccountRequired": "Seleccione primero una cuenta de destino.",
|
||||
"selectFileFirst": "Seleccione un archivo primero para determinar las opciones disponibles.",
|
||||
"selectFilesRequired": "Seleccione los archivos que desea importar.",
|
||||
"selectMailbox": "Seleccionar buzón...",
|
||||
"source": "origen",
|
||||
"startImport": "Importar",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Tili",
|
||||
"chooseFiles": "3. Valitse tiedostot",
|
||||
"chooseFiles": "2. Valitse tiedostot",
|
||||
"completed": "Tuonti valmis",
|
||||
"description": "Tuo sähköpostitiedostoja paikalliselle tilille (NoSync). Käytä CLI:tä suuremmille tiedostoille.",
|
||||
"detectedFolder": "Tunnistettu",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Tuonti epäonnistui",
|
||||
"failedCount": "{{count}} epäonnistui",
|
||||
"failedDetails": "Epäonnistuneet kohteet",
|
||||
"fileCount": "{{count}} tiedostoa",
|
||||
"folder": "Kansio",
|
||||
"folderMethod": "2. Valitse kansiomenetelmä",
|
||||
"folderMethod": "3. Valitse kansiomenetelmä",
|
||||
"folderMethodDesc": "Miten kohdekansio tulisi määrittää?",
|
||||
"folderStructure": "2. Kansionrakenne",
|
||||
"folderStructure": "3. Kansionrakenne",
|
||||
"importHistory": "Tuontihistoria",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Suuremmat tiedostot → CLI.",
|
||||
"modeCustom": "Syötä mukautettu kansion nimi",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Lue X-Gmail-Labels / X-Bichon-Metadata tiedostosta. Varajärjestelmänä tiedostonimi.",
|
||||
"noAccountFound": "Tiliä ei löytynyt.",
|
||||
"noFileYet": "Ei valittua tiedostoa",
|
||||
"noFilesSelected": "Ei valittuja tiedostoja",
|
||||
"noMailboxFound": "Postilaatikkoa ei löytynyt.",
|
||||
"noMailboxes": "Tältä tililtä ei löytynyt postilaatikoita.",
|
||||
"orClick": "tai napsauta selataksesi",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Etsi tilejä...",
|
||||
"searchMailbox": "Etsi postilaatikoita...",
|
||||
"selectAccount": "Valitse tili",
|
||||
"selectAccountAndFiles": "Valitse ensin kohdetili ja tiedostot.",
|
||||
"selectAccountFirst": "Valitse ensin tili.",
|
||||
"selectAccountRequired": "Valitse ensin kohdetili.",
|
||||
"selectFileFirst": "Valitse ensin tiedosto määrittääksesi käytettävissä olevat vaihtoehdot.",
|
||||
"selectFilesRequired": "Valitse tuotavat tiedostot.",
|
||||
"selectMailbox": "Valitse postilaatikko...",
|
||||
"source": "lähde",
|
||||
"startImport": "Tuo",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Compte",
|
||||
"chooseFiles": "3. Choisir les fichiers",
|
||||
"chooseFiles": "2. Choisir les fichiers",
|
||||
"completed": "Importation terminée",
|
||||
"description": "Importer des fichiers d'e-mails dans un compte local (NoSync). Pour les gros fichiers, utilisez le CLI.",
|
||||
"detectedFolder": "Détecté",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Échec de l'importation",
|
||||
"failedCount": "{{count}} échoué(s)",
|
||||
"failedDetails": "Éléments en échec",
|
||||
"fileCount": "{{count}} fichiers",
|
||||
"folder": "Dossier",
|
||||
"folderMethod": "2. Choisir la méthode de dossier",
|
||||
"folderMethod": "3. Choisir la méthode de dossier",
|
||||
"folderMethodDesc": "Comment le dossier de destination doit-il être déterminé ?",
|
||||
"folderStructure": "2. Structure des dossiers",
|
||||
"folderStructure": "3. Structure des dossiers",
|
||||
"importHistory": "Historique d'importation",
|
||||
"limits": "Max : EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Fichiers plus volumineux → CLI.",
|
||||
"modeCustom": "Saisir un nom de dossier personnalisé",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Lit X-Gmail-Labels / X-Bichon-Metadata depuis le fichier. Alternative : nom du fichier.",
|
||||
"noAccountFound": "Aucun compte trouvé.",
|
||||
"noFileYet": "Aucun fichier sélectionné",
|
||||
"noFilesSelected": "Aucun fichier sélectionné",
|
||||
"noMailboxFound": "Aucune boîte aux lettres trouvée.",
|
||||
"noMailboxes": "Aucune boîte aux lettres trouvée dans ce compte.",
|
||||
"orClick": "ou cliquez pour parcourir",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Rechercher des comptes...",
|
||||
"searchMailbox": "Rechercher des boîtes...",
|
||||
"selectAccount": "Sélectionner un compte",
|
||||
"selectAccountAndFiles": "Veuillez d'abord sélectionner un compte cible et des fichiers.",
|
||||
"selectAccountFirst": "Sélectionnez d'abord un compte.",
|
||||
"selectAccountRequired": "Veuillez d'abord sélectionner un compte cible.",
|
||||
"selectFileFirst": "Sélectionnez d'abord un fichier si vous souhaitez déterminer les options disponibles.",
|
||||
"selectFilesRequired": "Veuillez sélectionner les fichiers à importer.",
|
||||
"selectMailbox": "Sélectionner une boîte...",
|
||||
"source": "source",
|
||||
"startImport": "Importer",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Account",
|
||||
"chooseFiles": "3. Scegli i file",
|
||||
"chooseFiles": "2. Scegli i file",
|
||||
"completed": "Importazione completata",
|
||||
"description": "Importa file email in un account locale (NoSync). Per file più grandi, usa la CLI.",
|
||||
"detectedFolder": "Rilevato",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Importazione fallita",
|
||||
"failedCount": "{{count}} falliti",
|
||||
"failedDetails": "Elementi falliti",
|
||||
"fileCount": "{{count}} file",
|
||||
"folder": "Cartella",
|
||||
"folderMethod": "2. Scegli il metodo della cartella",
|
||||
"folderMethod": "3. Scegli il metodo della cartella",
|
||||
"folderMethodDesc": "Come determinare la cartella di posta di destinazione?",
|
||||
"folderStructure": "2. Struttura delle cartelle",
|
||||
"folderStructure": "3. Struttura delle cartelle",
|
||||
"importHistory": "Cronologia importazioni",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. File più grandi → CLI.",
|
||||
"modeCustom": "Inserisci un nome cartella personalizzato",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Legge X-Gmail-Labels / X-Bichon-Metadata dal file. Alternativa: nome del file.",
|
||||
"noAccountFound": "Nessun account trovato.",
|
||||
"noFileYet": "Nessun file selezionato",
|
||||
"noFilesSelected": "Nessun file selezionato",
|
||||
"noMailboxFound": "Nessuna casella postale trouvata.",
|
||||
"noMailboxes": "Nessuna casella postale trovata in questo account.",
|
||||
"orClick": "o clicca per sfogliare",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Cerca account...",
|
||||
"searchMailbox": "Cerca caselle postali...",
|
||||
"selectAccount": "Seleziona un account",
|
||||
"selectAccountAndFiles": "Seleziona prima un account di destinazione e i file.",
|
||||
"selectAccountFirst": "Seleziona prima un account.",
|
||||
"selectAccountRequired": "Seleziona prima un account di destinazione.",
|
||||
"selectFileFirst": "Seleziona prima un file per determinare le opzioni disponibili.",
|
||||
"selectFilesRequired": "Seleziona i file da importare.",
|
||||
"selectMailbox": "Seleziona una casella...",
|
||||
"source": "origine",
|
||||
"startImport": "Importa",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "アカウント",
|
||||
"chooseFiles": "3. ファイルを選択",
|
||||
"chooseFiles": "2. ファイルを選択",
|
||||
"completed": "インポート完了",
|
||||
"description": "NoSyncローカルアカウントにメールファイルをインポートします。大容量ファイルはCLIを使用してください。",
|
||||
"detectedFolder": "放出演出",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "インポート失敗",
|
||||
"failedCount": "{{count}} 件の失敗",
|
||||
"failedDetails": "失敗したアイテム",
|
||||
"fileCount": "{{count}} 件のファイル",
|
||||
"folder": "フォルダ",
|
||||
"folderMethod": "2. フォルダ指定方法の選択",
|
||||
"folderMethod": "3. フォルダ指定方法の選択",
|
||||
"folderMethodDesc": "インポート先のフォルダをどのように決定しますか?",
|
||||
"folderStructure": "2. フォルダ構造",
|
||||
"folderStructure": "3. フォルダ構造",
|
||||
"importHistory": "インポート履歴",
|
||||
"limits": "上限: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB。これ以上のサイズは → CLIへ。",
|
||||
"modeCustom": "カスタムフォルダ名を入力",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "ファイルから X-Gmail-Labels / X-Bichon-Metadata を読み取ります。ない場合はファイル名を使用します。",
|
||||
"noAccountFound": "アカウントが見つかりません。",
|
||||
"noFileYet": "ファイルが選択されていません",
|
||||
"noFilesSelected": "ファイルが選択されていません",
|
||||
"noMailboxFound": "メールボックスが見つかりません。",
|
||||
"noMailboxes": "このアカウントにメールボックスが見つかりません。",
|
||||
"orClick": "またはクリックしてファイルを選択",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "アカウントを検索...",
|
||||
"searchMailbox": "メールボックスを検索...",
|
||||
"selectAccount": "アカウントを選択",
|
||||
"selectAccountAndFiles": "最初に対象のアカウントとファイルを選択してください。",
|
||||
"selectAccountFirst": "最初にアカウントを選択してください。",
|
||||
"selectAccountRequired": "最初に対象のアカウントを選択してください。",
|
||||
"selectFileFirst": "利用可能なオプションを確認するには、最初にファイルを選択してください。",
|
||||
"selectFilesRequired": "インポートするファイルを選択してください。",
|
||||
"selectMailbox": "メールボックスを選択...",
|
||||
"source": "ソース",
|
||||
"startImport": "インポート",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "계정",
|
||||
"chooseFiles": "3. 파일 선택",
|
||||
"chooseFiles": "2. 파일 선택",
|
||||
"completed": "가져오기 완료",
|
||||
"description": "로컬 계정(NoSync)으로 이메일 파일을 가져옵니다. 대용량 파일은 CLI를 사용하세요.",
|
||||
"detectedFolder": "감지됨",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "가져오기 실패",
|
||||
"failedCount": "{{count}}개 실패",
|
||||
"failedDetails": "실패한 항목",
|
||||
"fileCount": "{{count}}개 파일",
|
||||
"folder": "폴더",
|
||||
"folderMethod": "2. 폴더 지정 방식 선택",
|
||||
"folderMethod": "3. 폴더 지정 방식 선택",
|
||||
"folderMethodDesc": "가져올 메일 폴더를 어떻게 결정하시겠습니까?",
|
||||
"folderStructure": "2. 폴더 구조",
|
||||
"folderStructure": "3. 폴더 구조",
|
||||
"importHistory": "가져오기 기록",
|
||||
"limits": "제한: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. 더 큰 파일은 → CLI 사용.",
|
||||
"modeCustom": "사용자 지정 폴더 이름 입력",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "파일에서 X-Gmail-Labels / X-Bichon-Metadata를 읽습니다. 없을 경우 파일명을 사용합니다.",
|
||||
"noAccountFound": "계정을 찾을 수 없습니다.",
|
||||
"noFileYet": "선택된 파일 없음",
|
||||
"noFilesSelected": "선택된 파일이 없습니다",
|
||||
"noMailboxFound": "편지함을 찾을 수 없습니다.",
|
||||
"noMailboxes": "이 계정에서 편지함을 찾을 수 없습니다.",
|
||||
"orClick": "또는 클릭하여 찾아보기",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "계정 검색...",
|
||||
"searchMailbox": "편지함 검색...",
|
||||
"selectAccount": "계정 선택",
|
||||
"selectAccountAndFiles": "먼저 대상 계정과 파일을 선택해 주세요.",
|
||||
"selectAccountFirst": "계정을 먼저 선택해 주세요.",
|
||||
"selectAccountRequired": "먼저 대상 계정을 선택해 주세요.",
|
||||
"selectFileFirst": "사용 가능한 옵션을 확인하려면 먼저 파일을 선택해 주세요.",
|
||||
"selectFilesRequired": "가져올 파일을 선택해 주세요.",
|
||||
"selectMailbox": "편지함 선택...",
|
||||
"source": "소스",
|
||||
"startImport": "가져오기",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Account",
|
||||
"chooseFiles": "3. Kies bestanden",
|
||||
"chooseFiles": "2. Kies bestanden",
|
||||
"completed": "Import voltooid",
|
||||
"description": "Importeer e-mailbestanden in een lokaal account (NoSync). Gebruik de CLI voor grotere bestanden.",
|
||||
"detectedFolder": "Gedetecteerd",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import mislukt",
|
||||
"failedCount": "{{count}} mislukt",
|
||||
"failedDetails": "Mislukte items",
|
||||
"fileCount": "{{count}} bestanden",
|
||||
"folder": "Map",
|
||||
"folderMethod": "2. Kies mapmethode",
|
||||
"folderMethod": "3. Kies mapmethode",
|
||||
"folderMethodDesc": "Hoe moet de doelmap voor e-mail worden bepaald?",
|
||||
"folderStructure": "2. Mapstructuur",
|
||||
"folderStructure": "3. Mapstructuur",
|
||||
"importHistory": "Importgeschiedenis",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Grotere bestanden → CLI.",
|
||||
"modeCustom": "Voer een aangepaste mapnaam in",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Leest X-Gmail-Labels / X-Bichon-Metadata uit het bestand. Valt terug op bestandsnaam.",
|
||||
"noAccountFound": "Geen account gevonden.",
|
||||
"noFileYet": "Nog geen bestand geselecteerd",
|
||||
"noFilesSelected": "Geen bestanden geselecteerd",
|
||||
"noMailboxFound": "Geen mailbox gevonden.",
|
||||
"noMailboxes": "Geen mailboxen gevonden in dit account.",
|
||||
"orClick": "of klik om te bladeren",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Accounts zoeken...",
|
||||
"searchMailbox": "Mailboxen zoeken...",
|
||||
"selectAccount": "Selecteer een account",
|
||||
"selectAccountAndFiles": "Selecteer eerst een doelaccount en bestanden.",
|
||||
"selectAccountFirst": "Selecteer eerst een account.",
|
||||
"selectAccountRequired": "Selecteer eerst een doelaccount.",
|
||||
"selectFileFirst": "Selecteer eerst een bestand om de beschikbare opties te bepalen.",
|
||||
"selectFilesRequired": "Selecteer de te importeren bestanden.",
|
||||
"selectMailbox": "Selecteer een mailbox...",
|
||||
"source": "bron",
|
||||
"startImport": "Importeren",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Konto",
|
||||
"chooseFiles": "3. Velg filer",
|
||||
"chooseFiles": "2. Velg filer",
|
||||
"completed": "Import fullført",
|
||||
"description": "Importer e-postfiler til en lokal konto (NoSync). Bruk CLI for større filer.",
|
||||
"detectedFolder": "Registrert",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import mislyktes",
|
||||
"failedCount": "{{count}} feilet",
|
||||
"failedDetails": "Feilede elementer",
|
||||
"fileCount": "{{count}} filer",
|
||||
"folder": "Mappe",
|
||||
"folderMethod": "2. Velg mappemetode",
|
||||
"folderMethod": "3. Velg mappemetode",
|
||||
"folderMethodDesc": "Hvordan skal målmappen for e-post bestemmes?",
|
||||
"folderStructure": "2. Mappestruktur",
|
||||
"folderStructure": "3. Mappestruktur",
|
||||
"importHistory": "Importhistorikk",
|
||||
"limits": "Maks: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Større filer → CLI.",
|
||||
"modeCustom": "Skriv inn et egendefinert mappenavn",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Leser X-Gmail-Labels / X-Bichon-Metadata fra filen. Faller tillbaka til filnavn.",
|
||||
"noAccountFound": "Ingen konto fundet.",
|
||||
"noFileYet": "Ingen fil valgt ennå",
|
||||
"noFilesSelected": "Ingen filer valgt",
|
||||
"noMailboxFound": "Ingen postboks funnet.",
|
||||
"noMailboxes": "Ingen postbokser funnet på denne kontoen.",
|
||||
"orClick": "eller klikk for å bla gjennom",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Søk etter kontoer...",
|
||||
"searchMailbox": "Søk etter postbokser...",
|
||||
"selectAccount": "Velg en konto",
|
||||
"selectAccountAndFiles": "Velg en målkonto og filer først.",
|
||||
"selectAccountFirst": "Velg en konto først.",
|
||||
"selectAccountRequired": "Velg en målkonto først.",
|
||||
"selectFileFirst": "Velg en fil først for å se tilgjengelige alternativer.",
|
||||
"selectFilesRequired": "Velg filene som skal importeres.",
|
||||
"selectMailbox": "Velg en postboks...",
|
||||
"source": "kilde",
|
||||
"startImport": "Importer",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Konto",
|
||||
"chooseFiles": "3. Wybierz pliki",
|
||||
"chooseFiles": "2. Wybierz pliki",
|
||||
"completed": "Import zakończony",
|
||||
"description": "Importuj pliki e-mail do konta lokalnego (NoSync). W przypadku większych plików użyj CLI.",
|
||||
"detectedFolder": "Wykryto",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import nie powiódł się",
|
||||
"failedCount": "Niepowodzenie: {{count}}",
|
||||
"failedDetails": "Nieudane elementy",
|
||||
"fileCount": "Liczba plików: {{count}}",
|
||||
"folder": "Folder",
|
||||
"folderMethod": "2. Wybierz metodę folderu",
|
||||
"folderMethod": "3. Wybierz metodę folderu",
|
||||
"folderMethodDesc": "Jak ma zostać określony docelowy folder poczty?",
|
||||
"folderStructure": "2. Struktura folderów",
|
||||
"folderStructure": "3. Struktura folderów",
|
||||
"importHistory": "Historia importu",
|
||||
"limits": "Maks: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Większe pliki → CLI.",
|
||||
"modeCustom": "Wprowadź własną nazwę folderu",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Odczytaj X-Gmail-Labels / X-Bichon-Metadata z pliku. W przypadku braku użyta zostanie nazwa pliku.",
|
||||
"noAccountFound": "Nie znaleziono konta.",
|
||||
"noFileYet": "Nie wybrano jeszcze żadnego pliku",
|
||||
"noFilesSelected": "Nie wybrano żadnych plików",
|
||||
"noMailboxFound": "Nie znaleziono skrzynki pocztowej.",
|
||||
"noMailboxes": "Nie znaleziono skrzynek pocztowych na tym koncie.",
|
||||
"orClick": "lub kliknij, aby przeglądać",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Szukaj kont...",
|
||||
"searchMailbox": "Szukaj skrzynek...",
|
||||
"selectAccount": "Wybierz konto",
|
||||
"selectAccountAndFiles": "Najpierw wybierz konto docelowe i pliki.",
|
||||
"selectAccountFirst": "Najpierw wybierz konto.",
|
||||
"selectAccountRequired": "Najpierw wybierz konto docelowe.",
|
||||
"selectFileFirst": "Najpierw wybierz plik, aby określić dostępne opcje.",
|
||||
"selectFilesRequired": "Wybierz pliki do importu.",
|
||||
"selectMailbox": "Wybierz skrzynkę...",
|
||||
"source": "źródło",
|
||||
"startImport": "Importuj",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Conta",
|
||||
"chooseFiles": "3. Escolher arquivos",
|
||||
"chooseFiles": "2. Escolher arquivos",
|
||||
"completed": "Importação concluída",
|
||||
"description": "Importar arquivos de e-mail para uma conta local (NoSync). Para arquivos maiores, use a CLI.",
|
||||
"detectedFolder": "Detectado",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Falha na importação",
|
||||
"failedCount": "{{count}} falharam",
|
||||
"failedDetails": "Itens com falha",
|
||||
"fileCount": "{{count}} arquivos",
|
||||
"folder": "Pasta",
|
||||
"folderMethod": "2. Escolher método de pasta",
|
||||
"folderMethod": "3. Escolher método de pasta",
|
||||
"folderMethodDesc": "Como a pasta de e-mail de destino deve ser determinada?",
|
||||
"folderStructure": "2. Estrutura de pastas",
|
||||
"folderStructure": "3. Estrutura de pastas",
|
||||
"importHistory": "Histórico de importação",
|
||||
"limits": "Máx: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Arquivos maiores → CLI.",
|
||||
"modeCustom": "Digitar um nome de pasta personalizado",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Lê X-Gmail-Labels / X-Bichon-Metadata do arquivo. Alternativa: nome do arquivo.",
|
||||
"noAccountFound": "Nenhuma conta encontrada.",
|
||||
"noFileYet": "Nenhum arquivo selecionado",
|
||||
"noFilesSelected": "Nenhum arquivo selecionado",
|
||||
"noMailboxFound": "Nenhuma caixa de correio encontrada.",
|
||||
"noMailboxes": "Nenhuma caixa de correio encontrada nesta conta.",
|
||||
"orClick": "ou clique para navegar",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Buscar contas...",
|
||||
"searchMailbox": "Buscar caixas de correio...",
|
||||
"selectAccount": "Selecionar uma conta",
|
||||
"selectAccountAndFiles": "Selecione uma conta de destino e os arquivos primeiro.",
|
||||
"selectAccountFirst": "Selecione uma conta primeiro.",
|
||||
"selectAccountRequired": "Selecione uma conta de destino primeiro.",
|
||||
"selectFileFirst": "Selecione um arquivo primeiro para determinar as opções disponíveis.",
|
||||
"selectFilesRequired": "Selecione os arquivos para importar.",
|
||||
"selectMailbox": "Selecionar caixa de correio...",
|
||||
"source": "origem",
|
||||
"startImport": "Importar",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Аккаунт",
|
||||
"chooseFiles": "3. Выбрать файлы",
|
||||
"chooseFiles": "2. Выбрать файлы",
|
||||
"completed": "Импорт завершен",
|
||||
"description": "Импорт файлов писем в локальный аккаунт (NoSync). Для больших файлов используйте CLI.",
|
||||
"detectedFolder": "Обнаружено",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Ошибка импорта",
|
||||
"failedCount": "Ошибок: {{count}}",
|
||||
"failedDetails": "Неудачные элементы",
|
||||
"fileCount": "{{count}} файлов",
|
||||
"folder": "Папка",
|
||||
"folderMethod": "2. Выберите метод определения папки",
|
||||
"folderMethod": "3. Выберите метод определения папки",
|
||||
"folderMethodDesc": "Как следует определять целевую папку для писем?",
|
||||
"folderStructure": "2. Структура папок",
|
||||
"folderStructure": "3. Структура папок",
|
||||
"importHistory": "История импорта",
|
||||
"limits": "Макс: EML 100 МБ · MBOX {{maxMbox}} МБ · PST {{maxPst}} МБ. Для больших файлов → CLI.",
|
||||
"modeCustom": "Ввести имя папки вручную",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Чтение X-Gmail-Labels / X-Bichon-Metadata из файла. Если их нет, используется имя файла.",
|
||||
"noAccountFound": "Аккаунт не найден.",
|
||||
"noFileYet": "Файл еще не выбран",
|
||||
"noFilesSelected": "Файлы не выбраны",
|
||||
"noMailboxFound": "Почтовый ящик не найден.",
|
||||
"noMailboxes": "В этом аккаунте не найдено почтовых ящиков.",
|
||||
"orClick": "или нажмите для обзора",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Поиск аккаунтов...",
|
||||
"searchMailbox": "Поиск почтовых ящиков...",
|
||||
"selectAccount": "Выберите аккаунт",
|
||||
"selectAccountAndFiles": "Сначала выберите целевой аккаунт и файлы.",
|
||||
"selectAccountFirst": "Сначала выберите аккаунт.",
|
||||
"selectAccountRequired": "Сначала выберите целевой аккаунт.",
|
||||
"selectFileFirst": "Сначала выберите файл, чтобы определить доступные параметры.",
|
||||
"selectFilesRequired": "Выберите файлы для импорта.",
|
||||
"selectMailbox": "Выберите почтовый ящик...",
|
||||
"source": "источник",
|
||||
"startImport": "Импортировать",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "Konto",
|
||||
"chooseFiles": "3. Välj filer",
|
||||
"chooseFiles": "2. Välj filer",
|
||||
"completed": "Import slutförd",
|
||||
"description": "Importera e-postfiler till ett lokalt konto (NoSync). Använd CLI för större filer.",
|
||||
"detectedFolder": "Identifierad",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "Import misslyckades",
|
||||
"failedCount": "{{count}} misslyckades",
|
||||
"failedDetails": "Misslyckade objekt",
|
||||
"fileCount": "{{count}} filer",
|
||||
"folder": "Mapp",
|
||||
"folderMethod": "2. Välj mappemetod",
|
||||
"folderMethod": "3. Välj mappemetod",
|
||||
"folderMethodDesc": "Hur ska målmappen for e-post bestämmas?",
|
||||
"folderStructure": "2. Mappstruktur",
|
||||
"folderStructure": "3. Mappstruktur",
|
||||
"importHistory": "Importhistorik",
|
||||
"limits": "Max: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB. Større filer → CLI.",
|
||||
"modeCustom": "Ange ett anpassat mappnamn",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "Läser X-Gmail-Labels / X-Bichon-Metadata från filen. Faller tillbaka på filnamn.",
|
||||
"noAccountFound": "Inget konto hittades.",
|
||||
"noFileYet": "Ingen fil har valts än",
|
||||
"noFilesSelected": "Inga filer valda",
|
||||
"noMailboxFound": "Ingen brevlåda hittades.",
|
||||
"noMailboxes": "Inga brevlådor hittades på detta konto.",
|
||||
"orClick": "eller klicka för att bläddra",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "Sök konton...",
|
||||
"searchMailbox": "Sök brevlådor...",
|
||||
"selectAccount": "Välj ett konto",
|
||||
"selectAccountAndFiles": "Välj ett målkonto och filer först.",
|
||||
"selectAccountFirst": "Välj ett konto först.",
|
||||
"selectAccountRequired": "Välj ett målkonto först.",
|
||||
"selectFileFirst": "Välj en fil först för att se tillgängliga alternativ.",
|
||||
"selectFilesRequired": "Välj filer att importera.",
|
||||
"selectMailbox": "Välj en brevlåda...",
|
||||
"source": "källa",
|
||||
"startImport": "Importera",
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "帳戶",
|
||||
"chooseFiles": "3. 選擇檔案",
|
||||
"chooseFiles": "2. 選擇檔案",
|
||||
"completed": "匯入完成",
|
||||
"description": "將郵件檔案匯入至本地帳戶 (NoSync)。大檔案請使用 CLI 命令行工具。",
|
||||
"detectedFolder": "已識別",
|
||||
@@ -730,10 +730,11 @@
|
||||
"failed": "匯入失敗",
|
||||
"failedCount": "{{count}} 個失敗",
|
||||
"failedDetails": "失敗詳情",
|
||||
"fileCount": "{{count}} 個檔案",
|
||||
"folder": "資料夾",
|
||||
"folderMethod": "2. 選擇資料夾比對策略",
|
||||
"folderMethod": "3. 選擇資料夾比對策略",
|
||||
"folderMethodDesc": "如何確定匯入 Target 郵件資料夾?",
|
||||
"folderStructure": "2. 資料夾結構",
|
||||
"folderStructure": "3. 資料夾結構",
|
||||
"importHistory": "匯入歷史",
|
||||
"limits": "限制: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB。超過限制請使用 CLI。",
|
||||
"modeCustom": "指定自訂資料夾名稱",
|
||||
@@ -744,6 +745,7 @@
|
||||
"modeHeaderDesc": "讀取檔案中的 X-Gmail-Labels / X-Bichon-Metadata 標籤,未識別時預設使用檔案名稱。",
|
||||
"noAccountFound": "未找到相關帳戶。",
|
||||
"noFileYet": "尚未選擇任何檔案",
|
||||
"noFilesSelected": "未選擇任何檔案",
|
||||
"noMailboxFound": "未找到郵箱。",
|
||||
"noMailboxes": "該帳戶下未找到任何郵箱。",
|
||||
"orClick": "或點擊瀏覽檔案",
|
||||
@@ -754,8 +756,11 @@
|
||||
"searchAccount": "搜尋帳戶...",
|
||||
"searchMailbox": "搜尋郵箱...",
|
||||
"selectAccount": "選擇帳戶",
|
||||
"selectAccountAndFiles": "請先選擇目標郵箱帳號和檔案。",
|
||||
"selectAccountFirst": "請先選擇一個帳戶。",
|
||||
"selectAccountRequired": "請先選擇目標郵箱帳號。",
|
||||
"selectFileFirst": "請先選擇檔案以確定可用選項。",
|
||||
"selectFilesRequired": "請選擇要匯入的檔案。",
|
||||
"selectMailbox": "選擇郵箱...",
|
||||
"source": "來源",
|
||||
"startImport": "開始匯入",
|
||||
|
||||
@@ -731,7 +731,7 @@
|
||||
},
|
||||
"import": {
|
||||
"account": "账户",
|
||||
"chooseFiles": "3. 选择文件",
|
||||
"chooseFiles": "2. 选择文件",
|
||||
"completed": "导入完成",
|
||||
"description": "将邮件文件导入至本地账户 (NoSync)。大文件请使用 CLI 命令行工具。",
|
||||
"detectedFolder": "已识别",
|
||||
@@ -740,10 +740,11 @@
|
||||
"failed": "导入失败",
|
||||
"failedCount": "{{count}} 个失败",
|
||||
"failedDetails": "失败详情",
|
||||
"fileCount": "{{count}} 个文件",
|
||||
"folder": "文件夹",
|
||||
"folderMethod": "2. 选择文件夹匹配策略",
|
||||
"folderMethod": "3. 选择文件夹匹配策略",
|
||||
"folderMethodDesc": "如何确定导入的目标邮件文件夹?",
|
||||
"folderStructure": "2. 文件夹结构",
|
||||
"folderStructure": "3. 文件夹结构",
|
||||
"importHistory": "导入历史",
|
||||
"limits": "限制: EML 100 MB · MBOX {{maxMbox}} MB · PST {{maxPst}} MB。超过限制请使用 CLI。",
|
||||
"modeCustom": "指定自定义文件夹名称",
|
||||
@@ -754,6 +755,7 @@
|
||||
"modeHeaderDesc": "读取文件中的 X-Gmail-Labels / X-Bichon-Metadata 标签,未识别时默认使用文件名。",
|
||||
"noAccountFound": "未找到相关账户。",
|
||||
"noFileYet": "尚未选择任何文件",
|
||||
"noFilesSelected": "未选择任何文件",
|
||||
"noMailboxFound": "未找到邮箱。",
|
||||
"noMailboxes": "该账户下未找到任何邮箱。",
|
||||
"orClick": "或点击浏览文件",
|
||||
@@ -764,8 +766,11 @@
|
||||
"searchAccount": "搜索账户...",
|
||||
"searchMailbox": "搜索邮箱...",
|
||||
"selectAccount": "选择账户",
|
||||
"selectAccountAndFiles": "请先选择目标邮箱账号和文件。",
|
||||
"selectAccountFirst": "请先选择一个账户。",
|
||||
"selectAccountRequired": "请先选择目标邮箱账号。",
|
||||
"selectFileFirst": "请先选择文件以确定可用选项。",
|
||||
"selectFilesRequired": "请选择要导入的文件。",
|
||||
"selectMailbox": "选择邮箱...",
|
||||
"source": "来源",
|
||||
"startImport": "开始导入",
|
||||
|
||||
Reference in New Issue
Block a user