feat(gui): group the photos timeline by zoom level, select ranges

Zooming out now changes how the timeline is sectioned: by day at the default
row height, by month further out and by year at the smallest tiles, which
gain one more zoom step. Under a month or year heading the tile caption shows
the day instead of the clock time.

Shift+click selects every photo from the last one clicked, and dragging
across the timeline selects the photos swept over, scrolling at the top and
bottom edges. Sweeping back gives photos up again.
This commit is contained in:
nvrl committed 2026-09-28 02:12:58 +02:00
1 parent 5c1da9d7a5
commit b47e6c91a0
11 files changed
+1913 -1557

No files matched your search

+176 -171
View File
@@ -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 00:12+0200\n"
"POT-Creation-Date: 2026-09-28 00:13+0200\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: English (United Kingdom)\n"
@@ -15,99 +15,99 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: crates/pdfs-gui/src/app/main.rs:829
#: crates/pdfs-gui/src/app/main.rs:830
#: crates/pdfs-gui/src/app/pages/locations.rs:1133
#: crates/pdfs-gui/src/prompt.rs:169
msgid "My files"
msgstr "My files"
#: crates/pdfs-gui/src/app/main.rs:832 crates/pdfs-gui/src/app/main.rs:1445
#: crates/pdfs-gui/src/app/main.rs:833 crates/pdfs-gui/src/app/main.rs:1446
#: crates/pdfs-gui/src/app/pages/albums.rs:633
#: crates/pdfs-gui/src/app/pages/photos.rs:690
#: crates/pdfs-gui/src/app/pages/photos.rs:730
msgid "Photos"
msgstr "Photos"
#: crates/pdfs-gui/src/app/main.rs:837
#: crates/pdfs-gui/src/app/main.rs:838
msgid "Shared with me"
msgstr "Shared with me"
#: crates/pdfs-gui/src/app/main.rs:842
#: crates/pdfs-gui/src/app/main.rs:843
msgid "Shared by me"
msgstr "Shared by me"
#: crates/pdfs-gui/src/app/main.rs:845
#: crates/pdfs-gui/src/app/main.rs:846
#: crates/pdfs-gui/src/app/pages/devices.rs:109
msgid "Computers"
msgstr "Computers"
#: crates/pdfs-gui/src/app/main.rs:846
#: crates/pdfs-gui/src/app/main.rs:847
#: crates/pdfs-gui/src/app/pages/trash.rs:106
msgid "Trash"
msgstr "Trash"
#: crates/pdfs-gui/src/app/main.rs:850
#: crates/pdfs-gui/src/app/main.rs:851
msgid "Sync"
msgstr "Sync"
#: crates/pdfs-gui/src/app/main.rs:855
#: crates/pdfs-gui/src/app/main.rs:856
#: crates/pdfs-gui/src/app/pages/activity.rs:153
msgid "Activity"
msgstr "Activity"
#: crates/pdfs-gui/src/app/main.rs:1001
#: crates/pdfs-gui/src/app/main.rs:1002
msgid "Refresh (F5)"
msgstr "Refresh (F5)"
#. Translators: a failed action's toast. {what} says what failed, such as
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
#. from the mount service.
#: crates/pdfs-gui/src/app/main.rs:1175
#: crates/pdfs-gui/src/app/main.rs:1176
#, rust-format
msgid "{what}: {detail}"
msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1194
#: crates/pdfs-gui/src/app/main.rs:1195
msgid "You're offline"
msgstr "You're offline"
#: crates/pdfs-gui/src/app/main.rs:1195
#: crates/pdfs-gui/src/app/main.rs:1196
msgid "That's not there any more"
msgstr "That's not there any more"
#: crates/pdfs-gui/src/app/main.rs:1196
#: crates/pdfs-gui/src/app/main.rs:1197
msgid "You don't have access to that"
msgstr "You don't have access to that"
#: crates/pdfs-gui/src/app/main.rs:1197
#: crates/pdfs-gui/src/app/main.rs:1198
msgid "Something changed this first"
msgstr "Something changed this first"
#: crates/pdfs-gui/src/app/main.rs:1198
#: crates/pdfs-gui/src/app/main.rs:1199
msgid "Your Proton Drive is full"
msgstr "Your Proton Drive is full"
#: crates/pdfs-gui/src/app/main.rs:1239 crates/pdfs-gui/src/app/main.rs:1427
#: crates/pdfs-gui/src/app/main.rs:1240 crates/pdfs-gui/src/app/main.rs:1428
#: crates/pdfs-gui/src/app/pages/status.rs:353
msgid "Preferences"
msgstr "Preferences"
#: crates/pdfs-gui/src/app/main.rs:1240 crates/pdfs-gui/src/app/main.rs:1484
#: crates/pdfs-gui/src/app/main.rs:1241 crates/pdfs-gui/src/app/main.rs:1485
msgid "Keyboard Shortcuts"
msgstr "Keyboard Shortcuts"
#: crates/pdfs-gui/src/app/main.rs:1242
#: crates/pdfs-gui/src/app/main.rs:1243
msgid "About Proton Drive for Linux"
msgstr "About Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1247
#: crates/pdfs-gui/src/app/main.rs:1248
msgid "Main menu"
msgstr "Main menu"
#: crates/pdfs-gui/src/app/main.rs:1293
#: crates/pdfs-gui/src/app/main.rs:1294
msgid "Proton Drive for Linux"
msgstr "Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1301
#: crates/pdfs-gui/src/app/main.rs:1302
msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n"
"\n"
@@ -119,23 +119,23 @@ msgstr ""
"Unofficial client — not affiliated with, endorsed by, or supported by Proton "
"AG."
#: crates/pdfs-gui/src/app/main.rs:1306
#: crates/pdfs-gui/src/app/main.rs:1307
msgid "Source Code"
msgstr "Source Code"
#: crates/pdfs-gui/src/app/main.rs:1310
#: crates/pdfs-gui/src/app/main.rs:1311
msgid "Proton Terms of Service"
msgstr "Proton Terms of Service"
#: crates/pdfs-gui/src/app/main.rs:1314
#: crates/pdfs-gui/src/app/main.rs:1315
msgid "Proton Privacy Policy"
msgstr "Proton Privacy Policy"
#: crates/pdfs-gui/src/app/main.rs:1319
#: crates/pdfs-gui/src/app/main.rs:1320
msgid "Disclaimer"
msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1323
#: crates/pdfs-gui/src/app/main.rs:1324
msgid ""
"This is an unofficial, community-built client. It is not affiliated with, "
"endorsed by, or supported by Proton AG.\n"
@@ -159,15 +159,15 @@ msgstr ""
#. Translators: replace with your name(s) and email address(es), one
#. per line, to be credited in the About dialog.
#: crates/pdfs-gui/src/app/main.rs:1334
#: crates/pdfs-gui/src/app/main.rs:1335
msgid "translator-credits"
msgstr "Proton Drive for Linux contributors"
#: crates/pdfs-gui/src/app/main.rs:1365
#: crates/pdfs-gui/src/app/main.rs:1366
msgid "Stop Proton Drive?"
msgstr "Stop Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1366
#: crates/pdfs-gui/src/app/main.rs:1367
msgid ""
"The drive unmounts and nothing syncs until you connect again. Proton Drive "
"starts again at your next login."
@@ -175,7 +175,7 @@ msgstr ""
"The drive unmounts and nothing syncs until you connect again. Proton Drive "
"starts again at your next login."
#: crates/pdfs-gui/src/app/main.rs:1368 crates/pdfs-gui/src/app/main.rs:1641
#: crates/pdfs-gui/src/app/main.rs:1369 crates/pdfs-gui/src/app/main.rs:1642
#: crates/pdfs-gui/src/app/pages/albums.rs:242
#: crates/pdfs-gui/src/app/pages/albums.rs:423
#: crates/pdfs-gui/src/app/pages/browser.rs:2273
@@ -189,7 +189,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:670
#: crates/pdfs-gui/src/app/pages/locations.rs:1050
#: crates/pdfs-gui/src/app/pages/login.rs:312
#: crates/pdfs-gui/src/app/pages/photos.rs:1606
#: crates/pdfs-gui/src/app/pages/photos.rs:1868
#: crates/pdfs-gui/src/app/pages/shared.rs:717
#: crates/pdfs-gui/src/app/pages/shared.rs:748
#: crates/pdfs-gui/src/app/pages/shared.rs:789
@@ -203,67 +203,67 @@ msgstr ""
msgid "Cancel"
msgstr "Cancel"
#: crates/pdfs-gui/src/app/main.rs:1369
#: crates/pdfs-gui/src/app/main.rs:1370
msgctxt "verb"
msgid "Stop"
msgstr "Stop"
#: crates/pdfs-gui/src/app/main.rs:1386
#: crates/pdfs-gui/src/app/main.rs:1387
msgid "Couldn't stop Proton Drive"
msgstr "Couldn't stop Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1387
#: crates/pdfs-gui/src/app/main.rs:1388
msgid "The mount service did not stop."
msgstr "The mount service did not stop."
#: crates/pdfs-gui/src/app/main.rs:1423
#: crates/pdfs-gui/src/app/main.rs:1424
#: crates/pdfs-gui/src/app/pages/status.rs:226
msgid "General"
msgstr "General"
#: crates/pdfs-gui/src/app/main.rs:1425
#: crates/pdfs-gui/src/app/main.rs:1426
#: crates/pdfs-gui/src/app/pages/browser.rs:270
msgid "Search Drive"
msgstr "Search Drive"
#: crates/pdfs-gui/src/app/main.rs:1426
#: crates/pdfs-gui/src/app/main.rs:1427
#: crates/pdfs-gui/src/app/pages/browser.rs:1363
msgid "Refresh"
msgstr "Refresh"
#: crates/pdfs-gui/src/app/main.rs:1428
#: crates/pdfs-gui/src/app/main.rs:1429
msgid "Keyboard shortcuts"
msgstr "Keyboard shortcuts"
#: crates/pdfs-gui/src/app/main.rs:1432
#: crates/pdfs-gui/src/app/main.rs:1433
msgid "Files"
msgstr "Files"
#: crates/pdfs-gui/src/app/main.rs:1434
#: crates/pdfs-gui/src/app/main.rs:1435
#: crates/pdfs-gui/src/app/pages/browser.rs:319
#: crates/pdfs-gui/src/app/pages/browser.rs:2586
msgid "New folder"
msgstr "New folder"
#: crates/pdfs-gui/src/app/main.rs:1435
#: crates/pdfs-gui/src/app/main.rs:1436
#: crates/pdfs-gui/src/app/pages/browser.rs:315
msgid "Upload files"
msgstr "Upload files"
#: crates/pdfs-gui/src/app/main.rs:1436
#: crates/pdfs-gui/src/app/main.rs:1437
msgid "Back / forward"
msgstr "Back / forward"
#: crates/pdfs-gui/src/app/main.rs:1437
#: crates/pdfs-gui/src/app/main.rs:1438
#: crates/pdfs-gui/src/app/pages/browser.rs:2320
msgid "Parent folder"
msgstr "Parent folder"
#: crates/pdfs-gui/src/app/main.rs:1438
#: crates/pdfs-gui/src/app/main.rs:1439
msgid "Grid / list"
msgstr "Grid / list"
#: crates/pdfs-gui/src/app/main.rs:1439
#: crates/pdfs-gui/src/app/main.rs:1440
#: crates/pdfs-gui/src/app/pages/albums.rs:297
#: crates/pdfs-gui/src/app/pages/browser.rs:2252
#: crates/pdfs-gui/src/app/pages/browser.rs:2274
@@ -272,62 +272,62 @@ msgstr "Grid / list"
msgid "Rename"
msgstr "Rename"
#: crates/pdfs-gui/src/app/main.rs:1440 crates/pdfs-gui/src/app/main.rs:1460
#: crates/pdfs-gui/src/app/main.rs:1441 crates/pdfs-gui/src/app/main.rs:1461
#: 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/photos.rs:512
#: crates/pdfs-gui/src/app/pages/photos.rs:1603
#: crates/pdfs-gui/src/app/pages/photos.rs:1607
#: crates/pdfs-gui/src/app/pages/photos.rs:552
#: crates/pdfs-gui/src/app/pages/photos.rs:1865
#: crates/pdfs-gui/src/app/pages/photos.rs:1869
#: crates/pdfs-gui/src/app/widgets/details.rs:162
msgid "Move to Trash"
msgstr "Move to Trash"
#: crates/pdfs-gui/src/app/main.rs:1441
#: crates/pdfs-gui/src/app/main.rs:1442
msgid "Clear the selection"
msgstr "Clear the selection"
#: crates/pdfs-gui/src/app/main.rs:1447
#: crates/pdfs-gui/src/app/main.rs:1448
msgid "Larger thumbnails"
msgstr "Larger thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1448
#: crates/pdfs-gui/src/app/main.rs:1449
msgid "Smaller thumbnails"
msgstr "Smaller thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1449
#: crates/pdfs-gui/src/app/main.rs:1450
msgid "Reset thumbnail size"
msgstr "Reset thumbnail size"
#: crates/pdfs-gui/src/app/main.rs:1450
#: crates/pdfs-gui/src/app/main.rs:1451
msgid "Select all"
msgstr "Select all"
#: crates/pdfs-gui/src/app/main.rs:1454
#: crates/pdfs-gui/src/app/main.rs:1455
msgid "Photo Viewer"
msgstr "Photo Viewer"
#: crates/pdfs-gui/src/app/main.rs:1456
#: crates/pdfs-gui/src/app/main.rs:1457
msgid "Previous / next photo"
msgstr "Previous / next photo"
#: crates/pdfs-gui/src/app/main.rs:1457
#: crates/pdfs-gui/src/app/main.rs:1458
msgid "First / last photo"
msgstr "First / last photo"
#: crates/pdfs-gui/src/app/main.rs:1458
#: crates/pdfs-gui/src/app/main.rs:1459
msgid "Show details"
msgstr "Show details"
#: crates/pdfs-gui/src/app/main.rs:1459
#: crates/pdfs-gui/src/app/main.rs:1460
msgid "Fullscreen"
msgstr "Fullscreen"
#: crates/pdfs-gui/src/app/main.rs:1461
#: crates/pdfs-gui/src/app/main.rs:1462
msgid "Close"
msgstr "Close"
#: crates/pdfs-gui/src/app/main.rs:1564
#: crates/pdfs-gui/src/app/main.rs:1565
msgid "Select a single item to rename it"
msgstr "Select a single item to rename it"
@@ -364,7 +364,7 @@ msgstr "Needs attention"
#: crates/pdfs-gui/src/app/pages/browser.rs:306
#: crates/pdfs-gui/src/app/pages/devices.rs:84
#: crates/pdfs-gui/src/app/pages/locations.rs:134
#: crates/pdfs-gui/src/app/pages/photos.rs:390
#: crates/pdfs-gui/src/app/pages/photos.rs:430
#: crates/pdfs-gui/src/app/pages/shared.rs:83
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:38
#: crates/pdfs-gui/src/app/pages/trash.rs:57 crates/pdfs-gui/src/prompt.rs:593
@@ -400,7 +400,7 @@ msgstr "Couldn't read activity"
#: crates/pdfs-gui/src/app/pages/browser.rs:2880
#: crates/pdfs-gui/src/app/pages/browser.rs:3066
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:292
#: crates/pdfs-gui/src/app/pages/photos.rs:2798
#: crates/pdfs-gui/src/app/pages/photos.rs:3077
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:139
#: crates/pdfs-gui/src/app/pages/trash.rs:320
msgid "Unexpected reply from the mount service."
@@ -412,7 +412,7 @@ msgstr "Unexpected reply from the mount service."
#: crates/pdfs-gui/src/app/pages/browser.rs:2914
#: crates/pdfs-gui/src/app/pages/devices.rs:209
#: crates/pdfs-gui/src/app/pages/locations.rs:844
#: crates/pdfs-gui/src/app/pages/photos.rs:2832
#: crates/pdfs-gui/src/app/pages/photos.rs:3111
#: crates/pdfs-gui/src/app/pages/shared.rs:523
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:156
#: crates/pdfs-gui/src/app/pages/status.rs:1301
@@ -424,7 +424,7 @@ msgstr "Not connected"
#: crates/pdfs-gui/src/app/pages/browser.rs:2915
#: crates/pdfs-gui/src/app/pages/devices.rs:210
#: crates/pdfs-gui/src/app/pages/locations.rs:845
#: crates/pdfs-gui/src/app/pages/photos.rs:2833
#: crates/pdfs-gui/src/app/pages/photos.rs:3112
#: crates/pdfs-gui/src/app/pages/shared.rs:524
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:157
#: crates/pdfs-gui/src/app/pages/trash.rs:336
@@ -436,7 +436,7 @@ msgstr "The Proton Drive mount service isn't running."
#: crates/pdfs-gui/src/app/pages/browser.rs:2924
#: crates/pdfs-gui/src/app/pages/devices.rs:218
#: crates/pdfs-gui/src/app/pages/locations.rs:853
#: crates/pdfs-gui/src/app/pages/photos.rs:2841
#: crates/pdfs-gui/src/app/pages/photos.rs:3120
#: crates/pdfs-gui/src/app/pages/shared.rs:532
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:165
#: crates/pdfs-gui/src/app/pages/status.rs:305
@@ -449,7 +449,7 @@ msgstr "Connecting…"
#: crates/pdfs-gui/src/app/pages/browser.rs:2925
#: crates/pdfs-gui/src/app/pages/devices.rs:219
#: crates/pdfs-gui/src/app/pages/locations.rs:854
#: crates/pdfs-gui/src/app/pages/photos.rs:2842
#: crates/pdfs-gui/src/app/pages/photos.rs:3121
#: crates/pdfs-gui/src/app/pages/shared.rs:533
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:166
#: crates/pdfs-gui/src/app/pages/trash.rs:345
@@ -457,12 +457,12 @@ msgid "Waiting for the Proton Drive mount service to come up."
msgstr "Waiting for the Proton Drive mount service to come up."
#: crates/pdfs-gui/src/app/pages/activity.rs:419
#: crates/pdfs-gui/src/app/pages/photos.rs:2240
#: crates/pdfs-gui/src/app/pages/photos.rs:2509
msgid "Today"
msgstr "Today"
#: crates/pdfs-gui/src/app/pages/activity.rs:422
#: crates/pdfs-gui/src/app/pages/photos.rs:2245
#: crates/pdfs-gui/src/app/pages/photos.rs:2514
msgid "Yesterday"
msgstr "Yesterday"
@@ -517,7 +517,7 @@ msgstr "Resolved"
#. Translators: strftime format for the time of day in the activity feed, such as "14:05".
#. Translators: strftime format for the time a photo was taken, shown on its tile, such as "14:05".
#: crates/pdfs-gui/src/app/pages/activity.rs:580
#: crates/pdfs-gui/src/app/pages/photos.rs:2284
#: crates/pdfs-gui/src/app/pages/photos.rs:2553
msgid "%H:%M"
msgstr "%H:%M"
@@ -623,12 +623,12 @@ msgid "Reading your Proton Drive albums."
msgstr "Reading your Proton Drive albums."
#: crates/pdfs-gui/src/app/pages/albums.rs:59
#: crates/pdfs-gui/src/app/pages/photos.rs:2711
#: crates/pdfs-gui/src/app/pages/photos.rs:2990
msgid "No photo library"
msgstr "No photo library"
#: crates/pdfs-gui/src/app/pages/albums.rs:60
#: crates/pdfs-gui/src/app/pages/photos.rs:2712
#: crates/pdfs-gui/src/app/pages/photos.rs:2991
msgid "This Proton account doesn't have Photos enabled."
msgstr "This Proton account doesn't have Photos enabled."
@@ -661,7 +661,7 @@ msgstr[1] "{n} albums"
#: crates/pdfs-gui/src/app/pages/albums.rs:205
#: crates/pdfs-gui/src/app/pages/browser.rs:1246
#: crates/pdfs-gui/src/app/pages/photos.rs:2569
#: crates/pdfs-gui/src/app/pages/photos.rs:2848
#: crates/pdfs-gui/src/app/pages/shared.rs:384
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:244
#: crates/pdfs-gui/src/app/widgets/details.rs:155
@@ -727,10 +727,10 @@ msgstr "Couldn't create the album"
#: crates/pdfs-gui/src/app/pages/locations.rs:1090
#: crates/pdfs-gui/src/app/pages/locations.rs:1109
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1297
#: crates/pdfs-gui/src/app/pages/photos.rs:1193
#: crates/pdfs-gui/src/app/pages/photos.rs:1685
#: crates/pdfs-gui/src/app/pages/photos.rs:2633
#: crates/pdfs-gui/src/app/pages/photos.rs:2804
#: crates/pdfs-gui/src/app/pages/photos.rs:1234
#: crates/pdfs-gui/src/app/pages/photos.rs:1947
#: crates/pdfs-gui/src/app/pages/photos.rs:2912
#: crates/pdfs-gui/src/app/pages/photos.rs:3083
#: crates/pdfs-gui/src/app/pages/shared.rs:510
#: crates/pdfs-gui/src/app/pages/shared.rs:838
#: crates/pdfs-gui/src/app/pages/status.rs:672
@@ -794,7 +794,7 @@ msgstr[0] "Choose an album for {n} photo."
msgstr[1] "Choose an album for {n} photos."
#: crates/pdfs-gui/src/app/pages/albums.rs:424
#: crates/pdfs-gui/src/app/pages/photos.rs:656
#: crates/pdfs-gui/src/app/pages/photos.rs:696
msgid "New Album…"
msgstr "New Album…"
@@ -985,7 +985,7 @@ msgstr "My Files"
#. Translators: {n} is how many items are selected: files and folders in My Files, photos here.
#: crates/pdfs-gui/src/app/pages/browser.rs:638
#: crates/pdfs-gui/src/app/pages/browser.rs:1331
#: crates/pdfs-gui/src/app/pages/photos.rs:1539
#: crates/pdfs-gui/src/app/pages/photos.rs:1801
#, rust-format
msgid "{n} selected"
msgid_plural "{n} selected"
@@ -994,8 +994,8 @@ msgstr[1] "{n} selected"
#: crates/pdfs-gui/src/app/pages/browser.rs:674
#: crates/pdfs-gui/src/app/pages/browser.rs:709
#: crates/pdfs-gui/src/app/pages/photos.rs:1678
#: crates/pdfs-gui/src/app/pages/photos.rs:1684
#: crates/pdfs-gui/src/app/pages/photos.rs:1940
#: crates/pdfs-gui/src/app/pages/photos.rs:1946
msgid "Couldn't move to Trash"
msgstr "Couldn't move to Trash"
@@ -1029,7 +1029,7 @@ msgstr[0] "Moved {n} item to Trash"
msgstr[1] "Moved {n} items to Trash"
#: crates/pdfs-gui/src/app/pages/browser.rs:727
#: crates/pdfs-gui/src/app/pages/photos.rs:1671
#: crates/pdfs-gui/src/app/pages/photos.rs:1933
msgid "Undo"
msgstr "Undo"
@@ -1086,7 +1086,7 @@ msgid "Open With…"
msgstr "Open With…"
#: crates/pdfs-gui/src/app/pages/browser.rs:1263
#: crates/pdfs-gui/src/app/pages/photos.rs:2567
#: crates/pdfs-gui/src/app/pages/photos.rs:2846
msgctxt "verb"
msgid "Play"
msgstr "Play"
@@ -1379,7 +1379,7 @@ msgstr[0] "Uploading {n} item…"
msgstr[1] "Uploading {n} items…"
#: crates/pdfs-gui/src/app/pages/browser.rs:2696
#: crates/pdfs-gui/src/app/pages/photos.rs:674
#: crates/pdfs-gui/src/app/pages/photos.rs:714
msgctxt "verb"
msgid "View"
msgstr "View"
@@ -2524,169 +2524,169 @@ msgid "Hide details"
msgstr "Hide details"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1302
#: crates/pdfs-gui/src/app/pages/photos.rs:2628
#: crates/pdfs-gui/src/app/pages/photos.rs:2632
#: crates/pdfs-gui/src/app/pages/photos.rs:2907
#: crates/pdfs-gui/src/app/pages/photos.rs:2911
msgid "Couldn't change the favorite"
msgstr "Couldn't change the favourite"
#: crates/pdfs-gui/src/app/pages/photos.rs:400
#: crates/pdfs-gui/src/app/pages/photos.rs:479
#: crates/pdfs-gui/src/app/pages/photos.rs:440
#: crates/pdfs-gui/src/app/pages/photos.rs:519
msgid "Upload photos"
msgstr "Upload photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:405
#: crates/pdfs-gui/src/app/pages/photos.rs:445
#: crates/pdfs-gui/src/app/pages/takeout.rs:287
msgid "Import from Google Photos"
msgstr "Import from Google Photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:446
#: crates/pdfs-gui/src/app/pages/photos.rs:584
#: crates/pdfs-gui/src/app/pages/photos.rs:486
#: crates/pdfs-gui/src/app/pages/photos.rs:624
msgid "Jump to a month"
msgstr "Jump to a month"
#: crates/pdfs-gui/src/app/pages/photos.rs:463
#: crates/pdfs-gui/src/app/pages/photos.rs:503
msgid "Back to albums"
msgstr "Back to albums"
#: crates/pdfs-gui/src/app/pages/photos.rs:475
#: crates/pdfs-gui/src/app/pages/photos.rs:515
msgctxt "verb"
msgid "Upload"
msgstr "Upload"
#: crates/pdfs-gui/src/app/pages/photos.rs:488
#: crates/pdfs-gui/src/app/pages/photos.rs:528
msgid "Import a Google Photos Takeout export"
msgstr "Import a Google Photos Takeout export"
#: crates/pdfs-gui/src/app/pages/photos.rs:498
#: crates/pdfs-gui/src/app/pages/photos.rs:507
#: crates/pdfs-gui/src/app/pages/photos.rs:1537
#: crates/pdfs-gui/src/app/pages/photos.rs:538
#: crates/pdfs-gui/src/app/pages/photos.rs:547
#: crates/pdfs-gui/src/app/pages/photos.rs:1799
msgid "Select photos"
msgstr "Select photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:518
#: crates/pdfs-gui/src/app/pages/photos.rs:2585
#: crates/pdfs-gui/src/app/pages/photos.rs:558
#: crates/pdfs-gui/src/app/pages/photos.rs:2864
msgid "Add to Album…"
msgstr "Add to Album…"
#: crates/pdfs-gui/src/app/pages/photos.rs:524
#: crates/pdfs-gui/src/app/pages/photos.rs:564
msgid "Leave selection (Esc)"
msgstr "Leave selection (Esc)"
#: crates/pdfs-gui/src/app/pages/photos.rs:568
#: crates/pdfs-gui/src/app/pages/photos.rs:608
msgid "Show only favorites"
msgstr "Show only favourites"
#: crates/pdfs-gui/src/app/pages/photos.rs:575
#: crates/pdfs-gui/src/app/pages/photos.rs:615
msgid "Show only photos not in an album"
msgstr "Show only photos not in an album"
#: crates/pdfs-gui/src/app/pages/photos.rs:582
#: crates/pdfs-gui/src/app/pages/photos.rs:787
#: crates/pdfs-gui/src/app/pages/photos.rs:622
#: crates/pdfs-gui/src/app/pages/photos.rs:827
msgid "All dates"
msgstr "All dates"
#: crates/pdfs-gui/src/app/pages/photos.rs:603
#: crates/pdfs-gui/src/app/pages/photos.rs:643
msgid "Timeline"
msgstr "Timeline"
#: crates/pdfs-gui/src/app/pages/photos.rs:607
#: crates/pdfs-gui/src/app/pages/photos.rs:647
msgid "Albums"
msgstr "Albums"
#: crates/pdfs-gui/src/app/pages/photos.rs:673
#: crates/pdfs-gui/src/app/pages/photos.rs:713
msgid "Importing from Google Photos…"
msgstr "Importing from Google Photos…"
#. Translators: strftime format for a month on its own, such as "June 2024". %OB is the month name in its standalone (nominative) form; use %B if your language has no separate form.
#: crates/pdfs-gui/src/app/pages/photos.rs:763
#: crates/pdfs-gui/src/app/pages/photos.rs:803
msgid "%OB %Y"
msgstr "%OB %Y"
#. Translators: a row of the date jump; {month} is a month such as "June 2024", {count} how many photos it holds.
#: crates/pdfs-gui/src/app/pages/photos.rs:794
#: crates/pdfs-gui/src/app/pages/photos.rs:834
#, rust-format
msgid "{month} ({count})"
msgstr "{month} ({count})"
#. Translators: a Photos filter tab that shows photos, videos and raw files together.
#: crates/pdfs-gui/src/app/pages/photos.rs:831
#: crates/pdfs-gui/src/app/pages/photos.rs:871
msgctxt "photo filter"
msgid "All"
msgstr "All"
#: crates/pdfs-gui/src/app/pages/photos.rs:832
#: crates/pdfs-gui/src/app/pages/photos.rs:872
msgctxt "photo filter"
msgid "Photos"
msgstr "Photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:833
#: crates/pdfs-gui/src/app/pages/photos.rs:873
msgctxt "photo filter"
msgid "Videos"
msgstr "Videos"
#. Translators: a Photos filter tab for raw camera files.
#: crates/pdfs-gui/src/app/pages/photos.rs:835
#: crates/pdfs-gui/src/app/pages/photos.rs:875
msgctxt "photo filter"
msgid "Raw"
msgstr "Raw"
#: crates/pdfs-gui/src/app/pages/photos.rs:1119
#: crates/pdfs-gui/src/app/pages/photos.rs:1160
msgid "Select Photo to Upload"
msgstr "Select Photo to Upload"
#: crates/pdfs-gui/src/app/pages/photos.rs:1123
#: crates/pdfs-gui/src/app/pages/photos.rs:1164
#: crates/pdfs-gui/src/prompt.rs:60
msgid "Images"
msgstr "Images"
#: crates/pdfs-gui/src/app/pages/photos.rs:1179
#: crates/pdfs-gui/src/app/pages/photos.rs:1220
msgid "Photo uploaded"
msgstr "Photo uploaded"
#: crates/pdfs-gui/src/app/pages/photos.rs:1184
#: crates/pdfs-gui/src/app/pages/photos.rs:1192
#: crates/pdfs-gui/src/app/pages/photos.rs:1225
#: crates/pdfs-gui/src/app/pages/photos.rs:1233
msgid "Couldn't upload photo"
msgstr "Couldn't upload photo"
#. Translators: badge on a photo tile whose shot includes a raw camera file.
#: crates/pdfs-gui/src/app/pages/photos.rs:1407
#: crates/pdfs-gui/src/app/pages/photos.rs:1458
msgid "RAW"
msgstr "RAW"
#: crates/pdfs-gui/src/app/pages/photos.rs:1581
#: crates/pdfs-gui/src/app/pages/photos.rs:1843
msgid "Move this photo to Trash?"
msgstr "Move this photo to Trash?"
#: crates/pdfs-gui/src/app/pages/photos.rs:1583
#: crates/pdfs-gui/src/app/pages/photos.rs:1845
#, rust-format
msgid "Move this photo to Trash? It is stored as {n} file."
msgid_plural "Move this photo to Trash? It is stored as {n} files."
msgstr[0] "Move this photo to Trash? It is stored as {n} file."
msgstr[1] "Move this photo to Trash? It is stored as {n} files."
#: crates/pdfs-gui/src/app/pages/photos.rs:1589
#: crates/pdfs-gui/src/app/pages/photos.rs:1851
#, rust-format
msgid "Move {n} photo to Trash?"
msgid_plural "Move {n} photos to Trash?"
msgstr[0] "Move {n} photo to Trash?"
msgstr[1] "Move {n} photos to Trash?"
#: crates/pdfs-gui/src/app/pages/photos.rs:1596
#: crates/pdfs-gui/src/app/pages/photos.rs:1858
#, rust-format
msgid "Move {n} photo to Trash? They are stored as {files} files."
msgid_plural "Move {n} photos to Trash? They are stored as {files} files."
msgstr[0] "Move {n} photo to Trash? They are stored as {files} files."
msgstr[1] "Move {n} photos to Trash? They are stored as {files} files."
#: crates/pdfs-gui/src/app/pages/photos.rs:1654
#: crates/pdfs-gui/src/app/pages/photos.rs:1916
msgid "The server refused."
msgstr "The server refused."
#: crates/pdfs-gui/src/app/pages/photos.rs:1657
#: crates/pdfs-gui/src/app/pages/photos.rs:1919
msgid "Some photos couldn't be moved to Trash"
msgstr "Some photos couldn't be moved to Trash"
#: crates/pdfs-gui/src/app/pages/photos.rs:1666
#: crates/pdfs-gui/src/app/pages/photos.rs:1928
#, rust-format
msgid "Moved {n} photo to Trash"
msgid_plural "Moved {n} photos to Trash"
@@ -2694,7 +2694,7 @@ msgstr[0] "Moved {n} photo to Trash"
msgstr[1] "Moved {n} photos to Trash"
#. Translators: the Photos page subtitle, such as "12 videos".
#: crates/pdfs-gui/src/app/pages/photos.rs:2200
#: crates/pdfs-gui/src/app/pages/photos.rs:2463
#, rust-format
msgid "{count} video"
msgid_plural "{count} videos"
@@ -2702,7 +2702,7 @@ msgstr[0] "{count} video"
msgstr[1] "{count} videos"
#. Translators: the Photos page subtitle, such as "12 raw photos".
#: crates/pdfs-gui/src/app/pages/photos.rs:2202
#: crates/pdfs-gui/src/app/pages/photos.rs:2465
#, rust-format
msgid "{count} raw photo"
msgid_plural "{count} raw photos"
@@ -2710,175 +2710,180 @@ msgstr[0] "{count} raw photo"
msgstr[1] "{count} raw photos"
#. Translators: the Photos page subtitle, such as "1,204 photos".
#: crates/pdfs-gui/src/app/pages/photos.rs:2204
#: crates/pdfs-gui/src/app/pages/photos.rs:2467
#, rust-format
msgid "{count} photo"
msgid_plural "{count} photos"
msgstr[0] "{count} photo"
msgstr[1] "{count} photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:2231
#: crates/pdfs-gui/src/app/pages/photos.rs:2252
#: crates/pdfs-gui/src/app/pages/photos.rs:2495
#: crates/pdfs-gui/src/app/pages/photos.rs:2521
msgid "Unknown date"
msgstr "Unknown date"
#. Translators: strftime format for a day heading in the photo timeline, such as "3 June 2026".
#: crates/pdfs-gui/src/app/pages/photos.rs:2249
#: crates/pdfs-gui/src/app/pages/photos.rs:2518
msgid "%-d %B %Y"
msgstr "%-d %B %Y"
#. Translators: strftime format for a photo's capture date and time, such as "2026-06-03 14:05:09".
#: crates/pdfs-gui/src/app/pages/photos.rs:2270
#: crates/pdfs-gui/src/app/pages/photos.rs:2539
msgid "%Y-%m-%d %H:%M:%S"
msgstr "%Y-%m-%d %H:%M:%S"
#: crates/pdfs-gui/src/app/pages/photos.rs:2274
#: crates/pdfs-gui/src/app/pages/photos.rs:2276
#: crates/pdfs-gui/src/app/pages/photos.rs:2543
#: crates/pdfs-gui/src/app/pages/photos.rs:2545
msgid "Unknown Date"
msgstr "Unknown Date"
#: crates/pdfs-gui/src/app/pages/photos.rs:2306
#. Translators: strftime format for the day a photo was taken, shown on its tile when the timeline is grouped by month or year, such as "3 Jun".
#: crates/pdfs-gui/src/app/pages/photos.rs:2563
msgid "%-d %b"
msgstr "%-d %b"
#: crates/pdfs-gui/src/app/pages/photos.rs:2585
msgid "Every photo is in an album"
msgstr "Every photo is in an album"
#: crates/pdfs-gui/src/app/pages/photos.rs:2307
#: crates/pdfs-gui/src/app/pages/photos.rs:2586
msgid "Turn off the album filter to see everything."
msgstr "Turn off the album filter to see everything."
#: crates/pdfs-gui/src/app/pages/photos.rs:2312
#: crates/pdfs-gui/src/app/pages/photos.rs:2591
msgid "No photos yet"
msgstr "No photos yet"
#: crates/pdfs-gui/src/app/pages/photos.rs:2313
#: crates/pdfs-gui/src/app/pages/photos.rs:2592
msgid "Photos you upload to Proton Drive appear here."
msgstr "Photos you upload to Proton Drive appear here."
#: crates/pdfs-gui/src/app/pages/photos.rs:2316
#: crates/pdfs-gui/src/app/pages/photos.rs:2595
msgid "No favorites yet"
msgstr "No favourites yet"
#: crates/pdfs-gui/src/app/pages/photos.rs:2317
#: crates/pdfs-gui/src/app/pages/photos.rs:2596
msgid "Star a photo in the viewer or from its menu to find it here."
msgstr "Star a photo in the viewer or from its menu to find it here."
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2322
#: crates/pdfs-gui/src/app/pages/photos.rs:2601
#, rust-format
msgid "No favorite videos in {month}"
msgstr "No favourite videos in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2323
#: crates/pdfs-gui/src/app/pages/photos.rs:2602
msgid "No favorite videos"
msgstr "No favourite videos"
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2325
#: crates/pdfs-gui/src/app/pages/photos.rs:2604
#, rust-format
msgid "No favorite raw files in {month}"
msgstr "No favourite raw files in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2326
#: crates/pdfs-gui/src/app/pages/photos.rs:2605
msgid "No favorite raw files"
msgstr "No favourite raw files"
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2328
#: crates/pdfs-gui/src/app/pages/photos.rs:2607
#, rust-format
msgid "No favorite photos in {month}"
msgstr "No favourite photos in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2329
#: crates/pdfs-gui/src/app/pages/photos.rs:2608
msgid "No favorite photos"
msgstr "No favourite photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:2331
#: crates/pdfs-gui/src/app/pages/photos.rs:2610
msgid "Turn off the favorites filter to see everything."
msgstr "Turn off the favourites filter to see everything."
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2336
#: crates/pdfs-gui/src/app/pages/photos.rs:2615
#, rust-format
msgid "No videos in {month}"
msgstr "No videos in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2337
#: crates/pdfs-gui/src/app/pages/photos.rs:2616
msgid "No videos"
msgstr "No videos"
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2339
#: crates/pdfs-gui/src/app/pages/photos.rs:2618
#, rust-format
msgid "No raw files in {month}"
msgstr "No raw files in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2340
#: crates/pdfs-gui/src/app/pages/photos.rs:2619
msgid "No raw files"
msgstr "No raw files"
#. Translators: {month} is a month and year, such as "June 2024".
#: crates/pdfs-gui/src/app/pages/photos.rs:2342
#: crates/pdfs-gui/src/app/pages/photos.rs:2621
#, rust-format
msgid "No photos in {month}"
msgstr "No photos in {month}"
#: crates/pdfs-gui/src/app/pages/photos.rs:2343
#: crates/pdfs-gui/src/app/pages/photos.rs:2622
msgid "No photos"
msgstr "No photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:2345
#: crates/pdfs-gui/src/app/pages/photos.rs:2624
msgid "Try another filter or month."
msgstr "Try another filter or month."
#. Translators: a check item in a photo's menu, on while the photo is a favorite.
#: crates/pdfs-gui/src/app/pages/photos.rs:2574
#: crates/pdfs-gui/src/app/pages/photos.rs:2853
msgctxt "state"
msgid "Favorite"
msgstr "Favourite"
#: crates/pdfs-gui/src/app/pages/photos.rs:2579
#: crates/pdfs-gui/src/app/pages/photos.rs:2858
msgctxt "verb"
msgid "Select"
msgstr "Select"
#: crates/pdfs-gui/src/app/pages/photos.rs:2591
#: crates/pdfs-gui/src/app/pages/photos.rs:2870
msgid "Remove from Album"
msgstr "Remove from Album"
#: crates/pdfs-gui/src/app/pages/photos.rs:2597
#: crates/pdfs-gui/src/app/pages/photos.rs:2876
msgid "Move to Trash…"
msgstr "Move to Trash…"
#: crates/pdfs-gui/src/app/pages/photos.rs:2621
#: crates/pdfs-gui/src/app/pages/photos.rs:2900
msgid "Added to Favorites"
msgstr "Added to Favourites"
#: crates/pdfs-gui/src/app/pages/photos.rs:2623
#: crates/pdfs-gui/src/app/pages/photos.rs:2902
msgid "Removed from Favorites"
msgstr "Removed from Favourites"
#: crates/pdfs-gui/src/app/pages/photos.rs:2652
#: crates/pdfs-gui/src/app/pages/photos.rs:2931
msgid "Loading photos…"
msgstr "Loading photos…"
#: crates/pdfs-gui/src/app/pages/photos.rs:2653
#: crates/pdfs-gui/src/app/pages/photos.rs:2932
msgid "Reading your Proton Drive timeline."
msgstr "Reading your Proton Drive timeline."
#: crates/pdfs-gui/src/app/pages/photos.rs:2742
#: crates/pdfs-gui/src/app/pages/photos.rs:3021
msgid "Empty album"
msgstr "Empty album"
#: crates/pdfs-gui/src/app/pages/photos.rs:2743
#: crates/pdfs-gui/src/app/pages/photos.rs:3022
msgid "This album has no photos in it."
msgstr "This album has no photos in it."
#: crates/pdfs-gui/src/app/pages/photos.rs:2785
#: crates/pdfs-gui/src/app/pages/photos.rs:2803
#: crates/pdfs-gui/src/app/pages/photos.rs:3064
#: crates/pdfs-gui/src/app/pages/photos.rs:3082
msgid "Couldn't load more photos"
msgstr "Couldn't load more photos"
#: crates/pdfs-gui/src/app/pages/photos.rs:2790
#: crates/pdfs-gui/src/app/pages/photos.rs:2797
#: crates/pdfs-gui/src/app/pages/photos.rs:3069
#: crates/pdfs-gui/src/app/pages/photos.rs:3076
msgid "Couldn't load photos"
msgstr "Couldn't load photos"