feat(cli,gui): sync with another computer's device

Two or more computers can now sync the same folders through one device in
Proton Drive. `pdfs devices join UID` and "Sync With This Computer…" on
another computer's row adopt that device as this machine's and then offer its
folders for syncing here, like a restore. Unlike "Continue This Backup Here",
the other computer goes on syncing, and the confirmation says that changes
and deletions on one reach the other.

Translated into every shipped language.
This commit is contained in:
nvrl committed 2026-10-16 16:04:26 +02:00
1 parent 950056b48d
commit 7a0f1ebd6f
11 files changed
+1207 -747

No files matched your search

+118 -83
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 3.5.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-16 12:29+0200\n"
"POT-Creation-Date: 2026-10-16 16:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -93,7 +93,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/main.rs:783
#: crates/pdfs-gui/src/app/pages/devices.rs:140
#: crates/pdfs-gui/src/app/pages/devices.rs:489
#: crates/pdfs-gui/src/app/pages/devices.rs:493
msgid "Computers"
msgstr ""
@@ -222,12 +222,13 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:1907
#: crates/pdfs-gui/src/app/pages/browser.rs:1983
#: crates/pdfs-gui/src/app/pages/browser.rs:2396
#: crates/pdfs-gui/src/app/pages/devices.rs:792
#: crates/pdfs-gui/src/app/pages/devices.rs:945
#: crates/pdfs-gui/src/app/pages/devices.rs:983
#: crates/pdfs-gui/src/app/pages/devices.rs:1035
#: crates/pdfs-gui/src/app/pages/devices.rs:1079
#: crates/pdfs-gui/src/app/pages/devices.rs:1119
#: crates/pdfs-gui/src/app/pages/devices.rs:796
#: crates/pdfs-gui/src/app/pages/devices.rs:949
#: crates/pdfs-gui/src/app/pages/devices.rs:987
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
#: crates/pdfs-gui/src/app/pages/devices.rs:1083
#: crates/pdfs-gui/src/app/pages/devices.rs:1123
#: crates/pdfs-gui/src/app/pages/devices.rs:1186
#: crates/pdfs-gui/src/app/pages/locations.rs:850
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
#: crates/pdfs-gui/src/app/pages/locations.rs:1531
@@ -274,7 +275,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1396
#: crates/pdfs-gui/src/app/pages/browser.rs:974
#: crates/pdfs-gui/src/app/pages/devices.rs:555
#: crates/pdfs-gui/src/app/pages/devices.rs:559
#: crates/pdfs-gui/src/app/pages/shared.rs:581
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:528
#: crates/pdfs-gui/src/app/pages/trash.rs:246
@@ -321,7 +322,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/albums.rs:298
#: crates/pdfs-gui/src/app/pages/browser.rs:1886
#: crates/pdfs-gui/src/app/pages/browser.rs:1908
#: crates/pdfs-gui/src/app/pages/devices.rs:984
#: crates/pdfs-gui/src/app/pages/devices.rs:988
#: crates/pdfs-gui/src/app/widgets/details.rs:161
msgid "Rename"
msgstr ""
@@ -646,7 +647,7 @@ msgid "Couldn't add a sync folder"
msgstr ""
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
#: crates/pdfs-gui/src/app/pages/devices.rs:827
#: crates/pdfs-gui/src/app/pages/devices.rs:831
msgid "Couldn't restore folders"
msgstr ""
@@ -1212,11 +1213,12 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:1863
#: crates/pdfs-gui/src/app/pages/browser.rs:2330
#: crates/pdfs-gui/src/app/pages/browser.rs:2506
#: crates/pdfs-gui/src/app/pages/devices.rs:695
#: crates/pdfs-gui/src/app/pages/devices.rs:735
#: crates/pdfs-gui/src/app/pages/devices.rs:888
#: crates/pdfs-gui/src/app/pages/devices.rs:1156
#: crates/pdfs-gui/src/app/pages/devices.rs:1185
#: crates/pdfs-gui/src/app/pages/devices.rs:699
#: crates/pdfs-gui/src/app/pages/devices.rs:739
#: crates/pdfs-gui/src/app/pages/devices.rs:892
#: crates/pdfs-gui/src/app/pages/devices.rs:1162
#: crates/pdfs-gui/src/app/pages/devices.rs:1223
#: crates/pdfs-gui/src/app/pages/devices.rs:1252
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
#: crates/pdfs-gui/src/app/pages/locations.rs:577
#: crates/pdfs-gui/src/app/pages/locations.rs:824
@@ -1248,7 +1250,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/albums.rs:206
#: crates/pdfs-gui/src/app/pages/browser.rs:854
#: crates/pdfs-gui/src/app/pages/devices.rs:531
#: crates/pdfs-gui/src/app/pages/devices.rs:535
#: crates/pdfs-gui/src/app/pages/photos.rs:3191
#: crates/pdfs-gui/src/app/pages/shared.rs:536
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476
@@ -1262,7 +1264,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/albums.rs:212
#: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/devices.rs:409
#: crates/pdfs-gui/src/app/pages/devices.rs:452
#: crates/pdfs-gui/src/app/pages/devices.rs:456
msgid "Rename…"
msgstr ""
@@ -1530,7 +1532,7 @@ msgstr ""
#. Translators: {n} is how many items are selected: files and folders in My Files, photos here.
#: crates/pdfs-gui/src/app/pages/browser.rs:539
#: crates/pdfs-gui/src/app/pages/browser.rs:942
#: crates/pdfs-gui/src/app/pages/devices.rs:540
#: crates/pdfs-gui/src/app/pages/devices.rs:544
#: crates/pdfs-gui/src/app/pages/photos.rs:1989
#: crates/pdfs-gui/src/app/pages/shared.rs:560
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:509
@@ -1699,7 +1701,7 @@ msgid "New Folder…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:970
#: crates/pdfs-gui/src/app/pages/devices.rs:551
#: crates/pdfs-gui/src/app/pages/devices.rs:555
#: crates/pdfs-gui/src/app/pages/shared.rs:577
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:524
#: crates/pdfs-gui/src/app/pages/trash.rs:242
@@ -1846,7 +1848,7 @@ msgid "{status}. {message}"
msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:1890
#: crates/pdfs-gui/src/app/pages/devices.rs:977
#: crates/pdfs-gui/src/app/pages/devices.rs:981
msgid "New name"
msgstr ""
@@ -1876,7 +1878,7 @@ msgid "Choose the folder to move into."
msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:1984
#: crates/pdfs-gui/src/app/pages/devices.rs:1120
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
msgid "Move Here"
msgstr ""
@@ -2105,153 +2107,157 @@ msgid "Restore to This Computer…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:447
msgid "Sync With This Computer…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:451
msgid "Move to This Computer…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:459
#: crates/pdfs-gui/src/app/pages/devices.rs:463
msgid "Continue This Backup Here…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:464
#: crates/pdfs-gui/src/app/pages/devices.rs:468
#: crates/pdfs-gui/src/app/pages/shared.rs:892
msgid "Remove…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:568
#: crates/pdfs-gui/src/app/pages/devices.rs:572
#, rust-format
msgid "{platform} · last backup {time}"
msgstr ""
#. Translators: {platform} is the device's platform, such as "Linux".
#: crates/pdfs-gui/src/app/pages/devices.rs:572
#: crates/pdfs-gui/src/app/pages/devices.rs:576
#, rust-format
msgid "{platform} · no backups yet"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:588
#: crates/pdfs-gui/src/app/pages/devices.rs:592
msgid "No folders backed up yet"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:591
#: crates/pdfs-gui/src/app/pages/devices.rs:595
#, rust-format
msgid "{n} folder backed up"
msgid_plural "{n} folders backed up"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/app/pages/devices.rs:604
#: crates/pdfs-gui/src/app/pages/devices.rs:608
#, rust-format
msgid "{folders} · {n} needs attention"
msgid_plural "{folders} · {n} need attention"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/app/pages/devices.rs:615
#: crates/pdfs-gui/src/app/pages/devices.rs:619
msgid "syncing…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:616
#: crates/pdfs-gui/src/app/pages/devices.rs:620
msgid "sync error"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:617
#: crates/pdfs-gui/src/app/pages/devices.rs:621
msgid "needs attention"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:618
#: crates/pdfs-gui/src/app/pages/devices.rs:622
msgid "up to date"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:630
#: crates/pdfs-gui/src/app/pages/devices.rs:634
msgid "checking for changes…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:633
#: crates/pdfs-gui/src/app/pages/devices.rs:637
#, rust-format
msgid "checking for changes — {done} of {total}"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:645
#: crates/pdfs-gui/src/app/pages/devices.rs:649
#, rust-format
msgid "syncing {done} of {total}"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:651
#: crates/pdfs-gui/src/app/pages/devices.rs:655
#, rust-format
msgid "syncing {file} — {done} of {total}"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:663
#: crates/pdfs-gui/src/app/pages/devices.rs:667
msgid "Add Folder to Sync"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:687
#: crates/pdfs-gui/src/app/pages/devices.rs:691
#: crates/pdfs-gui/src/app/pages/locations.rs:1636
msgid "Syncing folder…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:690
#: crates/pdfs-gui/src/app/pages/devices.rs:694
#: crates/pdfs-gui/src/app/pages/devices.rs:698
msgid "Couldn't add folder"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:728
#: crates/pdfs-gui/src/app/pages/devices.rs:734
#: crates/pdfs-gui/src/app/pages/devices.rs:732
#: crates/pdfs-gui/src/app/pages/devices.rs:738
msgid "Couldn't list folders to restore"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:760
#: crates/pdfs-gui/src/app/pages/devices.rs:764
msgid ""
"Tick the folders to sync to this machine, and adjust where each one should "
"live."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:786
#: crates/pdfs-gui/src/app/pages/devices.rs:790
msgid "Restore Folders"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:793
#: crates/pdfs-gui/src/app/pages/devices.rs:797
msgid "Restore"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:826
#: crates/pdfs-gui/src/app/pages/devices.rs:830
msgid "Restoring folders…"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:838
#: crates/pdfs-gui/src/app/pages/devices.rs:842
#, rust-format
msgid ""
"These folders are backed up from “{name}”. Restored folders keep syncing "
"with that computer's copy."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:841
#: crates/pdfs-gui/src/app/pages/devices.rs:845
msgid "These folders are backed up under this computer in Proton Drive."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:850
#: crates/pdfs-gui/src/app/pages/devices.rs:854
#, rust-format
msgid "Nothing to restore — “{name}”'s folders are all synced here."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:853
#: crates/pdfs-gui/src/app/pages/devices.rs:857
msgid "Nothing to restore — this computer's folders are all synced here."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:877
#: crates/pdfs-gui/src/app/pages/devices.rs:881
msgid "Folder will switch to online only"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:879
#: crates/pdfs-gui/src/app/pages/devices.rs:883
msgid "Folder will download and stay synced"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:883
#: crates/pdfs-gui/src/app/pages/devices.rs:887
#: crates/pdfs-gui/src/app/pages/devices.rs:891
msgid "Couldn't change mode"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:919
#: crates/pdfs-gui/src/app/pages/devices.rs:923
#, rust-format
msgid ""
"Stop syncing “{path}”?\n"
@@ -2262,7 +2268,7 @@ msgid ""
"finish before removing it."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:925
#: crates/pdfs-gui/src/app/pages/devices.rs:929
#, rust-format
msgid ""
"Stop syncing “{path}”?\n"
@@ -2271,68 +2277,68 @@ msgid ""
"whether to also delete the copy in Proton Drive."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:930
#: crates/pdfs-gui/src/app/pages/devices.rs:934
msgid "Stop Syncing Folder?"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:935
#: crates/pdfs-gui/src/app/pages/devices.rs:939
msgid "Also delete from Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:937
#: crates/pdfs-gui/src/app/pages/devices.rs:941
msgid "Deletes the only copy of these files."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:939
#: crates/pdfs-gui/src/app/pages/devices.rs:943
msgid "The local copy is unaffected."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:946
#: crates/pdfs-gui/src/app/pages/devices.rs:950
msgid "Stop Syncing"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:959
#: crates/pdfs-gui/src/app/pages/devices.rs:963
msgid "Stopped syncing folder"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:960
#: crates/pdfs-gui/src/app/pages/devices.rs:964
msgid "Couldn't stop syncing the folder"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:971
#: crates/pdfs-gui/src/app/pages/devices.rs:975
msgid "Rename Computer"
msgstr ""
#. Translators: {name} is the computer's current name.
#: crates/pdfs-gui/src/app/pages/devices.rs:973
#: crates/pdfs-gui/src/app/pages/devices.rs:977
#, rust-format
msgid "Rename “{name}”."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:998
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
#: crates/pdfs-gui/src/app/pages/devices.rs:1002
#: crates/pdfs-gui/src/app/pages/devices.rs:1014
msgid "Couldn't rename the computer"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:999
#: crates/pdfs-gui/src/app/pages/devices.rs:1003
msgid "A name is required."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1009
#: crates/pdfs-gui/src/app/pages/devices.rs:1013
msgid "Computer renamed"
msgstr ""
#. Translators: {name} is the computer's name, which the user must type.
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
#: crates/pdfs-gui/src/app/pages/devices.rs:1026
#, rust-format
msgid "Type “{name}” to confirm"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1027
#: crates/pdfs-gui/src/app/pages/devices.rs:1031
msgid "Remove Computer?"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1030
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
#, rust-format
msgid ""
"Remove “{name}” from this account?\n"
@@ -2342,25 +2348,25 @@ msgid ""
"here."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1036
#: crates/pdfs-gui/src/app/pages/devices.rs:1040
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:567
msgid "Remove"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1053
#: crates/pdfs-gui/src/app/pages/devices.rs:1057
msgid "Computer removed"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1054
#: crates/pdfs-gui/src/app/pages/devices.rs:1058
msgid "Couldn't remove the computer"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1072
#: crates/pdfs-gui/src/app/pages/devices.rs:1076
msgid "Continue This Backup Here?"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1075
#: crates/pdfs-gui/src/app/pages/devices.rs:1079
#, rust-format
msgid ""
"This computer takes over the backup of “{name}”, for example after a "
@@ -2372,25 +2378,54 @@ msgid ""
"syncing."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1080
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
msgid "Continue Here"
msgstr ""
#. Translators: {name} is the name of the computer whose backup this one took over.
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
#, rust-format
msgid "Now backing up as “{name}”"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1096
#: crates/pdfs-gui/src/app/pages/devices.rs:1100
msgid "Couldn't continue that backup here"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1112
#: crates/pdfs-gui/src/app/pages/devices.rs:1116
msgid "Sync With This Computer?"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1119
#, rust-format
msgid ""
"This computer and “{name}” keep the same folders in step. A change or a "
"deletion on one reaches the other.\n"
"\n"
"New synced folders on this computer go under “{name}” in Proton Drive. "
"Folders already synced here stay where they are. Next you choose which of "
"its folders to sync here."
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
msgid "Sync Here"
msgstr ""
#. Translators: {name} is the name of the other computer this one now syncs with.
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
#, rust-format
msgid "Now syncing with “{name}”"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1147
msgid "Couldn't sync with that computer"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1179
msgid "Move Backup to This Computer?"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1115
#: crates/pdfs-gui/src/app/pages/devices.rs:1182
#, rust-format
msgid ""
"The folders backed up by “{name}” move into this computer's backup in Proton "
@@ -2401,12 +2436,12 @@ msgid ""
msgstr ""
#. Translators: {name} is the name of the computer whose folders moved to this one.
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
#, rust-format
msgid "Moved the backup of “{name}”"
msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:1141
#: crates/pdfs-gui/src/app/pages/devices.rs:1208
msgid "Couldn't move that backup"
msgstr ""