fix(cli,core,fuse,gui): say why the mount keeps failing, and back off

A mount that failed on every try retried every 5 s forever, and the
reason was only in the journal: the app and the tray said Connecting...
for days (B263, issue #40). The retry now doubles to a 2-minute ceiling,
and the last failure is kept in mount-failure.json for the app, the
tray, pdfs diagnose and systemctl status.

The early returns in mount left the workers they had started running
beside the next attempt (B264). They are now stopped on every error
path, without telling systemd the daemon is stopping.
This commit is contained in:
nvrl committed 2026-10-31 10:49:01 +01:00
1 parent 9460c93b50
commit e9577f953f
18 files changed
+714 -311

No files matched your search

+76 -4
View File
@@ -2375,12 +2375,21 @@ where
/// an external unmount triggers a remount; errors back off and retry. This is
/// the entry point for the systemd user service.
fn cmd_daemon(mountpoint: Option<PathBuf>) -> Result<()> {
let state_dir = AppDirs::new()?.state_dir();
// A failure an earlier daemon recorded is not this one's.
pdfs_core::mountfail::clear(&state_dir);
let mut failure: Option<pdfs_core::mountfail::MountFailure> = None;
loop {
// Wait until a session is stored. The GUI enables this service on login,
// but the service may also start at boot before the user has logged in.
wait_for_session(auth::ready, pdfs_fuse::idle_sleep)?;
match mount_once(mountpoint.clone()) {
let outcome = mount_once(mountpoint.clone());
if outcome.is_ok() {
// The mount came up, so the next failure starts a new run of them.
failure = None;
}
match outcome {
Ok(pdfs_fuse::MountOutcome::Shutdown) => {
tracing::info!("daemon stopping");
return Ok(());
@@ -2395,13 +2404,51 @@ fn cmd_daemon(mountpoint: Option<PathBuf>) -> Result<()> {
Err(e) => {
// `{:#}` so the whole anyhow chain lands in the log — the top
// context alone ("mount failed") never says *why*.
tracing::error!(error = format!("{e:#}"), "mount failed; retrying in 5s");
pdfs_fuse::idle_sleep(std::time::Duration::from_secs(5));
let error = format!("{e:#}");
let now = unix_now();
let attempts = failure.as_ref().map_or(1, |f| f.attempts.saturating_add(1));
let delay = mount_retry_delay(attempts);
tracing::error!(
error,
attempts,
retry_secs = delay.as_secs(),
"mount failed; retrying"
);
let record = pdfs_core::mountfail::MountFailure {
error: error.clone(),
since: failure.as_ref().map_or(now, |f| f.since),
attempts,
next_attempt: now + delay.as_secs() as i64,
};
if let Err(e) = pdfs_core::mountfail::record(&state_dir, &record) {
tracing::warn!(error = %e, "could not record the mount failure");
}
pdfs_fuse::notify_status(&format!("Mount failing: {error}"));
failure = Some(record);
pdfs_fuse::idle_sleep(delay);
}
}
}
}
/// How long to wait before mount attempt `attempts + 1`, after `attempts`
/// failures in a row.
///
/// Doubles from 5 s to a 2-minute ceiling. A flat 5 s retry sent about four
/// requests to Proton per attempt, tens of thousands a day from an account
/// whose mount fails on a key, which no retry fixes (`docs/BUGS.md` B263). The
/// ceiling stays at minutes because a cold start without a network fails the
/// same way, and must mount soon after the network returns.
fn mount_retry_delay(attempts: u32) -> std::time::Duration {
const BASE_SECS: u64 = 5;
const MAX_SECS: u64 = 120;
let factor = 1u64
.checked_shl(attempts.saturating_sub(1))
.unwrap_or(u64::MAX);
std::time::Duration::from_secs(BASE_SECS.saturating_mul(factor).min(MAX_SECS))
}
/// One mount run: resume the session, mount, and block until the mount ends
/// (clean shutdown or external unmount). Returns the [`MountOutcome`] so the
/// daemon loop can decide whether to exit or remount.
@@ -3857,7 +3904,23 @@ fn cmd_diagnose() -> Result<()> {
" daemon responding",
format!("stopped or unreachable: {e:#}"),
);
println!(" (start it with `systemctl --user start proton-drive.service`)");
match pdfs_core::mountfail::read(&dirs.state_dir()) {
// A daemon whose mount keeps failing never opens the socket,
// so this is the only place its reason shows (B263).
Some(failure) => report.finding(
DiagnoseLevel::Fail,
" mount",
format!(
"failing for {}, {} attempt(s): {}",
human_secs(unix_now().saturating_sub(failure.since).max(0) as u64),
failure.attempts,
failure.error
),
),
None => println!(
" (start it with `systemctl --user start proton-drive.service`)"
),
}
}
}
@@ -4017,6 +4080,15 @@ mod diagnose_tests {
#[cfg(test)]
mod login_wait_tests {
use super::*;
/// The mount retry backs off from 5 s to a ceiling of minutes, rather than
/// asking Proton every 5 s forever (`docs/BUGS.md` B263).
#[test]
fn a_failing_mount_backs_off_to_a_ceiling() {
let secs: Vec<u64> = (1..=8).map(|n| mount_retry_delay(n).as_secs()).collect();
assert_eq!(secs, [5, 10, 20, 40, 80, 120, 120, 120]);
assert_eq!(mount_retry_delay(u32::MAX).as_secs(), 120);
}
use std::time::Duration;
#[test]
+1
View File
@@ -15,6 +15,7 @@ pub mod kernelkey;
pub mod keycheck;
pub mod localindex;
pub mod menu;
pub mod mountfail;
pub mod mounts;
pub mod opener;
pub mod places;
+75
View File
@@ -0,0 +1,75 @@
//! Why the daemon's mount keeps failing, for the front ends to read.
//!
//! The control socket opens only once a mount has succeeded, so a daemon whose
//! mount fails on every try had no way to say why. The app and the tray showed
//! "Connecting…" for days while the reason sat in the journal (`docs/BUGS.md`
//! B263). The daemon now writes its last failure to a small file in the state
//! directory, next to the control socket, and removes it once a mount is up.
use std::path::{Path, PathBuf};
use serde::{Deserialize, Serialize};
/// The file's name inside the state directory.
const FILE_NAME: &str = "mount-failure.json";
/// The last failed mount attempt.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct MountFailure {
/// The error, in English, as the journal has it.
pub error: String,
/// Unix seconds of the first failure in this run of failures.
pub since: i64,
/// Failed attempts in a row.
pub attempts: u32,
/// Unix seconds of the next attempt.
pub next_attempt: i64,
}
/// Where the failure is kept for the state directory `state_dir`.
pub fn path(state_dir: &Path) -> PathBuf {
state_dir.join(FILE_NAME)
}
/// Record `failure`, replacing the one before it. Written to a temporary file
/// and renamed, so a reader never sees half of it.
pub fn record(state_dir: &Path, failure: &MountFailure) -> std::io::Result<()> {
let json = serde_json::to_vec(failure).map_err(std::io::Error::other)?;
let tmp = state_dir.join(format!("{FILE_NAME}.tmp"));
std::fs::write(&tmp, json)?;
std::fs::rename(&tmp, path(state_dir))
}
/// Forget the failure: a mount is up, or a new daemon has started.
pub fn clear(state_dir: &Path) {
let _ = std::fs::remove_file(path(state_dir));
}
/// The recorded failure, if there is one and it can be read.
pub fn read(state_dir: &Path) -> Option<MountFailure> {
let bytes = std::fs::read(path(state_dir)).ok()?;
serde_json::from_slice(&bytes).ok()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_recorded_failure_reads_back_until_cleared() {
let dir = std::env::temp_dir().join(format!("pdfs-mountfail-{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
assert_eq!(read(&dir), None);
let failure = MountFailure {
error: "fetch My Files root: missing key".into(),
since: 1_700_000_000,
attempts: 3,
next_attempt: 1_700_000_040,
};
record(&dir, &failure).unwrap();
assert_eq!(read(&dir), Some(failure));
clear(&dir);
assert_eq!(read(&dir), None);
let _ = std::fs::remove_dir_all(&dir);
}
}
+1 -1
View File
@@ -124,7 +124,7 @@ use mount::{
};
use reads::{BlockFlight, BlockRing, PREFETCH_BUDGET, Prefetch, ReaderSlot, STREAM_BYPASS_MIN};
use state::{Entry, Intervals, PendingRevision, State, StateGuard, WriteHandle};
pub use systemd::idle_sleep;
pub use systemd::{idle_sleep, status as notify_status};
use tracing::{debug, error, info, warn};
use transfers::{CountingWriter, JobGuard, OwnedCountingReader, TransferRegistry};
use r#virtual::{
+71 -28
View File
@@ -540,12 +540,11 @@ pub(crate) fn mount_with(
// and sweeps all operating on a mount that no longer exists (`docs/BUGS.md` B44).
let mut workers: Vec<std::thread::JoinHandle<()>> = Vec::new();
for worker in 0..DRAIN_WORKERS {
let core = core.clone();
workers.push(
std::thread::Builder::new()
.name(format!("pdfs-drain-{worker}"))
.spawn(move || core.run_pending_drain(worker == 0))?,
);
let drain_core = core.clone();
let spawned = std::thread::Builder::new()
.name(format!("pdfs-drain-{worker}"))
.spawn(move || drain_core.run_pending_drain(worker == 0));
keep_or_abandon(&core, control_socket, &mut workers, spawned)?;
}
// Start the folder-sync engine. It watches every mirror folder, polls the
@@ -565,24 +564,22 @@ pub(crate) fn mount_with(
info!("conflict sweep disabled by configuration");
} else {
info!(mode = ?sweep_mode, "conflict sweep enabled");
let core = core.clone();
workers.push(
std::thread::Builder::new()
.name("pdfs-conflict-sweep".into())
.spawn(move || core.run_conflict_sweep_loop())?,
);
let sweep_core = core.clone();
let spawned = std::thread::Builder::new()
.name("pdfs-conflict-sweep".into())
.spawn(move || sweep_core.run_conflict_sweep_loop());
keep_or_abandon(&core, control_socket, &mut workers, spawned)?;
}
// Watch the link for the life of the mount: a mount from the cache waits for
// the network to come back, and an online one can lose it at any moment and
// must notice it coming back just the same.
{
let core = core.clone();
workers.push(
std::thread::Builder::new()
.name("pdfs-online-probe".into())
.spawn(move || core.run_online_probe())?,
);
let probe_core = core.clone();
let spawned = std::thread::Builder::new()
.name("pdfs-online-probe".into())
.spawn(move || probe_core.run_online_probe());
keep_or_abandon(&core, control_socket, &mut workers, spawned)?;
}
// Keep the launcher prompt's "This computer" index fresh. Its own thread:
@@ -593,11 +590,10 @@ pub(crate) fn mount_with(
let transfers = core.transfers.clone();
let mountpoint = mountpoint.to_path_buf();
let shutdown = core.shutdown.clone();
workers.push(
std::thread::Builder::new()
.name("pdfs-localindex".into())
.spawn(move || run_local_index(db, indexing, transfers, mountpoint, shutdown))?,
);
let spawned = std::thread::Builder::new()
.name("pdfs-localindex".into())
.spawn(move || run_local_index(db, indexing, transfers, mountpoint, shutdown));
keep_or_abandon(&core, control_socket, &mut workers, spawned)?;
}
// Bind the control socket before the FUSE session takes over the thread. A
@@ -606,12 +602,18 @@ pub(crate) fn mount_with(
let old_umask = unsafe { libc::umask(0o77) };
let listener_res = UnixListener::bind(control_socket);
unsafe { libc::umask(old_umask) };
let listener = listener_res?;
let listener = match listener_res {
Ok(listener) => listener,
Err(error) => {
abandon_workers(&core, control_socket, workers);
return Err(error);
}
};
// Owner-only before anything can connect: a peer on this socket commands the
// daemon's authenticated session without a credential of its own (B6).
if let Err(e) = pdfs_core::config::restrict_socket(control_socket) {
error!(error = %e, "cannot restrict control socket permissions; refusing to serve");
let _ = std::fs::remove_file(control_socket);
abandon_workers(&core, control_socket, workers);
return Err(std::io::Error::other(format!(
"control socket permissions: {e}"
)));
@@ -622,7 +624,7 @@ pub(crate) fn mount_with(
let bg = match spawn_session(&core, mountpoint, root) {
Ok(session) => session,
Err(error) => {
let _ = std::fs::remove_file(control_socket);
abandon_workers(&core, control_socket, workers);
return Err(error);
}
};
@@ -642,7 +644,7 @@ pub(crate) fn mount_with(
Err(error) => {
// A failure here abandons the mount, so the background threads
// started above have to be told to stop with it.
stop_workers(&core, control_socket, workers);
abandon_workers(&core, control_socket, workers);
let secondaries = core.mounts.lock().close_and_drain();
for (id, mount) in secondaries {
if let Err(unmount_error) = mount.teardown() {
@@ -692,8 +694,12 @@ pub(crate) fn mount_with(
}
}
// The mount is live and the control socket answers: this is the moment the
// unit is actually usable, which is what `Type=notify` reports.
// unit is actually usable, which is what `Type=notify` reports. Whatever
// failure an earlier attempt recorded for the front ends is over.
systemd::ready();
if let Some(state_dir) = control_socket.parent() {
pdfs_core::mountfail::clear(state_dir);
}
// Re-establish on-demand mounts only after the primary session is live.
// Keep the worker so shutdown can close publication, wait for any in-flight
@@ -859,6 +865,43 @@ fn stop_workers(core: &Core, control_socket: &Path, workers: Vec<std::thread::Jo
// Say so before the joins: a teardown that takes a while must not be read as
// a missed watchdog ping and turned into a kill.
systemd::stopping();
halt_workers(core, control_socket, workers);
}
/// Stop the threads a mount attempt started before it failed.
///
/// The early returns used to leave them running: every retry started another
/// set beside the last one's, and their `Core` kept the database open, so the
/// next attempt could fail on its lock instead of the real error
/// (`docs/BUGS.md` B264). Unlike [`stop_workers`] this does not tell systemd
/// the daemon is stopping, because it is about to try again, and a manager
/// told so would wait for the process to exit and then kill it.
fn abandon_workers(core: &Core, control_socket: &Path, workers: Vec<std::thread::JoinHandle<()>>) {
halt_workers(core, control_socket, workers);
}
/// Keep a worker the mount just spawned, or, if the spawn failed, stop the
/// ones already running and hand the error back.
fn keep_or_abandon(
core: &Core,
control_socket: &Path,
workers: &mut Vec<std::thread::JoinHandle<()>>,
spawned: std::io::Result<std::thread::JoinHandle<()>>,
) -> std::io::Result<()> {
match spawned {
Ok(handle) => {
workers.push(handle);
Ok(())
}
Err(error) => {
abandon_workers(core, control_socket, std::mem::take(workers));
Err(error)
}
}
}
/// Signal every worker to stop, then join them up to [`WORKER_JOIN_DEADLINE`].
fn halt_workers(core: &Core, control_socket: &Path, workers: Vec<std::thread::JoinHandle<()>>) {
core.shutdown.stop();
core.wake_drain();
let _ = core.sync_tx.send(sync::SyncMsg::Stop);
+9 -1
View File
@@ -64,11 +64,19 @@ fn send_abstract(socket: &UnixDatagram, name: &str, message: &str) -> bool {
/// so `systemctl --user start` returns when the mount actually works rather than
/// when the process exists.
pub(crate) fn ready() {
if notify("READY=1\n") {
if notify("READY=1\nSTATUS=Mounted\n") {
debug!("notified systemd: ready");
}
}
/// Set the one-line status `systemctl --user status` shows for the unit, such
/// as why the mount keeps failing (`docs/BUGS.md` B263).
pub fn status(text: &str) {
// A newline would end the `STATUS=` line and start another variable.
let line = text.replace('\n', " ");
notify(&format!("STATUS={line}\n"));
}
/// Tell the manager the daemon is still healthy.
pub(crate) fn watchdog_ping() {
let _ = notify("WATCHDOG=1\n");
+29 -7
View File
@@ -1797,13 +1797,35 @@ pub(crate) fn service_unreachable(
);
return;
}
status(
&ui,
"network-idle-symbolic",
&gettext("Connecting…"),
&gettext("Waiting for the Proton Drive service to start."),
false,
);
// Running but not answering may be a mount that fails on every try,
// which never opens the socket. Its reason is in a file the daemon
// keeps for this (B263); "Connecting…" alone looked like a slow start
// for as long as it lasted.
let state_dir = ui.dirs.state_dir();
let failure = gio::spawn_blocking(move || pdfs_core::mountfail::read(&state_dir))
.await
.ok()
.flatten();
match failure {
Some(failure) => status(
&ui,
"dialog-warning-symbolic",
&gettext("Can't open your Drive"),
// Translators: {error} is an error message, in English.
&gettext_f(
"The Proton Drive service keeps failing to start and tries again on its own. The last error was: {error}",
&[("error", &failure.error)],
),
true,
),
None => status(
&ui,
"network-idle-symbolic",
&gettext("Connecting…"),
&gettext("Waiting for the Proton Drive service to start."),
false,
),
}
glib::timeout_add_local_once(CONNECT_RETRY_INTERVAL, move || {
if ui.stack.visible_child_name().as_deref() == Some(page) {
reload(&ui);
+18
View File
@@ -194,6 +194,24 @@ fn poll_state(socket: &Path, default_mountpoint: &Path) -> DriveState {
),
Phase::Attention,
),
// A daemon whose mount fails on every try never opens the
// socket; the app says why (B263).
Ok(s)
if socket
.parent()
.and_then(pdfs_core::mountfail::read)
.is_some() =>
{
(
// Translators: {username} is the Proton account name. The
// service keeps failing to start; the app shows the error.
gettext_f(
"Signed in as {username} — can't open your Drive",
&[("username", &s.username)],
),
Phase::Attention,
)
}
Ok(s) => (
// Translators: {username} is the Proton account name.
gettext_f(
+29 -9
View File
@@ -77,8 +77,6 @@ original wording.
| [B267](#b267--a-key-failure-at-a-start-from-a-warm-cache-shows-as-offline-for-good) | A key failure at a start from a warm cache shows as offline for good | Not fixed |
| [B266](#b266--pin-unpin-search-and-node-loads-report-a-database-error-as-offline) | Pin, unpin, search and node loads report a database error as "offline" | Not fixed |
| [B265](#b265--address-keys-whose-token-is-for-an-inactive-account-key-never-open) | Address keys whose token is for an inactive account key never open | Needs an SDK change; not reproduced |
| [B264](#b264--a-mount-that-fails-after-starting-its-workers-leaves-them-running) | A mount that fails after starting its workers leaves them running | Not fixed |
| [B263](#b263--a-mount-that-can-never-succeed-retries-every-5-s-and-tells-only-the-journal) | A mount that can never succeed retries every 5 s and tells only the journal | Not fixed |
| [B262](#b262--watching-a-large-synced-folder-holds-up-the-sync-engine-and-a-failed-watch-is-never-retried) | Watching a large synced folder holds up the sync engine, and a failed watch is never retried | Not fixed |
| [B261](#b261--a-folder-that-has-never-synced-reads-up-to-date) | A folder that has never synced reads "up to date" | Not fixed |
| [B260](#b260--the-poll-pushes-a-new-folders-first-sync-behind-every-other-folder) | The poll pushes a new folder's first sync behind every other folder | Not fixed |
@@ -96,6 +94,7 @@ original wording.
| Entry | Title | What is left |
|---|---|---|
| [B263](#b263--a-mount-that-can-never-succeed-retries-every-5-s-and-tells-only-the-journal) | A mount that can never succeed retries every 5 s and tells only the journal | Errors no retry fixes back off like network errors |
| [B199](#b199--a-stopped-share-stays-on-the-shared-by-me-page-for-minutes) | A stopped share stays on the Shared by me page for minutes | The share itself is not deleted; the SDK has no call for it |
| [B88](#b88--pdfs-pin-rename-move-delete-and-sharing-still-cannot-name-a-path-under-a-secondary-mount) | `pdfs pin`, `rename`, `move`, `delete` and sharing still cannot name a path under a secondary mount | `pin`, `unpin`, opening a file, thumbnails, uploads, sharing and versions |
| [B72](#b72--pdfs-trash-never-returns) | `pdfs trash` never returns | The slowness of the first refresh is unmeasured |
@@ -116,6 +115,7 @@ a live account since.
| Entry | Title |
|---|---|
| [B264](#b264--a-mount-that-fails-after-starting-its-workers-leaves-them-running) | A mount that fails after starting its workers leaves them running |
| [B256](#b256--pdfs-copy-right-after-a-save-copies-the-old-version) | `pdfs copy` right after a save copies the old version |
| [B255](#b255--a-synced-folder-whose-files-are-all-gone-here-is-stuck-for-good) | A synced folder whose files are all gone here is stuck for good |
| [B254](#b254--an-edit-in-the-same-second-as-a-new-upload-never-arrives) | An edit in the same second as a new upload never arrives |
@@ -567,7 +567,7 @@ tokens, and only the active ones for signing. Skip and log an address that canno
### B264 — A mount that fails after starting its workers leaves them running
**Status:** Open
**Status:** Fixed, not verified live
**Found:** 2026-10-31, code audit after issue #40.
**Where:** `run_mount` in `crates/pdfs-fuse/src/mount.rs`
@@ -581,14 +581,20 @@ permission check, a `spawn_session` error, and a `?` on a later thread spawn) sk
the `flock` held, every later attempt fails with "another daemon is using cache.db" instead
of the real error. That part is inferred from the code and not observed.
**Fix.** Not done. Bind the socket and check the mountpoint before any worker starts, and stop
the workers on every error path.
**Fix.** Every early return in `mount` after the first worker starts stops the workers
(`abandon_workers`, `keep_or_abandon` in `crates/pdfs-fuse/src/mount.rs`). Unlike a normal stop
it does not send `STOPPING=1`, because the daemon is about to retry and systemd would
otherwise wait for it to exit and then kill it. The control-thread failure path, which already
stopped its workers, no longer sends it either.
**Test:** none of its own; the simulations (`sim::daemon`, 55 passed) cover the normal start
and stop.
---
### B263 — A mount that can never succeed retries every 5 s and tells only the journal
**Status:** Open
**Status:** Partly fixed. Errors that no retry fixes are not told apart from network errors yet.
**Found:** 2026-10-31, issue #40: the app showed "Connecting… waiting for the Proton Drive
service" for days, `pdfs diagnose` only reported the control socket missing, and the reporter
uninstalled.
@@ -605,9 +611,23 @@ four requests, so a broken account sends tens of thousands a day, which may also
Proton's sign-in blocks (#39). The control socket is bound only after the mount succeeds, and
the error is written nowhere a front end can read it.
**Fix.** Not done. Back off exponentially, treat key, `KeysLocked` and 4xx errors as permanent
with a long back-off, and write the last error where the app, the tray and `diagnose` can
show it (a state file, and `STATUS=` to systemd).
**Fix.**
- The retry doubles from 5 s to a 2-minute ceiling (`mount_retry_delay` in
`crates/pdfs-cli/src/main.rs`), about 720 attempts a day instead of 17,000. The ceiling stays
at minutes because a cold start without a network fails the same way and has to mount soon
after the network returns.
- Each failure is written to `mount-failure.json` in the state directory
(`crates/pdfs-core/src/mountfail.rs`), with the error, since when it fails and the attempt
count. A mount that comes up removes it, and so does a new daemon.
- The app shows "Can't open your Drive" with the error and a Retry button instead of
"Connecting…". The tray says "Signed in as … — can't open your Drive". `pdfs diagnose` reports
`[FAIL] mount: failing for …`. `systemctl --user status` shows the error as the unit's status.
- Not done: key, `KeysLocked` and 4xx errors still retry like network errors, only less often.
**Test:** `a_failing_mount_backs_off_to_a_ceiling` in `pdfs-cli`;
`a_recorded_failure_reads_back_until_cleared` in `pdfs-core`. On 2026-10-31 a second
`pdfs daemon` beside the running one failed on the database lock three times in 18 s (at 0, 5
and 15 s) and recorded `attempts: 3` with the lock error.
---
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: German\n"
@@ -424,14 +424,25 @@ msgstr "Nicht verbunden"
msgid "The Proton Drive service isn't running."
msgstr "Der Proton-Drive-Dienst läuft nicht."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Proton Drive kann nicht geöffnet werden"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "Der Proton-Drive-Dienst kann wiederholt nicht starten und versucht es selbstständig erneut. Letzter Fehler: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Verbindung wird hergestellt …"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Warten auf den Start des Proton-Drive-Dienstes."
@@ -2908,7 +2919,7 @@ msgid "Sync paused until you resume"
msgstr "Synchronisierung bis zur Fortsetzung pausiert"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Synchronisierung pausiert"
@@ -5136,7 +5147,7 @@ msgstr "Wird {time} fortgesetzt"
msgid "Until you resume"
msgstr "Bis zur manuellen Fortsetzung"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6371,52 +6382,57 @@ msgstr "Proton Drive reagiert nicht"
msgid "Signed in as {username} — locked"
msgstr "Angemeldet als {username} – gesperrt"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Angemeldet als {username} – Proton Drive kann nicht geöffnet werden"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Angemeldet als {username} – nicht verbunden"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Nicht angemeldet"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Fehler: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive hat unerwartet geantwortet"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sitzung abgelaufen – erneut anmelden"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Anmeldung nicht gespeichert – Schlüsselbund entsperren"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Update nicht abgeschlossen – Proton Drive neu starten"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Aktuell in {mountpoint} ({n} angeheftet)"
msgstr[1] "Aktuell in {mountpoint} ({n} angeheftet)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Wird synchronisiert – {queued} ({n} angeheftet)"
msgstr[1] "Wird synchronisiert – {queued} ({n} angeheftet)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6424,60 +6440,60 @@ msgstr[0] "Offline – nur zwischengespeicherte Dateien ({n} angeheftet)"
msgstr[1] "Offline – nur zwischengespeicherte Dateien ({n} angeheftet)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline – {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} Problem – Anzeigen"
msgstr[1] "{n} Probleme – Anzeigen"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Anmelden …"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Erneut anmelden …"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Proton Drive öffnen"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Proton Drive neu starten"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Ordner öffnen"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Synchronisierung fortsetzen"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Synchronisierung pausieren"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Verbinden"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Symbol im Benachrichtigungsfeld ausblenden"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Proton Drive beenden …"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Beenden"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+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"
@@ -420,14 +420,25 @@ msgstr "Not connected"
msgid "The Proton Drive service isn't running."
msgstr "The Proton Drive service isn't running."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Can't open your Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "The Proton Drive service keeps failing to start and tries again on its own. The last error was: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Connecting…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Waiting for the Proton Drive service to start."
@@ -2869,7 +2880,7 @@ msgid "Sync paused until you resume"
msgstr "Sync paused until you resume"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Sync paused"
@@ -5035,7 +5046,7 @@ msgstr "Resumes {time}"
msgid "Until you resume"
msgstr "Until you resume"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6246,52 +6257,57 @@ msgstr "Proton Drive isn't responding"
msgid "Signed in as {username} — locked"
msgstr "Signed in as {username} — locked"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Signed in as {username} — can't open your Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Signed in as {username} — not connected"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Not signed in"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Error: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive sent an unexpected reply"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Session expired — sign in again"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Sign-in not saved — unlock your keyring"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Update not finished — restart Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Up to date in {mountpoint} ({n} pinned)"
msgstr[1] "Up to date in {mountpoint} ({n} pinned)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Syncing — {queued} ({n} pinned)"
msgstr[1] "Syncing — {queued} ({n} pinned)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6299,60 +6315,60 @@ msgstr[0] "Offline — cached files only ({n} pinned)"
msgstr[1] "Offline — cached files only ({n} pinned)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} issue — View"
msgstr[1] "{n} issues — View"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Sign In…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Sign In Again…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Open Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Restart Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Open Folder"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Resume Sync"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Pause Sync"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Connect"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Hide Tray Icon"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Stop Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Quit"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Spanish\n"
@@ -422,14 +422,25 @@ msgstr "Sin conexión"
msgid "The Proton Drive service isn't running."
msgstr "El servicio de Proton Drive no está en ejecución."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "No se puede abrir Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "El servicio de Proton Drive no consigue iniciarse y vuelve a intentarlo por sí solo. Último error: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Esperando a que se inicie el servicio de Proton Drive."
@@ -2891,7 +2902,7 @@ msgid "Sync paused until you resume"
msgstr "Sincronización en pausa hasta que la reanude"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Sincronización en pausa"
@@ -5095,7 +5106,7 @@ msgstr "Se reanuda {time}"
msgid "Until you resume"
msgstr "Hasta que la reanude"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6327,52 +6338,57 @@ msgstr "Proton Drive no responde"
msgid "Signed in as {username} — locked"
msgstr "Sesión iniciada como {username} — bloqueado"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Sesión iniciada como {username} — no se puede abrir Proton Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Sesión iniciada como {username} — sin conexión"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Sesión no iniciada"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Error: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive envió una respuesta inesperada"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sesión caducada: vuelva a iniciar sesión"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Inicio de sesión no guardado: desbloquee el depósito de claves"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Actualización sin terminar: reinicie Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Actualizado en {mountpoint} ({n} fijado)"
msgstr[1] "Actualizado en {mountpoint} ({n} fijados)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Sincronizando: {queued} ({n} anclado)"
msgstr[1] "Sincronizando: {queued} ({n} anclados)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6380,60 +6396,60 @@ msgstr[0] "Sin conexión: solo archivos en caché ({n} anclado)"
msgstr[1] "Sin conexión: solo archivos en caché ({n} anclados)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Sin conexión: {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} problema: ver"
msgstr[1] "{n} problemas: ver"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Iniciar sesión…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Volver a iniciar sesión…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Abrir Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Reiniciar Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Abrir carpeta"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Reanudar la sincronización"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Pausar la sincronización"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Conectar"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Ocultar el icono de la bandeja"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Detener Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Salir"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: French\n"
@@ -424,14 +424,25 @@ msgstr "Non connecté"
msgid "The Proton Drive service isn't running."
msgstr "Le service Proton Drive n’est pas en cours d’exécution."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Impossible d’ouvrir Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "Le service Proton Drive n’arrive pas à démarrer et réessaie de lui-même. Dernière erreur : {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Connexion…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "En attente du démarrage du service Proton Drive."
@@ -2908,7 +2919,7 @@ msgid "Sync paused until you resume"
msgstr "Synchronisation en pause jusqu’à la reprise"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Synchronisation en pause"
@@ -5138,7 +5149,7 @@ msgstr "Reprise {time}"
msgid "Until you resume"
msgstr "Jusqu’à la reprise"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6375,52 +6386,57 @@ msgstr "Proton Drive ne répond pas"
msgid "Signed in as {username} — locked"
msgstr "Connecté en tant que {username} — verrouillé"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Connecté en tant que {username} — impossible d’ouvrir Proton Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Connecté en tant que {username} — non connecté"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Non connecté"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Erreur : {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive a envoyé une réponse inattendue"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Session expirée — reconnectez-vous"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Connexion non enregistrée — déverrouillez votre trousseau"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Mise à jour inachevée — redémarrez Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "À jour dans {mountpoint} ({n} épinglé)"
msgstr[1] "À jour dans {mountpoint} ({n} épinglés)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Synchronisation — {queued} ({n} épinglé)"
msgstr[1] "Synchronisation — {queued} ({n} épinglés)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6428,60 +6444,60 @@ msgstr[0] "Hors ligne — fichiers en cache uniquement ({n} épinglé)"
msgstr[1] "Hors ligne — fichiers en cache uniquement ({n} épinglés)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Hors ligne — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} problème — Afficher"
msgstr[1] "{n} problèmes — Afficher"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Se connecter…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Se reconnecter…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Ouvrir Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Redémarrer Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Ouvrir le dossier"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Reprendre la synchronisation"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Mettre en pause la synchronisation"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Connecter"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Masquer l’icône de la zone de notification"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Arrêter Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Quitter"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Italian\n"
@@ -420,14 +420,25 @@ msgstr "Non connesso"
msgid "The Proton Drive service isn't running."
msgstr "Il servizio di Proton Drive non è in esecuzione."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Impossibile aprire Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "Il servizio di Proton Drive non riesce ad avviarsi e riprova da solo. Ultimo errore: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Connessione…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "In attesa dell’avvio del servizio di Proton Drive."
@@ -2906,7 +2917,7 @@ msgid "Sync paused until you resume"
msgstr "Sincronizzazione in pausa finché non riprendi"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Sincronizzazione in pausa"
@@ -5114,7 +5125,7 @@ msgstr "Riprende {time}"
msgid "Until you resume"
msgstr "Finché non riprendi"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6351,52 +6362,57 @@ msgstr "Proton Drive non risponde"
msgid "Signed in as {username} — locked"
msgstr "Accesso effettuato come {username} — bloccato"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Accesso effettuato come {username} — impossibile aprire Proton Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Accesso effettuato come {username} — non connesso"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Accesso non eseguito"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Errore: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive ha inviato una risposta inattesa"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sessione scaduta: accedi di nuovo"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Accesso non salvato: sblocca il portachiavi"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Aggiornamento non completato: riavvia Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Aggiornato in {mountpoint} ({n} fissato)"
msgstr[1] "Aggiornato in {mountpoint} ({n} fissati)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Sincronizzazione: {queued} ({n} fissato)"
msgstr[1] "Sincronizzazione: {queued} ({n} fissati)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6404,60 +6420,60 @@ msgstr[0] "Offline: solo file in cache ({n} fissato)"
msgstr[1] "Offline: solo file in cache ({n} fissati)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline: {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} problema: visualizza"
msgstr[1] "{n} problemi: visualizza"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Accedi…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Accedi di nuovo…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Apri Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Riavvia Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Apri cartella"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Riprendi sincronizzazione"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Metti in pausa sincronizzazione"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Connetti"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Nascondi icona nell'area di notifica"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Arresta Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Esci"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Dutch\n"
@@ -421,14 +421,25 @@ msgstr "Niet verbonden"
msgid "The Proton Drive service isn't running."
msgstr "De Proton Drive-service draait niet."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Kan Proton Drive niet openen"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "De Proton Drive-service kan steeds niet starten en probeert het zelf opnieuw. Laatste fout: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Verbinden…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Wachten tot de Proton Drive-service is gestart."
@@ -2896,7 +2907,7 @@ msgid "Sync paused until you resume"
msgstr "Synchronisatie gepauzeerd totdat je hervat"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Synchronisatie gepauzeerd"
@@ -5108,7 +5119,7 @@ msgstr "Hervat {time}"
msgid "Until you resume"
msgstr "Totdat je hervat"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6337,52 +6348,57 @@ msgstr "Proton Drive reageert niet"
msgid "Signed in as {username} — locked"
msgstr "Aangemeld als {username} — vergrendeld"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Aangemeld als {username} — kan Proton Drive niet openen"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Aangemeld als {username} — niet verbonden"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Niet aangemeld"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Fout: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive gaf een onverwacht antwoord"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sessie verlopen — meld je opnieuw aan"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Aanmelding niet opgeslagen — ontgrendel je sleutelbos"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Update niet voltooid — start Proton Drive opnieuw"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Bijgewerkt in {mountpoint} ({n} vastgezet)"
msgstr[1] "Bijgewerkt in {mountpoint} ({n} vastgezet)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Synchroniseren — {queued} ({n} vastgezet)"
msgstr[1] "Synchroniseren — {queued} ({n} vastgezet)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6390,60 +6406,60 @@ msgstr[0] "Offline — alleen bestanden in cache ({n} vastgezet)"
msgstr[1] "Offline — alleen bestanden in cache ({n} vastgezet)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} probleem — Bekijken"
msgstr[1] "{n} problemen — Bekijken"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Aanmelden…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Opnieuw aanmelden…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Proton Drive openen"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Proton Drive opnieuw starten"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Map openen"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Synchronisatie hervatten"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Synchronisatie pauzeren"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Verbinden"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Pictogram in systeemvak verbergen"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Proton Drive stoppen…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Afsluiten"
+45 -29
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 3.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:28+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -397,14 +397,25 @@ msgstr ""
msgid "The Proton Drive service isn't running."
msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr ""
@@ -2788,7 +2799,7 @@ msgid "Sync paused until you resume"
msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr ""
@@ -4883,7 +4894,7 @@ msgstr ""
msgid "Until you resume"
msgstr ""
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6071,52 +6082,57 @@ msgstr ""
msgid "Signed in as {username} — locked"
msgstr ""
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr ""
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr ""
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr ""
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr ""
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr ""
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr ""
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr ""
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6124,60 +6140,60 @@ msgstr[0] ""
msgstr[1] ""
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr ""
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr ""
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr ""
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr ""
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr ""
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr ""
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr ""
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr ""
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr ""
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr ""
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Polish\n"
@@ -425,14 +425,25 @@ msgstr "Brak połączenia"
msgid "The Proton Drive service isn't running."
msgstr "Usługa Proton Drive nie jest uruchomiona."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Nie można otworzyć Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "Usługa Proton Drive nie może się uruchomić i sama ponawia próby. Ostatni błąd: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Łączenie…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Oczekiwanie na uruchomienie usługi Proton Drive."
@@ -2961,7 +2972,7 @@ msgid "Sync paused until you resume"
msgstr "Wstrzymano synchronizację do czasu wznowienia"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Wstrzymano synchronizację"
@@ -5188,7 +5199,7 @@ msgstr "Wznowienie {time}"
msgid "Until you resume"
msgstr "Do czasu wznowienia"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6439,38 +6450,43 @@ msgstr "Proton Drive nie odpowiada"
msgid "Signed in as {username} — locked"
msgstr "Zalogowano jako {username} — zablokowane"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Zalogowano jako {username} — nie można otworzyć Proton Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Zalogowano jako {username} — brak połączenia"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Nie zalogowano"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Błąd: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "Proton Drive wysłał nieoczekiwaną odpowiedź"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sesja wygasła — zaloguj się ponownie"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Logowanie nie zostało zapisane — odblokuj bazę kluczy"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Aktualizacja niedokończona — uruchom ponownie Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
@@ -6478,7 +6494,7 @@ msgstr[0] "Aktualne w {mountpoint} ({n} przypięty)"
msgstr[1] "Aktualne w {mountpoint} ({n} przypięte)"
msgstr[2] "Aktualne w {mountpoint} ({n} przypiętych)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
@@ -6486,7 +6502,7 @@ msgstr[0] "Synchronizowanie — {queued} (przypięte: {n})"
msgstr[1] "Synchronizowanie — {queued} (przypięte: {n})"
msgstr[2] "Synchronizowanie — {queued} (przypięte: {n})"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6495,13 +6511,13 @@ msgstr[1] "Offline — tylko pliki w pamięci podręcznej (przypięte: {n})"
msgstr[2] "Offline — tylko pliki w pamięci podręcznej (przypięte: {n})"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
@@ -6509,47 +6525,47 @@ msgstr[0] "{n} problem — wyświetl"
msgstr[1] "{n} problemy — wyświetl"
msgstr[2] "{n} problemów — wyświetl"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Zaloguj się…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Zaloguj się ponownie…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Otwórz Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Uruchom ponownie Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Otwórz katalog"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Wznów synchronizację"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Wstrzymaj synchronizację"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Połącz"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Ukryj ikonę w obszarze powiadamiania"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Zatrzymaj Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Zakończ"
+45 -29
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-26 22:26+0100\n"
"POT-Creation-Date: 2026-10-31 10:37+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"
@@ -420,14 +420,25 @@ msgstr "Não conectado"
msgid "The Proton Drive service isn't running."
msgstr "O serviço do Proton Drive não está em execução."
#: crates/pdfs-gui/src/app/main.rs:1803
#: crates/pdfs-gui/src/app/main.rs:1813
msgid "Can't open your Drive"
msgstr "Não foi possível abrir o Proton Drive"
#: crates/pdfs-gui/src/app/main.rs:1816
#, rust-format
msgid ""
"The Proton Drive service keeps failing to start and tries again on its own. "
"The last error was: {error}"
msgstr "O serviço do Proton Drive não consegue iniciar e tenta de novo sozinho. Último erro: {error}"
#: crates/pdfs-gui/src/app/main.rs:1824
#: crates/pdfs-gui/src/app/pages/status.rs:355
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
#: crates/pdfs-gui/src/main.rs:475 crates/pdfs-gui/src/main.rs:517
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
msgid "Connecting…"
msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1804
#: crates/pdfs-gui/src/app/main.rs:1825
msgid "Waiting for the Proton Drive service to start."
msgstr "Aguardando o serviço do Proton Drive iniciar."
@@ -2892,7 +2903,7 @@ msgid "Sync paused until you resume"
msgstr "Sincronização pausada até você retomar"
#: crates/pdfs-gui/src/app/pages/locations.rs:570
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:290
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
msgid "Sync paused"
msgstr "Sincronização pausada"
@@ -5093,7 +5104,7 @@ msgstr "Retoma {time}"
msgid "Until you resume"
msgstr "Até você retomar"
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:292
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
#, rust-format
msgid "{n} change needs attention"
msgid_plural "{n} changes need attention"
@@ -6324,52 +6335,57 @@ msgstr "O Proton Drive não está respondendo"
msgid "Signed in as {username} — locked"
msgstr "Conectado como {username} — bloqueado"
#: crates/pdfs-gui/src/main.rs:200
#: crates/pdfs-gui/src/main.rs:209
#, rust-format
msgid "Signed in as {username} — can't open your Drive"
msgstr "Conectado como {username} — não foi possível abrir o Proton Drive"
#: crates/pdfs-gui/src/main.rs:218
#, rust-format
msgid "Signed in as {username} — not connected"
msgstr "Conectado como {username} — sem conexão"
#: crates/pdfs-gui/src/main.rs:205
#: crates/pdfs-gui/src/main.rs:223
msgid "Not signed in"
msgstr "Não conectado"
#. Translators: {error} is an error message, in English.
#: crates/pdfs-gui/src/main.rs:208
#: crates/pdfs-gui/src/main.rs:226
#, rust-format
msgid "Error: {error}"
msgstr "Erro: {error}"
#: crates/pdfs-gui/src/main.rs:230
#: crates/pdfs-gui/src/main.rs:248
msgid "Proton Drive sent an unexpected reply"
msgstr "O Proton Drive enviou uma resposta inesperada"
#: crates/pdfs-gui/src/main.rs:284
#: crates/pdfs-gui/src/main.rs:302
msgid "Session expired — sign in again"
msgstr "Sessão expirada — entre novamente"
#: crates/pdfs-gui/src/main.rs:286
#: crates/pdfs-gui/src/main.rs:304
msgid "Sign-in not saved — unlock your keyring"
msgstr "Login não salvo — desbloqueie o chaveiro"
#: crates/pdfs-gui/src/main.rs:289
#: crates/pdfs-gui/src/main.rs:307
msgid "Update not finished — restart Proton Drive"
msgstr "Atualização não concluída — reinicie o Proton Drive"
#: crates/pdfs-gui/src/main.rs:299
#: crates/pdfs-gui/src/main.rs:317
#, rust-format
msgid "Up to date in {mountpoint} ({n} pinned)"
msgid_plural "Up to date in {mountpoint} ({n} pinned)"
msgstr[0] "Atualizado em {mountpoint} ({n} fixado)"
msgstr[1] "Atualizado em {mountpoint} ({n} fixados)"
#: crates/pdfs-gui/src/main.rs:306
#: crates/pdfs-gui/src/main.rs:324
#, rust-format
msgid "Syncing — {queued} ({n} pinned)"
msgid_plural "Syncing — {queued} ({n} pinned)"
msgstr[0] "Sincronizando — {queued} ({n} fixado)"
msgstr[1] "Sincronizando — {queued} ({n} fixados)"
#: crates/pdfs-gui/src/main.rs:313
#: crates/pdfs-gui/src/main.rs:331
#, rust-format
msgid "Offline — cached files only ({n} pinned)"
msgid_plural "Offline — cached files only ({n} pinned)"
@@ -6377,60 +6393,60 @@ msgstr[0] "Offline — somente arquivos em cache ({n} fixado)"
msgstr[1] "Offline — somente arquivos em cache ({n} fixados)"
#. Translators: {queued} is a queue summary such as "3 uploads queued".
#: crates/pdfs-gui/src/main.rs:319
#: crates/pdfs-gui/src/main.rs:337
#, rust-format
msgid "Offline — {queued}"
msgstr "Offline — {queued}"
#. Translators: a menu item that opens the list of failing changes.
#: crates/pdfs-gui/src/main.rs:358
#: crates/pdfs-gui/src/main.rs:376
#, rust-format
msgid "{n} issue — View"
msgid_plural "{n} issues — View"
msgstr[0] "{n} problema — Ver"
msgstr[1] "{n} problemas — Ver"
#: crates/pdfs-gui/src/main.rs:465
#: crates/pdfs-gui/src/main.rs:483
msgid "Sign In…"
msgstr "Entrar…"
#: crates/pdfs-gui/src/main.rs:466
#: crates/pdfs-gui/src/main.rs:484
msgid "Sign In Again…"
msgstr "Entrar novamente…"
#: crates/pdfs-gui/src/main.rs:469
#: crates/pdfs-gui/src/main.rs:487
msgid "Open Proton Drive"
msgstr "Abrir o Proton Drive"
#: crates/pdfs-gui/src/main.rs:473
#: crates/pdfs-gui/src/main.rs:491
msgid "Restart Proton Drive"
msgstr "Reiniciar o Proton Drive"
#: crates/pdfs-gui/src/main.rs:482
#: crates/pdfs-gui/src/main.rs:500
msgid "Open Folder"
msgstr "Abrir pasta"
#: crates/pdfs-gui/src/main.rs:494
#: crates/pdfs-gui/src/main.rs:512
msgid "Resume Sync"
msgstr "Retomar sincronização"
#: crates/pdfs-gui/src/main.rs:496
#: crates/pdfs-gui/src/main.rs:514
msgid "Pause Sync"
msgstr "Pausar sincronização"
#: crates/pdfs-gui/src/main.rs:515
#: crates/pdfs-gui/src/main.rs:533
msgid "Connect"
msgstr "Conectar"
#: crates/pdfs-gui/src/main.rs:522
#: crates/pdfs-gui/src/main.rs:540
msgid "Hide Tray Icon"
msgstr "Ocultar ícone da bandeja"
#: crates/pdfs-gui/src/main.rs:526
#: crates/pdfs-gui/src/main.rs:544
msgid "Stop Proton Drive…"
msgstr "Parar o Proton Drive…"
#: crates/pdfs-gui/src/main.rs:530
#: crates/pdfs-gui/src/main.rs:548
msgid "Quit"
msgstr "Sair"