From 4edcff3f87791501ec6195a8d2850f1120fcc4f6 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sun, 25 Oct 2026 22:18:11 +0100 Subject: [PATCH] feat(sharing,gui,cli): change public links and show folder sizes The share dialog gets Link settings under an existing link: role, password and expiry apply at once and keep the URL. The daemon fills in the options a change keeps from the link as it stands, and refuses to keep a password it cannot read rather than dropping it. pdfs public-link update does the same from a terminal, and pdfs members shows the expiry. Details shows a folder's size and item count as Proton Drive counts it, trash included, and pdfs du prints it. Both are refused offline and for a folder that is not on Drive yet. Needs proton-drive-rs with update_public_link, get_folder_size and PublicLink::custom_password. --- crates/pdfs-cli/src/main.rs | 94 ++++++- crates/pdfs-core/src/control.rs | 92 ++++++- crates/pdfs-fuse/src/control.rs | 43 +++ crates/pdfs-fuse/src/lib.rs | 37 +++ crates/pdfs-fuse/src/sharing.rs | 86 +++++- crates/pdfs-gui/src/app/main.rs | 10 +- crates/pdfs-gui/src/app/widgets/details.rs | 57 +++- .../pdfs-gui/src/app/widgets/share_dialog.rs | 252 ++++++++++++++++-- docs/CHANGELOG.md | 7 + docs/CLI.md | 4 +- docs/FILES.md | 3 +- docs/SHARING.md | 6 + po/de.po | 202 +++++++++----- po/en_GB.po | 202 +++++++++----- po/es.po | 202 +++++++++----- po/fr.po | 202 +++++++++----- po/it.po | 202 +++++++++----- po/nl.po | 202 +++++++++----- po/pdfs.pot | 202 +++++++++----- po/pl.po | 203 +++++++++----- po/pt_BR.po | 202 +++++++++----- 21 files changed, 1824 insertions(+), 686 deletions(-) diff --git a/crates/pdfs-cli/src/main.rs b/crates/pdfs-cli/src/main.rs index dbc008e..845e211 100644 --- a/crates/pdfs-cli/src/main.rs +++ b/crates/pdfs-cli/src/main.rs @@ -13,7 +13,7 @@ use pdfs_core::auth; use pdfs_core::cache::ContentCache; use pdfs_core::config::AppDirs; use pdfs_core::control::{ - ConflictKeep, ErrorKind, MountKind, RefreshScope, Request as CtlRequest, + ConflictKeep, ErrorKind, LinkChange, MountKind, RefreshScope, Request as CtlRequest, Response as CtlResponse, RestoreItem as CtlRestoreItem, ShareEntryKind, SyncIssue, SyncPhase, daemon_outdated, pending_summary, }; @@ -368,6 +368,14 @@ enum Command { #[arg(required = true, num_args = 2.., value_name = "PATH")] paths: Vec, }, + /// Show how much a folder holds on Proton Drive. + /// + /// Proton Drive adds it up, so nothing is downloaded. The size is the + /// encrypted bytes on storage and includes items in the trash. + Du { + /// Folder path, inside My files or relative to the mountpoint. + path: PathBuf, + }, /// Trash a file or folder via the running daemon. Rm { /// File/folder path, inside My files or an on-demand synced folder, or @@ -789,6 +797,29 @@ enum PublicLinkCmd { #[arg(long)] expires: Option, }, + /// Change a node's public link. The URL stays the same; an option not + /// given is kept. + Update { + /// File/folder path, inside the mountpoint or relative to it. + path: PathBuf, + /// Public-link id, from `pdfs members`. + id: String, + /// New role: viewer or editor. + #[arg(long)] + role: Option, + /// New custom password protecting the link. + #[arg(long, conflicts_with = "no_password")] + password: Option, + /// Remove the custom password. + #[arg(long)] + no_password: bool, + /// New expiry, Unix epoch seconds. + #[arg(long, conflicts_with = "no_expiry")] + expires: Option, + /// Remove the expiry. + #[arg(long)] + no_expiry: bool, + }, /// Remove a node's public link. Remove { /// File/folder path, inside the mountpoint or relative to it. @@ -935,6 +966,7 @@ fn main() -> Result<()> { let new_parent = paths.pop().expect("clap requires at least two paths"); cmd_copy(paths, new_parent) } + Command::Du { path } => cmd_du(path), Command::Rm { path } => cmd_rm(path), Command::Mkdir { parent, name } => cmd_mkdir(parent, name), Command::Upload { sources, parent } => cmd_upload(sources, parent), @@ -1528,7 +1560,11 @@ fn cmd_members(path: PathBuf) -> Result<()> { Some(l) => { let url = l.url.as_deref().unwrap_or("(url hidden)"); let pw = if l.has_password { " +password" } else { "" }; - println!("public link ({}{pw}): {url} [{}]", l.role, l.id); + let expiry = l + .expires + .map(|at| format!(", expires {}", format_epoch_utc(at))) + .unwrap_or_default(); + println!("public link ({}{pw}{expiry}): {url} [{}]", l.role, l.id); } None => println!("public link: none"), } @@ -1580,6 +1616,27 @@ fn cmd_public_link(action: PublicLinkCmd) -> Result<()> { CtlResponse::Error { message, kind } => bail!("{}", cli_error(kind, &message)), other => bail!("unexpected response: {other:?}"), }, + PublicLinkCmd::Update { + path, + id, + role, + password, + no_password, + expires, + no_expiry, + } => match control_request(CtlRequest::UpdatePublicLink { + path: path_arg(&path)?, + id, + role, + password: link_change(password, no_password), + expires: link_change(expires, no_expiry), + })? { + CtlResponse::PublicLink { link } => { + println!("{}", link.url.as_deref().unwrap_or("(no url returned)")); + } + CtlResponse::Error { message, kind } => bail!("{}", cli_error(kind, &message)), + other => bail!("unexpected response: {other:?}"), + }, PublicLinkCmd::Remove { path, id } => { ok_or_bail(control_request(CtlRequest::RemovePublicLink { path: path_arg(&path)?, @@ -1590,6 +1647,15 @@ fn cmd_public_link(action: PublicLinkCmd) -> Result<()> { Ok(()) } +/// A `--x VALUE` / `--no-x` flag pair as one link option change. +fn link_change(value: Option, remove: bool) -> LinkChange { + match (value, remove) { + (Some(value), _) => LinkChange::Set(value), + (None, true) => LinkChange::Remove, + (None, false) => LinkChange::Keep, + } +} + fn cmd_shared() -> Result<()> { match control_request(CtlRequest::ListSharedByMe)? { CtlResponse::SharedByMe { items } if items.is_empty() => { @@ -2966,6 +3032,23 @@ fn cmd_copy(sources: Vec, new_parent: PathBuf) -> Result<()> { Ok(()) } +fn cmd_du(path: PathBuf) -> Result<()> { + match control_request(CtlRequest::FolderSize { + path: path_arg(&path)?, + })? { + CtlResponse::FolderSize { size, items } => { + let noun = if items == 1 { "item" } else { "items" }; + println!( + "{} in {items} {noun} (on Proton Drive, trash included)", + human_bytes(size) + ); + } + CtlResponse::Error { message, kind } => bail!("{}", cli_error(kind, &message)), + other => bail!("unexpected response: {other:?}"), + } + Ok(()) +} + fn cmd_rm(path: PathBuf) -> Result<()> { match control_request(CtlRequest::Delete { path: path_arg(&path)?, @@ -3952,6 +4035,13 @@ mod login_wait_tests { assert_eq!(slept, 0); } + #[test] + fn a_link_flag_pair_keeps_removes_or_sets() { + assert_eq!(link_change::(None, false), LinkChange::Keep); + assert_eq!(link_change::(None, true), LinkChange::Remove); + assert_eq!(link_change(Some(5), false), LinkChange::Set(5)); + } + #[test] fn epoch_seconds_format_as_utc_calendar_dates() { assert_eq!(format_epoch_utc(0), "1970-01-01"); diff --git a/crates/pdfs-core/src/control.rs b/crates/pdfs-core/src/control.rs index 9104e87..0e17bd3 100644 --- a/crates/pdfs-core/src/control.rs +++ b/crates/pdfs-core/src/control.rs @@ -350,6 +350,11 @@ pub enum Request { /// taken in `new_parent` gets the next free ` (n)` suffix. Replies with /// [`Response::Ok`]. Copy { path: String, new_parent: String }, + /// Ask Proton Drive how much the folder at mountpoint-relative `path` + /// holds. Replies with [`Response::FolderSize`]. + FolderSize { path: String }, + /// The by-uid twin of [`Request::FolderSize`]. + FolderSizeByUid { uid: String }, /// Trash a file or folder. `path` is mountpoint-relative. Replies with /// [`Response::Ok`]. Delete { path: String }, @@ -602,6 +607,24 @@ pub enum Request { RemovePublicLink { path: String, id: String }, /// The by-uid twin of [`Request::RemovePublicLink`]. RemovePublicLinkByUid { uid: String, id: String }, + /// Change the public link `id` on the node at `path`, keeping its URL. + /// `role` is "viewer" or "editor", or `None` to keep the current one. + /// Replies with [`Response::PublicLink`]. + UpdatePublicLink { + path: String, + id: String, + role: Option, + password: LinkChange, + expires: LinkChange, + }, + /// The by-uid twin of [`Request::UpdatePublicLink`]. + UpdatePublicLinkByUid { + uid: String, + id: String, + role: Option, + password: LinkChange, + expires: LinkChange, + }, /// Stop sharing the node at `path`: remove its public link, every pending /// invitation and every member. Each removal is attempted even if an /// earlier one fails. Replies with [`Response::Ok`], or an error naming @@ -1081,6 +1104,18 @@ pub struct PublicLinkInfo { pub created: i64, } +/// What [`Request::UpdatePublicLink`] does with one option of a link: its +/// custom password or its expiry. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +pub enum LinkChange { + /// Leave the option as it is. + Keep, + /// Remove the option: no custom password, or no expiry. + Remove, + /// Set the option to this value. + Set(T), +} + /// One invitation addressed to me (in [`Response::Invitations`]). #[derive(Serialize, Deserialize, Debug, Clone)] pub struct InvitationInfo { @@ -2192,9 +2227,14 @@ pub enum Response { entries: Vec, link: Option, }, - /// A freshly created public link, carrying the shareable URL (reply to - /// [`Request::CreatePublicLink`]). + /// A freshly created or changed public link, carrying the shareable URL + /// (reply to [`Request::CreatePublicLink`] and + /// [`Request::UpdatePublicLink`]). PublicLink { link: PublicLinkInfo }, + /// What a folder holds on Proton Drive (reply to [`Request::FolderSize`]): + /// the bytes on storage and the number of items below it, folders and + /// trashed items included. + FolderSize { size: u64, items: u64 }, /// Invitations addressed to me (reply to [`Request::ListInvitations`]). Invitations { items: Vec }, /// Saved public links (reply to [`Request::ListBookmarks`]). @@ -3258,6 +3298,24 @@ mod tests { uid: "vol~link".into(), id: "url-1".into(), }, + Request::UpdatePublicLink { + path: "a/b".into(), + id: "url-1".into(), + role: Some("editor".into()), + password: LinkChange::Set("pw".into()), + expires: LinkChange::Remove, + }, + Request::UpdatePublicLinkByUid { + uid: "vol~link".into(), + id: "url-1".into(), + role: None, + password: LinkChange::Keep, + expires: LinkChange::Set(1_700_000_000), + }, + Request::FolderSize { path: "a".into() }, + Request::FolderSizeByUid { + uid: "vol~link".into(), + }, Request::ListSharedByMe, Request::ListActivity { limit: 100 }, Request::ListSharedWithMe, @@ -3632,6 +3690,16 @@ mod tests { }, "RemovePublicLinkByUid", ), + ( + Request::UpdatePublicLinkByUid { + uid: "vol~link".into(), + id: "link".into(), + role: None, + password: LinkChange::Keep, + expires: LinkChange::Keep, + }, + "UpdatePublicLinkByUid", + ), ( Request::StopSharingByUid { uid: "vol~link".into(), @@ -3657,6 +3725,7 @@ mod tests { | Request::RemoveShareEntryByUid { uid, .. } | Request::CreatePublicLinkByUid { uid, .. } | Request::RemovePublicLinkByUid { uid, .. } + | Request::UpdatePublicLinkByUid { uid, .. } | Request::StopSharingByUid { uid } => uid, other => panic!("decoded into the wrong dispatch variant: {other:?}"), }; @@ -3665,6 +3734,25 @@ mod tests { } } + #[test] + fn a_link_update_names_what_it_keeps_removes_and_sets() { + let request = Request::UpdatePublicLink { + path: "a/b".into(), + id: "url-1".into(), + role: None, + password: LinkChange::Keep, + expires: LinkChange::Set(1_700_000_000), + }; + assert_eq!( + serde_json::to_string(&request).unwrap(), + r#"{"UpdatePublicLink":{"path":"a/b","id":"url-1","role":null,"password":"Keep","expires":{"Set":1700000000}}}"# + ); + assert_eq!( + serde_json::to_string(&LinkChange::::Remove).unwrap(), + r#""Remove""# + ); + } + #[test] fn open_file_accepts_a_request_from_a_client_predating_the_uid_field() { let legacy = r#"{"OpenFile":{"path":"Documents/ONBOARDING.md"}}"#; diff --git a/crates/pdfs-fuse/src/control.rs b/crates/pdfs-fuse/src/control.rs index 4030f68..0d8604f 100644 --- a/crates/pdfs-fuse/src/control.rs +++ b/crates/pdfs-fuse/src/control.rs @@ -29,6 +29,17 @@ use super::{Core, count_noun, human_bytes, human_duration, parse_uid}; const MAX_CONTROL_REQUEST_BYTES: u64 = 1024 * 1024; const CONTROL_READ_TIMEOUT: Duration = Duration::from_secs(10); +/// Answer a [`CtlRequest::FolderSize`]. +fn folder_size_reply(size: CoreResult) -> CtlResponse { + match size { + Ok(size) => CtlResponse::FolderSize { + size: size.size, + items: size.descendants, + }, + Err(e) => CtlResponse::error(e), + } +} + /// Answer a [`CtlRequest::StopSharing`]: log it, and turn a partial removal /// into an error that names what is still shared. fn stop_sharing_reply( @@ -392,6 +403,8 @@ fn touched_topics(request: &CtlRequest) -> &'static [Topic] { | R::CreatePublicLinkByUid { .. } | R::RemovePublicLink { .. } | R::RemovePublicLinkByUid { .. } + | R::UpdatePublicLink { .. } + | R::UpdatePublicLinkByUid { .. } | R::StopSharing { .. } | R::StopSharingByUid { .. } => &[Topic::Shares, Topic::Files], R::LeaveShared { .. } @@ -1088,6 +1101,11 @@ fn handle_control_conn(core: &Core, username: &str, mountpoint: &Path, stream: U (Err(e), _) | (_, Err(e)) => CtlResponse::error(e), } } + Ok(CtlRequest::FolderSize { path }) => match rel_to_mount(mountpoint, &path) { + Ok(rel) => folder_size_reply(core.folder_size(&rel)), + Err(e) => CtlResponse::error(e), + }, + Ok(CtlRequest::FolderSizeByUid { uid }) => folder_size_reply(core.folder_size_by_uid(&uid)), Ok(CtlRequest::Delete { path }) => match route_node(core, mountpoint, &path) { Ok((core, rel)) => match core.delete(&rel) { Ok(name) => { @@ -1655,6 +1673,31 @@ fn handle_control_conn(core: &Core, username: &str, mountpoint: &Path, stream: U CtlResponse::error(e) } }, + Ok(CtlRequest::UpdatePublicLink { + path, + id, + role, + password, + expires, + }) => match rel_to_mount(mountpoint, &path) { + Ok(rel) => { + match core.update_public_link(&rel, &id, role.as_deref(), password, expires) { + Ok(link) => CtlResponse::PublicLink { link }, + Err(e) => CtlResponse::error(e), + } + } + Err(e) => CtlResponse::error(e), + }, + Ok(CtlRequest::UpdatePublicLinkByUid { + uid, + id, + role, + password, + expires, + }) => match core.update_public_link_by_uid(&uid, &id, role.as_deref(), password, expires) { + Ok(link) => CtlResponse::PublicLink { link }, + Err(e) => CtlResponse::error(e), + }, Ok(CtlRequest::RemovePublicLink { path, id }) => match rel_to_mount(mountpoint, &path) { Ok(rel) => match core.remove_public_link(&rel, &id) { Ok(()) => { diff --git a/crates/pdfs-fuse/src/lib.rs b/crates/pdfs-fuse/src/lib.rs index 72bf580..ba77d2a 100644 --- a/crates/pdfs-fuse/src/lib.rs +++ b/crates/pdfs-fuse/src/lib.rs @@ -5288,6 +5288,43 @@ impl Core { Ok(copy_name) } + /// What the folder at `rel` holds on Proton Drive: bytes on storage and the + /// number of items below it. Drive adds it up, so nothing is listed here; + /// trashed items count, and the bytes are encrypted ones. + pub(crate) fn folder_size(&self, rel: &Path) -> CoreResult { + let (ino, uid) = self.resolve(rel)?; + let is_folder = self + .state() + .entries + .get(&ino) + .is_some_and(|entry| entry.node.is_folder()); + if !is_folder { + return Err(CoreError::invalid(format!( + "{} is not a folder", + rel.display() + ))); + } + self.folder_size_for_uid(&uid) + } + + /// [`Core::folder_size`] for a folder addressed through any daemon location. + pub(crate) fn folder_size_by_uid(&self, uid: &str) -> CoreResult { + let uid = self.resolve_anywhere(uid)?; + self.folder_size_for_uid(&uid) + } + + fn folder_size_for_uid(&self, uid: &NodeUid) -> CoreResult { + if is_local_uid(uid) { + return Err(CoreError::conflict("the folder is not on Proton Drive yet")); + } + if !self.is_online() { + return Err(CoreError::offline()); + } + self.rt + .block_on(self.client.get_folder_size(uid)) + .map_err(|e| CoreError::from_api(&e, "folder size")) + } + /// Trash a file or folder. `rel` is mountpoint-relative. Forgets the node, /// evicts any cached content, and invalidates the parent listing. fn delete(&self, rel: &Path) -> CoreResult { diff --git a/crates/pdfs-fuse/src/sharing.rs b/crates/pdfs-fuse/src/sharing.rs index 9202607..a4d8fe1 100644 --- a/crates/pdfs-fuse/src/sharing.rs +++ b/crates/pdfs-fuse/src/sharing.rs @@ -9,7 +9,8 @@ use std::path::Path; use pdfs_core::control::{ - BookmarkInfo, DirEntry, InvitationInfo, PublicLinkInfo, ShareEntry, ShareEntryKind, SharedItem, + BookmarkInfo, DirEntry, InvitationInfo, LinkChange, PublicLinkInfo, ShareEntry, ShareEntryKind, + SharedItem, }; use pdfs_core::{CoreError, CoreResult}; use tracing::debug; @@ -367,6 +368,89 @@ impl Core { Ok(public_link_info(link)) } + /// Change the public link `id` on the node at `rel`, keeping its URL. + pub(crate) fn update_public_link( + &self, + rel: &Path, + id: &str, + role: Option<&str>, + password: LinkChange, + expires: LinkChange, + ) -> CoreResult { + let (_ino, uid) = self.resolve(rel)?; + self.update_public_link_for_uid(&uid, id, role, password, expires) + } + + /// [`Core::update_public_link`] for a node addressed through any daemon + /// location. + pub(crate) fn update_public_link_by_uid( + &self, + uid: &str, + id: &str, + role: Option<&str>, + password: LinkChange, + expires: LinkChange, + ) -> CoreResult { + let uid = self.resolve_anywhere(uid)?; + self.update_public_link_for_uid(&uid, id, role, password, expires) + } + + /// The SDK sets all three options on every update, so each `Keep` is + /// filled in from the link as it stands. + fn update_public_link_for_uid( + &self, + uid: &NodeUid, + id: &str, + role: Option<&str>, + password: LinkChange, + expires: LinkChange, + ) -> CoreResult { + let link = self + .rt + .block_on(self.client.get_public_link(uid)) + .map_err(|e| CoreError::from_api(&e, "get public link"))? + .filter(|l| l.public_link_id == id) + .ok_or_else(|| CoreError::not_found("public link not found"))?; + let role = match role { + Some(role) => role_from_str(role)?, + None => link.role, + }; + let unchanged = role == link.role + && matches!(password, LinkChange::Keep) + && matches!(expires, LinkChange::Keep); + if unchanged { + return Ok(public_link_info(link)); + } + let password = match password { + LinkChange::Keep if link.has_custom_password => { + // Sending `None` here would quietly remove the password. + Some(link.custom_password.clone().ok_or_else(|| { + CoreError::conflict( + "the link's password could not be read; set a new one or remove it", + ) + })?) + } + LinkChange::Keep | LinkChange::Remove => None, + LinkChange::Set(password) if password.is_empty() => { + return Err(CoreError::invalid("the new password is empty")); + } + LinkChange::Set(password) => Some(password), + }; + let expires = match expires { + LinkChange::Keep => link.expiration_time, + LinkChange::Remove => None, + LinkChange::Set(at) => Some(at), + }; + let link = self + .rt + .block_on( + self.client + .update_public_link(uid, role, password.as_deref(), expires), + ) + .map_err(|e| CoreError::from_api(&e, "update public link"))?; + Ok(public_link_info(link)) + } + /// Remove the public link `id` from the node at `rel`. pub(crate) fn remove_public_link(&self, rel: &Path, id: &str) -> CoreResult<()> { let (_ino, uid) = self.resolve(rel)?; diff --git a/crates/pdfs-gui/src/app/main.rs b/crates/pdfs-gui/src/app/main.rs index 6df2ce5..5db14d0 100644 --- a/crates/pdfs-gui/src/app/main.rs +++ b/crates/pdfs-gui/src/app/main.rs @@ -75,11 +75,11 @@ use pdfs_core::config::{AppDirs, FileSort, FilesView, WindowState}; use pdfs_core::control::{ ActivityEntry, ActivityKind, AlbumInfo, BookmarkInfo, ConflictInfo, ConflictKeep, DeviceInfo, - DirEntry, ErrorKind, ImportSummary, InvitationInfo, JobItem, MappingProgress, PendingOpInfo, - PhotoItem, PhotoKind, PhotoMonth, PlaceInfo, PublicLinkInfo, RefreshScope, Request, Response, - RestorableFolder, RestoreItem, RevisionInfo, SearchHit, ShareEntry, ShareEntryKind, SharedItem, - SyncFolderInfo, SyncIssue, SyncPhase, SyncProgress, ThumbnailBuildStatus, Topic, - TransferDirection, TransferItem, send, + DirEntry, ErrorKind, ImportSummary, InvitationInfo, JobItem, LinkChange, MappingProgress, + PendingOpInfo, PhotoItem, PhotoKind, PhotoMonth, PlaceInfo, PublicLinkInfo, RefreshScope, + Request, Response, RestorableFolder, RestoreItem, RevisionInfo, SearchHit, ShareEntry, + ShareEntryKind, SharedItem, SyncFolderInfo, SyncIssue, SyncPhase, SyncProgress, + ThumbnailBuildStatus, Topic, TransferDirection, TransferItem, send, }; use pdfs_core::mounts::{MountAccess, MountKind, MountMode, MountSpec}; diff --git a/crates/pdfs-gui/src/app/widgets/details.rs b/crates/pdfs-gui/src/app/widgets/details.rs index 4cb9c0a..bcf638d 100644 --- a/crates/pdfs-gui/src/app/widgets/details.rs +++ b/crates/pdfs-gui/src/app/widgets/details.rs @@ -368,12 +368,19 @@ pub(crate) fn show_details(ui: &Rc, entry: &DirEntry) { } else { gettext("File") }); - d.size_row.set_subtitle(&if entry.is_dir { - "—".to_string() + // A folder's size is Proton Drive's count, which takes a request; it lands + // in `load_details_extras`. + if entry.is_dir { + d.size_row.set_title(&gettext("Size on Proton Drive")); + d.size_row.set_subtitle("—"); + d.size_row.set_tooltip_text(Some(&gettext( + "Counted by Proton Drive, including items in the trash.", + ))); } else { - human_bytes(entry.size) - }); - d.size_row.set_visible(!entry.is_dir); + d.size_row.set_title(&pgettext("column", "Size")); + d.size_row.set_subtitle(&human_bytes(entry.size)); + d.size_row.set_tooltip_text(None); + } d.modified_row .set_subtitle(&dates::short_date(entry.modified)); let rel = entry_rel(ui, entry); @@ -426,8 +433,8 @@ pub(crate) fn show_details(ui: &Rc, entry: &DirEntry) { d.pages.set_visible_child_name("details"); } -/// Fill the Sharing and Versions rows, which need the network. The answers -/// land only if the pane still shows the same entry. +/// Fill the Sharing and Versions rows, and a folder's size, which need the +/// network. The answers land only if the pane still shows the same entry. fn load_details_extras(ui: &Rc, entry: &DirEntry) { let by_uid = entry.path.is_empty() && !entry.uid.is_empty(); let rel = entry_rel(ui, entry); @@ -453,6 +460,24 @@ fn load_details_extras(ui: &Rc, entry: &DirEntry) { }); if entry.is_dir { + let req = if by_uid { + Request::FolderSizeByUid { + uid: entry.uid.clone(), + } + } else { + Request::FolderSize { path: rel } + }; + let rx = spawn_request(ui.dirs.control_socket(), req); + let (ui_c, uid) = (ui.clone(), entry.uid.clone()); + glib::spawn_future_local(async move { + let text = match rx.recv().await { + Ok(Ok(Response::FolderSize { size, items })) => folder_size_summary(size, items), + _ => gettext("Couldn't load the size"), + }; + if details_showing(&ui_c, &uid) { + ui_c.details.details.size_row.set_subtitle(&text); + } + }); return; } let req = if by_uid { @@ -499,6 +524,18 @@ pub(crate) fn sharing_summary(people: usize, link: bool) -> String { } } +/// "1.2 GiB · 340 items": what a folder holds, as Proton Drive counts it. +pub(crate) fn folder_size_summary(size: u64, items: u64) -> String { + // Translators: {size} is a size such as "1.2 GiB"; {n} counts the files + // and folders inside a folder. + ngettext_f( + "{size} · {n} item", + "{size} · {n} items", + items, + &[("size", &human_bytes(size))], + ) +} + /// "3 versions · latest 2 Sep 2026". pub(crate) fn versions_summary(items: &[RevisionInfo]) -> String { let latest = items.iter().map(|r| r.created).max(); @@ -547,6 +584,12 @@ pub(crate) fn selected_entry(ui: &Rc) -> Option { mod tests { use super::*; + #[test] + fn folder_size_summary_reads_size_and_item_count() { + assert_eq!(folder_size_summary(0, 0), "0 bytes · 0 items"); + assert_eq!(folder_size_summary(2048, 1), "2.0 KiB · 1 item"); + } + #[test] fn sharing_summary_names_people_and_link() { assert_eq!(sharing_summary(0, false), "Only you"); diff --git a/crates/pdfs-gui/src/app/widgets/share_dialog.rs b/crates/pdfs-gui/src/app/widgets/share_dialog.rs index 1ab467e..77c8abd 100644 --- a/crates/pdfs-gui/src/app/widgets/share_dialog.rs +++ b/crates/pdfs-gui/src/app/widgets/share_dialog.rs @@ -51,6 +51,48 @@ pub(crate) fn link_expiry_at(idx: u32, now: i64) -> Option { .map(|days| now + days * 86_400) } +/// The labels of the Expires dropdown on an existing link. When the link has +/// an expiry, the first entry is that expiry, so the dropdown shows what is +/// set and choosing it again changes nothing. +pub(crate) fn link_expiry_choices(current: Option, now: i64) -> Vec { + let current = current.map(|at| capitalize(&link_expiry_label(at, now))); + current + .into_iter() + .chain(LINK_EXPIRY.iter().map(|(name, _)| gettext(name))) + .collect() +} + +/// What choosing entry `idx` of [`link_expiry_choices`] does to the expiry. +pub(crate) fn link_expiry_change(idx: u32, current: Option, now: i64) -> LinkChange { + let idx = match (current, idx) { + (Some(_), 0) => return LinkChange::Keep, + (Some(_), idx) => idx - 1, + (None, idx) => idx, + }; + match link_expiry_at(idx, now) { + Some(at) => LinkChange::Set(at), + None if current.is_some() => LinkChange::Remove, + None => LinkChange::Keep, + } +} + +/// A row with a title and a dropdown of `labels` as its suffix. +fn dropdown_row(title: &str, labels: &[String], selected: u32) -> (adw::ActionRow, gtk4::DropDown) { + let drop = gtk4::DropDown::builder() + .model(&string_list(labels)) + .selected(selected) + .valign(gtk4::Align::Center) + .build(); + let row = adw::ActionRow::builder().title(title).build(); + row.add_suffix(&drop); + (row, drop) +} + +/// The roles a public link can grant, in dropdown order. +fn link_roles() -> [String; 2] { + [pgettext("role", "Viewer"), pgettext("role", "Editor")] +} + /// A loose shape check for an email address: one `@` with something before /// it and a dotted domain after it. The server does the real validation; this /// only catches typos before the Invite button is pressed. @@ -237,6 +279,31 @@ impl ShareTarget { } } + fn update_link( + &self, + id: String, + role: Option, + password: LinkChange, + expires: LinkChange, + ) -> Request { + match self { + ShareTarget::Path(path) => Request::UpdatePublicLink { + path: path.clone(), + id, + role, + password, + expires, + }, + ShareTarget::Uid(uid) => Request::UpdatePublicLinkByUid { + uid: uid.clone(), + id, + role, + password, + expires, + }, + } + } + fn remove_link(&self, id: String) -> Request { match self { ShareTarget::Path(path) => Request::RemovePublicLink { @@ -585,8 +652,8 @@ pub(crate) fn repaint_share_people(state: &Rc, entries: &[ShareEntr *state.people_rows.borrow_mut() = rows; } -/// Rebuild the public-link section: an existing link (copy / remove) or a -/// create control. +/// Rebuild the public-link section: an existing link (copy / remove, and its +/// settings) or a create control. pub(crate) fn repaint_share_link(state: &Rc, link: Option<&PublicLinkInfo>) { for row in state.link_rows.borrow_mut().drain(..) { state.link_group.remove(&row); @@ -670,30 +737,19 @@ pub(crate) fn repaint_share_link(state: &Rc, link: Option<&PublicLi state.link_group.add(&row); rows.push(row.upcast()); + + let settings = link_settings_row(state, link); + state.link_group.add(&settings); + rows.push(settings.upcast()); } None => { - let role_model = string_list(&[pgettext("role", "Viewer"), pgettext("role", "Editor")]); - let role_drop = gtk4::DropDown::builder() - .model(&role_model) - .selected(0) - .valign(gtk4::Align::Center) - .build(); - let role_row = adw::ActionRow::builder() - .title(gettext("Link role")) - .build(); - role_row.add_suffix(&role_drop); + let (role_row, role_drop) = dropdown_row(&gettext("Link role"), &link_roles(), 0); let pw_row = adw::PasswordEntryRow::builder() .title(gettext("Password (optional)")) .build(); let expiry_names: Vec = LINK_EXPIRY.iter().map(|(name, _)| gettext(name)).collect(); - let expiry_drop = gtk4::DropDown::builder() - .model(&string_list(&expiry_names)) - .selected(0) - .valign(gtk4::Align::Center) - .build(); - let expiry_row = adw::ActionRow::builder().title(gettext("Expires")).build(); - expiry_row.add_suffix(&expiry_drop); + let (expiry_row, expiry_drop) = dropdown_row(&gettext("Expires"), &expiry_names, 0); let create = group_button(&gettext("Create Public Link")); // Enter in the password field creates the link. @@ -734,6 +790,142 @@ pub(crate) fn repaint_share_link(state: &Rc, link: Option<&PublicLi *state.link_rows.borrow_mut() = rows; } +/// The settings of an existing link, collapsed under one row. Each control +/// applies at once, the way a member's role does. While a change is on its way +/// the whole row is insensitive: the daemon fills in what a change keeps from +/// the link as it stands, so two changes in flight could undo each other. +fn link_settings_row(state: &Rc, link: &PublicLinkInfo) -> adw::ExpanderRow { + let now = glib::real_time() / 1_000_000; + let expander = adw::ExpanderRow::builder() + .title(gettext("Link settings")) + .subtitle(gettext( + "Change who can edit, the password or the expiry. The link stays the same.", + )) + .build(); + + let selected_role = u32::from(link.role == "editor"); + let (role_row, role_drop) = dropdown_row(&gettext("Link role"), &link_roles(), selected_role); + let (state_w, expander_w, id) = (Rc::downgrade(state), expander.clone(), link.id.clone()); + role_drop.connect_selected_notify(move |d| { + let Some(state) = state_w.upgrade() else { + return; + }; + let role = if d.selected() == 1 { + "editor" + } else { + "viewer" + }; + let request = state.target.update_link( + id.clone(), + Some(role.into()), + LinkChange::Keep, + LinkChange::Keep, + ); + share_dialog_update_link(&state, request, &expander_w); + }); + expander.add_row(&role_row); + + let current = link.expires; + let (expiry_row, expiry_drop) = + dropdown_row(&gettext("Expires"), &link_expiry_choices(current, now), 0); + let (state_w, expander_w, id) = (Rc::downgrade(state), expander.clone(), link.id.clone()); + expiry_drop.connect_selected_notify(move |d| { + let Some(state) = state_w.upgrade() else { + return; + }; + let expires = link_expiry_change(d.selected(), current, glib::real_time() / 1_000_000); + if expires == LinkChange::Keep { + return; + } + let request = state + .target + .update_link(id.clone(), None, LinkChange::Keep, expires); + share_dialog_update_link(&state, request, &expander_w); + }); + expander.add_row(&expiry_row); + + let pw_row = adw::PasswordEntryRow::builder() + .title(if link.has_password { + gettext("New password") + } else { + gettext("Add a password") + }) + .show_apply_button(true) + .build(); + let (state_w, expander_w, id) = (Rc::downgrade(state), expander.clone(), link.id.clone()); + pw_row.connect_apply(move |row| { + let Some(state) = state_w.upgrade() else { + return; + }; + let password = row.text().to_string(); + if password.is_empty() { + return; + } + let request = state.target.update_link( + id.clone(), + None, + LinkChange::Set(password), + LinkChange::Keep, + ); + share_dialog_update_link(&state, request, &expander_w); + }); + expander.add_row(&pw_row); + + if link.has_password { + let remove = gtk4::Button::builder() + .label(gettext("Remove")) + .valign(gtk4::Align::Center) + .build(); + remove.add_css_class("flat"); + let row = adw::ActionRow::builder() + .title(gettext("Remove the password")) + .subtitle(gettext( + "Anyone with the link can open it without a password.", + )) + .build(); + row.add_suffix(&remove); + let (state_w, expander_w, id) = (Rc::downgrade(state), expander.clone(), link.id.clone()); + remove.connect_clicked(move |_| { + let Some(state) = state_w.upgrade() else { + return; + }; + let request = + state + .target + .update_link(id.clone(), None, LinkChange::Remove, LinkChange::Keep); + share_dialog_update_link(&state, request, &expander_w); + }); + expander.add_row(&row); + } + expander +} + +/// Send a link change, then reload the dialog: on success to show the link as +/// it now is, on failure to put the controls back to what the link still is. +fn share_dialog_update_link( + state: &Rc, + request: Request, + settings: &adw::ExpanderRow, +) { + settings.set_sensitive(false); + let rx = spawn_request(state.ui.dirs.control_socket(), request); + let state = state.clone(); + glib::spawn_future_local(async move { + match rx.recv().await { + Ok(Ok(Response::PublicLink { .. })) => toast(&state.ui, &gettext("Link updated")), + Ok(Ok(Response::Error { message, .. })) => { + toast_error(&state.ui, &gettext("Couldn't change the link"), &message) + } + _ => toast_error( + &state.ui, + &gettext("Couldn't change the link"), + &gettext("The Proton Drive service didn't respond."), + ), + } + share_dialog_reload(&state); + }); +} + /// Create a public link, then reload the dialog so the copy/remove controls /// replace the create form (and the freshly minted URL is shown). pub(crate) fn share_dialog_create_link( @@ -863,6 +1055,28 @@ mod tests { assert_eq!(link_expiry_at(99, 0), None); } + #[test] + fn choosing_an_expiry_keeps_removes_or_sets_it() { + let now = 1_000; + // No expiry yet: the choices are just Never and the lifetimes. + assert_eq!(link_expiry_choices(None, now).len(), LINK_EXPIRY.len()); + assert_eq!(link_expiry_change(0, None, now), LinkChange::Keep); + assert_eq!( + link_expiry_change(2, None, now), + LinkChange::Set(now + 7 * 86_400) + ); + + // An expiry set: it comes first, then Never and the lifetimes. + let at = Some(2_000_000_000); + assert_eq!(link_expiry_choices(at, now).len(), LINK_EXPIRY.len() + 1); + assert_eq!(link_expiry_change(0, at, now), LinkChange::Keep); + assert_eq!(link_expiry_change(1, at, now), LinkChange::Remove); + assert_eq!( + link_expiry_change(2, at, now), + LinkChange::Set(now + 86_400) + ); + } + #[test] fn past_expiry_reads_expired() { assert_eq!(link_expiry_label(10, 20), "expired"); diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b13931e..c296761 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -25,6 +25,13 @@ scratch (user data in `staging/` and `recovery/` is never touched by this). `pdfs copy ~/ProtonDrive/report.pdf ~/ProtonDrive/Archive`. A folder is copied with everything in it, and a name already taken gets a " (1)" suffix. A file or folder with changes that have not synced yet is refused until they have. +- **Change a public link without getting a new one.** In **Share…**, open **Link settings** under + the link to switch between Viewer and Editor, set, change or remove the password, and change or + remove the expiry. The address stays the same, so people who already have the link keep it. + From a terminal: `pdfs public-link update PATH ID [--role] [--password | --no-password] + [--expires EPOCH | --no-expiry]`. `pdfs members` now also shows when a link expires. +- **Folder sizes.** **Details** shows how much a folder holds and how many items are in it, as + Proton Drive counts it, including items in the trash. From a terminal: `pdfs du PATH`. ### Changed - **Reorganised documentation, now also on the diff --git a/docs/CLI.md b/docs/CLI.md index ffa582b..a4fa60d 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -59,6 +59,7 @@ browser, complete it, then press Enter. | `pdfs rename PATH NEW_NAME` | Rename a file or folder. | | `pdfs move PATH... NEW_PARENT` | Move one or more files or folders into another folder. The two may be in different locations (My files, an on-demand or a mirrored synced folder); the move happens on Proton Drive, without downloading or uploading anything. | | `pdfs copy PATH... NEW_PARENT` | Copy one or more files or folders into another folder in My files. The copy happens on Proton Drive, without downloading or uploading anything; a name already taken gets a " (1)" suffix. Changes that have not synced yet must sync first. | +| `pdfs du PATH` | Show how much a folder holds on Proton Drive and how many items are in it. The size includes items in the trash. | | `pdfs rm PATH` | Move to the Trash. | | `pdfs upload SOURCES... [-t FOLDER]` | Upload local files and folders (recursively) in the background. Follow with `pdfs transfers`. | | `pdfs refresh [TARGET] [--full]` | Forget a cached listing so the next read fetches it again. `TARGET` is a folder, `trash` or `photos`; `--full` with `photos` re-reads every photo's metadata. | @@ -134,10 +135,11 @@ commands are for scripts and for cases where the mount is not available. | Command | Description | |---|---| | `pdfs share PATH EMAILS... [--role viewer\|editor\|admin] [--message TEXT]` | Invite people to a file or folder. | -| `pdfs members PATH` | List members, pending invitations and the public link. | +| `pdfs members PATH` | List members, pending invitations and the public link, with the link's id and expiry. | | `pdfs share-role PATH ID KIND ROLE` | Change a member's or invitation's role. | | `pdfs unshare PATH [ID KIND]` | Stop sharing, or remove one member or invitation. | | `pdfs public-link create PATH [--role] [--password] [--expires EPOCH]` | Create a public link. `--expires` takes Unix seconds. | +| `pdfs public-link update PATH ID [--role] [--password TEXT \| --no-password] [--expires EPOCH \| --no-expiry]` | Change a public link's role, password or expiry. The URL stays the same, and an option you leave out is kept. | | `pdfs public-link remove PATH ID` | Remove a public link. | | `pdfs shared` | List what you share. | | `pdfs shared-with-me [UID]` | List what others share with you, or the contents of one shared folder. | diff --git a/docs/FILES.md b/docs/FILES.md index 6e0e5aa..2b4f6fb 100644 --- a/docs/FILES.md +++ b/docs/FILES.md @@ -59,7 +59,8 @@ folder off instead. The **My files** page shows the same files without going through the folder. It has a grid and a list view, sorting, thumbnails (including camera RAW previews), multi-select, and drag and drop to upload. **Details** (Alt+Enter) shows the size, dates, sharing and version history of the -selected item. +selected item. For a folder, the size and the number of items in it come from Proton Drive and +include items in the trash; `pdfs du PATH` prints the same. Right-click an item for more. **Make a Copy** copies it into the same folder, and **Copy To…** copies it, or a whole selection, into another folder in My files. The copy is made on Proton diff --git a/docs/SHARING.md b/docs/SHARING.md index 8364f68..d214b45 100644 --- a/docs/SHARING.md +++ b/docs/SHARING.md @@ -33,6 +33,12 @@ In **Share…**, create a public link. Anyone with the link can open the item. Y link with a password and let it expire on a date. From a terminal, use `pdfs public-link create` and `pdfs public-link remove`. +To change a link later, open **Link settings** under it. You can switch it between Viewer and +Editor, set, change or remove its password, and change or remove its expiry. The address stays +the same, so everyone who has the link keeps it. From a terminal, use `pdfs public-link update`; +`pdfs members` shows the link's id. A link made long ago by an older Proton app may not be +changeable; remove it and create a new one instead. + ## See what you share **Shared by me** lists everything you share. Filter it by links, by people, or by expired links. diff --git a/po/de.po b/po/de.po index d820ae9..1ad915c 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: German\n" @@ -515,7 +515,7 @@ msgstr "Ansichtsoptionen" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Wird geladen …" @@ -1300,9 +1300,10 @@ msgstr "Alben konnten nicht geladen werden" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1315,7 +1316,7 @@ msgstr "Der Proton-Drive-Dienst hat nicht geantwortet." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1507,6 +1508,7 @@ msgstr "Name" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1616,7 +1618,7 @@ msgstr "Verschieben in den Papierkorb fehlgeschlagen" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive ist nicht verbunden." @@ -1799,7 +1801,7 @@ msgstr "Für „Öffnen mit“ muss der Proton-Drive-Dienst laufen." #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Link kopiert" @@ -2505,7 +2507,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Entfernen" @@ -4306,14 +4309,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Betrachter" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Bearbeiter" @@ -4474,7 +4477,7 @@ msgid "Link removed" msgstr "Link entfernt" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Der Link konnte nicht entfernt werden" @@ -4538,7 +4541,7 @@ msgid "People" msgstr "Personen" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Link kopieren" @@ -5630,7 +5633,7 @@ msgid "Info" msgstr "Info" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Eine Kopie auf diesem Computer behalten, auch ohne Verbindung." @@ -5668,17 +5671,25 @@ msgstr "Ordner" msgid "File" msgstr "Datei" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Größe auf Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Von Proton Drive gezählt, einschließlich der Objekte im Papierkorb." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Auf diesem Computer behalten, weil ein übergeordneter Ordner offline " "verfügbar ist." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5686,57 +5697,68 @@ msgstr "" "Eine Kopie von allem in diesem Ordner auf diesem Computer behalten, auch " "ohne Verbindung." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Ordner öffnen" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Freigaben konnten nicht geladen werden" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Die Größe konnte nicht geladen werden" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Versionen konnten nicht geladen werden" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Nur ich" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Alle mit dem Link" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Mit {n} Person geteilt" msgstr[1] "Mit {n} Personen geteilt" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Mit {n} Person geteilt · Öffentlicher Link" msgstr[1] "Mit {n} Personen geteilt · Öffentlicher Link" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} Element" +msgstr[1] "{size} · {n} Elemente" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Keine früheren Versionen" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 Version · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5760,123 +5782,123 @@ msgstr "7 Tage" msgid "30 days" msgstr "30 Tage" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Teilen nicht möglich" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Teilen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Personen einladen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "Proton- und andere E-Mail-Adressen, durch Leerzeichen oder Kommas getrennt." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "E-Mail-Adressen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Rolle" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Nachricht (optional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Einladungen senden" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Personen mit Zugriff" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Öffentlicher Link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "„{text}“ ist keine E-Mail-Adresse" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Einladungen gesendet" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Einladungen konnten nicht gesendet werden" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Noch hat niemand sonst Zugriff." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Einladung ausstehend" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Einladung ausstehend, noch kein Proton-Konto" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Rolle aktualisiert" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Die Rolle konnte nicht aktualisiert werden" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Zugriff entfernen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Zugriff entfernen?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} kann dieses Element nicht mehr öffnen." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Zugriff entfernt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Zugriff konnte nicht entfernt werden" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Alle mit dem Link ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "passwortgeschützt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Link entfernen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Öffentlichen Link entfernen?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5884,51 +5906,87 @@ msgstr "" "Der Link funktioniert für niemanden mehr, der ihn hat. Ein neuer Link erhält " "eine andere Adresse." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Link entfernen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Öffentlicher Link entfernt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Rolle des Links" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Passwort (optional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Läuft ab" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Öffentlichen Link erstellen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Link-Einstellungen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Ändern, wer bearbeiten darf, das Passwort oder den Ablauf. Der Link bleibt derselbe." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Neues Passwort" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Passwort hinzufügen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Passwort entfernen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Jeder mit dem Link kann ihn ohne Passwort öffnen." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Link aktualisiert" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Der Link konnte nicht geändert werden" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Öffentlicher Link erstellt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Der Link konnte nicht erstellt werden" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "abgelaufen" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "läuft ab am {date}" diff --git a/po/en_GB.po b/po/en_GB.po index cba2f5d..fc5ae38 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\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" @@ -509,7 +509,7 @@ msgstr "View Options" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Loading…" @@ -1288,9 +1288,10 @@ msgstr "Couldn't load albums" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1303,7 +1304,7 @@ msgstr "The Proton Drive service didn't respond." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1495,6 +1496,7 @@ msgstr "Name" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1604,7 +1606,7 @@ msgstr "Couldn't move to Trash" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive isn't connected." @@ -1783,7 +1785,7 @@ msgstr "Open With needs the Proton Drive service to be running." #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Link copied" @@ -2476,7 +2478,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Remove" @@ -4231,14 +4234,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Viewer" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Editor" @@ -4395,7 +4398,7 @@ msgid "Link removed" msgstr "Link removed" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Couldn't remove the link" @@ -4458,7 +4461,7 @@ msgid "People" msgstr "People" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Copy link" @@ -5516,7 +5519,7 @@ msgid "Info" msgstr "Info" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Keep a copy on this computer, even without a connection." @@ -5554,15 +5557,23 @@ msgstr "Folder" msgid "File" msgstr "File" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Size on Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Counted by Proton Drive, including items in the trash." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "Kept on this computer because a folder it is in is available offline." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5570,57 +5581,68 @@ msgstr "" "Keep a copy of everything in this folder on this computer, even without a " "connection." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Open folder" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Couldn't load sharing" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Couldn't load the size" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Couldn't load versions" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Only you" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Anyone with the link" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Shared with {n} person" msgstr[1] "Shared with {n} people" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Shared with {n} person · Public link" msgstr[1] "Shared with {n} people · Public link" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} item" +msgstr[1] "{size} · {n} items" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "No earlier versions" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 version · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5644,122 +5666,122 @@ msgstr "7 days" msgid "30 days" msgstr "30 days" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Can't share" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Share" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Invite people" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "Proton and non-Proton email addresses, separated by spaces or commas." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Email addresses" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Role" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Message (optional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Send Invitations" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "People with access" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Public link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "“{text}” isn't an email address" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Invitations sent" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Couldn't send invitations" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "No one else has access yet." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Invitation pending" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Invitation pending, no Proton account yet" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Role updated" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Couldn't update the role" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Remove access" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Remove Access?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} will no longer be able to open this item." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Access removed" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Couldn't remove access" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Anyone with the link ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "password-protected" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Remove link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Remove Public Link?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5767,51 +5789,87 @@ msgstr "" "The link stops working for everyone who has it. A new link will have a " "different address." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Remove Link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Public link removed" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Link role" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Password (optional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Expires" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Create Public Link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Link settings" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Change who can edit, the password or the expiry. The link stays the same." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "New password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Add a password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Remove the password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Anyone with the link can open it without a password." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Link updated" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Couldn't change the link" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Public link created" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Couldn't create the link" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "expired" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "expires {date}" diff --git a/po/es.po b/po/es.po index 4ae9382..06647ae 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Spanish\n" @@ -512,7 +512,7 @@ msgstr "Opciones de vista" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Cargando…" @@ -1294,9 +1294,10 @@ msgstr "No se pudieron cargar los álbumes" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1309,7 +1310,7 @@ msgstr "El servicio de Proton Drive no respondió." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1501,6 +1502,7 @@ msgstr "Nombre" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1610,7 +1612,7 @@ msgstr "No se pudo mover a la papelera" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive no está conectado." @@ -1791,7 +1793,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Enlace copiado" @@ -2490,7 +2492,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Quitar" @@ -4278,14 +4281,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Lector" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Editor" @@ -4444,7 +4447,7 @@ msgid "Link removed" msgstr "Enlace quitado" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "No se pudo quitar el enlace" @@ -4507,7 +4510,7 @@ msgid "People" msgstr "Personas" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Copiar enlace" @@ -5585,7 +5588,7 @@ msgid "Info" msgstr "Información" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Conservar una copia en este equipo, incluso sin conexión." @@ -5623,17 +5626,25 @@ msgstr "Carpeta" msgid "File" msgstr "Archivo" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Tamaño en Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Calculado por Proton Drive, incluidos los elementos de la papelera." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Se conserva en este equipo porque una carpeta que lo contiene está " "disponible sin conexión." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5641,57 +5652,68 @@ msgstr "" "Conservar una copia de todo el contenido de esta carpeta en este equipo, " "incluso sin conexión." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Abrir carpeta" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "No se pudo cargar la compartición" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "No se pudo cargar el tamaño" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "No se pudieron cargar las versiones" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Solo usted" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Cualquiera con el enlace" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Compartido con {n} persona" msgstr[1] "Compartido con {n} personas" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Compartido con {n} persona · Enlace público" msgstr[1] "Compartido con {n} personas · Enlace público" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} elemento" +msgstr[1] "{size} · {n} elementos" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "No hay versiones anteriores" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 versión · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5715,124 +5737,124 @@ msgstr "7 días" msgid "30 days" msgstr "30 días" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "No se puede compartir" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Compartir" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Invitar a personas" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "Direcciones de correo electrónico de Proton y de otros proveedores, " "separadas por espacios o comas." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Direcciones de correo electrónico" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Rol" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Mensaje (opcional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Enviar invitaciones" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Personas con acceso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Enlace público" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "“{text}” no es una dirección de correo electrónico" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Invitaciones enviadas" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "No se pudieron enviar las invitaciones" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Nadie más tiene acceso todavía." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Invitación pendiente" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Invitación pendiente, aún sin cuenta de Proton" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Rol actualizado" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "No se pudo actualizar el rol" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Quitar el acceso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "¿Quitar el acceso?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} ya no podrá abrir este elemento." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Acceso quitado" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "No se pudo quitar el acceso" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Cualquiera con el enlace ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "protegido con contraseña" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Quitar el enlace" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "¿Quitar el enlace público?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5840,51 +5862,87 @@ msgstr "" "El enlace deja de funcionar para todas las personas que lo tienen. Un enlace " "nuevo tendrá una dirección distinta." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Quitar enlace" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Enlace público quitado" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Rol del enlace" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Contraseña (opcional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Caduca" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Crear enlace público" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Ajustes del enlace" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Cambie quién puede editar, la contraseña o la caducidad. El enlace no cambia." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nueva contraseña" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Añadir una contraseña" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Quitar la contraseña" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Cualquiera con el enlace puede abrirlo sin contraseña." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Enlace actualizado" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "No se pudo cambiar el enlace" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Enlace público creado" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "No se pudo crear el enlace" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "caducado" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "caduca el {date}" diff --git a/po/fr.po b/po/fr.po index c4f16b3..6e41a9b 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: French\n" @@ -515,7 +515,7 @@ msgstr "Options d’affichage" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Chargement…" @@ -1305,9 +1305,10 @@ msgstr "Impossible de charger les albums" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1320,7 +1321,7 @@ msgstr "Le service Proton Drive n’a pas répondu." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1512,6 +1513,7 @@ msgstr "Nom" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1621,7 +1623,7 @@ msgstr "Impossible de mettre à la corbeille" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive n’est pas connecté." @@ -1804,7 +1806,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Lien copié" @@ -2504,7 +2506,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Retirer" @@ -4311,14 +4314,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Lecteur" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Éditeur" @@ -4479,7 +4482,7 @@ msgid "Link removed" msgstr "Lien retiré" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Impossible de supprimer le lien" @@ -4542,7 +4545,7 @@ msgid "People" msgstr "Personnes" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Copier le lien" @@ -5631,7 +5634,7 @@ msgid "Info" msgstr "Informations" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Conserver une copie sur cet ordinateur, même sans connexion." @@ -5669,17 +5672,25 @@ msgstr "Dossier" msgid "File" msgstr "Fichier" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Taille sur Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Calculée par Proton Drive, éléments de la corbeille compris." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Conservé sur cet ordinateur, car un dossier qui le contient est disponible " "hors ligne." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5687,57 +5698,68 @@ msgstr "" "Conserver une copie de tout le contenu de ce dossier sur cet ordinateur, " "même sans connexion." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Ouvrir le dossier" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Impossible de charger le partage" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Impossible de charger la taille" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Impossible de charger les versions" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Vous uniquement" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Toute personne disposant du lien" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Partagé avec {n} personne" msgstr[1] "Partagé avec {n} personnes" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Partagé avec {n} personne · Lien public" msgstr[1] "Partagé avec {n} personnes · Lien public" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} élément" +msgstr[1] "{size} · {n} éléments" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Aucune version antérieure" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 version · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5761,124 +5783,124 @@ msgstr "7 jours" msgid "30 days" msgstr "30 jours" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Partage impossible" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Partager" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Inviter des personnes" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "Adresses électroniques Proton ou non, séparées par des espaces ou des " "virgules." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Adresses électroniques" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Rôle" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Message (facultatif)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Envoyer les invitations" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Personnes ayant accès" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Lien public" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "« {text} » n’est pas une adresse électronique" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Invitations envoyées" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Impossible d’envoyer les invitations" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Personne d’autre n’a encore accès." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Invitation en attente" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Invitation en attente, pas encore de compte Proton" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Rôle mis à jour" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Impossible de mettre à jour le rôle" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Retirer l’accès" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Retirer l’accès ?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} ne pourra plus ouvrir cet élément." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Accès retiré" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Impossible de retirer l’accès" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Toute personne disposant du lien ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "protégé par mot de passe" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Supprimer le lien" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Supprimer le lien public ?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5886,51 +5908,87 @@ msgstr "" "Le lien cesse de fonctionner pour toutes les personnes qui l’ont. Un nouveau " "lien aura une adresse différente." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Supprimer le lien" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Lien public supprimé" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Rôle du lien" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Mot de passe (facultatif)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Expiration" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Créer un lien public" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Paramètres du lien" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Modifiez qui peut modifier, le mot de passe ou l’expiration. Le lien reste le même." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Ajouter un mot de passe" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Supprimer le mot de passe" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Toute personne disposant du lien peut l’ouvrir sans mot de passe." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Lien mis à jour" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Impossible de modifier le lien" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Lien public créé" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Impossible de créer le lien" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "expiré" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "expire le {date}" diff --git a/po/it.po b/po/it.po index d33586b..f87bb1f 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Italian\n" @@ -511,7 +511,7 @@ msgstr "Opzioni di visualizzazione" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Caricamento…" @@ -1299,9 +1299,10 @@ msgstr "Impossibile caricare gli album" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1314,7 +1315,7 @@ msgstr "Il servizio di Proton Drive non ha risposto." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1506,6 +1507,7 @@ msgstr "Nome" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1615,7 +1617,7 @@ msgstr "Impossibile spostare nel cestino" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive non è connesso." @@ -1796,7 +1798,7 @@ msgstr "«Apri con» richiede che il servizio di Proton Drive sia in esecuzione. #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Collegamento copiato" @@ -2502,7 +2504,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Rimuovi" @@ -4296,14 +4299,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Visualizzatore" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Editor" @@ -4463,7 +4466,7 @@ msgid "Link removed" msgstr "Collegamento rimosso" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Impossibile rimuovere il collegamento" @@ -4526,7 +4529,7 @@ msgid "People" msgstr "Persone" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Copia collegamento" @@ -5610,7 +5613,7 @@ msgid "Info" msgstr "Informazioni" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Mantieni una copia su questo computer, anche senza connessione." @@ -5648,17 +5651,25 @@ msgstr "Cartella" msgid "File" msgstr "File" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Dimensione su Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Calcolata da Proton Drive, compresi gli elementi nel cestino." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Mantenuto su questo computer perché una cartella che lo contiene è " "disponibile offline." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5666,57 +5677,68 @@ msgstr "" "Mantieni una copia di tutto il contenuto di questa cartella su questo " "computer, anche senza connessione." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Apri cartella" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Impossibile caricare la condivisione" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Impossibile caricare la dimensione" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Impossibile caricare le versioni" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Solo tu" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Chiunque abbia il collegamento" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Condiviso con {n} persona" msgstr[1] "Condiviso con {n} persone" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Condiviso con {n} persona · Collegamento pubblico" msgstr[1] "Condiviso con {n} persone · Collegamento pubblico" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} elemento" +msgstr[1] "{size} · {n} elementi" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Nessuna versione precedente" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 versione · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5740,122 +5762,122 @@ msgstr "7 giorni" msgid "30 days" msgstr "30 giorni" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Impossibile condividere" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Condividi" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Invita persone" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "Indirizzi email Proton e non Proton, separati da spazi o virgole." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Indirizzi email" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Ruolo" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Messaggio (facoltativo)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Invia inviti" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Persone con accesso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Collegamento pubblico" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "“{text}” non è un indirizzo email" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Inviti inviati" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Impossibile inviare gli inviti" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Nessun altro ha ancora accesso." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Invito in sospeso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Invito in sospeso, ancora senza account Proton" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Ruolo aggiornato" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Impossibile aggiornare il ruolo" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Rimuovi accesso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Rimuovere l'accesso?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} non potrà più aprire questo elemento." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Accesso rimosso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Impossibile rimuovere l'accesso" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Chiunque abbia il collegamento ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "protetto da password" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Rimuovi collegamento" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Rimuovere il collegamento pubblico?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5863,51 +5885,87 @@ msgstr "" "Il collegamento smette di funzionare per chiunque lo abbia. Un nuovo " "collegamento avrà un indirizzo diverso." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Rimuovi collegamento" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Collegamento pubblico rimosso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Ruolo del collegamento" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Password (facoltativa)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Scadenza" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Crea collegamento pubblico" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Impostazioni del collegamento" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Cambia chi può modificare, la password o la scadenza. Il collegamento resta lo stesso." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nuova password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Aggiungi una password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Rimuovi la password" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Chiunque abbia il collegamento può aprirlo senza password." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Collegamento aggiornato" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Impossibile modificare il collegamento" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Collegamento pubblico creato" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Impossibile creare il collegamento" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "scaduto" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "scade il {date}" diff --git a/po/nl.po b/po/nl.po index a679be4..e3bad04 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Dutch\n" @@ -512,7 +512,7 @@ msgstr "Weergaveopties" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Laden…" @@ -1295,9 +1295,10 @@ msgstr "Kon albums niet laden" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1310,7 +1311,7 @@ msgstr "De Proton Drive-service reageerde niet." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1502,6 +1503,7 @@ msgstr "Naam" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1611,7 +1613,7 @@ msgstr "Kon niet naar prullenbak verplaatsen" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive is niet verbonden." @@ -1792,7 +1794,7 @@ msgstr "Voor ‘Openen met’ moet de Proton Drive-service draaien." #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Link gekopieerd" @@ -2494,7 +2496,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Verwijderen" @@ -4287,14 +4290,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Lezer" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Bewerker" @@ -4456,7 +4459,7 @@ msgid "Link removed" msgstr "Link verwijderd" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Kon de link niet verwijderen" @@ -4519,7 +4522,7 @@ msgid "People" msgstr "Personen" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Link kopiëren" @@ -5597,7 +5600,7 @@ msgid "Info" msgstr "Info" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Een kopie op deze computer bewaren, ook zonder verbinding." @@ -5635,17 +5638,25 @@ msgstr "Map" msgid "File" msgstr "Bestand" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Grootte op Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Geteld door Proton Drive, inclusief items in de prullenbak." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Op deze computer bewaard omdat een map waarin het staat offline beschikbaar " "is." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5653,57 +5664,68 @@ msgstr "" "Een kopie van alles in deze map op deze computer bewaren, ook zonder " "verbinding." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Map openen" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Kon delen niet laden" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Kon de grootte niet laden" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Kon versies niet laden" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Alleen jij" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Iedereen met de link" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Gedeeld met {n} persoon" msgstr[1] "Gedeeld met {n} personen" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Gedeeld met {n} persoon · Openbare link" msgstr[1] "Gedeeld met {n} personen · Openbare link" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} item" +msgstr[1] "{size} · {n} items" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Geen eerdere versies" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 versie · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5727,123 +5749,123 @@ msgstr "7 dagen" msgid "30 days" msgstr "30 dagen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Kan niet delen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Delen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Personen uitnodigen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "E-mailadressen van Proton en daarbuiten, gescheiden door spaties of komma's." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "E-mailadressen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Rol" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Bericht (optioneel)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Uitnodigingen versturen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Personen met toegang" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Openbare link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "“{text}” is geen e-mailadres" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Uitnodigingen verstuurd" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Kon uitnodigingen niet versturen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Nog niemand anders heeft toegang." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Uitnodiging openstaand" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Uitnodiging openstaand, nog geen Proton-account" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Rol bijgewerkt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Kon de rol niet bijwerken" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Toegang intrekken" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Toegang intrekken?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} kan dit item niet meer openen." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Toegang ingetrokken" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Kon toegang niet intrekken" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Iedereen met de link ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "met wachtwoord beveiligd" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Link verwijderen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Openbare link verwijderen?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5851,51 +5873,87 @@ msgstr "" "De link werkt niet meer voor iedereen die hem heeft. Een nieuwe link krijgt " "een ander adres." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Link verwijderen" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Openbare link verwijderd" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Rol van link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Wachtwoord (optioneel)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Verloopt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Openbare link aanmaken" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Linkinstellingen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Wijzig wie mag bewerken, het wachtwoord of de vervaldatum. De link blijft hetzelfde." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nieuw wachtwoord" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Wachtwoord toevoegen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Wachtwoord verwijderen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Iedereen met de link kan hem zonder wachtwoord openen." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Link bijgewerkt" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Kon de link niet wijzigen" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Openbare link aangemaakt" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Kon de link niet aanmaken" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "verlopen" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "verloopt {date}" diff --git a/po/pdfs.pot b/po/pdfs.pot index 59e627a..7a4ca64 100644 --- a/po/pdfs.pot +++ b/po/pdfs.pot @@ -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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -484,7 +484,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "" @@ -1253,9 +1253,10 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1268,7 +1269,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1460,6 +1461,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1569,7 +1571,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "" @@ -1748,7 +1750,7 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "" @@ -2422,7 +2424,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "" @@ -4099,14 +4102,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "" @@ -4259,7 +4262,7 @@ msgid "Link removed" msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "" @@ -4322,7 +4325,7 @@ msgid "People" msgstr "" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "" @@ -5351,7 +5354,7 @@ msgid "Info" msgstr "" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "" @@ -5389,71 +5392,90 @@ msgstr "" msgid "File" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "" msgstr[1] "" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "" msgstr[1] "" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "" +msgstr[1] "" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5477,172 +5499,208 @@ msgstr "" msgid "30 days" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "" diff --git a/po/pl.po b/po/pl.po index 2972048..dbe0723 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Polish\n" @@ -519,7 +519,7 @@ msgstr "Opcje widoku" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Wczytywanie…" @@ -1326,9 +1326,10 @@ msgstr "Nie można wczytać albumów" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1341,7 +1342,7 @@ msgstr "Usługa Proton Drive nie odpowiedziała." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1538,6 +1539,7 @@ msgstr "Nazwa" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1649,7 +1651,7 @@ msgstr "Nie można przenieść do kosza" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "Proton Drive nie jest połączony." @@ -1838,7 +1840,7 @@ msgstr "„Otwórz za pomocą” wymaga uruchomionej usługi Proton Drive." #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Skopiowano odnośnik" @@ -2552,7 +2554,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Usuń" @@ -4356,14 +4359,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Przeglądający" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Redaktor" @@ -4529,7 +4532,7 @@ msgid "Link removed" msgstr "Usunięto odnośnik" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Nie można usunąć odnośnika" @@ -4592,7 +4595,7 @@ msgid "People" msgstr "Osoby" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Skopiuj odnośnik" @@ -5689,7 +5692,7 @@ msgid "Info" msgstr "Informacje" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "" "Przechowywanie kopii na tym komputerze, dostępnej nawet bez połączenia." @@ -5728,17 +5731,25 @@ msgstr "Katalog" msgid "File" msgstr "Plik" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Rozmiar w Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Policzony przez Proton Drive, łącznie z elementami w koszu." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Przechowywane na tym komputerze, ponieważ katalog nadrzędny jest dostępny " "offline." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." @@ -5746,33 +5757,37 @@ msgstr "" "Przechowywanie kopii całej zawartości tego katalogu na tym komputerze, " "dostępnej nawet bez połączenia." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Otwórz katalog" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Nie można wczytać udostępniania" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Nie można wczytać rozmiaru" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Nie można wczytać wersji" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Tylko ja" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Każdy, kto ma odnośnik" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" @@ -5780,7 +5795,7 @@ msgstr[0] "Udostępniono {n} osobie" msgstr[1] "Udostępniono {n} osobom" msgstr[2] "Udostępniono {n} osobom" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" @@ -5788,17 +5803,25 @@ msgstr[0] "Udostępniono {n} osobie · publiczny odnośnik" msgstr[1] "Udostępniono {n} osobom · publiczny odnośnik" msgstr[2] "Udostępniono {n} osobom · publiczny odnośnik" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} element" +msgstr[1] "{size} · {n} elementy" +msgstr[2] "{size} · {n} elementów" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Brak wcześniejszych wersji" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 wersja · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5823,123 +5846,123 @@ msgstr "7 dni" msgid "30 days" msgstr "30 dni" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Nie można udostępnić" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Udostępnij" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Zaproś osoby" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "Adresy e-mail w Proton i poza nim, oddzielone spacjami lub przecinkami." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Adresy e-mail" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Rola" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Wiadomość (opcjonalnie)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Wyślij zaproszenia" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Osoby z dostępem" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Publiczny odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "„{text}” nie jest adresem e-mail" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Wysłano zaproszenia" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Nie można wysłać zaproszeń" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Nikt inny nie ma jeszcze dostępu." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Zaproszenie oczekuje" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Zaproszenie oczekuje, brak jeszcze konta Proton" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Zaktualizowano rolę" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Nie można zaktualizować roli" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Usuń dostęp" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Usunąć dostęp?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} nie będzie już mieć możliwości otwarcia tego elementu." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Usunięto dostęp" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Nie można usunąć dostępu" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Każdy, kto ma odnośnik ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "chroniony hasłem" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Usuń odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Usunąć publiczny odnośnik?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5947,51 +5970,87 @@ msgstr "" "Odnośnik przestanie działać dla wszystkich, którzy go mają. Nowy odnośnik " "będzie miał inny adres." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Usuń odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Usunięto publiczny odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Rola odnośnika" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Hasło (opcjonalnie)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Wygasa" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Utwórz publiczny odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Ustawienia odnośnika" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Proszę zmienić, kto może edytować, hasło lub datę wygaśnięcia. Odnośnik pozostaje ten sam." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nowe hasło" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Dodaj hasło" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Usuń hasło" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Każdy, kto ma odnośnik, może go otworzyć bez hasła." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Zaktualizowano odnośnik" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Nie można zmienić odnośnika" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Utworzono publiczny odnośnik" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Nie można utworzyć odnośnika" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "wygasł" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "wygasa {date}" diff --git a/po/pt_BR.po b/po/pt_BR.po index a614f63..ebb9dca 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-25 21:32+0100\n" +"POT-Creation-Date: 2026-10-25 22:10+0100\n" "PO-Revision-Date: 2026-09-23 12:00+0200\n" "Last-Translator: Proton Drive for Linux contributors\n" "Language-Team: Portuguese (Brazil)\n" @@ -511,7 +511,7 @@ msgstr "Opções de exibição" #: crates/pdfs-gui/src/app/pages/shared.rs:424 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:349 #: crates/pdfs-gui/src/app/pages/trash.rs:284 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:145 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:187 msgid "Loading…" msgstr "Carregando…" @@ -1296,9 +1296,10 @@ msgstr "Não foi possível carregar os álbuns" #: crates/pdfs-gui/src/app/pages/status.rs:1642 #: crates/pdfs-gui/src/app/pages/takeout.rs:424 #: crates/pdfs-gui/src/app/pages/takeout.rs:618 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:449 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:765 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:803 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:922 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:957 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:995 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:170 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:381 msgid "The Proton Drive service didn't respond." @@ -1311,7 +1312,7 @@ msgstr "O serviço do Proton Drive não respondeu." #: crates/pdfs-gui/src/app/pages/shared.rs:536 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:476 #: crates/pdfs-gui/src/app/widgets/details.rs:157 -#: crates/pdfs-gui/src/app/widgets/details.rs:406 +#: crates/pdfs-gui/src/app/widgets/details.rs:413 #: crates/pdfs-gui/src/hud/preview.rs:277 msgctxt "verb" msgid "Open" @@ -1503,6 +1504,7 @@ msgstr "Nome" #: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/widgets/details.rs:88 +#: crates/pdfs-gui/src/app/widgets/details.rs:380 #: crates/pdfs-gui/src/hud/preview.rs:143 msgctxt "column" msgid "Size" @@ -1612,7 +1614,7 @@ msgstr "Não foi possível mover para a lixeira" #: crates/pdfs-gui/src/app/pages/browser.rs:2376 #: crates/pdfs-gui/src/app/pages/browser.rs:2432 #: crates/pdfs-gui/src/app/pages/browser.rs:2620 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:274 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:341 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:91 msgid "Proton Drive isn't connected." msgstr "O Proton Drive não está conectado." @@ -1791,7 +1793,7 @@ msgstr "“Abrir com” precisa que o serviço do Proton Drive esteja em execuç #: crates/pdfs-gui/src/app/pages/shared.rs:888 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:215 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:494 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:633 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:700 msgid "Link copied" msgstr "Link copiado" @@ -2491,7 +2493,8 @@ msgstr "" #: 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 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876 msgid "Remove" msgstr "Remover" @@ -4278,14 +4281,14 @@ msgstr "" #: crates/pdfs-gui/src/app/pages/shared.rs:646 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:6 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Viewer" msgstr "Leitor" #: crates/pdfs-gui/src/app/pages/shared.rs:647 #: crates/pdfs-gui/src/app/widgets/share_dialog.rs:7 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:675 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:93 msgctxt "role" msgid "Editor" msgstr "Editor" @@ -4445,7 +4448,7 @@ msgid "Link removed" msgstr "Link removido" #: crates/pdfs-gui/src/app/pages/shared.rs:1039 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:662 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:729 msgid "Couldn't remove the link" msgstr "Não foi possível remover o link" @@ -4508,7 +4511,7 @@ msgid "People" msgstr "Pessoas" #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:198 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:624 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:691 msgid "Copy link" msgstr "Copiar link" @@ -5585,7 +5588,7 @@ msgid "Info" msgstr "Informações" #: crates/pdfs-gui/src/app/widgets/details.rs:115 -#: crates/pdfs-gui/src/app/widgets/details.rs:399 +#: crates/pdfs-gui/src/app/widgets/details.rs:406 msgid "Keep a copy on this computer, even without a connection." msgstr "Manter uma cópia neste computador, mesmo sem conexão." @@ -5623,74 +5626,93 @@ msgstr "Pasta" msgid "File" msgstr "Arquivo" -#: crates/pdfs-gui/src/app/widgets/details.rs:385 +#: crates/pdfs-gui/src/app/widgets/details.rs:374 +msgid "Size on Proton Drive" +msgstr "Tamanho no Proton Drive" + +#: crates/pdfs-gui/src/app/widgets/details.rs:377 +msgid "Counted by Proton Drive, including items in the trash." +msgstr "Calculado pelo Proton Drive, incluindo os itens na lixeira." + +#: crates/pdfs-gui/src/app/widgets/details.rs:392 msgid "Proton Drive" msgstr "Proton Drive" -#: crates/pdfs-gui/src/app/widgets/details.rs:393 +#: crates/pdfs-gui/src/app/widgets/details.rs:400 msgid "Kept on this computer because a folder it is in is available offline." msgstr "" "Mantido neste computador porque uma pasta que o contém está disponível " "offline." -#: crates/pdfs-gui/src/app/widgets/details.rs:396 +#: crates/pdfs-gui/src/app/widgets/details.rs:403 msgid "" "Keep a copy of everything in this folder on this computer, even without a " "connection." msgstr "" "Manter uma cópia de tudo nesta pasta neste computador, mesmo sem conexão." -#: crates/pdfs-gui/src/app/widgets/details.rs:404 +#: crates/pdfs-gui/src/app/widgets/details.rs:411 #: crates/pdfs-gui/src/hud/preview.rs:275 msgid "Open folder" msgstr "Abrir pasta" -#: crates/pdfs-gui/src/app/widgets/details.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:442 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:448 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:465 +#: crates/pdfs-gui/src/app/widgets/details.rs:455 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:509 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:515 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:532 msgid "Couldn't load sharing" msgstr "Não foi possível carregar o compartilhamento" -#: crates/pdfs-gui/src/app/widgets/details.rs:470 +#: crates/pdfs-gui/src/app/widgets/details.rs:475 +msgid "Couldn't load the size" +msgstr "Não foi possível carregar o tamanho" + +#: crates/pdfs-gui/src/app/widgets/details.rs:495 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:165 #: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:169 msgid "Couldn't load versions" msgstr "Não foi possível carregar as versões" -#: crates/pdfs-gui/src/app/widgets/details.rs:490 +#: crates/pdfs-gui/src/app/widgets/details.rs:515 msgid "Only you" msgstr "Somente você" -#: crates/pdfs-gui/src/app/widgets/details.rs:491 +#: crates/pdfs-gui/src/app/widgets/details.rs:516 msgid "Anyone with the link" msgstr "Qualquer pessoa com o link" -#: crates/pdfs-gui/src/app/widgets/details.rs:492 +#: crates/pdfs-gui/src/app/widgets/details.rs:517 #, rust-format msgid "Shared with {n} person" msgid_plural "Shared with {n} people" msgstr[0] "Compartilhado com {n} pessoa" msgstr[1] "Compartilhado com {n} pessoas" -#: crates/pdfs-gui/src/app/widgets/details.rs:494 +#: crates/pdfs-gui/src/app/widgets/details.rs:519 #, rust-format msgid "Shared with {n} person · Public link" msgid_plural "Shared with {n} people · Public link" msgstr[0] "Compartilhado com {n} pessoa · Link público" msgstr[1] "Compartilhado com {n} pessoas · Link público" -#: crates/pdfs-gui/src/app/widgets/details.rs:506 +#: crates/pdfs-gui/src/app/widgets/details.rs:532 +#, rust-format +msgid "{size} · {n} item" +msgid_plural "{size} · {n} items" +msgstr[0] "{size} · {n} item" +msgstr[1] "{size} · {n} itens" + +#: crates/pdfs-gui/src/app/widgets/details.rs:543 msgid "No earlier versions" msgstr "Nenhuma versão anterior" #. Translators: {date} is the date of the only version. -#: crates/pdfs-gui/src/app/widgets/details.rs:508 +#: crates/pdfs-gui/src/app/widgets/details.rs:545 #, rust-format msgid "1 version · {date}" msgstr "1 versão · {date}" -#: crates/pdfs-gui/src/app/widgets/details.rs:511 +#: crates/pdfs-gui/src/app/widgets/details.rs:548 #, rust-format msgid "{n} version · latest {date}" msgid_plural "{n} versions · latest {date}" @@ -5714,123 +5736,123 @@ msgstr "7 dias" msgid "30 days" msgstr "30 dias" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:273 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:340 msgid "Can't share" msgstr "Não é possível compartilhar" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:289 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:343 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:356 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:410 msgctxt "verb" msgid "Share" msgstr "Compartilhar" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:296 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:363 msgid "Invite people" msgstr "Convidar pessoas" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:298 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:365 msgid "Proton and non-Proton email addresses, separated by spaces or commas." msgstr "" "Endereços de e-mail Proton e não Proton, separados por espaços ou vírgulas." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:302 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 msgid "Email addresses" msgstr "Endereços de e-mail" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:311 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:378 msgid "Role" msgstr "Função" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:314 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:381 msgid "Message (optional)" msgstr "Mensagem (opcional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:316 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:383 msgid "Send Invitations" msgstr "Enviar convites" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:323 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:390 msgid "People with access" msgstr "Pessoas com acesso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:326 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:393 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:679 msgid "Public link" msgstr "Link público" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:369 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:436 #, rust-format msgid "“{text}” isn't an email address" msgstr "“{text}” não é um endereço de e-mail" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:408 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:475 msgid "Invitations sent" msgstr "Convites enviados" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:409 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:476 msgid "Couldn't send invitations" msgstr "Não foi possível enviar os convites" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:477 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:544 msgid "No one else has access yet." msgstr "Ninguém mais tem acesso ainda." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:488 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:555 msgid "Invitation pending" msgstr "Convite pendente" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:489 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:556 msgid "Invitation pending, no Proton account yet" msgstr "Convite pendente, ainda sem conta Proton" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:527 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:594 msgid "Role updated" msgstr "Função atualizada" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:528 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:595 msgid "Couldn't update the role" msgstr "Não foi possível atualizar a função" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:545 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:612 msgid "Remove access" msgstr "Remover acesso" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:561 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:628 msgid "Remove Access?" msgstr "Remover acesso?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:564 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:631 #, rust-format msgid "{email} will no longer be able to open this item." msgstr "{email} não poderá mais abrir este item." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:572 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:639 msgid "Access removed" msgstr "Acesso removido" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:573 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 msgid "Couldn't remove access" msgstr "Não foi possível remover o acesso" #. Translators: {role} is the link's role, such as "Viewer". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:601 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:668 #, rust-format msgid "Anyone with the link ({role})" msgstr "Qualquer pessoa com o link ({role})" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:604 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:671 msgid "password-protected" msgstr "protegido por senha" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:640 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:707 msgid "Remove link" msgstr "Remover link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:654 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:721 msgid "Remove Public Link?" msgstr "Remover link público?" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:655 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:722 msgid "" "The link stops working for everyone who has it. A new link will have a " "different address." @@ -5838,51 +5860,87 @@ msgstr "" "O link deixa de funcionar para todos que o têm. Um novo link terá um " "endereço diferente." -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:656 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:723 msgid "Remove Link" msgstr "Remover link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:661 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:728 msgid "Public link removed" msgstr "Link público removido" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:682 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:746 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:807 msgid "Link role" msgstr "Função do link" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:686 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:748 msgid "Password (optional)" msgstr "Senha (opcional)" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:695 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:752 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:830 msgid "Expires" msgstr "Expira" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:697 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:753 msgid "Create Public Link" msgstr "Criar link público" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:756 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:800 +msgid "Link settings" +msgstr "Configurações do link" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:802 +msgid "" +"Change who can edit, the password or the expiry. The link stays the same." +msgstr "Altere quem pode editar, a senha ou a expiração. O link continua o mesmo." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:849 +msgid "New password" +msgstr "Nova senha" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:851 +msgid "Add a password" +msgstr "Adicionar uma senha" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:881 +msgid "Remove the password" +msgstr "Remover a senha" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:883 +msgid "Anyone with the link can open it without a password." +msgstr "Qualquer pessoa com o link pode abri-lo sem senha." + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:915 +msgid "Link updated" +msgstr "Link atualizado" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:917 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:921 +msgid "Couldn't change the link" +msgstr "Não foi possível alterar o link" + +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:948 msgid "Public link created" msgstr "Link público criado" -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:760 -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:764 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:952 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:956 msgid "Couldn't create the link" msgstr "Não foi possível criar o link" #. Translators: a public link past its expiry date. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:816 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1008 msgid "expired" msgstr "expirado" #. Translators: strftime format for a link's expiry date; "%x" is the locale's date, such as "09/23/26". -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:819 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1011 msgid "%x" msgstr "%x" #. Translators: {date} is the date a public link stops working. -#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:826 +#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:1018 #, rust-format msgid "expires {date}" msgstr "expira em {date}"