From a8ed6060afcdafde27237b1dc8951461209f9559 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 5 Oct 2026 01:06:03 +0200 Subject: [PATCH] feat(core,fuse,gui): show a sync issue on its node in the file browser A refused change was only on the Sync page. A folder listing now carries each node's issue (by local id, so a file not yet on Drive has it too), and the browser's badge ranks it first, folders included, with the issue's explanation as its tooltip. The event sampler publishes Files when the set of issues changes, so the badge comes and goes with it. --- crates/pdfs-cli/src/main.rs | 1 + crates/pdfs-core/src/control.rs | 4 ++ crates/pdfs-core/src/db/ops.rs | 20 +++++++ crates/pdfs-core/src/db/tests.rs | 24 +++++++++ crates/pdfs-fuse/src/events.rs | 18 +++++-- crates/pdfs-fuse/src/lib.rs | 16 ++++-- crates/pdfs-fuse/src/sharing.rs | 1 + crates/pdfs-fuse/src/sim/daemon.rs | 43 ++++++++++++++- crates/pdfs-gui/resources/style.css | 1 + crates/pdfs-gui/src/app/pages/browser.rs | 30 +++++++++-- crates/pdfs-gui/src/app/pages/locations.rs | 2 +- crates/pdfs-gui/src/app/pages/shared_by_me.rs | 1 + crates/pdfs-gui/src/app/pages/trash.rs | 1 + docs/CHANGELOG.md | 2 + docs/MILESTONE-3.0.0-STATUS.md | 7 +-- docs/USER_GUIDE.md | 2 + po/de.po | 52 +++++++++---------- po/en_GB.po | 52 +++++++++---------- po/es.po | 52 +++++++++---------- po/fr.po | 52 +++++++++---------- po/it.po | 52 +++++++++---------- po/nl.po | 52 +++++++++---------- po/pdfs.pot | 52 +++++++++---------- po/pl.po | 52 +++++++++---------- po/pt_BR.po | 52 +++++++++---------- 25 files changed, 390 insertions(+), 251 deletions(-) diff --git a/crates/pdfs-cli/src/main.rs b/crates/pdfs-cli/src/main.rs index 9e8c4ea..425a03a 100644 --- a/crates/pdfs-cli/src/main.rs +++ b/crates/pdfs-cli/src/main.rs @@ -3554,6 +3554,7 @@ mod login_wait_tests { shared_by_unverified: false, trashed_at: 0, trashed_from: None, + issue: None, }; assert_eq!(shared_by_line(&entry), None, "no invitation, no line"); entry.shared_by = "alice@proton.me".into(); diff --git a/crates/pdfs-core/src/control.rs b/crates/pdfs-core/src/control.rs index 610438b..ea8794c 100644 --- a/crates/pdfs-core/src/control.rs +++ b/crates/pdfs-core/src/control.rs @@ -1296,6 +1296,10 @@ pub struct DirEntry { /// not known, and for anything not in the trash. #[serde(default)] pub trashed_from: Option, + /// Why Drive refused a change queued on the node, for a [`Request::ListDir`] + /// entry; `None` otherwise. + #[serde(default)] + pub issue: Option, } /// One hit in a [`Request::Search`] result. Like [`DirEntry`] but carries the diff --git a/crates/pdfs-core/src/db/ops.rs b/crates/pdfs-core/src/db/ops.rs index 4f9c790..9b509e7 100644 --- a/crates/pdfs-core/src/db/ops.rs +++ b/crates/pdfs-core/src/db/ops.rs @@ -1371,6 +1371,26 @@ impl Db { Ok(rows) } + /// The issue each node with a refused change has, by local id: what the + /// file browser shows on the node itself. + pub fn node_issues(&self) -> Result> { + let conn = self.read(); + let mut stmt = conn.prepare( + "SELECT COALESCE(o.lid, n.lid), o.issue FROM pending_op o + LEFT JOIN nodes n ON o.lid IS NULL AND n.uid = o.uid + WHERE o.issue IS NOT NULL", + )?; + let rows = stmt + .query_map([], |r| Ok((r.get::<_, Option>(0)?, r.get(1)?)))? + .filter_map(|row| match row { + Ok((Some(lid), issue)) => Some(Ok((lid, issue))), + Ok((None, _)) => None, + Err(e) => Some(Err(e)), + }) + .collect::>()?; + Ok(rows) + } + /// Make a create due again if it was renamed or moved /// ([`Db::rewrite_op_target`]) while the attempt that just failed was on /// the wire, `parent_uid` and `name` being what that attempt sent. What it diff --git a/crates/pdfs-core/src/db/tests.rs b/crates/pdfs-core/src/db/tests.rs index 11363fc..9ae448f 100644 --- a/crates/pdfs-core/src/db/tests.rs +++ b/crates/pdfs-core/src/db/tests.rs @@ -6988,6 +6988,30 @@ fn an_op_with_an_issue_counts_as_failing_at_once() { assert_eq!(db.pending_ops().unwrap().len(), 2); } +/// The browser shows an issue on the node it is about, which it knows by +/// local id, under either uid. +#[test] +fn a_refused_change_names_its_node_by_local_id() { + let db = Db::open_in_memory().unwrap(); + db.upsert_nodes(&[ + folder("root", None, "My Files"), + file("a", "root", "a.bin", 1), + file("b", "root", "b.bin", 1), + ]) + .unwrap(); + let refused = queued_op(&db, &uid("a").to_string(), 1, 90_000); + queued_op(&db, &uid("b").to_string(), 1, 90_000); + let gone = queued_op(&db, "vol~nowhere", 1, 90_000); + db.set_op_issue(refused, Some("quota")).unwrap(); + db.set_op_issue(gone, Some("missing")).unwrap(); + + let lid = db.lid_of(&uid("a").to_string()).unwrap().unwrap(); + assert_eq!( + db.node_issues().unwrap(), + std::collections::HashMap::from([(lid, "quota".to_string())]) + ); +} + #[test] fn retry_all_touches_only_ops_that_have_failed() { let db = Db::open_in_memory().unwrap(); diff --git a/crates/pdfs-fuse/src/events.rs b/crates/pdfs-fuse/src/events.rs index dd32c2c..1e6db68 100644 --- a/crates/pdfs-fuse/src/events.rs +++ b/crates/pdfs-fuse/src/events.rs @@ -9,7 +9,7 @@ //! through one place (the status, transfers, sync progress) and publishes them //! when they differ. -use std::collections::BTreeSet; +use std::collections::{BTreeSet, HashMap}; use std::sync::Arc; use std::time::Duration; @@ -153,13 +153,15 @@ pub(crate) fn transfers_line(items: Vec, jobs: Vec) -> Op /// Watch what changes without a single place to publish it from, and publish it /// when it differs from the last look: the status (queue counts, cache use, -/// online, pause), the transfers snapshot, and the synced folders with their -/// live progress. Looks only while someone is subscribed. +/// online, pause), the transfers snapshot, the synced folders with their +/// live progress, and which nodes have a sync issue. Looks only while someone +/// is subscribed. pub(crate) fn run_event_sampler(core: Core, username: String, mountpoint: std::path::PathBuf) { let mut transfers: Option> = None; let mut status: Option = None; let mut queue: Option = None; let mut locations: Option = None; + let mut issues: Option> = None; let mut tick = 0u32; while core.shutdown.sleep(SAMPLE_INTERVAL) { if !core.events.has_subscribers() { @@ -169,6 +171,7 @@ pub(crate) fn run_event_sampler(core: Core, username: String, mountpoint: std::p status = None; queue = None; locations = None; + issues = None; continue; } let line = transfers_line(core.transfers.snapshot(), core.jobs_snapshot()); @@ -196,6 +199,15 @@ pub(crate) fn run_event_sampler(core: Core, username: String, mountpoint: std::p } queue = Some(queue_key); + // An issue shows on its node in the file browser: raised, cleared, + // landed or discarded, the listing is out of date. + if let Ok(now) = core.db.node_issues() { + if issues.as_ref().is_some_and(|last| *last != now) { + core.events.publish(&[Topic::Files]); + } + issues = Some(now); + } + if let Ok(now) = core.list_locations() { let key = serde_json::to_string(&now).unwrap_or_default(); if locations.as_ref().is_some_and(|last| *last != key) { diff --git a/crates/pdfs-fuse/src/lib.rs b/crates/pdfs-fuse/src/lib.rs index ffd159f..193b330 100644 --- a/crates/pdfs-fuse/src/lib.rs +++ b/crates/pdfs-fuse/src/lib.rs @@ -59,7 +59,7 @@ use pdfs_core::cache::{BLOCK_SIZE, Baseline, BlockGeometry, BlockSpan, ContentCa use pdfs_core::config::{AppDirs, SweepMode}; use pdfs_core::control::{ ActivityEntry, ActivityKind, DirEntry, ErrorKind, LocalHit, PhotoKind, PublicLinkInfo, - SearchFilters, SearchHit, SearchSource, SyncFolderInfo, SyncPhase, SyncProgress, + SearchFilters, SearchHit, SearchSource, SyncFolderInfo, SyncIssue, SyncPhase, SyncProgress, ThumbnailBuildStatus, Topic, TransferDirection, }; use pdfs_core::db::{ @@ -4324,29 +4324,31 @@ impl Core { self.settle_listing_sizes(ino); // Snapshot the listing, then drop the lock before touching the on-disk // pin registry so a slow disk read doesn't block FUSE metadata ops. - let rows: Vec<(String, bool, u64, i64, NodeUid)> = { + let rows: Vec<(String, bool, u64, i64, NodeUid, u64)> = { let st = self.state(); st.children .get(&ino) .map(|kids| { kids.iter() - .filter_map(|k| st.entries.get(k)) - .map(|e| { + .filter_map(|&k| st.entries.get(&k).map(|e| (k, e))) + .map(|(k, e)| { ( e.node.name.clone(), e.node.is_folder(), node_size(&e.node), e.node.modification_time, e.uid.clone(), + k, ) }) .collect() }) .unwrap_or_default() }; + let issues = self.db.node_issues().unwrap_or_default(); Ok(rows .into_iter() - .map(|(name, is_dir, size, modified, uid)| DirEntry { + .map(|(name, is_dir, size, modified, uid, ino)| DirEntry { name, is_dir, size, @@ -4365,6 +4367,9 @@ impl Core { shared_by_unverified: false, trashed_at: 0, trashed_from: None, + issue: state::ino_lid(ino) + .and_then(|lid| issues.get(&lid)) + .map(|issue| SyncIssue::parse(issue)), }) .collect()) } @@ -5247,6 +5252,7 @@ impl Core { shared_by: String::new(), shared_at: 0, shared_by_unverified: false, + issue: None, }) .collect()) } diff --git a/crates/pdfs-fuse/src/sharing.rs b/crates/pdfs-fuse/src/sharing.rs index 89d4f03..c4875ca 100644 --- a/crates/pdfs-fuse/src/sharing.rs +++ b/crates/pdfs-fuse/src/sharing.rs @@ -75,6 +75,7 @@ fn shared_entry_of(core: &Core, n: Node) -> DirEntry { shared_by_unverified, trashed_at: 0, trashed_from: None, + issue: None, } } diff --git a/crates/pdfs-fuse/src/sim/daemon.rs b/crates/pdfs-fuse/src/sim/daemon.rs index 1ffb298..ff4d962 100644 --- a/crates/pdfs-fuse/src/sim/daemon.rs +++ b/crates/pdfs-fuse/src/sim/daemon.rs @@ -278,7 +278,7 @@ pub(crate) fn wait_until(limit: Duration, mut done: impl FnMut() -> bool) -> boo mod tests { use super::*; use crate::sim::fake_drive::{Entry, FakeDrive, Faults}; - use pdfs_core::control::RefreshScope; + use pdfs_core::control::{RefreshScope, SyncIssue}; use std::collections::BTreeMap; #[test] @@ -698,6 +698,47 @@ mod tests { let _ = std::fs::remove_dir_all(&dir); } + #[test] + #[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"] + fn a_refused_change_shows_on_its_node_until_it_is_discarded() { + let drive = FakeDrive::new(); + let dir = scratch("issue-on-node"); + let daemon = Daemon::start(&dir, drive.client(1, Faults::lan())).unwrap(); + let mnt = daemon.mountpoint.clone(); + drive.set_quota(10); + std::fs::write(mnt.join("big.bin"), [0u8; 64]).unwrap(); + std::fs::write(mnt.join("small.txt"), b"ok").unwrap(); + let list = || { + let path = mnt.to_string_lossy().into_owned(); + match daemon.request(&Request::ListDir { path }) { + Ok(Response::Entries { entries }) => entries + .into_iter() + .filter(|entry| entry.name.contains('.')) + .map(|entry| (entry.name, entry.issue)) + .collect::>(), + other => panic!("the daemon did not list the root: {other:?}"), + } + }; + let refused = BTreeMap::from([ + ("big.bin".to_string(), Some(SyncIssue::Quota)), + ("small.txt".to_string(), None), + ]); + assert!( + wait_until(Duration::from_secs(30), || list() == refused), + "{:?} {:?}", + list(), + daemon.pending() + ); + + let op = daemon.pending().unwrap().remove(0); + let reply = daemon.request(&Request::DiscardPendingOp { id: op.id }); + assert!(matches!(reply, Ok(Response::Ok { .. })), "{reply:?}"); + assert_eq!(list(), BTreeMap::from([("small.txt".to_string(), None)])); + + assert!(matches!(daemon.stop(), Ok(MountOutcome::Shutdown))); + let _ = std::fs::remove_dir_all(&dir); + } + #[test] #[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"] fn a_folder_whose_mkdir_is_queued_lists_after_a_refresh() { diff --git a/crates/pdfs-gui/resources/style.css b/crates/pdfs-gui/resources/style.css index 20b42cd..957d114 100644 --- a/crates/pdfs-gui/resources/style.css +++ b/crates/pdfs-gui/resources/style.css @@ -46,6 +46,7 @@ .badge-pinned { color: var(--success-color); } .badge-cached { color: var(--success-color); } .badge-cloud { color: color-mix(in srgb, currentColor 55%, transparent); } +.badge-issue { color: var(--error-color); } .browser-statusbar { background-color: alpha(currentColor, 0.025); } scale.browser-status-meter trough { min-width: 104px; min-height: 6px; } .bulk-bar { padding: 6px 8px; border-radius: 12px; background: color-mix(in srgb, var(--accent-bg-color) 12%, transparent); } diff --git a/crates/pdfs-gui/src/app/pages/browser.rs b/crates/pdfs-gui/src/app/pages/browser.rs index 8b570f3..aff3264 100644 --- a/crates/pdfs-gui/src/app/pages/browser.rs +++ b/crates/pdfs-gui/src/app/pages/browser.rs @@ -2495,9 +2495,13 @@ pub(crate) fn start_upload(ui: &Rc, sources: Vec) { } /// The sync-state badge for an entry: `(icon, css-class)`, or `None` for folders -/// (which carry no per-file cache state). Pinned (kept offline) ranks above merely +/// (which carry no per-file cache state). A sync issue ranks first, on folders +/// too: the change waits for the user. Pinned (kept offline) ranks above merely /// cached (downloaded, evictable); everything else is online-only. pub(crate) fn badge_for(entry: &DirEntry) -> Option<(&'static str, &'static str)> { + if entry.issue.is_some() { + return Some(("dialog-warning-symbolic", "badge-issue")); + } if entry.is_dir { return None; } @@ -2513,9 +2517,11 @@ pub(crate) fn badge_for(entry: &DirEntry) -> Option<(&'static str, &'static str) /// Paint `badge` to reflect the entry's sync state (see [`badge_for`]). Clears any /// prior colour class first, since list factories recycle cells. pub(crate) fn apply_badge(badge: >k4::Image, entry: &DirEntry) { - for class in ["badge-pinned", "badge-cached", "badge-cloud"] { + for class in ["badge-pinned", "badge-cached", "badge-cloud", "badge-issue"] { badge.remove_css_class(class); } + let issue = entry.issue.map(super::locations::issue_text); + badge.set_tooltip_text(issue.as_deref()); match badge_for(entry) { Some((icon, class)) => { badge.set_icon_name(Some(icon)); @@ -2915,6 +2921,7 @@ pub(crate) fn repaint_search(ui: &Rc, hits: &[SearchHit]) { shared_by_unverified: false, trashed_at: 0, trashed_from: None, + issue: None, }) .collect(); sort_entries(&mut entries, ui.browser.view.get()); @@ -2952,11 +2959,11 @@ fn listing_summary(files: usize, folders: usize, file_bytes: u64) -> String { #[cfg(test)] mod tests { use super::{ - MoveTarget, hit_location, listing_summary, move_target_allowed, + MoveTarget, badge_for, hit_location, listing_summary, move_target_allowed, show_thumbnail_build_progress, sort_entries, }; use pdfs_core::config::{FileSort, FilesView}; - use pdfs_core::control::{DirEntry, ThumbnailBuildStatus}; + use pdfs_core::control::{DirEntry, SyncIssue, ThumbnailBuildStatus}; fn entry(name: &str, is_dir: bool, size: u64, modified: i64) -> DirEntry { DirEntry { @@ -2974,6 +2981,7 @@ mod tests { shared_by_unverified: false, trashed_at: 0, trashed_from: None, + issue: None, } } @@ -2981,6 +2989,20 @@ mod tests { entries.iter().map(|e| e.name.as_str()).collect() } + #[test] + fn a_sync_issue_shows_on_the_node_before_its_cache_state() { + let mut file = entry("a.txt", false, 1, 0); + file.pinned = true; + assert_eq!(badge_for(&file).unwrap().1, "badge-pinned"); + file.issue = Some(SyncIssue::Quota); + assert_eq!(badge_for(&file).unwrap().1, "badge-issue"); + + let mut folder = entry("d", true, 0, 0); + assert_eq!(badge_for(&folder), None); + folder.issue = Some(SyncIssue::Missing); + assert_eq!(badge_for(&folder).unwrap().1, "badge-issue"); + } + #[test] fn a_search_hit_location_is_its_parent_folder() { assert_eq!(hit_location("Work/Old/a.txt"), "Work/Old"); diff --git a/crates/pdfs-gui/src/app/pages/locations.rs b/crates/pdfs-gui/src/app/pages/locations.rs index 9f64dd5..5c98ad5 100644 --- a/crates/pdfs-gui/src/app/pages/locations.rs +++ b/crates/pdfs-gui/src/app/pages/locations.rs @@ -727,7 +727,7 @@ fn queue_row(ui: &Rc, op: &PendingOpInfo, now: i64) -> adw::ActionRow { /// What a sync issue means and what the user can do about it. The change stays /// queued either way. -fn issue_text(issue: SyncIssue) -> String { +pub(crate) fn issue_text(issue: SyncIssue) -> String { match issue { SyncIssue::Quota => gettext( "Your Proton Drive storage is full. Free up space or upgrade your plan, and this change uploads on its own.", diff --git a/crates/pdfs-gui/src/app/pages/shared_by_me.rs b/crates/pdfs-gui/src/app/pages/shared_by_me.rs index cc399de..225d57c 100644 --- a/crates/pdfs-gui/src/app/pages/shared_by_me.rs +++ b/crates/pdfs-gui/src/app/pages/shared_by_me.rs @@ -618,6 +618,7 @@ pub(crate) fn shared_item_as_entry(item: &SharedItem) -> DirEntry { shared_by_unverified: false, trashed_at: 0, trashed_from: None, + issue: None, } } diff --git a/crates/pdfs-gui/src/app/pages/trash.rs b/crates/pdfs-gui/src/app/pages/trash.rs index 591fd23..f1eb5cf 100644 --- a/crates/pdfs-gui/src/app/pages/trash.rs +++ b/crates/pdfs-gui/src/app/pages/trash.rs @@ -533,6 +533,7 @@ mod tests { shared_by_unverified: false, trashed_at, trashed_from: from.map(str::to_string), + issue: None, } } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d43994f..770f317 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -29,6 +29,8 @@ by its local id, in the queue, the stored tree and pins alike. - **Discard a queued change.** The Sync page's Discard button and `pdfs sync discard ` drop a change Drive will not take and undo it here: a new file or folder goes, anything else goes back to what Drive has. Export a file first to keep its content. +- **Sync issues show on the file.** A file or folder with a change Drive refused carries a + warning badge in the file browser, and its tooltip says what it means and what to do. ### Changed - **Making, renaming and deleting through the mount no longer waits for Drive.** A new folder, diff --git a/docs/MILESTONE-3.0.0-STATUS.md b/docs/MILESTONE-3.0.0-STATUS.md index 6da4b1a..025adb3 100644 --- a/docs/MILESTONE-3.0.0-STATUS.md +++ b/docs/MILESTONE-3.0.0-STATUS.md @@ -12,7 +12,7 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase - Fixes from the simulation and account runs since then: B125, B127, B130 and B141 to B181. - **Sync issues, first cut** (§6.2): refusals sorted into issues, shown at once in the app, tray and CLI; Export button and `pdfs sync export`; `pdfs sync issues`; Discard button and - `pdfs sync discard`. + `pdfs sync discard`; a warning badge on the node in the file browser. ## Phase 3: left for 3.0.0 @@ -32,8 +32,9 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase undo the local change it stood for: a node made here goes, a node Drive has goes back to what Drive has. Control request, `pdfs sync discard`, Discard button with a confirmation; translated in every catalog. - - [ ] Show the issue on the node itself (file browser emblem or status). Not in the first - cut. + - [x] Show the issue on the node itself: a folder listing carries each node's issue, and + the file browser shows a warning badge with what it means. The listing is published + again when the set of issues changes. 2. **Planner and executor (§5.4, §5.5)**: ops keyed by local id; remove `mint_local_uid`, `finish_create` and `adopt_real_uid`; a landing create sets `remote_uid` on its row. - [x] Queued ops carry `lid` and `parent_lid` (schema 39). The claim reads the parent's uid diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index 4850b20..2d00d0d 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -169,6 +169,8 @@ The version you do not keep goes to the Trash, so a wrong choice can be undone. - **Retry** a failed upload from **Sync → Overview**, or with `pdfs sync retry`. - **Discard** a change Proton Drive refused from the same list, or with `pdfs sync discard`: it is undone here and never sent. Export a file first to keep your version. +- A file or folder with a change Proton Drive refused carries a warning badge in **Files**; hover + it to see why. ## Photos diff --git a/po/de.po b/po/de.po index 3d3c28d..e179e40 100644 --- a/po/de.po +++ b/po/de.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: German\n" @@ -514,8 +514,8 @@ msgstr "Ansichtsoptionen" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -535,8 +535,8 @@ msgid "Couldn't read activity" msgstr "Aktivität konnte nicht gelesen werden" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1546,7 +1546,7 @@ msgid "Cancel thumbnail build" msgstr "Erstellen der Vorschaubilder abbrechen" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Nur diesen Ordner durchsuchen" @@ -1839,7 +1839,7 @@ msgstr "" "Der Proton-Drive-Dienst meldet keinen Fortschritt der Vorschaubilder mehr." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1932,7 +1932,7 @@ msgstr "Hier gibt es keine Ordner." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Verschieben fehlgeschlagen" @@ -2010,51 +2010,51 @@ msgctxt "verb" msgid "View" msgstr "Anzeigen" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Nach „{name}“ verschoben" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Dieser Ordner wird gelesen." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Ordner nicht verfügbar" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Dieser Ordner konnte nicht geöffnet werden" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Dieser Ordner ist leer" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Dateien hierher ziehen oder zum Einstieg eine Datei hochladen oder einen " "Ordner erstellen." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Überall suchen" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Suche läuft …" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Suche nach „{query}“." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2062,20 +2062,20 @@ msgstr[0] "{summary} – das erste Suchergebnis wird angezeigt" msgstr[1] "{summary} – die ersten {n} Suchergebnisse werden angezeigt" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} – Suchergebnisse" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Keine Treffer" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Keine Dateien oder Ordner entsprechen dieser Suche." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2083,17 +2083,17 @@ msgid_plural "{n} files" msgstr[0] "{n} Datei" msgstr[1] "{n} Dateien" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/en_GB.po b/po/en_GB.po index 9fdb37c..042a3e4 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+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" @@ -508,8 +508,8 @@ msgstr "View Options" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -529,8 +529,8 @@ msgid "Couldn't read activity" msgstr "Couldn't read activity" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1534,7 +1534,7 @@ msgid "Cancel thumbnail build" msgstr "Cancel thumbnail build" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Search this folder only" @@ -1822,7 +1822,7 @@ msgid "The Proton Drive service stopped reporting thumbnail progress." msgstr "The Proton Drive service stopped reporting thumbnail progress." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1913,7 +1913,7 @@ msgstr "No folders here." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Couldn't move" @@ -1991,49 +1991,49 @@ msgctxt "verb" msgid "View" msgstr "View" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Moved into “{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Reading this folder." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Folder unavailable" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Couldn't open this folder" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "This folder is empty" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "Drop files here, or upload a file or create a folder to get started." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Search everywhere" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Searching…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Looking for “{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2041,20 +2041,20 @@ msgstr[0] "{summary} — showing the first {n} search result" msgstr[1] "{summary} — showing the first {n} search results" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} — search results" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "No matches" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "No files or folders match that search." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2062,17 +2062,17 @@ msgid_plural "{n} files" msgstr[0] "{n} file" msgstr[1] "{n} files" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/es.po b/po/es.po index 20ff259..c00a643 100644 --- a/po/es.po +++ b/po/es.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Spanish\n" @@ -511,8 +511,8 @@ msgstr "Opciones de vista" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -532,8 +532,8 @@ msgid "Couldn't read activity" msgstr "No se pudo leer la actividad" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1540,7 +1540,7 @@ msgid "Cancel thumbnail build" msgstr "Cancelar la generación de miniaturas" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Buscar solo en esta carpeta" @@ -1831,7 +1831,7 @@ msgstr "" "El servicio de Proton Drive dejó de informar del progreso de las miniaturas." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1924,7 +1924,7 @@ msgstr "No hay carpetas aquí." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "No se pudo mover" @@ -2002,50 +2002,50 @@ msgctxt "verb" msgid "View" msgstr "Ver" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Movido a “{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Leyendo esta carpeta." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Carpeta no disponible" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "No se pudo abrir esta carpeta" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Esta carpeta está vacía" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Suelte archivos aquí, o suba un archivo o cree una carpeta para empezar." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Buscar en todas partes" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Buscando…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Buscando “{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2053,20 +2053,20 @@ msgstr[0] "{summary}: se muestra el primer resultado de búsqueda" msgstr[1] "{summary}: se muestran los primeros {n} resultados de búsqueda" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary}: resultados de búsqueda" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Sin coincidencias" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Ningún archivo ni carpeta coincide con esa búsqueda." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2074,17 +2074,17 @@ msgid_plural "{n} files" msgstr[0] "{n} archivo" msgstr[1] "{n} archivos" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/fr.po b/po/fr.po index f360646..ebddaf8 100644 --- a/po/fr.po +++ b/po/fr.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: French\n" @@ -514,8 +514,8 @@ msgstr "Options d’affichage" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -535,8 +535,8 @@ msgid "Couldn't read activity" msgstr "Impossible de lire l’activité" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1551,7 +1551,7 @@ msgid "Cancel thumbnail build" msgstr "Annuler la génération des miniatures" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Rechercher uniquement dans ce dossier" @@ -1843,7 +1843,7 @@ msgid "The Proton Drive service stopped reporting thumbnail progress." msgstr "Le service Proton Drive ne signale plus la progression des miniatures." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1936,7 +1936,7 @@ msgstr "Aucun dossier ici." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Impossible de déplacer" @@ -2014,51 +2014,51 @@ msgctxt "verb" msgid "View" msgstr "Afficher" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Déplacé dans « {name} »" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Lecture de ce dossier." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Dossier indisponible" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Impossible d’ouvrir ce dossier" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Ce dossier est vide" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Déposez des fichiers ici, ou téléversez un fichier ou créez un dossier pour " "commencer." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Rechercher partout" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Recherche…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Recherche de « {query} »." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2066,20 +2066,20 @@ msgstr[0] "{summary} — affichage de {n} premier résultat de recherche" msgstr[1] "{summary} — affichage des {n} premiers résultats de recherche" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} — résultats de recherche" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Aucun résultat" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Aucun fichier ni dossier ne correspond à cette recherche." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2087,17 +2087,17 @@ msgid_plural "{n} files" msgstr[0] "{n} fichier" msgstr[1] "{n} fichiers" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/it.po b/po/it.po index a098838..4ae3708 100644 --- a/po/it.po +++ b/po/it.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Italian\n" @@ -510,8 +510,8 @@ msgstr "Opzioni di visualizzazione" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -531,8 +531,8 @@ msgid "Couldn't read activity" msgstr "Impossibile leggere le attività" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1545,7 +1545,7 @@ msgid "Cancel thumbnail build" msgstr "Annulla la generazione delle miniature" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Cerca solo in questa cartella" @@ -1837,7 +1837,7 @@ msgstr "" "miniature." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1930,7 +1930,7 @@ msgstr "Nessuna cartella qui." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Impossibile spostare" @@ -2008,51 +2008,51 @@ msgctxt "verb" msgid "View" msgstr "Visualizza" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Spostato in “{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Lettura di questa cartella." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Cartella non disponibile" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Impossibile aprire questa cartella" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Questa cartella è vuota" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Trascina qui dei file, oppure carica un file o crea una cartella per " "iniziare." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Cerca ovunque" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Ricerca…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Ricerca di “{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2060,20 +2060,20 @@ msgstr[0] "{summary}: visualizzato il primo {n} risultato della ricerca" msgstr[1] "{summary}: visualizzati i primi {n} risultati della ricerca" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary}: risultati della ricerca" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Nessuna corrispondenza" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Nessun file o cartella corrisponde alla ricerca." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2081,17 +2081,17 @@ msgid_plural "{n} files" msgstr[0] "{n} file" msgstr[1] "{n} file" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/nl.po b/po/nl.po index 287921c..1e39c7c 100644 --- a/po/nl.po +++ b/po/nl.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Dutch\n" @@ -511,8 +511,8 @@ msgstr "Weergaveopties" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -532,8 +532,8 @@ msgid "Couldn't read activity" msgstr "Kon activiteit niet lezen" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1541,7 +1541,7 @@ msgid "Cancel thumbnail build" msgstr "Aanmaken van miniaturen annuleren" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Alleen in deze map zoeken" @@ -1831,7 +1831,7 @@ msgid "The Proton Drive service stopped reporting thumbnail progress." msgstr "De Proton Drive-service meldt geen voortgang van miniaturen meer." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1924,7 +1924,7 @@ msgstr "Geen mappen hier." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Kon niet verplaatsen" @@ -2002,51 +2002,51 @@ msgctxt "verb" msgid "View" msgstr "Bekijken" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Verplaatst naar “{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Deze map wordt gelezen." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Map niet beschikbaar" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Kon deze map niet openen" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Deze map is leeg" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Sleep bestanden hierheen, of upload een bestand of maak een map aan om te " "beginnen." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Overal zoeken" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Zoeken…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Zoeken naar “{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2054,20 +2054,20 @@ msgstr[0] "{summary} — eerste {n} zoekresultaat wordt getoond" msgstr[1] "{summary} — eerste {n} zoekresultaten worden getoond" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} — zoekresultaten" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Geen overeenkomsten" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Geen bestanden of mappen komen overeen met deze zoekopdracht." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2075,17 +2075,17 @@ msgid_plural "{n} files" msgstr[0] "{n} bestand" msgstr[1] "{n} bestanden" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/pdfs.pot b/po/pdfs.pot index 9d451d0..d8e7870 100644 --- a/po/pdfs.pot +++ b/po/pdfs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: proton-drive-linux 2.10.0\n" "Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n" -"POT-Creation-Date: 2026-10-05 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -483,8 +483,8 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -504,8 +504,8 @@ msgid "Couldn't read activity" msgstr "" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1499,7 +1499,7 @@ msgid "Cancel thumbnail build" msgstr "" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "" @@ -1787,7 +1787,7 @@ msgid "The Proton Drive service stopped reporting thumbnail progress." msgstr "" #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1878,7 +1878,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "" @@ -1956,49 +1956,49 @@ msgctxt "verb" msgid "View" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2006,20 +2006,20 @@ msgstr[0] "" msgstr[1] "" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2027,17 +2027,17 @@ msgid_plural "{n} files" msgstr[0] "" msgstr[1] "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "" diff --git a/po/pl.po b/po/pl.po index 0d675a1..3a1c4f1 100644 --- a/po/pl.po +++ b/po/pl.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Polish\n" @@ -518,8 +518,8 @@ msgstr "Opcje widoku" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -539,8 +539,8 @@ msgid "Couldn't read activity" msgstr "Nie można odczytać aktywności" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1577,7 +1577,7 @@ msgid "Cancel thumbnail build" msgstr "Anuluj tworzenie miniatur" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Przeszukaj tylko ten katalog" @@ -1875,7 +1875,7 @@ msgid "The Proton Drive service stopped reporting thumbnail progress." msgstr "Usługa Proton Drive przestała zgłaszać postęp miniatur." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1971,7 +1971,7 @@ msgstr "Brak katalogów." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Nie można przenieść" @@ -2052,50 +2052,50 @@ msgctxt "verb" msgid "View" msgstr "Wyświetl" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Przeniesiono do „{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Odczytywanie tego katalogu." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Katalog jest niedostępny" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Nie można otworzyć tego katalogu" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Ten katalog jest pusty" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Można upuścić tutaj pliki, wysłać plik lub utworzyć katalog, aby zacząć." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Szukaj wszędzie" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Wyszukiwanie…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Wyszukiwanie „{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2104,20 +2104,20 @@ msgstr[1] "{summary} — wyświetlanie pierwszych {n} wyników wyszukiwania" msgstr[2] "{summary} — wyświetlanie pierwszych {n} wyników wyszukiwania" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} — wyniki wyszukiwania" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Brak wyników" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Żadne pliki ani katalogi nie pasują do wyszukiwania." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2126,17 +2126,17 @@ msgstr[0] "{n} plik" msgstr[1] "{n} pliki" msgstr[2] "{n} plików" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})" diff --git a/po/pt_BR.po b/po/pt_BR.po index 6895801..4982f17 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -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 00:50+0200\n" +"POT-Creation-Date: 2026-10-05 01:01+0200\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Portuguese (Brazil)\n" @@ -510,8 +510,8 @@ msgstr "Opções de exibição" #: crates/pdfs-gui/src/app/pages/activity.rs:439 #: crates/pdfs-gui/src/app/pages/browser.rs:385 #: crates/pdfs-gui/src/app/pages/browser.rs:2109 -#: crates/pdfs-gui/src/app/pages/browser.rs:2635 -#: crates/pdfs-gui/src/app/pages/browser.rs:2639 +#: crates/pdfs-gui/src/app/pages/browser.rs:2641 +#: crates/pdfs-gui/src/app/pages/browser.rs:2645 #: crates/pdfs-gui/src/app/pages/devices.rs:325 #: crates/pdfs-gui/src/app/pages/locations.rs:192 #: crates/pdfs-gui/src/app/pages/locations.rs:1123 @@ -531,8 +531,8 @@ msgid "Couldn't read activity" msgstr "Não foi possível ler a atividade" #: crates/pdfs-gui/src/app/pages/activity.rs:470 -#: crates/pdfs-gui/src/app/pages/browser.rs:2671 -#: crates/pdfs-gui/src/app/pages/browser.rs:2853 +#: crates/pdfs-gui/src/app/pages/browser.rs:2677 +#: crates/pdfs-gui/src/app/pages/browser.rs:2859 #: crates/pdfs-gui/src/app/pages/photo_viewer.rs:308 #: crates/pdfs-gui/src/app/pages/photos.rs:3435 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:382 @@ -1542,7 +1542,7 @@ msgid "Cancel thumbnail build" msgstr "Cancelar geração de miniaturas" #: crates/pdfs-gui/src/app/pages/browser.rs:255 -#: crates/pdfs-gui/src/app/pages/browser.rs:2784 +#: crates/pdfs-gui/src/app/pages/browser.rs:2790 msgid "Search this folder only" msgstr "Pesquisar somente nesta pasta" @@ -1831,7 +1831,7 @@ msgstr "" "O serviço do Proton Drive parou de informar o progresso das miniaturas." #: crates/pdfs-gui/src/app/pages/browser.rs:1705 -#: crates/pdfs-gui/src/app/pages/browser.rs:2925 +#: crates/pdfs-gui/src/app/pages/browser.rs:2932 #, rust-format msgid "{n} folder" msgid_plural "{n} folders" @@ -1924,7 +1924,7 @@ msgstr "Nenhuma pasta aqui." #: crates/pdfs-gui/src/app/pages/browser.rs:2287 #: crates/pdfs-gui/src/app/pages/browser.rs:2331 -#: crates/pdfs-gui/src/app/pages/browser.rs:2578 +#: crates/pdfs-gui/src/app/pages/browser.rs:2584 msgid "Couldn't move" msgstr "Não foi possível mover" @@ -2002,50 +2002,50 @@ msgctxt "verb" msgid "View" msgstr "Ver" -#: crates/pdfs-gui/src/app/pages/browser.rs:2570 +#: crates/pdfs-gui/src/app/pages/browser.rs:2576 #, rust-format msgid "Moved into “{name}”" msgstr "Movido para “{name}”" -#: crates/pdfs-gui/src/app/pages/browser.rs:2640 +#: crates/pdfs-gui/src/app/pages/browser.rs:2646 #: crates/pdfs-gui/src/app/pages/devices.rs:261 msgid "Reading this folder." msgstr "Lendo esta pasta." -#: crates/pdfs-gui/src/app/pages/browser.rs:2685 +#: crates/pdfs-gui/src/app/pages/browser.rs:2691 msgid "Folder unavailable" msgstr "Pasta indisponível" -#: crates/pdfs-gui/src/app/pages/browser.rs:2689 +#: crates/pdfs-gui/src/app/pages/browser.rs:2695 msgid "Couldn't open this folder" msgstr "Não foi possível abrir esta pasta" -#: crates/pdfs-gui/src/app/pages/browser.rs:2731 +#: crates/pdfs-gui/src/app/pages/browser.rs:2737 #: crates/pdfs-gui/src/app/pages/devices.rs:101 #: crates/pdfs-gui/src/app/pages/shared.rs:456 msgid "This folder is empty" msgstr "Esta pasta está vazia" -#: crates/pdfs-gui/src/app/pages/browser.rs:2732 +#: crates/pdfs-gui/src/app/pages/browser.rs:2738 msgid "Drop files here, or upload a file or create a folder to get started." msgstr "" "Solte arquivos aqui, ou envie um arquivo ou crie uma pasta para começar." -#: crates/pdfs-gui/src/app/pages/browser.rs:2782 +#: crates/pdfs-gui/src/app/pages/browser.rs:2788 msgid "Search everywhere" msgstr "Pesquisar em todos os lugares" -#: crates/pdfs-gui/src/app/pages/browser.rs:2818 -#: crates/pdfs-gui/src/app/pages/browser.rs:2822 +#: crates/pdfs-gui/src/app/pages/browser.rs:2824 +#: crates/pdfs-gui/src/app/pages/browser.rs:2828 msgid "Searching…" msgstr "Pesquisando…" -#: crates/pdfs-gui/src/app/pages/browser.rs:2823 +#: crates/pdfs-gui/src/app/pages/browser.rs:2829 #, rust-format msgid "Looking for “{query}”." msgstr "Procurando por “{query}”." -#: crates/pdfs-gui/src/app/pages/browser.rs:2879 +#: crates/pdfs-gui/src/app/pages/browser.rs:2885 #, rust-format msgid "{summary} — showing the first {n} search result" msgid_plural "{summary} — showing the first {n} search results" @@ -2053,20 +2053,20 @@ msgstr[0] "{summary} — mostrando o primeiro resultado da pesquisa" msgstr[1] "{summary} — mostrando os primeiros {n} resultados da pesquisa" #. Translators: {summary} counts the hits, such as "2 folders, 5 files (3.0 MB)". -#: crates/pdfs-gui/src/app/pages/browser.rs:2886 +#: crates/pdfs-gui/src/app/pages/browser.rs:2892 #, rust-format msgid "{summary} — search results" msgstr "{summary} — resultados da pesquisa" -#: crates/pdfs-gui/src/app/pages/browser.rs:2892 +#: crates/pdfs-gui/src/app/pages/browser.rs:2898 msgid "No matches" msgstr "Nenhuma correspondência" -#: crates/pdfs-gui/src/app/pages/browser.rs:2893 +#: crates/pdfs-gui/src/app/pages/browser.rs:2899 msgid "No files or folders match that search." msgstr "Nenhum arquivo ou pasta corresponde a essa pesquisa." -#: crates/pdfs-gui/src/app/pages/browser.rs:2926 +#: crates/pdfs-gui/src/app/pages/browser.rs:2933 #: crates/pdfs-gui/src/i18n.rs:248 #, rust-format msgid "{n} file" @@ -2074,17 +2074,17 @@ msgid_plural "{n} files" msgstr[0] "{n} arquivo" msgstr[1] "{n} arquivos" -#: crates/pdfs-gui/src/app/pages/browser.rs:2932 +#: crates/pdfs-gui/src/app/pages/browser.rs:2939 #, rust-format msgid "{files} ({size})" msgstr "{files} ({size})" -#: crates/pdfs-gui/src/app/pages/browser.rs:2937 +#: crates/pdfs-gui/src/app/pages/browser.rs:2944 #, rust-format msgid "{folders}, {files}" msgstr "{folders}, {files}" -#: crates/pdfs-gui/src/app/pages/browser.rs:2942 +#: crates/pdfs-gui/src/app/pages/browser.rs:2949 #, rust-format msgid "{folders}, {files} ({size})" msgstr "{folders}, {files} ({size})"