feat(core,cli,gui): support two-password accounts without storing the mailbox password

A two-password account signed in with its login password as the mailbox
password, so the key chain never unlocked and the daemon retried forever.

Login now asks for the mailbox password and checks it against the account
(proton-sdk 0.8 `unlock`), so a typo is a retry. The password is never
stored: the keyring blob keeps the per-key passphrases instead, and for a
two-password account only when the user opts in (`--remember`, or the
"Keep unlocked on this computer" switch). By default they live in the
kernel keyring for the login session and the account is locked after a
reboot until `pdfs unlock` or the app supplies them again.

- core: kernelkey module, Error::Locked / WrongMailboxPassword, unlock,
  lock, key_state, ready; blobs written by 3.0.x are migrated on first
  start; token refresh updates only the tokens in the stored blob
- cli: `pdfs unlock [--remember]`, `pdfs lock [--forget]`; status and
  diagnose report the key state; the daemon waits while locked and is
  marked non-dumpable
- gui: mailbox password dialog at sign-in and on open, locked tray state
- po: all catalogs translated
- bump to 3.1.0, depend on proton-sdk and proton-drive-rs 0.8.0

Refs #26.
This commit is contained in:
nvrl committed 2026-10-07 08:17:50 +02:00
1 parent f105159186
commit 9fa88ff397
24 files changed
+2871 -1417

No files matched your search

+198 -140
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-10-05 01:01+0200\n"
"POT-Creation-Date: 2026-10-07 02:39+0200\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Dutch\n"
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
msgid "%A, %B %-d, %Y, %H:%M"
msgstr "%A %-d %B %Y, %H:%M"
#: crates/pdfs-gui/src/app/main.rs:743
#: crates/pdfs-gui/src/app/main.rs:747
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: crates/pdfs-gui/src/app/pages/browser.rs:454
#: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ msgstr "%A %-d %B %Y, %H:%M"
msgid "My files"
msgstr "Mijn bestanden"
#: crates/pdfs-gui/src/app/main.rs:746 crates/pdfs-gui/src/app/main.rs:1390
#: crates/pdfs-gui/src/app/main.rs:750 crates/pdfs-gui/src/app/main.rs:1394
#: crates/pdfs-gui/src/app/pages/albums.rs:638
#: crates/pdfs-gui/src/app/pages/photos.rs:842
#: crates/pdfs-gui/src/app/pages/places.rs:441
msgid "Photos"
msgstr "Foto's"
#: crates/pdfs-gui/src/app/main.rs:751
#: crates/pdfs-gui/src/app/main.rs:755
#: crates/pdfs-gui/src/app/pages/shared.rs:168
#: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me"
msgstr "Gedeeld met mij"
#: crates/pdfs-gui/src/app/main.rs:756
#: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
msgid "Shared by me"
msgstr "Gedeeld door mij"
#: crates/pdfs-gui/src/app/main.rs:759
#: crates/pdfs-gui/src/app/main.rs:763
#: crates/pdfs-gui/src/app/pages/devices.rs:140
#: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers"
msgstr "Computers"
#: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/main.rs:764
#: crates/pdfs-gui/src/app/pages/trash.rs:101
msgid "Trash"
msgstr "Prullenbak"
#. Translators: sidebar entry for the page listing this computer's synced folders.
#: crates/pdfs-gui/src/app/main.rs:762
#: crates/pdfs-gui/src/app/main.rs:766
msgid "Sync"
msgstr "Synchronisatie"
#. 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:1079
#: crates/pdfs-gui/src/app/main.rs:1083
#, rust-format
msgid "{what}: {detail}"
msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1098
#: crates/pdfs-gui/src/app/main.rs:1102
msgid "You're offline"
msgstr "Je bent offline"
#: crates/pdfs-gui/src/app/main.rs:1099
#: crates/pdfs-gui/src/app/main.rs:1103
msgid "That's not there any more"
msgstr "Dat bestaat niet meer"
#: crates/pdfs-gui/src/app/main.rs:1100
#: crates/pdfs-gui/src/app/main.rs:1104
msgid "You don't have access to that"
msgstr "Je hebt daar geen toegang toe"
#: crates/pdfs-gui/src/app/main.rs:1101
#: crates/pdfs-gui/src/app/main.rs:1105
msgid "Something changed this first"
msgstr "Er is eerst iets anders gewijzigd"
#: crates/pdfs-gui/src/app/main.rs:1102
#: crates/pdfs-gui/src/app/main.rs:1106
msgid "Your Proton Drive is full"
msgstr "Je Proton Drive is vol"
#: crates/pdfs-gui/src/app/main.rs:1143 crates/pdfs-gui/src/app/main.rs:1372
#: crates/pdfs-gui/src/app/main.rs:1147 crates/pdfs-gui/src/app/main.rs:1376
#: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences"
msgstr "Voorkeuren"
#: crates/pdfs-gui/src/app/main.rs:1144
#: crates/pdfs-gui/src/app/main.rs:1148
#: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts"
msgstr "Sneltoetsen"
#: crates/pdfs-gui/src/app/main.rs:1146
#: crates/pdfs-gui/src/app/main.rs:1150
msgid "About Proton Drive for Linux"
msgstr "Over Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1151
#: crates/pdfs-gui/src/app/main.rs:1155
msgid "Main menu"
msgstr "Hoofdmenu"
#: crates/pdfs-gui/src/app/main.rs:1207
#: crates/pdfs-gui/src/app/main.rs:1211
msgid "Proton Drive for Linux"
msgstr "Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1215
#: crates/pdfs-gui/src/app/main.rs:1219
msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n"
"\n"
@@ -166,23 +166,23 @@ msgstr ""
"Onofficiële client — niet gelieerd aan, onderschreven door of ondersteund "
"door Proton AG."
#: crates/pdfs-gui/src/app/main.rs:1220
#: crates/pdfs-gui/src/app/main.rs:1224
msgid "Source Code"
msgstr "Broncode"
#: crates/pdfs-gui/src/app/main.rs:1224
#: crates/pdfs-gui/src/app/main.rs:1228
msgid "Proton Terms of Service"
msgstr "Servicevoorwaarden van Proton"
#: crates/pdfs-gui/src/app/main.rs:1228
#: crates/pdfs-gui/src/app/main.rs:1232
msgid "Proton Privacy Policy"
msgstr "Privacybeleid van Proton"
#: crates/pdfs-gui/src/app/main.rs:1233
#: crates/pdfs-gui/src/app/main.rs:1237
msgid "Disclaimer"
msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1237
#: crates/pdfs-gui/src/app/main.rs:1241
msgid ""
"This is an unofficial, community-built client. It is not affiliated with, "
"endorsed by, or supported by Proton AG.\n"
@@ -205,7 +205,7 @@ msgstr ""
"Deze software wordt geleverd “zoals ze is”, zonder enige garantie. Bewaar "
"een kopie van gegevens die je niet kwijt wilt raken."
#: crates/pdfs-gui/src/app/main.rs:1245
#: crates/pdfs-gui/src/app/main.rs:1249
msgid ""
"Places are named with data from <a href=\"https://www.geonames.org/"
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
@@ -215,7 +215,7 @@ msgstr ""
"\">GeoNames</a>, gelicentieerd onder <a href=\"https://creativecommons.org/"
"licenses/by/4.0/\">CC BY 4.0</a>."
#: crates/pdfs-gui/src/app/main.rs:1253
#: crates/pdfs-gui/src/app/main.rs:1257
msgid ""
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
"\">Natural Earth</a> land outlines and country borders, which are in the "
@@ -225,7 +225,7 @@ msgstr ""
"href=\"https://www.naturalearthdata.com/\">Natural Earth</a>, die in het "
"publieke domein vallen."
#: crates/pdfs-gui/src/app/main.rs:1261
#: crates/pdfs-gui/src/app/main.rs:1265
msgid ""
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
@@ -241,15 +241,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:1272
#: crates/pdfs-gui/src/app/main.rs:1276
msgid "translator-credits"
msgstr "Bijdragers aan Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1310
#: crates/pdfs-gui/src/app/main.rs:1314
msgid "Stop Proton Drive?"
msgstr "Proton Drive stoppen?"
#: crates/pdfs-gui/src/app/main.rs:1311
#: crates/pdfs-gui/src/app/main.rs:1315
msgid ""
"My files goes offline and nothing syncs until you connect again. Proton "
"Drive starts again at your next login."
@@ -257,7 +257,7 @@ msgstr ""
"Mijn bestanden gaat offline en er wordt niets gesynchroniseerd tot je weer "
"verbinding maakt. Proton Drive start opnieuw bij je volgende aanmelding."
#: crates/pdfs-gui/src/app/main.rs:1313 crates/pdfs-gui/src/app/main.rs:1588
#: crates/pdfs-gui/src/app/main.rs:1317 crates/pdfs-gui/src/app/main.rs:1592
#: crates/pdfs-gui/src/app/pages/albums.rs:243
#: crates/pdfs-gui/src/app/pages/albums.rs:428
#: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -272,7 +272,8 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:312
#: crates/pdfs-gui/src/app/pages/login.rs:378
#: crates/pdfs-gui/src/app/pages/login.rs:492
#: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -287,30 +288,30 @@ msgstr ""
msgid "Cancel"
msgstr "Annuleren"
#: crates/pdfs-gui/src/app/main.rs:1314
#: crates/pdfs-gui/src/app/main.rs:1318
msgctxt "verb"
msgid "Stop"
msgstr "Stoppen"
#: crates/pdfs-gui/src/app/main.rs:1331
#: crates/pdfs-gui/src/app/main.rs:1335
msgid "Couldn't stop Proton Drive"
msgstr "Kon Proton Drive niet stoppen"
#: crates/pdfs-gui/src/app/main.rs:1332
#: crates/pdfs-gui/src/app/main.rs:1336
msgid "The Proton Drive service did not stop."
msgstr "De Proton Drive-service is niet gestopt."
#: crates/pdfs-gui/src/app/main.rs:1368
#: crates/pdfs-gui/src/app/main.rs:1372
#: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General"
msgstr "Algemeen"
#: crates/pdfs-gui/src/app/main.rs:1370
#: crates/pdfs-gui/src/app/main.rs:1374
#: crates/pdfs-gui/src/app/pages/browser.rs:247
msgid "Search Drive"
msgstr "Drive doorzoeken"
#: crates/pdfs-gui/src/app/main.rs:1371
#: crates/pdfs-gui/src/app/main.rs:1375
#: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -319,38 +320,38 @@ msgstr "Drive doorzoeken"
msgid "Refresh"
msgstr "Verversen"
#: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/main.rs:1377
msgid "Keyboard shortcuts"
msgstr "Sneltoetsen"
#: crates/pdfs-gui/src/app/main.rs:1377
#: crates/pdfs-gui/src/app/main.rs:1381
msgid "Files"
msgstr "Bestanden"
#: crates/pdfs-gui/src/app/main.rs:1379
#: crates/pdfs-gui/src/app/main.rs:1383
#: crates/pdfs-gui/src/app/pages/browser.rs:294
msgid "New folder"
msgstr "Nieuwe map"
#: crates/pdfs-gui/src/app/main.rs:1380
#: crates/pdfs-gui/src/app/main.rs:1384
#: crates/pdfs-gui/src/app/pages/browser.rs:290
msgid "Upload files"
msgstr "Bestanden uploaden"
#: crates/pdfs-gui/src/app/main.rs:1381
#: crates/pdfs-gui/src/app/main.rs:1385
msgid "Back / forward"
msgstr "Terug / vooruit"
#: crates/pdfs-gui/src/app/main.rs:1382
#: crates/pdfs-gui/src/app/main.rs:1386
#: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder"
msgstr "Bovenliggende map"
#: crates/pdfs-gui/src/app/main.rs:1383
#: crates/pdfs-gui/src/app/main.rs:1387
msgid "Grid / list"
msgstr "Raster / lijst"
#: crates/pdfs-gui/src/app/main.rs:1384
#: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/albums.rs:298
#: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -359,7 +360,7 @@ msgstr "Raster / lijst"
msgid "Rename"
msgstr "Hernoemen"
#: crates/pdfs-gui/src/app/main.rs:1385 crates/pdfs-gui/src/app/main.rs:1405
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409
#: crates/pdfs-gui/src/app/pages/browser.rs:357
#: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -369,73 +370,73 @@ msgstr "Hernoemen"
msgid "Move to Trash"
msgstr "Naar prullenbak verplaatsen"
#: crates/pdfs-gui/src/app/main.rs:1386
#: crates/pdfs-gui/src/app/main.rs:1390
msgid "Clear the selection"
msgstr "Selectie wissen"
#: crates/pdfs-gui/src/app/main.rs:1392
#: crates/pdfs-gui/src/app/main.rs:1396
msgid "Larger thumbnails"
msgstr "Grotere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1393
#: crates/pdfs-gui/src/app/main.rs:1397
msgid "Smaller thumbnails"
msgstr "Kleinere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1394
#: crates/pdfs-gui/src/app/main.rs:1398
msgid "Reset thumbnail size"
msgstr "Miniatuurgrootte herstellen"
#: crates/pdfs-gui/src/app/main.rs:1395
#: crates/pdfs-gui/src/app/main.rs:1399
msgid "Select all"
msgstr "Alles selecteren"
#: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/main.rs:1403
msgid "Photo Viewer"
msgstr "Fotoweergave"
#: crates/pdfs-gui/src/app/main.rs:1401
#: crates/pdfs-gui/src/app/main.rs:1405
msgid "Previous / next photo"
msgstr "Vorige / volgende foto"
#: crates/pdfs-gui/src/app/main.rs:1402
#: crates/pdfs-gui/src/app/main.rs:1406
msgid "First / last photo"
msgstr "Eerste / laatste foto"
#: crates/pdfs-gui/src/app/main.rs:1403
#: crates/pdfs-gui/src/app/main.rs:1407
msgid "Show details"
msgstr "Details tonen"
#: crates/pdfs-gui/src/app/main.rs:1404
#: crates/pdfs-gui/src/app/main.rs:1408
msgid "Fullscreen"
msgstr "Volledig scherm"
#: crates/pdfs-gui/src/app/main.rs:1406
#: crates/pdfs-gui/src/app/main.rs:1410
msgid "Close"
msgstr "Sluiten"
#: crates/pdfs-gui/src/app/main.rs:1496
#: crates/pdfs-gui/src/app/main.rs:1500
msgid "Select a single item to rename it"
msgstr "Selecteer één item om het te hernoemen"
#: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/main.rs:1660
#: crates/pdfs-gui/src/app/pages/albums.rs:85
#: crates/pdfs-gui/src/app/pages/places.rs:104
#: crates/pdfs-gui/src/app/pages/status.rs:1370
#: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected"
msgstr "Niet verbonden"
#: crates/pdfs-gui/src/app/main.rs:1657
#: crates/pdfs-gui/src/app/main.rs:1661
msgid "The Proton Drive service isn't running."
msgstr "De Proton Drive-service draait niet."
#: crates/pdfs-gui/src/app/main.rs:1665
#: crates/pdfs-gui/src/app/main.rs:1669
#: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:444
#: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…"
msgstr "Verbinden…"
#: crates/pdfs-gui/src/app/main.rs:1666
#: crates/pdfs-gui/src/app/main.rs:1670
msgid "Waiting for the Proton Drive service to start."
msgstr "Wachten tot de Proton Drive-service is gestart."
@@ -1282,7 +1283,7 @@ msgstr "Kon albums niet laden"
#: crates/pdfs-gui/src/app/pages/shared.rs:1006
#: crates/pdfs-gui/src/app/pages/shared.rs:1122
#: crates/pdfs-gui/src/app/pages/status.rs:750
#: crates/pdfs-gui/src/app/pages/status.rs:1517
#: crates/pdfs-gui/src/app/pages/status.rs:1518
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
#: crates/pdfs-gui/src/app/pages/takeout.rs:617
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:438
@@ -1550,7 +1551,7 @@ msgid "Make available offline"
msgstr "Offline beschikbaar maken"
#: crates/pdfs-gui/src/app/pages/browser.rs:347
#: crates/pdfs-gui/src/app/pages/status.rs:1493
#: crates/pdfs-gui/src/app/pages/status.rs:1494
msgid "Make online only"
msgstr "Alleen online maken"
@@ -2713,7 +2714,7 @@ msgid "Sync paused until you resume"
msgstr "Synchronisatie gepauzeerd totdat je hervat"
#: crates/pdfs-gui/src/app/pages/locations.rs:529
#: crates/pdfs-gui/src/app/pages/status.rs:1323 crates/pdfs-gui/src/main.rs:237
#: crates/pdfs-gui/src/app/pages/status.rs:1324 crates/pdfs-gui/src/main.rs:246
msgid "Sync paused"
msgstr "Synchronisatie gepauzeerd"
@@ -3185,26 +3186,26 @@ msgstr "Voer je e-mailadres en wachtwoord in."
msgid "Signing in…"
msgstr "Aanmelden…"
#: crates/pdfs-gui/src/app/pages/login.rs:155
#: crates/pdfs-gui/src/app/pages/login.rs:160
msgid "Complete the verification to continue…"
msgstr "Voltooi de verificatie om verder te gaan…"
#: crates/pdfs-gui/src/app/pages/login.rs:165
#: crates/pdfs-gui/src/app/pages/login.rs:185
msgid "login cancelled"
msgstr "aanmelden geannuleerd"
#: crates/pdfs-gui/src/app/pages/login.rs:198
#: crates/pdfs-gui/src/app/pages/login.rs:218
msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr ""
"Te veel aanmeldpogingen. Wacht een paar minuten en probeer het opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:204
#: crates/pdfs-gui/src/app/pages/login.rs:224
msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr ""
"Kon Proton niet bereiken. Controleer je internetverbinding en probeer het "
"opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:207
#: crates/pdfs-gui/src/app/pages/login.rs:227
msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3213,11 +3214,19 @@ msgstr ""
"opgeslagen. Zorg dat een sleutelbos (GNOME Keyring of KWallet) actief en "
"ontgrendeld is."
#: crates/pdfs-gui/src/app/pages/login.rs:210
#: crates/pdfs-gui/src/app/pages/login.rs:230
msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Aanmelden geannuleerd: er is geen tweestapscode ingevoerd."
#: crates/pdfs-gui/src/app/pages/login.rs:213
#: crates/pdfs-gui/src/app/pages/login.rs:233
msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Aanmelden geannuleerd: er is geen mailboxwachtwoord ingevoerd."
#: crates/pdfs-gui/src/app/pages/login.rs:236
msgid "That mailbox password didn't unlock your account."
msgstr "Dat mailboxwachtwoord heeft je account niet ontgrendeld."
#: crates/pdfs-gui/src/app/pages/login.rs:239
msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one."
@@ -3226,33 +3235,77 @@ msgstr ""
"om een nieuwe te krijgen."
#. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:218
#: crates/pdfs-gui/src/app/pages/login.rs:244
#, rust-format
msgid "Sign-in failed: {error}"
msgstr "Aanmelden mislukt: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:298
#: crates/pdfs-gui/src/app/pages/login.rs:354
msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Dat mailboxwachtwoord heeft je account niet ontgrendeld. Probeer het opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:356
msgid ""
"This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Dit account heeft een apart mailboxwachtwoord. Voer het in om je bestanden te ontgrendelen."
#: crates/pdfs-gui/src/app/pages/login.rs:359
msgid "Mailbox Password"
msgstr "Mailboxwachtwoord"
#: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "Mailbox password"
msgstr "Mailboxwachtwoord"
#: crates/pdfs-gui/src/app/pages/login.rs:369
msgid "Keep unlocked on this computer"
msgstr "Ontgrendeld houden op deze computer"
#: crates/pdfs-gui/src/app/pages/login.rs:371
msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session."
msgstr "Bewaart de ontgrendeling in de sleutelhanger van het systeem, zodat Proton Drive na elke aanmelding opent zonder te vragen. Anders voer je het wachtwoord één keer per sessie in."
#: crates/pdfs-gui/src/app/pages/login.rs:379
#: crates/pdfs-gui/src/app/pages/login.rs:432
msgid "Unlock"
msgstr "Ontgrendelen"
#: crates/pdfs-gui/src/app/pages/login.rs:431
msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive is vergrendeld. Voer je mailboxwachtwoord in om het te ontgrendelen."
#: crates/pdfs-gui/src/app/pages/login.rs:460
msgid "Unlocked."
msgstr "Ontgrendeld."
#: crates/pdfs-gui/src/app/pages/login.rs:465
msgid "Couldn't unlock"
msgstr "Ontgrendelen mislukt"
#: crates/pdfs-gui/src/app/pages/login.rs:478
msgid "Two-Factor Authentication"
msgstr "Tweestapsverificatie"
#: crates/pdfs-gui/src/app/pages/login.rs:300
#: crates/pdfs-gui/src/app/pages/login.rs:480
msgid ""
"Enter the code from your authenticator app, or one of your recovery codes."
msgstr "Voer de code uit je authenticator-app in, of een van je herstelcodes."
#: crates/pdfs-gui/src/app/pages/login.rs:306
#: crates/pdfs-gui/src/app/pages/login.rs:486
msgid "Authentication code"
msgstr "Verificatiecode"
#: crates/pdfs-gui/src/app/pages/login.rs:313
#: crates/pdfs-gui/src/app/pages/login.rs:493
msgid "Confirm"
msgstr "Bevestigen"
#: crates/pdfs-gui/src/app/pages/login.rs:341
#: crates/pdfs-gui/src/app/pages/login.rs:521
msgid "Sign Out?"
msgstr "Afmelden?"
#: crates/pdfs-gui/src/app/pages/login.rs:343
#: crates/pdfs-gui/src/app/pages/login.rs:523
msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are."
@@ -3261,7 +3314,7 @@ msgstr ""
"je opnieuw aanmeldt. Bestanden die al op deze computer staan, blijven waar "
"ze zijn."
#: crates/pdfs-gui/src/app/pages/login.rs:345
#: crates/pdfs-gui/src/app/pages/login.rs:525
msgid "Sign Out"
msgstr "Afmelden"
@@ -4620,40 +4673,40 @@ msgid "Restart Now"
msgstr "Nu opnieuw starten"
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
#: crates/pdfs-gui/src/app/pages/status.rs:912
#: crates/pdfs-gui/src/app/pages/status.rs:913
#, rust-format
msgid "{size} used"
msgstr "{size} gebruikt"
#: crates/pdfs-gui/src/app/pages/status.rs:923
#: crates/pdfs-gui/src/app/pages/status.rs:924
#, rust-format
msgid "{used} of {total} used ({percent}%)"
msgstr "{used} van {total} gebruikt ({percent}%)"
#: crates/pdfs-gui/src/app/pages/status.rs:961
#: crates/pdfs-gui/src/app/pages/status.rs:962
msgid "Proton Drive connected"
msgstr "Proton Drive verbonden"
#: crates/pdfs-gui/src/app/pages/status.rs:962
#: crates/pdfs-gui/src/app/pages/status.rs:963
msgid "Your files are available."
msgstr "Je bestanden zijn beschikbaar."
#: crates/pdfs-gui/src/app/pages/status.rs:967
#: crates/pdfs-gui/src/app/pages/status.rs:968
msgid "Proton Drive disconnected"
msgstr "Verbinding met Proton Drive verbroken"
#: crates/pdfs-gui/src/app/pages/status.rs:968
#: crates/pdfs-gui/src/app/pages/status.rs:969
msgid ""
"The Proton Drive service stopped. Files aren't available until it restarts."
msgstr ""
"De Proton Drive-service is gestopt. Bestanden zijn pas weer beschikbaar als "
"hij opnieuw start."
#: crates/pdfs-gui/src/app/pages/status.rs:1037
#: crates/pdfs-gui/src/app/pages/status.rs:1038
msgid "Sync complete"
msgstr "Synchronisatie voltooid"
#: crates/pdfs-gui/src/app/pages/status.rs:1039
#: crates/pdfs-gui/src/app/pages/status.rs:1040
#, rust-format
msgid "{n} file finished transferring."
msgid_plural "{n} files finished transferring."
@@ -4662,27 +4715,27 @@ msgstr[1] "{n} bestanden zijn klaar met overdragen."
#. Translators: a background job's progress. {title} is the job, such as
#. "Scanning Photos"; {done} and {total} are counts.
#: crates/pdfs-gui/src/app/pages/status.rs:1117
#: crates/pdfs-gui/src/app/pages/status.rs:1118
#, rust-format
msgid "{title} — {done} of {total}"
msgstr "{title} — {done} van {total}"
#. Translators: a background job's progress. {title} is the job, {detail}
#. what it is working on; {done} and {total} are counts.
#: crates/pdfs-gui/src/app/pages/status.rs:1120
#: crates/pdfs-gui/src/app/pages/status.rs:1121
#, rust-format
msgid "{title} — {detail} ({done} of {total})"
msgstr "{title} — {detail} ({done} van {total})"
#. Translators: a background job still running. {title} is the job.
#: crates/pdfs-gui/src/app/pages/status.rs:1122
#: crates/pdfs-gui/src/app/pages/status.rs:1123
#, rust-format
msgid "{title}…"
msgstr "{title}…"
#. Translators: a background job still running. {title} is the job,
#. {detail} what it is working on.
#: crates/pdfs-gui/src/app/pages/status.rs:1125
#: crates/pdfs-gui/src/app/pages/status.rs:1126
#, rust-format
msgid "{title} — {detail}…"
msgstr "{title} — {detail}…"
@@ -4690,7 +4743,7 @@ msgstr "{title} — {detail}…"
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
#. file name, {done} the size moved so far and {speed} a size such as
#. "1.2 MiB"; "/s" means per second.
#: crates/pdfs-gui/src/app/pages/status.rs:1154
#: crates/pdfs-gui/src/app/pages/status.rs:1155
#, rust-format
msgid "{arrow} {name} — {done} ({speed}/s)"
msgstr "{arrow} {name} — {done} ({speed}/s)"
@@ -4698,117 +4751,117 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
#. file name, {done} and {total} sizes and {speed} a size such as
#. "1.2 MiB"; "/s" means per second.
#: crates/pdfs-gui/src/app/pages/status.rs:1162
#: crates/pdfs-gui/src/app/pages/status.rs:1163
#, rust-format
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
msgstr "{arrow} {name} — {done} van {total} ({speed}/s)"
#: crates/pdfs-gui/src/app/pages/status.rs:1254
#: crates/pdfs-gui/src/app/pages/status.rs:1255
#, rust-format
msgid "{used} cached — no limit set"
msgstr "{used} in cache — geen limiet ingesteld"
#: crates/pdfs-gui/src/app/pages/status.rs:1260
#: crates/pdfs-gui/src/app/pages/status.rs:1261
#, rust-format
msgid "{used} of {limit} used"
msgstr "{used} van {limit} gebruikt"
#: crates/pdfs-gui/src/app/pages/status.rs:1328
#: crates/pdfs-gui/src/app/pages/status.rs:1329
#, rust-format
msgid "{queued} · resumes {time}"
msgstr "{queued} · hervat {time}"
#. Translators: {time} is when syncing resumes, such as "at 14:30"
#. or "Tue 09:00".
#: crates/pdfs-gui/src/app/pages/status.rs:1333
#: crates/pdfs-gui/src/app/pages/status.rs:1334
#, rust-format
msgid "Resumes {time}"
msgstr "Hervat {time}"
#: crates/pdfs-gui/src/app/pages/status.rs:1335
#: crates/pdfs-gui/src/app/pages/status.rs:1336
msgid "Until you resume"
msgstr "Totdat je hervat"
#: crates/pdfs-gui/src/app/pages/status.rs:1342 crates/pdfs-gui/src/main.rs:239
#: crates/pdfs-gui/src/app/pages/status.rs:1343 crates/pdfs-gui/src/main.rs:248
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
msgstr[0] "{n} wijziging vereist aandacht"
msgstr[1] "{n} wijzigingen vereisen aandacht"
#: crates/pdfs-gui/src/app/pages/status.rs:1352
#: crates/pdfs-gui/src/app/pages/status.rs:1353
#: crates/pdfs-gui/src/app/widgets/details.rs:108
msgctxt "state"
msgid "Offline"
msgstr "Offline"
#: crates/pdfs-gui/src/app/pages/status.rs:1353
#: crates/pdfs-gui/src/app/pages/status.rs:1354
msgid "Cached files only"
msgstr "Alleen bestanden in cache"
#: crates/pdfs-gui/src/app/pages/status.rs:1358
#: crates/pdfs-gui/src/app/pages/status.rs:1359
msgctxt "state"
msgid "Syncing"
msgstr "Synchroniseren"
#: crates/pdfs-gui/src/app/pages/status.rs:1364
#: crates/pdfs-gui/src/app/pages/status.rs:1365
msgid "Up to date"
msgstr "Bijgewerkt"
#: crates/pdfs-gui/src/app/pages/status.rs:1371
#: crates/pdfs-gui/src/app/pages/status.rs:1372
#: crates/pdfs-gui/src/hud/mod.rs:608 crates/pdfs-gui/src/hud/mod.rs:622
msgid "Proton Drive isn't running"
msgstr "Proton Drive draait niet"
#: crates/pdfs-gui/src/app/pages/status.rs:1376
#: crates/pdfs-gui/src/app/pages/status.rs:1377
msgid "Not responding"
msgstr "Reageert niet"
#: crates/pdfs-gui/src/app/pages/status.rs:1377
#: crates/pdfs-gui/src/app/pages/status.rs:1378
msgid "Proton Drive is taking too long to answer"
msgstr "Proton Drive doet er te lang over om te antwoorden"
#. Translators: stands in for a time that could not be read, as in
#. "Resumes later".
#: crates/pdfs-gui/src/app/pages/status.rs:1415
#: crates/pdfs-gui/src/app/pages/status.rs:1430
#: crates/pdfs-gui/src/app/pages/status.rs:1416
#: crates/pdfs-gui/src/app/pages/status.rs:1431
msgid "later"
msgstr "later"
#. Translators: strftime format for a time later today, such as "at 14:30".
#: crates/pdfs-gui/src/app/pages/status.rs:1419
#: crates/pdfs-gui/src/app/pages/status.rs:1420
msgid "at %H:%M"
msgstr "om %H:%M"
#. Translators: strftime format for a time within the next week, such as
#. "Tue 09:00".
#: crates/pdfs-gui/src/app/pages/status.rs:1423
#: crates/pdfs-gui/src/app/pages/status.rs:1424
msgid "%a %H:%M"
msgstr "%a %H:%M"
#. Translators: strftime format for a date further ahead, such as "23 Sep".
#: crates/pdfs-gui/src/app/pages/status.rs:1426
#: crates/pdfs-gui/src/app/pages/status.rs:1427
msgid "%e %b"
msgstr "%e %b"
#: crates/pdfs-gui/src/app/pages/status.rs:1456
#: crates/pdfs-gui/src/app/pages/status.rs:1457
msgid "No files kept offline"
msgstr "Geen offline bewaarde bestanden"
#: crates/pdfs-gui/src/app/pages/status.rs:1458
#: crates/pdfs-gui/src/app/pages/status.rs:1459
msgid "Right-click a file and choose “Make available offline”."
msgstr "Klik met rechts op een bestand en kies “Offline beschikbaar maken”."
#: crates/pdfs-gui/src/app/pages/status.rs:1509
#: crates/pdfs-gui/src/app/pages/status.rs:1516
#: crates/pdfs-gui/src/app/pages/status.rs:1510
#: crates/pdfs-gui/src/app/pages/status.rs:1517
msgid "Couldn't make it online only"
msgstr "Kon het niet alleen online maken"
#: crates/pdfs-gui/src/app/pages/status.rs:1533
#: crates/pdfs-gui/src/app/pages/status.rs:1534
msgid "Show fewer"
msgstr "Minder tonen"
#: crates/pdfs-gui/src/app/pages/status.rs:1536
#: crates/pdfs-gui/src/app/pages/status.rs:1537
#, rust-format
msgid "Show all {n} file"
msgid_plural "Show all {n} files"
@@ -5868,40 +5921,45 @@ msgstr[1] "↑ {n} worden geüpload"
msgid "Proton Drive isn't responding"
msgstr "Proton Drive reageert niet"
#: crates/pdfs-gui/src/main.rs:172
#: crates/pdfs-gui/src/main.rs:173
#, rust-format
msgid "Signed in as {username} — locked"
msgstr "Aangemeld als {username} — vergrendeld"
#: crates/pdfs-gui/src/main.rs:181
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Aangemeld als {username} — niet verbonden"
#: crates/pdfs-gui/src/main.rs:177
#: crates/pdfs-gui/src/main.rs:186
msgid "Not signed in"
msgstr "Niet aangemeld"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:180
#: crates/pdfs-gui/src/main.rs:189
#, rust-format
msgid "Error: {error}"
msgstr "Fout: {error}"
#: crates/pdfs-gui/src/main.rs:201
#: crates/pdfs-gui/src/main.rs:210
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive gaf een onverwacht antwoord"
#: crates/pdfs-gui/src/main.rs:246
#: crates/pdfs-gui/src/main.rs:255
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Bijgewerkt in {mountpoint} ({n} vastgezet)"
msgstr[1] "Bijgewerkt in {mountpoint} ({n} vastgezet)"
#: crates/pdfs-gui/src/main.rs:253
#: crates/pdfs-gui/src/main.rs:262
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Synchroniseren — {queued} ({n} vastgezet)"
msgstr[1] "Synchroniseren — {queued} ({n} vastgezet)"
#: crates/pdfs-gui/src/main.rs:260
#: crates/pdfs-gui/src/main.rs:269
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -5909,52 +5967,52 @@ msgstr[0] "Offline — alleen bestanden in cache ({n} vastgezet)"
msgstr[1] "Offline — alleen bestanden in cache ({n} vastgezet)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:266
#: crates/pdfs-gui/src/main.rs:275
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:296
#: crates/pdfs-gui/src/main.rs:305
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} probleem — Bekijken"
msgstr[1] "{n} problemen — Bekijken"
#: crates/pdfs-gui/src/main.rs:402
#: crates/pdfs-gui/src/main.rs:411
msgid "Sign In…"
msgstr "Aanmelden…"
#: crates/pdfs-gui/src/main.rs:403
#: crates/pdfs-gui/src/main.rs:412
msgid "Open Proton Drive"
msgstr "Proton Drive openen"
#: crates/pdfs-gui/src/main.rs:409
#: crates/pdfs-gui/src/main.rs:418
msgid "Open Folder"
msgstr "Map openen"
#: crates/pdfs-gui/src/main.rs:421
#: crates/pdfs-gui/src/main.rs:430
msgid "Resume Sync"
msgstr "Synchronisatie hervatten"
#: crates/pdfs-gui/src/main.rs:423
#: crates/pdfs-gui/src/main.rs:432
msgid "Pause Sync"
msgstr "Synchronisatie pauzeren"
#: crates/pdfs-gui/src/main.rs:442
#: crates/pdfs-gui/src/main.rs:451
msgid "Connect"
msgstr "Verbinden"
#: crates/pdfs-gui/src/main.rs:449
#: crates/pdfs-gui/src/main.rs:458
msgid "Hide Tray Icon"
msgstr "Pictogram in systeemvak verbergen"
#: crates/pdfs-gui/src/main.rs:453
#: crates/pdfs-gui/src/main.rs:462
msgid "Stop Proton Drive…"
msgstr "Proton Drive stoppen…"
#: crates/pdfs-gui/src/main.rs:457
#: crates/pdfs-gui/src/main.rs:466
msgid "Quit"
msgstr "Afsluiten"