mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: copy-primary for data tools, download-all label for multi-output, batch failure display
This commit is contained in:
@@ -1,8 +1,35 @@
|
|||||||
import { ArrowLeft, CheckCircle2, Download } from "lucide-react";
|
import { AlertCircle, ArrowLeft, CheckCircle2, Download, FileText } from "lucide-react";
|
||||||
import { useMemo } from "react";
|
import { useMemo } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { useTranslation } from "@/contexts/i18n-context";
|
import { useTranslation } from "@/contexts/i18n-context";
|
||||||
import { formatFileSize, triggerDownload } from "@/lib/download";
|
import { formatFileSize, triggerDownload } from "@/lib/download";
|
||||||
|
import { format } from "@/lib/format";
|
||||||
|
|
||||||
|
/** Tools whose primary output is text/data, not a downloadable file. */
|
||||||
|
const DATA_OUTPUT_TOOLS = new Set([
|
||||||
|
"ocr",
|
||||||
|
"barcode-read",
|
||||||
|
"info",
|
||||||
|
"histogram",
|
||||||
|
"color-palette",
|
||||||
|
"transcribe-audio",
|
||||||
|
"extract-subtitles",
|
||||||
|
"image-to-base64",
|
||||||
|
"pdf-to-text",
|
||||||
|
"pdf-metadata",
|
||||||
|
"audio-metadata",
|
||||||
|
"video-metadata",
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** Tools that produce multiple output files bundled as a ZIP. */
|
||||||
|
const MULTI_OUTPUT_TOOLS = new Set([
|
||||||
|
"split",
|
||||||
|
"favicon",
|
||||||
|
"pdf-to-image",
|
||||||
|
"video-to-frames",
|
||||||
|
"split-audio",
|
||||||
|
"split-csv",
|
||||||
|
]);
|
||||||
|
|
||||||
interface ReviewPanelProps {
|
interface ReviewPanelProps {
|
||||||
filename: string;
|
filename: string;
|
||||||
@@ -13,6 +40,9 @@ interface ReviewPanelProps {
|
|||||||
onUndo: () => void;
|
onUndo: () => void;
|
||||||
onStartOver: () => void;
|
onStartOver: () => void;
|
||||||
currentToolId: string;
|
currentToolId: string;
|
||||||
|
totalCount?: number;
|
||||||
|
successCount?: number;
|
||||||
|
failedCount?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ReviewPanel({
|
export function ReviewPanel({
|
||||||
@@ -23,10 +53,16 @@ export function ReviewPanel({
|
|||||||
downloadUrl,
|
downloadUrl,
|
||||||
onUndo,
|
onUndo,
|
||||||
onStartOver,
|
onStartOver,
|
||||||
currentToolId: _currentToolId,
|
currentToolId,
|
||||||
|
totalCount,
|
||||||
|
successCount,
|
||||||
|
failedCount,
|
||||||
}: ReviewPanelProps) {
|
}: ReviewPanelProps) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const isDataOutput = DATA_OUTPUT_TOOLS.has(currentToolId);
|
||||||
|
const isMultiOutput = MULTI_OUTPUT_TOOLS.has(currentToolId);
|
||||||
|
|
||||||
const sizeDelta = useMemo(() => {
|
const sizeDelta = useMemo(() => {
|
||||||
if (!originalSize || originalSize === 0) return 0;
|
if (!originalSize || originalSize === 0) return 0;
|
||||||
return Math.round((1 - fileSize / originalSize) * 100);
|
return Math.round((1 - fileSize / originalSize) * 100);
|
||||||
@@ -36,6 +72,9 @@ export function ReviewPanel({
|
|||||||
triggerDownload(downloadUrl, filename);
|
triggerDownload(downloadUrl, filename);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const hasBatchStats =
|
||||||
|
totalCount != null && totalCount > 1 && successCount != null && failedCount != null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
<div className="border-t border-border" />
|
<div className="border-t border-border" />
|
||||||
@@ -46,8 +85,22 @@ export function ReviewPanel({
|
|||||||
<span className="text-sm font-medium text-foreground">{t.toolPage.conversionComplete}</span>
|
<span className="text-sm font-medium text-foreground">{t.toolPage.conversionComplete}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Size delta */}
|
{/* Batch partial failure summary */}
|
||||||
{originalSize > 0 && (
|
{hasBatchStats && failedCount > 0 && (
|
||||||
|
<div className="flex items-start gap-2 rounded-lg bg-amber-50 dark:bg-amber-950/30 p-2.5 text-xs">
|
||||||
|
<AlertCircle className="h-3.5 w-3.5 text-amber-600 dark:text-amber-400 shrink-0 mt-0.5" />
|
||||||
|
<span className="text-amber-800 dark:text-amber-300">
|
||||||
|
{format(t.toolPage.batchPartialSuccess, {
|
||||||
|
success: successCount,
|
||||||
|
total: totalCount,
|
||||||
|
failed: failedCount,
|
||||||
|
})}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{/* Size delta -- hidden for data-output tools */}
|
||||||
|
{!isDataOutput && originalSize > 0 && (
|
||||||
<div className="space-y-1 text-xs">
|
<div className="space-y-1 text-xs">
|
||||||
<div className="flex justify-between">
|
<div className="flex justify-between">
|
||||||
<span className="text-muted-foreground">{t.toolPage.original}</span>
|
<span className="text-muted-foreground">{t.toolPage.original}</span>
|
||||||
@@ -78,16 +131,39 @@ export function ReviewPanel({
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Download button with format + size */}
|
{/* Data-output tools: results hint + secondary download */}
|
||||||
<button
|
{isDataOutput && (
|
||||||
type="button"
|
<>
|
||||||
data-download-button
|
<div className="flex items-start gap-2 rounded-lg bg-muted/50 p-2.5 text-xs">
|
||||||
onClick={handleDownload}
|
<FileText className="h-3.5 w-3.5 text-muted-foreground shrink-0 mt-0.5" />
|
||||||
className="w-full py-2.5 rounded-lg bg-primary text-primary-foreground font-medium text-sm flex items-center justify-center gap-2 hover:bg-primary/90"
|
<span className="text-muted-foreground">{t.toolPage.dataResultsHint}</span>
|
||||||
>
|
</div>
|
||||||
<Download className="h-4 w-4" />
|
<button
|
||||||
{t.toolPage.download} {fileType} ({formatFileSize(fileSize)})
|
type="button"
|
||||||
</button>
|
onClick={handleDownload}
|
||||||
|
className="w-full text-center text-xs text-primary hover:text-primary/80 underline underline-offset-2"
|
||||||
|
>
|
||||||
|
{t.toolPage.downloadAsFile}
|
||||||
|
</button>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{/* Download button -- primary for non-data tools */}
|
||||||
|
{!isDataOutput && (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-download-button
|
||||||
|
onClick={handleDownload}
|
||||||
|
className="w-full py-2.5 rounded-lg bg-primary text-primary-foreground font-medium text-sm flex items-center justify-center gap-2 hover:bg-primary/90"
|
||||||
|
>
|
||||||
|
<Download className="h-4 w-4" />
|
||||||
|
{isMultiOutput
|
||||||
|
? `${t.toolPage.downloadAll} (ZIP, ${formatFileSize(fileSize)})`
|
||||||
|
: hasBatchStats && successCount != null && successCount > 1
|
||||||
|
? `${format(t.toolPage.downloadFiles, { count: successCount })} (ZIP, ${formatFileSize(fileSize)})`
|
||||||
|
: `${t.toolPage.download} ${fileType} (${formatFileSize(fileSize)})`}
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Adjust settings */}
|
{/* Adjust settings */}
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ import {
|
|||||||
ChevronLeft,
|
ChevronLeft,
|
||||||
ChevronRight,
|
ChevronRight,
|
||||||
ChevronUp,
|
ChevronUp,
|
||||||
|
Circle,
|
||||||
Download,
|
Download,
|
||||||
FileImage,
|
FileImage,
|
||||||
Loader2,
|
Loader2,
|
||||||
Upload,
|
Upload,
|
||||||
|
XCircle,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||||
import type { Crop } from "react-image-crop";
|
import type { Crop } from "react-image-crop";
|
||||||
@@ -42,7 +44,7 @@ import { useBase64Store } from "@/stores/base64-store";
|
|||||||
import { useCollageStore } from "@/stores/collage-store";
|
import { useCollageStore } from "@/stores/collage-store";
|
||||||
import { useDuplicateStore } from "@/stores/duplicate-store";
|
import { useDuplicateStore } from "@/stores/duplicate-store";
|
||||||
import { useFeaturesStore } from "@/stores/features-store";
|
import { useFeaturesStore } from "@/stores/features-store";
|
||||||
import { useFileStore } from "@/stores/file-store";
|
import { type FileEntry, useFileStore } from "@/stores/file-store";
|
||||||
import { useHtmlToImageStore } from "@/stores/html-to-image-store";
|
import { useHtmlToImageStore } from "@/stores/html-to-image-store";
|
||||||
import { usePdfToImageStore } from "@/stores/pdf-to-image-store";
|
import { usePdfToImageStore } from "@/stores/pdf-to-image-store";
|
||||||
import { useQrStore } from "@/stores/qr-store";
|
import { useQrStore } from "@/stores/qr-store";
|
||||||
@@ -84,15 +86,31 @@ function getFileFormat(name: string): string {
|
|||||||
|
|
||||||
const COLLAPSED_LIMIT = 5;
|
const COLLAPSED_LIMIT = 5;
|
||||||
|
|
||||||
|
/** Status icon for a file entry in the batch list. */
|
||||||
|
function FileStatusIcon({ status }: { status: FileEntry["status"] }) {
|
||||||
|
switch (status) {
|
||||||
|
case "completed":
|
||||||
|
return <CheckCircle2 className="h-3 w-3 text-emerald-600 shrink-0" />;
|
||||||
|
case "failed":
|
||||||
|
return <XCircle className="h-3 w-3 text-destructive shrink-0" />;
|
||||||
|
case "processing":
|
||||||
|
return <Loader2 className="h-3 w-3 text-primary shrink-0 animate-spin" />;
|
||||||
|
default:
|
||||||
|
return <Circle className="h-3 w-3 text-muted-foreground/40 shrink-0" />;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** File selection indicator shown in left panel */
|
/** File selection indicator shown in left panel */
|
||||||
function FileSelectionInfo({
|
function FileSelectionInfo({
|
||||||
files,
|
files,
|
||||||
|
fileEntries,
|
||||||
selectedIndex,
|
selectedIndex,
|
||||||
onSelect,
|
onSelect,
|
||||||
onClear,
|
onClear,
|
||||||
onAddMore,
|
onAddMore,
|
||||||
}: {
|
}: {
|
||||||
files: File[];
|
files: File[];
|
||||||
|
fileEntries: FileEntry[];
|
||||||
selectedIndex: number;
|
selectedIndex: number;
|
||||||
onSelect: (index: number) => void;
|
onSelect: (index: number) => void;
|
||||||
onClear: () => void;
|
onClear: () => void;
|
||||||
@@ -107,6 +125,9 @@ function FileSelectionInfo({
|
|||||||
|
|
||||||
const showToggle = files.length > COLLAPSED_LIMIT;
|
const showToggle = files.length > COLLAPSED_LIMIT;
|
||||||
const visible = expanded ? files : files.slice(0, COLLAPSED_LIMIT);
|
const visible = expanded ? files : files.slice(0, COLLAPSED_LIMIT);
|
||||||
|
const hasAnyProcessed = fileEntries.some(
|
||||||
|
(e) => e.status === "completed" || e.status === "failed",
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
@@ -124,6 +145,7 @@ function FileSelectionInfo({
|
|||||||
<div className="space-y-0.5">
|
<div className="space-y-0.5">
|
||||||
{visible.map((file, i) => {
|
{visible.map((file, i) => {
|
||||||
const isSelected = i === selectedIndex;
|
const isSelected = i === selectedIndex;
|
||||||
|
const entry = fileEntries[i];
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
key={`${file.name}-${i}`}
|
key={`${file.name}-${i}`}
|
||||||
@@ -131,7 +153,11 @@ function FileSelectionInfo({
|
|||||||
onClick={() => onSelect(i)}
|
onClick={() => onSelect(i)}
|
||||||
className={`w-full flex items-center gap-1.5 text-xs rounded px-2 py-1.5 text-start transition-colors ${isSelected ? "bg-primary/10 text-foreground" : "text-muted-foreground hover:bg-muted"}`}
|
className={`w-full flex items-center gap-1.5 text-xs rounded px-2 py-1.5 text-start transition-colors ${isSelected ? "bg-primary/10 text-foreground" : "text-muted-foreground hover:bg-muted"}`}
|
||||||
>
|
>
|
||||||
{isSelected && <CheckCircle2 className="h-3 w-3 text-primary shrink-0" />}
|
{hasAnyProcessed && entry ? (
|
||||||
|
<FileStatusIcon status={entry.status} />
|
||||||
|
) : (
|
||||||
|
isSelected && <CheckCircle2 className="h-3 w-3 text-primary shrink-0" />
|
||||||
|
)}
|
||||||
<span className="truncate flex-1 min-w-0">{file.name}</span>
|
<span className="truncate flex-1 min-w-0">{file.name}</span>
|
||||||
<span className="shrink-0 text-[10px] text-muted-foreground">
|
<span className="shrink-0 text-[10px] text-muted-foreground">
|
||||||
{getFileFormat(file.name)}
|
{getFileFormat(file.name)}
|
||||||
@@ -914,6 +940,11 @@ export function ToolPage() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Batch stats for partial failure display
|
||||||
|
const batchTotal = entries.length;
|
||||||
|
const batchSuccess = entries.filter((e) => e.status === "completed").length;
|
||||||
|
const batchFailed = entries.filter((e) => e.status === "failed").length;
|
||||||
|
|
||||||
// Render the settings panel content (shared between mobile/desktop)
|
// Render the settings panel content (shared between mobile/desktop)
|
||||||
function renderSettingsContent() {
|
function renderSettingsContent() {
|
||||||
return (
|
return (
|
||||||
@@ -922,6 +953,7 @@ export function ToolPage() {
|
|||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<FileSelectionInfo
|
<FileSelectionInfo
|
||||||
files={files}
|
files={files}
|
||||||
|
fileEntries={entries}
|
||||||
selectedIndex={selectedIndex}
|
selectedIndex={selectedIndex}
|
||||||
onSelect={setSelectedIndex}
|
onSelect={setSelectedIndex}
|
||||||
onClear={reset}
|
onClear={reset}
|
||||||
@@ -962,6 +994,9 @@ export function ToolPage() {
|
|||||||
onUndo={handleUndo}
|
onUndo={handleUndo}
|
||||||
onStartOver={startOver}
|
onStartOver={startOver}
|
||||||
currentToolId={tool?.id ?? ""}
|
currentToolId={tool?.id ?? ""}
|
||||||
|
totalCount={batchTotal}
|
||||||
|
successCount={batchSuccess}
|
||||||
|
failedCount={batchFailed}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -2444,6 +2444,7 @@ export const ar: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "تطبيق وتنزيل",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2456,6 +2457,11 @@ export const ar: TranslationKeys = {
|
|||||||
settingsSaved: "تم حفظ إعداداتك.",
|
settingsSaved: "تم حفظ إعداداتك.",
|
||||||
tryAgain: "حاول مرة أخرى",
|
tryAgain: "حاول مرة أخرى",
|
||||||
tryDifferentFile: "جرب ملفًا مختلفًا",
|
tryDifferentFile: "جرب ملفًا مختلفًا",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "جاري إنشاء المعاينة...",
|
generatingPreview: "جاري إنشاء المعاينة...",
|
||||||
|
|||||||
@@ -2458,6 +2458,7 @@ export const de: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Anwenden & Herunterladen",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2470,6 +2471,11 @@ export const de: TranslationKeys = {
|
|||||||
settingsSaved: "Ihre Einstellungen wurden gespeichert.",
|
settingsSaved: "Ihre Einstellungen wurden gespeichert.",
|
||||||
tryAgain: "Erneut versuchen",
|
tryAgain: "Erneut versuchen",
|
||||||
tryDifferentFile: "Andere Datei versuchen",
|
tryDifferentFile: "Andere Datei versuchen",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Vorschau wird generiert...",
|
generatingPreview: "Vorschau wird generiert...",
|
||||||
|
|||||||
@@ -2408,6 +2408,7 @@ export const en = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Apply & Download",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2420,6 +2421,11 @@ export const en = {
|
|||||||
settingsSaved: "Your settings are saved.",
|
settingsSaved: "Your settings are saved.",
|
||||||
tryAgain: "Try again",
|
tryAgain: "Try again",
|
||||||
tryDifferentFile: "Try a different file",
|
tryDifferentFile: "Try a different file",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Generating preview...",
|
generatingPreview: "Generating preview...",
|
||||||
|
|||||||
@@ -2440,6 +2440,7 @@ export const es: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Aplicar y descargar",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2452,6 +2453,11 @@ export const es: TranslationKeys = {
|
|||||||
settingsSaved: "Tu configuracion se ha guardado.",
|
settingsSaved: "Tu configuracion se ha guardado.",
|
||||||
tryAgain: "Reintentar",
|
tryAgain: "Reintentar",
|
||||||
tryDifferentFile: "Probar con otro archivo",
|
tryDifferentFile: "Probar con otro archivo",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Generando vista previa...",
|
generatingPreview: "Generando vista previa...",
|
||||||
|
|||||||
@@ -2459,6 +2459,7 @@ export const fr: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Appliquer et télécharger",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2471,6 +2472,11 @@ export const fr: TranslationKeys = {
|
|||||||
settingsSaved: "Vos parametres sont enregistres.",
|
settingsSaved: "Vos parametres sont enregistres.",
|
||||||
tryAgain: "Reessayer",
|
tryAgain: "Reessayer",
|
||||||
tryDifferentFile: "Essayer un autre fichier",
|
tryDifferentFile: "Essayer un autre fichier",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Generation de l'apercu...",
|
generatingPreview: "Generation de l'apercu...",
|
||||||
|
|||||||
@@ -2441,6 +2441,7 @@ export const hi: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "लागू करें और डाउनलोड करें",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2453,6 +2454,11 @@ export const hi: TranslationKeys = {
|
|||||||
settingsSaved: "आपकी सेटिंग्स सहेज ली गई हैं।",
|
settingsSaved: "आपकी सेटिंग्स सहेज ली गई हैं।",
|
||||||
tryAgain: "पुनः प्रयास करें",
|
tryAgain: "पुनः प्रयास करें",
|
||||||
tryDifferentFile: "एक अलग फ़ाइल आज़माएं",
|
tryDifferentFile: "एक अलग फ़ाइल आज़माएं",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "प्रीव्यू जनरेट हो रहा है...",
|
generatingPreview: "प्रीव्यू जनरेट हो रहा है...",
|
||||||
|
|||||||
@@ -2453,6 +2453,7 @@ export const id: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Terapkan & Unduh",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2465,6 +2466,11 @@ export const id: TranslationKeys = {
|
|||||||
settingsSaved: "Pengaturan Anda tersimpan.",
|
settingsSaved: "Pengaturan Anda tersimpan.",
|
||||||
tryAgain: "Coba lagi",
|
tryAgain: "Coba lagi",
|
||||||
tryDifferentFile: "Coba file lain",
|
tryDifferentFile: "Coba file lain",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Membuat pratinjau...",
|
generatingPreview: "Membuat pratinjau...",
|
||||||
|
|||||||
@@ -2452,6 +2452,7 @@ export const it: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Applica e scarica",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2464,6 +2465,11 @@ export const it: TranslationKeys = {
|
|||||||
settingsSaved: "Le impostazioni sono state salvate.",
|
settingsSaved: "Le impostazioni sono state salvate.",
|
||||||
tryAgain: "Riprova",
|
tryAgain: "Riprova",
|
||||||
tryDifferentFile: "Prova un file diverso",
|
tryDifferentFile: "Prova un file diverso",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Generazione anteprima...",
|
generatingPreview: "Generazione anteprima...",
|
||||||
|
|||||||
@@ -2411,6 +2411,7 @@ export const ja: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "適用してダウンロード",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2423,6 +2424,11 @@ export const ja: TranslationKeys = {
|
|||||||
settingsSaved: "設定は保存されています。",
|
settingsSaved: "設定は保存されています。",
|
||||||
tryAgain: "再試行",
|
tryAgain: "再試行",
|
||||||
tryDifferentFile: "別のファイルを試す",
|
tryDifferentFile: "別のファイルを試す",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "プレビューを生成中...",
|
generatingPreview: "プレビューを生成中...",
|
||||||
|
|||||||
@@ -2396,6 +2396,7 @@ export const ko: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "적용 및 다운로드",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2408,6 +2409,11 @@ export const ko: TranslationKeys = {
|
|||||||
settingsSaved: "설정이 저장되었습니다.",
|
settingsSaved: "설정이 저장되었습니다.",
|
||||||
tryAgain: "다시 시도",
|
tryAgain: "다시 시도",
|
||||||
tryDifferentFile: "다른 파일 시도",
|
tryDifferentFile: "다른 파일 시도",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "미리보기 생성 중...",
|
generatingPreview: "미리보기 생성 중...",
|
||||||
|
|||||||
@@ -2455,6 +2455,7 @@ export const nl: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Toepassen en downloaden",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2467,6 +2468,11 @@ export const nl: TranslationKeys = {
|
|||||||
settingsSaved: "Uw instellingen zijn opgeslagen.",
|
settingsSaved: "Uw instellingen zijn opgeslagen.",
|
||||||
tryAgain: "Opnieuw proberen",
|
tryAgain: "Opnieuw proberen",
|
||||||
tryDifferentFile: "Een ander bestand proberen",
|
tryDifferentFile: "Een ander bestand proberen",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Preview genereren...",
|
generatingPreview: "Preview genereren...",
|
||||||
|
|||||||
@@ -2456,6 +2456,7 @@ export const pl: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Zastosuj i pobierz",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2468,6 +2469,11 @@ export const pl: TranslationKeys = {
|
|||||||
settingsSaved: "Twoje ustawienia zostaly zapisane.",
|
settingsSaved: "Twoje ustawienia zostaly zapisane.",
|
||||||
tryAgain: "Sprobuj ponownie",
|
tryAgain: "Sprobuj ponownie",
|
||||||
tryDifferentFile: "Sprobuj inny plik",
|
tryDifferentFile: "Sprobuj inny plik",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Generowanie podglądu...",
|
generatingPreview: "Generowanie podglądu...",
|
||||||
|
|||||||
@@ -2452,6 +2452,7 @@ export const ptBR: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Aplicar e baixar",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2464,6 +2465,11 @@ export const ptBR: TranslationKeys = {
|
|||||||
settingsSaved: "Suas configuracoes foram salvas.",
|
settingsSaved: "Suas configuracoes foram salvas.",
|
||||||
tryAgain: "Tentar novamente",
|
tryAgain: "Tentar novamente",
|
||||||
tryDifferentFile: "Tentar outro arquivo",
|
tryDifferentFile: "Tentar outro arquivo",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Gerando visualizacao...",
|
generatingPreview: "Gerando visualizacao...",
|
||||||
|
|||||||
@@ -2454,6 +2454,7 @@ export const ru: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Применить и скачать",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2466,6 +2467,11 @@ export const ru: TranslationKeys = {
|
|||||||
settingsSaved: "Ваши настройки сохранены.",
|
settingsSaved: "Ваши настройки сохранены.",
|
||||||
tryAgain: "Попробовать снова",
|
tryAgain: "Попробовать снова",
|
||||||
tryDifferentFile: "Попробовать другой файл",
|
tryDifferentFile: "Попробовать другой файл",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Генерация предпросмотра...",
|
generatingPreview: "Генерация предпросмотра...",
|
||||||
|
|||||||
@@ -2451,6 +2451,7 @@ export const sv: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Tillämpa och ladda ner",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2463,6 +2464,11 @@ export const sv: TranslationKeys = {
|
|||||||
settingsSaved: "Dina installningar ar sparade.",
|
settingsSaved: "Dina installningar ar sparade.",
|
||||||
tryAgain: "Forsok igen",
|
tryAgain: "Forsok igen",
|
||||||
tryDifferentFile: "Prova en annan fil",
|
tryDifferentFile: "Prova en annan fil",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Genererar forhandsvisning...",
|
generatingPreview: "Genererar forhandsvisning...",
|
||||||
|
|||||||
@@ -2433,6 +2433,7 @@ export const th: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "นำไปใช้และดาวน์โหลด",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2445,6 +2446,11 @@ export const th: TranslationKeys = {
|
|||||||
settingsSaved: "บันทึกการตั้งค่าของคุณแล้ว",
|
settingsSaved: "บันทึกการตั้งค่าของคุณแล้ว",
|
||||||
tryAgain: "ลองอีกครั้ง",
|
tryAgain: "ลองอีกครั้ง",
|
||||||
tryDifferentFile: "ลองไฟล์อื่น",
|
tryDifferentFile: "ลองไฟล์อื่น",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "กำลังสร้างตัวอย่าง...",
|
generatingPreview: "กำลังสร้างตัวอย่าง...",
|
||||||
|
|||||||
@@ -2456,6 +2456,7 @@ export const tr: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Uygula ve indir",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2468,6 +2469,11 @@ export const tr: TranslationKeys = {
|
|||||||
settingsSaved: "Ayarlariniz kaydedildi.",
|
settingsSaved: "Ayarlariniz kaydedildi.",
|
||||||
tryAgain: "Tekrar dene",
|
tryAgain: "Tekrar dene",
|
||||||
tryDifferentFile: "Farkli bir dosya dene",
|
tryDifferentFile: "Farkli bir dosya dene",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Önizleme oluşturuluyor...",
|
generatingPreview: "Önizleme oluşturuluyor...",
|
||||||
|
|||||||
@@ -2454,6 +2454,7 @@ export const uk: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Застосувати та завантажити",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2466,6 +2467,11 @@ export const uk: TranslationKeys = {
|
|||||||
settingsSaved: "Ваші налаштування збережено.",
|
settingsSaved: "Ваші налаштування збережено.",
|
||||||
tryAgain: "Спробувати знову",
|
tryAgain: "Спробувати знову",
|
||||||
tryDifferentFile: "Спробувати інший файл",
|
tryDifferentFile: "Спробувати інший файл",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Генерація попереднього перегляду...",
|
generatingPreview: "Генерація попереднього перегляду...",
|
||||||
|
|||||||
@@ -2453,6 +2453,7 @@ export const vi: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "Áp dụng và tải xuống",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2465,6 +2466,11 @@ export const vi: TranslationKeys = {
|
|||||||
settingsSaved: "Cai dat cua ban da duoc luu.",
|
settingsSaved: "Cai dat cua ban da duoc luu.",
|
||||||
tryAgain: "Thu lai",
|
tryAgain: "Thu lai",
|
||||||
tryDifferentFile: "Thu tep khac",
|
tryDifferentFile: "Thu tep khac",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "Đang tạo bản xem trước...",
|
generatingPreview: "Đang tạo bản xem trước...",
|
||||||
|
|||||||
@@ -2386,6 +2386,7 @@ export const zhCN: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "应用并下载",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2398,6 +2399,11 @@ export const zhCN: TranslationKeys = {
|
|||||||
settingsSaved: "您的设置已保存。",
|
settingsSaved: "您的设置已保存。",
|
||||||
tryAgain: "重试",
|
tryAgain: "重试",
|
||||||
tryDifferentFile: "尝试其他文件",
|
tryDifferentFile: "尝试其他文件",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "正在生成预览...",
|
generatingPreview: "正在生成预览...",
|
||||||
|
|||||||
@@ -2384,6 +2384,7 @@ export const zhTW: TranslationKeys = {
|
|||||||
disabledByAdmin: "This tool has been disabled by your administrator",
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
||||||
browseOtherTools: "Browse other tools",
|
browseOtherTools: "Browse other tools",
|
||||||
privacyNote: "Files are processed on your server and never leave your network",
|
privacyNote: "Files are processed on your server and never leave your network",
|
||||||
|
applyAndDownload: "套用並下載",
|
||||||
andMore: "and {count} more",
|
andMore: "and {count} more",
|
||||||
adjustSettings: "Adjust settings",
|
adjustSettings: "Adjust settings",
|
||||||
startOver: "Start over with a new file",
|
startOver: "Start over with a new file",
|
||||||
@@ -2396,6 +2397,11 @@ export const zhTW: TranslationKeys = {
|
|||||||
settingsSaved: "您的設定已儲存。",
|
settingsSaved: "您的設定已儲存。",
|
||||||
tryAgain: "重試",
|
tryAgain: "重試",
|
||||||
tryDifferentFile: "嘗試其他檔案",
|
tryDifferentFile: "嘗試其他檔案",
|
||||||
|
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||||||
|
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||||||
|
downloadAsFile: "Download as file",
|
||||||
|
downloadAll: "Download All",
|
||||||
|
downloadFiles: "Download {count} files",
|
||||||
},
|
},
|
||||||
homePage: {
|
homePage: {
|
||||||
generatingPreview: "正在產生預覽...",
|
generatingPreview: "正在產生預覽...",
|
||||||
|
|||||||
Reference in New Issue
Block a user