mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-04 00:47:00 +01:00
feat(core,fuse,gui): find photos that look alike
The duplicate finder gains an Exact / Similar switch. Similar asks the daemon for PhotoSimilar, which starts a background pass that hashes the thumbnail of every shot not hashed yet and replies at once with the sets found so far and how far hashing has got. The dialog shows a progress bar and asks again until the pass is done, then lists the sets. The pass takes thumbnails from the server only: a photo without one is skipped for the run instead of downloaded whole, and the dialog says how many photos could not be compared. Decoding and hashing are spread over the machine's cores. Every similar photo starts ticked Keep, since photos that look alike can be different shots. A similar photo stands for its whole shot, so one not kept goes to Trash with the rest of its shot.
This commit is contained in:
1 parent
c98ed0d83b
commit
a90eeecda9
16 files changed
+1276
-250
No files matched your search
@@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||
"POT-Creation-Date: 2026-09-28 03:11+0200\n"
|
||||
"POT-Creation-Date: 2026-09-28 03:33+0200\n"
|
||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||
"Language-Team: German\n"
|
||||
@@ -315,7 +315,6 @@ msgstr "Umbenennen"
|
||||
#: crates/pdfs-gui/src/app/pages/browser.rs:414
|
||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1306
|
||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1338
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:24
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:607
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:2063
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:2067
|
||||
@@ -767,7 +766,7 @@ msgstr "Das Album konnte nicht erstellt werden"
|
||||
#: crates/pdfs-gui/src/app/pages/devices.rs:532
|
||||
#: crates/pdfs-gui/src/app/pages/devices.rs:682
|
||||
#: crates/pdfs-gui/src/app/pages/devices.rs:912
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:63
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:223
|
||||
#: crates/pdfs-gui/src/app/pages/locations.rs:342
|
||||
#: crates/pdfs-gui/src/app/pages/locations.rs:516
|
||||
#: crates/pdfs-gui/src/app/pages/locations.rs:739
|
||||
@@ -1908,28 +1907,82 @@ msgstr "Identität übernommen"
|
||||
msgid "Couldn't adopt that computer"
|
||||
msgstr "Der Computer konnte nicht übernommen werden"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:15
|
||||
msgid "Looking for duplicates…"
|
||||
msgstr "Duplikate werden gesucht …"
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:79
|
||||
msgctxt "duplicates"
|
||||
msgid "Exact"
|
||||
msgstr "Exakt"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:42
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:80
|
||||
msgid "Photos stored more than once"
|
||||
msgstr "Mehrfach gespeicherte Fotos"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:84
|
||||
msgctxt "duplicates"
|
||||
msgid "Similar"
|
||||
msgstr "Ähnlich"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:85
|
||||
msgid "Photos that look alike"
|
||||
msgstr "Fotos, die sich ähneln"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:102
|
||||
msgid "Duplicates"
|
||||
msgstr "Duplikate"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:56
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:62
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:151
|
||||
msgid "Looking for duplicates…"
|
||||
msgstr "Duplikate werden gesucht …"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:152
|
||||
msgid "Looking for similar photos…"
|
||||
msgstr "Ähnliche Fotos werden gesucht …"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:176
|
||||
msgid "Couldn't look for duplicates"
|
||||
msgstr "Duplikate konnten nicht gesucht werden"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:69
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:177
|
||||
msgid "Couldn't look for similar photos"
|
||||
msgstr "Ähnliche Fotos konnten nicht gesucht werden"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:185
|
||||
msgid "Comparing photos…"
|
||||
msgstr "Fotos werden verglichen …"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:187
|
||||
msgid "Photos are compared by their thumbnails. The first time takes a while."
|
||||
msgstr "Fotos werden anhand ihrer Vorschaubilder verglichen. Beim ersten Mal dauert das eine Weile."
|
||||
|
||||
#. Translators: {done} and {total} are numbers of photos.
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:196
|
||||
#, rust-format
|
||||
msgid "{done} of {total}"
|
||||
msgstr "{done} von {total}"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:233
|
||||
msgid "No duplicates"
|
||||
msgstr "Keine Duplikate"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:71
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:235
|
||||
msgid "Every photo in your library is stored once."
|
||||
msgstr "Jedes Foto in deiner Mediathek ist nur einmal gespeichert."
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:88
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:239
|
||||
msgid "No similar photos"
|
||||
msgstr "Keine ähnlichen Fotos"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:241
|
||||
msgid "No two photos in your library look alike."
|
||||
msgstr "Keine zwei Fotos in deiner Mediathek sehen sich ähnlich."
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:263
|
||||
#, rust-format
|
||||
msgid "{n} photo couldn't be compared because it has no thumbnail yet."
|
||||
msgid_plural "{n} photos couldn't be compared because they have no thumbnail yet."
|
||||
msgstr[0] "{n} Foto konnte nicht verglichen werden, weil es noch kein Vorschaubild hat."
|
||||
msgstr[1] "{n} Fotos konnten nicht verglichen werden, weil sie noch kein Vorschaubild haben."
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:286
|
||||
msgid ""
|
||||
"These photos are stored more than once. The copies you don't keep move to "
|
||||
"Trash, where you can restore them."
|
||||
@@ -1937,21 +1990,40 @@ msgstr ""
|
||||
"Diese Fotos sind mehrfach gespeichert. Die Kopien, die du nicht behältst, "
|
||||
"werden in den Papierkorb verschoben, wo du sie wiederherstellen kannst."
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:111
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:289
|
||||
msgid "These photos look alike. They can be copies of one photo or different shots of one moment, so all of them are kept until you untick them. The photos you don't keep move to Trash, where you can restore them."
|
||||
msgstr "Diese Fotos sehen sich ähnlich. Es können Kopien eines Fotos oder verschiedene Aufnahmen eines Moments sein, daher werden alle behalten, bis du sie abwählst. Die Fotos, die du nicht behältst, werden in den Papierkorb verschoben, wo du sie wiederherstellen kannst."
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:323
|
||||
#, rust-format
|
||||
msgid "{date}, {n} copy"
|
||||
msgid_plural "{date}, {n} copies"
|
||||
msgstr[0] "{date}, {n} Kopie"
|
||||
msgstr[1] "{date}, {n} Kopien"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:143
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:330
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:2994
|
||||
#, rust-format
|
||||
msgid "{date}, {n} photo"
|
||||
msgid_plural "{date}, {n} photos"
|
||||
msgstr[0] "{date}, {n} Foto"
|
||||
msgstr[1] "{date}, {n} Fotos"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:364
|
||||
#, rust-format
|
||||
msgid "Move {n} copy to Trash"
|
||||
msgid_plural "Move {n} copies to Trash"
|
||||
msgstr[0] "{n} Kopie in den Papierkorb verschieben"
|
||||
msgstr[1] "{n} Kopien in den Papierkorb verschieben"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:235
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:370
|
||||
#, rust-format
|
||||
msgid "Move {n} photo to Trash"
|
||||
msgid_plural "Move {n} photos to Trash"
|
||||
msgstr[0] "{n} Foto in den Papierkorb verschieben"
|
||||
msgstr[1] "{n} Fotos in den Papierkorb verschieben"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:465
|
||||
msgid "Keep"
|
||||
msgstr "Behalten"
|
||||
|
||||
@@ -3008,13 +3080,6 @@ msgid_plural "{n} years ago"
|
||||
msgstr[0] "vor {n} Jahr"
|
||||
msgstr[1] "vor {n} Jahren"
|
||||
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:2994
|
||||
#, rust-format
|
||||
msgid "{date}, {n} photo"
|
||||
msgid_plural "{date}, {n} photos"
|
||||
msgstr[0] "{date}, {n} Foto"
|
||||
msgstr[1] "{date}, {n} Fotos"
|
||||
|
||||
#. Translators: a check item in a photo's menu, on while the photo is a favorite.
|
||||
#: crates/pdfs-gui/src/app/pages/photos.rs:3231
|
||||
msgctxt "state"
|
||||
|
||||
Reference in new issue
Block a user