mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
Merge branch 'fix/never-synced-label' into fix/mount-failure-surfaced
# Conflicts: # docs/BUGS.md # po/de.po # po/en_GB.po # po/es.po # po/fr.po # po/it.po # po/nl.po # po/pdfs.pot # po/pl.po # po/pt_BR.po
This commit is contained in:
commit
b093010b64
21 files changed
+1608
-858
No files matched your search
@@ -0,0 +1,122 @@
|
|||||||
|
//! Log priorities for journald.
|
||||||
|
//!
|
||||||
|
//! journald files each line a service writes at the unit's default priority,
|
||||||
|
//! info, unless the line opens with a syslog `<N>` prefix. Without one every
|
||||||
|
//! WARN and ERROR the daemon logs is stored as info, and the
|
||||||
|
//! `journalctl -p warning` that the troubleshooting guide asks for shows
|
||||||
|
//! nothing (`docs/BUGS.md` B258).
|
||||||
|
|
||||||
|
use std::fmt;
|
||||||
|
use std::os::unix::fs::MetadataExt;
|
||||||
|
|
||||||
|
use tracing::{Event, Level, Subscriber};
|
||||||
|
use tracing_subscriber::fmt::format::Writer;
|
||||||
|
use tracing_subscriber::fmt::{FmtContext, FormatEvent, FormatFields};
|
||||||
|
use tracing_subscriber::registry::LookupSpan;
|
||||||
|
|
||||||
|
/// Whether standard output is the journal stream systemd connected this
|
||||||
|
/// process to.
|
||||||
|
///
|
||||||
|
/// `JOURNAL_STREAM` alone does not say so: a terminal started from a user unit
|
||||||
|
/// inherits it, and every `pdfs` run in that terminal would print the
|
||||||
|
/// prefixes. systemd sets it to the stream's `device:inode`, so it is compared
|
||||||
|
/// against what fd 1 actually is.
|
||||||
|
pub(crate) fn stdout_is_journal() -> bool {
|
||||||
|
let Some(stream) = std::env::var_os("JOURNAL_STREAM") else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
let Ok(stdout) = std::fs::metadata("/proc/self/fd/1") else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
stream
|
||||||
|
.to_str()
|
||||||
|
.is_some_and(|value| names_stream(value, stdout.dev(), stdout.ino()))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether a `JOURNAL_STREAM` value names the file `dev`:`ino`.
|
||||||
|
fn names_stream(value: &str, dev: u64, ino: u64) -> bool {
|
||||||
|
value
|
||||||
|
.split_once(':')
|
||||||
|
.is_some_and(|(d, i)| d.parse() == Ok(dev) && i.parse() == Ok(ino))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The syslog priority journald should file a `level` line at.
|
||||||
|
fn priority(level: &Level) -> u8 {
|
||||||
|
match *level {
|
||||||
|
Level::ERROR => 3,
|
||||||
|
Level::WARN => 4,
|
||||||
|
Level::INFO => 6,
|
||||||
|
Level::DEBUG | Level::TRACE => 7,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// An event format that opens each line with its `<N>` priority, then writes
|
||||||
|
/// the line as `F` would.
|
||||||
|
pub(crate) struct Prioritized<F>(pub(crate) F);
|
||||||
|
|
||||||
|
impl<S, N, F> FormatEvent<S, N> for Prioritized<F>
|
||||||
|
where
|
||||||
|
S: Subscriber + for<'a> LookupSpan<'a>,
|
||||||
|
N: for<'a> FormatFields<'a> + 'static,
|
||||||
|
F: FormatEvent<S, N>,
|
||||||
|
{
|
||||||
|
fn format_event(
|
||||||
|
&self,
|
||||||
|
ctx: &FmtContext<'_, S, N>,
|
||||||
|
mut writer: Writer<'_>,
|
||||||
|
event: &Event<'_>,
|
||||||
|
) -> fmt::Result {
|
||||||
|
write!(writer, "<{}>", priority(event.metadata().level()))?;
|
||||||
|
self.0.format_event(ctx, writer, event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use std::io;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct Buf(Arc<Mutex<Vec<u8>>>);
|
||||||
|
|
||||||
|
impl io::Write for Buf {
|
||||||
|
fn write(&mut self, bytes: &[u8]) -> io::Result<usize> {
|
||||||
|
self.0.lock().unwrap().extend_from_slice(bytes);
|
||||||
|
Ok(bytes.len())
|
||||||
|
}
|
||||||
|
fn flush(&mut self) -> io::Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn each_line_opens_with_the_priority_of_its_level() {
|
||||||
|
let buf = Buf(Arc::new(Mutex::new(Vec::new())));
|
||||||
|
let writer = buf.clone();
|
||||||
|
let subscriber = tracing_subscriber::fmt()
|
||||||
|
.with_max_level(Level::DEBUG)
|
||||||
|
.with_ansi(false)
|
||||||
|
.with_writer(move || writer.clone())
|
||||||
|
.event_format(Prioritized(tracing_subscriber::fmt::format()))
|
||||||
|
.finish();
|
||||||
|
tracing::subscriber::with_default(subscriber, || {
|
||||||
|
tracing::error!("e");
|
||||||
|
tracing::warn!("w");
|
||||||
|
tracing::info!("i");
|
||||||
|
tracing::debug!("d");
|
||||||
|
});
|
||||||
|
let out = String::from_utf8(buf.0.lock().unwrap().clone()).unwrap();
|
||||||
|
let prefixes: Vec<&str> = out.lines().map(|line| &line[..3]).collect();
|
||||||
|
assert_eq!(prefixes, ["<3>", "<4>", "<6>", "<7>"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn journal_stream_must_name_the_same_file() {
|
||||||
|
assert!(names_stream("8:12345", 8, 12345));
|
||||||
|
assert!(!names_stream("8:12345", 8, 54321));
|
||||||
|
assert!(!names_stream("9:12345", 8, 12345));
|
||||||
|
assert!(!names_stream("8", 8, 12345));
|
||||||
|
assert!(!names_stream("", 8, 12345));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,8 @@ use pdfs_core::control::{
|
|||||||
use pdfs_core::db::Db;
|
use pdfs_core::db::Db;
|
||||||
use pdfs_core::service;
|
use pdfs_core::service;
|
||||||
|
|
||||||
|
mod journal;
|
||||||
|
|
||||||
/// `println!` for this binary, shadowing std's, which panics when stdout is
|
/// `println!` for this binary, shadowing std's, which panics when stdout is
|
||||||
/// closed: `pdfs ls | head` ended in a "Broken pipe" panic once `head` had its
|
/// closed: `pdfs ls | head` ended in a "Broken pipe" panic once `head` had its
|
||||||
/// lines. This one hands the failure to [`stdout_written`] instead.
|
/// lines. This one hands the failure to [`stdout_written`] instead.
|
||||||
@@ -879,15 +881,22 @@ fn cli_error(kind: ErrorKind, message: &str) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
tracing_subscriber::fmt()
|
let filter = tracing_subscriber::EnvFilter::try_from_default_env()
|
||||||
.with_env_filter(
|
// `pgp` logs a benign WARN when it re-serializes a Proton secret-key
|
||||||
tracing_subscriber::EnvFilter::try_from_default_env()
|
// packet with a longer (but equivalent) length encoding than the
|
||||||
// `pgp` logs a benign WARN when it re-serializes a Proton secret-key
|
// original; drop it to error so normal runs stay quiet.
|
||||||
// packet with a longer (but equivalent) length encoding than the
|
.unwrap_or_else(|_| "info,pgp=error".into());
|
||||||
// original; drop it to error so normal runs stay quiet.
|
if journal::stdout_is_journal() {
|
||||||
.unwrap_or_else(|_| "info,pgp=error".into()),
|
// journalctl colours lines by the priority the prefix gives them, so
|
||||||
)
|
// the escape codes would only be noise in the stored text.
|
||||||
.init();
|
tracing_subscriber::fmt()
|
||||||
|
.with_env_filter(filter)
|
||||||
|
.with_ansi(false)
|
||||||
|
.event_format(journal::Prioritized(tracing_subscriber::fmt::format()))
|
||||||
|
.init();
|
||||||
|
} else {
|
||||||
|
tracing_subscriber::fmt().with_env_filter(filter).init();
|
||||||
|
}
|
||||||
|
|
||||||
let cli = Cli::parse();
|
let cli = Cli::parse();
|
||||||
JSON_OUTPUT.store(cli.json, std::sync::atomic::Ordering::Relaxed);
|
JSON_OUTPUT.store(cli.json, std::sync::atomic::Ordering::Relaxed);
|
||||||
@@ -3143,6 +3152,24 @@ fn human_secs(secs: u64) -> String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The sync engine's line in `pdfs diagnostics`: whether it runs, and which
|
||||||
|
/// folder's pass it is on.
|
||||||
|
fn sync_engine_line(sync: &pdfs_core::control::SyncEngineState) -> String {
|
||||||
|
let mut line = match (sync.running, sync.pass_folder) {
|
||||||
|
(false, _) => "STOPPED; synced folders do not sync until the daemon restarts".to_string(),
|
||||||
|
(true, None) => "idle".to_string(),
|
||||||
|
(true, Some(folder)) => format!(
|
||||||
|
"pass on folder {folder} for {}, last progress {} ago",
|
||||||
|
human_secs(sync.pass_age_secs),
|
||||||
|
human_secs(sync.pass_idle_secs),
|
||||||
|
),
|
||||||
|
};
|
||||||
|
if sync.panics > 0 {
|
||||||
|
line.push_str(&format!("; {} pass(es) panicked", sync.panics));
|
||||||
|
}
|
||||||
|
line
|
||||||
|
}
|
||||||
|
|
||||||
fn cmd_diagnostics() -> Result<()> {
|
fn cmd_diagnostics() -> Result<()> {
|
||||||
let response = control_request(CtlRequest::Diagnostics)?;
|
let response = control_request(CtlRequest::Diagnostics)?;
|
||||||
if emit_json(&response)? {
|
if emit_json(&response)? {
|
||||||
@@ -3178,6 +3205,9 @@ fn cmd_diagnostics() -> Result<()> {
|
|||||||
human_secs(worker.age_secs)
|
human_secs(worker.age_secs)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if let Some(sync) = &d.sync {
|
||||||
|
println!("sync engine: {}", sync_engine_line(sync));
|
||||||
|
}
|
||||||
if d.inflight.is_empty() {
|
if d.inflight.is_empty() {
|
||||||
println!("in-flight requests: none");
|
println!("in-flight requests: none");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1980,6 +1980,29 @@ pub struct Diagnostics {
|
|||||||
pub control_handler_limit: usize,
|
pub control_handler_limit: usize,
|
||||||
/// Queued mutations not yet drained.
|
/// Queued mutations not yet drained.
|
||||||
pub pending_ops: u64,
|
pub pending_ops: u64,
|
||||||
|
/// The folder-sync engine. `None` from a daemon that predates the field.
|
||||||
|
#[serde(default)]
|
||||||
|
pub sync: Option<SyncEngineState>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// What the folder-sync engine is doing, for [`Diagnostics`].
|
||||||
|
///
|
||||||
|
/// The engine is one thread that runs every synced folder's passes in turn.
|
||||||
|
/// Dead or stuck, it looked exactly like an idle one: workers idle, nothing
|
||||||
|
/// queued, nothing in the journal (`docs/BUGS.md` B259).
|
||||||
|
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||||
|
pub struct SyncEngineState {
|
||||||
|
/// Whether the engine thread is running. Once it has ended, nothing syncs
|
||||||
|
/// until the daemon restarts.
|
||||||
|
pub running: bool,
|
||||||
|
/// The synced folder whose pass is running, if one is.
|
||||||
|
pub pass_folder: Option<i64>,
|
||||||
|
/// How long that pass has been running.
|
||||||
|
pub pass_age_secs: u64,
|
||||||
|
/// How long since that pass last reported progress.
|
||||||
|
pub pass_idle_secs: u64,
|
||||||
|
/// Passes that ended in a panic since the daemon started.
|
||||||
|
pub panics: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The daemon's reply to a [`Request`].
|
/// The daemon's reply to a [`Request`].
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ impl Core {
|
|||||||
control_handlers: super::control::active_handlers(),
|
control_handlers: super::control::active_handlers(),
|
||||||
control_handler_limit: super::control::handler_limit(),
|
control_handler_limit: super::control::handler_limit(),
|
||||||
pending_ops: self.pending_ops_quickly(),
|
pending_ops: self.pending_ops_quickly(),
|
||||||
|
sync: Some(self.sync_engine.report()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -728,6 +728,8 @@ struct Core {
|
|||||||
/// can say what a pass is doing rather than just "syncing". An entry exists
|
/// can say what a pass is doing rather than just "syncing". An entry exists
|
||||||
/// only while that folder's reconcile pass is running.
|
/// only while that folder's reconcile pass is running.
|
||||||
sync_progress: Arc<Mutex<HashMap<i64, SyncProgress>>>,
|
sync_progress: Arc<Mutex<HashMap<i64, SyncProgress>>>,
|
||||||
|
/// Whether the folder-sync engine is alive, and which pass it is on.
|
||||||
|
sync_engine: Arc<sync::EngineHealth>,
|
||||||
/// Channel to the folder-sync engine: nudges it to
|
/// Channel to the folder-sync engine: nudges it to
|
||||||
/// reconcile a folder, reconcile everything, or re-scan its watch set.
|
/// reconcile a folder, reconcile everything, or re-scan its watch set.
|
||||||
sync_tx: std::sync::mpsc::Sender<sync::SyncMsg>,
|
sync_tx: std::sync::mpsc::Sender<sync::SyncMsg>,
|
||||||
@@ -5989,6 +5991,7 @@ impl Core {
|
|||||||
if let Some(p) = self.sync_progress.lock().get_mut(&folder_id) {
|
if let Some(p) = self.sync_progress.lock().get_mut(&folder_id) {
|
||||||
f(p);
|
f(p);
|
||||||
}
|
}
|
||||||
|
self.sync_engine.moved();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the number of items the scan expects to check, from the size of the
|
/// Set the number of items the scan expects to check, from the size of the
|
||||||
|
|||||||
@@ -507,6 +507,7 @@ pub(crate) fn mount_with(
|
|||||||
events: Arc::new(Default::default()),
|
events: Arc::new(Default::default()),
|
||||||
indexing: Arc::new(AtomicBool::new(false)),
|
indexing: Arc::new(AtomicBool::new(false)),
|
||||||
sync_progress: Arc::new(Mutex::new(HashMap::new())),
|
sync_progress: Arc::new(Mutex::new(HashMap::new())),
|
||||||
|
sync_engine: Arc::default(),
|
||||||
sync_tx,
|
sync_tx,
|
||||||
mounts: Arc::new(Mutex::new(SecondaryMountRegistry::default())),
|
mounts: Arc::new(Mutex::new(SecondaryMountRegistry::default())),
|
||||||
sync_locks: Arc::new(Mutex::new(HashMap::new())),
|
sync_locks: Arc::new(Mutex::new(HashMap::new())),
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ const TICK: Duration = Duration::from_secs(15);
|
|||||||
/// would train everyone to ignore the real one.
|
/// would train everyone to ignore the real one.
|
||||||
const STALL_AFTER: Duration = Duration::from_secs(120);
|
const STALL_AFTER: Duration = Duration::from_secs(120);
|
||||||
|
|
||||||
|
/// How long a sync pass may go without reporting progress before it is called
|
||||||
|
/// out. Much longer than [`STALL_AFTER`]: one large file in a pass reports
|
||||||
|
/// nothing until its whole transfer is done.
|
||||||
|
const SYNC_STALL_AFTER: Duration = Duration::from_secs(900);
|
||||||
|
|
||||||
/// How often resident size goes into the log.
|
/// How often resident size goes into the log.
|
||||||
const RSS_EVERY: Duration = Duration::from_secs(300);
|
const RSS_EVERY: Duration = Duration::from_secs(300);
|
||||||
|
|
||||||
@@ -137,6 +142,26 @@ fn report_stalls(report: &pdfs_core::control::Diagnostics, last_completed: (u64,
|
|||||||
"the transfer lane has not completed a job since the last check"
|
"the transfer lane has not completed a job since the last check"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// The engine is one thread for every synced folder, so a dead or stuck one
|
||||||
|
// stops all of them while the worker pool looks idle (B259).
|
||||||
|
if let Some(sync) = &report.sync {
|
||||||
|
if !sync.running {
|
||||||
|
stalled = true;
|
||||||
|
warn!(
|
||||||
|
"the sync engine is not running; synced folders do not sync until the daemon restarts"
|
||||||
|
);
|
||||||
|
} else if let Some(folder) = sync.pass_folder
|
||||||
|
&& sync.pass_idle_secs >= SYNC_STALL_AFTER.as_secs()
|
||||||
|
{
|
||||||
|
stalled = true;
|
||||||
|
warn!(
|
||||||
|
folder,
|
||||||
|
age_secs = sync.pass_age_secs,
|
||||||
|
idle_secs = sync.pass_idle_secs,
|
||||||
|
"a sync pass has not reported progress for a long time"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
stalled
|
stalled
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +194,7 @@ fn probe(control_socket: &Path) -> bool {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use pdfs_core::control::{Diagnostics, InflightRequest, WorkerState};
|
use pdfs_core::control::{Diagnostics, InflightRequest, SyncEngineState, WorkerState};
|
||||||
|
|
||||||
fn busy_worker(age_secs: u64) -> WorkerState {
|
fn busy_worker(age_secs: u64) -> WorkerState {
|
||||||
WorkerState {
|
WorkerState {
|
||||||
@@ -226,4 +251,45 @@ mod tests {
|
|||||||
assert!(!report_stalls(&report, (0, 30)));
|
assert!(!report_stalls(&report, (0, 30)));
|
||||||
assert!(report_stalls(&report, (0, 40)));
|
assert!(report_stalls(&report, (0, 40)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn with_sync(sync: SyncEngineState) -> Diagnostics {
|
||||||
|
Diagnostics {
|
||||||
|
sync: Some(sync),
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A sync engine that has ended stops every synced folder while the
|
||||||
|
/// workers look idle, which is what issue #53 looked like (B259).
|
||||||
|
#[test]
|
||||||
|
fn a_stopped_sync_engine_is_a_stall() {
|
||||||
|
assert!(report_stalls(
|
||||||
|
&with_sync(SyncEngineState::default()),
|
||||||
|
(0, 0)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A pass that keeps reporting progress is working, however long it runs;
|
||||||
|
/// one that has gone quiet past the threshold is not.
|
||||||
|
#[test]
|
||||||
|
fn only_a_quiet_sync_pass_is_a_stall() {
|
||||||
|
let busy = SyncEngineState {
|
||||||
|
running: true,
|
||||||
|
pass_folder: Some(3),
|
||||||
|
pass_age_secs: SYNC_STALL_AFTER.as_secs() * 4,
|
||||||
|
pass_idle_secs: 5,
|
||||||
|
panics: 0,
|
||||||
|
};
|
||||||
|
assert!(!report_stalls(&with_sync(busy.clone()), (0, 0)));
|
||||||
|
let quiet = SyncEngineState {
|
||||||
|
pass_idle_secs: SYNC_STALL_AFTER.as_secs(),
|
||||||
|
..busy
|
||||||
|
};
|
||||||
|
assert!(report_stalls(&with_sync(quiet), (0, 0)));
|
||||||
|
let idle = SyncEngineState {
|
||||||
|
running: true,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
assert!(!report_stalls(&with_sync(idle), (0, 0)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,9 @@ mod local_scan;
|
|||||||
mod model;
|
mod model;
|
||||||
mod planner;
|
mod planner;
|
||||||
pub(crate) use engine::SYNC_CONCURRENCY;
|
pub(crate) use engine::SYNC_CONCURRENCY;
|
||||||
pub(crate) use engine::{SyncMsg, spawn};
|
pub(crate) use engine::{EngineHealth, SyncMsg, spawn};
|
||||||
|
#[cfg(test)]
|
||||||
|
use engine::{Running, burst_order, keep_wanted};
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use engine::{classify, event_target, settle_with};
|
use engine::{classify, event_target, settle_with};
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -67,6 +69,11 @@ use planner::{
|
|||||||
plan_file, rel_to_path, remote_sig, remote_subtree_changed, revision_moved, tracked_baseline,
|
plan_file, rel_to_path, remote_sig, remote_subtree_changed, revision_moved, tracked_baseline,
|
||||||
unchanged_remote_size,
|
unchanged_remote_size,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// A pass that took at least this long is logged at info even when it changed
|
||||||
|
/// nothing, so the journal says where a slow engine spends its time.
|
||||||
|
const SLOW_PASS: Duration = Duration::from_secs(30);
|
||||||
|
|
||||||
/// What a [`Pending`] op did, so the reconcile can update shared state on the
|
/// What a [`Pending`] op did, so the reconcile can update shared state on the
|
||||||
/// engine thread (never inside a task).
|
/// engine thread (never inside a task).
|
||||||
enum Applied {
|
enum Applied {
|
||||||
@@ -154,6 +161,14 @@ impl Core {
|
|||||||
// The cost is one small file read against a pass that is about to walk the
|
// The cost is one small file read against a pass that is about to walk the
|
||||||
// whole tree.
|
// whole tree.
|
||||||
let rules = self.ignore_rules(&local_root);
|
let rules = self.ignore_rules(&local_root);
|
||||||
|
// A first pass is the one a user waits on after adding or restoring a
|
||||||
|
// folder, so it is said at info; the poll's passes stay at debug.
|
||||||
|
if folder.last_sync == 0 {
|
||||||
|
info!(id = folder.id, path = %folder.local_path, "sync: first pass starting");
|
||||||
|
} else {
|
||||||
|
debug!(id = folder.id, "sync: pass starting");
|
||||||
|
}
|
||||||
|
let started = Instant::now();
|
||||||
self.progress_begin(folder.id);
|
self.progress_begin(folder.id);
|
||||||
let result = if push_only {
|
let result = if push_only {
|
||||||
self.push_pass(folder.id, &local_root, &remote_root, &rules)
|
self.push_pass(folder.id, &local_root, &remote_root, &rules)
|
||||||
@@ -195,6 +210,18 @@ impl Core {
|
|||||||
"idle"
|
"idle"
|
||||||
};
|
};
|
||||||
let _ = self.db.sync_folder_set_state(folder.id, state, now_secs());
|
let _ = self.db.sync_folder_set_state(folder.id, state, now_secs());
|
||||||
|
let elapsed = started.elapsed();
|
||||||
|
if folder.last_sync == 0 || !outcome.is_empty() || elapsed >= SLOW_PASS {
|
||||||
|
info!(
|
||||||
|
id = folder.id,
|
||||||
|
state,
|
||||||
|
elapsed_ms = elapsed.as_millis() as u64,
|
||||||
|
summary = %outcome.summary(),
|
||||||
|
"sync: pass finished"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
debug!(id = folder.id, state, "sync: pass finished");
|
||||||
|
}
|
||||||
self.report_unscanned(folder.id, name, &outcome.unscanned);
|
self.report_unscanned(folder.id, name, &outcome.unscanned);
|
||||||
// Summarise a pass that actually moved something. A poll over an
|
// Summarise a pass that actually moved something. A poll over an
|
||||||
// unchanged folder does nothing and says nothing — otherwise the
|
// unchanged folder does nothing and says nothing — otherwise the
|
||||||
@@ -2438,6 +2465,72 @@ fn system_mtime_ns(meta: &std::fs::Metadata) -> Option<i64> {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
/// A panic in a pass ends that pass and is counted; the engine is not
|
||||||
|
/// left believing the pass still runs (`docs/BUGS.md` B259).
|
||||||
|
#[test]
|
||||||
|
fn a_panicking_pass_is_contained_and_counted() {
|
||||||
|
let health = EngineHealth::default();
|
||||||
|
assert!(!health.contain(7, || panic!("a pass that panics")));
|
||||||
|
let report = health.report();
|
||||||
|
assert_eq!(report.panics, 1);
|
||||||
|
assert_eq!(report.pass_folder, None);
|
||||||
|
assert!(health.contain(7, || {}));
|
||||||
|
assert_eq!(health.report().panics, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Folders named by id run before the rest of a `ReconcileAll` in the
|
||||||
|
/// same burst, so a folder just added does not wait behind a pass over
|
||||||
|
/// every other folder (`docs/BUGS.md` B260).
|
||||||
|
#[test]
|
||||||
|
fn named_folders_run_before_the_rest_of_a_burst() {
|
||||||
|
let ids: HashSet<i64> = [9, 4].into();
|
||||||
|
assert_eq!(burst_order(&ids, &[1, 4, 6, 9]), [4, 9, 1, 6]);
|
||||||
|
assert_eq!(burst_order(&HashSet::new(), &[1, 4]), [1, 4]);
|
||||||
|
// A folder the list no longer has still gets the pass it asked for.
|
||||||
|
assert_eq!(burst_order(&[12].into(), &[1]), [12, 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A folder removed and added again keeps its watch under the new id;
|
||||||
|
/// a folder that is gone loses its watch (`docs/BUGS.md` B272).
|
||||||
|
#[test]
|
||||||
|
fn a_re_added_folder_keeps_its_watch_under_the_new_id() {
|
||||||
|
let mut have = vec![(PathBuf::from("/a"), 1), (PathBuf::from("/b"), 2)];
|
||||||
|
let dropped = keep_wanted(&mut have, &[(PathBuf::from("/a"), 7)]);
|
||||||
|
assert_eq!(have, [(PathBuf::from("/a"), 7)]);
|
||||||
|
assert_eq!(dropped, [PathBuf::from("/b")]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// While a pass runs, the report names its folder, which is what tells a
|
||||||
|
/// long pass apart from an idle engine.
|
||||||
|
#[test]
|
||||||
|
fn the_running_pass_is_reported() {
|
||||||
|
let health = EngineHealth::default();
|
||||||
|
let mut seen = None;
|
||||||
|
health.contain(7, || seen = health.report().pass_folder);
|
||||||
|
assert_eq!(seen, Some(7));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The engine reads as running only while its thread lives, including
|
||||||
|
/// when the thread ends in a panic.
|
||||||
|
#[test]
|
||||||
|
fn the_engine_reads_as_stopped_once_its_thread_ends() {
|
||||||
|
let health = Arc::new(EngineHealth::default());
|
||||||
|
let thread_health = health.clone();
|
||||||
|
let (started_tx, started_rx) = std::sync::mpsc::channel();
|
||||||
|
let (end_tx, end_rx) = std::sync::mpsc::channel::<()>();
|
||||||
|
let thread = std::thread::spawn(move || {
|
||||||
|
let _running = Running::start(&thread_health);
|
||||||
|
started_tx.send(()).unwrap();
|
||||||
|
let _ = end_rx.recv();
|
||||||
|
panic!("the engine thread panics");
|
||||||
|
});
|
||||||
|
started_rx.recv().unwrap();
|
||||||
|
assert!(health.report().running);
|
||||||
|
end_tx.send(()).unwrap();
|
||||||
|
assert!(thread.join().is_err());
|
||||||
|
assert!(!health.report().running);
|
||||||
|
}
|
||||||
|
|
||||||
/// A removal of something already gone has produced the state the sync
|
/// A removal of something already gone has produced the state the sync
|
||||||
/// engine wanted, so its baseline is dropped rather than retried forever.
|
/// engine wanted, so its baseline is dropped rather than retried forever.
|
||||||
/// Anything else stays an error and keeps the baseline (`docs/BUGS.md` B42).
|
/// Anything else stays an error and keeps the baseline (`docs/BUGS.md` B42).
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
//! Filesystem watcher, polling, and debounce control plane.
|
//! Filesystem watcher, polling, and debounce control plane.
|
||||||
|
|
||||||
|
use std::panic::AssertUnwindSafe;
|
||||||
|
use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
|
||||||
|
|
||||||
|
use pdfs_core::control::SyncEngineState;
|
||||||
|
use tracing::error;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
/// How long the watcher must go quiet before a burst counts as finished.
|
/// How long the watcher must go quiet before a burst counts as finished.
|
||||||
@@ -23,6 +29,9 @@ const POLL_INTERVAL: Duration = Duration::from_secs(120);
|
|||||||
/// unusable done one-at-a-time; this bounds concurrency like the bulk-upload
|
/// unusable done one-at-a-time; this bounds concurrency like the bulk-upload
|
||||||
/// engine does.
|
/// engine does.
|
||||||
pub(crate) const SYNC_CONCURRENCY: usize = 8;
|
pub(crate) const SYNC_CONCURRENCY: usize = 8;
|
||||||
|
/// How long after a failed watch the engine tries the watches again. Each try
|
||||||
|
/// walks the folder's whole tree, so not on every burst.
|
||||||
|
const REWATCH_RETRY: Duration = Duration::from_secs(600);
|
||||||
|
|
||||||
/// A message to the sync engine's control thread.
|
/// A message to the sync engine's control thread.
|
||||||
pub(crate) enum SyncMsg {
|
pub(crate) enum SyncMsg {
|
||||||
@@ -53,32 +62,159 @@ pub(crate) fn spawn(core: Core, rx: Receiver<SyncMsg>) -> Option<std::thread::Jo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether the engine is alive and which pass it is on, for
|
||||||
|
/// [`Core::diagnostics`] and the supervisor.
|
||||||
|
///
|
||||||
|
/// A panic in a pass used to end the engine thread. Every later add, sync-now,
|
||||||
|
/// file event and poll then went into a channel nobody read, the folder stayed
|
||||||
|
/// `syncing`, and nothing said so until a restart (`docs/BUGS.md` B259).
|
||||||
|
#[derive(Default)]
|
||||||
|
pub(crate) struct EngineHealth {
|
||||||
|
running: AtomicBool,
|
||||||
|
pass: Mutex<Option<PassClock>>,
|
||||||
|
panics: AtomicU64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
struct PassClock {
|
||||||
|
folder: i64,
|
||||||
|
started: Instant,
|
||||||
|
moved: Instant,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EngineHealth {
|
||||||
|
/// Note that the running pass reported progress.
|
||||||
|
pub(crate) fn moved(&self) {
|
||||||
|
if let Some(pass) = self.pass.lock().as_mut() {
|
||||||
|
pass.moved = Instant::now();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The engine's state now. `try_lock`, like the rest of the diagnostics:
|
||||||
|
/// a report must not wait on the thing it reports about.
|
||||||
|
pub(crate) fn report(&self) -> SyncEngineState {
|
||||||
|
let pass = self.pass.try_lock().and_then(|pass| *pass);
|
||||||
|
SyncEngineState {
|
||||||
|
running: self.running.load(Ordering::Relaxed),
|
||||||
|
pass_folder: pass.map(|p| p.folder),
|
||||||
|
pass_age_secs: pass.map_or(0, |p| p.started.elapsed().as_secs()),
|
||||||
|
pass_idle_secs: pass.map_or(0, |p| p.moved.elapsed().as_secs()),
|
||||||
|
panics: self.panics.load(Ordering::Relaxed),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Run `pass` over `folder` as the current pass. Returns `false` when it
|
||||||
|
/// panicked: the panic ends that pass, not the engine.
|
||||||
|
pub(super) fn contain(&self, folder: i64, pass: impl FnOnce()) -> bool {
|
||||||
|
let now = Instant::now();
|
||||||
|
*self.pass.lock() = Some(PassClock {
|
||||||
|
folder,
|
||||||
|
started: now,
|
||||||
|
moved: now,
|
||||||
|
});
|
||||||
|
let finished = std::panic::catch_unwind(AssertUnwindSafe(pass)).is_ok();
|
||||||
|
*self.pass.lock() = None;
|
||||||
|
if !finished {
|
||||||
|
self.panics.fetch_add(1, Ordering::Relaxed);
|
||||||
|
}
|
||||||
|
finished
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Marks the engine running for as long as it lives.
|
||||||
|
pub(super) struct Running<'a>(&'a EngineHealth);
|
||||||
|
|
||||||
|
impl<'a> Running<'a> {
|
||||||
|
pub(super) fn start(health: &'a EngineHealth) -> Self {
|
||||||
|
health.running.store(true, Ordering::Relaxed);
|
||||||
|
Self(health)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for Running<'_> {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
self.0.running.store(false, Ordering::Relaxed);
|
||||||
|
if std::thread::panicking() {
|
||||||
|
error!("sync engine stopped by a panic; nothing syncs until the daemon restarts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// One folder's pass, contained: a panic in it sets the folder to `error` and
|
||||||
|
/// leaves the engine running for the next one.
|
||||||
|
fn run_pass(core: &Core, folder: &StoredSyncFolder) {
|
||||||
|
if core
|
||||||
|
.sync_engine
|
||||||
|
.contain(folder.id, || core.reconcile_folder(folder))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.progress_end(folder.id);
|
||||||
|
let _ = core
|
||||||
|
.db
|
||||||
|
.sync_folder_set_state(folder.id, "error", folder.last_sync);
|
||||||
|
error!(
|
||||||
|
id = folder.id,
|
||||||
|
path = %folder.local_path,
|
||||||
|
"sync: pass panicked; the folder is set to error and tried again on the next poll"
|
||||||
|
);
|
||||||
|
core.log_activity(
|
||||||
|
ActivityKind::Sync,
|
||||||
|
format!("sync failed for {}", base_name(&folder.local_path)),
|
||||||
|
"an internal error stopped the pass; it is tried again on the next poll",
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The pass a `Reconcile(id)` asked for. A folder removed since, or one the
|
||||||
|
/// database cannot read, is said so rather than dropped in silence.
|
||||||
|
fn run_pass_by_id(core: &Core, id: i64) {
|
||||||
|
match core.db.sync_folder_get(id) {
|
||||||
|
Ok(Some(folder)) => run_pass(core, &folder),
|
||||||
|
Ok(None) => debug!(id, "sync: folder removed before its pass; skipping"),
|
||||||
|
Err(e) => warn!(id, error = ?e, "sync: cannot read folder; skipping its pass"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The engine control loop. Single-threaded so reconcile passes never overlap.
|
/// The engine control loop. Single-threaded so reconcile passes never overlap.
|
||||||
fn engine_loop(core: Core, rx: Receiver<SyncMsg>) {
|
fn engine_loop(core: Core, rx: Receiver<SyncMsg>) {
|
||||||
|
let health = core.sync_engine.clone();
|
||||||
|
let _running = Running::start(&health);
|
||||||
// Paths the watcher currently covers, mapped to their folder id, so an event
|
// Paths the watcher currently covers, mapped to their folder id, so an event
|
||||||
// path can be resolved back to the folder it belongs to.
|
// path can be resolved back to the folder it belongs to.
|
||||||
let watched: Arc<Mutex<Vec<(PathBuf, i64)>>> = Arc::new(Mutex::new(Vec::new()));
|
let watched: Arc<Mutex<Vec<(PathBuf, i64)>>> = Arc::new(Mutex::new(Vec::new()));
|
||||||
|
|
||||||
let tx_events = core.sync_tx.clone();
|
let tx_events = core.sync_tx.clone();
|
||||||
let watched_events = watched.clone();
|
let watched_events = watched.clone();
|
||||||
let mut watcher =
|
let handler = move |res: notify::Result<notify::Event>| {
|
||||||
match notify::recommended_watcher(move |res: notify::Result<notify::Event>| {
|
let event = match res {
|
||||||
let Ok(event) = res else { return };
|
Ok(event) => event,
|
||||||
// Ignore pure metadata/access noise; content changes are what matter.
|
// Running out of inotify watches for a new subfolder, say: that
|
||||||
if matches!(event.kind, notify::EventKind::Access(_)) {
|
// subfolder's changes are then found by the poll only (B262).
|
||||||
return;
|
|
||||||
}
|
|
||||||
let msg = event_target(&watched_events.lock(), &event.paths);
|
|
||||||
let _ = tx_events.send(msg);
|
|
||||||
}) {
|
|
||||||
Ok(w) => w,
|
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
warn!(error = %e, "filesystem watcher unavailable; sync is poll-only");
|
warn!(error = %e, "sync: filesystem watcher error");
|
||||||
// Still run the loop so polling and explicit SyncNow work.
|
|
||||||
poll_only_loop(&core, rx);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// Ignore pure metadata/access noise; content changes are what matter.
|
||||||
|
if matches!(event.kind, notify::EventKind::Access(_)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let msg = event_target(&watched_events.lock(), &event.paths);
|
||||||
|
let _ = tx_events.send(msg);
|
||||||
|
};
|
||||||
|
// The local walk skips symlinks, so following them here would only watch
|
||||||
|
// trees outside the folder, and run passes over it for changes made there.
|
||||||
|
let config = notify::Config::default().with_follow_symlinks(false);
|
||||||
|
let mut watcher = match notify::RecommendedWatcher::new(handler, config) {
|
||||||
|
Ok(w) => w,
|
||||||
|
Err(e) => {
|
||||||
|
warn!(error = %e, "filesystem watcher unavailable; sync is poll-only");
|
||||||
|
// Still run the loop so polling and explicit SyncNow work.
|
||||||
|
poll_only_loop(&core, rx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Periodic remote poll.
|
// Periodic remote poll.
|
||||||
{
|
{
|
||||||
@@ -96,8 +232,9 @@ fn engine_loop(core: Core, rx: Receiver<SyncMsg>) {
|
|||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
rewatch(&core, &mut watcher, &watched);
|
let mut unwatched = rewatch(&core, &mut watcher, &watched);
|
||||||
reconcile_all(&core);
|
let mut last_rewatch = Instant::now();
|
||||||
|
run_burst(&core, &HashSet::new(), true);
|
||||||
|
|
||||||
while let Ok(msg) = rx.recv() {
|
while let Ok(msg) = rx.recv() {
|
||||||
let mut ids: HashSet<i64> = HashSet::new();
|
let mut ids: HashSet<i64> = HashSet::new();
|
||||||
@@ -110,21 +247,16 @@ fn engine_loop(core: Core, rx: Receiver<SyncMsg>) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A folder whose watch failed is tried again now and then, not only
|
||||||
|
// when the folder set changes.
|
||||||
|
if unwatched && last_rewatch.elapsed() >= REWATCH_RETRY {
|
||||||
|
do_rewatch = true;
|
||||||
|
}
|
||||||
if do_rewatch {
|
if do_rewatch {
|
||||||
rewatch(&core, &mut watcher, &watched);
|
unwatched = rewatch(&core, &mut watcher, &watched);
|
||||||
}
|
last_rewatch = Instant::now();
|
||||||
if all {
|
|
||||||
reconcile_all(&core);
|
|
||||||
} else {
|
|
||||||
for id in ids {
|
|
||||||
if core.sync_paused() {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if let Ok(Some(folder)) = core.db.sync_folder_get(id) {
|
|
||||||
core.reconcile_folder(&folder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
run_burst(&core, &ids, all);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +273,7 @@ fn poll_only_loop(core: &Core, rx: Receiver<SyncMsg>) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
reconcile_all(core);
|
run_burst(core, &HashSet::new(), true);
|
||||||
while let Ok(msg) = rx.recv() {
|
while let Ok(msg) = rx.recv() {
|
||||||
let mut ids: HashSet<i64> = HashSet::new();
|
let mut ids: HashSet<i64> = HashSet::new();
|
||||||
let mut all = false;
|
let mut all = false;
|
||||||
@@ -152,21 +284,59 @@ fn poll_only_loop(core: &Core, rx: Receiver<SyncMsg>) {
|
|||||||
info!("sync engine stopping");
|
info!("sync engine stopping");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if all {
|
run_burst(core, &ids, all);
|
||||||
reconcile_all(core);
|
}
|
||||||
} else {
|
}
|
||||||
for id in ids {
|
|
||||||
if core.sync_paused() {
|
/// Run the passes one burst asked for: the folders named by id, then, when the
|
||||||
break;
|
/// burst also holds a `ReconcileAll`, every other folder.
|
||||||
}
|
///
|
||||||
if let Ok(Some(folder)) = core.db.sync_folder_get(id) {
|
/// The named folders go first. A poll's `ReconcileAll` in the same burst used
|
||||||
core.reconcile_folder(&folder);
|
/// to take their place, and a folder just added, which has the highest id,
|
||||||
}
|
/// waited behind a full pass over every other folder (`docs/BUGS.md` B260).
|
||||||
|
///
|
||||||
|
/// Skipped while sync is paused, and cut short when a pause lands between
|
||||||
|
/// passes: the resume sends a fresh [`SyncMsg::ReconcileAll`], which walks
|
||||||
|
/// everything the watcher reported meanwhile.
|
||||||
|
fn run_burst(core: &Core, ids: &HashSet<i64>, all: bool) {
|
||||||
|
if core.sync_paused() {
|
||||||
|
debug!("sync: paused, skipping reconcile");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let folders = if all {
|
||||||
|
match core.db.sync_folder_list() {
|
||||||
|
Ok(folders) => folders,
|
||||||
|
Err(e) => {
|
||||||
|
warn!(error = ?e, "sync: cannot list folders");
|
||||||
|
Vec::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Vec::new()
|
||||||
|
};
|
||||||
|
let listed: Vec<i64> = folders.iter().map(|f| f.id).collect();
|
||||||
|
for id in burst_order(ids, &listed) {
|
||||||
|
if core.sync_paused() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// A folder named by id is read again: it may have been added or
|
||||||
|
// changed after the list was read.
|
||||||
|
match folders.iter().find(|f| f.id == id) {
|
||||||
|
Some(folder) if !ids.contains(&id) => run_pass(core, folder),
|
||||||
|
_ => run_pass_by_id(core, id),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The order of a burst's passes: the folders named by id, lowest first, then
|
||||||
|
/// the rest of `listed` in its own order.
|
||||||
|
pub(super) fn burst_order(ids: &HashSet<i64>, listed: &[i64]) -> Vec<i64> {
|
||||||
|
let mut order: Vec<i64> = ids.iter().copied().collect();
|
||||||
|
order.sort_unstable();
|
||||||
|
order.extend(listed.iter().copied().filter(|id| !ids.contains(id)));
|
||||||
|
order
|
||||||
|
}
|
||||||
|
|
||||||
/// Absorb the rest of an event burst, returning once the watcher has been quiet
|
/// Absorb the rest of an event burst, returning once the watcher has been quiet
|
||||||
/// for `quiet` or `cap` has elapsed since the first event — whichever comes
|
/// for `quiet` or `cap` has elapsed since the first event — whichever comes
|
||||||
/// first. The caller has already classified the event that opened the burst.
|
/// first. The caller has already classified the event that opened the burst.
|
||||||
@@ -238,26 +408,6 @@ pub(super) fn classify(
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reconcile every mirror folder in turn. Skipped while sync is paused: the
|
|
||||||
/// resume sends a fresh [`SyncMsg::ReconcileAll`], which walks everything the
|
|
||||||
/// watcher reported meanwhile.
|
|
||||||
fn reconcile_all(core: &Core) {
|
|
||||||
if core.sync_paused() {
|
|
||||||
debug!("sync: paused, skipping reconcile");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let folders = match core.db.sync_folder_list() {
|
|
||||||
Ok(f) => f,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(error = ?e, "sync: cannot list folders");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
for folder in folders {
|
|
||||||
core.reconcile_folder(&folder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The reconcile a watcher event asks for: the one mirror folder all its paths
|
/// The reconcile a watcher event asks for: the one mirror folder all its paths
|
||||||
/// lie in, so an edit in one folder does not walk every other one too. An event
|
/// lie in, so an edit in one folder does not walk every other one too. An event
|
||||||
/// that spans folders, or that no watched folder claims (a watch list a moment
|
/// that spans folders, or that no watched folder claims (a watch list a moment
|
||||||
@@ -278,7 +428,8 @@ pub(super) fn event_target(watched: &[(PathBuf, i64)], paths: &[PathBuf]) -> Syn
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Bring the filesystem watches in line with the current mirror-folder set:
|
/// Bring the filesystem watches in line with the current mirror-folder set:
|
||||||
/// watch newly-added folders, drop removed ones.
|
/// watch newly-added folders, drop removed ones. Returns whether a folder is
|
||||||
|
/// left unwatched because its watch failed.
|
||||||
///
|
///
|
||||||
/// The watch calls run on a copy, outside the lock: the watcher's event
|
/// The watch calls run on a copy, outside the lock: the watcher's event
|
||||||
/// callback takes the same lock, and a backend that hands a watch request to
|
/// callback takes the same lock, and a backend that hands a watch request to
|
||||||
@@ -287,7 +438,7 @@ fn rewatch(
|
|||||||
core: &Core,
|
core: &Core,
|
||||||
watcher: &mut notify::RecommendedWatcher,
|
watcher: &mut notify::RecommendedWatcher,
|
||||||
watched: &Mutex<Vec<(PathBuf, i64)>>,
|
watched: &Mutex<Vec<(PathBuf, i64)>>,
|
||||||
) {
|
) -> bool {
|
||||||
let want: Vec<(PathBuf, i64)> = match core.db.sync_folder_list() {
|
let want: Vec<(PathBuf, i64)> = match core.db.sync_folder_list() {
|
||||||
Ok(f) => f
|
Ok(f) => f
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@@ -296,30 +447,60 @@ fn rewatch(
|
|||||||
.collect(),
|
.collect(),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
warn!(error = ?e, "sync: cannot list folders to watch");
|
warn!(error = ?e, "sync: cannot list folders to watch");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let mut have = watched.lock().clone();
|
let mut have = watched.lock().clone();
|
||||||
// Drop watches no longer wanted.
|
// Drop watches no longer wanted.
|
||||||
have.retain(|(path, _)| {
|
for path in keep_wanted(&mut have, &want) {
|
||||||
if want.iter().any(|(p, _)| p == path) {
|
let _ = watcher.unwatch(&path);
|
||||||
true
|
}
|
||||||
} else {
|
|
||||||
let _ = watcher.unwatch(path);
|
|
||||||
false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// Add newly wanted watches.
|
// Add newly wanted watches.
|
||||||
|
let mut failed = false;
|
||||||
for (path, id) in &want {
|
for (path, id) in &want {
|
||||||
if have.iter().any(|(p, _)| p == path) {
|
if have.iter().any(|(p, _)| p == path) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
match watcher.watch(path, RecursiveMode::Recursive) {
|
match watcher.watch(path, RecursiveMode::Recursive) {
|
||||||
Ok(()) => have.push((path.clone(), *id)),
|
Ok(()) => have.push((path.clone(), *id)),
|
||||||
Err(e) => warn!(path = %path.display(), error = %e, "sync: watch failed"),
|
Err(e) => {
|
||||||
|
// A recursive watch that fails partway keeps the watches it had
|
||||||
|
// added. Their events would match no folder and run a pass over
|
||||||
|
// every one, and they hold watches the next folder needs (B262).
|
||||||
|
let _ = watcher.unwatch(path);
|
||||||
|
failed = true;
|
||||||
|
warn!(
|
||||||
|
path = %path.display(),
|
||||||
|
error = %e,
|
||||||
|
"sync: watch failed; the poll finds this folder's changes until a retry \
|
||||||
|
works. A low fs.inotify.max_user_watches is the usual cause"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*watched.lock() = have;
|
*watched.lock() = have;
|
||||||
|
failed
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Keep the watches in `have` that `want` still asks for, and return the paths
|
||||||
|
/// of the others, to unwatch.
|
||||||
|
///
|
||||||
|
/// A path is matched alone, but takes the id `want` gives it: a folder removed
|
||||||
|
/// and added again in one burst keeps its watch, and its events go to the new
|
||||||
|
/// row rather than to the removed one (`docs/BUGS.md` B272).
|
||||||
|
pub(super) fn keep_wanted(have: &mut Vec<(PathBuf, i64)>, want: &[(PathBuf, i64)]) -> Vec<PathBuf> {
|
||||||
|
let mut dropped = Vec::new();
|
||||||
|
have.retain_mut(|(path, id)| match want.iter().find(|(p, _)| p == path) {
|
||||||
|
Some((_, wanted)) => {
|
||||||
|
*id = *wanted;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
dropped.push(path.clone());
|
||||||
|
false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dropped
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---- reconcile ------------------------------------------------------------
|
// ---- reconcile ------------------------------------------------------------
|
||||||
@@ -597,6 +597,19 @@ pub(crate) fn this_computer_subtitle(folders: &[SyncFolderInfo]) -> String {
|
|||||||
folders.len() as u64,
|
folders.len() as u64,
|
||||||
&[],
|
&[],
|
||||||
);
|
);
|
||||||
|
// A folder whose first pass has not run is not backed up yet, whatever its
|
||||||
|
// state column says (`docs/BUGS.md` B261).
|
||||||
|
let waiting = folders.iter().filter(|f| never_synced(f)).count();
|
||||||
|
let count = match waiting {
|
||||||
|
0 => count,
|
||||||
|
// Translators: {folders} is "N folders backed up"; {n} counts the folders whose first sync has not run yet.
|
||||||
|
n => ngettext_f(
|
||||||
|
"{folders} · {n} waiting for its first sync",
|
||||||
|
"{folders} · {n} waiting for their first sync",
|
||||||
|
n as u64,
|
||||||
|
&[("folders", &count)],
|
||||||
|
),
|
||||||
|
};
|
||||||
let attention = folders
|
let attention = folders
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|f| f.state == "error" || f.state == "conflict")
|
.filter(|f| f.state == "error" || f.state == "conflict")
|
||||||
@@ -613,12 +626,21 @@ pub(crate) fn this_computer_subtitle(folders: &[SyncFolderInfo]) -> String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Human label for a synced folder's `state` column.
|
/// Whether a synced folder is a mirror whose first pass has not finished.
|
||||||
pub(crate) fn sync_state_label(state: &str) -> String {
|
/// Its `state` starts out `idle`, which would read as "up to date".
|
||||||
|
fn never_synced(folder: &SyncFolderInfo) -> bool {
|
||||||
|
folder.mode == "mirror" && folder.last_sync == 0 && folder.state == "idle"
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Human label for a synced folder's `state` column. `never_synced` is a
|
||||||
|
/// mirror folder whose first pass has not finished: its `state` starts out
|
||||||
|
/// `idle`, and "up to date" would say the opposite of the truth (B261).
|
||||||
|
pub(crate) fn sync_state_label(state: &str, never_synced: bool) -> String {
|
||||||
match state {
|
match state {
|
||||||
"syncing" => gettext("syncing…"),
|
"syncing" => gettext("syncing…"),
|
||||||
"error" => gettext("sync error"),
|
"error" => gettext("sync error"),
|
||||||
"conflict" => gettext("needs attention"),
|
"conflict" => gettext("needs attention"),
|
||||||
|
_ if never_synced => gettext("waiting for first sync"),
|
||||||
_ => gettext("up to date"),
|
_ => gettext("up to date"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1274,7 +1296,7 @@ mod tests {
|
|||||||
remote_uid: "vol~link".into(),
|
remote_uid: "vol~link".into(),
|
||||||
mode: "mirror".into(),
|
mode: "mirror".into(),
|
||||||
state: state.into(),
|
state: state.into(),
|
||||||
last_sync: 0,
|
last_sync: 1_700_000_000,
|
||||||
pending_mode: None,
|
pending_mode: None,
|
||||||
progress: None,
|
progress: None,
|
||||||
paused: false,
|
paused: false,
|
||||||
@@ -1286,6 +1308,33 @@ mod tests {
|
|||||||
assert_eq!(this_computer_subtitle(&[]), "No folders backed up yet");
|
assert_eq!(this_computer_subtitle(&[]), "No folders backed up yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A folder added a moment ago is not backed up yet, and the row must not
|
||||||
|
/// say it is (`docs/BUGS.md` B261). An on-demand folder has no first sync.
|
||||||
|
#[test]
|
||||||
|
fn a_folder_before_its_first_sync_is_not_counted_as_backed_up() {
|
||||||
|
let new = SyncFolderInfo {
|
||||||
|
last_sync: 0,
|
||||||
|
..folder("idle")
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
this_computer_subtitle(&[folder("idle"), new.clone()]),
|
||||||
|
"2 folders backed up · 1 waiting for its first sync"
|
||||||
|
);
|
||||||
|
let failed = SyncFolderInfo {
|
||||||
|
state: "error".into(),
|
||||||
|
..new.clone()
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
this_computer_subtitle(&[new.clone(), failed]),
|
||||||
|
"2 folders backed up · 1 waiting for its first sync · 1 needs attention"
|
||||||
|
);
|
||||||
|
let on_demand = SyncFolderInfo {
|
||||||
|
mode: "ondemand".into(),
|
||||||
|
..new
|
||||||
|
};
|
||||||
|
assert_eq!(this_computer_subtitle(&[on_demand]), "1 folder backed up");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn folders_needing_attention_are_counted_not_hidden() {
|
fn folders_needing_attention_are_counted_not_hidden() {
|
||||||
// The per-folder rows live on the Sync page, so this row is the only
|
// The per-folder rows live on the Sync page, so this row is the only
|
||||||
|
|||||||
@@ -1729,7 +1729,10 @@ pub(crate) fn location_subtitle(spec: &MountSpec) -> String {
|
|||||||
parts.push(match &spec.progress {
|
parts.push(match &spec.progress {
|
||||||
Some(p) => sync_progress_label(p),
|
Some(p) => sync_progress_label(p),
|
||||||
None if spec.paused => pgettext("state", "paused"),
|
None if spec.paused => pgettext("state", "paused"),
|
||||||
None => sync_state_label(&spec.state).to_string(),
|
None => sync_state_label(
|
||||||
|
&spec.state,
|
||||||
|
spec.mode == MountMode::Mirror && spec.last_sync == 0,
|
||||||
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Only the locations that are supposed to have a session report its absence:
|
// Only the locations that are supposed to have a session report its absence:
|
||||||
@@ -1775,7 +1778,25 @@ mod tests {
|
|||||||
MountMode::Mirror,
|
MountMode::Mirror,
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
|
assert_eq!(location_subtitle(&spec), "Synced · waiting for first sync");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A folder whose first pass has not run is not up to date, though its
|
||||||
|
/// state column starts out `idle` (`docs/BUGS.md` B261).
|
||||||
|
#[test]
|
||||||
|
fn a_folder_reads_up_to_date_only_after_its_first_sync() {
|
||||||
|
let mut spec = spec(
|
||||||
|
MountKind::Device { sync_folder_id: 7 },
|
||||||
|
MountMode::Mirror,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
assert_eq!(location_subtitle(&spec), "Synced · waiting for first sync");
|
||||||
|
spec.last_sync = 1_700_000_000;
|
||||||
assert_eq!(location_subtitle(&spec), "Synced · up to date");
|
assert_eq!(location_subtitle(&spec), "Synced · up to date");
|
||||||
|
// A folder that failed before it ever synced says so.
|
||||||
|
spec.last_sync = 0;
|
||||||
|
spec.state = "error".into();
|
||||||
|
assert_eq!(location_subtitle(&spec), "Synced · sync error");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
+69
-25
@@ -69,7 +69,6 @@ original wording.
|
|||||||
| Entry | Title | What is left |
|
| Entry | Title | What is left |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| [B273](#b273--a-restore-proposes-another-computers-paths-when-the-two-share-a-hostname) | A restore proposes another computer's paths when the two share a hostname | Not fixed |
|
| [B273](#b273--a-restore-proposes-another-computers-paths-when-the-two-share-a-hostname) | A restore proposes another computer's paths when the two share a hostname | Not fixed |
|
||||||
| [B272](#b272--after-a-folder-is-removed-and-added-again-its-file-events-go-to-the-old-id) | After a folder is removed and added again, its file events go to the old id | Not fixed |
|
|
||||||
| [B271](#b271--one-failed-listing-makes-a-large-first-sync-start-over-from-nothing) | One failed listing makes a large first sync start over from nothing | Not fixed |
|
| [B271](#b271--one-failed-listing-makes-a-large-first-sync-start-over-from-nothing) | One failed listing makes a large first sync start over from nothing | Not fixed |
|
||||||
| [B270](#b270--one-file-left-in-a-mirror-folder-clears-the-wipe-guard-for-all-the-others) | One file left in a mirror folder clears the wipe guard for all the others | Not fixed |
|
| [B270](#b270--one-file-left-in-a-mirror-folder-clears-the-wipe-guard-for-all-the-others) | One file left in a mirror folder clears the wipe guard for all the others | Not fixed |
|
||||||
| [B269](#b269--a-restore-that-skipped-every-folder-reports-success) | A restore that skipped every folder reports success | Not fixed |
|
| [B269](#b269--a-restore-that-skipped-every-folder-reports-success) | A restore that skipped every folder reports success | Not fixed |
|
||||||
@@ -77,11 +76,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 |
|
| [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 |
|
| [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 |
|
| [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 |
|
||||||
| [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 |
|
|
||||||
| [B259](#b259--the-sync-engine-can-die-or-hang-and-nothing-shows-it-until-a-restart) | The sync engine can die or hang, and nothing shows it until a restart | Not fixed; the trigger in #53 is not known |
|
|
||||||
| [B258](#b258--journalctl--p-warning-shows-nothing-whatever-the-daemon-logged) | `journalctl -p warning` shows nothing, whatever the daemon logged | Not fixed |
|
|
||||||
| [B134](#b134--a-file-deleted-online-while-the-drain-checks-its-write-is-kept-as-a-conflict-copy) | A file deleted online while the drain checks its write is kept as a conflict copy | Only with `local_first` off |
|
| [B134](#b134--a-file-deleted-online-while-the-drain-checks-its-write-is-kept-as-a-conflict-copy) | A file deleted online while the drain checks its write is kept as a conflict copy | Only with `local_first` off |
|
||||||
| [B91](#b91--the-daemon-hung-overnight-and-nothing-could-say-what-it-was-waiting-on) | The daemon hung overnight, and nothing could say what it was waiting on | The cause is not diagnosed; the daemon now reports where it is stuck and is restarted |
|
| [B91](#b91--the-daemon-hung-overnight-and-nothing-could-say-what-it-was-waiting-on) | The daemon hung overnight, and nothing could say what it was waiting on | The cause is not diagnosed; the daemon now reports where it is stuck and is restarted |
|
||||||
| [B67](#b67--fresh-state-restore-can-silently-select-a-new-device-high-22) | Fresh-state restore can silently select a new device (HIGH-22) | An ambiguous device after a loss of local state is not asked about |
|
| [B67](#b67--fresh-state-restore-can-silently-select-a-new-device-high-22) | Fresh-state restore can silently select a new device (HIGH-22) | An ambiguous device after a loss of local state is not asked about |
|
||||||
@@ -95,6 +89,8 @@ original wording.
|
|||||||
| Entry | Title | What is left |
|
| 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 |
|
| [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 |
|
||||||
|
| [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 | The first pass still waits for the watch; a failed watch is not shown in the app |
|
||||||
|
| [B259](#b259--the-sync-engine-can-die-or-hang-and-nothing-shows-it-until-a-restart) | The sync engine can die or hang, and nothing shows it until a restart | No pass deadline; an ended engine is reported, not restarted; the trigger in #53 is not known |
|
||||||
| [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 |
|
| [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 |
|
| [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 |
|
| [B72](#b72--pdfs-trash-never-returns) | `pdfs trash` never returns | The slowness of the first refresh is unmeasured |
|
||||||
@@ -116,6 +112,10 @@ a live account since.
|
|||||||
| Entry | Title |
|
| 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 |
|
| [B264](#b264--a-mount-that-fails-after-starting-its-workers-leaves-them-running) | A mount that fails after starting its workers leaves them running |
|
||||||
|
| [B261](#b261--a-folder-that-has-never-synced-reads-up-to-date) | A folder that has never synced reads "up to date" |
|
||||||
|
| [B272](#b272--after-a-folder-is-removed-and-added-again-its-file-events-go-to-the-old-id) | After a folder is removed and added again, its file events go to the old id |
|
||||||
|
| [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 |
|
||||||
|
| [B258](#b258--journalctl--p-warning-shows-nothing-whatever-the-daemon-logged) | `journalctl -p warning` shows nothing, whatever the daemon logged |
|
||||||
| [B256](#b256--pdfs-copy-right-after-a-save-copies-the-old-version) | `pdfs copy` right after a save copies the old version |
|
| [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 |
|
| [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 |
|
| [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 |
|
||||||
@@ -395,7 +395,7 @@ written before it existed.
|
|||||||
|
|
||||||
### B272 — After a folder is removed and added again, its file events go to the old id
|
### B272 — After a folder is removed and added again, its file events go to the old id
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Fixed, not verified live
|
||||||
**Found:** 2026-10-31, code audit after issue #53.
|
**Found:** 2026-10-31, code audit after issue #53.
|
||||||
**Where:** `rewatch` in `crates/pdfs-fuse/src/sync/engine.rs`
|
**Where:** `rewatch` in `crates/pdfs-fuse/src/sync/engine.rs`
|
||||||
|
|
||||||
@@ -407,8 +407,10 @@ two-minute poll, and the same goes for every later edit until the daemon restart
|
|||||||
path is still wanted, so the old entry stays with the removed folder's id. Its events become
|
path is still wanted, so the old entry stays with the removed folder's id. Its events become
|
||||||
`Reconcile(old id)`, `sync_folder_get` finds no row, and the request is dropped.
|
`Reconcile(old id)`, `sync_folder_get` finds no row, and the request is dropped.
|
||||||
|
|
||||||
**Fix.** Not done. Compare `(path, id)` pairs, and update the id of a path that is still
|
**Fix.** `keep_wanted` keeps a watch whose path is still wanted and gives it the id the
|
||||||
watched.
|
folder list has now.
|
||||||
|
|
||||||
|
**Test:** `a_re_added_folder_keeps_its_watch_under_the_new_id` in `pdfs-fuse`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -633,7 +635,8 @@ and 15 s) and recorded `attempts: 3` with the lock error.
|
|||||||
|
|
||||||
### B262 — Watching a large synced folder holds up the sync engine, and a failed watch is never retried
|
### B262 — Watching a large synced folder holds up the sync engine, and a failed watch is never retried
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Partly fixed. A watch is still set up before the first pass, and a failed watch
|
||||||
|
is not shown in the folder's state.
|
||||||
**Found:** 2026-10-31, code audit after issue #53.
|
**Found:** 2026-10-31, code audit after issue #53.
|
||||||
**Where:** `rewatch` and `engine_loop` in `crates/pdfs-fuse/src/sync/engine.rs`
|
**Where:** `rewatch` and `engine_loop` in `crates/pdfs-fuse/src/sync/engine.rs`
|
||||||
|
|
||||||
@@ -651,14 +654,22 @@ line, the folder is never watched, and later changes are found only by the two-m
|
|||||||
and they use up watches the next folder needs.
|
and they use up watches the next folder needs.
|
||||||
- Errors the watcher reports later are dropped in its callback.
|
- Errors the watcher reports later are dropped in its callback.
|
||||||
|
|
||||||
**Fix.** Not done. Reconcile first, unwatch after a partial failure and retry with a back-off,
|
**Fix.**
|
||||||
turn off symlink following, and show a watch failure in the folder's state.
|
- A failed watch is unwatched, which removes the watches it had added under the folder, and
|
||||||
|
is tried again every 10 minutes. The warning names `fs.inotify.max_user_watches`.
|
||||||
|
- The watcher no longer follows symlinks.
|
||||||
|
- Errors the watcher reports are logged.
|
||||||
|
- Not done: the watch still runs before the folder's first pass. Watching first is what keeps
|
||||||
|
a change made during the pass from being missed, so the order stays; the cost is one walk
|
||||||
|
of a new folder's tree. A failed watch is not shown in the folder's state yet.
|
||||||
|
|
||||||
|
**Test:** none for the watch failure itself; it needs the inotify limit reached.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### B261 — A folder that has never synced reads "up to date"
|
### B261 — A folder that has never synced reads "up to date"
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Fixed, not verified live
|
||||||
**Found:** 2026-10-31, issue #53: "In Computers I add the folder. It appears as synced."
|
**Found:** 2026-10-31, issue #53: "In Computers I add the folder. It appears as synced."
|
||||||
**Where:** `sync_folder` in `crates/pdfs-core/src/db/migrations.rs`; `sync_state_label` in
|
**Where:** `sync_folder` in `crates/pdfs-core/src/db/migrations.rs`; `sync_state_label` in
|
||||||
`crates/pdfs-gui/src/app/pages/devices.rs`; the location rows in
|
`crates/pdfs-gui/src/app/pages/devices.rs`; the location rows in
|
||||||
@@ -673,14 +684,21 @@ every folder while sync is paused for the whole account.
|
|||||||
it, and a test pins the label for that case. The rows only show a folder's own pause, not the
|
it, and a test pins the label for that case. The rows only show a folder's own pause, not the
|
||||||
account-wide one.
|
account-wide one.
|
||||||
|
|
||||||
**Fix.** Not done. Show "waiting for first sync" when `last_sync` is 0, and show the
|
**Fix.** A mirror folder whose `last_sync` is 0 and whose state is `idle` reads "waiting for
|
||||||
account-wide pause on the folder rows.
|
first sync" on its row. The This computer row on the Computers page counts such folders, as in
|
||||||
|
"2 folders backed up · 1 waiting for its first sync". An on-demand folder has no first sync,
|
||||||
|
so it is left out. The account-wide pause stays where it already is, the pause card at the top
|
||||||
|
of the page; repeating it on every row would only add noise.
|
||||||
|
|
||||||
|
**Test:** `a_folder_reads_up_to_date_only_after_its_first_sync` and
|
||||||
|
`a_folder_before_its_first_sync_is_not_counted_as_backed_up` in `pdfs-gui`; the pinned test now
|
||||||
|
expects the new label.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### B260 — The poll pushes a new folder's first sync behind every other folder
|
### B260 — The poll pushes a new folder's first sync behind every other folder
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Fixed, not verified live
|
||||||
**Found:** 2026-10-31, code audit after issue #53.
|
**Found:** 2026-10-31, code audit after issue #53.
|
||||||
**Where:** `engine_loop` in `crates/pdfs-fuse/src/sync/engine.rs`
|
**Where:** `engine_loop` in `crates/pdfs-fuse/src/sync/engine.rs`
|
||||||
|
|
||||||
@@ -693,14 +711,18 @@ running. When a burst holds both a `ReconcileAll` and a folder's `Reconcile(id)`
|
|||||||
only `reconcile_all`, which goes in id order. A new folder has the highest id, so it always
|
only `reconcile_all`, which goes in id order. A new folder has the highest id, so it always
|
||||||
goes last.
|
goes last.
|
||||||
|
|
||||||
**Fix.** Not done. Run the folders asked for by id before the rest, and don't queue a poll
|
**Fix.** `run_burst` runs the folders a burst names by id first, lowest id first, and then
|
||||||
while a pass runs.
|
every other folder when the burst also holds a `ReconcileAll`. A named folder is read again
|
||||||
|
before its pass. A pause that lands between passes now stops the rest of the burst.
|
||||||
|
|
||||||
|
**Test:** `named_folders_run_before_the_rest_of_a_burst` in `pdfs-fuse`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### B259 — The sync engine can die or hang, and nothing shows it until a restart
|
### B259 — The sync engine can die or hang, and nothing shows it until a restart
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Partly fixed. A hung pass is reported but not ended, and a panic outside a pass
|
||||||
|
still stops the engine; it is reported, not restarted.
|
||||||
**Found:** 2026-10-31, issue #53: a newly added folder did not sync until the reporter restarted
|
**Found:** 2026-10-31, issue #53: a newly added folder did not sync until the reporter restarted
|
||||||
the app. All FUSE workers were idle, nothing was queued, and the warning-level journal was
|
the app. All FUSE workers were idle, nothing was queued, and the warning-level journal was
|
||||||
empty (B258).
|
empty (B258).
|
||||||
@@ -724,15 +746,30 @@ is why it helps.
|
|||||||
nothing about sync.
|
nothing about sync.
|
||||||
- A database error when the engine reads a folder drops that folder's request without a log.
|
- A database error when the engine reads a folder drops that folder's request without a log.
|
||||||
|
|
||||||
**Fix.** Not done. Catch a panic per pass, end its progress and set the folder to `error`. Have
|
**Fix.**
|
||||||
the supervisor restart a finished engine thread. Log passes at info, and report the folder,
|
- Each pass runs under `catch_unwind` (`EngineHealth::contain` in
|
||||||
the pass age and the queue in `Diagnostics`.
|
`crates/pdfs-fuse/src/sync/engine.rs`). A panic ends that pass only: its progress is cleared,
|
||||||
|
the folder is set to `error`, the activity feed says so, and the next poll tries again.
|
||||||
|
- `Diagnostics` carries the engine's state: running or not, the folder of the running pass, how
|
||||||
|
long it has run and how long since it last reported progress, and how many passes panicked.
|
||||||
|
`pdfs diagnostics` prints it as `sync engine: …`.
|
||||||
|
- The supervisor warns when the engine thread has ended, and when a pass has reported no
|
||||||
|
progress for 15 minutes.
|
||||||
|
- A first pass logs its start and end at info, as does any pass that changed something or
|
||||||
|
took 30 s or more. A request for a folder the database cannot read is logged.
|
||||||
|
- Not done: a deadline for a pass, and restarting an engine thread that has ended. The
|
||||||
|
channel's receiver ends with the thread, so a restart needs a new channel in every `Core`
|
||||||
|
clone.
|
||||||
|
|
||||||
|
**Test:** `a_panicking_pass_is_contained_and_counted`, `the_running_pass_is_reported` and
|
||||||
|
`the_engine_reads_as_stopped_once_its_thread_ends` in `pdfs-fuse`;
|
||||||
|
`a_stopped_sync_engine_is_a_stall` and `only_a_quiet_sync_pass_is_a_stall` in the supervisor.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### B258 — `journalctl -p warning` shows nothing, whatever the daemon logged
|
### B258 — `journalctl -p warning` shows nothing, whatever the daemon logged
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Fixed, not verified live
|
||||||
**Found:** 2026-10-31, issue #53: the reporter ran `journalctl --user -u proton-drive.service -b
|
**Found:** 2026-10-31, issue #53: the reporter ran `journalctl --user -u proton-drive.service -b
|
||||||
-p warning`, as `docs/TROUBLESHOOTING.md` tells them to, and got `-- No entries --`.
|
-p warning`, as `docs/TROUBLESHOOTING.md` tells them to, and got `-- No entries --`.
|
||||||
**Where:** `main` in `crates/pdfs-cli/src/main.rs`; `packaging/proton-drive.service`
|
**Where:** `main` in `crates/pdfs-cli/src/main.rs`; `packaging/proton-drive.service`
|
||||||
@@ -745,8 +782,15 @@ stores every line of a service's output at the unit's default priority, info, un
|
|||||||
starts with a `<N>` prefix. So every `WARN` and `ERROR` line is stored as info, and the
|
starts with a `<N>` prefix. So every `WARN` and `ERROR` line is stored as info, and the
|
||||||
troubleshooting guide's filter hides all of them.
|
troubleshooting guide's filter hides all of them.
|
||||||
|
|
||||||
**Fix.** Not done. When `JOURNAL_STREAM` says the output goes to journald, start each line with
|
**Fix.** When standard output is the journal stream (`JOURNAL_STREAM` names the same
|
||||||
the `<N>` prefix for its level.
|
device and inode as fd 1), each line starts with the `<N>` prefix for its level, and ANSI colours
|
||||||
|
are off. A terminal that merely inherited `JOURNAL_STREAM` keeps the plain format
|
||||||
|
(`crates/pdfs-cli/src/journal.rs`).
|
||||||
|
|
||||||
|
**Test:** `each_line_opens_with_the_priority_of_its_level` and
|
||||||
|
`journal_stream_must_name_the_same_file` in `pdfs-cli`. On 2026-10-31, `pdfs diagnose` run with
|
||||||
|
`RUST_LOG=debug` under `systemd-run --user -p StandardOutput=journal` stored its debug lines at
|
||||||
|
`PRIORITY=7` and its report at 6.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
@@ -249,13 +249,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -350,7 +350,7 @@ msgstr "Raster / Liste"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Umbenennen"
|
msgstr "Umbenennen"
|
||||||
@@ -433,7 +433,9 @@ msgstr "Proton Drive kann nicht geöffnet werden"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "Der Proton-Drive-Dienst kann wiederholt nicht starten und versucht es selbstständig erneut. Letzter Fehler: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -693,7 +695,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Synchronisierungsordner konnte nicht hinzugefügt werden"
|
msgstr "Synchronisierungsordner konnte nicht hinzugefügt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Ordner konnten nicht wiederhergestellt werden"
|
msgstr "Ordner konnten nicht wiederhergestellt werden"
|
||||||
|
|
||||||
@@ -1285,12 +1287,12 @@ msgstr "Alben konnten nicht geladen werden"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1940,7 +1942,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Neuer Name"
|
msgstr "Neuer Name"
|
||||||
|
|
||||||
@@ -1965,7 +1967,7 @@ msgstr "Den Zielordner auswählen."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Hierher verschieben"
|
msgstr "Hierher verschieben"
|
||||||
|
|
||||||
@@ -2290,76 +2292,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} Ordner gesichert"
|
msgstr[0] "{n} Ordner gesichert"
|
||||||
msgstr[1] "{n} Ordner gesichert"
|
msgstr[1] "{n} Ordner gesichert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} wartet auf die erste Synchronisierung"
|
||||||
|
msgstr[1] "{folders} · {n} warten auf die erste Synchronisierung"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} erfordert Aufmerksamkeit"
|
msgstr[0] "{folders} · {n} erfordert Aufmerksamkeit"
|
||||||
msgstr[1] "{folders} · {n} erfordern Aufmerksamkeit"
|
msgstr[1] "{folders} · {n} erfordern Aufmerksamkeit"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "wird synchronisiert …"
|
msgstr "wird synchronisiert …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "Synchronisierungsfehler"
|
msgstr "Synchronisierungsfehler"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "erfordert Aufmerksamkeit"
|
msgstr "erfordert Aufmerksamkeit"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "wartet auf erste Synchronisierung"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "aktuell"
|
msgstr "aktuell"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "wird auf Änderungen geprüft …"
|
msgstr "wird auf Änderungen geprüft …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "wird auf Änderungen geprüft – {n} Element geprüft"
|
msgstr[0] "wird auf Änderungen geprüft – {n} Element geprüft"
|
||||||
msgstr[1] "wird auf Änderungen geprüft – {n} Elemente geprüft"
|
msgstr[1] "wird auf Änderungen geprüft – {n} Elemente geprüft"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "wird auf Änderungen geprüft – {done} von {total}"
|
msgstr "wird auf Änderungen geprüft – {done} von {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "{done} von {total} wird synchronisiert"
|
msgstr "{done} von {total} wird synchronisiert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "{file} wird synchronisiert – {done} von {total}"
|
msgstr "{file} wird synchronisiert – {done} von {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Ordner zur Synchronisierung hinzufügen"
|
msgstr "Ordner zur Synchronisierung hinzufügen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Ordner wird synchronisiert …"
|
msgstr "Ordner wird synchronisiert …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Ordner konnte nicht hinzugefügt werden"
|
msgstr "Ordner konnte nicht hinzugefügt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Wiederherstellbare Ordner konnten nicht aufgelistet werden"
|
msgstr "Wiederherstellbare Ordner konnten nicht aufgelistet werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2367,19 +2380,19 @@ msgstr ""
|
|||||||
"Die Ordner ankreuzen, die mit diesem Rechner synchronisiert werden sollen, "
|
"Die Ordner ankreuzen, die mit diesem Rechner synchronisiert werden sollen, "
|
||||||
"und für jeden den Speicherort anpassen."
|
"und für jeden den Speicherort anpassen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Ordner wiederherstellen"
|
msgstr "Ordner wiederherstellen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Wiederherstellen"
|
msgstr "Wiederherstellen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Ordner werden wiederhergestellt …"
|
msgstr "Ordner werden wiederhergestellt …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2388,37 +2401,37 @@ msgstr ""
|
|||||||
"Diese Ordner werden von „{name}“ gesichert. Wiederhergestellte Ordner werden "
|
"Diese Ordner werden von „{name}“ gesichert. Wiederhergestellte Ordner werden "
|
||||||
"weiterhin mit der Kopie dieses Computers synchronisiert."
|
"weiterhin mit der Kopie dieses Computers synchronisiert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr "Diese Ordner werden in Proton Drive unter diesem Computer gesichert."
|
msgstr "Diese Ordner werden in Proton Drive unter diesem Computer gesichert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nichts wiederherzustellen – alle Ordner von „{name}“ werden bereits hier "
|
"Nichts wiederherzustellen – alle Ordner von „{name}“ werden bereits hier "
|
||||||
"synchronisiert."
|
"synchronisiert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nichts wiederherzustellen – alle Ordner dieses Computers werden bereits hier "
|
"Nichts wiederherzustellen – alle Ordner dieses Computers werden bereits hier "
|
||||||
"synchronisiert."
|
"synchronisiert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "Ordner wird auf „Nur online“ umgestellt"
|
msgstr "Ordner wird auf „Nur online“ umgestellt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "Ordner wird heruntergeladen und bleibt synchronisiert"
|
msgstr "Ordner wird heruntergeladen und bleibt synchronisiert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Modus konnte nicht geändert werden"
|
msgstr "Modus konnte nicht geändert werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2436,7 +2449,7 @@ msgstr ""
|
|||||||
"Ordner auf „Synchronisiert“ umstellen und vor dem Entfernen warten, bis der "
|
"Ordner auf „Synchronisiert“ umstellen und vor dem Entfernen warten, bis der "
|
||||||
"Download abgeschlossen ist."
|
"Download abgeschlossen ist."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2450,68 +2463,68 @@ msgstr ""
|
|||||||
"mehr synchronisiert. Es kann zusätzlich ausgewählt werden, die Kopie in "
|
"mehr synchronisiert. Es kann zusätzlich ausgewählt werden, die Kopie in "
|
||||||
"Proton Drive zu löschen."
|
"Proton Drive zu löschen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Synchronisierung des Ordners beenden?"
|
msgstr "Synchronisierung des Ordners beenden?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Auch aus Proton Drive löschen"
|
msgstr "Auch aus Proton Drive löschen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Löscht die einzige Kopie dieser Dateien."
|
msgstr "Löscht die einzige Kopie dieser Dateien."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "Die lokale Kopie bleibt unverändert."
|
msgstr "Die lokale Kopie bleibt unverändert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Synchronisierung beenden"
|
msgstr "Synchronisierung beenden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Synchronisierung des Ordners beendet"
|
msgstr "Synchronisierung des Ordners beendet"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Synchronisierung des Ordners konnte nicht beendet werden"
|
msgstr "Synchronisierung des Ordners konnte nicht beendet werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Computer umbenennen"
|
msgstr "Computer umbenennen"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "„{name}“ umbenennen."
|
msgstr "„{name}“ umbenennen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Der Computer konnte nicht umbenannt werden"
|
msgstr "Der Computer konnte nicht umbenannt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Ein Name ist erforderlich."
|
msgstr "Ein Name ist erforderlich."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Computer umbenannt"
|
msgstr "Computer umbenannt"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Zur Bestätigung „{name}“ eingeben"
|
msgstr "Zur Bestätigung „{name}“ eingeben"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Computer entfernen?"
|
msgstr "Computer entfernen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2526,26 +2539,26 @@ msgstr ""
|
|||||||
"gelöscht. Die Dateien auf dem Computer selbst bleiben unberührt – dies kann "
|
"gelöscht. Die Dateien auf dem Computer selbst bleiben unberührt – dies kann "
|
||||||
"jedoch von hier aus nicht rückgängig gemacht werden."
|
"jedoch von hier aus nicht rückgängig gemacht werden."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Computer entfernt"
|
msgstr "Computer entfernt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Der Computer konnte nicht entfernt werden"
|
msgstr "Der Computer konnte nicht entfernt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Diese Sicherung hier fortsetzen?"
|
msgstr "Diese Sicherung hier fortsetzen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2564,25 +2577,25 @@ msgstr ""
|
|||||||
"werden nicht verschoben. Mit „Auf diesem Computer wiederherstellen“ lässt "
|
"werden nicht verschoben. Mit „Auf diesem Computer wiederherstellen“ lässt "
|
||||||
"sich danach zurückholen, was „{name}“ synchronisiert hat."
|
"sich danach zurückholen, was „{name}“ synchronisiert hat."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Hier fortsetzen"
|
msgstr "Hier fortsetzen"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Sicherung jetzt als „{name}“"
|
msgstr "Sicherung jetzt als „{name}“"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Diese Sicherung konnte hier nicht fortgesetzt werden"
|
msgstr "Diese Sicherung konnte hier nicht fortgesetzt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Mit diesem Computer synchronisieren?"
|
msgstr "Mit diesem Computer synchronisieren?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2599,25 +2612,25 @@ msgstr ""
|
|||||||
"„{name}“. Bereits hier synchronisierte Ordner bleiben, wo sie sind. Als "
|
"„{name}“. Bereits hier synchronisierte Ordner bleiben, wo sie sind. Als "
|
||||||
"Nächstes wählen Sie, welche seiner Ordner hier synchronisiert werden."
|
"Nächstes wählen Sie, welche seiner Ordner hier synchronisiert werden."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Hier synchronisieren"
|
msgstr "Hier synchronisieren"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Jetzt synchron mit „{name}“"
|
msgstr "Jetzt synchron mit „{name}“"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Synchronisierung mit diesem Computer nicht möglich"
|
msgstr "Synchronisierung mit diesem Computer nicht möglich"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Sicherung auf diesen Computer verschieben?"
|
msgstr "Sicherung auf diesen Computer verschieben?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2634,12 +2647,12 @@ msgstr ""
|
|||||||
"verschwinden."
|
"verschwinden."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Sicherung von „{name}“ verschoben"
|
msgstr "Sicherung von „{name}“ verschoben"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Diese Sicherung konnte nicht verschoben werden"
|
msgstr "Diese Sicherung konnte nicht verschoben werden"
|
||||||
|
|
||||||
@@ -3385,7 +3398,7 @@ msgid "paused"
|
|||||||
msgstr "pausiert"
|
msgstr "pausiert"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "nicht verfügbar"
|
msgstr "nicht verfügbar"
|
||||||
|
|
||||||
|
|||||||
+96
-83
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: English (United Kingdom)\n"
|
"Language-Team: English (United Kingdom)\n"
|
||||||
@@ -245,13 +245,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -346,7 +346,7 @@ msgstr "Grid / list"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Rename"
|
msgstr "Rename"
|
||||||
@@ -429,7 +429,9 @@ msgstr "Can't open your Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"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}"
|
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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -685,7 +687,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Couldn't add a sync folder"
|
msgstr "Couldn't add a sync folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Couldn't restore folders"
|
msgstr "Couldn't restore folders"
|
||||||
|
|
||||||
@@ -1273,12 +1275,12 @@ msgstr "Couldn't load albums"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1921,7 +1923,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "New name"
|
msgstr "New name"
|
||||||
|
|
||||||
@@ -1946,7 +1948,7 @@ msgstr "Choose the folder to move into."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Move Here"
|
msgstr "Move Here"
|
||||||
|
|
||||||
@@ -2267,76 +2269,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} folder backed up"
|
msgstr[0] "{n} folder backed up"
|
||||||
msgstr[1] "{n} folders backed up"
|
msgstr[1] "{n} folders backed up"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} waiting for its first sync"
|
||||||
|
msgstr[1] "{folders} · {n} waiting for their first sync"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} needs attention"
|
msgstr[0] "{folders} · {n} needs attention"
|
||||||
msgstr[1] "{folders} · {n} need attention"
|
msgstr[1] "{folders} · {n} need attention"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "syncing…"
|
msgstr "syncing…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "sync error"
|
msgstr "sync error"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "needs attention"
|
msgstr "needs attention"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "waiting for first sync"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "up to date"
|
msgstr "up to date"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "checking for changes…"
|
msgstr "checking for changes…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "checking for changes — {n} item checked"
|
msgstr[0] "checking for changes — {n} item checked"
|
||||||
msgstr[1] "checking for changes — {n} items checked"
|
msgstr[1] "checking for changes — {n} items checked"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "checking for changes — {done} of {total}"
|
msgstr "checking for changes — {done} of {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "syncing {done} of {total}"
|
msgstr "syncing {done} of {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "syncing {file} — {done} of {total}"
|
msgstr "syncing {file} — {done} of {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Add Folder to Sync"
|
msgstr "Add Folder to Sync"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Syncing folder…"
|
msgstr "Syncing folder…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Couldn't add folder"
|
msgstr "Couldn't add folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Couldn't list folders to restore"
|
msgstr "Couldn't list folders to restore"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2344,19 +2357,19 @@ msgstr ""
|
|||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Restore Folders"
|
msgstr "Restore Folders"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Restore"
|
msgstr "Restore"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Restoring folders…"
|
msgstr "Restoring folders…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2365,33 +2378,33 @@ msgstr ""
|
|||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
"with that computer's copy."
|
"with that computer's copy."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr "These folders are backed up under this computer in Proton Drive."
|
msgstr "These folders are backed up under this computer in Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr "Nothing to restore — “{name}”'s folders are all synced here."
|
msgstr "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr "Nothing to restore — this computer's folders are all synced here."
|
msgstr "Nothing to restore — this computer's folders are all synced here."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "Folder will switch to online only"
|
msgstr "Folder will switch to online only"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "Folder will download and stay synced"
|
msgstr "Folder will download and stay synced"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Couldn't change mode"
|
msgstr "Couldn't change mode"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2408,7 +2421,7 @@ msgstr ""
|
|||||||
"copy, cancel, switch the folder to Synced, and wait for the download to "
|
"copy, cancel, switch the folder to Synced, and wait for the download to "
|
||||||
"finish before removing it."
|
"finish before removing it."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2421,68 +2434,68 @@ msgstr ""
|
|||||||
"The local files stay on this disk and simply stop being synced. Choose "
|
"The local files stay on this disk and simply stop being synced. Choose "
|
||||||
"whether to also delete the copy in Proton Drive."
|
"whether to also delete the copy in Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Stop Syncing Folder?"
|
msgstr "Stop Syncing Folder?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Also delete from Proton Drive"
|
msgstr "Also delete from Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Deletes the only copy of these files."
|
msgstr "Deletes the only copy of these files."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "The local copy is unaffected."
|
msgstr "The local copy is unaffected."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Stop Syncing"
|
msgstr "Stop Syncing"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Stopped syncing folder"
|
msgstr "Stopped syncing folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Couldn't stop syncing the folder"
|
msgstr "Couldn't stop syncing the folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Rename Computer"
|
msgstr "Rename Computer"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Rename “{name}”."
|
msgstr "Rename “{name}”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Couldn't rename the computer"
|
msgstr "Couldn't rename the computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "A name is required."
|
msgstr "A name is required."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Computer renamed"
|
msgstr "Computer renamed"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Type “{name}” to confirm"
|
msgstr "Type “{name}” to confirm"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Remove Computer?"
|
msgstr "Remove Computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2497,26 +2510,26 @@ msgstr ""
|
|||||||
"on that computer itself are not touched — but this cannot be undone from "
|
"on that computer itself are not touched — but this cannot be undone from "
|
||||||
"here."
|
"here."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Computer removed"
|
msgstr "Computer removed"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Couldn't remove the computer"
|
msgstr "Couldn't remove the computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Continue This Backup Here?"
|
msgstr "Continue This Backup Here?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2535,25 +2548,25 @@ msgstr ""
|
|||||||
"“Restore to This Computer” afterwards to bring back what “{name}” was "
|
"“Restore to This Computer” afterwards to bring back what “{name}” was "
|
||||||
"syncing."
|
"syncing."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Continue Here"
|
msgstr "Continue Here"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Now backing up as “{name}”"
|
msgstr "Now backing up as “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Couldn't continue that backup here"
|
msgstr "Couldn't continue that backup here"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Sync With This Computer?"
|
msgstr "Sync With This Computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2570,25 +2583,25 @@ msgstr ""
|
|||||||
"Folders already synced here stay where they are. Next you choose which of "
|
"Folders already synced here stay where they are. Next you choose which of "
|
||||||
"its folders to sync here."
|
"its folders to sync here."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Sync Here"
|
msgstr "Sync Here"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Now syncing with “{name}”"
|
msgstr "Now syncing with “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Couldn't sync with that computer"
|
msgstr "Couldn't sync with that computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Move Backup to This Computer?"
|
msgstr "Move Backup to This Computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2604,12 +2617,12 @@ msgstr ""
|
|||||||
"Stop Proton Drive on “{name}” first. Otherwise it sees its folders disappear."
|
"Stop Proton Drive on “{name}” first. Otherwise it sees its folders disappear."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Moved the backup of “{name}”"
|
msgstr "Moved the backup of “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Couldn't move that backup"
|
msgstr "Couldn't move that backup"
|
||||||
|
|
||||||
@@ -3332,7 +3345,7 @@ msgid "paused"
|
|||||||
msgstr "paused"
|
msgstr "paused"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "not available"
|
msgstr "not available"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: Spanish\n"
|
"Language-Team: Spanish\n"
|
||||||
@@ -247,13 +247,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -348,7 +348,7 @@ msgstr "Cuadrícula / lista"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renombrar"
|
msgstr "Renombrar"
|
||||||
@@ -431,7 +431,9 @@ msgstr "No se puede abrir Proton Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "El servicio de Proton Drive no consigue iniciarse y vuelve a intentarlo por sí solo. Último error: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -690,7 +692,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "No se pudo añadir una carpeta sincronizada"
|
msgstr "No se pudo añadir una carpeta sincronizada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "No se pudieron restaurar las carpetas"
|
msgstr "No se pudieron restaurar las carpetas"
|
||||||
|
|
||||||
@@ -1279,12 +1281,12 @@ msgstr "No se pudieron cargar los álbumes"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1932,7 +1934,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Nombre nuevo"
|
msgstr "Nombre nuevo"
|
||||||
|
|
||||||
@@ -1957,7 +1959,7 @@ msgstr "Elija la carpeta de destino."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Mover aquí"
|
msgstr "Mover aquí"
|
||||||
|
|
||||||
@@ -2279,76 +2281,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} carpeta con copia de seguridad"
|
msgstr[0] "{n} carpeta con copia de seguridad"
|
||||||
msgstr[1] "{n} carpetas con copia de seguridad"
|
msgstr[1] "{n} carpetas con copia de seguridad"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} espera su primera sincronización"
|
||||||
|
msgstr[1] "{folders} · {n} esperan su primera sincronización"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} requiere atención"
|
msgstr[0] "{folders} · {n} requiere atención"
|
||||||
msgstr[1] "{folders} · {n} requieren atención"
|
msgstr[1] "{folders} · {n} requieren atención"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "sincronizando…"
|
msgstr "sincronizando…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "error de sincronización"
|
msgstr "error de sincronización"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "requiere atención"
|
msgstr "requiere atención"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "esperando la primera sincronización"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "actualizado"
|
msgstr "actualizado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "buscando cambios…"
|
msgstr "buscando cambios…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "buscando cambios: {n} elemento revisado"
|
msgstr[0] "buscando cambios: {n} elemento revisado"
|
||||||
msgstr[1] "buscando cambios: {n} elementos revisados"
|
msgstr[1] "buscando cambios: {n} elementos revisados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "buscando cambios: {done} de {total}"
|
msgstr "buscando cambios: {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "sincronizando {done} de {total}"
|
msgstr "sincronizando {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "sincronizando {file}: {done} de {total}"
|
msgstr "sincronizando {file}: {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Añadir carpeta para sincronizar"
|
msgstr "Añadir carpeta para sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Sincronizando la carpeta…"
|
msgstr "Sincronizando la carpeta…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "No se pudo añadir la carpeta"
|
msgstr "No se pudo añadir la carpeta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "No se pudieron listar las carpetas para restaurar"
|
msgstr "No se pudieron listar las carpetas para restaurar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2356,19 +2369,19 @@ msgstr ""
|
|||||||
"Marque las carpetas que sincronizar con esta máquina y ajuste dónde debe "
|
"Marque las carpetas que sincronizar con esta máquina y ajuste dónde debe "
|
||||||
"estar cada una."
|
"estar cada una."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Restaurar carpetas"
|
msgstr "Restaurar carpetas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Restaurando carpetas…"
|
msgstr "Restaurando carpetas…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2377,36 +2390,36 @@ msgstr ""
|
|||||||
"Estas carpetas tienen copia de seguridad desde “{name}”. Las carpetas "
|
"Estas carpetas tienen copia de seguridad desde “{name}”. Las carpetas "
|
||||||
"restauradas siguen sincronizándose con la copia de ese equipo."
|
"restauradas siguen sincronizándose con la copia de ese equipo."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Estas carpetas tienen copia de seguridad bajo este equipo en Proton Drive."
|
"Estas carpetas tienen copia de seguridad bajo este equipo en Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nada que restaurar: todas las carpetas de “{name}” ya se sincronizan aquí."
|
"Nada que restaurar: todas las carpetas de “{name}” ya se sincronizan aquí."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nada que restaurar: todas las carpetas de este equipo ya se sincronizan aquí."
|
"Nada que restaurar: todas las carpetas de este equipo ya se sincronizan aquí."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "La carpeta pasará a solo en línea"
|
msgstr "La carpeta pasará a solo en línea"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "La carpeta se descargará y permanecerá sincronizada"
|
msgstr "La carpeta se descargará y permanecerá sincronizada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "No se pudo cambiar el modo"
|
msgstr "No se pudo cambiar el modo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2423,7 +2436,7 @@ msgstr ""
|
|||||||
"Para conservar una copia local, cancele, cambie la carpeta a Sincronizada y "
|
"Para conservar una copia local, cancele, cambie la carpeta a Sincronizada y "
|
||||||
"espere a que termine la descarga antes de quitarla."
|
"espere a que termine la descarga antes de quitarla."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2436,68 +2449,68 @@ msgstr ""
|
|||||||
"Los archivos locales permanecen en este disco y simplemente dejan de "
|
"Los archivos locales permanecen en este disco y simplemente dejan de "
|
||||||
"sincronizarse. Elija si quiere eliminar también la copia en Proton Drive."
|
"sincronizarse. Elija si quiere eliminar también la copia en Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "¿Dejar de sincronizar la carpeta?"
|
msgstr "¿Dejar de sincronizar la carpeta?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Eliminar también de Proton Drive"
|
msgstr "Eliminar también de Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Elimina la única copia de estos archivos."
|
msgstr "Elimina la única copia de estos archivos."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "La copia local no se ve afectada."
|
msgstr "La copia local no se ve afectada."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Dejar de sincronizar"
|
msgstr "Dejar de sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Se dejó de sincronizar la carpeta"
|
msgstr "Se dejó de sincronizar la carpeta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "No se pudo dejar de sincronizar la carpeta"
|
msgstr "No se pudo dejar de sincronizar la carpeta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Renombrar equipo"
|
msgstr "Renombrar equipo"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Renombrar “{name}”."
|
msgstr "Renombrar “{name}”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "No se pudo renombrar el equipo"
|
msgstr "No se pudo renombrar el equipo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Se necesita un nombre."
|
msgstr "Se necesita un nombre."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Equipo renombrado"
|
msgstr "Equipo renombrado"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Escriba “{name}” para confirmar"
|
msgstr "Escriba “{name}” para confirmar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "¿Quitar el equipo?"
|
msgstr "¿Quitar el equipo?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2511,26 +2524,26 @@ msgstr ""
|
|||||||
"Todo lo que respaldó en Proton Drive se eliminará con él. Los archivos de "
|
"Todo lo que respaldó en Proton Drive se eliminará con él. Los archivos de "
|
||||||
"ese equipo no se tocan, pero esto no se puede deshacer desde aquí."
|
"ese equipo no se tocan, pero esto no se puede deshacer desde aquí."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Equipo quitado"
|
msgstr "Equipo quitado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "No se pudo quitar el equipo"
|
msgstr "No se pudo quitar el equipo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "¿Continuar esta copia de seguridad aquí?"
|
msgstr "¿Continuar esta copia de seguridad aquí?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2549,25 +2562,25 @@ msgstr ""
|
|||||||
"no se mueven. Después, use “Restaurar en este equipo” para recuperar lo que "
|
"no se mueven. Después, use “Restaurar en este equipo” para recuperar lo que "
|
||||||
"“{name}” sincronizaba."
|
"“{name}” sincronizaba."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Continuar aquí"
|
msgstr "Continuar aquí"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Ahora se hace copia de seguridad como “{name}”"
|
msgstr "Ahora se hace copia de seguridad como “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "No se pudo continuar esa copia de seguridad aquí"
|
msgstr "No se pudo continuar esa copia de seguridad aquí"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "¿Sincronizar con este equipo?"
|
msgstr "¿Sincronizar con este equipo?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2584,25 +2597,25 @@ msgstr ""
|
|||||||
"Proton Drive. Las carpetas ya sincronizadas aquí se quedan donde están. A "
|
"Proton Drive. Las carpetas ya sincronizadas aquí se quedan donde están. A "
|
||||||
"continuación, elija qué carpetas suyas sincronizar aquí."
|
"continuación, elija qué carpetas suyas sincronizar aquí."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Sincronizar aquí"
|
msgstr "Sincronizar aquí"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Ahora se sincroniza con “{name}”"
|
msgstr "Ahora se sincroniza con “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "No se pudo sincronizar con ese equipo"
|
msgstr "No se pudo sincronizar con ese equipo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "¿Mover la copia de seguridad a este equipo?"
|
msgstr "¿Mover la copia de seguridad a este equipo?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2619,12 +2632,12 @@ msgstr ""
|
|||||||
"carpetas."
|
"carpetas."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Se movió la copia de seguridad de “{name}”"
|
msgstr "Se movió la copia de seguridad de “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "No se pudo mover esa copia de seguridad"
|
msgstr "No se pudo mover esa copia de seguridad"
|
||||||
|
|
||||||
@@ -3359,7 +3372,7 @@ msgid "paused"
|
|||||||
msgstr "en pausa"
|
msgstr "en pausa"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "no disponible"
|
msgstr "no disponible"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: French\n"
|
"Language-Team: French\n"
|
||||||
@@ -249,13 +249,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -350,7 +350,7 @@ msgstr "Grille / liste"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renommer"
|
msgstr "Renommer"
|
||||||
@@ -433,7 +433,9 @@ msgstr "Impossible d’ouvrir Proton Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"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}"
|
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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -693,7 +695,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Impossible d’ajouter un dossier synchronisé"
|
msgstr "Impossible d’ajouter un dossier synchronisé"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Impossible de restaurer les dossiers"
|
msgstr "Impossible de restaurer les dossiers"
|
||||||
|
|
||||||
@@ -1290,12 +1292,12 @@ msgstr "Impossible de charger les albums"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1944,7 +1946,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Nouveau nom"
|
msgstr "Nouveau nom"
|
||||||
|
|
||||||
@@ -1969,7 +1971,7 @@ msgstr "Choisissez le dossier de destination."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Déplacer ici"
|
msgstr "Déplacer ici"
|
||||||
|
|
||||||
@@ -2292,76 +2294,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} dossier sauvegardé"
|
msgstr[0] "{n} dossier sauvegardé"
|
||||||
msgstr[1] "{n} dossiers sauvegardés"
|
msgstr[1] "{n} dossiers sauvegardés"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} attend sa première synchronisation"
|
||||||
|
msgstr[1] "{folders} · {n} attendent leur première synchronisation"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} requiert votre attention"
|
msgstr[0] "{folders} · {n} requiert votre attention"
|
||||||
msgstr[1] "{folders} · {n} requièrent votre attention"
|
msgstr[1] "{folders} · {n} requièrent votre attention"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "synchronisation…"
|
msgstr "synchronisation…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "erreur de synchronisation"
|
msgstr "erreur de synchronisation"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "attention requise"
|
msgstr "attention requise"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "en attente de la première synchronisation"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "à jour"
|
msgstr "à jour"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "recherche de modifications…"
|
msgstr "recherche de modifications…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "recherche de modifications — {n} élément vérifié"
|
msgstr[0] "recherche de modifications — {n} élément vérifié"
|
||||||
msgstr[1] "recherche de modifications — {n} éléments vérifiés"
|
msgstr[1] "recherche de modifications — {n} éléments vérifiés"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "recherche de modifications — {done} sur {total}"
|
msgstr "recherche de modifications — {done} sur {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "synchronisation de {done} sur {total}"
|
msgstr "synchronisation de {done} sur {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "synchronisation de {file} — {done} sur {total}"
|
msgstr "synchronisation de {file} — {done} sur {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Ajouter un dossier à synchroniser"
|
msgstr "Ajouter un dossier à synchroniser"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Synchronisation du dossier…"
|
msgstr "Synchronisation du dossier…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Impossible d’ajouter le dossier"
|
msgstr "Impossible d’ajouter le dossier"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Impossible de lister les dossiers à restaurer"
|
msgstr "Impossible de lister les dossiers à restaurer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2369,19 +2382,19 @@ msgstr ""
|
|||||||
"Cochez les dossiers à synchroniser sur cette machine et ajustez "
|
"Cochez les dossiers à synchroniser sur cette machine et ajustez "
|
||||||
"l’emplacement de chacun."
|
"l’emplacement de chacun."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Restaurer les dossiers"
|
msgstr "Restaurer les dossiers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Restaurer"
|
msgstr "Restaurer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Restauration des dossiers…"
|
msgstr "Restauration des dossiers…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2390,35 +2403,35 @@ msgstr ""
|
|||||||
"Ces dossiers sont sauvegardés depuis « {name} ». Les dossiers restaurés "
|
"Ces dossiers sont sauvegardés depuis « {name} ». Les dossiers restaurés "
|
||||||
"restent synchronisés avec la copie de cet ordinateur."
|
"restent synchronisés avec la copie de cet ordinateur."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr "Ces dossiers sont sauvegardés sous cet ordinateur dans Proton Drive."
|
msgstr "Ces dossiers sont sauvegardés sous cet ordinateur dans Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Rien à restaurer — les dossiers de « {name} » sont tous synchronisés ici."
|
"Rien à restaurer — les dossiers de « {name} » sont tous synchronisés ici."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Rien à restaurer — les dossiers de cet ordinateur sont tous synchronisés ici."
|
"Rien à restaurer — les dossiers de cet ordinateur sont tous synchronisés ici."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "Le dossier passera en ligne uniquement"
|
msgstr "Le dossier passera en ligne uniquement"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "Le dossier va être téléchargé et rester synchronisé"
|
msgstr "Le dossier va être téléchargé et rester synchronisé"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Impossible de changer de mode"
|
msgstr "Impossible de changer de mode"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2435,7 +2448,7 @@ msgstr ""
|
|||||||
"arrêtée. Pour conserver une copie locale, annulez, passez le dossier en "
|
"arrêtée. Pour conserver une copie locale, annulez, passez le dossier en "
|
||||||
"« Synchronisé » et attendez la fin du téléchargement avant de le retirer."
|
"« Synchronisé » et attendez la fin du téléchargement avant de le retirer."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2449,68 +2462,68 @@ msgstr ""
|
|||||||
"synchronisés. Choisissez s’il faut aussi supprimer la copie dans Proton "
|
"synchronisés. Choisissez s’il faut aussi supprimer la copie dans Proton "
|
||||||
"Drive."
|
"Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Arrêter la synchronisation du dossier ?"
|
msgstr "Arrêter la synchronisation du dossier ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Supprimer aussi de Proton Drive"
|
msgstr "Supprimer aussi de Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Supprime l’unique copie de ces fichiers."
|
msgstr "Supprime l’unique copie de ces fichiers."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "La copie locale n’est pas affectée."
|
msgstr "La copie locale n’est pas affectée."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Arrêter la synchronisation"
|
msgstr "Arrêter la synchronisation"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Synchronisation du dossier arrêtée"
|
msgstr "Synchronisation du dossier arrêtée"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Impossible d’arrêter la synchronisation du dossier"
|
msgstr "Impossible d’arrêter la synchronisation du dossier"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Renommer l’ordinateur"
|
msgstr "Renommer l’ordinateur"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Renommer « {name} »."
|
msgstr "Renommer « {name} »."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Impossible de renommer l’ordinateur"
|
msgstr "Impossible de renommer l’ordinateur"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Un nom est requis."
|
msgstr "Un nom est requis."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Ordinateur renommé"
|
msgstr "Ordinateur renommé"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Saisissez « {name} » pour confirmer"
|
msgstr "Saisissez « {name} » pour confirmer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Retirer l’ordinateur ?"
|
msgstr "Retirer l’ordinateur ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2525,26 +2538,26 @@ msgstr ""
|
|||||||
"fichiers présents sur cet ordinateur ne sont pas touchés — mais cette action "
|
"fichiers présents sur cet ordinateur ne sont pas touchés — mais cette action "
|
||||||
"ne peut pas être annulée d’ici."
|
"ne peut pas être annulée d’ici."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Retirer"
|
msgstr "Retirer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Ordinateur retiré"
|
msgstr "Ordinateur retiré"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Impossible de retirer l’ordinateur"
|
msgstr "Impossible de retirer l’ordinateur"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Continuer cette sauvegarde ici ?"
|
msgstr "Continuer cette sauvegarde ici ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2563,25 +2576,25 @@ msgstr ""
|
|||||||
"ne sont pas déplacés. Utilisez ensuite « Restaurer sur cet ordinateur » pour "
|
"ne sont pas déplacés. Utilisez ensuite « Restaurer sur cet ordinateur » pour "
|
||||||
"récupérer ce que « {name} » synchronisait."
|
"récupérer ce que « {name} » synchronisait."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Continuer ici"
|
msgstr "Continuer ici"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Sauvegarde désormais en tant que « {name} »"
|
msgstr "Sauvegarde désormais en tant que « {name} »"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Impossible de continuer cette sauvegarde ici"
|
msgstr "Impossible de continuer cette sauvegarde ici"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Synchroniser avec cet ordinateur ?"
|
msgstr "Synchroniser avec cet ordinateur ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2598,25 +2611,25 @@ msgstr ""
|
|||||||
"dans Proton Drive. Les dossiers déjà synchronisés ici restent où ils sont. "
|
"dans Proton Drive. Les dossiers déjà synchronisés ici restent où ils sont. "
|
||||||
"Vous choisissez ensuite lesquels de ses dossiers synchroniser ici."
|
"Vous choisissez ensuite lesquels de ses dossiers synchroniser ici."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Synchroniser ici"
|
msgstr "Synchroniser ici"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Synchronisé désormais avec « {name} »"
|
msgstr "Synchronisé désormais avec « {name} »"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Impossible de synchroniser avec cet ordinateur"
|
msgstr "Impossible de synchroniser avec cet ordinateur"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Déplacer la sauvegarde vers cet ordinateur ?"
|
msgstr "Déplacer la sauvegarde vers cet ordinateur ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2633,12 +2646,12 @@ msgstr ""
|
|||||||
"disparaître."
|
"disparaître."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Sauvegarde de « {name} » déplacée"
|
msgstr "Sauvegarde de « {name} » déplacée"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Impossible de déplacer cette sauvegarde"
|
msgstr "Impossible de déplacer cette sauvegarde"
|
||||||
|
|
||||||
@@ -3385,7 +3398,7 @@ msgid "paused"
|
|||||||
msgstr "en pause"
|
msgstr "en pause"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "non disponible"
|
msgstr "non disponible"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
@@ -245,13 +245,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -346,7 +346,7 @@ msgstr "Griglia / elenco"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Rinomina"
|
msgstr "Rinomina"
|
||||||
@@ -429,7 +429,9 @@ msgstr "Impossibile aprire Proton Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "Il servizio di Proton Drive non riesce ad avviarsi e riprova da solo. Ultimo errore: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -689,7 +691,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Impossibile aggiungere una cartella sincronizzata"
|
msgstr "Impossibile aggiungere una cartella sincronizzata"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Impossibile ripristinare le cartelle"
|
msgstr "Impossibile ripristinare le cartelle"
|
||||||
|
|
||||||
@@ -1284,12 +1286,12 @@ msgstr "Impossibile caricare gli album"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1938,7 +1940,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Nuovo nome"
|
msgstr "Nuovo nome"
|
||||||
|
|
||||||
@@ -1963,7 +1965,7 @@ msgstr "Scegli la cartella di destinazione."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Sposta qui"
|
msgstr "Sposta qui"
|
||||||
|
|
||||||
@@ -2286,76 +2288,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} cartella sottoposta a backup"
|
msgstr[0] "{n} cartella sottoposta a backup"
|
||||||
msgstr[1] "{n} cartelle sottoposte a backup"
|
msgstr[1] "{n} cartelle sottoposte a backup"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} attende la prima sincronizzazione"
|
||||||
|
msgstr[1] "{folders} · {n} attendono la prima sincronizzazione"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} richiede attenzione"
|
msgstr[0] "{folders} · {n} richiede attenzione"
|
||||||
msgstr[1] "{folders} · {n} richiedono attenzione"
|
msgstr[1] "{folders} · {n} richiedono attenzione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "sincronizzazione…"
|
msgstr "sincronizzazione…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "errore di sincronizzazione"
|
msgstr "errore di sincronizzazione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "richiede attenzione"
|
msgstr "richiede attenzione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "in attesa della prima sincronizzazione"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "aggiornato"
|
msgstr "aggiornato"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "controllo delle modifiche…"
|
msgstr "controllo delle modifiche…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "controllo delle modifiche: {n} elemento controllato"
|
msgstr[0] "controllo delle modifiche: {n} elemento controllato"
|
||||||
msgstr[1] "controllo delle modifiche: {n} elementi controllati"
|
msgstr[1] "controllo delle modifiche: {n} elementi controllati"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "controllo delle modifiche: {done} di {total}"
|
msgstr "controllo delle modifiche: {done} di {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "sincronizzazione {done} di {total}"
|
msgstr "sincronizzazione {done} di {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "sincronizzazione di {file}: {done} di {total}"
|
msgstr "sincronizzazione di {file}: {done} di {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Aggiungi cartella da sincronizzare"
|
msgstr "Aggiungi cartella da sincronizzare"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Sincronizzazione della cartella…"
|
msgstr "Sincronizzazione della cartella…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Impossibile aggiungere la cartella"
|
msgstr "Impossibile aggiungere la cartella"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Impossibile elencare le cartelle da ripristinare"
|
msgstr "Impossibile elencare le cartelle da ripristinare"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2363,19 +2376,19 @@ msgstr ""
|
|||||||
"Seleziona le cartelle da sincronizzare su questa macchina e regola dove deve "
|
"Seleziona le cartelle da sincronizzare su questa macchina e regola dove deve "
|
||||||
"trovarsi ciascuna."
|
"trovarsi ciascuna."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Ripristina cartelle"
|
msgstr "Ripristina cartelle"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Ripristina"
|
msgstr "Ripristina"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Ripristino delle cartelle…"
|
msgstr "Ripristino delle cartelle…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2384,39 +2397,39 @@ msgstr ""
|
|||||||
"Queste cartelle sono sottoposte a backup da “{name}”. Le cartelle "
|
"Queste cartelle sono sottoposte a backup da “{name}”. Le cartelle "
|
||||||
"ripristinate continuano a sincronizzarsi con la copia di quel computer."
|
"ripristinate continuano a sincronizzarsi con la copia di quel computer."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Queste cartelle sono sottoposte a backup sotto questo computer in Proton "
|
"Queste cartelle sono sottoposte a backup sotto questo computer in Proton "
|
||||||
"Drive."
|
"Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Niente da ripristinare: le cartelle di “{name}” sono già tutte sincronizzate "
|
"Niente da ripristinare: le cartelle di “{name}” sono già tutte sincronizzate "
|
||||||
"qui."
|
"qui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Niente da ripristinare: le cartelle di questo computer sono già tutte "
|
"Niente da ripristinare: le cartelle di questo computer sono già tutte "
|
||||||
"sincronizzate qui."
|
"sincronizzate qui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "La cartella passerà a solo online"
|
msgstr "La cartella passerà a solo online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "La cartella verrà scaricata e resterà sincronizzata"
|
msgstr "La cartella verrà scaricata e resterà sincronizzata"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Impossibile cambiare modalità"
|
msgstr "Impossibile cambiare modalità"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2434,7 +2447,7 @@ msgstr ""
|
|||||||
"cartella a Sincronizzata e attendi il completamento del download prima di "
|
"cartella a Sincronizzata e attendi il completamento del download prima di "
|
||||||
"rimuoverla."
|
"rimuoverla."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2447,68 +2460,68 @@ msgstr ""
|
|||||||
"I file locali restano su questo disco e semplicemente smettono di essere "
|
"I file locali restano su questo disco e semplicemente smettono di essere "
|
||||||
"sincronizzati. Scegli se eliminare anche la copia in Proton Drive."
|
"sincronizzati. Scegli se eliminare anche la copia in Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Interrompere la sincronizzazione della cartella?"
|
msgstr "Interrompere la sincronizzazione della cartella?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Elimina anche da Proton Drive"
|
msgstr "Elimina anche da Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Elimina l'unica copia di questi file."
|
msgstr "Elimina l'unica copia di questi file."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "La copia locale non viene modificata."
|
msgstr "La copia locale non viene modificata."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Interrompi sincronizzazione"
|
msgstr "Interrompi sincronizzazione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Sincronizzazione della cartella interrotta"
|
msgstr "Sincronizzazione della cartella interrotta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Impossibile interrompere la sincronizzazione della cartella"
|
msgstr "Impossibile interrompere la sincronizzazione della cartella"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Rinomina computer"
|
msgstr "Rinomina computer"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Rinomina “{name}”."
|
msgstr "Rinomina “{name}”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Impossibile rinominare il computer"
|
msgstr "Impossibile rinominare il computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "È richiesto un nome."
|
msgstr "È richiesto un nome."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Computer rinominato"
|
msgstr "Computer rinominato"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Digita “{name}” per confermare"
|
msgstr "Digita “{name}” per confermare"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Rimuovere il computer?"
|
msgstr "Rimuovere il computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2523,26 +2536,26 @@ msgstr ""
|
|||||||
"insieme a esso. I file su quel computer non vengono toccati, ma questa "
|
"insieme a esso. I file su quel computer non vengono toccati, ma questa "
|
||||||
"operazione non può essere annullata da qui."
|
"operazione non può essere annullata da qui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Rimuovi"
|
msgstr "Rimuovi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Computer rimosso"
|
msgstr "Computer rimosso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Impossibile rimuovere il computer"
|
msgstr "Impossibile rimuovere il computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Continuare questo backup qui?"
|
msgstr "Continuare questo backup qui?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2561,25 +2574,25 @@ msgstr ""
|
|||||||
"qui non vengono spostate. Usa poi “Ripristina su questo computer” per "
|
"qui non vengono spostate. Usa poi “Ripristina su questo computer” per "
|
||||||
"recuperare ciò che “{name}” sincronizzava."
|
"recuperare ciò che “{name}” sincronizzava."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Continua qui"
|
msgstr "Continua qui"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Ora il backup avviene come “{name}”"
|
msgstr "Ora il backup avviene come “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Impossibile continuare quel backup qui"
|
msgstr "Impossibile continuare quel backup qui"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Sincronizzare con questo computer?"
|
msgstr "Sincronizzare con questo computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2596,25 +2609,25 @@ msgstr ""
|
|||||||
"in Proton Drive. Le cartelle già sincronizzate qui restano dove sono. Poi "
|
"in Proton Drive. Le cartelle già sincronizzate qui restano dove sono. Poi "
|
||||||
"scegli quali delle sue cartelle sincronizzare qui."
|
"scegli quali delle sue cartelle sincronizzare qui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Sincronizza qui"
|
msgstr "Sincronizza qui"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Ora sincronizzato con “{name}”"
|
msgstr "Ora sincronizzato con “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Impossibile sincronizzare con quel computer"
|
msgstr "Impossibile sincronizzare con quel computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Spostare il backup su questo computer?"
|
msgstr "Spostare il backup su questo computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2631,12 +2644,12 @@ msgstr ""
|
|||||||
"cartelle."
|
"cartelle."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Backup di “{name}” spostato"
|
msgstr "Backup di “{name}” spostato"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Impossibile spostare quel backup"
|
msgstr "Impossibile spostare quel backup"
|
||||||
|
|
||||||
@@ -3377,7 +3390,7 @@ msgid "paused"
|
|||||||
msgstr "in pausa"
|
msgstr "in pausa"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "non disponibile"
|
msgstr "non disponibile"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: Dutch\n"
|
"Language-Team: Dutch\n"
|
||||||
@@ -246,13 +246,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -347,7 +347,7 @@ msgstr "Raster / lijst"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Hernoemen"
|
msgstr "Hernoemen"
|
||||||
@@ -430,7 +430,9 @@ msgstr "Kan Proton Drive niet openen"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "De Proton Drive-service kan steeds niet starten en probeert het zelf opnieuw. Laatste fout: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -690,7 +692,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Kon geen synchronisatiemap toevoegen"
|
msgstr "Kon geen synchronisatiemap toevoegen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Kon mappen niet terugzetten"
|
msgstr "Kon mappen niet terugzetten"
|
||||||
|
|
||||||
@@ -1280,12 +1282,12 @@ msgstr "Kon albums niet laden"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1932,7 +1934,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Nieuwe naam"
|
msgstr "Nieuwe naam"
|
||||||
|
|
||||||
@@ -1957,7 +1959,7 @@ msgstr "Kies de map waarnaar je wilt verplaatsen."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Hierheen verplaatsen"
|
msgstr "Hierheen verplaatsen"
|
||||||
|
|
||||||
@@ -2280,76 +2282,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} map in back-up"
|
msgstr[0] "{n} map in back-up"
|
||||||
msgstr[1] "{n} mappen in back-up"
|
msgstr[1] "{n} mappen in back-up"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} wacht op de eerste synchronisatie"
|
||||||
|
msgstr[1] "{folders} · {n} wachten op de eerste synchronisatie"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} vereist aandacht"
|
msgstr[0] "{folders} · {n} vereist aandacht"
|
||||||
msgstr[1] "{folders} · {n} vereisen aandacht"
|
msgstr[1] "{folders} · {n} vereisen aandacht"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "synchroniseren…"
|
msgstr "synchroniseren…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "synchronisatiefout"
|
msgstr "synchronisatiefout"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "vereist aandacht"
|
msgstr "vereist aandacht"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "wacht op eerste synchronisatie"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "bijgewerkt"
|
msgstr "bijgewerkt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "controleren op wijzigingen…"
|
msgstr "controleren op wijzigingen…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "controleren op wijzigingen — {n} item gecontroleerd"
|
msgstr[0] "controleren op wijzigingen — {n} item gecontroleerd"
|
||||||
msgstr[1] "controleren op wijzigingen — {n} items gecontroleerd"
|
msgstr[1] "controleren op wijzigingen — {n} items gecontroleerd"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "controleren op wijzigingen — {done} van {total}"
|
msgstr "controleren op wijzigingen — {done} van {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "synchroniseren: {done} van {total}"
|
msgstr "synchroniseren: {done} van {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "{file} synchroniseren — {done} van {total}"
|
msgstr "{file} synchroniseren — {done} van {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Map toevoegen aan synchronisatie"
|
msgstr "Map toevoegen aan synchronisatie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Map synchroniseren…"
|
msgstr "Map synchroniseren…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Kon map niet toevoegen"
|
msgstr "Kon map niet toevoegen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Kon mappen om terug te zetten niet weergeven"
|
msgstr "Kon mappen om terug te zetten niet weergeven"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2357,19 +2370,19 @@ msgstr ""
|
|||||||
"Vink de mappen aan die je met dit apparaat wilt synchroniseren en pas aan "
|
"Vink de mappen aan die je met dit apparaat wilt synchroniseren en pas aan "
|
||||||
"waar elke map moet komen."
|
"waar elke map moet komen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Mappen herstellen"
|
msgstr "Mappen herstellen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Terugzetten"
|
msgstr "Terugzetten"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Mappen terugzetten…"
|
msgstr "Mappen terugzetten…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2378,38 +2391,38 @@ msgstr ""
|
|||||||
"Van deze mappen is een back-up gemaakt vanaf “{name}”. Teruggezette mappen "
|
"Van deze mappen is een back-up gemaakt vanaf “{name}”. Teruggezette mappen "
|
||||||
"blijven synchroniseren met de kopie van die computer."
|
"blijven synchroniseren met de kopie van die computer."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Van deze mappen is een back-up gemaakt onder deze computer in Proton Drive."
|
"Van deze mappen is een back-up gemaakt onder deze computer in Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Niets om terug te zetten — de mappen van “{name}” worden hier al allemaal "
|
"Niets om terug te zetten — de mappen van “{name}” worden hier al allemaal "
|
||||||
"gesynchroniseerd."
|
"gesynchroniseerd."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Niets om terug te zetten — de mappen van deze computer worden hier al "
|
"Niets om terug te zetten — de mappen van deze computer worden hier al "
|
||||||
"allemaal gesynchroniseerd."
|
"allemaal gesynchroniseerd."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "Map wordt alleen online"
|
msgstr "Map wordt alleen online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "Map wordt gedownload en blijft gesynchroniseerd"
|
msgstr "Map wordt gedownload en blijft gesynchroniseerd"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Kon modus niet wijzigen"
|
msgstr "Kon modus niet wijzigen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2426,7 +2439,7 @@ msgstr ""
|
|||||||
"kopie houden, annuleer dan, zet de map op Gesynchroniseerd en wacht tot de "
|
"kopie houden, annuleer dan, zet de map op Gesynchroniseerd en wacht tot de "
|
||||||
"download klaar is voordat je hem verwijdert."
|
"download klaar is voordat je hem verwijdert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2439,68 +2452,68 @@ msgstr ""
|
|||||||
"De lokale bestanden blijven op deze schijf en worden gewoon niet meer "
|
"De lokale bestanden blijven op deze schijf en worden gewoon niet meer "
|
||||||
"gesynchroniseerd. Kies of je ook de kopie in Proton Drive wilt verwijderen."
|
"gesynchroniseerd. Kies of je ook de kopie in Proton Drive wilt verwijderen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Synchroniseren van map stoppen?"
|
msgstr "Synchroniseren van map stoppen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Ook uit Proton Drive verwijderen"
|
msgstr "Ook uit Proton Drive verwijderen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Verwijdert de enige kopie van deze bestanden."
|
msgstr "Verwijdert de enige kopie van deze bestanden."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "De lokale kopie blijft ongewijzigd."
|
msgstr "De lokale kopie blijft ongewijzigd."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Synchroniseren stoppen"
|
msgstr "Synchroniseren stoppen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Synchroniseren van map gestopt"
|
msgstr "Synchroniseren van map gestopt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Kon het synchroniseren van de map niet stoppen"
|
msgstr "Kon het synchroniseren van de map niet stoppen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Computer hernoemen"
|
msgstr "Computer hernoemen"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "“{name}” hernoemen."
|
msgstr "“{name}” hernoemen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Kon de computer niet hernoemen"
|
msgstr "Kon de computer niet hernoemen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Een naam is vereist."
|
msgstr "Een naam is vereist."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Computer hernoemd"
|
msgstr "Computer hernoemd"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Typ “{name}” om te bevestigen"
|
msgstr "Typ “{name}” om te bevestigen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Computer verwijderen?"
|
msgstr "Computer verwijderen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2515,26 +2528,26 @@ msgstr ""
|
|||||||
"mee verwijderd. De bestanden op die computer zelf blijven onaangeroerd — "
|
"mee verwijderd. De bestanden op die computer zelf blijven onaangeroerd — "
|
||||||
"maar dit kan hier niet ongedaan worden gemaakt."
|
"maar dit kan hier niet ongedaan worden gemaakt."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Computer verwijderd"
|
msgstr "Computer verwijderd"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Kon de computer niet verwijderen"
|
msgstr "Kon de computer niet verwijderen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Deze back-up hier voortzetten?"
|
msgstr "Deze back-up hier voortzetten?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2553,25 +2566,25 @@ msgstr ""
|
|||||||
"gesynchroniseerd, worden niet verplaatst. Gebruik daarna “Terugzetten op "
|
"gesynchroniseerd, worden niet verplaatst. Gebruik daarna “Terugzetten op "
|
||||||
"deze computer” om terug te halen wat “{name}” synchroniseerde."
|
"deze computer” om terug te halen wat “{name}” synchroniseerde."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Hier voortzetten"
|
msgstr "Hier voortzetten"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Back-up nu als “{name}”"
|
msgstr "Back-up nu als “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Kon die back-up hier niet voortzetten"
|
msgstr "Kon die back-up hier niet voortzetten"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Synchroniseren met deze computer?"
|
msgstr "Synchroniseren met deze computer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2588,25 +2601,25 @@ msgstr ""
|
|||||||
"Proton Drive. Mappen die hier al worden gesynchroniseerd, blijven waar ze "
|
"Proton Drive. Mappen die hier al worden gesynchroniseerd, blijven waar ze "
|
||||||
"zijn. Daarna kiest u welke van zijn mappen u hier synchroniseert."
|
"zijn. Daarna kiest u welke van zijn mappen u hier synchroniseert."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Hier synchroniseren"
|
msgstr "Hier synchroniseren"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Nu gesynchroniseerd met “{name}”"
|
msgstr "Nu gesynchroniseerd met “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Kon niet synchroniseren met die computer"
|
msgstr "Kon niet synchroniseren met die computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Back-up naar deze computer verplaatsen?"
|
msgstr "Back-up naar deze computer verplaatsen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2622,12 +2635,12 @@ msgstr ""
|
|||||||
"Stop Proton Drive eerst op “{name}”. Anders ziet het zijn mappen verdwijnen."
|
"Stop Proton Drive eerst op “{name}”. Anders ziet het zijn mappen verdwijnen."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Back-up van “{name}” verplaatst"
|
msgstr "Back-up van “{name}” verplaatst"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Kon die back-up niet verplaatsen"
|
msgstr "Kon die back-up niet verplaatsen"
|
||||||
|
|
||||||
@@ -3369,7 +3382,7 @@ msgid "paused"
|
|||||||
msgstr "gepauzeerd"
|
msgstr "gepauzeerd"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "niet beschikbaar"
|
msgstr "niet beschikbaar"
|
||||||
|
|
||||||
|
|||||||
+93
-82
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 3.6.0\n"
|
"Project-Id-Version: proton-drive-linux 3.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -222,13 +222,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -323,7 +323,7 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -660,7 +660,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1238,12 +1238,12 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1886,7 +1886,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1911,7 +1911,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2232,127 +2232,138 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
"with that computer's copy."
|
"with that computer's copy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2363,7 +2374,7 @@ msgid ""
|
|||||||
"finish before removing it."
|
"finish before removing it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2372,68 +2383,68 @@ msgid ""
|
|||||||
"whether to also delete the copy in Proton Drive."
|
"whether to also delete the copy in Proton Drive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2443,26 +2454,26 @@ msgid ""
|
|||||||
"here."
|
"here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2474,25 +2485,25 @@ msgid ""
|
|||||||
"syncing."
|
"syncing."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2503,25 +2514,25 @@ msgid ""
|
|||||||
"its folders to sync here."
|
"its folders to sync here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2532,12 +2543,12 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3221,7 +3232,7 @@ msgid "paused"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: Polish\n"
|
"Language-Team: Polish\n"
|
||||||
@@ -250,13 +250,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -351,7 +351,7 @@ msgstr "Siatka/lista"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Zmień nazwę"
|
msgstr "Zmień nazwę"
|
||||||
@@ -434,7 +434,9 @@ msgstr "Nie można otworzyć Proton Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "Usługa Proton Drive nie może się uruchomić i sama ponawia próby. Ostatni błąd: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -707,7 +709,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Nie można dodać katalogu synchronizacji"
|
msgstr "Nie można dodać katalogu synchronizacji"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Nie można przywrócić katalogów"
|
msgstr "Nie można przywrócić katalogów"
|
||||||
|
|
||||||
@@ -1311,12 +1313,12 @@ msgstr "Nie można wczytać albumów"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1980,7 +1982,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Nowa nazwa"
|
msgstr "Nowa nazwa"
|
||||||
|
|
||||||
@@ -2005,7 +2007,7 @@ msgstr "Proszę wybrać katalog docelowy."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Przenieś tutaj"
|
msgstr "Przenieś tutaj"
|
||||||
|
|
||||||
@@ -2338,7 +2340,15 @@ msgstr[0] "{n} katalog z kopią zapasową"
|
|||||||
msgstr[1] "{n} katalogi z kopią zapasową"
|
msgstr[1] "{n} katalogi z kopią zapasową"
|
||||||
msgstr[2] "{n} katalogów z kopią zapasową"
|
msgstr[2] "{n} katalogów z kopią zapasową"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} czeka na pierwszą synchronizację"
|
||||||
|
msgstr[1] "{folders} · {n} czekają na pierwszą synchronizację"
|
||||||
|
msgstr[2] "{folders} · {n} czeka na pierwszą synchronizację"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
@@ -2346,27 +2356,31 @@ msgstr[0] "{folders} · {n} wymaga uwagi"
|
|||||||
msgstr[1] "{folders} · {n} wymagają uwagi"
|
msgstr[1] "{folders} · {n} wymagają uwagi"
|
||||||
msgstr[2] "{folders} · {n} wymaga uwagi"
|
msgstr[2] "{folders} · {n} wymaga uwagi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "synchronizowanie…"
|
msgstr "synchronizowanie…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "błąd synchronizacji"
|
msgstr "błąd synchronizacji"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "wymaga uwagi"
|
msgstr "wymaga uwagi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "oczekiwanie na pierwszą synchronizację"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "aktualne"
|
msgstr "aktualne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "sprawdzanie zmian…"
|
msgstr "sprawdzanie zmian…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
@@ -2374,42 +2388,42 @@ msgstr[0] "sprawdzanie zmian — sprawdzono {n} element"
|
|||||||
msgstr[1] "sprawdzanie zmian — sprawdzono {n} elementy"
|
msgstr[1] "sprawdzanie zmian — sprawdzono {n} elementy"
|
||||||
msgstr[2] "sprawdzanie zmian — sprawdzono {n} elementów"
|
msgstr[2] "sprawdzanie zmian — sprawdzono {n} elementów"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "sprawdzanie zmian — {done} z {total}"
|
msgstr "sprawdzanie zmian — {done} z {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "synchronizowanie {done} z {total}"
|
msgstr "synchronizowanie {done} z {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "synchronizowanie {file} — {done} z {total}"
|
msgstr "synchronizowanie {file} — {done} z {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Dodaj katalog do synchronizacji"
|
msgstr "Dodaj katalog do synchronizacji"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Synchronizowanie katalogu…"
|
msgstr "Synchronizowanie katalogu…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Nie można dodać katalogu"
|
msgstr "Nie można dodać katalogu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Nie można wyświetlić listy katalogów do przywrócenia"
|
msgstr "Nie można wyświetlić listy katalogów do przywrócenia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2417,19 +2431,19 @@ msgstr ""
|
|||||||
"Należy zaznaczyć katalogi do synchronizacji z tym komputerem i dostosować "
|
"Należy zaznaczyć katalogi do synchronizacji z tym komputerem i dostosować "
|
||||||
"położenie każdego z nich."
|
"położenie każdego z nich."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Przywróć katalogi"
|
msgstr "Przywróć katalogi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Przywróć"
|
msgstr "Przywróć"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Przywracanie katalogów…"
|
msgstr "Przywracanie katalogów…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2438,37 +2452,37 @@ msgstr ""
|
|||||||
"Te katalogi mają kopię zapasową z komputera „{name}”. Przywrócone katalogi "
|
"Te katalogi mają kopię zapasową z komputera „{name}”. Przywrócone katalogi "
|
||||||
"nadal będą synchronizowane z kopią tego komputera."
|
"nadal będą synchronizowane z kopią tego komputera."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr "Te katalogi mają kopię zapasową w Proton Drive pod tym komputerem."
|
msgstr "Te katalogi mają kopię zapasową w Proton Drive pod tym komputerem."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie ma nic do przywrócenia — wszystkie katalogi komputera „{name}” są tutaj "
|
"Nie ma nic do przywrócenia — wszystkie katalogi komputera „{name}” są tutaj "
|
||||||
"synchronizowane."
|
"synchronizowane."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie ma nic do przywrócenia — wszystkie katalogi tego komputera są tutaj "
|
"Nie ma nic do przywrócenia — wszystkie katalogi tego komputera są tutaj "
|
||||||
"synchronizowane."
|
"synchronizowane."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "Katalog przejdzie w tryb tylko online"
|
msgstr "Katalog przejdzie w tryb tylko online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "Katalog zostanie pobrany i będzie synchronizowany"
|
msgstr "Katalog zostanie pobrany i będzie synchronizowany"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Nie można zmienić trybu"
|
msgstr "Nie można zmienić trybu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2485,7 +2499,7 @@ msgstr ""
|
|||||||
"pusty. Aby zachować lokalną kopię, należy anulować, przełączyć katalog na "
|
"pusty. Aby zachować lokalną kopię, należy anulować, przełączyć katalog na "
|
||||||
"tryb Synchronizowany i poczekać na ukończenie pobierania przed usunięciem."
|
"tryb Synchronizowany i poczekać na ukończenie pobierania przed usunięciem."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2498,68 +2512,68 @@ msgstr ""
|
|||||||
"Lokalne pliki pozostaną na tym dysku i po prostu przestaną być "
|
"Lokalne pliki pozostaną na tym dysku i po prostu przestaną być "
|
||||||
"synchronizowane. Można też usunąć kopię w Proton Drive."
|
"synchronizowane. Można też usunąć kopię w Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Zatrzymać synchronizację katalogu?"
|
msgstr "Zatrzymać synchronizację katalogu?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Usuń także z Proton Drive"
|
msgstr "Usuń także z Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Usuwa jedyną kopię tych plików."
|
msgstr "Usuwa jedyną kopię tych plików."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "Lokalna kopia pozostanie bez zmian."
|
msgstr "Lokalna kopia pozostanie bez zmian."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Zatrzymaj synchronizację"
|
msgstr "Zatrzymaj synchronizację"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "Zatrzymano synchronizację katalogu"
|
msgstr "Zatrzymano synchronizację katalogu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Nie można zatrzymać synchronizacji katalogu"
|
msgstr "Nie można zatrzymać synchronizacji katalogu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Zmiana nazwy komputera"
|
msgstr "Zmiana nazwy komputera"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Proszę podać nową nazwę komputera „{name}”."
|
msgstr "Proszę podać nową nazwę komputera „{name}”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Nie można zmienić nazwy komputera"
|
msgstr "Nie można zmienić nazwy komputera"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Nazwa jest wymagana."
|
msgstr "Nazwa jest wymagana."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Zmieniono nazwę komputera"
|
msgstr "Zmieniono nazwę komputera"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Proszę wpisać „{name}”, aby potwierdzić"
|
msgstr "Proszę wpisać „{name}”, aby potwierdzić"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Usunąć komputer?"
|
msgstr "Usunąć komputer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2574,26 +2588,26 @@ msgstr ""
|
|||||||
"z nim. Pliki na samym komputerze pozostaną nietknięte — ale tej operacji nie "
|
"z nim. Pliki na samym komputerze pozostaną nietknięte — ale tej operacji nie "
|
||||||
"można tutaj cofnąć."
|
"można tutaj cofnąć."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Usuń"
|
msgstr "Usuń"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Usunięto komputer"
|
msgstr "Usunięto komputer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Nie można usunąć komputera"
|
msgstr "Nie można usunąć komputera"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Kontynuować tę kopię zapasową tutaj?"
|
msgstr "Kontynuować tę kopię zapasową tutaj?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2612,25 +2626,25 @@ msgstr ""
|
|||||||
"przeniesione. Aby odzyskać to, co synchronizował „{name}”, proszę potem użyć "
|
"przeniesione. Aby odzyskać to, co synchronizował „{name}”, proszę potem użyć "
|
||||||
"opcji „Przywróć na tym komputerze”."
|
"opcji „Przywróć na tym komputerze”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Kontynuuj tutaj"
|
msgstr "Kontynuuj tutaj"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Kopia zapasowa jest teraz tworzona jako „{name}”"
|
msgstr "Kopia zapasowa jest teraz tworzona jako „{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Nie można kontynuować tej kopii zapasowej tutaj"
|
msgstr "Nie można kontynuować tej kopii zapasowej tutaj"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Synchronizować z tym komputerem?"
|
msgstr "Synchronizować z tym komputerem?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2647,25 +2661,25 @@ msgstr ""
|
|||||||
"Drive. Katalogi już tu synchronizowane zostaną tam, gdzie są. Następnie "
|
"Drive. Katalogi już tu synchronizowane zostaną tam, gdzie są. Następnie "
|
||||||
"proszę wybrać, które z jego katalogów synchronizować tutaj."
|
"proszę wybrać, które z jego katalogów synchronizować tutaj."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Synchronizuj tutaj"
|
msgstr "Synchronizuj tutaj"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Teraz synchronizowane z „{name}”"
|
msgstr "Teraz synchronizowane z „{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Nie można synchronizować z tym komputerem"
|
msgstr "Nie można synchronizować z tym komputerem"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Przenieść kopię zapasową na ten komputer?"
|
msgstr "Przenieść kopię zapasową na ten komputer?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2683,12 +2697,12 @@ msgstr ""
|
|||||||
"jego foldery znikają."
|
"jego foldery znikają."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Przeniesiono kopię zapasową „{name}”"
|
msgstr "Przeniesiono kopię zapasową „{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Nie można przenieść tej kopii zapasowej"
|
msgstr "Nie można przenieść tej kopii zapasowej"
|
||||||
|
|
||||||
@@ -3434,7 +3448,7 @@ msgid "paused"
|
|||||||
msgstr "wstrzymany"
|
msgstr "wstrzymany"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "niedostępne"
|
msgstr "niedostępne"
|
||||||
|
|
||||||
|
|||||||
+96
-83
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
"Project-Id-Version: proton-drive-linux 2.1.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
|
||||||
"POT-Creation-Date: 2026-10-31 10:37+0100\n"
|
"POT-Creation-Date: 2026-10-31 19:26+0100\n"
|
||||||
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
|
||||||
"Last-Translator: Proton Drive for Linux contributors\n"
|
"Last-Translator: Proton Drive for Linux contributors\n"
|
||||||
"Language-Team: Portuguese (Brazil)\n"
|
"Language-Team: Portuguese (Brazil)\n"
|
||||||
@@ -245,13 +245,13 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2039
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2540
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:804
|
#: crates/pdfs-gui/src/app/pages/devices.rs:826
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:957
|
#: crates/pdfs-gui/src/app/pages/devices.rs:979
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:995
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1017
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1047
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1069
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1091
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1113
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1131
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1153
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1194
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
#: crates/pdfs-gui/src/app/pages/locations.rs:850
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1537
|
||||||
@@ -346,7 +346,7 @@ msgstr "Grade / lista"
|
|||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
#: crates/pdfs-gui/src/app/pages/albums.rs:298
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1896
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1918
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:996
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1018
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
#: crates/pdfs-gui/src/app/widgets/details.rs:161
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renomear"
|
msgstr "Renomear"
|
||||||
@@ -429,7 +429,9 @@ msgstr "Não foi possível abrir o Proton Drive"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service keeps failing to start and tries again on its own. "
|
"The Proton Drive service keeps failing to start and tries again on its own. "
|
||||||
"The last error was: {error}"
|
"The last error was: {error}"
|
||||||
msgstr "O serviço do Proton Drive não consegue iniciar e tenta de novo sozinho. Último erro: {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/main.rs:1824
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
@@ -689,7 +691,7 @@ msgid "Couldn't add a sync folder"
|
|||||||
msgstr "Não foi possível adicionar uma pasta sincronizada"
|
msgstr "Não foi possível adicionar uma pasta sincronizada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:58
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:839
|
#: crates/pdfs-gui/src/app/pages/devices.rs:861
|
||||||
msgid "Couldn't restore folders"
|
msgid "Couldn't restore folders"
|
||||||
msgstr "Não foi possível restaurar as pastas"
|
msgstr "Não foi possível restaurar as pastas"
|
||||||
|
|
||||||
@@ -1281,12 +1283,12 @@ msgstr "Não foi possível carregar os álbuns"
|
|||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1873
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2500
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2650
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:707
|
#: crates/pdfs-gui/src/app/pages/devices.rs:729
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:747
|
#: crates/pdfs-gui/src/app/pages/devices.rs:769
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:900
|
#: crates/pdfs-gui/src/app/pages/devices.rs:922
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1170
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1192
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1231
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1253
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1260
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1282
|
||||||
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
#: crates/pdfs-gui/src/app/pages/duplicates.rs:221
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
#: crates/pdfs-gui/src/app/pages/locations.rs:577
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
#: crates/pdfs-gui/src/app/pages/locations.rs:824
|
||||||
@@ -1932,7 +1934,7 @@ msgid "{status}. {message}"
|
|||||||
msgstr "{status}. {message}"
|
msgstr "{status}. {message}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1900
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:989
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
||||||
msgid "New name"
|
msgid "New name"
|
||||||
msgstr "Novo nome"
|
msgstr "Novo nome"
|
||||||
|
|
||||||
@@ -1957,7 +1959,7 @@ msgstr "Escolha a pasta de destino."
|
|||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1989
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1994
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1195
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1217
|
||||||
msgid "Move Here"
|
msgid "Move Here"
|
||||||
msgstr "Mover para cá"
|
msgstr "Mover para cá"
|
||||||
|
|
||||||
@@ -2279,76 +2281,87 @@ msgid_plural "{n} folders backed up"
|
|||||||
msgstr[0] "{n} pasta com backup"
|
msgstr[0] "{n} pasta com backup"
|
||||||
msgstr[1] "{n} pastas com backup"
|
msgstr[1] "{n} pastas com backup"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:608
|
#: crates/pdfs-gui/src/app/pages/devices.rs:607
|
||||||
|
#, rust-format
|
||||||
|
msgid "{folders} · {n} waiting for its first sync"
|
||||||
|
msgid_plural "{folders} · {n} waiting for their first sync"
|
||||||
|
msgstr[0] "{folders} · {n} aguarda a primeira sincronização"
|
||||||
|
msgstr[1] "{folders} · {n} aguardam a primeira sincronização"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{folders} · {n} needs attention"
|
msgid "{folders} · {n} needs attention"
|
||||||
msgid_plural "{folders} · {n} need attention"
|
msgid_plural "{folders} · {n} need attention"
|
||||||
msgstr[0] "{folders} · {n} requer atenção"
|
msgstr[0] "{folders} · {n} requer atenção"
|
||||||
msgstr[1] "{folders} · {n} requerem atenção"
|
msgstr[1] "{folders} · {n} requerem atenção"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:619
|
#: crates/pdfs-gui/src/app/pages/devices.rs:640
|
||||||
msgid "syncing…"
|
msgid "syncing…"
|
||||||
msgstr "sincronizando…"
|
msgstr "sincronizando…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:620
|
#: crates/pdfs-gui/src/app/pages/devices.rs:641
|
||||||
msgid "sync error"
|
msgid "sync error"
|
||||||
msgstr "erro de sincronização"
|
msgstr "erro de sincronização"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:621
|
#: crates/pdfs-gui/src/app/pages/devices.rs:642
|
||||||
msgid "needs attention"
|
msgid "needs attention"
|
||||||
msgstr "requer atenção"
|
msgstr "requer atenção"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:622
|
#: crates/pdfs-gui/src/app/pages/devices.rs:643
|
||||||
|
msgid "waiting for first sync"
|
||||||
|
msgstr "aguardando a primeira sincronização"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/devices.rs:644
|
||||||
msgid "up to date"
|
msgid "up to date"
|
||||||
msgstr "atualizado"
|
msgstr "atualizado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:632
|
#: crates/pdfs-gui/src/app/pages/devices.rs:654
|
||||||
msgid "checking for changes…"
|
msgid "checking for changes…"
|
||||||
msgstr "verificando alterações…"
|
msgstr "verificando alterações…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:638
|
#: crates/pdfs-gui/src/app/pages/devices.rs:660
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {n} item checked"
|
msgid "checking for changes — {n} item checked"
|
||||||
msgid_plural "checking for changes — {n} items checked"
|
msgid_plural "checking for changes — {n} items checked"
|
||||||
msgstr[0] "verificando alterações — {n} item verificado"
|
msgstr[0] "verificando alterações — {n} item verificado"
|
||||||
msgstr[1] "verificando alterações — {n} itens verificados"
|
msgstr[1] "verificando alterações — {n} itens verificados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:645
|
#: crates/pdfs-gui/src/app/pages/devices.rs:667
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "checking for changes — {done} of {total}"
|
msgid "checking for changes — {done} of {total}"
|
||||||
msgstr "verificando alterações — {done} de {total}"
|
msgstr "verificando alterações — {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:657
|
#: crates/pdfs-gui/src/app/pages/devices.rs:679
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {done} of {total}"
|
msgid "syncing {done} of {total}"
|
||||||
msgstr "sincronizando {done} de {total}"
|
msgstr "sincronizando {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:663
|
#: crates/pdfs-gui/src/app/pages/devices.rs:685
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "syncing {file} — {done} of {total}"
|
msgid "syncing {file} — {done} of {total}"
|
||||||
msgstr "sincronizando {file} — {done} de {total}"
|
msgstr "sincronizando {file} — {done} de {total}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:675
|
#: crates/pdfs-gui/src/app/pages/devices.rs:697
|
||||||
msgid "Add Folder to Sync"
|
msgid "Add Folder to Sync"
|
||||||
msgstr "Adicionar pasta à sincronização"
|
msgstr "Adicionar pasta à sincronização"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:699
|
#: crates/pdfs-gui/src/app/pages/devices.rs:721
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1559
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1686
|
||||||
msgid "Syncing folder…"
|
msgid "Syncing folder…"
|
||||||
msgstr "Sincronizando pasta…"
|
msgstr "Sincronizando pasta…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:702
|
#: crates/pdfs-gui/src/app/pages/devices.rs:724
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:706
|
#: crates/pdfs-gui/src/app/pages/devices.rs:728
|
||||||
msgid "Couldn't add folder"
|
msgid "Couldn't add folder"
|
||||||
msgstr "Não foi possível adicionar a pasta"
|
msgstr "Não foi possível adicionar a pasta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:740
|
#: crates/pdfs-gui/src/app/pages/devices.rs:762
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:746
|
#: crates/pdfs-gui/src/app/pages/devices.rs:768
|
||||||
msgid "Couldn't list folders to restore"
|
msgid "Couldn't list folders to restore"
|
||||||
msgstr "Não foi possível listar as pastas para restaurar"
|
msgstr "Não foi possível listar as pastas para restaurar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:772
|
#: crates/pdfs-gui/src/app/pages/devices.rs:794
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tick the folders to sync to this machine, and adjust where each one should "
|
"Tick the folders to sync to this machine, and adjust where each one should "
|
||||||
"live."
|
"live."
|
||||||
@@ -2356,19 +2369,19 @@ msgstr ""
|
|||||||
"Marque as pastas a sincronizar com esta máquina e ajuste onde cada uma deve "
|
"Marque as pastas a sincronizar com esta máquina e ajuste onde cada uma deve "
|
||||||
"ficar."
|
"ficar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:798
|
#: crates/pdfs-gui/src/app/pages/devices.rs:820
|
||||||
msgid "Restore Folders"
|
msgid "Restore Folders"
|
||||||
msgstr "Restaurar pastas"
|
msgstr "Restaurar pastas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:805
|
#: crates/pdfs-gui/src/app/pages/devices.rs:827
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:838
|
#: crates/pdfs-gui/src/app/pages/devices.rs:860
|
||||||
msgid "Restoring folders…"
|
msgid "Restoring folders…"
|
||||||
msgstr "Restaurando pastas…"
|
msgstr "Restaurando pastas…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:850
|
#: crates/pdfs-gui/src/app/pages/devices.rs:872
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
"These folders are backed up from “{name}”. Restored folders keep syncing "
|
||||||
@@ -2377,36 +2390,36 @@ msgstr ""
|
|||||||
"Estas pastas têm backup a partir de “{name}”. As pastas restauradas "
|
"Estas pastas têm backup a partir de “{name}”. As pastas restauradas "
|
||||||
"continuam sincronizando com a cópia daquele computador."
|
"continuam sincronizando com a cópia daquele computador."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:853
|
#: crates/pdfs-gui/src/app/pages/devices.rs:875
|
||||||
msgid "These folders are backed up under this computer in Proton Drive."
|
msgid "These folders are backed up under this computer in Proton Drive."
|
||||||
msgstr "Estas pastas têm backup sob este computador no Proton Drive."
|
msgstr "Estas pastas têm backup sob este computador no Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:862
|
#: crates/pdfs-gui/src/app/pages/devices.rs:884
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
msgid "Nothing to restore — “{name}”'s folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nada a restaurar — as pastas de “{name}” já estão todas sincronizadas aqui."
|
"Nada a restaurar — as pastas de “{name}” já estão todas sincronizadas aqui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:865
|
#: crates/pdfs-gui/src/app/pages/devices.rs:887
|
||||||
msgid "Nothing to restore — this computer's folders are all synced here."
|
msgid "Nothing to restore — this computer's folders are all synced here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nada a restaurar — as pastas deste computador já estão todas sincronizadas "
|
"Nada a restaurar — as pastas deste computador já estão todas sincronizadas "
|
||||||
"aqui."
|
"aqui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:889
|
#: crates/pdfs-gui/src/app/pages/devices.rs:911
|
||||||
msgid "Folder will switch to online only"
|
msgid "Folder will switch to online only"
|
||||||
msgstr "A pasta passará a ser somente online"
|
msgstr "A pasta passará a ser somente online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:891
|
#: crates/pdfs-gui/src/app/pages/devices.rs:913
|
||||||
msgid "Folder will download and stay synced"
|
msgid "Folder will download and stay synced"
|
||||||
msgstr "A pasta será baixada e permanecerá sincronizada"
|
msgstr "A pasta será baixada e permanecerá sincronizada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:895
|
#: crates/pdfs-gui/src/app/pages/devices.rs:917
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:899
|
#: crates/pdfs-gui/src/app/pages/devices.rs:921
|
||||||
msgid "Couldn't change mode"
|
msgid "Couldn't change mode"
|
||||||
msgstr "Não foi possível alterar o modo"
|
msgstr "Não foi possível alterar o modo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:931
|
#: crates/pdfs-gui/src/app/pages/devices.rs:953
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2423,7 +2436,7 @@ msgstr ""
|
|||||||
"uma cópia local, cancele, mude a pasta para Sincronizada e aguarde o "
|
"uma cópia local, cancele, mude a pasta para Sincronizada e aguarde o "
|
||||||
"download terminar antes de removê-la."
|
"download terminar antes de removê-la."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:937
|
#: crates/pdfs-gui/src/app/pages/devices.rs:959
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Stop syncing “{path}”?\n"
|
"Stop syncing “{path}”?\n"
|
||||||
@@ -2436,68 +2449,68 @@ msgstr ""
|
|||||||
"Os arquivos locais permanecem neste disco e simplesmente deixam de ser "
|
"Os arquivos locais permanecem neste disco e simplesmente deixam de ser "
|
||||||
"sincronizados. Escolha se também deseja excluir a cópia no Proton Drive."
|
"sincronizados. Escolha se também deseja excluir a cópia no Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:942
|
#: crates/pdfs-gui/src/app/pages/devices.rs:964
|
||||||
msgid "Stop Syncing Folder?"
|
msgid "Stop Syncing Folder?"
|
||||||
msgstr "Parar de sincronizar a pasta?"
|
msgstr "Parar de sincronizar a pasta?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:947
|
#: crates/pdfs-gui/src/app/pages/devices.rs:969
|
||||||
msgid "Also delete from Proton Drive"
|
msgid "Also delete from Proton Drive"
|
||||||
msgstr "Também excluir do Proton Drive"
|
msgstr "Também excluir do Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:949
|
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
||||||
msgid "Deletes the only copy of these files."
|
msgid "Deletes the only copy of these files."
|
||||||
msgstr "Exclui a única cópia destes arquivos."
|
msgstr "Exclui a única cópia destes arquivos."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:951
|
#: crates/pdfs-gui/src/app/pages/devices.rs:973
|
||||||
msgid "The local copy is unaffected."
|
msgid "The local copy is unaffected."
|
||||||
msgstr "A cópia local não é afetada."
|
msgstr "A cópia local não é afetada."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:958
|
#: crates/pdfs-gui/src/app/pages/devices.rs:980
|
||||||
msgid "Stop Syncing"
|
msgid "Stop Syncing"
|
||||||
msgstr "Parar de sincronizar"
|
msgstr "Parar de sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:971
|
#: crates/pdfs-gui/src/app/pages/devices.rs:993
|
||||||
msgid "Stopped syncing folder"
|
msgid "Stopped syncing folder"
|
||||||
msgstr "A pasta deixou de ser sincronizada"
|
msgstr "A pasta deixou de ser sincronizada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:972
|
#: crates/pdfs-gui/src/app/pages/devices.rs:994
|
||||||
msgid "Couldn't stop syncing the folder"
|
msgid "Couldn't stop syncing the folder"
|
||||||
msgstr "Não foi possível parar de sincronizar a pasta"
|
msgstr "Não foi possível parar de sincronizar a pasta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:983
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1005
|
||||||
msgid "Rename Computer"
|
msgid "Rename Computer"
|
||||||
msgstr "Renomear computador"
|
msgstr "Renomear computador"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's current name.
|
#. Translators: {name} is the computer's current name.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:985
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1007
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Rename “{name}”."
|
msgid "Rename “{name}”."
|
||||||
msgstr "Renomear “{name}”."
|
msgstr "Renomear “{name}”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1010
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1032
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1022
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1044
|
||||||
msgid "Couldn't rename the computer"
|
msgid "Couldn't rename the computer"
|
||||||
msgstr "Não foi possível renomear o computador"
|
msgstr "Não foi possível renomear o computador"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1011
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1033
|
||||||
msgid "A name is required."
|
msgid "A name is required."
|
||||||
msgstr "Um nome é obrigatório."
|
msgstr "Um nome é obrigatório."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1021
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1043
|
||||||
msgid "Computer renamed"
|
msgid "Computer renamed"
|
||||||
msgstr "Computador renomeado"
|
msgstr "Computador renomeado"
|
||||||
|
|
||||||
#. Translators: {name} is the computer's name, which the user must type.
|
#. Translators: {name} is the computer's name, which the user must type.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1034
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1056
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Type “{name}” to confirm"
|
msgid "Type “{name}” to confirm"
|
||||||
msgstr "Digite “{name}” para confirmar"
|
msgstr "Digite “{name}” para confirmar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1039
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1061
|
||||||
msgid "Remove Computer?"
|
msgid "Remove Computer?"
|
||||||
msgstr "Remover computador?"
|
msgstr "Remover computador?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1042
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1064
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove “{name}” from this account?\n"
|
"Remove “{name}” from this account?\n"
|
||||||
@@ -2512,26 +2525,26 @@ msgstr ""
|
|||||||
"naquele próprio computador não são tocados — mas isso não pode ser desfeito "
|
"naquele próprio computador não são tocados — mas isso não pode ser desfeito "
|
||||||
"daqui."
|
"daqui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1048
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1070
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1025
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:634
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:876
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remover"
|
msgstr "Remover"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1065
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
||||||
msgid "Computer removed"
|
msgid "Computer removed"
|
||||||
msgstr "Computador removido"
|
msgstr "Computador removido"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1066
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1088
|
||||||
msgid "Couldn't remove the computer"
|
msgid "Couldn't remove the computer"
|
||||||
msgstr "Não foi possível remover o computador"
|
msgstr "Não foi possível remover o computador"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1084
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1106
|
||||||
msgid "Continue This Backup Here?"
|
msgid "Continue This Backup Here?"
|
||||||
msgstr "Continuar este backup aqui?"
|
msgstr "Continuar este backup aqui?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1087
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1109
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer takes over the backup of “{name}”, for example after a "
|
"This computer takes over the backup of “{name}”, for example after a "
|
||||||
@@ -2550,25 +2563,25 @@ msgstr ""
|
|||||||
"movidas. Depois, use “Restaurar neste computador” para recuperar o que "
|
"movidas. Depois, use “Restaurar neste computador” para recuperar o que "
|
||||||
"“{name}” sincronizava."
|
"“{name}” sincronizava."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1092
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1114
|
||||||
msgid "Continue Here"
|
msgid "Continue Here"
|
||||||
msgstr "Continuar aqui"
|
msgstr "Continuar aqui"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose backup this one took over.
|
#. Translators: {name} is the name of the computer whose backup this one took over.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1099
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1121
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now backing up as “{name}”"
|
msgid "Now backing up as “{name}”"
|
||||||
msgstr "Agora fazendo backup como “{name}”"
|
msgstr "Agora fazendo backup como “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1108
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1130
|
||||||
msgid "Couldn't continue that backup here"
|
msgid "Couldn't continue that backup here"
|
||||||
msgstr "Não foi possível continuar esse backup aqui"
|
msgstr "Não foi possível continuar esse backup aqui"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1124
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1146
|
||||||
msgid "Sync With This Computer?"
|
msgid "Sync With This Computer?"
|
||||||
msgstr "Sincronizar com este computador?"
|
msgstr "Sincronizar com este computador?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1127
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1149
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This computer and “{name}” keep the same folders in step. A change or a "
|
"This computer and “{name}” keep the same folders in step. A change or a "
|
||||||
@@ -2585,25 +2598,25 @@ msgstr ""
|
|||||||
"Drive. As pastas já sincronizadas aqui ficam onde estão. Em seguida, você "
|
"Drive. As pastas já sincronizadas aqui ficam onde estão. Em seguida, você "
|
||||||
"escolhe quais pastas dele sincronizar aqui."
|
"escolhe quais pastas dele sincronizar aqui."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1132
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1154
|
||||||
msgid "Sync Here"
|
msgid "Sync Here"
|
||||||
msgstr "Sincronizar aqui"
|
msgstr "Sincronizar aqui"
|
||||||
|
|
||||||
#. Translators: {name} is the name of the other computer this one now syncs with.
|
#. Translators: {name} is the name of the other computer this one now syncs with.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1139
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1161
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Now syncing with “{name}”"
|
msgid "Now syncing with “{name}”"
|
||||||
msgstr "Agora sincronizando com “{name}”"
|
msgstr "Agora sincronizando com “{name}”"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1155
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1177
|
||||||
msgid "Couldn't sync with that computer"
|
msgid "Couldn't sync with that computer"
|
||||||
msgstr "Não foi possível sincronizar com esse computador"
|
msgstr "Não foi possível sincronizar com esse computador"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1187
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1209
|
||||||
msgid "Move Backup to This Computer?"
|
msgid "Move Backup to This Computer?"
|
||||||
msgstr "Mover o backup para este computador?"
|
msgstr "Mover o backup para este computador?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1190
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1212
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
"The folders backed up by “{name}” move into this computer's backup in Proton "
|
||||||
@@ -2620,12 +2633,12 @@ msgstr ""
|
|||||||
"pastas sumirem."
|
"pastas sumirem."
|
||||||
|
|
||||||
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
#. Translators: {name} is the name of the computer whose folders moved to this one.
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1202
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1224
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Moved the backup of “{name}”"
|
msgid "Moved the backup of “{name}”"
|
||||||
msgstr "Backup de “{name}” movido"
|
msgstr "Backup de “{name}” movido"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:1216
|
#: crates/pdfs-gui/src/app/pages/devices.rs:1238
|
||||||
msgid "Couldn't move that backup"
|
msgid "Couldn't move that backup"
|
||||||
msgstr "Não foi possível mover esse backup"
|
msgstr "Não foi possível mover esse backup"
|
||||||
|
|
||||||
@@ -3362,7 +3375,7 @@ msgid "paused"
|
|||||||
msgstr "pausada"
|
msgstr "pausada"
|
||||||
|
|
||||||
#. Translators: a folder's files can't be opened right now.
|
#. Translators: a folder's files can't be opened right now.
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:1742
|
#: crates/pdfs-gui/src/app/pages/locations.rs:1745
|
||||||
msgid "not available"
|
msgid "not available"
|
||||||
msgstr "indisponível"
|
msgstr "indisponível"
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user