mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: disable auto-save, add Save to Files button, accept all file types in library
- Disabled auto-save of processed files to library (worker no longer calls autoSaveToLibrary) - Added "Save to Files" button in the review panel for explicit saving - Files library upload area now accepts all file types, not just images - Removed "Drop images here" hardcoded text, replaced with i18n - Removed image-only file filter from library upload
This commit is contained in:
@@ -238,15 +238,8 @@ async function processToolJob(job: Job<ToolJobData>): Promise<ToolJobResult> {
|
||||
// Generate preview for non-browser-previewable formats
|
||||
const previewRef = await generatePreview(resultBuffer, resultContentType, jobId, inputBuffer);
|
||||
|
||||
// Auto-save to user file library
|
||||
const savedFileId = await autoSaveToLibrary({
|
||||
fileId: data.fileId,
|
||||
userId: data.userId,
|
||||
buffer: resultBuffer,
|
||||
outName,
|
||||
contentType: resultContentType,
|
||||
toolId: data.toolId,
|
||||
});
|
||||
// No auto-save -- users save to library explicitly via the UI
|
||||
const savedFileId: string | undefined = undefined;
|
||||
|
||||
const durationMs = Date.now() - startTime;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { AlertCircle, ArrowLeft, CheckCircle2, Download, FileText } from "lucide-react";
|
||||
import { useMemo } from "react";
|
||||
import { AlertCircle, ArrowLeft, CheckCircle2, Download, FileText, FolderPlus } from "lucide-react";
|
||||
import { useCallback, useMemo, useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import { useTranslation } from "@/contexts/i18n-context";
|
||||
import { formatHeaders } from "@/lib/api";
|
||||
import { formatFileSize, triggerDownload } from "@/lib/download";
|
||||
import { format } from "@/lib/format";
|
||||
|
||||
@@ -72,6 +73,28 @@ export function ReviewPanel({
|
||||
triggerDownload(downloadUrl, filename);
|
||||
};
|
||||
|
||||
const [saveStatus, setSaveStatus] = useState<"idle" | "saving" | "saved" | "error">("idle");
|
||||
|
||||
const handleSaveToFiles = useCallback(async () => {
|
||||
setSaveStatus("saving");
|
||||
try {
|
||||
const res = await fetch(downloadUrl);
|
||||
const blob = await res.blob();
|
||||
const formData = new FormData();
|
||||
formData.append("file", new File([blob], filename, { type: fileType }));
|
||||
const uploadRes = await fetch("/api/v1/files/upload", {
|
||||
method: "POST",
|
||||
headers: formatHeaders(),
|
||||
body: formData,
|
||||
});
|
||||
if (!uploadRes.ok) throw new Error("Upload failed");
|
||||
setSaveStatus("saved");
|
||||
} catch {
|
||||
setSaveStatus("error");
|
||||
setTimeout(() => setSaveStatus("idle"), 3000);
|
||||
}
|
||||
}, [downloadUrl, filename, fileType]);
|
||||
|
||||
const hasBatchStats =
|
||||
totalCount != null && totalCount > 1 && successCount != null && failedCount != null;
|
||||
|
||||
@@ -165,6 +188,23 @@ export function ReviewPanel({
|
||||
</button>
|
||||
)}
|
||||
|
||||
{/* Save to Files */}
|
||||
{!isDataOutput && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={handleSaveToFiles}
|
||||
disabled={saveStatus === "saving" || saveStatus === "saved"}
|
||||
className="w-full py-2 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted text-sm flex items-center justify-center gap-2 disabled:opacity-50 transition-colors"
|
||||
>
|
||||
<FolderPlus className="h-4 w-4" />
|
||||
{saveStatus === "saving"
|
||||
? t.common.saving
|
||||
: saveStatus === "saved"
|
||||
? t.toolPage.savedToFiles
|
||||
: t.toolPage.saveToFiles}
|
||||
</button>
|
||||
)}
|
||||
|
||||
{/* Adjust settings */}
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { Upload } from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import { isImageFile } from "@/components/common/dropzone";
|
||||
import { useTranslation } from "@/contexts/i18n-context";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useFilesPageStore } from "@/stores/files-page-store";
|
||||
|
||||
export function FileUploadArea() {
|
||||
const { t } = useTranslation();
|
||||
const { uploadFiles, loading, uploadProgress } = useFilesPageStore();
|
||||
const [dragging, setDragging] = useState(false);
|
||||
|
||||
@@ -20,14 +21,13 @@ export function FileUploadArea() {
|
||||
function handleDrop(e: React.DragEvent) {
|
||||
e.preventDefault();
|
||||
setDragging(false);
|
||||
const files = Array.from(e.dataTransfer.files).filter(isImageFile);
|
||||
const files = Array.from(e.dataTransfer.files);
|
||||
if (files.length > 0) uploadFiles(files);
|
||||
}
|
||||
|
||||
function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {
|
||||
const files = Array.from(e.target.files ?? []);
|
||||
if (files.length > 0) uploadFiles(files);
|
||||
// Reset input so the same file can be re-selected
|
||||
e.target.value = "";
|
||||
}
|
||||
|
||||
@@ -57,19 +57,13 @@ export function FileUploadArea() {
|
||||
)}
|
||||
<div className="text-center">
|
||||
<p className="text-sm font-medium text-foreground">
|
||||
{loading ? "Uploading..." : "Drop images here"}
|
||||
{loading ? t.common.loading : t.files.dropFilesHere}
|
||||
</p>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{loading ? "" : "or click to select files"}
|
||||
{loading ? "" : t.files.orClickToSelect}
|
||||
</p>
|
||||
</div>
|
||||
<input
|
||||
type="file"
|
||||
accept="image/*,.avif,.heic,.heif,.hif,.jxl,.dng,.cr2,.cr3,.nef,.nrw,.arw,.orf,.rw2,.raf,.pef,.3fr,.iiq,.srw,.x3f,.rwl,.gpr,.fff,.mrw,.mef,.kdc,.dcr,.erf,.ptx,.tga,.psd,.exr,.hdr,.svgz,.jp2,.j2k,.qoi,.eps,.dds,.cur,.apng,.dpx,.cin,.fits,.ppm,.pgm,.pbm,.pfm"
|
||||
multiple
|
||||
className="hidden"
|
||||
onChange={handleInputChange}
|
||||
/>
|
||||
<input type="file" multiple className="hidden" onChange={handleInputChange} />
|
||||
</label>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -12,6 +12,7 @@ export const ar: TranslationKeys = {
|
||||
search: "البحث في الأدوات...",
|
||||
dropFiles: "اسحب الملفات هنا أو اضغط على زر الرفع",
|
||||
loading: "جاري التحميل...",
|
||||
saving: "Saving...",
|
||||
error: "حدث خطأ",
|
||||
confirm: "تأكيد",
|
||||
close: "إغلاق",
|
||||
@@ -2447,6 +2448,8 @@ export const ar: TranslationKeys = {
|
||||
applyAndDownload: "تطبيق وتنزيل",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3216,6 +3219,8 @@ export const ar: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const de: TranslationKeys = {
|
||||
search: "Werkzeuge suchen...",
|
||||
dropFiles: "Dateien hierher ziehen oder auf die Schaltflaeche klicken",
|
||||
loading: "Wird geladen...",
|
||||
saving: "Saving...",
|
||||
error: "Ein Fehler ist aufgetreten",
|
||||
confirm: "Bestaetigen",
|
||||
close: "Schliessen",
|
||||
@@ -2461,6 +2462,8 @@ export const de: TranslationKeys = {
|
||||
applyAndDownload: "Anwenden & Herunterladen",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3245,6 +3248,8 @@ export const de: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -10,6 +10,7 @@ export const en = {
|
||||
search: "Search tools...",
|
||||
dropFiles: "Drop files here or click the upload button",
|
||||
loading: "Loading...",
|
||||
saving: "Saving...",
|
||||
error: "An error occurred",
|
||||
confirm: "Confirm",
|
||||
close: "Close",
|
||||
@@ -2411,6 +2412,8 @@ export const en = {
|
||||
applyAndDownload: "Apply & Download",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3182,6 +3185,8 @@ export const en = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const es: TranslationKeys = {
|
||||
search: "Buscar herramientas...",
|
||||
dropFiles: "Arrastra archivos aqui o haz clic en el boton de carga",
|
||||
loading: "Cargando...",
|
||||
saving: "Saving...",
|
||||
error: "Ocurrio un error",
|
||||
confirm: "Confirmar",
|
||||
close: "Cerrar",
|
||||
@@ -2443,6 +2444,8 @@ export const es: TranslationKeys = {
|
||||
applyAndDownload: "Aplicar y descargar",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3222,6 +3225,8 @@ export const es: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const fr: TranslationKeys = {
|
||||
search: "Rechercher des outils...",
|
||||
dropFiles: "Deposez des fichiers ici ou cliquez sur le bouton d'import",
|
||||
loading: "Chargement...",
|
||||
saving: "Saving...",
|
||||
error: "Une erreur est survenue",
|
||||
confirm: "Confirmer",
|
||||
close: "Fermer",
|
||||
@@ -2462,6 +2463,8 @@ export const fr: TranslationKeys = {
|
||||
applyAndDownload: "Appliquer et télécharger",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3243,6 +3246,8 @@ export const fr: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const hi: TranslationKeys = {
|
||||
search: "टूल्स खोजें...",
|
||||
dropFiles: "फाइलें यहां खींचें या अपलोड बटन पर क्लिक करें",
|
||||
loading: "लोड हो रहा है...",
|
||||
saving: "Saving...",
|
||||
error: "एक त्रुटि हुई",
|
||||
confirm: "पुष्टि करें",
|
||||
close: "बंद करें",
|
||||
@@ -2444,6 +2445,8 @@ export const hi: TranslationKeys = {
|
||||
applyAndDownload: "लागू करें और डाउनलोड करें",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3213,6 +3216,8 @@ export const hi: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const id: TranslationKeys = {
|
||||
search: "Cari alat...",
|
||||
dropFiles: "Seret file ke sini atau klik tombol unggah",
|
||||
loading: "Memuat...",
|
||||
saving: "Saving...",
|
||||
error: "Terjadi kesalahan",
|
||||
confirm: "Konfirmasi",
|
||||
close: "Tutup",
|
||||
@@ -2456,6 +2457,8 @@ export const id: TranslationKeys = {
|
||||
applyAndDownload: "Terapkan & Unduh",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3230,6 +3233,8 @@ export const id: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const it: TranslationKeys = {
|
||||
search: "Cerca strumenti...",
|
||||
dropFiles: "Trascina i file qui o fai clic sul pulsante di caricamento",
|
||||
loading: "Caricamento...",
|
||||
saving: "Saving...",
|
||||
error: "Si e verificato un errore",
|
||||
confirm: "Conferma",
|
||||
close: "Chiudi",
|
||||
@@ -2455,6 +2456,8 @@ export const it: TranslationKeys = {
|
||||
applyAndDownload: "Applica e scarica",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3237,6 +3240,8 @@ export const it: TranslationKeys = {
|
||||
openFile: "Apri file",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Apri nella pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Nome",
|
||||
format: "Formato",
|
||||
size: "Dimensione",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const ja: TranslationKeys = {
|
||||
search: "ツールを検索...",
|
||||
dropFiles: "ここにファイルをドロップするかアップロードボタンをクリック",
|
||||
loading: "読み込み中...",
|
||||
saving: "Saving...",
|
||||
error: "エラーが発生しました",
|
||||
confirm: "確認",
|
||||
close: "閉じる",
|
||||
@@ -2414,6 +2415,8 @@ export const ja: TranslationKeys = {
|
||||
applyAndDownload: "適用してダウンロード",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3186,6 +3189,8 @@ export const ja: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const ko: TranslationKeys = {
|
||||
search: "도구 검색...",
|
||||
dropFiles: "여기에 파일을 놓거나 업로드 버튼을 클릭하세요",
|
||||
loading: "로딩 중...",
|
||||
saving: "Saving...",
|
||||
error: "오류가 발생했습니다",
|
||||
confirm: "확인",
|
||||
close: "닫기",
|
||||
@@ -2399,6 +2400,8 @@ export const ko: TranslationKeys = {
|
||||
applyAndDownload: "적용 및 다운로드",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3171,6 +3174,8 @@ export const ko: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const nl: TranslationKeys = {
|
||||
search: "Gereedschap zoeken...",
|
||||
dropFiles: "Sleep bestanden hierheen of klik op de uploadknop",
|
||||
loading: "Laden...",
|
||||
saving: "Saving...",
|
||||
error: "Er is een fout opgetreden",
|
||||
confirm: "Bevestigen",
|
||||
close: "Sluiten",
|
||||
@@ -2458,6 +2459,8 @@ export const nl: TranslationKeys = {
|
||||
applyAndDownload: "Toepassen en downloaden",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3233,6 +3236,8 @@ export const nl: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const pl: TranslationKeys = {
|
||||
search: "Szukaj narzędzi...",
|
||||
dropFiles: "Przeciągnij pliki tutaj lub kliknij przycisk przesyłania",
|
||||
loading: "Ładowanie...",
|
||||
saving: "Saving...",
|
||||
error: "Wystąpił błąd",
|
||||
confirm: "Potwierdź",
|
||||
close: "Zamknij",
|
||||
@@ -2459,6 +2460,8 @@ export const pl: TranslationKeys = {
|
||||
applyAndDownload: "Zastosuj i pobierz",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3240,6 +3243,8 @@ export const pl: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const ptBR: TranslationKeys = {
|
||||
search: "Buscar ferramentas...",
|
||||
dropFiles: "Arraste arquivos aqui ou clique no botao de envio",
|
||||
loading: "Carregando...",
|
||||
saving: "Saving...",
|
||||
error: "Ocorreu um erro",
|
||||
confirm: "Confirmar",
|
||||
close: "Fechar",
|
||||
@@ -2455,6 +2456,8 @@ export const ptBR: TranslationKeys = {
|
||||
applyAndDownload: "Aplicar e baixar",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3233,6 +3236,8 @@ export const ptBR: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const ru: TranslationKeys = {
|
||||
search: "Поиск инструментов...",
|
||||
dropFiles: "Перетащите файлы сюда или нажмите кнопку загрузки",
|
||||
loading: "Загрузка...",
|
||||
saving: "Saving...",
|
||||
error: "Произошла ошибка",
|
||||
confirm: "Подтвердить",
|
||||
close: "Закрыть",
|
||||
@@ -2457,6 +2458,8 @@ export const ru: TranslationKeys = {
|
||||
applyAndDownload: "Применить и скачать",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3232,6 +3235,8 @@ export const ru: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const sv: TranslationKeys = {
|
||||
search: "Sok verktyg...",
|
||||
dropFiles: "Slapp filer har eller klicka pa uppladdningsknappen",
|
||||
loading: "Laddar...",
|
||||
saving: "Saving...",
|
||||
error: "Ett fel uppstod",
|
||||
confirm: "Bekrafta",
|
||||
close: "Stang",
|
||||
@@ -2454,6 +2455,8 @@ export const sv: TranslationKeys = {
|
||||
applyAndDownload: "Tillämpa och ladda ner",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3227,6 +3230,8 @@ export const sv: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const th: TranslationKeys = {
|
||||
search: "ค้นหาเครื่องมือ...",
|
||||
dropFiles: "ลากไฟล์มาวางที่นี่หรือกดปุ่มอัปโหลด",
|
||||
loading: "กำลังโหลด...",
|
||||
saving: "Saving...",
|
||||
error: "เกิดข้อผิดพลาด",
|
||||
confirm: "ยืนยัน",
|
||||
close: "ปิด",
|
||||
@@ -2436,6 +2437,8 @@ export const th: TranslationKeys = {
|
||||
applyAndDownload: "นำไปใช้และดาวน์โหลด",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3204,6 +3207,8 @@ export const th: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const tr: TranslationKeys = {
|
||||
search: "Araç ara...",
|
||||
dropFiles: "Dosyaları buraya sürükleyin veya yükle düğmesine tıklayın",
|
||||
loading: "Yükleniyor...",
|
||||
saving: "Saving...",
|
||||
error: "Bir hata oluştu",
|
||||
confirm: "Onayla",
|
||||
close: "Kapat",
|
||||
@@ -2459,6 +2460,8 @@ export const tr: TranslationKeys = {
|
||||
applyAndDownload: "Uygula ve indir",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3237,6 +3240,8 @@ export const tr: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const uk: TranslationKeys = {
|
||||
search: "Пошук інструментів...",
|
||||
dropFiles: "Перетягніть файли сюди або натисніть кнопку завантаження",
|
||||
loading: "Завантаження...",
|
||||
saving: "Saving...",
|
||||
error: "Сталася помилка",
|
||||
confirm: "Підтвердити",
|
||||
close: "Закрити",
|
||||
@@ -2457,6 +2458,8 @@ export const uk: TranslationKeys = {
|
||||
applyAndDownload: "Застосувати та завантажити",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3233,6 +3236,8 @@ export const uk: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const vi: TranslationKeys = {
|
||||
search: "Tìm kiếm công cụ...",
|
||||
dropFiles: "Kéo thả tệp vào đây hoặc nhấn nút tải lên",
|
||||
loading: "Đang tải...",
|
||||
saving: "Saving...",
|
||||
error: "Đã xảy ra lỗi",
|
||||
confirm: "Xác nhận",
|
||||
close: "Đóng",
|
||||
@@ -2456,6 +2457,8 @@ export const vi: TranslationKeys = {
|
||||
applyAndDownload: "Áp dụng và tải xuống",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3227,6 +3230,8 @@ export const vi: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const zhCN: TranslationKeys = {
|
||||
search: "搜索工具...",
|
||||
dropFiles: "拖放文件到此处或点击上传按钮",
|
||||
loading: "加载中...",
|
||||
saving: "Saving...",
|
||||
error: "发生错误",
|
||||
confirm: "确认",
|
||||
close: "关闭",
|
||||
@@ -2389,6 +2390,8 @@ export const zhCN: TranslationKeys = {
|
||||
applyAndDownload: "应用并下载",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3155,6 +3158,8 @@ export const zhCN: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const zhTW: TranslationKeys = {
|
||||
search: "搜尋工具...",
|
||||
dropFiles: "拖放檔案至此處或點擊上傳按鈕",
|
||||
loading: "載入中...",
|
||||
saving: "Saving...",
|
||||
error: "發生錯誤",
|
||||
confirm: "確認",
|
||||
close: "關閉",
|
||||
@@ -2387,6 +2388,8 @@ export const zhTW: TranslationKeys = {
|
||||
applyAndDownload: "套用並下載",
|
||||
andMore: "and {count} more",
|
||||
importFromFiles: "Import from Files",
|
||||
saveToFiles: "Save to Files",
|
||||
savedToFiles: "Saved to Files",
|
||||
adjustSettings: "Adjust settings",
|
||||
startOver: "Start over with a new file",
|
||||
backToTools: "Back to Tools",
|
||||
@@ -3153,6 +3156,8 @@ export const zhTW: TranslationKeys = {
|
||||
openFile: "Open File",
|
||||
selectFile: "Select File",
|
||||
openInPipeline: "Open in Pipeline",
|
||||
dropFilesHere: "Drop files here",
|
||||
orClickToSelect: "or click to select files",
|
||||
name: "Name",
|
||||
format: "Format",
|
||||
size: "Size",
|
||||
|
||||
Reference in New Issue
Block a user