Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@
Each name stays reserved while a conversion holds it. A conversion that fails or is cancelled deletes what it began
writing, but only at a path that was its alone: nothing was there before and no other conversion was handed the
same name ("Overwrite"). It frees its names and removes an output folder it made if that is left empty.
*Replace the original* (`OutputRule.ReplaceOriginal`, off by default) comes after that, for a finished result of
the source's own format and extension, or another spelling of it (`.jpeg` / `.jpg`; TXT also covers scripts and
logs, PPT also `.pps` and `.pot`, so those need the same extension). The result is first
moved next to the source under a temporary name, then the source goes to the Recycle Bin / Trash
(`IPlatformServices.MoveToTrash`, in the app and the command line), then the result takes its name. Windows only
ever recycles (IFileOperation with a sink that refuses a delete it can't recycle). When the source can't go there
(no Recycle Bin on the drive, a file open elsewhere, a read-only file), both stay and the file's notice says why,
with a translated reason (`trash.*`). A result "Only if smaller" copied from the source leaves the source alone.
Watch folders and files from a browser never replace.
"Merge into one PDF" converts each file to PDF and merges with PDFsharp.
"Compress into one archive" packs the dropped files, unconverted, with the archive engine (`IFileCombiner`).
"Merge videos", "Merge audio" and "Video from images" join the files, in the order picked in the merge order
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@
"error.geo_unsupported_shape": "هذا النوع من الأشكال غير مدعوم",
"error.geo_too_large": "سيتجاوز ملف Shapefile حد الصيغة البالغ 2 غيغابايت",
"notice.pdf_not_smaller": "تعذّر تقليل الحجم، لذا نُسخ الملف كما هو",
"notice.original_kept": "تم الاحتفاظ بالأصل وحُفظت النتيجة كنسخة",
"notice.original_in_trash": "الأصل في سلة المحذوفات، واحتفظت النتيجة باسمها",
"notice.original_unchanged": "تعذّر تصغيره، لذا تُرك الأصل كما هو",
"trash.no_recycle_bin": "لا توجد سلة محذوفات على هذا القرص",
"trash.in_use": "الملف مفتوح في برنامج آخر",
"trash.read_only": "الملف للقراءة فقط",
"trash.other_drive": "سلة المحذوفات على قرص آخر",
"trash.no_folder": "لا يوجد مجلد لسلة المحذوفات",
"trash.failed": "تعذّر نقله إلى سلة المحذوفات",
"trash.cannot_place": "تعذّر حفظ النتيجة في مجلد الأصل",
"notice.empty_spreadsheet_pages_removed": "تمت إزالة صفحات جدول البيانات الفارغة",
"notice.ocr_has_text": "كل الصفحات تحتوي على نص بالفعل، لذا نُسخ الملف كما هو",
"notice.live_photo_pair": "حُفظ كصورة وملف MOV بالاسم نفسه. استوردهما معًا (صور iCloud أو AirDrop أو تطبيق الصور على Mac) لتحصل على Live Photo",
Expand Down Expand Up @@ -617,6 +627,8 @@
"presets.keep_dates_hint": "تحصل الملفات المحوّلة على تاريخَي إنشاء الأصل وتعديله، فتبقى الصور مرتبة حسب التاريخ.",
"presets.zip_result": "حفظ النتيجة بصيغة ZIP",
"presets.zip_result_hint": "تُجمَّع ملفات النتيجة (مثل ‎.shp و‎.shx و‎.dbf و‎.prj و‎.cpg في Shapefile) في ZIP واحد بجانب الأصل، بدلًا من ملفات منفصلة.",
"presets.replace_original": "استبدال الأصل",
"presets.replace_original_hint": "تأخذ النتيجة اسم الأصل ومكانه، وينتقل الأصل إلى سلة المحذوفات. فقط عندما يكون للنتيجة التنسيق نفسه، ولا يحدث أبدًا لمجلدات المراقبة أو الملفات القادمة من متصفح. إذا تعذّر نقل الأصل، يبقى في مكانه وتُحفظ النتيجة كنسخة. تُحفظ النتيجة في مجلد الأصل أيًّا كان إعداد «الحفظ في».",
"presets.conflict": "إذا كان الملف موجودًا",
"presets.conflict.Rename": "إضافة رقم",
"presets.conflict.Overwrite": "استبداله",
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,16 @@
"error.geo_unsupported_shape": "This kind of shape isn't supported",
"error.geo_too_large": "The Shapefile would pass the format's 2 GB limit",
"notice.pdf_not_smaller": "Couldn't make it smaller, so it was copied as it is",
"notice.original_kept": "The original was kept, the result was saved as a copy",
"notice.original_in_trash": "The original is in the Recycle Bin / Trash, the result kept its own name",
"notice.original_unchanged": "Couldn't make it smaller, so the original was left as it is",
"trash.no_recycle_bin": "this drive has no Recycle Bin / Trash",
"trash.in_use": "the file is open in another program",
"trash.read_only": "the file is read-only",
"trash.other_drive": "the Trash is on another drive",
"trash.no_folder": "there is no Trash folder",
"trash.failed": "it couldn't be moved to the Recycle Bin / Trash",
"trash.cannot_place": "the result couldn't be saved in the original's folder",
"notice.empty_spreadsheet_pages_removed": "Empty spreadsheet pages were removed",
"notice.ocr_has_text": "Every page already has text, so it was copied as it is",
"notice.live_photo_pair": "Saved as a photo and a MOV with the same name. Import both together (iCloud Photos, AirDrop or Photos on a Mac) to get a Live Photo",
Expand Down Expand Up @@ -632,6 +642,8 @@
"presets.keep_dates_hint": "Converted files get the created and modified dates of the original, so photos still sort by date.",
"presets.zip_result": "Save the result as a ZIP",
"presets.zip_result_hint": "The files of the result (a Shapefile's .shp, .shx, .dbf, .prj and .cpg) are packed into one ZIP next to the source, in place of loose files.",
"presets.replace_original": "Replace the original",
"presets.replace_original_hint": "The result takes the original's name and place, and the original goes to the Recycle Bin / Trash. Only when the result has the same format, never for watch folders or files from a browser. When the original can't go there, it stays and the result is saved as a copy. The result is saved in the original's folder, whatever \"Save to\" says.",
"presets.conflict": "If the file exists",
"presets.conflict.Rename": "Add a number",
"presets.conflict.Overwrite": "Replace it",
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@
"error.geo_unsupported_shape": "Este tipo de forma no es compatible",
"error.geo_too_large": "El Shapefile superaría el límite de 2 GB del formato",
"notice.pdf_not_smaller": "No se pudo reducir su tamaño, por lo que se copió tal cual",
"notice.original_kept": "Se conservó el original, el resultado se guardó como copia",
"notice.original_in_trash": "El original está en la Papelera, el resultado conservó su propio nombre",
"notice.original_unchanged": "No se pudo hacer más pequeño, así que el original se dejó como estaba",
"trash.no_recycle_bin": "esta unidad no tiene Papelera de reciclaje",
"trash.in_use": "el archivo está abierto en otro programa",
"trash.read_only": "el archivo es de solo lectura",
"trash.other_drive": "la Papelera está en otra unidad",
"trash.no_folder": "no hay carpeta de Papelera",
"trash.failed": "no se pudo mover a la Papelera de reciclaje",
"trash.cannot_place": "no se pudo guardar el resultado en la carpeta del original",
"notice.empty_spreadsheet_pages_removed": "Se eliminaron las páginas vacías de la hoja de cálculo",
"notice.ocr_has_text": "Todas las páginas ya tienen texto, así que se copió tal cual",
"notice.live_photo_pair": "Guardado como una foto y un MOV con el mismo nombre. Impórtalos juntos (Fotos de iCloud, AirDrop o Fotos en un Mac) para obtener una Live Photo",
Expand Down Expand Up @@ -617,6 +627,8 @@
"presets.keep_dates_hint": "Los archivos convertidos reciben las fechas de creación y modificación del original, así que las fotos siguen ordenándose por fecha.",
"presets.zip_result": "Guardar el resultado como ZIP",
"presets.zip_result_hint": "Los archivos del resultado (.shp, .shx, .dbf, .prj y .cpg de un Shapefile) se empaquetan en un solo ZIP junto al origen, en lugar de archivos sueltos.",
"presets.replace_original": "Reemplazar el original",
"presets.replace_original_hint": "El resultado toma el nombre y el lugar del original, y el original va a la Papelera de reciclaje. Solo cuando el resultado tiene el mismo formato, nunca en carpetas vigiladas ni con archivos de un navegador. Si el original no puede ir a la Papelera, se queda y el resultado se guarda como copia. El resultado se guarda en la carpeta del original, diga lo que diga «Guardar en».",
"presets.conflict": "Si el archivo existe",
"presets.conflict.Rename": "Añadir un número",
"presets.conflict.Overwrite": "Reemplazarlo",
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,16 @@
"error.geo_unsupported_shape": "Ce type de forme n'est pas pris en charge",
"error.geo_too_large": "Le Shapefile dépasserait la limite de 2 Go du format",
"notice.pdf_not_smaller": "Impossible de réduire sa taille : le fichier a été copié tel quel",
"notice.original_kept": "L'original a été conservé, le résultat a été enregistré en copie",
"notice.original_in_trash": "L'original est dans la Corbeille, le résultat a gardé son propre nom",
"notice.original_unchanged": "Impossible de le rendre plus petit : l'original a été laissé tel quel",
"trash.no_recycle_bin": "ce lecteur n'a pas de Corbeille",
"trash.in_use": "le fichier est ouvert dans un autre programme",
"trash.read_only": "le fichier est en lecture seule",
"trash.other_drive": "la Corbeille est sur un autre lecteur",
"trash.no_folder": "il n'y a pas de dossier Corbeille",
"trash.failed": "impossible de le déplacer dans la Corbeille",
"trash.cannot_place": "impossible d'enregistrer le résultat dans le dossier de l'original",
"notice.empty_spreadsheet_pages_removed": "Les pages vides de la feuille de calcul ont été supprimées",
"notice.ocr_has_text": "Toutes les pages ont déjà du texte : copié tel quel",
"notice.live_photo_pair": "Enregistré en une photo et un MOV de même nom. Importez-les ensemble (Photos iCloud, AirDrop ou Photos sur Mac) pour obtenir une Live Photo",
Expand Down Expand Up @@ -632,6 +642,8 @@
"presets.keep_dates_hint": "Les fichiers convertis reprennent les dates de création et de modification de l'original : les photos restent triées par date.",
"presets.zip_result": "Enregistrer le résultat en ZIP",
"presets.zip_result_hint": "Les fichiers du résultat (les .shp, .shx, .dbf, .prj et .cpg d'un Shapefile) sont regroupés dans un seul ZIP à côté de l'original, au lieu de fichiers séparés.",
"presets.replace_original": "Remplacer l'original",
"presets.replace_original_hint": "Le résultat prend le nom et la place de l'original, et l'original va dans la Corbeille. Seulement quand le résultat a le même format, jamais pour les dossiers surveillés ni les fichiers venant d'un navigateur. Si l'original ne peut pas aller dans la Corbeille, il reste et le résultat est enregistré en copie. Le résultat est enregistré dans le dossier de l'original, quel que soit « Enregistrer dans ».",
"presets.conflict": "Si le fichier existe",
"presets.conflict.Rename": "Ajouter un numéro",
"presets.conflict.Overwrite": "Le remplacer",
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@
"error.geo_unsupported_shape": "इस तरह का आकार समर्थित नहीं है",
"error.geo_too_large": "Shapefile फ़ॉर्मैट की 2 GB सीमा से बड़ी हो जाएगी",
"notice.pdf_not_smaller": "इसे छोटा नहीं किया जा सका, इसलिए जैसा है वैसा ही कॉपी कर दिया गया",
"notice.original_kept": "मूल फ़ाइल रखी गई, परिणाम कॉपी के रूप में सहेजा गया",
"notice.original_in_trash": "मूल फ़ाइल रीसायकल बिन / ट्रैश में है, परिणाम ने अपना नाम रखा",
"notice.original_unchanged": "इसे छोटा नहीं किया जा सका, इसलिए मूल फ़ाइल जैसी थी वैसी छोड़ दी गई",
"trash.no_recycle_bin": "इस ड्राइव में रीसायकल बिन / ट्रैश नहीं है",
"trash.in_use": "फ़ाइल किसी दूसरे प्रोग्राम में खुली है",
"trash.read_only": "फ़ाइल केवल पढ़ने के लिए है",
"trash.other_drive": "ट्रैश किसी दूसरी ड्राइव पर है",
"trash.no_folder": "ट्रैश फ़ोल्डर नहीं है",
"trash.failed": "इसे रीसायकल बिन / ट्रैश में नहीं ले जाया जा सका",
"trash.cannot_place": "परिणाम मूल फ़ाइल के फ़ोल्डर में सेव नहीं हो सका",
"notice.empty_spreadsheet_pages_removed": "स्प्रेडशीट के खाली पृष्ठ हटा दिए गए",
"notice.ocr_has_text": "हर पेज में पहले से टेक्स्ट है, इसलिए फ़ाइल जैसी थी वैसी कॉपी की गई",
"notice.live_photo_pair": "एक ही नाम की फ़ोटो और MOV के रूप में सहेजा गया। लाइव फ़ोटो पाने के लिए दोनों को साथ में इम्पोर्ट करें (iCloud Photos, AirDrop या Mac पर Photos)",
Expand Down Expand Up @@ -617,6 +627,8 @@
"presets.keep_dates_hint": "कन्वर्ट की गई फ़ाइलों को मूल फ़ाइल की बनाने और बदलने की तारीखें मिलती हैं, ताकि फ़ोटो अब भी तारीख के अनुसार क्रमित रहें।",
"presets.zip_result": "नतीजे को ZIP के रूप में सहेजें",
"presets.zip_result_hint": "नतीजे की फ़ाइलें (Shapefile की .shp, .shx, .dbf, .prj और .cpg) अलग-अलग रखने के बजाय स्रोत के बगल में एक ZIP में पैक की जाती हैं।",
"presets.replace_original": "मूल फ़ाइल बदलें",
"presets.replace_original_hint": "परिणाम मूल फ़ाइल का नाम और जगह ले लेता है, और मूल फ़ाइल रीसायकल बिन / ट्रैश में चली जाती है। केवल तब जब परिणाम का फ़ॉर्मैट वही हो, वॉच फ़ोल्डर या ब्राउज़र से आई फ़ाइलों के लिए कभी नहीं। अगर मूल फ़ाइल वहाँ नहीं जा सकती, तो वह रहती है और परिणाम एक कॉपी के रूप में सहेजा जाता है। परिणाम मूल फ़ाइल के फ़ोल्डर में सेव होता है, \"यहाँ सेव करें\" में चाहे जो हो।",
"presets.conflict": "अगर फ़ाइल पहले से मौजूद हो",
"presets.conflict.Rename": "नंबर जोड़ें",
"presets.conflict.Overwrite": "बदल दें",
Expand Down
12 changes: 12 additions & 0 deletions src/Filee.App/Assets/i18n/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@
"error.geo_unsupported_shape": "この種類の図形には対応していません",
"error.geo_too_large": "Shapefile形式の上限(2 GB)を超えてしまいます",
"notice.pdf_not_smaller": "サイズを小さくできなかったため、元のままコピーしました",
"notice.original_kept": "元のファイルを残し、結果をコピーとして保存しました",
"notice.original_in_trash": "元のファイルはごみ箱にあります。結果は別の名前のままです",
"notice.original_unchanged": "小さくできなかったため、元のファイルはそのままにしました",
"trash.no_recycle_bin": "このドライブにはごみ箱がありません",
"trash.in_use": "ファイルが別のプログラムで開かれています",
"trash.read_only": "ファイルが読み取り専用です",
"trash.other_drive": "ごみ箱が別のドライブにあります",
"trash.no_folder": "ごみ箱フォルダーがありません",
"trash.failed": "ごみ箱に移動できませんでした",
"trash.cannot_place": "元のファイルのフォルダーに結果を保存できませんでした",
"notice.empty_spreadsheet_pages_removed": "スプレッドシートの空白ページを削除しました",
"notice.ocr_has_text": "すべてのページにテキストがあるため、元のままコピーしました",
"notice.live_photo_pair": "同じ名前の写真とMOVとして保存しました。両方を一緒に取り込むと(iCloud写真、AirDrop、Macの写真アプリ)Live Photoになります",
Expand Down Expand Up @@ -617,6 +627,8 @@
"presets.keep_dates_hint": "変換後のファイルに元ファイルの作成日時と更新日時を引き継ぎます。変換後も写真を日付順に並べられます。",
"presets.zip_result": "変換結果をZIPで保存",
"presets.zip_result_hint": "変換結果のファイル(Shapefileの.shp、.shx、.dbf、.prj、.cpg)を、ばらばらに置く代わりに元ファイルの隣の1つのZIPにまとめます。",
"presets.replace_original": "元のファイルを置き換える",
"presets.replace_original_hint": "変換結果が元のファイルの名前と場所を引き継ぎ、元のファイルはごみ箱に移動します。結果が同じ形式のときだけで、監視フォルダーやブラウザーからのファイルには使われません。元のファイルをごみ箱に移動できないときは残し、結果はコピーとして保存します。 結果は「保存先」の設定にかかわらず、元のファイルのフォルダーに保存されます。",
"presets.conflict": "同名ファイルがある場合",
"presets.conflict.Rename": "連番を付ける",
"presets.conflict.Overwrite": "上書き",
Expand Down
Loading
Loading