mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
Compare commits
28
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
800705ccb0 | ||
|
|
7ab14bb8f7 | ||
|
|
9c8b6680a7 | ||
|
|
bbd913b87d | ||
|
|
04f4610e4d | ||
|
|
0a5afd0b6a | ||
|
|
163c54a1e9 | ||
|
|
0d7c6e7bae | ||
|
|
10252fa84b | ||
|
|
bf9ec0862a | ||
|
|
d0d0c73a51 | ||
|
|
129ad1a50d | ||
|
|
506a610273 | ||
|
|
5048492a83 | ||
|
|
321547fb77 | ||
|
|
a06a8150fb | ||
|
|
c4bce50d35 | ||
|
|
d2b5916b99 | ||
|
|
4626ce17a7 | ||
|
|
630f316fe6 | ||
|
|
801681f747 | ||
|
|
e7382f2c7e | ||
|
|
7046f0f3ef | ||
|
|
37e8dae61b | ||
|
|
b3ea564c6b | ||
|
|
463c97a14d | ||
|
|
176112a9cb | ||
|
|
639ca359fa |
No files matched your search
Generated
+391
-402
File diff suppressed because it is too large.
Load diff
+4
-4
@@ -3,7 +3,7 @@ resolver = "2"
|
|||||||
members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"]
|
members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "3.6.0"
|
version = "3.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["Nils Pukropp <contact@narl.io>"]
|
authors = ["Nils Pukropp <contact@narl.io>"]
|
||||||
@@ -33,7 +33,7 @@ anyhow = "1"
|
|||||||
# wedge every later acquisition of it: `Workers` catches the unwind to keep the
|
# wedge every later acquisition of it: `Workers` catches the unwind to keep the
|
||||||
# pool alive, and `std::sync::Mutex` would defeat that by poisoning the state
|
# pool alive, and `std::sync::Mutex` would defeat that by poisoning the state
|
||||||
# the recovered worker needs.
|
# the recovered worker needs.
|
||||||
parking_lot = "0.12"
|
parking_lot = "0.13"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||||
directories = "6"
|
directories = "6"
|
||||||
@@ -41,7 +41,7 @@ ignore = "0.4"
|
|||||||
sha2 = "0.11"
|
sha2 = "0.11"
|
||||||
# Google Takeout exports are zip sets; the importer reads their central
|
# Google Takeout exports are zip sets; the importer reads their central
|
||||||
# directories and streams entries out without extracting to disk first.
|
# directories and streams entries out without extracting to disk first.
|
||||||
zip = { version = "8", default-features = false, features = ["deflate"] }
|
zip = { version = "9", default-features = false, features = ["deflate"] }
|
||||||
# Proton's photo duplicate detection is keyed on the plaintext SHA-1, so an
|
# Proton's photo duplicate detection is keyed on the plaintext SHA-1, so an
|
||||||
# import has to speak SHA-1 whatever its age.
|
# import has to speak SHA-1 whatever its age.
|
||||||
sha1 = "0.11"
|
sha1 = "0.11"
|
||||||
@@ -49,7 +49,7 @@ sha1 = "0.11"
|
|||||||
# formats a camera or phone actually produces — the rest of the crate's codecs
|
# formats a camera or phone actually produces — the rest of the crate's codecs
|
||||||
# would be dead weight in the daemon.
|
# would be dead weight in the daemon.
|
||||||
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif", "tiff", "bmp", "rayon"] }
|
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif", "tiff", "bmp", "rayon"] }
|
||||||
rusqlite = { version = "0.40", features = ["bundled"] }
|
rusqlite = { version = "0.41", features = ["bundled"] }
|
||||||
# keyring 4 split into `keyring-core` plus per-platform stores. The libdbus
|
# keyring 4 split into `keyring-core` plus per-platform stores. The libdbus
|
||||||
# Secret Service store is the one keyring 3's `sync-secret-service` wrapped, and
|
# Secret Service store is the one keyring 3's `sync-secret-service` wrapped, and
|
||||||
# with no `target` it matches items v3 wrote, so existing logins survive.
|
# with no `target` it matches items v3 wrote, so existing logins survive.
|
||||||
|
|||||||
+115
-33
@@ -1036,10 +1036,7 @@ fn cmd_devices(action: DeviceCmd) -> Result<()> {
|
|||||||
CtlResponse::Devices { items } if items.is_empty() => println!("No devices."),
|
CtlResponse::Devices { items } if items.is_empty() => println!("No devices."),
|
||||||
CtlResponse::Devices { items } => {
|
CtlResponse::Devices { items } => {
|
||||||
for d in items {
|
for d in items {
|
||||||
let sync = d
|
let sync = last_synced(d.last_sync);
|
||||||
.last_sync
|
|
||||||
.map(|t| t.to_string())
|
|
||||||
.unwrap_or_else(|| "never".to_string());
|
|
||||||
let tag = match (d.adopted, d.this_device) {
|
let tag = match (d.adopted, d.this_device) {
|
||||||
(true, _) => " *adopted*",
|
(true, _) => " *adopted*",
|
||||||
(false, true) => " *this machine*",
|
(false, true) => " *this machine*",
|
||||||
@@ -1130,11 +1127,7 @@ fn cmd_sync(action: SyncCmd) -> Result<()> {
|
|||||||
}
|
}
|
||||||
CtlResponse::SyncFolders { items } => {
|
CtlResponse::SyncFolders { items } => {
|
||||||
for f in items {
|
for f in items {
|
||||||
let sync = if f.last_sync == 0 {
|
let sync = last_synced(Some(f.last_sync));
|
||||||
"never".to_string()
|
|
||||||
} else {
|
|
||||||
f.last_sync.to_string()
|
|
||||||
};
|
|
||||||
// A queued switch is reported as the mode the folder is moving
|
// A queued switch is reported as the mode the folder is moving
|
||||||
// to, so `sync list` never reads as if the request was dropped.
|
// to, so `sync list` never reads as if the request was dropped.
|
||||||
let mode = match &f.pending_mode {
|
let mode = match &f.pending_mode {
|
||||||
@@ -1915,6 +1908,15 @@ fn format_epoch(secs: i64) -> String {
|
|||||||
format!("{m:02}-{d:02} {h:02}:{mi:02}")
|
format!("{m:02}-{d:02} {h:02}:{mi:02}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The `synced:` column of `sync list` and `devices list`: when the last pass
|
||||||
|
/// finished, or `never`. The daemon reports 0 for a folder that never synced.
|
||||||
|
fn last_synced(secs: Option<i64>) -> String {
|
||||||
|
match secs {
|
||||||
|
Some(secs) if secs > 0 => format_epoch(secs),
|
||||||
|
_ => "never".to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn cmd_leave(uid: String) -> Result<()> {
|
fn cmd_leave(uid: String) -> Result<()> {
|
||||||
ok_or_bail(control_request(CtlRequest::LeaveShared { uid })?)
|
ok_or_bail(control_request(CtlRequest::LeaveShared { uid })?)
|
||||||
}
|
}
|
||||||
@@ -2432,6 +2434,7 @@ fn cmd_daemon(mountpoint: Option<PathBuf>) -> Result<()> {
|
|||||||
since: failure.as_ref().map_or(now, |f| f.since),
|
since: failure.as_ref().map_or(now, |f| f.since),
|
||||||
attempts,
|
attempts,
|
||||||
next_attempt: now + delay.as_secs() as i64,
|
next_attempt: now + delay.as_secs() as i64,
|
||||||
|
not_empty: not_empty_cause(&e),
|
||||||
};
|
};
|
||||||
if let Err(e) = pdfs_core::mountfail::record(&state_dir, &record) {
|
if let Err(e) = pdfs_core::mountfail::record(&state_dir, &record) {
|
||||||
tracing::warn!(error = %e, "could not record the mount failure");
|
tracing::warn!(error = %e, "could not record the mount failure");
|
||||||
@@ -2444,6 +2447,23 @@ fn cmd_daemon(mountpoint: Option<PathBuf>) -> Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The folder in the way, when `error` is a mount refused over a folder that
|
||||||
|
/// already has files in it. The refusal travels inside an `io::Error`, whose
|
||||||
|
/// `source` skips the error it wraps, so each link is unwrapped by hand.
|
||||||
|
fn not_empty_cause(error: &anyhow::Error) -> Option<pdfs_core::mountpoint::NotEmpty> {
|
||||||
|
error.chain().find_map(|cause| {
|
||||||
|
cause
|
||||||
|
.downcast_ref::<pdfs_core::mountpoint::NotEmpty>()
|
||||||
|
.or_else(|| {
|
||||||
|
cause
|
||||||
|
.downcast_ref::<std::io::Error>()?
|
||||||
|
.get_ref()?
|
||||||
|
.downcast_ref::<pdfs_core::mountpoint::NotEmpty>()
|
||||||
|
})
|
||||||
|
.cloned()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// How long to wait before mount attempt `attempts + 1`, after `attempts`
|
/// How long to wait before mount attempt `attempts + 1`, after `attempts`
|
||||||
/// failures in a row.
|
/// failures in a row.
|
||||||
///
|
///
|
||||||
@@ -2527,14 +2547,30 @@ fn mount_once(mountpoint: Option<PathBuf>) -> Result<pdfs_fuse::MountOutcome> {
|
|||||||
"could not save the refreshed session tokens; the next start may need `pdfs login`"
|
"could not save the refreshed session tokens; the next start may need `pdfs login`"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Dropping the runtime waits for every blocking task, however long; a call
|
release_runtime(rt, matches!(result, Ok(pdfs_fuse::MountOutcome::Shutdown)));
|
||||||
// still stuck on Drive would hold the stop until systemd kills it (B165).
|
|
||||||
rt.shutdown_timeout(std::time::Duration::from_secs(2));
|
|
||||||
|
|
||||||
let outcome = result.context("mount failed")?;
|
let outcome = result.context("mount failed")?;
|
||||||
Ok(outcome)
|
Ok(outcome)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Let go of a mount's runtime once the mount has ended.
|
||||||
|
///
|
||||||
|
/// On a stop the process exits right after, so the runtime is left running
|
||||||
|
/// for it to end with. Shutting it down first broke every thread the mount
|
||||||
|
/// does not join, such as a size lookup or a profile backup a request started
|
||||||
|
/// during the stop: its next call to Drive panicked with "A Tokio 1.x context
|
||||||
|
/// was found, but it is being shutdown" (`docs/BUGS.md` B276). A mount that
|
||||||
|
/// is about to be tried again does shut it down, because a new runtime
|
||||||
|
/// replaces it. Dropping it would wait for every blocking task, however long;
|
||||||
|
/// a call still stuck on Drive would hold the retry (B165).
|
||||||
|
fn release_runtime(rt: tokio::runtime::Runtime, exiting: bool) {
|
||||||
|
if exiting {
|
||||||
|
std::mem::forget(rt);
|
||||||
|
} else {
|
||||||
|
rt.shutdown_timeout(std::time::Duration::from_secs(2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn cmd_pin(path: PathBuf) -> Result<()> {
|
fn cmd_pin(path: PathBuf) -> Result<()> {
|
||||||
match control_request(CtlRequest::Pin {
|
match control_request(CtlRequest::Pin {
|
||||||
path: path_arg(&path)?,
|
path: path_arg(&path)?,
|
||||||
@@ -3722,26 +3758,6 @@ fn executable_on_path(name: &str) -> bool {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mounted_fs_type(path: &Path) -> Option<String> {
|
|
||||||
let wanted = path.canonicalize().ok()?;
|
|
||||||
let mounts = std::fs::read_to_string("/proc/self/mountinfo").ok()?;
|
|
||||||
mounts
|
|
||||||
.lines()
|
|
||||||
.filter_map(|line| {
|
|
||||||
let fields: Vec<_> = line.split_whitespace().collect();
|
|
||||||
let separator = fields.iter().position(|field| *field == "-")?;
|
|
||||||
let encoded = *fields.get(4)?;
|
|
||||||
let decoded = encoded.replace("\\040", " ").replace("\\011", "\t");
|
|
||||||
let mountpoint = PathBuf::from(decoded);
|
|
||||||
if mountpoint.canonicalize().ok()? == wanted {
|
|
||||||
Some(fields.get(separator + 1)?.to_string())
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.next()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Create, sync, and remove a new file without ever replacing an existing one.
|
/// Create, sync, and remove a new file without ever replacing an existing one.
|
||||||
fn writable_probe(dir: &Path) -> std::io::Result<()> {
|
fn writable_probe(dir: &Path) -> std::io::Result<()> {
|
||||||
let name = format!(".pdfs-diagnose-probe-{}", std::process::id());
|
let name = format!(".pdfs-diagnose-probe-{}", std::process::id());
|
||||||
@@ -3904,7 +3920,7 @@ fn cmd_diagnose() -> Result<()> {
|
|||||||
outdated_daemon_note(&version),
|
outdated_daemon_note(&version),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
let live_type = mounted_fs_type(Path::new(&mountpoint));
|
let live_type = pdfs_core::mountpoint::mounted_fs_type(Path::new(&mountpoint));
|
||||||
let is_fuse = live_type
|
let is_fuse = live_type
|
||||||
.as_deref()
|
.as_deref()
|
||||||
.is_some_and(|kind| kind.starts_with("fuse"));
|
.is_some_and(|kind| kind.starts_with("fuse"));
|
||||||
@@ -4146,6 +4162,47 @@ fn control_request(req: CtlRequest) -> Result<CtlResponse> {
|
|||||||
.with_context(|| format!("talk to mount daemon at {}", socket.display()))
|
.with_context(|| format!("talk to mount daemon at {}", socket.display()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod release_runtime_tests {
|
||||||
|
use super::*;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
/// A thread the mount never joined still reaches Drive after a stop. It
|
||||||
|
/// used to panic on its first timer once the runtime was shut down.
|
||||||
|
#[test]
|
||||||
|
fn a_thread_left_running_at_a_stop_can_still_use_the_runtime() {
|
||||||
|
let rt = tokio::runtime::Runtime::new().unwrap();
|
||||||
|
let handle = rt.handle().clone();
|
||||||
|
let (released_tx, released_rx) = std::sync::mpsc::channel();
|
||||||
|
let straggler = std::thread::spawn(move || {
|
||||||
|
released_rx.recv().unwrap();
|
||||||
|
handle.block_on(async {
|
||||||
|
tokio::time::sleep(Duration::from_millis(1)).await;
|
||||||
|
7
|
||||||
|
})
|
||||||
|
});
|
||||||
|
release_runtime(rt, true);
|
||||||
|
released_tx.send(()).unwrap();
|
||||||
|
assert_eq!(straggler.join().expect("the thread must not panic"), 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_mount_tried_again_shuts_its_runtime_down() {
|
||||||
|
let rt = tokio::runtime::Runtime::new().unwrap();
|
||||||
|
let (done_tx, done_rx) = std::sync::mpsc::channel::<()>();
|
||||||
|
rt.spawn(async move {
|
||||||
|
let _done = done_tx;
|
||||||
|
std::future::pending::<()>().await;
|
||||||
|
});
|
||||||
|
release_runtime(rt, false);
|
||||||
|
// The task is dropped with the runtime, and its sender with it.
|
||||||
|
assert_eq!(
|
||||||
|
done_rx.recv_timeout(Duration::from_secs(5)),
|
||||||
|
Err(std::sync::mpsc::RecvTimeoutError::Disconnected)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod pause_tests {
|
mod pause_tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -4272,6 +4329,23 @@ mod login_wait_tests {
|
|||||||
assert_eq!(secs, [5, 10, 20, 40, 80, 120, 120, 120]);
|
assert_eq!(secs, [5, 10, 20, 40, 80, 120, 120, 120]);
|
||||||
assert_eq!(mount_retry_delay(u32::MAX).as_secs(), 120);
|
assert_eq!(mount_retry_delay(u32::MAX).as_secs(), 120);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A refusal over a folder with files in it reaches the failure record
|
||||||
|
/// through the `io::Error` and the context around it (`docs/BUGS.md` B277).
|
||||||
|
#[test]
|
||||||
|
fn a_mount_refused_over_files_is_recorded_as_such() {
|
||||||
|
let found = pdfs_core::mountpoint::NotEmpty {
|
||||||
|
path: PathBuf::from("/home/you/ProtonDrive"),
|
||||||
|
entries: vec!["Work".into()],
|
||||||
|
count: 1,
|
||||||
|
};
|
||||||
|
let error =
|
||||||
|
anyhow::Error::new(std::io::Error::other(found.clone())).context("mount failed");
|
||||||
|
assert_eq!(not_empty_cause(&error), Some(found));
|
||||||
|
let other =
|
||||||
|
anyhow::Error::new(std::io::Error::other("missing key")).context("mount failed");
|
||||||
|
assert_eq!(not_empty_cause(&other), None);
|
||||||
|
}
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -4380,6 +4454,14 @@ mod login_wait_tests {
|
|||||||
assert_eq!(format_epoch_utc(-86_400), "1969-12-31");
|
assert_eq!(format_epoch_utc(-86_400), "1969-12-31");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn last_synced_shows_a_time_not_epoch_seconds() {
|
||||||
|
// B278: issue #46 showed `synced: 1793570850`.
|
||||||
|
assert_eq!(last_synced(Some(1_793_570_850)), "11-01 22:07");
|
||||||
|
assert_eq!(last_synced(Some(0)), "never");
|
||||||
|
assert_eq!(last_synced(None), "never");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn a_forged_looking_invitation_is_flagged_not_stated() {
|
fn a_forged_looking_invitation_is_flagged_not_stated() {
|
||||||
let mut entry = pdfs_core::control::DirEntry {
|
let mut entry = pdfs_core::control::DirEntry {
|
||||||
|
|||||||
@@ -621,10 +621,20 @@ impl ContentCache {
|
|||||||
for entry in rd.flatten() {
|
for entry in rd.flatten() {
|
||||||
let name = entry.file_name();
|
let name = entry.file_name();
|
||||||
let Some(name) = name.to_str() else { continue };
|
let Some(name) = name.to_str() else { continue };
|
||||||
|
// A `.meta` tags the blob named like it without the suffix. One
|
||||||
|
// whose blob is gone is what an eviction leaves between its two
|
||||||
|
// removals, by a crash or by a store of the same uid landing in
|
||||||
|
// between, and nothing else would ever remove it.
|
||||||
|
if let Some(blob) = name.strip_suffix(".meta") {
|
||||||
|
if !dir.join(blob).exists() {
|
||||||
|
let _ = std::fs::remove_file(entry.path());
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// `.geom` is a block-geometry sidecar (see `GeometryMeta`), tens
|
// `.geom` is a block-geometry sidecar (see `GeometryMeta`), tens
|
||||||
// of bytes and not a cached block; like `.meta` it is neither
|
// of bytes and not a cached block; like `.meta` it is neither
|
||||||
// budgeted nor evictable on its own.
|
// budgeted nor evictable on its own.
|
||||||
if name.ends_with(".meta") || name.ends_with(".geom") {
|
if name.ends_with(".geom") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// A `.tmp` is a staging file from a store that never completed
|
// A `.tmp` is a staging file from a store that never completed
|
||||||
@@ -2250,6 +2260,28 @@ mod tests {
|
|||||||
assert!(total <= 8, "budget enforced after reconcile, total={total}");
|
assert!(total <= 8, "budget enforced after reconcile, total={total}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// An eviction removes the blob, then its tag. A crash in between, or a
|
||||||
|
/// store of the same uid landing in between, left the tag on its own, and
|
||||||
|
/// nothing removed it.
|
||||||
|
#[test]
|
||||||
|
fn a_tag_without_its_blob_is_swept_at_open() {
|
||||||
|
let dir = TempDir::new();
|
||||||
|
let content = dir.path().join("content");
|
||||||
|
let pins = dir.path().join("pins.json");
|
||||||
|
let db = Arc::new(Db::open_in_memory().unwrap());
|
||||||
|
{
|
||||||
|
let c = ContentCache::open(content.clone(), pins.clone(), 0, db.clone()).unwrap();
|
||||||
|
c.store(&uid("kept"), 1, 4, b"kept").unwrap();
|
||||||
|
c.store(&uid("gone"), 1, 4, b"gone").unwrap();
|
||||||
|
std::fs::remove_file(c.blob_path(&uid("gone"))).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let c = ContentCache::open(content, pins, 0, db).unwrap();
|
||||||
|
assert!(!c.meta_path(&uid("gone")).exists());
|
||||||
|
assert!(c.meta_path(&uid("kept")).exists());
|
||||||
|
assert_eq!(c.read_range(&uid("kept"), 1, 4, 0, 4).unwrap(), b"kept");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn stale_metadata_is_a_miss() {
|
fn stale_metadata_is_a_miss() {
|
||||||
let (c, _d) = cache();
|
let (c, _d) = cache();
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ pub mod keycheck;
|
|||||||
pub mod localindex;
|
pub mod localindex;
|
||||||
pub mod menu;
|
pub mod menu;
|
||||||
pub mod mountfail;
|
pub mod mountfail;
|
||||||
|
pub mod mountpoint;
|
||||||
pub mod mounts;
|
pub mod mounts;
|
||||||
pub mod opener;
|
pub mod opener;
|
||||||
pub mod places;
|
pub mod places;
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ pub struct MountFailure {
|
|||||||
pub attempts: u32,
|
pub attempts: u32,
|
||||||
/// Unix seconds of the next attempt.
|
/// Unix seconds of the next attempt.
|
||||||
pub next_attempt: i64,
|
pub next_attempt: i64,
|
||||||
|
/// Set when the mount was refused because the folder already has files in
|
||||||
|
/// it, so the app can explain that in the user's language. Absent in a
|
||||||
|
/// file an older daemon wrote.
|
||||||
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
|
pub not_empty: Option<crate::mountpoint::NotEmpty>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Where the failure is kept for the state directory `state_dir`.
|
/// Where the failure is kept for the state directory `state_dir`.
|
||||||
@@ -65,6 +70,7 @@ mod tests {
|
|||||||
since: 1_700_000_000,
|
since: 1_700_000_000,
|
||||||
attempts: 3,
|
attempts: 3,
|
||||||
next_attempt: 1_700_000_040,
|
next_attempt: 1_700_000_040,
|
||||||
|
not_empty: None,
|
||||||
};
|
};
|
||||||
record(&dir, &failure).unwrap();
|
record(&dir, &failure).unwrap();
|
||||||
assert_eq!(read(&dir), Some(failure));
|
assert_eq!(read(&dir), Some(failure));
|
||||||
@@ -72,4 +78,12 @@ mod tests {
|
|||||||
assert_eq!(read(&dir), None);
|
assert_eq!(read(&dir), None);
|
||||||
let _ = std::fs::remove_dir_all(&dir);
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_failure_an_older_daemon_wrote_still_reads() {
|
||||||
|
let old = r#"{"error":"missing key","since":1,"attempts":2,"next_attempt":3}"#;
|
||||||
|
let failure: MountFailure = serde_json::from_str(old).unwrap();
|
||||||
|
assert_eq!(failure.not_empty, None);
|
||||||
|
assert_eq!(failure.attempts, 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
//! Whether a folder can take the My files mount without hiding anything.
|
||||||
|
//!
|
||||||
|
//! FUSE mounts over a folder that already has files in it without a word. The
|
||||||
|
//! files then sit under the mount, out of sight: not uploaded, and back only
|
||||||
|
//! once the service stops, so they look deleted (`docs/BUGS.md` B277, #67).
|
||||||
|
//! The daemon refuses such a folder, and the app refuses it when it is picked.
|
||||||
|
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
/// The file system type the kernel reports for this client's own mounts.
|
||||||
|
pub const OWN_FS_TYPE: &str = "fuse.protondrive";
|
||||||
|
|
||||||
|
/// How many of a folder's entries an error names.
|
||||||
|
const NAMED_ENTRIES: usize = 3;
|
||||||
|
|
||||||
|
/// A folder that already has something in it.
|
||||||
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||||
|
pub struct NotEmpty {
|
||||||
|
/// The folder.
|
||||||
|
pub path: PathBuf,
|
||||||
|
/// The first few names in it, sorted.
|
||||||
|
pub entries: Vec<String>,
|
||||||
|
/// How many entries it has in all.
|
||||||
|
pub count: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for NotEmpty {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
write!(f, "{} is not empty (holds ", self.path.display())?;
|
||||||
|
write!(f, "{}", self.entries.join(", "))?;
|
||||||
|
let rest = self.count.saturating_sub(self.entries.len());
|
||||||
|
if rest > 0 {
|
||||||
|
write!(f, " and {rest} more")?;
|
||||||
|
}
|
||||||
|
write!(
|
||||||
|
f,
|
||||||
|
"); My files would hide those files. Move them out, or choose another folder for My files"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::error::Error for NotEmpty {}
|
||||||
|
|
||||||
|
/// What is in `dir`, if anything. A folder that does not exist yet is empty.
|
||||||
|
/// Hidden entries count: a `.directory` or a `.Trash-1000` hidden under the
|
||||||
|
/// mount is as lost as any other file.
|
||||||
|
pub fn not_empty(dir: &Path) -> std::io::Result<Option<NotEmpty>> {
|
||||||
|
let read = match std::fs::read_dir(dir) {
|
||||||
|
Ok(read) => read,
|
||||||
|
Err(e) if e.kind() == std::io::ErrorKind::NotFound => return Ok(None),
|
||||||
|
Err(e) => return Err(e),
|
||||||
|
};
|
||||||
|
let mut names = read
|
||||||
|
.map(|entry| entry.map(|entry| entry.file_name().to_string_lossy().into_owned()))
|
||||||
|
.collect::<std::io::Result<Vec<_>>>()?;
|
||||||
|
if names.is_empty() {
|
||||||
|
return Ok(None);
|
||||||
|
}
|
||||||
|
names.sort();
|
||||||
|
let count = names.len();
|
||||||
|
names.truncate(NAMED_ENTRIES);
|
||||||
|
Ok(Some(NotEmpty {
|
||||||
|
path: dir.to_path_buf(),
|
||||||
|
entries: names,
|
||||||
|
count,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The file system type mounted at `path`, as `/proc/self/mountinfo` names it
|
||||||
|
/// (`ext4`, `fuse.protondrive`, …), or `None` when nothing is mounted there.
|
||||||
|
pub fn mounted_fs_type(path: &Path) -> Option<String> {
|
||||||
|
let wanted = path.canonicalize().ok()?;
|
||||||
|
let mounts = std::fs::read_to_string("/proc/self/mountinfo").ok()?;
|
||||||
|
mounts
|
||||||
|
.lines()
|
||||||
|
.filter_map(|line| {
|
||||||
|
let fields: Vec<_> = line.split_whitespace().collect();
|
||||||
|
let separator = fields.iter().position(|field| *field == "-")?;
|
||||||
|
let encoded = *fields.get(4)?;
|
||||||
|
let decoded = encoded.replace("\\040", " ").replace("\\011", "\t");
|
||||||
|
let mountpoint = PathBuf::from(decoded);
|
||||||
|
if mountpoint.canonicalize().ok()? == wanted {
|
||||||
|
Some(fields.get(separator + 1)?.to_string())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.next()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
fn temp_dir(name: &str) -> PathBuf {
|
||||||
|
let dir =
|
||||||
|
std::env::temp_dir().join(format!("pdfs-mountpoint-{name}-{}", std::process::id()));
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
std::fs::create_dir_all(&dir).unwrap();
|
||||||
|
dir
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn an_empty_or_missing_folder_takes_the_mount() {
|
||||||
|
let dir = temp_dir("empty");
|
||||||
|
assert_eq!(not_empty(&dir).unwrap(), None);
|
||||||
|
assert_eq!(not_empty(&dir.join("missing")).unwrap(), None);
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_folder_with_files_is_refused_and_named() {
|
||||||
|
let dir = temp_dir("files");
|
||||||
|
for name in ["report.pdf", "Notes", ".directory", "zeta.txt"] {
|
||||||
|
std::fs::write(dir.join(name), b"x").unwrap();
|
||||||
|
}
|
||||||
|
let found = not_empty(&dir).unwrap().expect("must refuse");
|
||||||
|
assert_eq!(found.count, 4);
|
||||||
|
assert_eq!(found.entries, [".directory", "Notes", "report.pdf"]);
|
||||||
|
let message = found.to_string();
|
||||||
|
assert!(message.contains("is not empty"), "{message}");
|
||||||
|
assert!(
|
||||||
|
message.contains(".directory, Notes, report.pdf and 1 more"),
|
||||||
|
"{message}"
|
||||||
|
);
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_hidden_file_alone_is_enough_to_refuse() {
|
||||||
|
let dir = temp_dir("hidden");
|
||||||
|
std::fs::write(dir.join(".Trash-1000"), b"").unwrap();
|
||||||
|
let found = not_empty(&dir).unwrap().expect("must refuse");
|
||||||
|
assert_eq!(found.count, 1);
|
||||||
|
assert!(!found.to_string().contains("more"));
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_plain_folder_is_not_a_mount() {
|
||||||
|
let dir = temp_dir("plain");
|
||||||
|
assert_eq!(mounted_fs_type(&dir), None);
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1332,8 +1332,8 @@ mod tests {
|
|||||||
));
|
));
|
||||||
let file = std::fs::File::create(&path).unwrap();
|
let file = std::fs::File::create(&path).unwrap();
|
||||||
let mut zip = zip::ZipWriter::new(file);
|
let mut zip = zip::ZipWriter::new(file);
|
||||||
let options: zip::write::FileOptions<'_, ()> =
|
let options = zip::write::SimpleFileOptions::default()
|
||||||
zip::write::FileOptions::default().compression_method(zip::CompressionMethod::Stored);
|
.compression_method(zip::CompressionMethod::Stored);
|
||||||
for (name, body) in files {
|
for (name, body) in files {
|
||||||
zip.start_file(*name, options).unwrap();
|
zip.start_file(*name, options).unwrap();
|
||||||
zip.write_all(body).unwrap();
|
zip.write_all(body).unwrap();
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ struct ControlHandlerPermit;
|
|||||||
impl ControlHandlerPermit {
|
impl ControlHandlerPermit {
|
||||||
fn acquire() -> Option<Self> {
|
fn acquire() -> Option<Self> {
|
||||||
ACTIVE_CONTROL_HANDLERS
|
ACTIVE_CONTROL_HANDLERS
|
||||||
.fetch_update(Ordering::AcqRel, Ordering::Acquire, |active| {
|
.try_update(Ordering::AcqRel, Ordering::Acquire, |active| {
|
||||||
(active < MAX_CONTROL_HANDLERS).then_some(active + 1)
|
(active < MAX_CONTROL_HANDLERS).then_some(active + 1)
|
||||||
})
|
})
|
||||||
.ok()
|
.ok()
|
||||||
|
|||||||
@@ -1281,6 +1281,13 @@ impl Core {
|
|||||||
sent: (&sent.0, &sent.1),
|
sent: (&sent.0, &sent.1),
|
||||||
landed: (&home.to_string(), &name),
|
landed: (&home.to_string(), &name),
|
||||||
};
|
};
|
||||||
|
// Counted from the op's retirement until the bytes are cached and the
|
||||||
|
// tree has the real uid, as an upload is. Uncounted, the queue read
|
||||||
|
// empty while that still ran: a delete in between took an open file
|
||||||
|
// for closed and dropped what its handle reads, and a script that
|
||||||
|
// waited for an empty queue read the file before it was cached
|
||||||
|
// (`docs/BUGS.md` B257).
|
||||||
|
let _landing = LandingUpload::begin(&self.landing_uploads);
|
||||||
let newer = match self.retire_create(op, uploaded, &landing, &local, &real)? {
|
let newer = match self.retire_create(op, uploaded, &landing, &local, &real)? {
|
||||||
CreateRetired::Withdrawn { trash } => {
|
CreateRetired::Withdrawn { trash } => {
|
||||||
return self.trash_withdrawn_create(op, trash, &local, &real, &name);
|
return self.trash_withdrawn_create(op, trash, &local, &real, &name);
|
||||||
|
|||||||
@@ -2376,7 +2376,7 @@ impl ProtonFs {
|
|||||||
// regardless — the file is gone from their point of view the moment the
|
// regardless — the file is gone from their point of view the moment the
|
||||||
// command returns. The same when the network goes
|
// command returns. The same when the network goes
|
||||||
// away under the remote call below.
|
// away under the remote call below.
|
||||||
let queue_it = |reply: ReplyEmpty| match self.core.queue_trash(&uid, name) {
|
let queue_it = |reply: ReplyEmpty| match self.core.queue_trash(&uid, name, open_now) {
|
||||||
Ok(()) => reply.ok(),
|
Ok(()) => reply.ok(),
|
||||||
Err(e) => reply.error(e),
|
Err(e) => reply.error(e),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3999,7 +3999,12 @@ impl Core {
|
|||||||
/// the cached ones, as when the trash is sent at once: a partial write
|
/// the cached ones, as when the trash is sent at once: a partial write
|
||||||
/// fills its gaps from them, offline too (`docs/BUGS.md` B186). The final
|
/// fills its gaps from them, offline too (`docs/BUGS.md` B186). The final
|
||||||
/// close or the trash landing, whichever comes last, lets go of them.
|
/// close or the trash landing, whichever comes last, lets go of them.
|
||||||
fn queue_trash(&self, uid: &NodeUid, name: &str) -> Result<(), Errno> {
|
///
|
||||||
|
/// `open` is whether the caller found the file open. A create that landed
|
||||||
|
/// under a delete is trashed by its real uid before the tree has it, so
|
||||||
|
/// asking the tree alone took an open file for closed (`docs/BUGS.md`
|
||||||
|
/// B257).
|
||||||
|
fn queue_trash(&self, uid: &NodeUid, name: &str, open: bool) -> Result<(), Errno> {
|
||||||
self.require_uid_writable(uid)?;
|
self.require_uid_writable(uid)?;
|
||||||
// The bytes below are about to be discarded, and a drain worker may be
|
// The bytes below are about to be discarded, and a drain worker may be
|
||||||
// reading them onto the wire right now. Stop it first: with several
|
// reading them onto the wire right now. Stop it first: with several
|
||||||
@@ -4014,7 +4019,7 @@ impl Core {
|
|||||||
error!(%uid, error = %e, "queueing trash failed");
|
error!(%uid, error = %e, "queueing trash failed");
|
||||||
Errno::EIO
|
Errno::EIO
|
||||||
})?;
|
})?;
|
||||||
let open_now = self.is_open_anywhere(uid);
|
let open_now = open || self.is_open_anywhere(uid);
|
||||||
if open_now {
|
if open_now {
|
||||||
let read_from = self.pending_blob(uid);
|
let read_from = self.pending_blob(uid);
|
||||||
self.release_dropped_below(
|
self.release_dropped_below(
|
||||||
@@ -5383,9 +5388,12 @@ impl Core {
|
|||||||
/// `unlink` under an open handle. Its queued ops go now, or the drain would
|
/// `unlink` under an open handle. Its queued ops go now, or the drain would
|
||||||
/// upload to the node after it was trashed (`docs/BUGS.md` B106).
|
/// upload to the node after it was trashed (`docs/BUGS.md` B106).
|
||||||
fn remove_replaced(&self, ino: u64, uid: &NodeUid, name: &str) -> Result<(), Errno> {
|
fn remove_replaced(&self, ino: u64, uid: &NodeUid, name: &str) -> Result<(), Errno> {
|
||||||
|
// Asked under the uid the tree has now: a landed create's real uid is
|
||||||
|
// not in the tree yet (`docs/BUGS.md` B257).
|
||||||
|
let open = self.is_open_anywhere(uid);
|
||||||
let landed;
|
let landed;
|
||||||
let uid = if is_local_uid(uid) {
|
let uid = if is_local_uid(uid) {
|
||||||
if self.is_open_anywhere(uid) {
|
if open {
|
||||||
self.withdraw_queued_ops(uid)?;
|
self.withdraw_queued_ops(uid)?;
|
||||||
} else {
|
} else {
|
||||||
self.discard_queued_ops(uid)?;
|
self.discard_queued_ops(uid)?;
|
||||||
@@ -5410,7 +5418,7 @@ impl Core {
|
|||||||
// Local-first or offline, or the network goes away under the call:
|
// Local-first or offline, or the network goes away under the call:
|
||||||
// queue the trash. The rename that follows queues as well, behind it.
|
// queue the trash. The rename that follows queues as well, behind it.
|
||||||
if !self.sends_inline() {
|
if !self.sends_inline() {
|
||||||
return self.queue_trash(uid, name);
|
return self.queue_trash(uid, name, open);
|
||||||
}
|
}
|
||||||
self.require_uid_writable(uid)?;
|
self.require_uid_writable(uid)?;
|
||||||
if let Err(e) = self
|
if let Err(e) = self
|
||||||
@@ -5418,7 +5426,7 @@ impl Core {
|
|||||||
.and_then(batch::into_unit)
|
.and_then(batch::into_unit)
|
||||||
{
|
{
|
||||||
if self.lost_link(&e, "trash a replaced node") {
|
if self.lost_link(&e, "trash a replaced node") {
|
||||||
return self.queue_trash(uid, name);
|
return self.queue_trash(uid, name, open);
|
||||||
}
|
}
|
||||||
error!(%uid, name, error = %e, "trashing the node a rename replaces failed");
|
error!(%uid, name, error = %e, "trashing the node a rename replaces failed");
|
||||||
self.log_activity(ActivityKind::Trash, name, e.to_string(), false);
|
self.log_activity(ActivityKind::Trash, name, e.to_string(), false);
|
||||||
@@ -9258,7 +9266,7 @@ mod tests {
|
|||||||
assert!(!replaced.contains("st.forget(uid)"));
|
assert!(!replaced.contains("st.forget(uid)"));
|
||||||
assert_before(
|
assert_before(
|
||||||
replaced,
|
replaced,
|
||||||
"if self.is_open_anywhere(uid)",
|
"let open = self.is_open_anywhere(uid)",
|
||||||
"self.discard_queued_ops(uid)",
|
"self.discard_queued_ops(uid)",
|
||||||
);
|
);
|
||||||
assert_before(replaced, "if open_now", "self.cache.evict(uid)");
|
assert_before(replaced, "if open_now", "self.cache.evict(uid)");
|
||||||
|
|||||||
@@ -196,6 +196,29 @@ pub(super) fn clear_stale_mount(mountpoint: &Path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Refuse to mount My files over a folder that already has files in it: FUSE
|
||||||
|
/// would hide them, unsent and out of sight, until the service stops
|
||||||
|
/// (`docs/BUGS.md` B277). Runs before the root fetch and before any worker
|
||||||
|
/// starts, so a refusal costs nothing to retry.
|
||||||
|
///
|
||||||
|
/// A dead mount is cleared first, since it cannot be listed. One of this
|
||||||
|
/// client's own live mounts is left to [`spawn_session`], which clears it as it
|
||||||
|
/// always has; listing it would show Drive's files, not the folder's.
|
||||||
|
pub(super) fn check_mountpoint(mountpoint: &Path) -> std::io::Result<()> {
|
||||||
|
if is_stale_mount(mountpoint) {
|
||||||
|
clear_stale_mount(mountpoint);
|
||||||
|
}
|
||||||
|
if pdfs_core::mountpoint::mounted_fs_type(mountpoint).as_deref()
|
||||||
|
== Some(pdfs_core::mountpoint::OWN_FS_TYPE)
|
||||||
|
{
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
match pdfs_core::mountpoint::not_empty(mountpoint)? {
|
||||||
|
Some(found) => Err(std::io::Error::other(found)),
|
||||||
|
None => Ok(()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// `sync_state` key holding the uid of the My Files root, so a later run can
|
/// `sync_state` key holding the uid of the My Files root, so a later run can
|
||||||
/// recover it from `nodes` without the API.
|
/// recover it from `nodes` without the API.
|
||||||
const ROOT_UID_KEY: &str = "root_uid";
|
const ROOT_UID_KEY: &str = "root_uid";
|
||||||
@@ -427,6 +450,7 @@ pub(crate) fn mount_with(
|
|||||||
// Start the uptime clock here rather than at the first `pdfs diagnostics`,
|
// Start the uptime clock here rather than at the first `pdfs diagnostics`,
|
||||||
// so the age it reports is the daemon's own.
|
// so the age it reports is the daemon's own.
|
||||||
super::diagnostics::start_clock();
|
super::diagnostics::start_clock();
|
||||||
|
check_mountpoint(mountpoint)?;
|
||||||
let (root, start) = fetch_or_recall_root(drive.as_ref(), &rt, &db)?;
|
let (root, start) = fetch_or_recall_root(drive.as_ref(), &rt, &db)?;
|
||||||
let online = start == Start::Online;
|
let online = start == Start::Online;
|
||||||
let scope = root.tree_event_scope_id();
|
let scope = root.tree_event_scope_id();
|
||||||
|
|||||||
@@ -1344,7 +1344,7 @@ impl Core {
|
|||||||
let next = |current| if current == u64::MAX { 1 } else { current + 1 };
|
let next = |current| if current == u64::MAX { 1 } else { current + 1 };
|
||||||
let previous = self
|
let previous = self
|
||||||
.file_thumb_generation
|
.file_thumb_generation
|
||||||
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |current| {
|
.try_update(Ordering::SeqCst, Ordering::SeqCst, |current| {
|
||||||
Some(next(current))
|
Some(next(current))
|
||||||
})
|
})
|
||||||
.expect("generation update always succeeds");
|
.expect("generation update always succeeds");
|
||||||
|
|||||||
@@ -130,6 +130,22 @@ impl Daemon {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether nothing is queued and no upload is still landing, as `pdfs
|
||||||
|
/// status` counts it. An empty [`Self::pending`] is not enough before a
|
||||||
|
/// read that needs the cache: the op goes before the uploaded bytes are
|
||||||
|
/// cached, so a test that went offline at once raced the drain.
|
||||||
|
pub(crate) fn drained(&self) -> bool {
|
||||||
|
self.pending().is_ok_and(|items| items.is_empty())
|
||||||
|
&& matches!(
|
||||||
|
self.request(&Request::Status),
|
||||||
|
Ok(Response::Status {
|
||||||
|
pending_uploads: 0,
|
||||||
|
pending_changes: 0,
|
||||||
|
..
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/// Whether the mount believes Proton is reachable, as `pdfs status` shows
|
/// Whether the mount believes Proton is reachable, as `pdfs status` shows
|
||||||
/// it.
|
/// it.
|
||||||
pub(crate) fn online(&self) -> io::Result<bool> {
|
pub(crate) fn online(&self) -> io::Result<bool> {
|
||||||
@@ -393,6 +409,43 @@ mod tests {
|
|||||||
let _ = std::fs::remove_dir_all(&dir);
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A folder with files in it is not mounted over, and its files stay where
|
||||||
|
/// they are; once it is empty, the mount comes up (B277, #67).
|
||||||
|
#[test]
|
||||||
|
#[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"]
|
||||||
|
fn a_mount_over_local_files_is_refused_and_leaves_them_alone() {
|
||||||
|
let drive = FakeDrive::new();
|
||||||
|
let dir = scratch("not-empty");
|
||||||
|
let mountpoint = dir.join("mnt");
|
||||||
|
std::fs::create_dir_all(mountpoint.join("Work")).unwrap();
|
||||||
|
std::fs::write(mountpoint.join("notes.txt"), b"local only").unwrap();
|
||||||
|
|
||||||
|
let error = Daemon::start(&dir, drive.client(1, Faults::lan()))
|
||||||
|
.err()
|
||||||
|
.expect("the mount must be refused");
|
||||||
|
let found = error
|
||||||
|
.get_ref()
|
||||||
|
.and_then(|inner| inner.downcast_ref::<pdfs_core::mountpoint::NotEmpty>())
|
||||||
|
.unwrap_or_else(|| panic!("refused for another reason: {error}"));
|
||||||
|
assert_eq!(found.entries, ["Work", "notes.txt"]);
|
||||||
|
assert!(!is_mounted(&mountpoint));
|
||||||
|
assert_eq!(
|
||||||
|
std::fs::read(mountpoint.join("notes.txt")).unwrap(),
|
||||||
|
b"local only"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
drive.tree().is_empty(),
|
||||||
|
"nothing went to Drive: {:?}",
|
||||||
|
drive.tree()
|
||||||
|
);
|
||||||
|
|
||||||
|
std::fs::remove_file(mountpoint.join("notes.txt")).unwrap();
|
||||||
|
std::fs::remove_dir(mountpoint.join("Work")).unwrap();
|
||||||
|
let daemon = Daemon::start(&dir, drive.client(1, Faults::lan())).unwrap();
|
||||||
|
assert!(matches!(daemon.stop(), Ok(MountOutcome::Shutdown)));
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
/// Write `bytes` at `offset` into an existing file, without truncating it.
|
/// Write `bytes` at `offset` into an existing file, without truncating it.
|
||||||
fn write_at(path: &Path, offset: u64, bytes: &[u8]) -> io::Result<()> {
|
fn write_at(path: &Path, offset: u64, bytes: &[u8]) -> io::Result<()> {
|
||||||
use std::os::unix::fs::FileExt;
|
use std::os::unix::fs::FileExt;
|
||||||
@@ -565,7 +618,7 @@ mod tests {
|
|||||||
|
|
||||||
std::fs::write(&path, b"0123456789").unwrap();
|
std::fs::write(&path, b"0123456789").unwrap();
|
||||||
assert!(wait_until(Duration::from_secs(30), || {
|
assert!(wait_until(Duration::from_secs(30), || {
|
||||||
daemon.pending().is_ok_and(|items| items.is_empty())
|
daemon.drained()
|
||||||
&& drive.tree().get("f.txt") == Some(&Entry::File(Arc::new(b"0123456789".to_vec())))
|
&& drive.tree().get("f.txt") == Some(&Entry::File(Arc::new(b"0123456789".to_vec())))
|
||||||
}));
|
}));
|
||||||
daemon.client.set_online(false);
|
daemon.client.set_online(false);
|
||||||
@@ -692,6 +745,55 @@ mod tests {
|
|||||||
let _ = std::fs::remove_dir_all(&dir);
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"]
|
||||||
|
fn a_new_file_deleted_while_open_as_its_create_lands_still_reads() {
|
||||||
|
// The create's op was retired and the tree still had the placeholder.
|
||||||
|
// The queue read empty, and the delete trashed the node by its real
|
||||||
|
// uid, which the tree did not have yet: it took the open file for
|
||||||
|
// closed and dropped the bytes its handle reads (B257).
|
||||||
|
use std::io::{Read, Seek, SeekFrom, Write};
|
||||||
|
let drive = FakeDrive::new();
|
||||||
|
let dir = scratch("delete-open-as-create-lands");
|
||||||
|
let daemon = Daemon::start(&dir, drive.client(1, Faults::lan())).unwrap();
|
||||||
|
let path = daemon.mountpoint.join("f.txt");
|
||||||
|
|
||||||
|
let landing = daemon.client.hold_next_landing_of_any();
|
||||||
|
std::fs::write(&path, b"0123456789").unwrap();
|
||||||
|
assert!(wait_until(Duration::from_secs(30), || landing.reached()));
|
||||||
|
assert!(!daemon.drained(), "the landing create is counted");
|
||||||
|
let mut file = std::fs::OpenOptions::new()
|
||||||
|
.read(true)
|
||||||
|
.write(true)
|
||||||
|
.open(&path)
|
||||||
|
.unwrap();
|
||||||
|
drop(landing);
|
||||||
|
assert!(wait_until(Duration::from_secs(30), || daemon.drained()));
|
||||||
|
|
||||||
|
daemon.client.set_online(false);
|
||||||
|
std::fs::remove_file(&path).unwrap();
|
||||||
|
file.seek(SeekFrom::End(0)).unwrap();
|
||||||
|
file.write_all(b"ab").unwrap();
|
||||||
|
let mut read = Vec::new();
|
||||||
|
file.seek(SeekFrom::Start(0)).unwrap();
|
||||||
|
file.read_to_end(&mut read).unwrap();
|
||||||
|
assert_eq!(read, b"0123456789ab");
|
||||||
|
drop(file);
|
||||||
|
|
||||||
|
daemon.client.set_online(true);
|
||||||
|
assert!(
|
||||||
|
wait_until(Duration::from_secs(30), || {
|
||||||
|
daemon.drained() && drive.tree().is_empty()
|
||||||
|
}),
|
||||||
|
"{:?} {:?}",
|
||||||
|
daemon.pending(),
|
||||||
|
drive.tree()
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(matches!(daemon.stop(), Ok(MountOutcome::Shutdown)));
|
||||||
|
let _ = std::fs::remove_dir_all(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"]
|
#[ignore = "mounts FUSE: run with `cargo test -p pdfs-fuse sim:: -- --ignored`"]
|
||||||
fn a_restart_does_not_bring_back_the_write_of_a_file_deleted_while_open() {
|
fn a_restart_does_not_bring_back_the_write_of_a_file_deleted_while_open() {
|
||||||
@@ -706,7 +808,7 @@ mod tests {
|
|||||||
|
|
||||||
std::fs::write(&path, b"0123456789").unwrap();
|
std::fs::write(&path, b"0123456789").unwrap();
|
||||||
assert!(wait_until(Duration::from_secs(30), || {
|
assert!(wait_until(Duration::from_secs(30), || {
|
||||||
daemon.pending().is_ok_and(|items| items.is_empty())
|
daemon.drained()
|
||||||
&& drive.tree().get("f.txt") == Some(&Entry::File(Arc::new(b"0123456789".to_vec())))
|
&& drive.tree().get("f.txt") == Some(&Entry::File(Arc::new(b"0123456789".to_vec())))
|
||||||
}));
|
}));
|
||||||
daemon.client.set_online(false);
|
daemon.client.set_online(false);
|
||||||
|
|||||||
@@ -2867,7 +2867,7 @@ mod tests {
|
|||||||
/// from being read as "the user deleted everything" and trashing the folder
|
/// from being read as "the user deleted everything" and trashing the folder
|
||||||
/// on Drive.
|
/// on Drive.
|
||||||
#[test]
|
#[test]
|
||||||
fn guard_local_wipe_blocks_only_a_total_disappearance() {
|
fn guard_local_wipe_blocks_a_total_disappearance() {
|
||||||
let base: HashMap<String, ()> = ["a.txt", "b.txt", "d/c.txt"]
|
let base: HashMap<String, ()> = ["a.txt", "b.txt", "d/c.txt"]
|
||||||
.iter()
|
.iter()
|
||||||
.map(|r| ((*r).to_string(), ()))
|
.map(|r| ((*r).to_string(), ()))
|
||||||
@@ -2881,7 +2881,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
assert!(
|
assert!(
|
||||||
guard_local_wipe(&base, &one).is_ok(),
|
guard_local_wipe(&base, &one).is_ok(),
|
||||||
"one survivor means the tree is readable; the rest are real deletions"
|
"in a small folder, one survivor means the tree is readable; the rest are real deletions"
|
||||||
);
|
);
|
||||||
// A one-entry folder can disappear because its mount or parent became
|
// A one-entry folder can disappear because its mount or parent became
|
||||||
// unavailable just as easily as a larger tree can.
|
// unavailable just as easily as a larger tree can.
|
||||||
|
|||||||
@@ -180,18 +180,42 @@ pub(super) fn local_deletions<B, L>(
|
|||||||
missing
|
missing
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Refuse to run a pass whose local side has vanished in its entirety.
|
/// How many tracked paths a folder needs before a mass disappearance, short of
|
||||||
|
/// a total one, trips a wipe guard. Below this, a few survivors say little.
|
||||||
|
const MASS_LOSS_MIN_PATHS: usize = 20;
|
||||||
|
|
||||||
|
/// The share of a large folder's tracked paths that may vanish in one pass, in
|
||||||
|
/// tenths, before a wipe guard stops it: 9 of 10 and up is refused.
|
||||||
|
const MASS_LOSS_TENTHS: usize = 9;
|
||||||
|
|
||||||
|
/// Whether `missing` of `total` tracked paths gone at once looks like a lost
|
||||||
|
/// tree rather than deletions. All of them always does. Most of a large
|
||||||
|
/// folder does too: one surviving file used to clear the guard, so a
|
||||||
|
/// half-mounted disk, or a script that emptied the folder and wrote one file
|
||||||
|
/// back, trashed everything else on Drive (B270).
|
||||||
|
fn looks_like_a_wipe(missing: usize, total: usize) -> bool {
|
||||||
|
total > 0
|
||||||
|
&& (missing == total
|
||||||
|
|| (total >= MASS_LOSS_MIN_PATHS && missing * 10 >= total * MASS_LOSS_TENTHS))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Refuse to run a pass whose local side has vanished in its entirety, or
|
||||||
|
/// nearly so ([`looks_like_a_wipe`]).
|
||||||
///
|
///
|
||||||
/// When every baseline path is absent locally, the likely cause is an unavailable
|
/// When the synced paths are all or nearly all absent locally, the likely
|
||||||
/// mount or unreadable folder rather than a deliberate whole-tree deletion.
|
/// cause is an unavailable mount or unreadable folder rather than a deliberate
|
||||||
/// One surviving path is enough to clear the guard.
|
/// deletion of the whole tree.
|
||||||
pub(super) fn guard_local_wipe<B, L>(
|
pub(super) fn guard_local_wipe<B, L>(
|
||||||
baseline: &HashMap<String, B>,
|
baseline: &HashMap<String, B>,
|
||||||
local: &HashMap<String, L>,
|
local: &HashMap<String, L>,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
if !baseline.is_empty() && baseline.keys().all(|rel| !local.contains_key(rel)) {
|
let missing = baseline
|
||||||
|
.keys()
|
||||||
|
.filter(|rel| !local.contains_key(*rel))
|
||||||
|
.count();
|
||||||
|
if looks_like_a_wipe(missing, baseline.len()) {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"every one of the {} synced paths is missing locally; refusing to trash \
|
"{missing} of the {} synced paths are missing locally; refusing to trash \
|
||||||
them on Drive. Check that the folder is mounted and readable; to download \
|
them on Drive. Check that the folder is mounted and readable; to download \
|
||||||
them again, sync the folder from scratch.",
|
them again, sync the folder from scratch.",
|
||||||
baseline.len()
|
baseline.len()
|
||||||
@@ -200,20 +224,24 @@ pub(super) fn guard_local_wipe<B, L>(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Refuse to run a pass whose remote side has vanished in its entirety: the
|
/// Refuse to run a pass whose remote side has vanished in its entirety, or
|
||||||
/// remote twin of [`guard_local_wipe`].
|
/// nearly so: the remote twin of [`guard_local_wipe`].
|
||||||
///
|
///
|
||||||
/// An empty or truncated remote walk reads to the planner as "Drive deleted
|
/// An empty or truncated remote walk reads to the planner as "Drive deleted
|
||||||
/// everything", which a pass answers by deleting the local copies. When not
|
/// everything", which a pass answers by deleting the local copies. When all or
|
||||||
/// one synced path is left on Drive, a failed listing is far likelier than a
|
/// nearly all synced paths are gone from Drive at once, a failed listing is far
|
||||||
/// deliberate wipe of the whole folder, so the pass stops instead.
|
/// likelier than a deliberate wipe of the folder, so the pass stops instead.
|
||||||
pub(super) fn guard_remote_wipe<B, R>(
|
pub(super) fn guard_remote_wipe<B, R>(
|
||||||
baseline: &HashMap<String, B>,
|
baseline: &HashMap<String, B>,
|
||||||
remote: &HashMap<String, R>,
|
remote: &HashMap<String, R>,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
if !baseline.is_empty() && baseline.keys().all(|rel| !remote.contains_key(rel)) {
|
let missing = baseline
|
||||||
|
.keys()
|
||||||
|
.filter(|rel| !remote.contains_key(*rel))
|
||||||
|
.count();
|
||||||
|
if looks_like_a_wipe(missing, baseline.len()) {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"every one of the {} synced paths is missing on Proton Drive; refusing to \
|
"{missing} of the {} synced paths are missing on Proton Drive; refusing to \
|
||||||
delete them here. If they were deleted on purpose, remove the folder from sync; \
|
delete them here. If they were deleted on purpose, remove the folder from sync; \
|
||||||
to upload them again, sync the folder from scratch.",
|
to upload them again, sync the folder from scratch.",
|
||||||
baseline.len()
|
baseline.len()
|
||||||
@@ -816,7 +844,7 @@ mod file_plan_tests {
|
|||||||
/// An empty or failed remote listing must not read as "Drive deleted
|
/// An empty or failed remote listing must not read as "Drive deleted
|
||||||
/// everything" and delete the local copies.
|
/// everything" and delete the local copies.
|
||||||
#[test]
|
#[test]
|
||||||
fn the_remote_wipe_guard_blocks_only_a_total_disappearance() {
|
fn the_remote_wipe_guard_blocks_a_total_disappearance() {
|
||||||
let base = HashMap::from([("a".to_string(), ()), ("b".to_string(), ())]);
|
let base = HashMap::from([("a".to_string(), ()), ("b".to_string(), ())]);
|
||||||
let none: HashMap<String, RemoteItem> = HashMap::new();
|
let none: HashMap<String, RemoteItem> = HashMap::new();
|
||||||
assert!(guard_remote_wipe(&base, &none).is_err());
|
assert!(guard_remote_wipe(&base, &none).is_err());
|
||||||
@@ -826,6 +854,37 @@ mod file_plan_tests {
|
|||||||
assert!(guard_remote_wipe(&empty, &none).is_ok());
|
assert!(guard_remote_wipe(&empty, &none).is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// One path left of a large folder no longer clears either guard: most
|
||||||
|
/// of it gone at once is a lost tree, not a cleanup (B270).
|
||||||
|
#[test]
|
||||||
|
fn one_survivor_of_a_large_folder_does_not_clear_the_wipe_guards() {
|
||||||
|
let base: HashMap<String, ()> = (0..40).map(|n| (format!("f{n}.txt"), ())).collect();
|
||||||
|
let survivors = |n: usize| -> HashMap<String, ()> {
|
||||||
|
(0..n).map(|n| (format!("f{n}.txt"), ())).collect()
|
||||||
|
};
|
||||||
|
assert!(guard_local_wipe(&base, &survivors(1)).is_err());
|
||||||
|
assert!(guard_remote_wipe(&base, &survivors(1)).is_err());
|
||||||
|
// 36 of 40 gone is nine tenths: still refused.
|
||||||
|
assert!(guard_local_wipe(&base, &survivors(4)).is_err());
|
||||||
|
// 35 of 40 gone is under nine tenths: a pass may delete that much.
|
||||||
|
assert!(guard_local_wipe(&base, &survivors(5)).is_ok());
|
||||||
|
assert!(guard_remote_wipe(&base, &survivors(5)).is_ok());
|
||||||
|
let reason = guard_local_wipe(&base, &survivors(1)).unwrap_err();
|
||||||
|
assert!(reason.starts_with("39 of the 40 synced paths"), "{reason}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A small folder still loses most of its files to an ordinary cleanup, so
|
||||||
|
/// only a total loss stops it.
|
||||||
|
#[test]
|
||||||
|
fn a_small_folder_trips_the_wipe_guards_only_when_everything_is_gone() {
|
||||||
|
let base: HashMap<String, ()> = (0..19).map(|n| (format!("f{n}.txt"), ())).collect();
|
||||||
|
let one: HashMap<String, ()> = [("f0.txt".to_string(), ())].into_iter().collect();
|
||||||
|
assert!(guard_local_wipe(&base, &one).is_ok());
|
||||||
|
assert!(guard_remote_wipe(&base, &one).is_ok());
|
||||||
|
let none: HashMap<String, ()> = HashMap::new();
|
||||||
|
assert!(guard_local_wipe(&base, &none).is_err());
|
||||||
|
}
|
||||||
|
|
||||||
/// A node that failed to decrypt has no name, so everything a short
|
/// A node that failed to decrypt has no name, so everything a short
|
||||||
/// listing did not return is left out, and nothing else.
|
/// listing did not return is left out, and nothing else.
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -40,4 +40,4 @@ pangocairo = "0.22"
|
|||||||
# Map tiles for the opt-in online map. The same build proton-sdk already pulls in.
|
# Map tiles for the opt-in online map. The same build proton-sdk already pulls in.
|
||||||
reqwest = { version = "0.13", default-features = false, features = ["rustls", "webpki-roots"] }
|
reqwest = { version = "0.13", default-features = false, features = ["rustls", "webpki-roots"] }
|
||||||
# The system libintl (glibc) rather than a bundled gettext build.
|
# The system libintl (glibc) rather than a bundled gettext build.
|
||||||
gettext-rs = { version = "0.7", features = ["gettext-system"] }
|
gettext-rs = { version = "0.8", features = ["gettext-system"] }
|
||||||
@@ -125,6 +125,9 @@ struct Ui {
|
|||||||
/// Whether this run already asked for the mailbox password of a locked
|
/// Whether this run already asked for the mailbox password of a locked
|
||||||
/// account, so a refresh never re-opens a dialog the user cancelled.
|
/// account, so a refresh never re-opens a dialog the user cancelled.
|
||||||
unlock_offered: Cell<bool>,
|
unlock_offered: Cell<bool>,
|
||||||
|
/// The `since` of the run of mount failures whose "folder isn't empty"
|
||||||
|
/// dialog this run already showed, so a page reload never shows it again.
|
||||||
|
not_empty_offered: Cell<i64>,
|
||||||
/// Whether the last refresh saw a live mount daemon. Gates the unpin buttons
|
/// Whether the last refresh saw a live mount daemon. Gates the unpin buttons
|
||||||
/// (which need the daemon to evict + re-hydrate) and every mutating action.
|
/// (which need the daemon to evict + re-hydrate) and every mutating action.
|
||||||
mounted: RefCell<bool>,
|
mounted: RefCell<bool>,
|
||||||
@@ -403,6 +406,7 @@ fn build_window(app: &adw::Application) {
|
|||||||
opening: RefCell::new(HashSet::new()),
|
opening: RefCell::new(HashSet::new()),
|
||||||
session: RefCell::new(startup_session),
|
session: RefCell::new(startup_session),
|
||||||
unlock_offered: Cell::new(false),
|
unlock_offered: Cell::new(false),
|
||||||
|
not_empty_offered: Cell::new(0),
|
||||||
mounted: RefCell::new(false),
|
mounted: RefCell::new(false),
|
||||||
sidebar: sidebar_list.clone(),
|
sidebar: sidebar_list.clone(),
|
||||||
nav: split.clone(),
|
nav: split.clone(),
|
||||||
@@ -1807,6 +1811,23 @@ pub(crate) fn service_unreachable(
|
|||||||
.ok()
|
.ok()
|
||||||
.flatten();
|
.flatten();
|
||||||
match failure {
|
match failure {
|
||||||
|
Some(failure) if failure.not_empty.is_some() => {
|
||||||
|
let found = failure.not_empty.as_ref().expect("checked above");
|
||||||
|
status(
|
||||||
|
&ui,
|
||||||
|
"dialog-warning-symbolic",
|
||||||
|
&gettext("Can't open your Drive"),
|
||||||
|
// Translators: {path} is the folder My files is mounted at.
|
||||||
|
&gettext_f(
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive tries again on its own once the folder is empty. You can also choose another folder for My files in Preferences.",
|
||||||
|
&[("path", &found.path.display().to_string())],
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
if ui.not_empty_offered.replace(failure.since) != failure.since {
|
||||||
|
offer_not_empty(&ui, found);
|
||||||
|
}
|
||||||
|
}
|
||||||
Some(failure) => status(
|
Some(failure) => status(
|
||||||
&ui,
|
&ui,
|
||||||
"dialog-warning-symbolic",
|
"dialog-warning-symbolic",
|
||||||
@@ -1834,6 +1855,37 @@ pub(crate) fn service_unreachable(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Tell the user the daemon will not mount My files over a folder with files
|
||||||
|
/// in it (B277), and offer the two ways out: open the folder to move them, or
|
||||||
|
/// choose another one.
|
||||||
|
fn offer_not_empty(ui: &Rc<Ui>, found: &pdfs_core::mountpoint::NotEmpty) {
|
||||||
|
let path = found.path.display().to_string();
|
||||||
|
let dialog = adw::AlertDialog::builder()
|
||||||
|
.heading(gettext("Your Proton Drive Folder Isn't Empty"))
|
||||||
|
// Translators: {path} is the folder My files is mounted at; {n} is how
|
||||||
|
// many files and folders are already in it.
|
||||||
|
.body(ngettext_f(
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive does not open there. Move the item to another folder, or choose another folder for My files.",
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton Drive does not open there. Move the items to another folder, or choose another folder for My files.",
|
||||||
|
found.count as u64,
|
||||||
|
&[("path", &path)],
|
||||||
|
))
|
||||||
|
.build();
|
||||||
|
dialog.add_response("close", &gettext("Not Now"));
|
||||||
|
dialog.add_response("open", &gettext("Open Folder"));
|
||||||
|
dialog.add_response("choose", &gettext("Choose Another Folder…"));
|
||||||
|
dialog.set_response_appearance("choose", adw::ResponseAppearance::Suggested);
|
||||||
|
dialog.set_default_response(Some("choose"));
|
||||||
|
dialog.set_close_response("close");
|
||||||
|
let ui_response = ui.clone();
|
||||||
|
dialog.connect_response(None, move |_, response| match response {
|
||||||
|
"open" => open_path(&path),
|
||||||
|
"choose" => prompt_mountpoint(&ui_response),
|
||||||
|
_ => {}
|
||||||
|
});
|
||||||
|
dialog.present(ui_window(ui).as_ref());
|
||||||
|
}
|
||||||
|
|
||||||
/// How long a copy button shows its check after copying.
|
/// How long a copy button shows its check after copying.
|
||||||
const COPIED_FEEDBACK: Duration = Duration::from_millis(1500);
|
const COPIED_FEEDBACK: Duration = Duration::from_millis(1500);
|
||||||
|
|
||||||
|
|||||||
@@ -806,7 +806,8 @@ pub(crate) fn settings_request(ui: &Rc<Ui>, req: Request, done: String, failed:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Prompt for a new mountpoint folder, persist it to config, and offer to restart
|
/// Prompt for a new mountpoint folder, persist it to config, and offer to restart
|
||||||
/// the mount service so the daemon picks it up.
|
/// the mount service so the daemon picks it up. A folder with files in it is
|
||||||
|
/// refused: the mount would hide them (B277).
|
||||||
pub(crate) fn prompt_mountpoint(ui: &Rc<Ui>) {
|
pub(crate) fn prompt_mountpoint(ui: &Rc<Ui>) {
|
||||||
let win = ui_window(ui);
|
let win = ui_window(ui);
|
||||||
let dialog = gtk4::FileDialog::builder()
|
let dialog = gtk4::FileDialog::builder()
|
||||||
@@ -816,46 +817,89 @@ pub(crate) fn prompt_mountpoint(ui: &Rc<Ui>) {
|
|||||||
dialog.select_folder(win.as_ref(), gio::Cancellable::NONE, move |res| {
|
dialog.select_folder(win.as_ref(), gio::Cancellable::NONE, move |res| {
|
||||||
let Ok(folder) = res else { return };
|
let Ok(folder) = res else { return };
|
||||||
let Some(path) = folder.path() else { return };
|
let Some(path) = folder.path() else { return };
|
||||||
let path_str = path.display().to_string();
|
// The folder My files is mounted at lists Drive's files, not its own,
|
||||||
|
// so picking it again is not checked.
|
||||||
// Persist the choice to config so the next mount uses it.
|
if path == ui.dirs.resolved_mountpoint(&ui.dirs.load_config()) {
|
||||||
let mut config = ui.dirs.load_config();
|
use_mountpoint(&ui, &path);
|
||||||
config.mountpoint = Some(path_str.clone());
|
|
||||||
if let Err(e) = ui.dirs.save_config(&config) {
|
|
||||||
toast_error(&ui, &gettext("Couldn't save the folder"), &e.to_string());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ui.status.mountpoint_row.set_subtitle(&path_str);
|
let ui = ui.clone();
|
||||||
// The Locations page shows the same path as a row title. Any other page
|
glib::spawn_future_local(async move {
|
||||||
// reads it again on the next visit.
|
let checked = path.clone();
|
||||||
if ui.stack.visible_child_name().as_deref() == Some("locations") {
|
let found = gio::spawn_blocking(move || pdfs_core::mountpoint::not_empty(&checked))
|
||||||
load_locations(&ui);
|
.await
|
||||||
}
|
.unwrap_or_else(|_| Err(std::io::Error::other("the check did not finish")));
|
||||||
|
match found {
|
||||||
// The daemon only reads the mountpoint at mount time, so offer a restart.
|
Ok(None) => use_mountpoint(&ui, &path),
|
||||||
let confirm = adw::AlertDialog::builder()
|
Ok(Some(found)) => refuse_mountpoint(&ui, &found),
|
||||||
.heading(gettext("Restart Proton Drive?"))
|
Err(e) => toast_error(&ui, &gettext("Couldn't read the folder"), &e.to_string()),
|
||||||
// Translators: {path} is the folder the drive is mounted at.
|
|
||||||
.body(gettext_f(
|
|
||||||
"My files now appears in “{path}” after Proton Drive restarts.",
|
|
||||||
&[("path", &path_str)],
|
|
||||||
))
|
|
||||||
.build();
|
|
||||||
confirm.add_response("later", &gettext("Later"));
|
|
||||||
confirm.add_response("restart", &gettext("Restart Now"));
|
|
||||||
confirm.set_response_appearance("restart", adw::ResponseAppearance::Suggested);
|
|
||||||
confirm.set_default_response(Some("restart"));
|
|
||||||
confirm.set_close_response("later");
|
|
||||||
let ui_restart = ui.clone();
|
|
||||||
confirm.connect_response(None, move |_, resp| {
|
|
||||||
if resp == "restart" {
|
|
||||||
restart_service_then(&ui_restart, |_| {});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
confirm.present(ui_window(&ui).as_ref());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Explain why the folder `found` cannot hold My files.
|
||||||
|
fn refuse_mountpoint(ui: &Rc<Ui>, found: &pdfs_core::mountpoint::NotEmpty) {
|
||||||
|
let path = found.path.display().to_string();
|
||||||
|
let dialog = adw::AlertDialog::builder()
|
||||||
|
.heading(gettext("Choose an Empty Folder"))
|
||||||
|
// Translators: {path} is the folder the user picked; {n} is how many
|
||||||
|
// files and folders are already in it.
|
||||||
|
.body(ngettext_f(
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton Drive runs, and it would not be uploaded.",
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton Drive runs, and they would not be uploaded.",
|
||||||
|
found.count as u64,
|
||||||
|
&[("path", &path)],
|
||||||
|
))
|
||||||
|
.build();
|
||||||
|
dialog.add_response("close", &gettext("Close"));
|
||||||
|
dialog.set_default_response(Some("close"));
|
||||||
|
dialog.set_close_response("close");
|
||||||
|
dialog.present(ui_window(ui).as_ref());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Make `path` the folder My files is mounted at, and offer the restart that
|
||||||
|
/// moves it there.
|
||||||
|
fn use_mountpoint(ui: &Rc<Ui>, path: &std::path::Path) {
|
||||||
|
let path_str = path.display().to_string();
|
||||||
|
|
||||||
|
// Persist the choice to config so the next mount uses it.
|
||||||
|
let mut config = ui.dirs.load_config();
|
||||||
|
config.mountpoint = Some(path_str.clone());
|
||||||
|
if let Err(e) = ui.dirs.save_config(&config) {
|
||||||
|
toast_error(ui, &gettext("Couldn't save the folder"), &e.to_string());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ui.status.mountpoint_row.set_subtitle(&path_str);
|
||||||
|
// The Locations page shows the same path as a row title. Any other page
|
||||||
|
// reads it again on the next visit.
|
||||||
|
if ui.stack.visible_child_name().as_deref() == Some("locations") {
|
||||||
|
load_locations(ui);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The daemon only reads the mountpoint at mount time, so offer a restart.
|
||||||
|
let confirm = adw::AlertDialog::builder()
|
||||||
|
.heading(gettext("Restart Proton Drive?"))
|
||||||
|
// Translators: {path} is the folder the drive is mounted at.
|
||||||
|
.body(gettext_f(
|
||||||
|
"My files now appears in “{path}” after Proton Drive restarts.",
|
||||||
|
&[("path", &path_str)],
|
||||||
|
))
|
||||||
|
.build();
|
||||||
|
confirm.add_response("later", &gettext("Later"));
|
||||||
|
confirm.add_response("restart", &gettext("Restart Now"));
|
||||||
|
confirm.set_response_appearance("restart", adw::ResponseAppearance::Suggested);
|
||||||
|
confirm.set_default_response(Some("restart"));
|
||||||
|
confirm.set_close_response("later");
|
||||||
|
let ui_restart = ui.clone();
|
||||||
|
confirm.connect_response(None, move |_, resp| {
|
||||||
|
if resp == "restart" {
|
||||||
|
restart_service_then(&ui_restart, |_| {});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
confirm.present(ui_window(ui).as_ref());
|
||||||
|
}
|
||||||
|
|
||||||
/// Connect the Files/Photos "Retry" buttons (shown by [`browser_unreachable`] /
|
/// Connect the Files/Photos "Retry" buttons (shown by [`browser_unreachable`] /
|
||||||
/// [`gallery_unreachable`] when the mount is down): restart the systemd unit and
|
/// [`gallery_unreachable`] when the mount is down): restart the systemd unit and
|
||||||
/// reload the page.
|
/// reload the page.
|
||||||
@@ -1343,12 +1387,39 @@ pub(crate) fn paint_status(ui: &Rc<Ui>, status: Response) {
|
|||||||
/// read-out so the page doesn't flicker on a blip.
|
/// read-out so the page doesn't flicker on a blip.
|
||||||
pub(crate) fn paint_disconnected(ui: &Rc<Ui>) {
|
pub(crate) fn paint_disconnected(ui: &Rc<Ui>) {
|
||||||
set_mounted(ui, false);
|
set_mounted(ui, false);
|
||||||
paint_sync_status(ui, SyncState::Disconnected);
|
|
||||||
for r in ui.status.pin_rows.borrow().iter() {
|
for r in ui.status.pin_rows.borrow().iter() {
|
||||||
if let Some(b) = &r.unpin {
|
if let Some(b) = &r.unpin {
|
||||||
b.set_sensitive(false);
|
b.set_sensitive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// A running daemon whose mount fails on every try never answers either,
|
||||||
|
// and "isn't running" would be wrong for it (B263, B277). The pages read
|
||||||
|
// the same failure record.
|
||||||
|
let ui = ui.clone();
|
||||||
|
glib::spawn_future_local(async move {
|
||||||
|
let failure = if service_down().await {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
let state_dir = ui.dirs.state_dir();
|
||||||
|
gio::spawn_blocking(move || pdfs_core::mountfail::read(&state_dir))
|
||||||
|
.await
|
||||||
|
.ok()
|
||||||
|
.flatten()
|
||||||
|
};
|
||||||
|
// The daemon may have answered while this looked.
|
||||||
|
if *ui.mounted.borrow() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
paint_sync_status(
|
||||||
|
&ui,
|
||||||
|
match failure {
|
||||||
|
Some(failure) => SyncState::CannotOpen {
|
||||||
|
not_empty: failure.not_empty.is_some(),
|
||||||
|
},
|
||||||
|
None => SyncState::Disconnected,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// What the sidebar's status strip reports, most urgent first.
|
/// What the sidebar's status strip reports, most urgent first.
|
||||||
@@ -1392,6 +1463,11 @@ pub(crate) enum SyncState {
|
|||||||
},
|
},
|
||||||
/// No mount daemon answered: still starting, or the service is down.
|
/// No mount daemon answered: still starting, or the service is down.
|
||||||
Disconnected,
|
Disconnected,
|
||||||
|
/// The service runs, but its mount fails on every try. `not_empty` when
|
||||||
|
/// it refuses a folder that already has files in it.
|
||||||
|
CannotOpen {
|
||||||
|
not_empty: bool,
|
||||||
|
},
|
||||||
/// The daemon is running but didn't answer in time.
|
/// The daemon is running but didn't answer in time.
|
||||||
NotResponding,
|
NotResponding,
|
||||||
}
|
}
|
||||||
@@ -1400,7 +1476,10 @@ pub(crate) enum SyncState {
|
|||||||
/// one-line state, and a detail line.
|
/// one-line state, and a detail line.
|
||||||
fn paint_sync_status(ui: &Rc<Ui>, state: SyncState) {
|
fn paint_sync_status(ui: &Rc<Ui>, state: SyncState) {
|
||||||
let paused = matches!(state, SyncState::Paused { .. });
|
let paused = matches!(state, SyncState::Paused { .. });
|
||||||
let connected = !matches!(state, SyncState::Disconnected | SyncState::NotResponding);
|
let connected = !matches!(
|
||||||
|
state,
|
||||||
|
SyncState::Disconnected | SyncState::CannotOpen { .. } | SyncState::NotResponding
|
||||||
|
);
|
||||||
let expired = matches!(state, SyncState::SessionExpired { .. });
|
let expired = matches!(state, SyncState::SessionExpired { .. });
|
||||||
let outdated = matches!(state, SyncState::Outdated { .. });
|
let outdated = matches!(state, SyncState::Outdated { .. });
|
||||||
let (icon, class, title, detail) = match state {
|
let (icon, class, title, detail) = match state {
|
||||||
@@ -1492,6 +1571,16 @@ fn paint_sync_status(ui: &Rc<Ui>, state: SyncState) {
|
|||||||
gettext("Not connected"),
|
gettext("Not connected"),
|
||||||
Some(gettext("Proton Drive isn't running")),
|
Some(gettext("Proton Drive isn't running")),
|
||||||
),
|
),
|
||||||
|
SyncState::CannotOpen { not_empty } => (
|
||||||
|
"dialog-warning-symbolic",
|
||||||
|
Some("warning"),
|
||||||
|
gettext("Can't open your Drive"),
|
||||||
|
Some(if not_empty {
|
||||||
|
gettext("Your Proton Drive folder isn't empty")
|
||||||
|
} else {
|
||||||
|
gettext("Proton Drive keeps trying to start")
|
||||||
|
}),
|
||||||
|
),
|
||||||
SyncState::NotResponding => (
|
SyncState::NotResponding => (
|
||||||
"dialog-warning-symbolic",
|
"dialog-warning-symbolic",
|
||||||
Some("warning"),
|
Some("warning"),
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ pub(crate) fn init() {
|
|||||||
.ok()
|
.ok()
|
||||||
.and_then(|dirs| dirs.load_config().language)
|
.and_then(|dirs| dirs.load_config().language)
|
||||||
.filter(|code| LANGUAGES.iter().any(|(known, _)| known == code));
|
.filter(|code| LANGUAGES.iter().any(|(known, _)| known == code));
|
||||||
gettextrs::setlocale(LocaleCategory::LcAll, "");
|
// SAFETY: `init` runs at the top of `main`, before any other thread exists.
|
||||||
|
unsafe { gettextrs::setlocale(LocaleCategory::LcAll, "") };
|
||||||
if let Some(code) = language {
|
if let Some(code) = language {
|
||||||
apply_language(&code);
|
apply_language(&code);
|
||||||
}
|
}
|
||||||
@@ -97,14 +98,17 @@ pub(crate) fn country_name(code: &str) -> String {
|
|||||||
fn apply_language(code: &str) {
|
fn apply_language(code: &str) {
|
||||||
// SAFETY: `init` runs at the top of `main`, before any other thread exists.
|
// SAFETY: `init` runs at the top of `main`, before any other thread exists.
|
||||||
unsafe { std::env::set_var("LANGUAGE", code) };
|
unsafe { std::env::set_var("LANGUAGE", code) };
|
||||||
let current = gettextrs::setlocale(LocaleCategory::LcMessages, "")
|
// SAFETY: as above, still single-threaded.
|
||||||
|
let current = unsafe { gettextrs::setlocale(LocaleCategory::LcMessages, "") }
|
||||||
.map(|name| String::from_utf8_lossy(&name).into_owned())
|
.map(|name| String::from_utf8_lossy(&name).into_owned())
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
if !is_c_locale(¤t) {
|
if !is_c_locale(¤t) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for candidate in message_locales(code) {
|
for candidate in message_locales(code) {
|
||||||
if gettextrs::setlocale(LocaleCategory::LcMessages, candidate.as_str()).is_some() {
|
// SAFETY: as above, still single-threaded.
|
||||||
|
if unsafe { gettextrs::setlocale(LocaleCategory::LcMessages, candidate.as_str()) }.is_some()
|
||||||
|
{
|
||||||
// SAFETY: as above, still single-threaded.
|
// SAFETY: as above, still single-threaded.
|
||||||
unsafe { std::env::set_var("LC_MESSAGES", &candidate) };
|
unsafe { std::env::set_var("LC_MESSAGES", &candidate) };
|
||||||
return;
|
return;
|
||||||
|
|||||||
+191
-13
@@ -70,7 +70,6 @@ original wording.
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| [B275](#b275--on-a-slow-link-a-files-last-write-can-land-only-in-a-conflict-copy) | On a slow link, a file's last write can land only in a conflict copy | Cause not found; seen once in CI |
|
| [B275](#b275--on-a-slow-link-a-files-last-write-can-land-only-in-a-conflict-copy) | On a slow link, a file's last write can land only in a conflict copy | Cause not found; seen once in CI |
|
||||||
| [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 |
|
||||||
| [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 |
|
|
||||||
| [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 |
|
||||||
| [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 |
|
||||||
@@ -84,6 +83,7 @@ original wording.
|
|||||||
|
|
||||||
| Entry | Title | What is left |
|
| Entry | Title | What is left |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| [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 | A loss under nine in ten still goes through; no choice offered in the app |
|
||||||
| [B269](#b269--a-restore-that-skipped-every-folder-reports-success) | A restore that skipped every folder reports success | The app shows the result only in the activity feed; no offer to replace or reset the folder in the way |
|
| [B269](#b269--a-restore-that-skipped-every-folder-reports-success) | A restore that skipped every folder reports success | The app shows the result only in the activity feed; no offer to replace or reset the folder in the way |
|
||||||
| [B268](#b268--pdfs-diagnose-says-no-problems-found-while-sync-is-stuck) | `pdfs diagnose` says "No problems found" while sync is stuck | The sync engine's state is not checked |
|
| [B268](#b268--pdfs-diagnose-says-no-problems-found-while-sync-is-stuck) | `pdfs diagnose` says "No problems found" while sync is stuck | The sync engine's state is not checked |
|
||||||
| [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 |
|
||||||
@@ -109,17 +109,17 @@ a live account since.
|
|||||||
|
|
||||||
| Entry | Title |
|
| Entry | Title |
|
||||||
|---|---|
|
|---|---|
|
||||||
| [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 |
|
| [B278](#b278--sync-list-and-devices-list-show-the-last-sync-as-epoch-seconds) | `sync list` and `devices list` show the last sync as epoch seconds |
|
||||||
|
| [B277](#b277--my-files-mounted-over-a-folder-with-files-in-it-and-hid-them) | My files mounted over a folder with files in it, and hid them |
|
||||||
| [B274](#b274--opening-a-file-for-writing-fails-with-eio-while-its-queued-revision-lands) | Opening a file for writing fails with EIO while its queued revision lands |
|
| [B274](#b274--opening-a-file-for-writing-fails-with-eio-while-its-queued-revision-lands) | Opening a file for writing fails with EIO while its queued revision lands |
|
||||||
|
| [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 |
|
||||||
| [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 |
|
| [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 |
|
||||||
| [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" |
|
| [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" |
|
||||||
|
| [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 |
|
||||||
| [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" |
|
| [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 |
|
| [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 |
|
| [B257](#b257--deleting-a-new-file-while-it-is-open-can-drop-the-bytes-its-handle-reads) | Deleting a new file while it is open can drop the bytes its handle reads |
|
||||||
| [B256](#b256--pdfs-copy-right-after-a-save-copies-the-old-version) | `pdfs copy` right after a save copies the old version |
|
|
||||||
| [B255](#b255--a-synced-folder-whose-files-are-all-gone-here-is-stuck-for-good) | A synced folder whose files are all gone here is stuck for good |
|
|
||||||
| [B254](#b254--an-edit-in-the-same-second-as-a-new-upload-never-arrives) | An edit in the same second as a new upload never arrives |
|
| [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 |
|
||||||
| [B253](#b253--the-app-shows-the-sign-in-page-when-the-keyring-is-locked) | The app shows the sign-in page when the keyring is locked |
|
| [B253](#b253--the-app-shows-the-sign-in-page-when-the-keyring-is-locked) | The app shows the sign-in page when the keyring is locked |
|
||||||
| [B252](#b252--computers-sharing-a-device-overwrite-each-others-profile) | Computers sharing a device overwrite each other's profile |
|
| [B252](#b252--computers-sharing-a-device-overwrite-each-others-profile) | Computers sharing a device overwrite each other's profile |
|
||||||
@@ -294,6 +294,10 @@ a live account since.
|
|||||||
|
|
||||||
| Entry | Title |
|
| Entry | Title |
|
||||||
|---|---|
|
|---|---|
|
||||||
|
| [B276](#b276--a-stop-can-end-with-a-panic-in-a-thread-the-stop-never-waited-for) | A stop can end with a panic in a thread the stop never waited for |
|
||||||
|
| [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 |
|
||||||
|
| [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 |
|
||||||
| [B194](#b194--on-a-fresh-install-the-tray-exits-and-the-takeout-page-cannot-remember-its-archives) | On a fresh install the tray exits and the Takeout page cannot remember its archives |
|
| [B194](#b194--on-a-fresh-install-the-tray-exits-and-the-takeout-page-cannot-remember-its-archives) | On a fresh install the tray exits and the Takeout page cannot remember its archives |
|
||||||
| [B192](#b192--a-new-file-closed-empty-reaches-drive-only-half-a-minute-later) | A new file closed empty reaches Drive only half a minute later |
|
| [B192](#b192--a-new-file-closed-empty-reaches-drive-only-half-a-minute-later) | A new file closed empty reaches Drive only half a minute later |
|
||||||
| [B181](#b181--the-app-shows-a-queued-edit-kept-as-a-conflict-copy-in-english) | The app shows a queued edit kept as a conflict copy in English |
|
| [B181](#b181--the-app-shows-a-queued-edit-kept-as-a-conflict-copy-in-english) | The app shows a queued edit kept as a conflict copy in English |
|
||||||
@@ -377,6 +381,127 @@ a live account since.
|
|||||||
|
|
||||||
Newest first.
|
Newest first.
|
||||||
|
|
||||||
|
### B278 — `sync list` and `devices list` show the last sync as epoch seconds
|
||||||
|
|
||||||
|
**Status:** Fixed, not verified live
|
||||||
|
**Found:** 2026-11-02, issue #46. The reporter's `pdfs sync list` on 3.6.0 read
|
||||||
|
`synced: 1793570850`, a pass that finished at 2026-11-01 22:07 UTC.
|
||||||
|
**Where:** `cmd_sync` and `cmd_devices` in `crates/pdfs-cli/src/main.rs`
|
||||||
|
|
||||||
|
**Repro:** Let a synced folder finish one pass and run `pdfs sync list`, or `pdfs devices list`
|
||||||
|
on an account with a device that synced.
|
||||||
|
|
||||||
|
**Cause.** Both commands printed `last_sync` with `to_string()`. The activity feed already
|
||||||
|
formats the same epoch seconds with `format_epoch`.
|
||||||
|
|
||||||
|
**Fix.** Both columns go through `last_synced`, which prints `MM-DD HH:MM` in UTC like
|
||||||
|
`pdfs activity`, and `never` for 0 or no value. `--json` output is unchanged.
|
||||||
|
|
||||||
|
**Test:** `last_synced_shows_a_time_not_epoch_seconds` in `crates/pdfs-cli/src/main.rs`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B277 — My files mounted over a folder with files in it, and hid them
|
||||||
|
|
||||||
|
**Status:** Fixed, not verified live
|
||||||
|
**Found:** 2026-10-31, issue #67. The reporter chose an existing working folder as the My files
|
||||||
|
location. Its folders disappeared and looked deleted; they came back when the service stopped.
|
||||||
|
**Where:** `mount_with` and `check_mountpoint` in `crates/pdfs-fuse/src/mount.rs`;
|
||||||
|
`crates/pdfs-core/src/mountpoint.rs`; `prompt_mountpoint` in
|
||||||
|
`crates/pdfs-gui/src/app/pages/status.rs`
|
||||||
|
|
||||||
|
**Repro:** Stop the service. Put a file and a folder in `~/ProtonDrive`, or choose a folder with
|
||||||
|
files in it under Preferences → General → Location. Start the service. The files are hidden
|
||||||
|
under the mount: not uploaded, not in the queue, and back only once the service stops.
|
||||||
|
|
||||||
|
**Cause.** FUSE mounts over a folder that is not empty without a word, and nothing checked the
|
||||||
|
folder first. `mount_once` only created it. On-demand synced folders were already checked when
|
||||||
|
they were mounted again after a restart (`restore_ondemand_mounts`); My files was not. The
|
||||||
|
folder picker took any folder.
|
||||||
|
|
||||||
|
**Fix.**
|
||||||
|
|
||||||
|
- The daemon refuses to mount My files over a folder with anything in it, hidden files
|
||||||
|
included, before it fetches the root or starts a worker. A dead mount is cleared first, so it
|
||||||
|
can be listed. One of this client's own live mounts is left to the mount, which clears it as
|
||||||
|
before.
|
||||||
|
- The refusal is a mount failure like any other: it backs off and tries again, so emptying the
|
||||||
|
folder is enough. The failure record now carries the folder and its first entries
|
||||||
|
(`MountFailure::not_empty`), which an older reader ignores.
|
||||||
|
- The app explains it in the user's language, and offers to open the folder or choose another
|
||||||
|
one. The folder picker refuses a folder with files in it.
|
||||||
|
|
||||||
|
Merging an existing folder into My files is not done here. #67 proposes `pdfs sync attach` for
|
||||||
|
that, as a separate change.
|
||||||
|
|
||||||
|
**Test:** `a_folder_with_files_is_refused_and_named`, `a_hidden_file_alone_is_enough_to_refuse`,
|
||||||
|
`an_empty_or_missing_folder_takes_the_mount` in `crates/pdfs-core/src/mountpoint.rs`;
|
||||||
|
`a_failure_an_older_daemon_wrote_still_reads` in `mountfail.rs`;
|
||||||
|
`a_mount_refused_over_files_is_recorded_as_such` in `crates/pdfs-cli/src/main.rs`; the
|
||||||
|
simulation `a_mount_over_local_files_is_refused_and_leaves_them_alone`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B276 — A stop can end with a panic in a thread the stop never waited for
|
||||||
|
|
||||||
|
**Status:** Fixed, checked on 2026-11-01 by an account run of `scripts/fuse-acceptance.sh
|
||||||
|
--journal-check --durability`: eight daemon restarts, and no panic in the journal
|
||||||
|
**Found:** 2026-10-31, by an account run of `scripts/fuse-acceptance.sh --journal-check
|
||||||
|
--durability` against the audit branches. Every case passed, and the run still failed. During
|
||||||
|
the restart in the durability case on My files, the journal had three
|
||||||
|
`ERROR fuser::reply: Failed to send FUSE reply: No such file or directory (os error 2)` lines,
|
||||||
|
and after them a panic that the check did not report:
|
||||||
|
|
||||||
|
```
|
||||||
|
thread '<unnamed>' (1536340) panicked at .../tokio-1.53.1/src/runtime/time/entry.rs:539:9:
|
||||||
|
A Tokio 1.x context was found, but it is being shutdown.
|
||||||
|
```
|
||||||
|
|
||||||
|
The same panic is in the journal of a 3.6.0 stop on 2026-10-28, twice. B91 first saw it in a
|
||||||
|
meta worker.
|
||||||
|
|
||||||
|
**Where:** `mount_once` and `release_runtime` in `crates/pdfs-cli/src/main.rs`;
|
||||||
|
`JournalWatch` and `journal_problems` in `scripts/fuse-acceptance.py`.
|
||||||
|
|
||||||
|
**Cause.** A stop joins the drain workers, the sync engine and the FUSE worker pool, and then
|
||||||
|
`mount_once` shut the tokio runtime down. Other threads also use the runtime and are never
|
||||||
|
joined: a size lookup for a listing, a profile backup, a control request, a database vacuum.
|
||||||
|
A request still in progress when the stop began can start one of them. The thread id here is
|
||||||
|
nine below the next daemon's pid, so this thread started during the stop. Once the runtime is
|
||||||
|
shut down, that thread's next timer panics. Every call to Drive has a timer, because each one is
|
||||||
|
bounded.
|
||||||
|
|
||||||
|
The three `fuser::reply` lines are part of a correct stop. The stop aborts each mount's FUSE
|
||||||
|
connection so the unmount cannot hang. A request that was still running replies after that,
|
||||||
|
and the kernel answers a reply on an aborted connection with `ENOENT`.
|
||||||
|
|
||||||
|
The journal check matched only the `ERROR` token. A panic goes to stderr with no tracing level,
|
||||||
|
so the check did not see it.
|
||||||
|
|
||||||
|
**Fix.**
|
||||||
|
|
||||||
|
- On a stop, `release_runtime` leaves the runtime running for the process to end with, instead
|
||||||
|
of shutting it down. The process exits right after, so a thread the stop did not wait for
|
||||||
|
can finish its call or be ended by the exit, but it cannot panic. A mount that is about to
|
||||||
|
be tried again still shuts its runtime down with the 2 s limit from B165, because a new
|
||||||
|
runtime replaces it.
|
||||||
|
- The journal check counts `panicked at` lines.
|
||||||
|
- The journal check ignores the `ENOENT` reply error between the connection abort and the end
|
||||||
|
of that stop ("daemon stopping", or "control socket listening" for a mount that comes back).
|
||||||
|
At any other time the error still counts.
|
||||||
|
|
||||||
|
Making the bounded call helpers refuse new calls once the stop flag is set was rejected. The
|
||||||
|
stop sets that flag before it waits up to 10 s for the drain workers, so the refusal would cut
|
||||||
|
off the second half of an upload the stop is waiting for.
|
||||||
|
|
||||||
|
**Test:** `a_thread_left_running_at_a_stop_can_still_use_the_runtime` and
|
||||||
|
`a_mount_tried_again_shuts_its_runtime_down` in `crates/pdfs-cli/src/main.rs`. With the old
|
||||||
|
shutdown, the first one fails with the same panic at `entry.rs:539`. The new journal
|
||||||
|
filter was run on the journal of the run that found this: the three reply errors are no longer
|
||||||
|
counted, and the panic is.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### B275 — On a slow link, a file's last write can land only in a conflict copy
|
### B275 — On a slow link, a file's last write can land only in a conflict copy
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Open
|
||||||
@@ -471,7 +596,9 @@ folder list has now.
|
|||||||
**Status:** Fixed, not verified live
|
**Status:** Fixed, not verified live
|
||||||
**Found:** 2026-10-31, code audit after issue #46: a folder of about 19,900 items restored on a
|
**Found:** 2026-10-31, code audit after issue #46: a folder of about 19,900 items restored on a
|
||||||
second computer sat at `scanning…` with nothing downloaded, and the journal showed
|
second computer sat at `scanning…` with nothing downloaded, and the journal showed
|
||||||
`RequestTimeout (http 408)`.
|
`RequestTimeout (http 408)`. On 2026-11-01 the reporter's 3.6.0 journal showed the same pass
|
||||||
|
failing four times in four minutes with `reconcile failed id=1 error=enumerate …: HTTP transport
|
||||||
|
error`, after the laptop woke from sleep; a later pass finished.
|
||||||
**Where:** `walk_remote` in `crates/pdfs-fuse/src/sync.rs`
|
**Where:** `walk_remote` in `crates/pdfs-fuse/src/sync.rs`
|
||||||
|
|
||||||
**Repro:** Restore or add a mirror folder with tens of thousands of items on Drive, on a link
|
**Repro:** Restore or add a mirror folder with tens of thousands of items on Drive, on a link
|
||||||
@@ -497,7 +624,7 @@ nothing left to apply. The progress count inside one large folder is unchanged.
|
|||||||
|
|
||||||
### B270 — One file left in a mirror folder clears the wipe guard for all the others
|
### B270 — One file left in a mirror folder clears the wipe guard for all the others
|
||||||
|
|
||||||
**Status:** Open
|
**Status:** Partly fixed
|
||||||
**Found:** 2026-10-31, code audit after issue #46, whose reporter emptied a synced folder
|
**Found:** 2026-10-31, code audit after issue #46, whose reporter emptied a synced folder
|
||||||
several times.
|
several times.
|
||||||
**Where:** `guard_local_wipe` and `guard_remote_wipe` in `crates/pdfs-fuse/src/sync/planner.rs`
|
**Where:** `guard_local_wipe` and `guard_remote_wipe` in `crates/pdfs-fuse/src/sync/planner.rs`
|
||||||
@@ -511,8 +638,20 @@ that two computers sync, the other computer then deletes its copies too.
|
|||||||
path is enough to clear it, so it guards against an empty folder and nothing short of that.
|
path is enough to clear it, so it guards against an empty folder and nothing short of that.
|
||||||
The remote guard has the same shape.
|
The remote guard has the same shape.
|
||||||
|
|
||||||
**Fix.** Not done. Also refuse when most of a large baseline is missing at once, and leave the
|
**Fix.** Both guards also refuse a pass when nine in ten or more of the tracked paths of a
|
||||||
choice to the user: delete on the other side, or sync from scratch.
|
folder with at least 20 are missing at once (`looks_like_a_wipe`). The folder goes into error with
|
||||||
|
the count in its reason, `pdfs diagnose` reports it, and **Sync From Scratch…** brings the files
|
||||||
|
back. A smaller folder still stops only on a total loss, since an ordinary cleanup can delete most
|
||||||
|
of it.
|
||||||
|
|
||||||
|
**What is left.** A loss under nine in ten, such as a disk that is half there, still goes
|
||||||
|
through. The app does not offer the choice yet: confirm the deletions on the other side, or sync
|
||||||
|
from scratch.
|
||||||
|
|
||||||
|
**Test:** `one_survivor_of_a_large_folder_does_not_clear_the_wipe_guards`,
|
||||||
|
`a_small_folder_trips_the_wipe_guards_only_when_everything_is_gone` in
|
||||||
|
`crates/pdfs-fuse/src/sync/planner.rs`.
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -851,7 +990,8 @@ is why it helps.
|
|||||||
|
|
||||||
### B258 — `journalctl -p warning` shows nothing, whatever the daemon logged
|
### B258 — `journalctl -p warning` shows nothing, whatever the daemon logged
|
||||||
|
|
||||||
**Status:** Fixed, not verified live
|
**Status:** Fixed, checked on 2026-11-01 on a live account: after an acceptance run,
|
||||||
|
`journalctl --user -u proton-drive.service -p warning` listed all 76 `WARN` lines the run logged
|
||||||
**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`
|
||||||
@@ -876,9 +1016,46 @@ are off. A terminal that merely inherited `JOURNAL_STREAM` keeps the plain forma
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### B256 — `pdfs copy` right after a save copies the old version
|
### B257 — Deleting a new file while it is open can drop the bytes its handle reads
|
||||||
|
|
||||||
**Status:** Fixed, not verified live
|
**Status:** Fixed, not verified live
|
||||||
|
**Found:** 2026-10-27, the simulation
|
||||||
|
`a_file_deleted_offline_while_open_still_reads_and_takes_writes` failing once on CI with a cache
|
||||||
|
tag left behind, then on every run with a 50 ms pause added to `ContentCache::store_file`.
|
||||||
|
**Where:** `retire_create` in `crates/pdfs-fuse/src/drain.rs`; `queue_trash` and
|
||||||
|
`remove_replaced` in `crates/pdfs-fuse/src/lib.rs`; `trash_child` in
|
||||||
|
`crates/pdfs-fuse/src/filesystem.rs`; `ContentCache::reconcile` in `crates/pdfs-core/src/cache.rs`
|
||||||
|
|
||||||
|
**Repro:** Create a file in the mount, wait until `pdfs status` shows nothing queued, open it,
|
||||||
|
and delete it while the link is down. If the create was still landing, a partial write or a read
|
||||||
|
through the open handle fails with "Input/output error", and the cache can keep a tag with no
|
||||||
|
bytes until the next start.
|
||||||
|
|
||||||
|
**Cause.** A create that carries the file's bytes retires its op, then reads the node back,
|
||||||
|
caches the bytes and only then gives the tree the real uid. Nothing counted that window, so the
|
||||||
|
queue read empty while it ran, which B119 promises means the file reads without the network. A
|
||||||
|
delete in that window found the placeholder uid in the tree, and trashed the node by its real
|
||||||
|
uid. `queue_trash` asked the tree whether that uid was open, found no entry for it, and dropped
|
||||||
|
the cached bytes the open handle reads, which B186 had kept. When the cache store was running at
|
||||||
|
the same moment, its tag was written after the eviction, and nothing removed it.
|
||||||
|
|
||||||
|
**Fix.** The create's landing is counted like an upload's, from the op's retirement until the
|
||||||
|
tree has the real uid. The delete and the replace pass whether they found the file open, so
|
||||||
|
`queue_trash` no longer depends on the tree having the new uid. Opening the cache removes a tag
|
||||||
|
whose bytes are gone, which also covers a crash between an eviction's two removals.
|
||||||
|
|
||||||
|
**Test:** The simulation `a_new_file_deleted_while_open_as_its_create_lands_still_reads` holds a
|
||||||
|
create's landing and fails without the count. The simulation above passes again with the 50 ms
|
||||||
|
pause, since it now waits for `Daemon::drained`, which counts the landing. Unit test
|
||||||
|
`a_tag_without_its_blob_is_swept_at_open` in `crates/pdfs-core/src/cache.rs`. No test hits the
|
||||||
|
delete inside the cache store itself: the window is too short to hold from the simulation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B256 — `pdfs copy` right after a save copies the old version
|
||||||
|
|
||||||
|
**Status:** Fixed, checked on 2026-10-27 by the acceptance case "regression B256" on a live
|
||||||
|
account
|
||||||
**Found:** 2026-10-26, the simulation `a_pdfs_copy_copies_on_drive_and_waits_for_unsynced_changes`
|
**Found:** 2026-10-26, the simulation `a_pdfs_copy_copies_on_drive_and_waits_for_unsynced_changes`
|
||||||
failing on most runs. The feature was not released yet.
|
failing on most runs. The feature was not released yet.
|
||||||
**Where:** `release` in `crates/pdfs-fuse/src/filesystem.rs`; `copy_to` in
|
**Where:** `release` in `crates/pdfs-fuse/src/filesystem.rs`; `copy_to` in
|
||||||
@@ -902,7 +1079,8 @@ A move checks the same set.
|
|||||||
|
|
||||||
### B255 — A synced folder whose files are all gone here is stuck for good
|
### B255 — A synced folder whose files are all gone here is stuck for good
|
||||||
|
|
||||||
**Status:** Fixed, not verified live
|
**Status:** Fixed, checked on 2026-10-27 by the acceptance case "regression B255" on a live
|
||||||
|
account
|
||||||
**Found:** 2026-10-26, issue #46: a folder restored from another computer never downloaded.
|
**Found:** 2026-10-26, issue #46: a folder restored from another computer never downloaded.
|
||||||
**Where:** `push_pass` in `crates/pdfs-fuse/src/sync.rs`; `reset_sync_folder` in
|
**Where:** `push_pass` in `crates/pdfs-fuse/src/sync.rs`; `reset_sync_folder` in
|
||||||
`crates/pdfs-fuse/src/devices.rs`
|
`crates/pdfs-fuse/src/devices.rs`
|
||||||
|
|||||||
@@ -11,6 +11,101 @@ scratch (user data in `staging/` and `recovery/` is never touched by this).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [3.7.0] — 2026-11-02
|
||||||
|
|
||||||
|
Schema: **44**, unchanged.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **The app and the tray say why your Drive does not open** (B263, #40). When the service runs
|
||||||
|
but its mount keeps failing, the app shows **Can't open your Drive** with the last error and a
|
||||||
|
**Retry** button, instead of "Connecting…" for as long as it lasts. The tray says "can't open
|
||||||
|
your Drive", `pdfs diagnose` reports `mount: failing for …`, and
|
||||||
|
`systemctl --user status proton-drive` shows the error as the unit's status.
|
||||||
|
|
||||||
|
- **`pdfs diagnostics` shows what the sync engine is doing**, in a new `sync engine:` line:
|
||||||
|
idle, the folder it is on and for how long, or stopped. The journal warns when the engine has
|
||||||
|
stopped, or when a pass makes no progress for 15 minutes (B259, #53).
|
||||||
|
|
||||||
|
- **`pdfs diagnose` reports more problems** (B268, #53): writes that keep failing, data that has
|
||||||
|
waited a day or more to be sent, a paused sync, synced folders in error or conflict, and a
|
||||||
|
control socket file that nothing listens on.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- **A mount that keeps failing retries less often**, doubling from 5 seconds to every 2 minutes,
|
||||||
|
instead of every 5 seconds forever (B263).
|
||||||
|
|
||||||
|
- **`proton-sdk` and `proton-drive-rs` 0.10.1.** Dependencies are updated, among them
|
||||||
|
`rusqlite` 0.41 with a newer bundled SQLite.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **My files no longer opens over a folder that already has files in it** (#67, B277). The files
|
||||||
|
were hidden under it, not uploaded, and came back only when the service stopped, so they looked
|
||||||
|
deleted. The service now waits until the folder is empty, and the app says why and offers to
|
||||||
|
open the folder or choose another one. The folder picker in Preferences refuses a folder with
|
||||||
|
files in it. **After upgrading:** if your `~/ProtonDrive` has files underneath, for example
|
||||||
|
saved there while the service was stopped, My files does not open until you move them out.
|
||||||
|
|
||||||
|
- **The sidebar no longer says "Proton Drive isn't running" while the service is running**
|
||||||
|
(B263, B277). When the service runs but cannot open My files, for example because its folder
|
||||||
|
has files in it, the status at the bottom of the sidebar and on the Sync page now reads
|
||||||
|
"Can't open your Drive" with the reason, like the page itself.
|
||||||
|
|
||||||
|
- **A synced folder stops instead of deleting when nearly all of it vanishes at once** (B270).
|
||||||
|
The guard against a lost folder, such as a disk that is not mounted, stopped a pass only when
|
||||||
|
every synced file was gone. One file left over was enough to clear it, and the next pass
|
||||||
|
trashed everything else on Proton Drive, and on every other computer syncing the folder. A
|
||||||
|
folder with 20 or more files and folders now also stops when nine in ten of them are missing,
|
||||||
|
on this computer or on Proton Drive. **Sync From Scratch…** brings them back.
|
||||||
|
|
||||||
|
- **My Files opens for accounts whose address keys depend on an inactive account key** (B265,
|
||||||
|
#40). The mount retried `missing key` forever. Address key tokens are now decrypted with every
|
||||||
|
account key the password opens, and one address whose keys do not open no longer breaks the
|
||||||
|
others.
|
||||||
|
|
||||||
|
- **A new folder starts its first sync at once** (B260, #53), instead of waiting until every
|
||||||
|
other folder was walked again. A folder watch that failed partway is retried every 10 minutes
|
||||||
|
instead of never (B262), and a folder removed and added again keeps its watch (B272).
|
||||||
|
|
||||||
|
- **A crash in one folder's sync no longer stops all syncing until a restart** (B259, #53). That
|
||||||
|
folder shows a sync error, and the next pass tries it again.
|
||||||
|
|
||||||
|
- **A folder reads "waiting for first sync" until its first sync finishes**, instead of "up to
|
||||||
|
date", on **Sync → Folders** and on the Computers page (B261, #53).
|
||||||
|
|
||||||
|
- **A large first sync goes on when one folder on Proton Drive fails to list** (B271, #46). It
|
||||||
|
used to start over from nothing. The folder that failed is tried again on the next pass, and
|
||||||
|
nothing under it is deleted.
|
||||||
|
|
||||||
|
- **A restore that skipped folders is reported as failed**, with the reason for each, instead of
|
||||||
|
"restored 0 folder(s)" as a success (B269).
|
||||||
|
|
||||||
|
- **`pdfs sync list` and `pdfs devices list` show when a folder last synced as a time**, such as
|
||||||
|
`synced: 11-01 22:07` in UTC like `pdfs activity`, instead of seconds since 1970 (B278, #46).
|
||||||
|
|
||||||
|
- **"You're offline" no longer appears for a cache or database error** when pinning, unpinning,
|
||||||
|
searching or loading a folder (B266, #38). The app shows the actual error.
|
||||||
|
|
||||||
|
- **A save no longer fails with "Input/output error"** when the file is opened for writing just
|
||||||
|
as its last change finishes uploading (B274).
|
||||||
|
|
||||||
|
- **`journalctl --user -u proton-drive.service -p warning` shows the service's warnings and
|
||||||
|
errors** (B258, #53). Every line was stored at info level, so the filter showed nothing.
|
||||||
|
|
||||||
|
- **Stopping the service no longer ends with a panic in the journal** (B276).
|
||||||
|
|
||||||
|
- **A failed mount attempt stops the workers it started** (B264). They kept running beside the
|
||||||
|
next attempt and held the database.
|
||||||
|
|
||||||
|
- **A new file reads without the network as soon as `pdfs status` shows nothing queued**
|
||||||
|
(B257). A new file's upload counted as done before its bytes were cached, so a script that
|
||||||
|
waited for an empty queue and then went offline could not read it. A new file deleted while
|
||||||
|
open in that moment could also lose the bytes its open handle reads, which made a write or
|
||||||
|
read through that handle fail with "Input/output error". The cache also removes leftover
|
||||||
|
tags of evicted files when it opens.
|
||||||
|
|
||||||
## [3.6.0] — 2026-10-27
|
## [3.6.0] — 2026-10-27
|
||||||
|
|
||||||
Schema: **44**, unchanged.
|
Schema: **44**, unchanged.
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ fix it.
|
|||||||
|
|
||||||
| Key | Type | Default | In the app | Meaning |
|
| Key | Type | Default | In the app | Meaning |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `mountpoint` | path | `~/ProtonDrive` | General → Location | Where My files is mounted |
|
| `mountpoint` | path | `~/ProtonDrive` | General → Location | Where My files is mounted. Must be empty: the service does not mount over files |
|
||||||
| `cache_budget` | bytes | 5 GiB | Storage → Cache | Soft limit for cached content. `0` means unlimited. Available-offline files do not count against it |
|
| `cache_budget` | bytes | 5 GiB | Storage → Cache | Soft limit for cached content. `0` means unlimited. Available-offline files do not count against it |
|
||||||
| `upload_limit` | bytes/s | none | General → Network | Shared cap for all uploads. `0` or `null` means none |
|
| `upload_limit` | bytes/s | none | General → Network | Shared cap for all uploads. `0` or `null` means none |
|
||||||
| `download_limit` | bytes/s | none | General → Network | Shared cap for all downloads, reads from the mount included |
|
| `download_limit` | bytes/s | none | General → Network | Shared cap for all downloads, reads from the mount included |
|
||||||
|
|||||||
+3
-1
@@ -28,7 +28,9 @@ Yes. `~/ProtonDrive` is your Proton Drive, not a copy. A deleted file moves to t
|
|||||||
Trash, and you can restore it from **Trash** in the app or the web. See [Trash](FILES.md#trash).
|
Trash, and you can restore it from **Trash** in the app or the web. See [Trash](FILES.md#trash).
|
||||||
|
|
||||||
Stopping the service is not the same: once the service stops, `~/ProtonDrive` is just an empty
|
Stopping the service is not the same: once the service stops, `~/ProtonDrive` is just an empty
|
||||||
folder, and your files stay on Proton Drive.
|
folder, and your files stay on Proton Drive. Keep it empty: the service does not open My files
|
||||||
|
over a folder with files in it, because it would hide them. See
|
||||||
|
[My files does not open: the folder is not empty](TROUBLESHOOTING.md#my-files-does-not-open-the-folder-is-not-empty).
|
||||||
|
|
||||||
## Online only, available offline or synced folder: which do I want?
|
## Online only, available offline or synced folder: which do I want?
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -102,7 +102,7 @@ That URL follows `main`. To stay on releases, pin the input to a release tag ins
|
|||||||
the tag to update:
|
the tag to update:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
inputs.proton-drive-linux.url = "github:narrrl/proton-drive-linux/v3.6.0";
|
inputs.proton-drive-linux.url = "github:narrrl/proton-drive-linux/v3.7.0";
|
||||||
```
|
```
|
||||||
|
|
||||||
Each release tag is built with Nix before the release is published.
|
Each release tag is built with Nix before the release is published.
|
||||||
|
|||||||
+1
-1
@@ -246,7 +246,7 @@ remaining cases are skipped. Cases that make many round trips by design get twic
|
|||||||
| `--report-json PATH` | Every result and recorded observation. Attach it to a bug report |
|
| `--report-json PATH` | Every result and recorded observation. Attach it to a bug report |
|
||||||
| `--report-junit PATH` | JUnit XML. `known` is reported as skipped |
|
| `--report-junit PATH` | JUnit XML. `known` is reported as skipped |
|
||||||
| `--budget SECONDS` | Flags cases that pass but take longer (`PDFS_ACCEPTANCE_BUDGET`) |
|
| `--budget SECONDS` | Flags cases that pass but take longer (`PDFS_ACCEPTANCE_BUDGET`) |
|
||||||
| `--journal-check` | Fails the run if `proton-drive.service` logged an error during it, or the warnings "queued write conflicts; keeping a conflict copy" and "a fuse worker has held the same job for a long time" |
|
| `--journal-check` | Fails the run if `proton-drive.service` logged an error or a panic during it, or the warnings "queued write conflicts; keeping a conflict copy" and "a fuse worker has held the same job for a long time". A `Failed to send FUSE reply: No such file or directory` during a stop does not count: it is a request answering after the stop aborted its connection |
|
||||||
| `--durability` | Restarts the service mid-suite and checks the bytes written before it. Proves the queue survives a restart. `PDFS_ACCEPTANCE_UNIT` names another unit |
|
| `--durability` | Restarts the service mid-suite and checks the bytes written before it. Proves the queue survives a restart. `PDFS_ACCEPTANCE_UNIT` names another unit |
|
||||||
| `--fail-fast` | Stops at the first failure |
|
| `--fail-fast` | Stops at the first failure |
|
||||||
| `--list` | Prints every case and its targets |
|
| `--list` | Prints every case and its targets |
|
||||||
|
|||||||
+18
-3
@@ -141,6 +141,20 @@ fusermount3 -uz ~/ProtonDrive
|
|||||||
systemctl --user restart proton-drive.service
|
systemctl --user restart proton-drive.service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### My files does not open: the folder is not empty
|
||||||
|
|
||||||
|
The app says **Your Proton Drive Folder Isn't Empty**, and `pdfs diagnose` reports
|
||||||
|
`mount: failing … is not empty`. The folder chosen for My files has files in it, and the service
|
||||||
|
does not open My files over them: they would be hidden, and not uploaded, for as long as the
|
||||||
|
service runs.
|
||||||
|
|
||||||
|
Move the files out of the folder, or choose another folder in **Preferences → General →
|
||||||
|
Location**. The service tries again on its own and opens once the folder is empty. To put the
|
||||||
|
files on Proton Drive, copy them into My files once it is open.
|
||||||
|
|
||||||
|
Files saved into `~/ProtonDrive` while the service was stopped are in the same place: in the
|
||||||
|
local folder, not on Proton Drive.
|
||||||
|
|
||||||
### The folder is empty or missing
|
### The folder is empty or missing
|
||||||
|
|
||||||
Check that the service runs and is signed in, with `pdfs status`. The service waits for a stored
|
Check that the service runs and is signed in, with `pdfs status`. The service waits for a stored
|
||||||
@@ -234,9 +248,10 @@ Check that:
|
|||||||
|
|
||||||
### A synced folder stays in error and nothing downloads
|
### A synced folder stays in error and nothing downloads
|
||||||
|
|
||||||
The log says `every one of the N synced paths is missing locally; refusing to trash them on
|
The log says `M of the N synced paths are missing locally; refusing to trash them on Drive`.
|
||||||
Drive`. The folder synced before, and now none of its files are on this computer. The sync
|
The folder synced before, and now all or nearly all of its files are gone from this computer:
|
||||||
stops so that it does not delete them on Proton Drive too. Check that the folder is the right
|
everything, or nine in ten of a folder with 20 or more files and folders. The sync stops so that
|
||||||
|
it does not delete them on Proton Drive too. Check that the folder is the right
|
||||||
one and that its disk is mounted. To get the files back, choose **Sync From Scratch…** in the
|
one and that its disk is mounted. To get the files back, choose **Sync From Scratch…** in the
|
||||||
folder's menu on **Sync → Folders**, or run:
|
folder's menu on **Sync → Folders**, or run:
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@
|
|||||||
# Build + install: cd packaging && makepkg -fi
|
# Build + install: cd packaging && makepkg -fi
|
||||||
|
|
||||||
pkgname=proton-drive-linux
|
pkgname=proton-drive-linux
|
||||||
pkgver=3.6.0
|
pkgver=3.7.0
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
|
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
pkgbase = proton-drive-for-linux-bin
|
pkgbase = proton-drive-for-linux-bin
|
||||||
pkgdesc = Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (binaries)
|
pkgdesc = Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (binaries)
|
||||||
pkgver = 3.6.0
|
pkgver = 3.7.0
|
||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://proton-drive.narl.io
|
url = https://proton-drive.narl.io
|
||||||
install = proton-drive.install
|
install = proton-drive.install
|
||||||
@@ -22,21 +22,21 @@ pkgbase = proton-drive-for-linux-bin
|
|||||||
optdepends = xdg-utils: "Open folder" action in the tray menu
|
optdepends = xdg-utils: "Open folder" action in the tray menu
|
||||||
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
||||||
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
||||||
provides = proton-drive-for-linux=3.6.0
|
provides = proton-drive-for-linux=3.7.0
|
||||||
provides = proton-drive-linux=3.6.0
|
provides = proton-drive-linux=3.7.0
|
||||||
provides = pdfs
|
provides = pdfs
|
||||||
conflicts = proton-drive-linux
|
conflicts = proton-drive-linux
|
||||||
conflicts = proton-drive-for-linux
|
conflicts = proton-drive-for-linux
|
||||||
conflicts = proton-drive-for-linux-git
|
conflicts = proton-drive-for-linux-git
|
||||||
options = !strip
|
options = !strip
|
||||||
options = !debug
|
options = !debug
|
||||||
source = proton-drive-linux-3.6.0-x86_64.tar.gz::https://github.com/narrrl/proton-drive-linux/releases/download/v3.6.0/proton-drive-linux-3.6.0-x86_64.tar.gz
|
source = proton-drive-linux-3.7.0-x86_64.tar.gz::https://github.com/narrrl/proton-drive-linux/releases/download/v3.7.0/proton-drive-linux-3.7.0-x86_64.tar.gz
|
||||||
source = io.narl.proton-drive-linux-3.6.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.6.0/packaging/io.narl.proton-drive-linux.desktop
|
source = io.narl.proton-drive-linux-3.7.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.7.0/packaging/io.narl.proton-drive-linux.desktop
|
||||||
source = io.narl.proton-drive-linux-tray-3.6.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.6.0/packaging/io.narl.proton-drive-linux-tray.desktop
|
source = io.narl.proton-drive-linux-tray-3.7.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.7.0/packaging/io.narl.proton-drive-linux-tray.desktop
|
||||||
source = io.narl.proton-drive-linux-3.6.0.svg::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.6.0/packaging/io.narl.proton-drive-linux.svg
|
source = io.narl.proton-drive-linux-3.7.0.svg::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.7.0/packaging/io.narl.proton-drive-linux.svg
|
||||||
source = proton-drive-3.6.0.service::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.6.0/packaging/proton-drive.service
|
source = proton-drive-3.7.0.service::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.7.0/packaging/proton-drive.service
|
||||||
source = LICENSE-3.6.0::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.6.0/LICENSE
|
source = LICENSE-3.7.0::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.7.0/LICENSE
|
||||||
sha256sums = 8e9b76b0df238af1c8978c33b4c27c0c548e1faa81b368d0d271ed564d0a76c7
|
sha256sums = 3f0d16c19b10b30e3f181e3c7fb439f0a8c38980e8ab7a4a96ae6596b349787c
|
||||||
sha256sums = d190d6771fff0b975271fb62fd3fb0fa8bbf17d7278c10853c18557855b0c123
|
sha256sums = d190d6771fff0b975271fb62fd3fb0fa8bbf17d7278c10853c18557855b0c123
|
||||||
sha256sums = 1d95e250370220e3bb6aead6ce34d1d6cc759f42c4803b75f1667e78ff47c6c0
|
sha256sums = 1d95e250370220e3bb6aead6ce34d1d6cc759f42c4803b75f1667e78ff47c6c0
|
||||||
sha256sums = e598a93c2715c3a9fdc7fb937902083d4a1135e8fbdfe6fe7e37f0383ebbd828
|
sha256sums = e598a93c2715c3a9fdc7fb937902083d4a1135e8fbdfe6fe7e37f0383ebbd828
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Maintainer: Nils Pukropp <contact@narl.io>
|
# Maintainer: Nils Pukropp <contact@narl.io>
|
||||||
|
|
||||||
pkgname=proton-drive-for-linux-bin
|
pkgname=proton-drive-for-linux-bin
|
||||||
pkgver=3.6.0
|
pkgver=3.7.0
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (binaries)"
|
pkgdesc="Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (binaries)"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
@@ -36,7 +36,7 @@ source=("proton-drive-linux-$pkgver-x86_64.tar.gz::$_repo/releases/download/$_ta
|
|||||||
"io.narl.proton-drive-linux-$pkgver.svg::$_raw/packaging/io.narl.proton-drive-linux.svg"
|
"io.narl.proton-drive-linux-$pkgver.svg::$_raw/packaging/io.narl.proton-drive-linux.svg"
|
||||||
"proton-drive-$pkgver.service::$_raw/packaging/proton-drive.service"
|
"proton-drive-$pkgver.service::$_raw/packaging/proton-drive.service"
|
||||||
"LICENSE-$pkgver::$_raw/LICENSE")
|
"LICENSE-$pkgver::$_raw/LICENSE")
|
||||||
sha256sums=('8e9b76b0df238af1c8978c33b4c27c0c548e1faa81b368d0d271ed564d0a76c7'
|
sha256sums=('3f0d16c19b10b30e3f181e3c7fb439f0a8c38980e8ab7a4a96ae6596b349787c'
|
||||||
'd190d6771fff0b975271fb62fd3fb0fa8bbf17d7278c10853c18557855b0c123'
|
'd190d6771fff0b975271fb62fd3fb0fa8bbf17d7278c10853c18557855b0c123'
|
||||||
'1d95e250370220e3bb6aead6ce34d1d6cc759f42c4803b75f1667e78ff47c6c0'
|
'1d95e250370220e3bb6aead6ce34d1d6cc759f42c4803b75f1667e78ff47c6c0'
|
||||||
'e598a93c2715c3a9fdc7fb937902083d4a1135e8fbdfe6fe7e37f0383ebbd828'
|
'e598a93c2715c3a9fdc7fb937902083d4a1135e8fbdfe6fe7e37f0383ebbd828'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
pkgbase = proton-drive-for-linux-git
|
pkgbase = proton-drive-for-linux-git
|
||||||
pkgdesc = Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (git)
|
pkgdesc = Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (git)
|
||||||
pkgver = 3.6.0.r0.g2720191
|
pkgver = 3.7.0.r0.g7ab14bb
|
||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://proton-drive.narl.io
|
url = https://proton-drive.narl.io
|
||||||
install = proton-drive.install
|
install = proton-drive.install
|
||||||
@@ -25,8 +25,8 @@ pkgbase = proton-drive-for-linux-git
|
|||||||
optdepends = xdg-utils: "Open folder" action in the tray menu
|
optdepends = xdg-utils: "Open folder" action in the tray menu
|
||||||
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
||||||
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
||||||
provides = proton-drive-for-linux=3.6.0.r0.g2720191
|
provides = proton-drive-for-linux=3.7.0.r0.g7ab14bb
|
||||||
provides = proton-drive-linux=3.6.0.r0.g2720191
|
provides = proton-drive-linux=3.7.0.r0.g7ab14bb
|
||||||
provides = pdfs
|
provides = pdfs
|
||||||
conflicts = proton-drive-linux
|
conflicts = proton-drive-linux
|
||||||
conflicts = proton-drive-for-linux
|
conflicts = proton-drive-for-linux
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Maintainer: Nils Pukropp <contact@narl.io>
|
# Maintainer: Nils Pukropp <contact@narl.io>
|
||||||
|
|
||||||
pkgname=proton-drive-for-linux-git
|
pkgname=proton-drive-for-linux-git
|
||||||
pkgver=3.6.0.r0.g2720191
|
pkgver=3.7.0.r0.g7ab14bb
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (git)"
|
pkgdesc="Unofficial Proton Drive client: FUSE files-on-demand mount, CLI, GTK4 app, tray (git)"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
pkgbase = proton-drive-for-linux
|
pkgbase = proton-drive-for-linux
|
||||||
pkgdesc = Unofficial Proton Drive client: files-on-demand FUSE mount, CLI, GTK4 app and tray
|
pkgdesc = Unofficial Proton Drive client: files-on-demand FUSE mount, CLI, GTK4 app and tray
|
||||||
pkgver = 3.6.0
|
pkgver = 3.7.0
|
||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://proton-drive.narl.io
|
url = https://proton-drive.narl.io
|
||||||
install = proton-drive.install
|
install = proton-drive.install
|
||||||
@@ -24,13 +24,13 @@ pkgbase = proton-drive-for-linux
|
|||||||
optdepends = xdg-utils: "Open folder" action in the tray menu
|
optdepends = xdg-utils: "Open folder" action in the tray menu
|
||||||
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
optdepends = fzf: search-as-you-type launcher (pdfs-prompt --fzf)
|
||||||
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
optdepends = foot: terminal that hosts pdfs-prompt --fzf when started from a keybinding
|
||||||
provides = proton-drive-linux=3.6.0
|
provides = proton-drive-linux=3.7.0
|
||||||
provides = pdfs
|
provides = pdfs
|
||||||
conflicts = proton-drive-linux
|
conflicts = proton-drive-linux
|
||||||
conflicts = proton-drive-for-linux-bin
|
conflicts = proton-drive-for-linux-bin
|
||||||
conflicts = proton-drive-for-linux-git
|
conflicts = proton-drive-for-linux-git
|
||||||
options = !lto
|
options = !lto
|
||||||
source = proton-drive-for-linux-3.6.0.tar.gz::https://github.com/narrrl/proton-drive-linux/archive/refs/tags/v3.6.0.tar.gz
|
source = proton-drive-for-linux-3.7.0.tar.gz::https://github.com/narrrl/proton-drive-linux/archive/refs/tags/v3.7.0.tar.gz
|
||||||
sha256sums = d9b16b1027816a379d6a11c6396d779f751a6f94becaa16b17439420f561d13d
|
sha256sums = 542c534976e335cde6658de127e1eefffade9057d5332fd33457bc371c7a2737
|
||||||
|
|
||||||
pkgname = proton-drive-for-linux
|
pkgname = proton-drive-for-linux
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Maintainer: Nils Pukropp <contact@narl.io>
|
# Maintainer: Nils Pukropp <contact@narl.io>
|
||||||
|
|
||||||
pkgname=proton-drive-for-linux
|
pkgname=proton-drive-for-linux
|
||||||
pkgver=3.6.0
|
pkgver=3.7.0
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Unofficial Proton Drive client: files-on-demand FUSE mount, CLI, GTK4 app and tray"
|
pkgdesc="Unofficial Proton Drive client: files-on-demand FUSE mount, CLI, GTK4 app and tray"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
@@ -26,7 +26,7 @@ options=('!lto')
|
|||||||
# Stops the running daemon before removal, so the mount stops mirroring deletes.
|
# Stops the running daemon before removal, so the mount stops mirroring deletes.
|
||||||
install=proton-drive.install
|
install=proton-drive.install
|
||||||
source=("$pkgname-$pkgver.tar.gz::$_repo/archive/refs/tags/v$pkgver.tar.gz")
|
source=("$pkgname-$pkgver.tar.gz::$_repo/archive/refs/tags/v$pkgver.tar.gz")
|
||||||
sha256sums=('d9b16b1027816a379d6a11c6396d779f751a6f94becaa16b17439420f561d13d')
|
sha256sums=('542c534976e335cde6658de127e1eefffade9057d5332fd33457bc371c7a2737')
|
||||||
|
|
||||||
_srcname="proton-drive-linux-$pkgver"
|
_srcname="proton-drive-linux-$pkgver"
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# Match Arch PKGBUILD `!lto` — LTO has broken some GTK/Rust links in practice.
|
# Match Arch PKGBUILD `!lto` — LTO has broken some GTK/Rust links in practice.
|
||||||
%global _lto_cflags %{nil}
|
%global _lto_cflags %{nil}
|
||||||
|
|
||||||
%{!?version: %global version 3.6.0}
|
%{!?version: %global version 3.7.0}
|
||||||
%global forge https://github.com/narrrl/proton-drive-linux
|
%global forge https://github.com/narrrl/proton-drive-linux
|
||||||
# Files come from the checkout, or from the unpacked tag archive.
|
# Files come from the checkout, or from the unpacked tag archive.
|
||||||
%global src %{?git_dir}%{!?git_dir:.}
|
%global src %{?git_dir}%{!?git_dir:.}
|
||||||
|
|||||||
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d. %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A, %-d. %B %Y, %H:%M"
|
msgstr "%A, %-d. %B %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A, %-d. %B %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Meine Dateien"
|
msgstr "Meine Dateien"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Fotos"
|
msgstr "Fotos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Mit mir geteilt"
|
msgstr "Mit mir geteilt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Von mir geteilt"
|
msgstr "Von mir geteilt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Papierkorb"
|
msgstr "Papierkorb"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Synchronisierung"
|
msgstr "Synchronisierung"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Keine Internetverbindung"
|
msgstr "Keine Internetverbindung"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Das ist nicht mehr vorhanden"
|
msgstr "Das ist nicht mehr vorhanden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Kein Zugriff darauf"
|
msgstr "Kein Zugriff darauf"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Etwas anderes hat dies zuerst geändert"
|
msgstr "Etwas anderes hat dies zuerst geändert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Das Proton Drive ist voll"
|
msgstr "Das Proton Drive ist voll"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -149,23 +149,23 @@ msgstr ""
|
|||||||
"Inoffizieller Client – nicht mit Proton AG verbunden, von Proton AG "
|
"Inoffizieller Client – nicht mit Proton AG verbunden, von Proton AG "
|
||||||
"unterstützt oder befürwortet."
|
"unterstützt oder befürwortet."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Quellcode"
|
msgstr "Quellcode"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Nutzungsbedingungen von Proton"
|
msgstr "Nutzungsbedingungen von Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Datenschutzerklärung von Proton"
|
msgstr "Datenschutzerklärung von Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Haftungsausschluss"
|
msgstr "Haftungsausschluss"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -190,7 +190,7 @@ msgstr ""
|
|||||||
"bereitgestellt. Daten, deren Verlust nicht hinnehmbar ist, sollten "
|
"bereitgestellt. Daten, deren Verlust nicht hinnehmbar ist, sollten "
|
||||||
"zusätzlich gesichert werden."
|
"zusätzlich gesichert werden."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -200,7 +200,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a>, lizenziert unter <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, lizenziert unter <a href=\"https://creativecommons.org/"
|
||||||
"licenses/by/4.0/\">CC BY 4.0</a>."
|
"licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -210,7 +210,7 @@ msgstr ""
|
|||||||
"href=\"https://www.naturalearthdata.com/\">Natural Earth</a> gezeichnet, die "
|
"href=\"https://www.naturalearthdata.com/\">Natural Earth</a> gezeichnet, die "
|
||||||
"gemeinfrei sind."
|
"gemeinfrei sind."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -226,15 +226,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Mitwirkende an Proton Drive for Linux"
|
msgstr "Mitwirkende an Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Proton Drive beenden?"
|
msgstr "Proton Drive beenden?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -243,7 +243,7 @@ msgstr ""
|
|||||||
"eine Verbindung hergestellt wird. Proton Drive startet bei der nächsten "
|
"eine Verbindung hergestellt wird. Proton Drive startet bei der nächsten "
|
||||||
"Anmeldung erneut."
|
"Anmeldung erneut."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -278,30 +278,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Beenden"
|
msgstr "Beenden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Proton Drive konnte nicht beendet werden"
|
msgstr "Proton Drive konnte nicht beendet werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "Der Proton-Drive-Dienst wurde nicht beendet."
|
msgstr "Der Proton-Drive-Dienst wurde nicht beendet."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Allgemein"
|
msgstr "Allgemein"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Drive durchsuchen"
|
msgstr "Drive durchsuchen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -310,43 +310,43 @@ msgstr "Drive durchsuchen"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Aktualisieren"
|
msgstr "Aktualisieren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Tastenkürzel"
|
msgstr "Tastenkürzel"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Dateien"
|
msgstr "Dateien"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Neuer Ordner"
|
msgstr "Neuer Ordner"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Dateien hochladen"
|
msgstr "Dateien hochladen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Zurück / Vor"
|
msgstr "Zurück / Vor"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Übergeordneter Ordner"
|
msgstr "Übergeordneter Ordner"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Raster / Liste"
|
msgstr "Raster / Liste"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -355,7 +355,7 @@ msgstr "Raster / Liste"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Umbenennen"
|
msgstr "Umbenennen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -365,70 +365,84 @@ msgstr "Umbenennen"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "In den Papierkorb verschieben"
|
msgstr "In den Papierkorb verschieben"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Auswahl aufheben"
|
msgstr "Auswahl aufheben"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Größere Vorschaubilder"
|
msgstr "Größere Vorschaubilder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Kleinere Vorschaubilder"
|
msgstr "Kleinere Vorschaubilder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Vorschaubildgröße zurücksetzen"
|
msgstr "Vorschaubildgröße zurücksetzen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alles auswählen"
|
msgstr "Alles auswählen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Fotobetrachter"
|
msgstr "Fotobetrachter"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Vorheriges / nächstes Foto"
|
msgstr "Vorheriges / nächstes Foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Erstes / letztes Foto"
|
msgstr "Erstes / letztes Foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Details anzeigen"
|
msgstr "Details anzeigen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Vollbild"
|
msgstr "Vollbild"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Zum Umbenennen genau ein Element auswählen"
|
msgstr "Zum Umbenennen genau ein Element auswählen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Nicht verbunden"
|
msgstr "Nicht verbunden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "Der Proton-Drive-Dienst läuft nicht."
|
msgstr "Der Proton-Drive-Dienst läuft nicht."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Proton Drive kann nicht geöffnet werden"
|
msgstr "Proton Drive kann nicht geöffnet werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"„{path}“ enthält bereits Dateien, die „Meine Dateien“ verdecken würde. "
|
||||||
|
"Proton Drive versucht es selbstständig erneut, sobald der Ordner leer ist. "
|
||||||
|
"Sie können in den Einstellungen auch einen anderen Ordner für „Meine "
|
||||||
|
"Dateien“ wählen."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -437,17 +451,52 @@ msgstr ""
|
|||||||
"Der Proton-Drive-Dienst kann wiederholt nicht starten und versucht es "
|
"Der Proton-Drive-Dienst kann wiederholt nicht starten und versucht es "
|
||||||
"selbstständig erneut. Letzter Fehler: {error}"
|
"selbstständig erneut. Letzter Fehler: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Verbindung wird hergestellt …"
|
msgstr "Verbindung wird hergestellt …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Warten auf den Start des Proton-Drive-Dienstes."
|
msgstr "Warten auf den Start des Proton-Drive-Dienstes."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Ihr Proton-Drive-Ordner ist nicht leer"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"„{path}“ enthält bereits {n} Element. „Meine Dateien“ würde es verdecken, "
|
||||||
|
"daher öffnet Proton Drive dort nicht. Verschieben Sie das Element in einen "
|
||||||
|
"anderen Ordner, oder wählen Sie einen anderen Ordner für „Meine Dateien“."
|
||||||
|
msgstr[1] ""
|
||||||
|
"„{path}“ enthält bereits {n} Elemente. „Meine Dateien“ würde sie verdecken, "
|
||||||
|
"daher öffnet Proton Drive dort nicht. Verschieben Sie die Elemente in einen "
|
||||||
|
"anderen Ordner, oder wählen Sie einen anderen Ordner für „Meine Dateien“."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Nicht jetzt"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Ordner öffnen"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Anderen Ordner auswählen …"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -658,7 +707,7 @@ msgstr[0] "{n} Ordner erstellt"
|
|||||||
msgstr[1] "{n} Ordner erstellt"
|
msgstr[1] "{n} Ordner erstellt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1312,7 +1361,7 @@ msgstr "Alben konnten nicht geladen werden"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1582,7 +1631,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Offline verfügbar machen"
|
msgstr "Offline verfügbar machen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Nur online verfügbar machen"
|
msgstr "Nur online verfügbar machen"
|
||||||
|
|
||||||
@@ -2183,7 +2232,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Keine Dateien oder Ordner entsprechen dieser Suche."
|
msgstr "Keine Dateien oder Ordner entsprechen dieser Suche."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2932,7 +2981,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Synchronisierung bis zur Fortsetzung pausiert"
|
msgstr "Synchronisierung bis zur Fortsetzung pausiert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Synchronisierung pausiert"
|
msgstr "Synchronisierung pausiert"
|
||||||
|
|
||||||
@@ -4987,67 +5036,90 @@ msgstr "Die Sprache konnte nicht gespeichert werden"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Proton Drive neu starten, um die neue Sprache zu verwenden"
|
msgstr "Proton Drive neu starten, um die neue Sprache zu verwenden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Proton-Drive-Ordner auswählen"
|
msgstr "Proton-Drive-Ordner auswählen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Der Ordner konnte nicht gelesen werden"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Leeren Ordner auswählen"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"„{path}“ enthält bereits {n} Element. „Meine Dateien“ würde es verdecken, "
|
||||||
|
"solange Proton Drive läuft, und es würde nicht hochgeladen."
|
||||||
|
msgstr[1] ""
|
||||||
|
"„{path}“ enthält bereits {n} Elemente. „Meine Dateien“ würde sie verdecken, "
|
||||||
|
"solange Proton Drive läuft, und sie würden nicht hochgeladen."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Der Ordner konnte nicht gespeichert werden"
|
msgstr "Der Ordner konnte nicht gespeichert werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Proton Drive neu starten?"
|
msgstr "Proton Drive neu starten?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"„Meine Dateien“ erscheint nach dem Neustart von Proton Drive in „{path}“."
|
"„Meine Dateien“ erscheint nach dem Neustart von Proton Drive in „{path}“."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Später"
|
msgstr "Später"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Jetzt neu starten"
|
msgstr "Jetzt neu starten"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} belegt"
|
msgstr "{size} belegt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} von {total} belegt ({percent} %)"
|
msgstr "{used} von {total} belegt ({percent} %)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive verbunden"
|
msgstr "Proton Drive verbunden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Deine Dateien sind verfügbar."
|
msgstr "Deine Dateien sind verfügbar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive getrennt"
|
msgstr "Proton Drive getrennt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Der Proton-Drive-Dienst wurde beendet. Dateien sind erst nach seinem "
|
"Der Proton-Drive-Dienst wurde beendet. Dateien sind erst nach seinem "
|
||||||
"Neustart wieder verfügbar."
|
"Neustart wieder verfügbar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Synchronisierung abgeschlossen"
|
msgstr "Synchronisierung abgeschlossen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5056,28 +5128,28 @@ msgstr[1] "Übertragung von {n} Dateien abgeschlossen."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} – {done} von {total}"
|
msgstr "{title} – {done} von {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} – {detail} ({done} von {total})"
|
msgstr "{title} – {detail} ({done} von {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title} …"
|
msgstr "{title} …"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} – {detail} …"
|
msgstr "{title} – {detail} …"
|
||||||
@@ -5085,7 +5157,7 @@ msgstr "{title} – {detail} …"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} – {done} ({speed}/s)"
|
msgstr "{arrow} {name} – {done} ({speed}/s)"
|
||||||
@@ -5093,155 +5165,163 @@ msgstr "{arrow} {name} – {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} – {done} von {total} ({speed}/s)"
|
msgstr "{arrow} {name} – {done} von {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} zwischengespeichert – keine Grenze festgelegt"
|
msgstr "{used} zwischengespeichert – keine Grenze festgelegt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} von {limit} belegt"
|
msgstr "{used} von {limit} belegt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sitzung abgelaufen"
|
msgstr "Sitzung abgelaufen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · zum Synchronisieren erneut anmelden"
|
msgstr "{queued} · zum Synchronisieren erneut anmelden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Zum Synchronisieren erneut anmelden"
|
msgstr "Zum Synchronisieren erneut anmelden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Anmeldung nicht gespeichert"
|
msgstr "Anmeldung nicht gespeichert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Entsperren Sie Ihren Schlüsselbund, sonst werden Sie beim nächsten Neustart "
|
"Entsperren Sie Ihren Schlüsselbund, sonst werden Sie beim nächsten Neustart "
|
||||||
"abgemeldet"
|
"abgemeldet"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Neu starten, um das Update abzuschließen"
|
msgstr "Neu starten, um das Update abzuschließen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "Eine ältere Version von Proton Drive läuft noch"
|
msgstr "Eine ältere Version von Proton Drive läuft noch"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} läuft noch"
|
msgstr "Proton Drive {version} läuft noch"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · wird {time} fortgesetzt"
|
msgstr "{queued} · wird {time} fortgesetzt"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Wird {time} fortgesetzt"
|
msgstr "Wird {time} fortgesetzt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Bis zur manuellen Fortsetzung"
|
msgstr "Bis zur manuellen Fortsetzung"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} Änderung erfordert Aufmerksamkeit"
|
msgstr[0] "{n} Änderung erfordert Aufmerksamkeit"
|
||||||
msgstr[1] "{n} Änderungen erfordern Aufmerksamkeit"
|
msgstr[1] "{n} Änderungen erfordern Aufmerksamkeit"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Nur zwischengespeicherte Dateien"
|
msgstr "Nur zwischengespeicherte Dateien"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Wird synchronisiert"
|
msgstr "Wird synchronisiert"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Auf dem neuesten Stand"
|
msgstr "Auf dem neuesten Stand"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive läuft nicht"
|
msgstr "Proton Drive läuft nicht"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Ihr Proton-Drive-Ordner ist nicht leer"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive versucht immer wieder zu starten"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Reagiert nicht"
|
msgstr "Reagiert nicht"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive braucht zu lange für eine Antwort"
|
msgstr "Proton Drive braucht zu lange für eine Antwort"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "später"
|
msgstr "später"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "um %H:%M"
|
msgstr "um %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "am %a um %H:%M"
|
msgstr "am %a um %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "am %-d. %b"
|
msgstr "am %-d. %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Keine offline verfügbaren Dateien"
|
msgstr "Keine offline verfügbaren Dateien"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mit einem Rechtsklick auf eine Datei oder einen Ordner „Offline verfügbar“ "
|
"Mit einem Rechtsklick auf eine Datei oder einen Ordner „Offline verfügbar“ "
|
||||||
"auswählen."
|
"auswählen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Konnte nicht auf „nur online“ umgestellt werden"
|
msgstr "Konnte nicht auf „nur online“ umgestellt werden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Weniger anzeigen"
|
msgstr "Weniger anzeigen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6317,37 +6397,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Nur online"
|
msgstr "Nur online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} Upload in der Warteschlange"
|
msgstr[0] "{n} Upload in der Warteschlange"
|
||||||
msgstr[1] "{n} Uploads in der Warteschlange"
|
msgstr[1] "{n} Uploads in der Warteschlange"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} Änderung in der Warteschlange"
|
msgstr[0] "{n} Änderung in der Warteschlange"
|
||||||
msgstr[1] "{n} Änderungen in der Warteschlange"
|
msgstr[1] "{n} Änderungen in der Warteschlange"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} Upload"
|
msgstr[0] "{n} Upload"
|
||||||
msgstr[1] "{n} Uploads"
|
msgstr[1] "{n} Uploads"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads}, {changes} in der Warteschlange"
|
msgstr "{uploads}, {changes} in der Warteschlange"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6482,10 +6562,6 @@ msgstr "Proton Drive öffnen"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Proton Drive neu starten"
|
msgstr "Proton Drive neu starten"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Ordner öffnen"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Synchronisierung fortsetzen"
|
msgstr "Synchronisierung fortsetzen"
|
||||||
@@ -6819,9 +6895,6 @@ msgstr "Proton-Drive-Hintergrunddienst nicht erreichbar: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Freigabe beenden?"
|
#~ msgstr "Freigabe beenden?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Ordner für den Einhängepunkt auswählen"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Einhängepunkt konnte nicht gespeichert werden"
|
#~ msgstr "Einhängepunkt konnte nicht gespeichert werden"
|
||||||
|
|
||||||
|
|||||||
+205
-133
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A %-d %B %Y, %H:%M"
|
msgstr "%A %-d %B %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A %-d %B %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "My files"
|
msgstr "My files"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Photos"
|
msgstr "Photos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Shared with me"
|
msgstr "Shared with me"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Shared by me"
|
msgstr "Shared by me"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Computers"
|
msgstr "Computers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Trash"
|
msgstr "Trash"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Sync"
|
msgstr "Sync"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "You're offline"
|
msgstr "You're offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "That's not there any more"
|
msgstr "That's not there any more"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "You don't have access to that"
|
msgstr "You don't have access to that"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Something changed this first"
|
msgstr "Something changed this first"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Your Proton Drive is full"
|
msgstr "Your Proton Drive is full"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -149,23 +149,23 @@ msgstr ""
|
|||||||
"Unofficial client — not affiliated with, endorsed by, or supported by Proton "
|
"Unofficial client — not affiliated with, endorsed by, or supported by Proton "
|
||||||
"AG."
|
"AG."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Source Code"
|
msgstr "Source Code"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Proton Terms of Service"
|
msgstr "Proton Terms of Service"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Proton Privacy Policy"
|
msgstr "Proton Privacy Policy"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Disclaimer"
|
msgstr "Disclaimer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -187,7 +187,7 @@ msgstr ""
|
|||||||
"This software is provided “as is”, without warranty of any kind. Keep a copy "
|
"This software is provided “as is”, without warranty of any kind. Keep a copy "
|
||||||
"of any data you cannot afford to lose."
|
"of any data you cannot afford to lose."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -197,7 +197,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
"licenses/by/4.0/\">CC BY 4.0</a>."
|
"licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -207,7 +207,7 @@ msgstr ""
|
|||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
"public domain."
|
"public domain."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -223,15 +223,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Proton Drive for Linux contributors"
|
msgstr "Proton Drive for Linux contributors"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Stop Proton Drive?"
|
msgstr "Stop Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -239,7 +239,7 @@ msgstr ""
|
|||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -274,30 +274,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel"
|
msgstr "Cancel"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Stop"
|
msgstr "Stop"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Couldn't stop Proton Drive"
|
msgstr "Couldn't stop Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "The Proton Drive service did not stop."
|
msgstr "The Proton Drive service did not stop."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Search Drive"
|
msgstr "Search Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -306,43 +306,43 @@ msgstr "Search Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Refresh"
|
msgstr "Refresh"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Preferences"
|
msgstr "Preferences"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Keyboard shortcuts"
|
msgstr "Keyboard shortcuts"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Files"
|
msgstr "Files"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "New folder"
|
msgstr "New folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Upload files"
|
msgstr "Upload files"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Back / forward"
|
msgstr "Back / forward"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Parent folder"
|
msgstr "Parent folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Grid / list"
|
msgstr "Grid / list"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -351,7 +351,7 @@ msgstr "Grid / list"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Rename"
|
msgstr "Rename"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -361,70 +361,83 @@ msgstr "Rename"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Move to Trash"
|
msgstr "Move to Trash"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Clear the selection"
|
msgstr "Clear the selection"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Larger thumbnails"
|
msgstr "Larger thumbnails"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Smaller thumbnails"
|
msgstr "Smaller thumbnails"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Reset thumbnail size"
|
msgstr "Reset thumbnail size"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Select all"
|
msgstr "Select all"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Photo Viewer"
|
msgstr "Photo Viewer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Previous / next photo"
|
msgstr "Previous / next photo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "First / last photo"
|
msgstr "First / last photo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Show details"
|
msgstr "Show details"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Fullscreen"
|
msgstr "Fullscreen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Select a single item to rename it"
|
msgstr "Select a single item to rename it"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Not connected"
|
msgstr "Not connected"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "The Proton Drive service isn't running."
|
msgstr "The Proton Drive service isn't running."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Can't open your Drive"
|
msgstr "Can't open your Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -433,17 +446,52 @@ msgstr ""
|
|||||||
"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}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Connecting…"
|
msgstr "Connecting…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Waiting for the Proton Drive service to start."
|
msgstr "Waiting for the Proton Drive service to start."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Your Proton Drive Folder Isn't Empty"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Not Now"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Open Folder"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Choose Another Folder…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -650,7 +698,7 @@ msgstr[0] "Created {n} folder"
|
|||||||
msgstr[1] "Created {n} folders"
|
msgstr[1] "Created {n} folders"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1300,7 +1348,7 @@ msgstr "Couldn't load albums"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1570,7 +1618,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Make available offline"
|
msgstr "Make available offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Make online only"
|
msgstr "Make online only"
|
||||||
|
|
||||||
@@ -2162,7 +2210,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "No files or folders match that search."
|
msgstr "No files or folders match that search."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2893,7 +2941,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Sync paused until you resume"
|
msgstr "Sync paused until you resume"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Sync paused"
|
msgstr "Sync paused"
|
||||||
|
|
||||||
@@ -4890,65 +4938,88 @@ msgstr "Couldn't save the language"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Restart Proton Drive to use the new language"
|
msgstr "Restart Proton Drive to use the new language"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Choose Proton Drive Folder"
|
msgstr "Choose Proton Drive Folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Couldn't read the folder"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Choose an Empty Folder"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Couldn't save the folder"
|
msgstr "Couldn't save the folder"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Restart Proton Drive?"
|
msgstr "Restart Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr "My files now appears in “{path}” after Proton Drive restarts."
|
msgstr "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Later"
|
msgstr "Later"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Restart Now"
|
msgstr "Restart Now"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} used"
|
msgstr "{size} used"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} of {total} used ({percent}%)"
|
msgstr "{used} of {total} used ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive connected"
|
msgstr "Proton Drive connected"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Your files are available."
|
msgstr "Your files are available."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive disconnected"
|
msgstr "Proton Drive disconnected"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Sync complete"
|
msgstr "Sync complete"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -4957,28 +5028,28 @@ msgstr[1] "{n} files finished transferring."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} — {done} of {total}"
|
msgstr "{title} — {done} of {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} — {detail} ({done} of {total})"
|
msgstr "{title} — {detail} ({done} of {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} — {detail}…"
|
msgstr "{title} — {detail}…"
|
||||||
@@ -4986,7 +5057,7 @@ msgstr "{title} — {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
||||||
@@ -4994,151 +5065,159 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} cached — no limit set"
|
msgstr "{used} cached — no limit set"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} of {limit} used"
|
msgstr "{used} of {limit} used"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Session expired"
|
msgstr "Session expired"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · sign in again to sync"
|
msgstr "{queued} · sign in again to sync"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Sign in again to sync"
|
msgstr "Sign in again to sync"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Sign-in not saved"
|
msgstr "Sign-in not saved"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr "Unlock your keyring, or the next reboot signs you out"
|
msgstr "Unlock your keyring, or the next reboot signs you out"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Restart to finish updating"
|
msgstr "Restart to finish updating"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "An older version of Proton Drive is still running"
|
msgstr "An older version of Proton Drive is still running"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} is still running"
|
msgstr "Proton Drive {version} is still running"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · resumes {time}"
|
msgstr "{queued} · resumes {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Resumes {time}"
|
msgstr "Resumes {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Until you resume"
|
msgstr "Until you resume"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} change needs attention"
|
msgstr[0] "{n} change needs attention"
|
||||||
msgstr[1] "{n} changes need attention"
|
msgstr[1] "{n} changes need attention"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Cached files only"
|
msgstr "Cached files only"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Syncing"
|
msgstr "Syncing"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Up to date"
|
msgstr "Up to date"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive isn't running"
|
msgstr "Proton Drive isn't running"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Your Proton Drive folder isn't empty"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive keeps trying to start"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Not responding"
|
msgstr "Not responding"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive is taking too long to answer"
|
msgstr "Proton Drive is taking too long to answer"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "later"
|
msgstr "later"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "at %H:%M"
|
msgstr "at %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%e %b"
|
msgstr "%e %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "No files kept offline"
|
msgstr "No files kept offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr "Right-click a file or folder and choose “Available offline”."
|
msgstr "Right-click a file or folder and choose “Available offline”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Couldn't make it online only"
|
msgstr "Couldn't make it online only"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Show fewer"
|
msgstr "Show fewer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6192,37 +6271,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Online only"
|
msgstr "Online only"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} upload queued"
|
msgstr[0] "{n} upload queued"
|
||||||
msgstr[1] "{n} uploads queued"
|
msgstr[1] "{n} uploads queued"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} change queued"
|
msgstr[0] "{n} change queued"
|
||||||
msgstr[1] "{n} changes queued"
|
msgstr[1] "{n} changes queued"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} upload"
|
msgstr[0] "{n} upload"
|
||||||
msgstr[1] "{n} uploads"
|
msgstr[1] "{n} uploads"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads}, {changes} queued"
|
msgstr "{uploads}, {changes} queued"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6357,10 +6436,6 @@ msgstr "Open Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Restart Proton Drive"
|
msgstr "Restart Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Open Folder"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Resume Sync"
|
msgstr "Resume Sync"
|
||||||
@@ -6688,9 +6763,6 @@ msgstr "cannot reach the Proton Drive daemon: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Stop sharing?"
|
#~ msgstr "Stop sharing?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Choose mountpoint folder"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Couldn't save mountpoint"
|
#~ msgstr "Couldn't save mountpoint"
|
||||||
|
|
||||||
|
|||||||
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A, %-d de %B de %Y, %H:%M"
|
msgstr "%A, %-d de %B de %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A, %-d de %B de %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Mis archivos"
|
msgstr "Mis archivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Fotos"
|
msgstr "Fotos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Compartido conmigo"
|
msgstr "Compartido conmigo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Compartido por mí"
|
msgstr "Compartido por mí"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Equipos"
|
msgstr "Equipos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Papelera"
|
msgstr "Papelera"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Sincronización"
|
msgstr "Sincronización"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Está sin conexión"
|
msgstr "Está sin conexión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Eso ya no existe"
|
msgstr "Eso ya no existe"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "No tiene acceso a eso"
|
msgstr "No tiene acceso a eso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Algo lo cambió antes"
|
msgstr "Algo lo cambió antes"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Su Proton Drive está lleno"
|
msgstr "Su Proton Drive está lleno"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -149,23 +149,23 @@ msgstr ""
|
|||||||
"Cliente no oficial: no está afiliado a Proton AG, ni respaldado ni mantenido "
|
"Cliente no oficial: no está afiliado a Proton AG, ni respaldado ni mantenido "
|
||||||
"por esta."
|
"por esta."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Código fuente"
|
msgstr "Código fuente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Condiciones del servicio de Proton"
|
msgstr "Condiciones del servicio de Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Política de privacidad de Proton"
|
msgstr "Política de privacidad de Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Aviso legal"
|
msgstr "Aviso legal"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -188,7 +188,7 @@ msgstr ""
|
|||||||
"Este software se proporciona “tal cual”, sin garantía de ningún tipo. Guarde "
|
"Este software se proporciona “tal cual”, sin garantía de ningún tipo. Guarde "
|
||||||
"una copia de los datos que no pueda permitirse perder."
|
"una copia de los datos que no pueda permitirse perder."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -198,7 +198,7 @@ msgstr ""
|
|||||||
"www.geonames.org/\">GeoNames</a>, con licencia <a href=\"https://"
|
"www.geonames.org/\">GeoNames</a>, con licencia <a href=\"https://"
|
||||||
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -208,7 +208,7 @@ msgstr ""
|
|||||||
"fronteras de países de <a href=\"https://www.naturalearthdata.com/\">Natural "
|
"fronteras de países de <a href=\"https://www.naturalearthdata.com/\">Natural "
|
||||||
"Earth</a>, que son de dominio público."
|
"Earth</a>, que son de dominio público."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -224,15 +224,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Colaboradores de Proton Drive for Linux"
|
msgstr "Colaboradores de Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "¿Detener Proton Drive?"
|
msgstr "¿Detener Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -241,7 +241,7 @@ msgstr ""
|
|||||||
"a conectarse. Proton Drive se iniciará de nuevo en su próximo inicio de "
|
"a conectarse. Proton Drive se iniciará de nuevo en su próximo inicio de "
|
||||||
"sesión."
|
"sesión."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -276,30 +276,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Detener"
|
msgstr "Detener"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "No se pudo detener Proton Drive"
|
msgstr "No se pudo detener Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "El servicio de Proton Drive no se detuvo."
|
msgstr "El servicio de Proton Drive no se detuvo."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Buscar en Drive"
|
msgstr "Buscar en Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -308,43 +308,43 @@ msgstr "Buscar en Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Actualizar"
|
msgstr "Actualizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Preferencias"
|
msgstr "Preferencias"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Atajos del teclado"
|
msgstr "Atajos del teclado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Archivos"
|
msgstr "Archivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Carpeta nueva"
|
msgstr "Carpeta nueva"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Subir archivos"
|
msgstr "Subir archivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Atrás / adelante"
|
msgstr "Atrás / adelante"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Carpeta superior"
|
msgstr "Carpeta superior"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Cuadrícula / lista"
|
msgstr "Cuadrícula / lista"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -353,7 +353,7 @@ msgstr "Cuadrícula / lista"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renombrar"
|
msgstr "Renombrar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -363,70 +363,83 @@ msgstr "Renombrar"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Mover a la papelera"
|
msgstr "Mover a la papelera"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Anular la selección"
|
msgstr "Anular la selección"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Miniaturas más grandes"
|
msgstr "Miniaturas más grandes"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Miniaturas más pequeñas"
|
msgstr "Miniaturas más pequeñas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Restablecer el tamaño de las miniaturas"
|
msgstr "Restablecer el tamaño de las miniaturas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleccionar todo"
|
msgstr "Seleccionar todo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Visor de fotos"
|
msgstr "Visor de fotos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Foto anterior / siguiente"
|
msgstr "Foto anterior / siguiente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Primera / última foto"
|
msgstr "Primera / última foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Mostrar detalles"
|
msgstr "Mostrar detalles"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Pantalla completa"
|
msgstr "Pantalla completa"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Seleccione un único elemento para renombrarlo"
|
msgstr "Seleccione un único elemento para renombrarlo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Sin conexión"
|
msgstr "Sin conexión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "El servicio de Proton Drive no está en ejecución."
|
msgstr "El servicio de Proton Drive no está en ejecución."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "No se puede abrir Proton Drive"
|
msgstr "No se puede abrir Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"“{path}” ya contiene archivos, y Mis archivos los ocultaría. Proton Drive "
|
||||||
|
"vuelve a intentarlo por sí solo cuando la carpeta esté vacía. También puedes "
|
||||||
|
"elegir otra carpeta para Mis archivos en Preferencias."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -435,17 +448,52 @@ msgstr ""
|
|||||||
"El servicio de Proton Drive no consigue iniciarse y vuelve a intentarlo por "
|
"El servicio de Proton Drive no consigue iniciarse y vuelve a intentarlo por "
|
||||||
"sí solo. Último error: {error}"
|
"sí solo. Último error: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Conectando…"
|
msgstr "Conectando…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Esperando a que se inicie el servicio de Proton Drive."
|
msgstr "Esperando a que se inicie el servicio de Proton Drive."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Tu carpeta de Proton Drive no está vacía"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” ya contiene {n} elemento. Mis archivos lo ocultaría, así que Proton "
|
||||||
|
"Drive no se abre ahí. Mueve el elemento a otra carpeta o elige otra carpeta "
|
||||||
|
"para Mis archivos."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” ya contiene {n} elementos. Mis archivos los ocultaría, así que "
|
||||||
|
"Proton Drive no se abre ahí. Mueve los elementos a otra carpeta o elige otra "
|
||||||
|
"carpeta para Mis archivos."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Ahora no"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Abrir carpeta"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Elegir otra carpeta…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -655,7 +703,7 @@ msgstr[0] "Se creó {n} carpeta"
|
|||||||
msgstr[1] "Se crearon {n} carpetas"
|
msgstr[1] "Se crearon {n} carpetas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1306,7 +1354,7 @@ msgstr "No se pudieron cargar los álbumes"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1576,7 +1624,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Hacer disponible sin conexión"
|
msgstr "Hacer disponible sin conexión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Hacer solo en línea"
|
msgstr "Hacer solo en línea"
|
||||||
|
|
||||||
@@ -2174,7 +2222,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Ningún archivo ni carpeta coincide con esa búsqueda."
|
msgstr "Ningún archivo ni carpeta coincide con esa búsqueda."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2915,7 +2963,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Sincronización en pausa hasta que la reanude"
|
msgstr "Sincronización en pausa hasta que la reanude"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Sincronización en pausa"
|
msgstr "Sincronización en pausa"
|
||||||
|
|
||||||
@@ -4948,66 +4996,89 @@ msgstr "No se pudo guardar el idioma"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Reinicie Proton Drive para usar el idioma nuevo"
|
msgstr "Reinicie Proton Drive para usar el idioma nuevo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Elegir la carpeta de Proton Drive"
|
msgstr "Elegir la carpeta de Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "No se pudo leer la carpeta"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Elige una carpeta vacía"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” ya contiene {n} elemento. Mis archivos lo ocultaría mientras Proton "
|
||||||
|
"Drive esté en marcha, y no se subiría."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” ya contiene {n} elementos. Mis archivos los ocultaría mientras "
|
||||||
|
"Proton Drive esté en marcha, y no se subirían."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "No se pudo guardar la carpeta"
|
msgstr "No se pudo guardar la carpeta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "¿Reiniciar Proton Drive?"
|
msgstr "¿Reiniciar Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr "Mis archivos aparecerá en “{path}” cuando se reinicie Proton Drive."
|
msgstr "Mis archivos aparecerá en “{path}” cuando se reinicie Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Más tarde"
|
msgstr "Más tarde"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Reiniciar ahora"
|
msgstr "Reiniciar ahora"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} usados"
|
msgstr "{size} usados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} de {total} usados ({percent}%)"
|
msgstr "{used} de {total} usados ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive conectado"
|
msgstr "Proton Drive conectado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Sus archivos están disponibles."
|
msgstr "Sus archivos están disponibles."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive desconectado"
|
msgstr "Proton Drive desconectado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El servicio de Proton Drive se detuvo. Los archivos no estarán disponibles "
|
"El servicio de Proton Drive se detuvo. Los archivos no estarán disponibles "
|
||||||
"hasta que se reinicie."
|
"hasta que se reinicie."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Sincronización completada"
|
msgstr "Sincronización completada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5016,28 +5087,28 @@ msgstr[1] "{n} archivos terminaron de transferirse."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title}: {done} de {total}"
|
msgstr "{title}: {done} de {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title}: {detail} ({done} de {total})"
|
msgstr "{title}: {detail} ({done} de {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title}: {detail}…"
|
msgstr "{title}: {detail}…"
|
||||||
@@ -5045,7 +5116,7 @@ msgstr "{title}: {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name}: {done} ({speed}/s)"
|
msgstr "{arrow} {name}: {done} ({speed}/s)"
|
||||||
@@ -5053,154 +5124,162 @@ msgstr "{arrow} {name}: {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name}: {done} de {total} ({speed}/s)"
|
msgstr "{arrow} {name}: {done} de {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} en caché — sin límite"
|
msgstr "{used} en caché — sin límite"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} de {limit} usados"
|
msgstr "{used} de {limit} usados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sesión caducada"
|
msgstr "Sesión caducada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · vuelva a iniciar sesión para sincronizar"
|
msgstr "{queued} · vuelva a iniciar sesión para sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Vuelva a iniciar sesión para sincronizar"
|
msgstr "Vuelva a iniciar sesión para sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Inicio de sesión no guardado"
|
msgstr "Inicio de sesión no guardado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Desbloquee el depósito de claves o el próximo reinicio cerrará su sesión"
|
"Desbloquee el depósito de claves o el próximo reinicio cerrará su sesión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Reinicie para terminar la actualización"
|
msgstr "Reinicie para terminar la actualización"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "Todavía se está ejecutando una versión anterior de Proton Drive"
|
msgstr "Todavía se está ejecutando una versión anterior de Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} todavía se está ejecutando"
|
msgstr "Proton Drive {version} todavía se está ejecutando"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · se reanuda {time}"
|
msgstr "{queued} · se reanuda {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Se reanuda {time}"
|
msgstr "Se reanuda {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Hasta que la reanude"
|
msgstr "Hasta que la reanude"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} cambio requiere atención"
|
msgstr[0] "{n} cambio requiere atención"
|
||||||
msgstr[1] "{n} cambios requieren atención"
|
msgstr[1] "{n} cambios requieren atención"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Sin conexión"
|
msgstr "Sin conexión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Solo archivos en caché"
|
msgstr "Solo archivos en caché"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Sincronizando"
|
msgstr "Sincronizando"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Actualizado"
|
msgstr "Actualizado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive no está en ejecución"
|
msgstr "Proton Drive no está en ejecución"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Tu carpeta de Proton Drive no está vacía"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive sigue intentando iniciarse"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "No responde"
|
msgstr "No responde"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive está tardando demasiado en responder"
|
msgstr "Proton Drive está tardando demasiado en responder"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "más tarde"
|
msgstr "más tarde"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "a las %H:%M"
|
msgstr "a las %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%-d %b"
|
msgstr "%-d %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "No hay archivos disponibles sin conexión"
|
msgstr "No hay archivos disponibles sin conexión"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pulse con el botón derecho en un archivo o una carpeta y elija “Disponible "
|
"Pulse con el botón derecho en un archivo o una carpeta y elija “Disponible "
|
||||||
"sin conexión”."
|
"sin conexión”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "No se pudo hacer solo en línea"
|
msgstr "No se pudo hacer solo en línea"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Mostrar menos"
|
msgstr "Mostrar menos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6273,37 +6352,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Solo en línea"
|
msgstr "Solo en línea"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} subida en cola"
|
msgstr[0] "{n} subida en cola"
|
||||||
msgstr[1] "{n} subidas en cola"
|
msgstr[1] "{n} subidas en cola"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} cambio en cola"
|
msgstr[0] "{n} cambio en cola"
|
||||||
msgstr[1] "{n} cambios en cola"
|
msgstr[1] "{n} cambios en cola"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} subida"
|
msgstr[0] "{n} subida"
|
||||||
msgstr[1] "{n} subidas"
|
msgstr[1] "{n} subidas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads} y {changes} en cola"
|
msgstr "{uploads} y {changes} en cola"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6438,10 +6517,6 @@ msgstr "Abrir Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Reiniciar Proton Drive"
|
msgstr "Reiniciar Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Abrir carpeta"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Reanudar la sincronización"
|
msgstr "Reanudar la sincronización"
|
||||||
@@ -6774,9 +6849,6 @@ msgstr "no se puede contactar con el demonio de Proton Drive: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "¿Dejar de compartir?"
|
#~ msgstr "¿Dejar de compartir?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Elegir la carpeta del punto de montaje"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "No se pudo guardar el punto de montaje"
|
#~ msgstr "No se pudo guardar el punto de montaje"
|
||||||
|
|
||||||
|
|||||||
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A %-d %B %Y à %H:%M"
|
msgstr "%A %-d %B %Y à %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A %-d %B %Y à %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Mes fichiers"
|
msgstr "Mes fichiers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Photos"
|
msgstr "Photos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Partagés avec moi"
|
msgstr "Partagés avec moi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Partagés par moi"
|
msgstr "Partagés par moi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Ordinateurs"
|
msgstr "Ordinateurs"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Corbeille"
|
msgstr "Corbeille"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Synchronisation"
|
msgstr "Synchronisation"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what} : {detail}"
|
msgstr "{what} : {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Vous êtes hors ligne"
|
msgstr "Vous êtes hors ligne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Cet élément n’existe plus"
|
msgstr "Cet élément n’existe plus"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Vous n’avez pas accès à cet élément"
|
msgstr "Vous n’avez pas accès à cet élément"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Quelque chose l’a modifié entre-temps"
|
msgstr "Quelque chose l’a modifié entre-temps"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Votre Proton Drive est plein"
|
msgstr "Votre Proton Drive est plein"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -149,23 +149,23 @@ msgstr ""
|
|||||||
"Client non officiel — non affilié à Proton AG, ni approuvé ni pris en charge "
|
"Client non officiel — non affilié à Proton AG, ni approuvé ni pris en charge "
|
||||||
"par Proton AG."
|
"par Proton AG."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Code source"
|
msgstr "Code source"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Conditions d’utilisation de Proton"
|
msgstr "Conditions d’utilisation de Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Politique de confidentialité de Proton"
|
msgstr "Politique de confidentialité de Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Avertissement"
|
msgstr "Avertissement"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -189,7 +189,7 @@ msgstr ""
|
|||||||
"une copie de toutes les données que vous ne pouvez pas vous permettre de "
|
"une copie de toutes les données que vous ne pouvez pas vous permettre de "
|
||||||
"perdre."
|
"perdre."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -199,7 +199,7 @@ msgstr ""
|
|||||||
"www.geonames.org/\">GeoNames</a>, sous licence <a href=\"https://"
|
"www.geonames.org/\">GeoNames</a>, sous licence <a href=\"https://"
|
||||||
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -209,7 +209,7 @@ msgstr ""
|
|||||||
"frontières des pays de <a href=\"https://www.naturalearthdata.com/\">Natural "
|
"frontières des pays de <a href=\"https://www.naturalearthdata.com/\">Natural "
|
||||||
"Earth</a>, qui sont dans le domaine public."
|
"Earth</a>, qui sont dans le domaine public."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -226,15 +226,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Les contributeurs de Proton Drive for Linux"
|
msgstr "Les contributeurs de Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Arrêter Proton Drive ?"
|
msgstr "Arrêter Proton Drive ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -243,7 +243,7 @@ msgstr ""
|
|||||||
"vous reconnectez pas. Proton Drive redémarrera à votre prochaine ouverture "
|
"vous reconnectez pas. Proton Drive redémarrera à votre prochaine ouverture "
|
||||||
"de session."
|
"de session."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -278,30 +278,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Arrêter"
|
msgstr "Arrêter"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Impossible d’arrêter Proton Drive"
|
msgstr "Impossible d’arrêter Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "Le service Proton Drive ne s’est pas arrêté."
|
msgstr "Le service Proton Drive ne s’est pas arrêté."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Général"
|
msgstr "Général"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Rechercher dans Drive"
|
msgstr "Rechercher dans Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -310,43 +310,43 @@ msgstr "Rechercher dans Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Actualiser"
|
msgstr "Actualiser"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Préférences"
|
msgstr "Préférences"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Raccourcis clavier"
|
msgstr "Raccourcis clavier"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Fichiers"
|
msgstr "Fichiers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Nouveau dossier"
|
msgstr "Nouveau dossier"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Téléverser des fichiers"
|
msgstr "Téléverser des fichiers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Précédent / suivant"
|
msgstr "Précédent / suivant"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Dossier parent"
|
msgstr "Dossier parent"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Grille / liste"
|
msgstr "Grille / liste"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -355,7 +355,7 @@ msgstr "Grille / liste"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renommer"
|
msgstr "Renommer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -365,70 +365,83 @@ msgstr "Renommer"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Mettre à la corbeille"
|
msgstr "Mettre à la corbeille"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Effacer la sélection"
|
msgstr "Effacer la sélection"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Miniatures plus grandes"
|
msgstr "Miniatures plus grandes"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Miniatures plus petites"
|
msgstr "Miniatures plus petites"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Réinitialiser la taille des miniatures"
|
msgstr "Réinitialiser la taille des miniatures"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Tout sélectionner"
|
msgstr "Tout sélectionner"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Visionneuse de photos"
|
msgstr "Visionneuse de photos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Photo précédente / suivante"
|
msgstr "Photo précédente / suivante"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Première / dernière photo"
|
msgstr "Première / dernière photo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Afficher les détails"
|
msgstr "Afficher les détails"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Plein écran"
|
msgstr "Plein écran"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Sélectionnez un seul élément pour le renommer"
|
msgstr "Sélectionnez un seul élément pour le renommer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Non connecté"
|
msgstr "Non connecté"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "Le service Proton Drive n’est pas en cours d’exécution."
|
msgstr "Le service Proton Drive n’est pas en cours d’exécution."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Impossible d’ouvrir Proton Drive"
|
msgstr "Impossible d’ouvrir Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"« {path} » contient déjà des fichiers, que « Mes fichiers » masquerait. "
|
||||||
|
"Proton Drive réessaie de lui-même dès que le dossier est vide. Vous pouvez "
|
||||||
|
"aussi choisir un autre dossier pour « Mes fichiers » dans les Préférences."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -437,17 +450,52 @@ msgstr ""
|
|||||||
"Le service Proton Drive n’arrive pas à démarrer et réessaie de lui-même. "
|
"Le service Proton Drive n’arrive pas à démarrer et réessaie de lui-même. "
|
||||||
"Dernière erreur : {error}"
|
"Dernière erreur : {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Connexion…"
|
msgstr "Connexion…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "En attente du démarrage du service Proton Drive."
|
msgstr "En attente du démarrage du service Proton Drive."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Votre dossier Proton Drive n’est pas vide"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"« {path} » contient déjà {n} élément. « Mes fichiers » le masquerait, c’est "
|
||||||
|
"pourquoi Proton Drive ne s’y ouvre pas. Déplacez l’élément dans un autre "
|
||||||
|
"dossier, ou choisissez un autre dossier pour « Mes fichiers »."
|
||||||
|
msgstr[1] ""
|
||||||
|
"« {path} » contient déjà {n} éléments. « Mes fichiers » les masquerait, "
|
||||||
|
"c’est pourquoi Proton Drive ne s’y ouvre pas. Déplacez les éléments dans un "
|
||||||
|
"autre dossier, ou choisissez un autre dossier pour « Mes fichiers »."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Pas maintenant"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Ouvrir le dossier"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Choisir un autre dossier…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -658,7 +706,7 @@ msgstr[0] "{n} dossier créé"
|
|||||||
msgstr[1] "{n} dossiers créés"
|
msgstr[1] "{n} dossiers créés"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1317,7 +1365,7 @@ msgstr "Impossible de charger les albums"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1587,7 +1635,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Rendre disponible hors ligne"
|
msgstr "Rendre disponible hors ligne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Garder en ligne uniquement"
|
msgstr "Garder en ligne uniquement"
|
||||||
|
|
||||||
@@ -2187,7 +2235,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Aucun fichier ni dossier ne correspond à cette recherche."
|
msgstr "Aucun fichier ni dossier ne correspond à cette recherche."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2932,7 +2980,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Synchronisation en pause jusqu’à la reprise"
|
msgstr "Synchronisation en pause jusqu’à la reprise"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Synchronisation en pause"
|
msgstr "Synchronisation en pause"
|
||||||
|
|
||||||
@@ -4987,68 +5035,91 @@ msgstr "Impossible d’enregistrer la langue"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Redémarrez Proton Drive pour utiliser la nouvelle langue"
|
msgstr "Redémarrez Proton Drive pour utiliser la nouvelle langue"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Choisir le dossier Proton Drive"
|
msgstr "Choisir le dossier Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Impossible de lire le dossier"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Choisissez un dossier vide"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"« {path} » contient déjà {n} élément. « Mes fichiers » le masquerait tant "
|
||||||
|
"que Proton Drive fonctionne, et il ne serait pas téléversé."
|
||||||
|
msgstr[1] ""
|
||||||
|
"« {path} » contient déjà {n} éléments. « Mes fichiers » les masquerait tant "
|
||||||
|
"que Proton Drive fonctionne, et ils ne seraient pas téléversés."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Impossible d’enregistrer le dossier"
|
msgstr "Impossible d’enregistrer le dossier"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Redémarrer Proton Drive ?"
|
msgstr "Redémarrer Proton Drive ?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"« Mes fichiers » apparaîtra dans « {path} » après le redémarrage de Proton "
|
"« Mes fichiers » apparaîtra dans « {path} » après le redémarrage de Proton "
|
||||||
"Drive."
|
"Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Plus tard"
|
msgstr "Plus tard"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Redémarrer maintenant"
|
msgstr "Redémarrer maintenant"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} utilisés"
|
msgstr "{size} utilisés"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} utilisés sur {total} ({percent} %)"
|
msgstr "{used} utilisés sur {total} ({percent} %)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive connecté"
|
msgstr "Proton Drive connecté"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Vos fichiers sont disponibles."
|
msgstr "Vos fichiers sont disponibles."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive déconnecté"
|
msgstr "Proton Drive déconnecté"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Le service Proton Drive s’est arrêté. Les fichiers ne sont pas disponibles "
|
"Le service Proton Drive s’est arrêté. Les fichiers ne sont pas disponibles "
|
||||||
"tant qu’il n’a pas redémarré."
|
"tant qu’il n’a pas redémarré."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Synchronisation terminée"
|
msgstr "Synchronisation terminée"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5057,28 +5128,28 @@ msgstr[1] "Le transfert de {n} fichiers est terminé."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} — {done} sur {total}"
|
msgstr "{title} — {done} sur {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} — {detail} ({done} sur {total})"
|
msgstr "{title} — {detail} ({done} sur {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} — {detail}…"
|
msgstr "{title} — {detail}…"
|
||||||
@@ -5086,7 +5157,7 @@ msgstr "{title} — {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
||||||
@@ -5094,156 +5165,164 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} sur {total} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} sur {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} en cache — aucune limite définie"
|
msgstr "{used} en cache — aucune limite définie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} utilisés sur {limit}"
|
msgstr "{used} utilisés sur {limit}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Session expirée"
|
msgstr "Session expirée"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · reconnectez-vous pour synchroniser"
|
msgstr "{queued} · reconnectez-vous pour synchroniser"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Reconnectez-vous pour synchroniser"
|
msgstr "Reconnectez-vous pour synchroniser"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Connexion non enregistrée"
|
msgstr "Connexion non enregistrée"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Déverrouillez votre trousseau, sinon le prochain redémarrage vous "
|
"Déverrouillez votre trousseau, sinon le prochain redémarrage vous "
|
||||||
"déconnectera"
|
"déconnectera"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Redémarrez pour terminer la mise à jour"
|
msgstr "Redémarrez pour terminer la mise à jour"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Une version plus ancienne de Proton Drive est toujours en cours d’exécution"
|
"Une version plus ancienne de Proton Drive est toujours en cours d’exécution"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} est toujours en cours d’exécution"
|
msgstr "Proton Drive {version} est toujours en cours d’exécution"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · reprise {time}"
|
msgstr "{queued} · reprise {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Reprise {time}"
|
msgstr "Reprise {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Jusqu’à la reprise"
|
msgstr "Jusqu’à la reprise"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} modification requiert votre attention"
|
msgstr[0] "{n} modification requiert votre attention"
|
||||||
msgstr[1] "{n} modifications requièrent votre attention"
|
msgstr[1] "{n} modifications requièrent votre attention"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Hors ligne"
|
msgstr "Hors ligne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Fichiers en cache uniquement"
|
msgstr "Fichiers en cache uniquement"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Synchronisation"
|
msgstr "Synchronisation"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "À jour"
|
msgstr "À jour"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive n’est pas en cours d’exécution"
|
msgstr "Proton Drive n’est pas en cours d’exécution"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Votre dossier Proton Drive n’est pas vide"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive continue d’essayer de démarrer"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Ne répond pas"
|
msgstr "Ne répond pas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive met trop de temps à répondre"
|
msgstr "Proton Drive met trop de temps à répondre"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "plus tard"
|
msgstr "plus tard"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "à %H:%M"
|
msgstr "à %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%e %b"
|
msgstr "%e %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Aucun fichier disponible hors ligne"
|
msgstr "Aucun fichier disponible hors ligne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Faites un clic droit sur un fichier ou un dossier et choisissez « Disponible "
|
"Faites un clic droit sur un fichier ou un dossier et choisissez « Disponible "
|
||||||
"hors ligne »."
|
"hors ligne »."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Impossible de le garder en ligne uniquement"
|
msgstr "Impossible de le garder en ligne uniquement"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Afficher moins"
|
msgstr "Afficher moins"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6321,37 +6400,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "En ligne uniquement"
|
msgstr "En ligne uniquement"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} téléversement en attente"
|
msgstr[0] "{n} téléversement en attente"
|
||||||
msgstr[1] "{n} téléversements en attente"
|
msgstr[1] "{n} téléversements en attente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} modification en attente"
|
msgstr[0] "{n} modification en attente"
|
||||||
msgstr[1] "{n} modifications en attente"
|
msgstr[1] "{n} modifications en attente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} téléversement"
|
msgstr[0] "{n} téléversement"
|
||||||
msgstr[1] "{n} téléversements"
|
msgstr[1] "{n} téléversements"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads} et {changes} en attente"
|
msgstr "{uploads} et {changes} en attente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6486,10 +6565,6 @@ msgstr "Ouvrir Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Redémarrer Proton Drive"
|
msgstr "Redémarrer Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Ouvrir le dossier"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Reprendre la synchronisation"
|
msgstr "Reprendre la synchronisation"
|
||||||
@@ -6823,9 +6898,6 @@ msgstr "impossible de joindre le démon Proton Drive : {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Arrêter le partage ?"
|
#~ msgstr "Arrêter le partage ?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Choisir le dossier du point de montage"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Impossible d’enregistrer le point de montage"
|
#~ msgstr "Impossible d’enregistrer le point de montage"
|
||||||
|
|
||||||
|
|||||||
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A %-d %B %Y, %H:%M"
|
msgstr "%A %-d %B %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A %-d %B %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "I miei file"
|
msgstr "I miei file"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Foto"
|
msgstr "Foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Condivisi con me"
|
msgstr "Condivisi con me"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Condivisi da me"
|
msgstr "Condivisi da me"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Cestino"
|
msgstr "Cestino"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Sincronizzazione"
|
msgstr "Sincronizzazione"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Sei offline"
|
msgstr "Sei offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Non esiste più"
|
msgstr "Non esiste più"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Non hai accesso a questo elemento"
|
msgstr "Non hai accesso a questo elemento"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "È stato modificato prima da qualcos'altro"
|
msgstr "È stato modificato prima da qualcos'altro"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Il tuo Proton Drive è pieno"
|
msgstr "Il tuo Proton Drive è pieno"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -148,23 +148,23 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Client non ufficiale: non affiliato, approvato né supportato da Proton AG."
|
"Client non ufficiale: non affiliato, approvato né supportato da Proton AG."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Codice sorgente"
|
msgstr "Codice sorgente"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Termini di servizio di Proton"
|
msgstr "Termini di servizio di Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Informativa sulla privacy di Proton"
|
msgstr "Informativa sulla privacy di Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Esclusione di responsabilità"
|
msgstr "Esclusione di responsabilità"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -187,7 +187,7 @@ msgstr ""
|
|||||||
"Questo software è fornito “così com’è”, senza alcuna garanzia. Conserva una "
|
"Questo software è fornito “così com’è”, senza alcuna garanzia. Conserva una "
|
||||||
"copia dei dati che non puoi permetterti di perdere."
|
"copia dei dati che non puoi permetterti di perdere."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -197,7 +197,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a>, con licenza <a href=\"https://creativecommons.org/licenses/"
|
"\">GeoNames</a>, con licenza <a href=\"https://creativecommons.org/licenses/"
|
||||||
"by/4.0/\">CC BY 4.0</a>."
|
"by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -207,7 +207,7 @@ msgstr ""
|
|||||||
"confini nazionali di <a href=\"https://www.naturalearthdata.com/\">Natural "
|
"confini nazionali di <a href=\"https://www.naturalearthdata.com/\">Natural "
|
||||||
"Earth</a>, che sono di pubblico dominio."
|
"Earth</a>, che sono di pubblico dominio."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -223,15 +223,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Collaboratori di Proton Drive for Linux"
|
msgstr "Collaboratori di Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Arrestare Proton Drive?"
|
msgstr "Arrestare Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -239,7 +239,7 @@ msgstr ""
|
|||||||
"I miei file andranno offline e nulla verrà sincronizzato finché non ti "
|
"I miei file andranno offline e nulla verrà sincronizzato finché non ti "
|
||||||
"riconnetti. Proton Drive si riavvierà al prossimo accesso."
|
"riconnetti. Proton Drive si riavvierà al prossimo accesso."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -274,30 +274,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Arresta"
|
msgstr "Arresta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Impossibile arrestare Proton Drive"
|
msgstr "Impossibile arrestare Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "Il servizio di Proton Drive non si è arrestato."
|
msgstr "Il servizio di Proton Drive non si è arrestato."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Generale"
|
msgstr "Generale"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Cerca in Drive"
|
msgstr "Cerca in Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -306,43 +306,43 @@ msgstr "Cerca in Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Aggiorna"
|
msgstr "Aggiorna"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Preferenze"
|
msgstr "Preferenze"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Scorciatoie da tastiera"
|
msgstr "Scorciatoie da tastiera"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "File"
|
msgstr "File"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Nuova cartella"
|
msgstr "Nuova cartella"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Carica file"
|
msgstr "Carica file"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Indietro / avanti"
|
msgstr "Indietro / avanti"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Cartella superiore"
|
msgstr "Cartella superiore"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Griglia / elenco"
|
msgstr "Griglia / elenco"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -351,7 +351,7 @@ msgstr "Griglia / elenco"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Rinomina"
|
msgstr "Rinomina"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -361,70 +361,83 @@ msgstr "Rinomina"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Sposta nel cestino"
|
msgstr "Sposta nel cestino"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Annulla la selezione"
|
msgstr "Annulla la selezione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Miniature più grandi"
|
msgstr "Miniature più grandi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Miniature più piccole"
|
msgstr "Miniature più piccole"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Ripristina la dimensione delle miniature"
|
msgstr "Ripristina la dimensione delle miniature"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleziona tutto"
|
msgstr "Seleziona tutto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Visualizzatore di foto"
|
msgstr "Visualizzatore di foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Foto precedente / successiva"
|
msgstr "Foto precedente / successiva"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Prima / ultima foto"
|
msgstr "Prima / ultima foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Mostra dettagli"
|
msgstr "Mostra dettagli"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Schermo intero"
|
msgstr "Schermo intero"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Chiudi"
|
msgstr "Chiudi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Seleziona un solo elemento per rinominarlo"
|
msgstr "Seleziona un solo elemento per rinominarlo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Non connesso"
|
msgstr "Non connesso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "Il servizio di Proton Drive non è in esecuzione."
|
msgstr "Il servizio di Proton Drive non è in esecuzione."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Impossibile aprire Proton Drive"
|
msgstr "Impossibile aprire Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"“{path}” contiene già dei file, e «I miei file» li nasconderebbe. Proton "
|
||||||
|
"Drive riprova da solo quando la cartella è vuota. Puoi anche scegliere "
|
||||||
|
"un’altra cartella per «I miei file» nelle Preferenze."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -433,17 +446,52 @@ msgstr ""
|
|||||||
"Il servizio di Proton Drive non riesce ad avviarsi e riprova da solo. Ultimo "
|
"Il servizio di Proton Drive non riesce ad avviarsi e riprova da solo. Ultimo "
|
||||||
"errore: {error}"
|
"errore: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Connessione…"
|
msgstr "Connessione…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "In attesa dell’avvio del servizio di Proton Drive."
|
msgstr "In attesa dell’avvio del servizio di Proton Drive."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "La tua cartella di Proton Drive non è vuota"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” contiene già {n} elemento. «I miei file» lo nasconderebbe, quindi "
|
||||||
|
"Proton Drive non si apre lì. Sposta l’elemento in un’altra cartella o scegli "
|
||||||
|
"un’altra cartella per «I miei file»."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” contiene già {n} elementi. «I miei file» li nasconderebbe, quindi "
|
||||||
|
"Proton Drive non si apre lì. Sposta gli elementi in un’altra cartella o "
|
||||||
|
"scegli un’altra cartella per «I miei file»."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Non ora"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Apri cartella"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Scegli un’altra cartella…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -654,7 +702,7 @@ msgstr[0] "Creata {n} cartella"
|
|||||||
msgstr[1] "Create {n} cartelle"
|
msgstr[1] "Create {n} cartelle"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1311,7 +1359,7 @@ msgstr "Impossibile caricare gli album"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1581,7 +1629,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Rendi disponibile offline"
|
msgstr "Rendi disponibile offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Rendi solo online"
|
msgstr "Rendi solo online"
|
||||||
|
|
||||||
@@ -2181,7 +2229,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Nessun file o cartella corrisponde alla ricerca."
|
msgstr "Nessun file o cartella corrisponde alla ricerca."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2930,7 +2978,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Sincronizzazione in pausa finché non riprendi"
|
msgstr "Sincronizzazione in pausa finché non riprendi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Sincronizzazione in pausa"
|
msgstr "Sincronizzazione in pausa"
|
||||||
|
|
||||||
@@ -4967,66 +5015,89 @@ msgstr "Impossibile salvare la lingua"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Riavvia Proton Drive per usare la nuova lingua"
|
msgstr "Riavvia Proton Drive per usare la nuova lingua"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Scegli la cartella di Proton Drive"
|
msgstr "Scegli la cartella di Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Impossibile leggere la cartella"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Scegli una cartella vuota"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” contiene già {n} elemento. «I miei file» lo nasconderebbe mentre "
|
||||||
|
"Proton Drive è in esecuzione, e non verrebbe caricato."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” contiene già {n} elementi. «I miei file» li nasconderebbe mentre "
|
||||||
|
"Proton Drive è in esecuzione, e non verrebbero caricati."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Impossibile salvare la cartella"
|
msgstr "Impossibile salvare la cartella"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Riavviare Proton Drive?"
|
msgstr "Riavviare Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr "«I miei file» apparirà in “{path}” dopo il riavvio di Proton Drive."
|
msgstr "«I miei file» apparirà in “{path}” dopo il riavvio di Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Più tardi"
|
msgstr "Più tardi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Riavvia ora"
|
msgstr "Riavvia ora"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} utilizzati"
|
msgstr "{size} utilizzati"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} di {total} utilizzati ({percent}%)"
|
msgstr "{used} di {total} utilizzati ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive connesso"
|
msgstr "Proton Drive connesso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "I tuoi file sono disponibili."
|
msgstr "I tuoi file sono disponibili."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive disconnesso"
|
msgstr "Proton Drive disconnesso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Il servizio di Proton Drive si è arrestato. I file non sono disponibili "
|
"Il servizio di Proton Drive si è arrestato. I file non sono disponibili "
|
||||||
"finché non si riavvia."
|
"finché non si riavvia."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Sincronizzazione completata"
|
msgstr "Sincronizzazione completata"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5035,28 +5106,28 @@ msgstr[1] "Trasferimento di {n} file completato."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title}: {done} di {total}"
|
msgstr "{title}: {done} di {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title}: {detail} ({done} di {total})"
|
msgstr "{title}: {detail} ({done} di {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title}: {detail}…"
|
msgstr "{title}: {detail}…"
|
||||||
@@ -5064,7 +5135,7 @@ msgstr "{title}: {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name}: {done} ({speed}/s)"
|
msgstr "{arrow} {name}: {done} ({speed}/s)"
|
||||||
@@ -5072,153 +5143,161 @@ msgstr "{arrow} {name}: {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name}: {done} di {total} ({speed}/s)"
|
msgstr "{arrow} {name}: {done} di {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} in cache — nessun limite impostato"
|
msgstr "{used} in cache — nessun limite impostato"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} di {limit} utilizzati"
|
msgstr "{used} di {limit} utilizzati"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sessione scaduta"
|
msgstr "Sessione scaduta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · accedi di nuovo per sincronizzare"
|
msgstr "{queued} · accedi di nuovo per sincronizzare"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Accedi di nuovo per sincronizzare"
|
msgstr "Accedi di nuovo per sincronizzare"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Accesso non salvato"
|
msgstr "Accesso non salvato"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sblocca il portachiavi, altrimenti il prossimo riavvio ti disconnetterà"
|
"Sblocca il portachiavi, altrimenti il prossimo riavvio ti disconnetterà"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Riavvia per completare l'aggiornamento"
|
msgstr "Riavvia per completare l'aggiornamento"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "È ancora in esecuzione una versione precedente di Proton Drive"
|
msgstr "È ancora in esecuzione una versione precedente di Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} è ancora in esecuzione"
|
msgstr "Proton Drive {version} è ancora in esecuzione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · riprende {time}"
|
msgstr "{queued} · riprende {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Riprende {time}"
|
msgstr "Riprende {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Finché non riprendi"
|
msgstr "Finché non riprendi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} modifica richiede attenzione"
|
msgstr[0] "{n} modifica richiede attenzione"
|
||||||
msgstr[1] "{n} modifiche richiedono attenzione"
|
msgstr[1] "{n} modifiche richiedono attenzione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Solo file in cache"
|
msgstr "Solo file in cache"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Sincronizzazione in corso"
|
msgstr "Sincronizzazione in corso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Aggiornato"
|
msgstr "Aggiornato"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive non è in esecuzione"
|
msgstr "Proton Drive non è in esecuzione"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "La tua cartella di Proton Drive non è vuota"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive continua a provare ad avviarsi"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Non risponde"
|
msgstr "Non risponde"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive impiega troppo tempo a rispondere"
|
msgstr "Proton Drive impiega troppo tempo a rispondere"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "più tardi"
|
msgstr "più tardi"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "alle %H:%M"
|
msgstr "alle %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%e %b"
|
msgstr "%e %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Nessun file mantenuto offline"
|
msgstr "Nessun file mantenuto offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Fai clic destro su un file o una cartella e scegli “Disponibile offline”."
|
"Fai clic destro su un file o una cartella e scegli “Disponibile offline”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Impossibile renderlo solo online"
|
msgstr "Impossibile renderlo solo online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Mostra meno"
|
msgstr "Mostra meno"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6297,37 +6376,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Solo online"
|
msgstr "Solo online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} caricamento in coda"
|
msgstr[0] "{n} caricamento in coda"
|
||||||
msgstr[1] "{n} caricamenti in coda"
|
msgstr[1] "{n} caricamenti in coda"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} modifica in coda"
|
msgstr[0] "{n} modifica in coda"
|
||||||
msgstr[1] "{n} modifiche in coda"
|
msgstr[1] "{n} modifiche in coda"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} caricamento"
|
msgstr[0] "{n} caricamento"
|
||||||
msgstr[1] "{n} caricamenti"
|
msgstr[1] "{n} caricamenti"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads}, {changes} in coda"
|
msgstr "{uploads}, {changes} in coda"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6462,10 +6541,6 @@ msgstr "Apri Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Riavvia Proton Drive"
|
msgstr "Riavvia Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Apri cartella"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Riprendi sincronizzazione"
|
msgstr "Riprendi sincronizzazione"
|
||||||
@@ -6795,9 +6870,6 @@ msgstr "impossibile raggiungere il demone di Proton Drive: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Interrompere la condivisione?"
|
#~ msgstr "Interrompere la condivisione?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Scegli la cartella del punto di montaggio"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Impossibile salvare il punto di montaggio"
|
#~ msgstr "Impossibile salvare il punto di montaggio"
|
||||||
|
|
||||||
|
|||||||
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A %-d %B %Y, %H:%M"
|
msgstr "%A %-d %B %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A %-d %B %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Mijn bestanden"
|
msgstr "Mijn bestanden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Foto's"
|
msgstr "Foto's"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Gedeeld met mij"
|
msgstr "Gedeeld met mij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Gedeeld door mij"
|
msgstr "Gedeeld door mij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Computers"
|
msgstr "Computers"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Prullenbak"
|
msgstr "Prullenbak"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Synchronisatie"
|
msgstr "Synchronisatie"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Je bent offline"
|
msgstr "Je bent offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Dat bestaat niet meer"
|
msgstr "Dat bestaat niet meer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Je hebt daar geen toegang toe"
|
msgstr "Je hebt daar geen toegang toe"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Er is eerst iets anders gewijzigd"
|
msgstr "Er is eerst iets anders gewijzigd"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Je Proton Drive is vol"
|
msgstr "Je Proton Drive is vol"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -149,23 +149,23 @@ msgstr ""
|
|||||||
"Onofficiële client — niet gelieerd aan, onderschreven door of ondersteund "
|
"Onofficiële client — niet gelieerd aan, onderschreven door of ondersteund "
|
||||||
"door Proton AG."
|
"door Proton AG."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Broncode"
|
msgstr "Broncode"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Servicevoorwaarden van Proton"
|
msgstr "Servicevoorwaarden van Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Privacybeleid van Proton"
|
msgstr "Privacybeleid van Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Disclaimer"
|
msgstr "Disclaimer"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -188,7 +188,7 @@ msgstr ""
|
|||||||
"Deze software wordt geleverd “zoals ze is”, zonder enige garantie. Bewaar "
|
"Deze software wordt geleverd “zoals ze is”, zonder enige garantie. Bewaar "
|
||||||
"een kopie van gegevens die je niet kwijt wilt raken."
|
"een kopie van gegevens die je niet kwijt wilt raken."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -198,7 +198,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a>, gelicentieerd onder <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, gelicentieerd onder <a href=\"https://creativecommons.org/"
|
||||||
"licenses/by/4.0/\">CC BY 4.0</a>."
|
"licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -208,7 +208,7 @@ msgstr ""
|
|||||||
"href=\"https://www.naturalearthdata.com/\">Natural Earth</a>, die in het "
|
"href=\"https://www.naturalearthdata.com/\">Natural Earth</a>, die in het "
|
||||||
"publieke domein vallen."
|
"publieke domein vallen."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -224,15 +224,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Bijdragers aan Proton Drive for Linux"
|
msgstr "Bijdragers aan Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Proton Drive stoppen?"
|
msgstr "Proton Drive stoppen?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -240,7 +240,7 @@ msgstr ""
|
|||||||
"Mijn bestanden gaat offline en er wordt niets gesynchroniseerd tot je weer "
|
"Mijn bestanden gaat offline en er wordt niets gesynchroniseerd tot je weer "
|
||||||
"verbinding maakt. Proton Drive start opnieuw bij je volgende aanmelding."
|
"verbinding maakt. Proton Drive start opnieuw bij je volgende aanmelding."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -275,30 +275,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuleren"
|
msgstr "Annuleren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Stoppen"
|
msgstr "Stoppen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Kon Proton Drive niet stoppen"
|
msgstr "Kon Proton Drive niet stoppen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "De Proton Drive-service is niet gestopt."
|
msgstr "De Proton Drive-service is niet gestopt."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Algemeen"
|
msgstr "Algemeen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Drive doorzoeken"
|
msgstr "Drive doorzoeken"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -307,43 +307,43 @@ msgstr "Drive doorzoeken"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Verversen"
|
msgstr "Verversen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Voorkeuren"
|
msgstr "Voorkeuren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Sneltoetsen"
|
msgstr "Sneltoetsen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Bestanden"
|
msgstr "Bestanden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Nieuwe map"
|
msgstr "Nieuwe map"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Bestanden uploaden"
|
msgstr "Bestanden uploaden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Terug / vooruit"
|
msgstr "Terug / vooruit"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Bovenliggende map"
|
msgstr "Bovenliggende map"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Raster / lijst"
|
msgstr "Raster / lijst"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -352,7 +352,7 @@ msgstr "Raster / lijst"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Hernoemen"
|
msgstr "Hernoemen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -362,70 +362,83 @@ msgstr "Hernoemen"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Naar prullenbak verplaatsen"
|
msgstr "Naar prullenbak verplaatsen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Selectie wissen"
|
msgstr "Selectie wissen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Grotere miniaturen"
|
msgstr "Grotere miniaturen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Kleinere miniaturen"
|
msgstr "Kleinere miniaturen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Miniatuurgrootte herstellen"
|
msgstr "Miniatuurgrootte herstellen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alles selecteren"
|
msgstr "Alles selecteren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Fotoweergave"
|
msgstr "Fotoweergave"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Vorige / volgende foto"
|
msgstr "Vorige / volgende foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Eerste / laatste foto"
|
msgstr "Eerste / laatste foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Details tonen"
|
msgstr "Details tonen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Volledig scherm"
|
msgstr "Volledig scherm"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sluiten"
|
msgstr "Sluiten"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Selecteer één item om het te hernoemen"
|
msgstr "Selecteer één item om het te hernoemen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Niet verbonden"
|
msgstr "Niet verbonden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "De Proton Drive-service draait niet."
|
msgstr "De Proton Drive-service draait niet."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Kan Proton Drive niet openen"
|
msgstr "Kan Proton Drive niet openen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"“{path}” bevat al bestanden, en Mijn bestanden zou ze verbergen. Proton "
|
||||||
|
"Drive probeert het zelf opnieuw zodra de map leeg is. Je kunt in Voorkeuren "
|
||||||
|
"ook een andere map voor Mijn bestanden kiezen."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -434,17 +447,52 @@ msgstr ""
|
|||||||
"De Proton Drive-service kan steeds niet starten en probeert het zelf "
|
"De Proton Drive-service kan steeds niet starten en probeert het zelf "
|
||||||
"opnieuw. Laatste fout: {error}"
|
"opnieuw. Laatste fout: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Verbinden…"
|
msgstr "Verbinden…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Wachten tot de Proton Drive-service is gestart."
|
msgstr "Wachten tot de Proton Drive-service is gestart."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Je Proton Drive-map is niet leeg"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” bevat al {n} item. Mijn bestanden zou het verbergen, dus Proton "
|
||||||
|
"Drive opent daar niet. Verplaats het item naar een andere map, of kies een "
|
||||||
|
"andere map voor Mijn bestanden."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” bevat al {n} items. Mijn bestanden zou ze verbergen, dus Proton "
|
||||||
|
"Drive opent daar niet. Verplaats de items naar een andere map, of kies een "
|
||||||
|
"andere map voor Mijn bestanden."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Niet nu"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Map openen"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Andere map kiezen…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -655,7 +703,7 @@ msgstr[0] "{n} map aangemaakt"
|
|||||||
msgstr[1] "{n} mappen aangemaakt"
|
msgstr[1] "{n} mappen aangemaakt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1307,7 +1355,7 @@ msgstr "Kon albums niet laden"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1577,7 +1625,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Offline beschikbaar maken"
|
msgstr "Offline beschikbaar maken"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Alleen online maken"
|
msgstr "Alleen online maken"
|
||||||
|
|
||||||
@@ -2175,7 +2223,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Geen bestanden of mappen komen overeen met deze zoekopdracht."
|
msgstr "Geen bestanden of mappen komen overeen met deze zoekopdracht."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2920,7 +2968,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Synchronisatie gepauzeerd totdat je hervat"
|
msgstr "Synchronisatie gepauzeerd totdat je hervat"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Synchronisatie gepauzeerd"
|
msgstr "Synchronisatie gepauzeerd"
|
||||||
|
|
||||||
@@ -4960,67 +5008,90 @@ msgstr "Kon de taal niet opslaan"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Herstart Proton Drive om de nieuwe taal te gebruiken"
|
msgstr "Herstart Proton Drive om de nieuwe taal te gebruiken"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Proton Drive-map kiezen"
|
msgstr "Proton Drive-map kiezen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Kon de map niet lezen"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Kies een lege map"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” bevat al {n} item. Mijn bestanden zou het verbergen zolang Proton "
|
||||||
|
"Drive draait, en het zou niet worden geüpload."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” bevat al {n} items. Mijn bestanden zou ze verbergen zolang Proton "
|
||||||
|
"Drive draait, en ze zouden niet worden geüpload."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Kon de map niet opslaan"
|
msgstr "Kon de map niet opslaan"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Proton Drive opnieuw starten?"
|
msgstr "Proton Drive opnieuw starten?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mijn bestanden verschijnt in “{path}” nadat Proton Drive opnieuw is gestart."
|
"Mijn bestanden verschijnt in “{path}” nadat Proton Drive opnieuw is gestart."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Later"
|
msgstr "Later"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Nu opnieuw starten"
|
msgstr "Nu opnieuw starten"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} gebruikt"
|
msgstr "{size} gebruikt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} van {total} gebruikt ({percent}%)"
|
msgstr "{used} van {total} gebruikt ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive verbonden"
|
msgstr "Proton Drive verbonden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Je bestanden zijn beschikbaar."
|
msgstr "Je bestanden zijn beschikbaar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Verbinding met Proton Drive verbroken"
|
msgstr "Verbinding met Proton Drive verbroken"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"De Proton Drive-service is gestopt. Bestanden zijn pas weer beschikbaar als "
|
"De Proton Drive-service is gestopt. Bestanden zijn pas weer beschikbaar als "
|
||||||
"hij opnieuw start."
|
"hij opnieuw start."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Synchronisatie voltooid"
|
msgstr "Synchronisatie voltooid"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5029,28 +5100,28 @@ msgstr[1] "{n} bestanden zijn klaar met overdragen."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} — {done} van {total}"
|
msgstr "{title} — {done} van {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} — {detail} ({done} van {total})"
|
msgstr "{title} — {detail} ({done} van {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} — {detail}…"
|
msgstr "{title} — {detail}…"
|
||||||
@@ -5058,7 +5129,7 @@ msgstr "{title} — {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
||||||
@@ -5066,152 +5137,160 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} van {total} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} van {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} in cache — geen limiet ingesteld"
|
msgstr "{used} in cache — geen limiet ingesteld"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} van {limit} gebruikt"
|
msgstr "{used} van {limit} gebruikt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sessie verlopen"
|
msgstr "Sessie verlopen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · meld je opnieuw aan om te synchroniseren"
|
msgstr "{queued} · meld je opnieuw aan om te synchroniseren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Meld je opnieuw aan om te synchroniseren"
|
msgstr "Meld je opnieuw aan om te synchroniseren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Aanmelding niet opgeslagen"
|
msgstr "Aanmelding niet opgeslagen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ontgrendel je sleutelbos, anders word je bij de volgende herstart afgemeld"
|
"Ontgrendel je sleutelbos, anders word je bij de volgende herstart afgemeld"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Start opnieuw om de update af te ronden"
|
msgstr "Start opnieuw om de update af te ronden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "Er draait nog een oudere versie van Proton Drive"
|
msgstr "Er draait nog een oudere versie van Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Proton Drive {version} draait nog"
|
msgstr "Proton Drive {version} draait nog"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · hervat {time}"
|
msgstr "{queued} · hervat {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Hervat {time}"
|
msgstr "Hervat {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Totdat je hervat"
|
msgstr "Totdat je hervat"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} wijziging vereist aandacht"
|
msgstr[0] "{n} wijziging vereist aandacht"
|
||||||
msgstr[1] "{n} wijzigingen vereisen aandacht"
|
msgstr[1] "{n} wijzigingen vereisen aandacht"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Alleen bestanden in cache"
|
msgstr "Alleen bestanden in cache"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Synchroniseren"
|
msgstr "Synchroniseren"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Bijgewerkt"
|
msgstr "Bijgewerkt"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive draait niet"
|
msgstr "Proton Drive draait niet"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Je Proton Drive-map is niet leeg"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive blijft proberen te starten"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Reageert niet"
|
msgstr "Reageert niet"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive doet er te lang over om te antwoorden"
|
msgstr "Proton Drive doet er te lang over om te antwoorden"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "later"
|
msgstr "later"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "om %H:%M"
|
msgstr "om %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%e %b"
|
msgstr "%e %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Geen offline bewaarde bestanden"
|
msgstr "Geen offline bewaarde bestanden"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr "Klik met rechts op een bestand of map en kies “Offline beschikbaar”."
|
msgstr "Klik met rechts op een bestand of map en kies “Offline beschikbaar”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Kon het niet alleen online maken"
|
msgstr "Kon het niet alleen online maken"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Minder tonen"
|
msgstr "Minder tonen"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6283,37 +6362,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Alleen online"
|
msgstr "Alleen online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} upload in wachtrij"
|
msgstr[0] "{n} upload in wachtrij"
|
||||||
msgstr[1] "{n} uploads in wachtrij"
|
msgstr[1] "{n} uploads in wachtrij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} wijziging in wachtrij"
|
msgstr[0] "{n} wijziging in wachtrij"
|
||||||
msgstr[1] "{n} wijzigingen in wachtrij"
|
msgstr[1] "{n} wijzigingen in wachtrij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} upload"
|
msgstr[0] "{n} upload"
|
||||||
msgstr[1] "{n} uploads"
|
msgstr[1] "{n} uploads"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads}, {changes} in wachtrij"
|
msgstr "{uploads}, {changes} in wachtrij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6448,10 +6527,6 @@ msgstr "Proton Drive openen"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Proton Drive opnieuw starten"
|
msgstr "Proton Drive opnieuw starten"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Map openen"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Synchronisatie hervatten"
|
msgstr "Synchronisatie hervatten"
|
||||||
@@ -6782,9 +6857,6 @@ msgstr "kan de achtergronddienst van Proton Drive niet bereiken: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Delen stoppen?"
|
#~ msgstr "Delen stoppen?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Map voor koppelpunt kiezen"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Kon koppelpunt niet opslaan"
|
#~ msgstr "Kon koppelpunt niet opslaan"
|
||||||
|
|
||||||
|
|||||||
+193
-131
@@ -6,9 +6,9 @@
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: proton-drive-linux 3.6.0\n"
|
"Project-Id-Version: proton-drive-linux 3.7.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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -60,7 +60,7 @@ msgstr ""
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -73,74 +73,74 @@ msgstr ""
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -148,23 +148,23 @@ msgid ""
|
|||||||
"AG."
|
"AG."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -177,21 +177,21 @@ msgid ""
|
|||||||
"of any data you cannot afford to lose."
|
"of any data you cannot afford to lose."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
"licenses/by/4.0/\">CC BY 4.0</a>."
|
"licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
"public domain."
|
"public domain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -202,21 +202,21 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -251,30 +251,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -283,43 +283,43 @@ msgstr ""
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -328,7 +328,7 @@ msgstr ""
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -338,87 +338,126 @@ msgstr ""
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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 ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -623,7 +662,7 @@ msgstr[0] ""
|
|||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1263,7 +1302,7 @@ msgstr ""
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1533,7 +1572,7 @@ msgid "Make available offline"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2125,7 +2164,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2810,7 +2849,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4737,64 +4776,83 @@ msgstr ""
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -4803,28 +4861,28 @@ msgstr[1] ""
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4832,7 +4890,7 @@ msgstr ""
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4840,151 +4898,159 @@ msgstr ""
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6015,37 +6081,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6180,10 +6246,6 @@ msgstr ""
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -59,7 +59,7 @@ msgstr "%-d %b %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A, %-d %B %Y, %H:%M"
|
msgstr "%A, %-d %B %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -72,74 +72,74 @@ msgstr "%A, %-d %B %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Moje pliki"
|
msgstr "Moje pliki"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Zdjęcia"
|
msgstr "Zdjęcia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Udostępnione mi"
|
msgstr "Udostępnione mi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Udostępnione przeze mnie"
|
msgstr "Udostępnione przeze mnie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Komputery"
|
msgstr "Komputery"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Kosz"
|
msgstr "Kosz"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Synchronizacja"
|
msgstr "Synchronizacja"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Brak połączenia z siecią"
|
msgstr "Brak połączenia z siecią"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Ten element już nie istnieje"
|
msgstr "Ten element już nie istnieje"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Brak dostępu do tego elementu"
|
msgstr "Brak dostępu do tego elementu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Coś zmieniło ten element wcześniej"
|
msgstr "Coś zmieniło ten element wcześniej"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Proton Drive jest pełny"
|
msgstr "Proton Drive jest pełny"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -151,23 +151,23 @@ msgstr ""
|
|||||||
"Nieoficjalny klient — niepowiązany z Proton AG, niepopierany ani "
|
"Nieoficjalny klient — niepowiązany z Proton AG, niepopierany ani "
|
||||||
"niewspierany przez tę firmę."
|
"niewspierany przez tę firmę."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kod źródłowy"
|
msgstr "Kod źródłowy"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Warunki korzystania z usług Proton"
|
msgstr "Warunki korzystania z usług Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Polityka prywatności Proton"
|
msgstr "Polityka prywatności Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Zastrzeżenia"
|
msgstr "Zastrzeżenia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -191,7 +191,7 @@ msgstr ""
|
|||||||
"gwarancji. Zachowaj kopię danych, na których utratę nie możesz sobie "
|
"gwarancji. Zachowaj kopię danych, na których utratę nie możesz sobie "
|
||||||
"pozwolić."
|
"pozwolić."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -201,7 +201,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a> udostępnionych na licencji <a href=\"https://"
|
"\">GeoNames</a> udostępnionych na licencji <a href=\"https://"
|
||||||
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
"creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -211,7 +211,7 @@ msgstr ""
|
|||||||
"www.naturalearthdata.com/\">Natural Earth</a>, które należą do domeny "
|
"www.naturalearthdata.com/\">Natural Earth</a>, które należą do domeny "
|
||||||
"publicznej."
|
"publicznej."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -227,15 +227,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Współtwórcy programu Proton Drive for Linux"
|
msgstr "Współtwórcy programu Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Zatrzymać Proton Drive?"
|
msgstr "Zatrzymać Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -244,7 +244,7 @@ msgstr ""
|
|||||||
"ponownego połączenia. Proton Drive uruchomi się ponownie przy następnym "
|
"ponownego połączenia. Proton Drive uruchomi się ponownie przy następnym "
|
||||||
"logowaniu."
|
"logowaniu."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -279,30 +279,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Zatrzymaj"
|
msgstr "Zatrzymaj"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Nie można zatrzymać Proton Drive"
|
msgstr "Nie można zatrzymać Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "Usługa Proton Drive nie zatrzymała się."
|
msgstr "Usługa Proton Drive nie zatrzymała się."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Ogólne"
|
msgstr "Ogólne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Przeszukaj Drive"
|
msgstr "Przeszukaj Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -311,43 +311,43 @@ msgstr "Przeszukaj Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Odśwież"
|
msgstr "Odśwież"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Preferencje"
|
msgstr "Preferencje"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Skróty klawiszowe"
|
msgstr "Skróty klawiszowe"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Pliki"
|
msgstr "Pliki"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Nowy katalog"
|
msgstr "Nowy katalog"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Wyślij pliki"
|
msgstr "Wyślij pliki"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Wstecz/dalej"
|
msgstr "Wstecz/dalej"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Katalog nadrzędny"
|
msgstr "Katalog nadrzędny"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Siatka/lista"
|
msgstr "Siatka/lista"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -356,7 +356,7 @@ msgstr "Siatka/lista"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Zmień nazwę"
|
msgstr "Zmień nazwę"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -366,70 +366,83 @@ msgstr "Zmień nazwę"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Przenieś do kosza"
|
msgstr "Przenieś do kosza"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Wyczyść zaznaczenie"
|
msgstr "Wyczyść zaznaczenie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Większe miniatury"
|
msgstr "Większe miniatury"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Mniejsze miniatury"
|
msgstr "Mniejsze miniatury"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Przywróć rozmiar miniatur"
|
msgstr "Przywróć rozmiar miniatur"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Zaznacz wszystko"
|
msgstr "Zaznacz wszystko"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Przeglądarka zdjęć"
|
msgstr "Przeglądarka zdjęć"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Poprzednie/następne zdjęcie"
|
msgstr "Poprzednie/następne zdjęcie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Pierwsze/ostatnie zdjęcie"
|
msgstr "Pierwsze/ostatnie zdjęcie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Wyświetl szczegóły"
|
msgstr "Wyświetl szczegóły"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Pełny ekran"
|
msgstr "Pełny ekran"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zamknij"
|
msgstr "Zamknij"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Należy zaznaczyć jeden element, aby zmienić jego nazwę"
|
msgstr "Należy zaznaczyć jeden element, aby zmienić jego nazwę"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Brak połączenia"
|
msgstr "Brak połączenia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "Usługa Proton Drive nie jest uruchomiona."
|
msgstr "Usługa Proton Drive nie jest uruchomiona."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Nie można otworzyć Proton Drive"
|
msgstr "Nie można otworzyć Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"„{path}” zawiera już pliki, które „Moje pliki” by ukryły. Proton Drive sam "
|
||||||
|
"ponowi próbę, gdy katalog będzie pusty. Możesz też wybrać inny katalog dla "
|
||||||
|
"„Moich plików” w Preferencjach."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -438,17 +451,56 @@ msgstr ""
|
|||||||
"Usługa Proton Drive nie może się uruchomić i sama ponawia próby. Ostatni "
|
"Usługa Proton Drive nie może się uruchomić i sama ponawia próby. Ostatni "
|
||||||
"błąd: {error}"
|
"błąd: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Łączenie…"
|
msgstr "Łączenie…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Oczekiwanie na uruchomienie usługi Proton Drive."
|
msgstr "Oczekiwanie na uruchomienie usługi Proton Drive."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Twój katalog Proton Drive nie jest pusty"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"„{path}” zawiera już {n} element. „Moje pliki” by go ukryły, więc Proton "
|
||||||
|
"Drive się tam nie otwiera. Przenieś element do innego katalogu albo wybierz "
|
||||||
|
"inny katalog dla „Moich plików”."
|
||||||
|
msgstr[1] ""
|
||||||
|
"„{path}” zawiera już {n} elementy. „Moje pliki” by je ukryły, więc Proton "
|
||||||
|
"Drive się tam nie otwiera. Przenieś elementy do innego katalogu albo wybierz "
|
||||||
|
"inny katalog dla „Moich plików”."
|
||||||
|
msgstr[2] ""
|
||||||
|
"„{path}” zawiera już {n} elementów. „Moje pliki” by je ukryły, więc Proton "
|
||||||
|
"Drive się tam nie otwiera. Przenieś elementy do innego katalogu albo wybierz "
|
||||||
|
"inny katalog dla „Moich plików”."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Nie teraz"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Otwórz katalog"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Wybierz inny katalog…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -671,7 +723,7 @@ msgstr[1] "Utworzono {n} katalogi"
|
|||||||
msgstr[2] "Utworzono {n} katalogów"
|
msgstr[2] "Utworzono {n} katalogów"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1338,7 +1390,7 @@ msgstr "Nie można wczytać albumów"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1613,7 +1665,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Oznacz jako dostępne offline"
|
msgstr "Oznacz jako dostępne offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Oznacz jako tylko online"
|
msgstr "Oznacz jako tylko online"
|
||||||
|
|
||||||
@@ -2230,7 +2282,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Żadne pliki ani katalogi nie pasują do wyszukiwania."
|
msgstr "Żadne pliki ani katalogi nie pasują do wyszukiwania."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2986,7 +3038,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Wstrzymano synchronizację do czasu wznowienia"
|
msgstr "Wstrzymano synchronizację do czasu wznowienia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Wstrzymano synchronizację"
|
msgstr "Wstrzymano synchronizację"
|
||||||
|
|
||||||
@@ -5039,67 +5091,93 @@ msgstr "Nie można zapisać języka"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Proszę ponownie uruchomić Proton Drive, aby użyć nowego języka"
|
msgstr "Proszę ponownie uruchomić Proton Drive, aby użyć nowego języka"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Wybierz katalog Proton Drive"
|
msgstr "Wybierz katalog Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Nie można odczytać katalogu"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Wybierz pusty katalog"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"„{path}” zawiera już {n} element. „Moje pliki” by go ukryły, dopóki działa "
|
||||||
|
"Proton Drive, i nie zostałby wysłany."
|
||||||
|
msgstr[1] ""
|
||||||
|
"„{path}” zawiera już {n} elementy. „Moje pliki” by je ukryły, dopóki działa "
|
||||||
|
"Proton Drive, i nie zostałyby wysłane."
|
||||||
|
msgstr[2] ""
|
||||||
|
"„{path}” zawiera już {n} elementów. „Moje pliki” by je ukryły, dopóki działa "
|
||||||
|
"Proton Drive, i nie zostałyby wysłane."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Nie można zapisać katalogu"
|
msgstr "Nie można zapisać katalogu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Uruchomić ponownie Proton Drive?"
|
msgstr "Uruchomić ponownie Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"„Moje pliki” pojawią się w „{path}” po ponownym uruchomieniu Proton Drive."
|
"„Moje pliki” pojawią się w „{path}” po ponownym uruchomieniu Proton Drive."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Później"
|
msgstr "Później"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Uruchom ponownie teraz"
|
msgstr "Uruchom ponownie teraz"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "Użyto {size}"
|
msgstr "Użyto {size}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "Użyto {used} z {total} ({percent}%)"
|
msgstr "Użyto {used} z {total} ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Połączono z Proton Drive"
|
msgstr "Połączono z Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Twoje pliki są dostępne."
|
msgstr "Twoje pliki są dostępne."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Rozłączono z Proton Drive"
|
msgstr "Rozłączono z Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usługa Proton Drive zatrzymała się. Pliki będą niedostępne do jej ponownego "
|
"Usługa Proton Drive zatrzymała się. Pliki będą niedostępne do jej ponownego "
|
||||||
"uruchomienia."
|
"uruchomienia."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Ukończono synchronizację"
|
msgstr "Ukończono synchronizację"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5109,28 +5187,28 @@ msgstr[2] "Ukończono przesyłanie {n} plików."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} — {done} z {total}"
|
msgstr "{title} — {done} z {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} — {detail} ({done} z {total})"
|
msgstr "{title} — {detail} ({done} z {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} — {detail}…"
|
msgstr "{title} — {detail}…"
|
||||||
@@ -5138,7 +5216,7 @@ msgstr "{title} — {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
||||||
@@ -5146,74 +5224,74 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} z {total} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} z {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} w pamięci podręcznej — bez limitu"
|
msgstr "{used} w pamięci podręcznej — bez limitu"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "Użyto {used} z {limit}"
|
msgstr "Użyto {used} z {limit}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sesja wygasła"
|
msgstr "Sesja wygasła"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · zaloguj się ponownie, aby synchronizować"
|
msgstr "{queued} · zaloguj się ponownie, aby synchronizować"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Zaloguj się ponownie, aby synchronizować"
|
msgstr "Zaloguj się ponownie, aby synchronizować"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Logowanie nie zostało zapisane"
|
msgstr "Logowanie nie zostało zapisane"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Odblokuj bazę kluczy, inaczej następne ponowne uruchomienie spowoduje "
|
"Odblokuj bazę kluczy, inaczej następne ponowne uruchomienie spowoduje "
|
||||||
"wylogowanie"
|
"wylogowanie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Uruchom ponownie, aby dokończyć aktualizację"
|
msgstr "Uruchom ponownie, aby dokończyć aktualizację"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "Nadal działa starsza wersja Proton Drive"
|
msgstr "Nadal działa starsza wersja Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "Nadal działa Proton Drive {version}"
|
msgstr "Nadal działa Proton Drive {version}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · wznowienie {time}"
|
msgstr "{queued} · wznowienie {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Wznowienie {time}"
|
msgstr "Wznowienie {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Do czasu wznowienia"
|
msgstr "Do czasu wznowienia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
@@ -5221,81 +5299,89 @@ msgstr[0] "{n} zmiana wymaga uwagi"
|
|||||||
msgstr[1] "{n} zmiany wymagają uwagi"
|
msgstr[1] "{n} zmiany wymagają uwagi"
|
||||||
msgstr[2] "{n} zmian wymaga uwagi"
|
msgstr[2] "{n} zmian wymaga uwagi"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Tylko pliki w pamięci podręcznej"
|
msgstr "Tylko pliki w pamięci podręcznej"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Synchronizowanie"
|
msgstr "Synchronizowanie"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Aktualne"
|
msgstr "Aktualne"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "Proton Drive nie jest uruchomiony"
|
msgstr "Proton Drive nie jest uruchomiony"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Twój katalog Proton Drive nie jest pusty"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "Proton Drive wciąż próbuje się uruchomić"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Nie odpowiada"
|
msgstr "Nie odpowiada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "Proton Drive zbyt długo nie odpowiada"
|
msgstr "Proton Drive zbyt długo nie odpowiada"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "później"
|
msgstr "później"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "o %H:%M"
|
msgstr "o %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a %H:%M"
|
msgstr "%a %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "%-d %b"
|
msgstr "%-d %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Brak plików dostępnych offline"
|
msgstr "Brak plików dostępnych offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Należy kliknąć plik lub katalog prawym przyciskiem myszy i wybrać „Dostępne "
|
"Należy kliknąć plik lub katalog prawym przyciskiem myszy i wybrać „Dostępne "
|
||||||
"offline”."
|
"offline”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Nie można oznaczyć jako tylko online"
|
msgstr "Nie można oznaczyć jako tylko online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Wyświetl mniej"
|
msgstr "Wyświetl mniej"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6380,11 +6466,11 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Tylko online"
|
msgstr "Tylko online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosowo"
|
msgstr "Kosowo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
@@ -6392,7 +6478,7 @@ msgstr[0] "{n} plik w kolejce do wysłania"
|
|||||||
msgstr[1] "{n} pliki w kolejce do wysłania"
|
msgstr[1] "{n} pliki w kolejce do wysłania"
|
||||||
msgstr[2] "{n} plików w kolejce do wysłania"
|
msgstr[2] "{n} plików w kolejce do wysłania"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
@@ -6400,7 +6486,7 @@ msgstr[0] "{n} zmiana w kolejce"
|
|||||||
msgstr[1] "{n} zmiany w kolejce"
|
msgstr[1] "{n} zmiany w kolejce"
|
||||||
msgstr[2] "{n} zmian w kolejce"
|
msgstr[2] "{n} zmian w kolejce"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
@@ -6408,12 +6494,12 @@ msgstr[0] "{n} plik do wysłania"
|
|||||||
msgstr[1] "{n} pliki do wysłania"
|
msgstr[1] "{n} pliki do wysłania"
|
||||||
msgstr[2] "{n} plików do wysłania"
|
msgstr[2] "{n} plików do wysłania"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "W kolejce: {uploads}, {changes}"
|
msgstr "W kolejce: {uploads}, {changes}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6555,10 +6641,6 @@ msgstr "Otwórz Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Uruchom ponownie Proton Drive"
|
msgstr "Uruchom ponownie Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Otwórz katalog"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Wznów synchronizację"
|
msgstr "Wznów synchronizację"
|
||||||
@@ -6889,9 +6971,6 @@ msgstr "nie można połączyć się z usługą Proton Drive: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Zakończyć udostępnianie?"
|
#~ msgstr "Zakończyć udostępnianie?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Wybór katalogu punktu montowania"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Nie można zapisać punktu montowania"
|
#~ msgstr "Nie można zapisać punktu montowania"
|
||||||
|
|
||||||
|
|||||||
+205
-133
@@ -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 19:26+0100\n"
|
"POT-Creation-Date: 2026-11-01 17:51+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"
|
||||||
@@ -57,7 +57,7 @@ msgstr "%-d de %b de %Y"
|
|||||||
msgid "%A, %B %-d, %Y, %H:%M"
|
msgid "%A, %B %-d, %Y, %H:%M"
|
||||||
msgstr "%A, %-d de %B de %Y, %H:%M"
|
msgstr "%A, %-d de %B de %Y, %H:%M"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:856
|
#: crates/pdfs-gui/src/app/main.rs:860
|
||||||
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
#: crates/pdfs-gui/src/app/pages/activity_text.rs:543
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
#: crates/pdfs-gui/src/app/pages/browser.rs:454
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
#: crates/pdfs-gui/src/app/pages/browser.rs:833
|
||||||
@@ -70,74 +70,74 @@ msgstr "%A, %-d de %B de %Y, %H:%M"
|
|||||||
msgid "My files"
|
msgid "My files"
|
||||||
msgstr "Meus arquivos"
|
msgstr "Meus arquivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:859 crates/pdfs-gui/src/app/main.rs:1528
|
#: crates/pdfs-gui/src/app/main.rs:863 crates/pdfs-gui/src/app/main.rs:1532
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
#: crates/pdfs-gui/src/app/pages/albums.rs:638
|
||||||
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
#: crates/pdfs-gui/src/app/pages/photos.rs:845
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
#: crates/pdfs-gui/src/app/pages/places.rs:441
|
||||||
msgid "Photos"
|
msgid "Photos"
|
||||||
msgstr "Fotos"
|
msgstr "Fotos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:864
|
#: crates/pdfs-gui/src/app/main.rs:868
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
#: crates/pdfs-gui/src/app/pages/shared.rs:168
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
#: crates/pdfs-gui/src/app/pages/shared.rs:484
|
||||||
msgid "Shared with me"
|
msgid "Shared with me"
|
||||||
msgstr "Compartilhados comigo"
|
msgstr "Compartilhados comigo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:869
|
#: crates/pdfs-gui/src/app/main.rs:873
|
||||||
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:120
|
||||||
msgid "Shared by me"
|
msgid "Shared by me"
|
||||||
msgstr "Compartilhados por mim"
|
msgstr "Compartilhados por mim"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:872
|
#: crates/pdfs-gui/src/app/main.rs:876
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
#: crates/pdfs-gui/src/app/pages/devices.rs:140
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
#: crates/pdfs-gui/src/app/pages/devices.rs:493
|
||||||
msgid "Computers"
|
msgid "Computers"
|
||||||
msgstr "Computadores"
|
msgstr "Computadores"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:873
|
#: crates/pdfs-gui/src/app/main.rs:877
|
||||||
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
#: crates/pdfs-gui/src/app/pages/trash.rs:101
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr "Lixeira"
|
msgstr "Lixeira"
|
||||||
|
|
||||||
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
#. Translators: sidebar entry for the page listing this computer's synced folders.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:875
|
#: crates/pdfs-gui/src/app/main.rs:879
|
||||||
msgid "Sync"
|
msgid "Sync"
|
||||||
msgstr "Sincronização"
|
msgstr "Sincronização"
|
||||||
|
|
||||||
#. Translators: a failed action's toast. {what} says what failed, such as
|
#. Translators: a failed action's toast. {what} says what failed, such as
|
||||||
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
#. "Couldn't rename"; {detail} is the reason, usually untranslated text
|
||||||
#. from the mount service.
|
#. from the mount service.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1225
|
#: crates/pdfs-gui/src/app/main.rs:1229
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:714
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{what}: {detail}"
|
msgid "{what}: {detail}"
|
||||||
msgstr "{what}: {detail}"
|
msgstr "{what}: {detail}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1248
|
#: crates/pdfs-gui/src/app/main.rs:1252
|
||||||
msgid "You're offline"
|
msgid "You're offline"
|
||||||
msgstr "Você está offline"
|
msgstr "Você está offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1249
|
#: crates/pdfs-gui/src/app/main.rs:1253
|
||||||
msgid "That's not there any more"
|
msgid "That's not there any more"
|
||||||
msgstr "Isso não existe mais"
|
msgstr "Isso não existe mais"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1250
|
#: crates/pdfs-gui/src/app/main.rs:1254
|
||||||
msgid "You don't have access to that"
|
msgid "You don't have access to that"
|
||||||
msgstr "Você não tem acesso a isso"
|
msgstr "Você não tem acesso a isso"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1251
|
#: crates/pdfs-gui/src/app/main.rs:1255
|
||||||
msgid "Something changed this first"
|
msgid "Something changed this first"
|
||||||
msgstr "Algo alterou isso antes"
|
msgstr "Algo alterou isso antes"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1252
|
#: crates/pdfs-gui/src/app/main.rs:1256
|
||||||
msgid "Your Proton Drive is full"
|
msgid "Your Proton Drive is full"
|
||||||
msgstr "Seu Proton Drive está cheio"
|
msgstr "Seu Proton Drive está cheio"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1339
|
#: crates/pdfs-gui/src/app/main.rs:1343
|
||||||
msgid "Proton Drive for Linux"
|
msgid "Proton Drive for Linux"
|
||||||
msgstr "Proton Drive for Linux"
|
msgstr "Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1347
|
#: crates/pdfs-gui/src/app/main.rs:1351
|
||||||
msgid ""
|
msgid ""
|
||||||
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
"Files-on-demand Proton Drive for the Linux desktop.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -148,23 +148,23 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Cliente não oficial — sem afiliação, endosso ou suporte da Proton AG."
|
"Cliente não oficial — sem afiliação, endosso ou suporte da Proton AG."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1352
|
#: crates/pdfs-gui/src/app/main.rs:1356
|
||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Código-fonte"
|
msgstr "Código-fonte"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1356
|
#: crates/pdfs-gui/src/app/main.rs:1360
|
||||||
msgid "Proton Terms of Service"
|
msgid "Proton Terms of Service"
|
||||||
msgstr "Termos de Serviço da Proton"
|
msgstr "Termos de Serviço da Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1360
|
#: crates/pdfs-gui/src/app/main.rs:1364
|
||||||
msgid "Proton Privacy Policy"
|
msgid "Proton Privacy Policy"
|
||||||
msgstr "Política de Privacidade da Proton"
|
msgstr "Política de Privacidade da Proton"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1365
|
#: crates/pdfs-gui/src/app/main.rs:1369
|
||||||
msgid "Disclaimer"
|
msgid "Disclaimer"
|
||||||
msgstr "Aviso legal"
|
msgstr "Aviso legal"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1369
|
#: crates/pdfs-gui/src/app/main.rs:1373
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is an unofficial, community-built client. It is not affiliated with, "
|
"This is an unofficial, community-built client. It is not affiliated with, "
|
||||||
"endorsed by, or supported by Proton AG.\n"
|
"endorsed by, or supported by Proton AG.\n"
|
||||||
@@ -187,7 +187,7 @@ msgstr ""
|
|||||||
"Este software é fornecido “no estado em que se encontra”, sem garantia de "
|
"Este software é fornecido “no estado em que se encontra”, sem garantia de "
|
||||||
"qualquer tipo. Mantenha uma cópia de todos os dados que você não pode perder."
|
"qualquer tipo. Mantenha uma cópia de todos os dados que você não pode perder."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1377
|
#: crates/pdfs-gui/src/app/main.rs:1381
|
||||||
msgid ""
|
msgid ""
|
||||||
"Places are named with data from <a href=\"https://www.geonames.org/"
|
"Places are named with data from <a href=\"https://www.geonames.org/"
|
||||||
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licensed under <a href=\"https://creativecommons.org/"
|
||||||
@@ -197,7 +197,7 @@ msgstr ""
|
|||||||
"\">GeoNames</a>, licenciados sob <a href=\"https://creativecommons.org/"
|
"\">GeoNames</a>, licenciados sob <a href=\"https://creativecommons.org/"
|
||||||
"licenses/by/4.0/\">CC BY 4.0</a>."
|
"licenses/by/4.0/\">CC BY 4.0</a>."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1385
|
#: crates/pdfs-gui/src/app/main.rs:1389
|
||||||
msgid ""
|
msgid ""
|
||||||
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
"The places map is drawn from <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
"\">Natural Earth</a> land outlines and country borders, which are in the "
|
||||||
@@ -207,7 +207,7 @@ msgstr ""
|
|||||||
"fronteiras de países do <a href=\"https://www.naturalearthdata.com/"
|
"fronteiras de países do <a href=\"https://www.naturalearthdata.com/"
|
||||||
"\">Natural Earth</a>, que são de domínio público."
|
"\">Natural Earth</a>, que são de domínio público."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1393
|
#: crates/pdfs-gui/src/app/main.rs:1397
|
||||||
msgid ""
|
msgid ""
|
||||||
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
"The street map, when turned on, comes from <a href=\"https://openfreemap.org/"
|
||||||
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
"\">OpenFreeMap</a> in the <a href=\"https://www.openmaptiles.org/"
|
||||||
@@ -223,15 +223,15 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: replace with your name(s) and email address(es), one
|
#. Translators: replace with your name(s) and email address(es), one
|
||||||
#. per line, to be credited in the About dialog.
|
#. per line, to be credited in the About dialog.
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1404
|
#: crates/pdfs-gui/src/app/main.rs:1408
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Colaboradores do Proton Drive for Linux"
|
msgstr "Colaboradores do Proton Drive for Linux"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1448
|
#: crates/pdfs-gui/src/app/main.rs:1452
|
||||||
msgid "Stop Proton Drive?"
|
msgid "Stop Proton Drive?"
|
||||||
msgstr "Parar o Proton Drive?"
|
msgstr "Parar o Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1449
|
#: crates/pdfs-gui/src/app/main.rs:1453
|
||||||
msgid ""
|
msgid ""
|
||||||
"My files goes offline and nothing syncs until you connect again. Proton "
|
"My files goes offline and nothing syncs until you connect again. Proton "
|
||||||
"Drive starts again at your next login."
|
"Drive starts again at your next login."
|
||||||
@@ -239,7 +239,7 @@ msgstr ""
|
|||||||
"Meus arquivos fica offline e nada é sincronizado até você se conectar "
|
"Meus arquivos fica offline e nada é sincronizado até você se conectar "
|
||||||
"novamente. O Proton Drive será iniciado de novo no seu próximo login."
|
"novamente. O Proton Drive será iniciado de novo no seu próximo login."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1451 crates/pdfs-gui/src/app/main.rs:1726
|
#: crates/pdfs-gui/src/app/main.rs:1455 crates/pdfs-gui/src/app/main.rs:1730
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
#: crates/pdfs-gui/src/app/pages/albums.rs:243
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
#: crates/pdfs-gui/src/app/pages/albums.rs:428
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
#: crates/pdfs-gui/src/app/pages/browser.rs:1917
|
||||||
@@ -274,30 +274,30 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1452
|
#: crates/pdfs-gui/src/app/main.rs:1456
|
||||||
msgctxt "verb"
|
msgctxt "verb"
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Parar"
|
msgstr "Parar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1469
|
#: crates/pdfs-gui/src/app/main.rs:1473
|
||||||
msgid "Couldn't stop Proton Drive"
|
msgid "Couldn't stop Proton Drive"
|
||||||
msgstr "Não foi possível parar o Proton Drive"
|
msgstr "Não foi possível parar o Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1470
|
#: crates/pdfs-gui/src/app/main.rs:1474
|
||||||
msgid "The Proton Drive service did not stop."
|
msgid "The Proton Drive service did not stop."
|
||||||
msgstr "O serviço do Proton Drive não parou."
|
msgstr "O serviço do Proton Drive não parou."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1506
|
#: crates/pdfs-gui/src/app/main.rs:1510
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
#: crates/pdfs-gui/src/app/pages/status.rs:269
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Geral"
|
msgstr "Geral"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1508
|
#: crates/pdfs-gui/src/app/main.rs:1512
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
#: crates/pdfs-gui/src/app/pages/browser.rs:247
|
||||||
msgid "Search Drive"
|
msgid "Search Drive"
|
||||||
msgstr "Pesquisar no Drive"
|
msgstr "Pesquisar no Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1509
|
#: crates/pdfs-gui/src/app/main.rs:1513
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
#: crates/pdfs-gui/src/app/pages/browser.rs:984
|
||||||
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
#: crates/pdfs-gui/src/app/pages/devices.rs:559
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
#: crates/pdfs-gui/src/app/pages/shared.rs:581
|
||||||
@@ -306,43 +306,43 @@ msgstr "Pesquisar no Drive"
|
|||||||
msgid "Refresh"
|
msgid "Refresh"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1510
|
#: crates/pdfs-gui/src/app/main.rs:1514
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
#: crates/pdfs-gui/src/app/pages/status.rs:407
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Preferências"
|
msgstr "Preferências"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1511
|
#: crates/pdfs-gui/src/app/main.rs:1515
|
||||||
msgid "Keyboard shortcuts"
|
msgid "Keyboard shortcuts"
|
||||||
msgstr "Atalhos de teclado"
|
msgstr "Atalhos de teclado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1515
|
#: crates/pdfs-gui/src/app/main.rs:1519
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Arquivos"
|
msgstr "Arquivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1517
|
#: crates/pdfs-gui/src/app/main.rs:1521
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
#: crates/pdfs-gui/src/app/pages/browser.rs:294
|
||||||
msgid "New folder"
|
msgid "New folder"
|
||||||
msgstr "Nova pasta"
|
msgstr "Nova pasta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1518
|
#: crates/pdfs-gui/src/app/main.rs:1522
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
#: crates/pdfs-gui/src/app/pages/browser.rs:290
|
||||||
msgid "Upload files"
|
msgid "Upload files"
|
||||||
msgstr "Enviar arquivos"
|
msgstr "Enviar arquivos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1519
|
#: crates/pdfs-gui/src/app/main.rs:1523
|
||||||
msgid "Back / forward"
|
msgid "Back / forward"
|
||||||
msgstr "Voltar / avançar"
|
msgstr "Voltar / avançar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1520
|
#: crates/pdfs-gui/src/app/main.rs:1524
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
#: crates/pdfs-gui/src/app/pages/browser.rs:2014
|
||||||
msgid "Parent folder"
|
msgid "Parent folder"
|
||||||
msgstr "Pasta superior"
|
msgstr "Pasta superior"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1521
|
#: crates/pdfs-gui/src/app/main.rs:1525
|
||||||
msgid "Grid / list"
|
msgid "Grid / list"
|
||||||
msgstr "Grade / lista"
|
msgstr "Grade / lista"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1522
|
#: crates/pdfs-gui/src/app/main.rs:1526
|
||||||
#: 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
|
||||||
@@ -351,7 +351,7 @@ msgstr "Grade / lista"
|
|||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
msgstr "Renomear"
|
msgstr "Renomear"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1523 crates/pdfs-gui/src/app/main.rs:1543
|
#: crates/pdfs-gui/src/app/main.rs:1527 crates/pdfs-gui/src/app/main.rs:1547
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
#: crates/pdfs-gui/src/app/pages/browser.rs:357
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
#: crates/pdfs-gui/src/app/pages/browser.rs:924
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
#: crates/pdfs-gui/src/app/pages/browser.rs:959
|
||||||
@@ -361,70 +361,83 @@ msgstr "Renomear"
|
|||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr "Mover para a lixeira"
|
msgstr "Mover para a lixeira"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1524
|
#: crates/pdfs-gui/src/app/main.rs:1528
|
||||||
msgid "Clear the selection"
|
msgid "Clear the selection"
|
||||||
msgstr "Limpar a seleção"
|
msgstr "Limpar a seleção"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1530
|
#: crates/pdfs-gui/src/app/main.rs:1534
|
||||||
msgid "Larger thumbnails"
|
msgid "Larger thumbnails"
|
||||||
msgstr "Miniaturas maiores"
|
msgstr "Miniaturas maiores"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1531
|
#: crates/pdfs-gui/src/app/main.rs:1535
|
||||||
msgid "Smaller thumbnails"
|
msgid "Smaller thumbnails"
|
||||||
msgstr "Miniaturas menores"
|
msgstr "Miniaturas menores"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1532
|
#: crates/pdfs-gui/src/app/main.rs:1536
|
||||||
msgid "Reset thumbnail size"
|
msgid "Reset thumbnail size"
|
||||||
msgstr "Redefinir tamanho das miniaturas"
|
msgstr "Redefinir tamanho das miniaturas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1533
|
#: crates/pdfs-gui/src/app/main.rs:1537
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Selecionar tudo"
|
msgstr "Selecionar tudo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1537
|
#: crates/pdfs-gui/src/app/main.rs:1541
|
||||||
msgid "Photo Viewer"
|
msgid "Photo Viewer"
|
||||||
msgstr "Visualizador de fotos"
|
msgstr "Visualizador de fotos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1539
|
#: crates/pdfs-gui/src/app/main.rs:1543
|
||||||
msgid "Previous / next photo"
|
msgid "Previous / next photo"
|
||||||
msgstr "Foto anterior / próxima"
|
msgstr "Foto anterior / próxima"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1540
|
#: crates/pdfs-gui/src/app/main.rs:1544
|
||||||
msgid "First / last photo"
|
msgid "First / last photo"
|
||||||
msgstr "Primeira / última foto"
|
msgstr "Primeira / última foto"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1541
|
#: crates/pdfs-gui/src/app/main.rs:1545
|
||||||
msgid "Show details"
|
msgid "Show details"
|
||||||
msgstr "Mostrar detalhes"
|
msgstr "Mostrar detalhes"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1542
|
#: crates/pdfs-gui/src/app/main.rs:1546
|
||||||
msgid "Fullscreen"
|
msgid "Fullscreen"
|
||||||
msgstr "Tela cheia"
|
msgstr "Tela cheia"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1544
|
#: crates/pdfs-gui/src/app/main.rs:1548
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:855
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fechar"
|
msgstr "Fechar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1634
|
#: crates/pdfs-gui/src/app/main.rs:1638
|
||||||
msgid "Select a single item to rename it"
|
msgid "Select a single item to rename it"
|
||||||
msgstr "Selecione um único item para renomeá-lo"
|
msgstr "Selecione um único item para renomeá-lo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1794
|
#: crates/pdfs-gui/src/app/main.rs:1798
|
||||||
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
#: crates/pdfs-gui/src/app/pages/albums.rs:85
|
||||||
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
#: crates/pdfs-gui/src/app/pages/places.rs:104
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1492
|
#: crates/pdfs-gui/src/app/pages/status.rs:1571
|
||||||
msgid "Not connected"
|
msgid "Not connected"
|
||||||
msgstr "Não conectado"
|
msgstr "Não conectado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1795
|
#: crates/pdfs-gui/src/app/main.rs:1799
|
||||||
msgid "The Proton Drive service isn't running."
|
msgid "The Proton Drive service isn't running."
|
||||||
msgstr "O serviço do Proton Drive não está em execução."
|
msgstr "O serviço do Proton Drive não está em execução."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1813
|
#: crates/pdfs-gui/src/app/main.rs:1819 crates/pdfs-gui/src/app/main.rs:1834
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1577
|
||||||
msgid "Can't open your Drive"
|
msgid "Can't open your Drive"
|
||||||
msgstr "Não foi possível abrir o Proton Drive"
|
msgstr "Não foi possível abrir o Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1816
|
#: crates/pdfs-gui/src/app/main.rs:1822
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has files in it, and My files would hide them. Proton Drive "
|
||||||
|
"tries again on its own once the folder is empty. You can also choose another "
|
||||||
|
"folder for My files in Preferences."
|
||||||
|
msgstr ""
|
||||||
|
"“{path}” já tem arquivos, e Meus arquivos os esconderia. O Proton Drive "
|
||||||
|
"tenta de novo sozinho quando a pasta estiver vazia. Você também pode "
|
||||||
|
"escolher outra pasta para Meus arquivos em Preferências."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1837
|
||||||
#, rust-format
|
#, rust-format
|
||||||
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. "
|
||||||
@@ -433,17 +446,52 @@ msgstr ""
|
|||||||
"O serviço do Proton Drive não consegue iniciar e tenta de novo sozinho. "
|
"O serviço do Proton Drive não consegue iniciar e tenta de novo sozinho. "
|
||||||
"Último erro: {error}"
|
"Último erro: {error}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1824
|
#: crates/pdfs-gui/src/app/main.rs:1845
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
#: crates/pdfs-gui/src/app/pages/status.rs:355
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
#: crates/pdfs-gui/src/hud/mod.rs:269 crates/pdfs-gui/src/hud/mod.rs:579
|
||||||
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
#: crates/pdfs-gui/src/main.rs:493 crates/pdfs-gui/src/main.rs:535
|
||||||
msgid "Connecting…"
|
msgid "Connecting…"
|
||||||
msgstr "Conectando…"
|
msgstr "Conectando…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/main.rs:1825
|
#: crates/pdfs-gui/src/app/main.rs:1846
|
||||||
msgid "Waiting for the Proton Drive service to start."
|
msgid "Waiting for the Proton Drive service to start."
|
||||||
msgstr "Aguardando o serviço do Proton Drive iniciar."
|
msgstr "Aguardando o serviço do Proton Drive iniciar."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1864
|
||||||
|
msgid "Your Proton Drive Folder Isn't Empty"
|
||||||
|
msgstr "Sua pasta do Proton Drive não está vazia"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1868
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it, so Proton Drive "
|
||||||
|
"does not open there. Move the item to another folder, or choose another "
|
||||||
|
"folder for My files."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them, so Proton "
|
||||||
|
"Drive does not open there. Move the items to another folder, or choose "
|
||||||
|
"another folder for My files."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” já tem {n} item. Meus arquivos o esconderia, por isso o Proton "
|
||||||
|
"Drive não abre ali. Mova o item para outra pasta ou escolha outra pasta para "
|
||||||
|
"Meus arquivos."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” já tem {n} itens. Meus arquivos os esconderia, por isso o Proton "
|
||||||
|
"Drive não abre ali. Mova os itens para outra pasta ou escolha outra pasta "
|
||||||
|
"para Meus arquivos."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1874
|
||||||
|
msgid "Not Now"
|
||||||
|
msgstr "Agora não"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1875 crates/pdfs-gui/src/main.rs:500
|
||||||
|
msgid "Open Folder"
|
||||||
|
msgstr "Abrir pasta"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/main.rs:1876
|
||||||
|
msgid "Choose Another Folder…"
|
||||||
|
msgstr "Escolher outra pasta…"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
#: crates/pdfs-gui/src/app/pages/activity.rs:87
|
||||||
msgctxt "activity filter"
|
msgctxt "activity filter"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
@@ -654,7 +702,7 @@ msgstr[0] "{n} pasta criada"
|
|||||||
msgstr[1] "{n} pastas criadas"
|
msgstr[1] "{n} pastas criadas"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
#: crates/pdfs-gui/src/app/pages/activity.rs:983
|
||||||
#: crates/pdfs-gui/src/i18n.rs:191
|
#: crates/pdfs-gui/src/i18n.rs:195
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change"
|
msgid "{n} change"
|
||||||
msgid_plural "{n} changes"
|
msgid_plural "{n} changes"
|
||||||
@@ -1308,7 +1356,7 @@ msgstr "Não foi possível carregar os álbuns"
|
|||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1003
|
||||||
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
#: crates/pdfs-gui/src/app/pages/shared.rs:1119
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
#: crates/pdfs-gui/src/app/pages/status.rs:802
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1642
|
#: crates/pdfs-gui/src/app/pages/status.rs:1731
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:424
|
||||||
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
#: crates/pdfs-gui/src/app/pages/takeout.rs:618
|
||||||
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
#: crates/pdfs-gui/src/app/widgets/share_dialog.rs:516
|
||||||
@@ -1578,7 +1626,7 @@ msgid "Make available offline"
|
|||||||
msgstr "Disponibilizar offline"
|
msgstr "Disponibilizar offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
#: crates/pdfs-gui/src/app/pages/browser.rs:347
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1618
|
#: crates/pdfs-gui/src/app/pages/status.rs:1707
|
||||||
msgid "Make online only"
|
msgid "Make online only"
|
||||||
msgstr "Tornar somente online"
|
msgstr "Tornar somente online"
|
||||||
|
|
||||||
@@ -2174,7 +2222,7 @@ msgid "No files or folders match that search."
|
|||||||
msgstr "Nenhum arquivo ou pasta corresponde a essa pesquisa."
|
msgstr "Nenhum arquivo ou pasta corresponde a essa pesquisa."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
#: crates/pdfs-gui/src/app/pages/browser.rs:3096
|
||||||
#: crates/pdfs-gui/src/i18n.rs:248
|
#: crates/pdfs-gui/src/i18n.rs:252
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file"
|
msgid "{n} file"
|
||||||
msgid_plural "{n} files"
|
msgid_plural "{n} files"
|
||||||
@@ -2916,7 +2964,7 @@ msgid "Sync paused until you resume"
|
|||||||
msgstr "Sincronização pausada até você retomar"
|
msgstr "Sincronização pausada até você retomar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
#: crates/pdfs-gui/src/app/pages/locations.rs:570
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1445 crates/pdfs-gui/src/main.rs:308
|
#: crates/pdfs-gui/src/app/pages/status.rs:1524 crates/pdfs-gui/src/main.rs:308
|
||||||
msgid "Sync paused"
|
msgid "Sync paused"
|
||||||
msgstr "Sincronização pausada"
|
msgstr "Sincronização pausada"
|
||||||
|
|
||||||
@@ -4945,67 +4993,90 @@ msgstr "Não foi possível salvar o idioma"
|
|||||||
msgid "Restart Proton Drive to use the new language"
|
msgid "Restart Proton Drive to use the new language"
|
||||||
msgstr "Reinicie o Proton Drive para usar o novo idioma"
|
msgstr "Reinicie o Proton Drive para usar o novo idioma"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:813
|
#: crates/pdfs-gui/src/app/pages/status.rs:814
|
||||||
msgid "Choose Proton Drive Folder"
|
msgid "Choose Proton Drive Folder"
|
||||||
msgstr "Escolher a pasta do Proton Drive"
|
msgstr "Escolher a pasta do Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:825
|
#: crates/pdfs-gui/src/app/pages/status.rs:835
|
||||||
|
msgid "Couldn't read the folder"
|
||||||
|
msgstr "Não foi possível ler a pasta"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
||||||
|
msgid "Choose an Empty Folder"
|
||||||
|
msgstr "Escolha uma pasta vazia"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:849
|
||||||
|
#, rust-format
|
||||||
|
msgid ""
|
||||||
|
"“{path}” already has {n} item in it. My files would hide it while Proton "
|
||||||
|
"Drive runs, and it would not be uploaded."
|
||||||
|
msgid_plural ""
|
||||||
|
"“{path}” already has {n} items in it. My files would hide them while Proton "
|
||||||
|
"Drive runs, and they would not be uploaded."
|
||||||
|
msgstr[0] ""
|
||||||
|
"“{path}” já tem {n} item. Meus arquivos o esconderia enquanto o Proton Drive "
|
||||||
|
"estiver em execução, e ele não seria enviado."
|
||||||
|
msgstr[1] ""
|
||||||
|
"“{path}” já tem {n} itens. Meus arquivos os esconderia enquanto o Proton "
|
||||||
|
"Drive estiver em execução, e eles não seriam enviados."
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:870
|
||||||
msgid "Couldn't save the folder"
|
msgid "Couldn't save the folder"
|
||||||
msgstr "Não foi possível salvar a pasta"
|
msgstr "Não foi possível salvar a pasta"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:837
|
#: crates/pdfs-gui/src/app/pages/status.rs:882
|
||||||
msgid "Restart Proton Drive?"
|
msgid "Restart Proton Drive?"
|
||||||
msgstr "Reiniciar o Proton Drive?"
|
msgstr "Reiniciar o Proton Drive?"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:840
|
#: crates/pdfs-gui/src/app/pages/status.rs:885
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
msgid "My files now appears in “{path}” after Proton Drive restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Meus arquivos aparecerá em “{path}” depois que o Proton Drive reiniciar."
|
"Meus arquivos aparecerá em “{path}” depois que o Proton Drive reiniciar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:844
|
#: crates/pdfs-gui/src/app/pages/status.rs:889
|
||||||
msgid "Later"
|
msgid "Later"
|
||||||
msgstr "Mais tarde"
|
msgstr "Mais tarde"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:845
|
#: crates/pdfs-gui/src/app/pages/status.rs:890
|
||||||
msgid "Restart Now"
|
msgid "Restart Now"
|
||||||
msgstr "Reiniciar agora"
|
msgstr "Reiniciar agora"
|
||||||
|
|
||||||
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
#. Translators: {size} is an amount of storage, such as "1.2 GiB".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:972
|
#: crates/pdfs-gui/src/app/pages/status.rs:1016
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{size} used"
|
msgid "{size} used"
|
||||||
msgstr "{size} usados"
|
msgstr "{size} usados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:983
|
#: crates/pdfs-gui/src/app/pages/status.rs:1027
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {total} used ({percent}%)"
|
msgid "{used} of {total} used ({percent}%)"
|
||||||
msgstr "{used} de {total} usados ({percent}%)"
|
msgstr "{used} de {total} usados ({percent}%)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1023
|
#: crates/pdfs-gui/src/app/pages/status.rs:1067
|
||||||
msgid "Proton Drive connected"
|
msgid "Proton Drive connected"
|
||||||
msgstr "Proton Drive conectado"
|
msgstr "Proton Drive conectado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1024
|
#: crates/pdfs-gui/src/app/pages/status.rs:1068
|
||||||
msgid "Your files are available."
|
msgid "Your files are available."
|
||||||
msgstr "Seus arquivos estão disponíveis."
|
msgstr "Seus arquivos estão disponíveis."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1029
|
#: crates/pdfs-gui/src/app/pages/status.rs:1073
|
||||||
msgid "Proton Drive disconnected"
|
msgid "Proton Drive disconnected"
|
||||||
msgstr "Proton Drive desconectado"
|
msgstr "Proton Drive desconectado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1030
|
#: crates/pdfs-gui/src/app/pages/status.rs:1074
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Proton Drive service stopped. Files aren't available until it restarts."
|
"The Proton Drive service stopped. Files aren't available until it restarts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"O serviço do Proton Drive parou. Os arquivos ficarão indisponíveis até ele "
|
"O serviço do Proton Drive parou. Os arquivos ficarão indisponíveis até ele "
|
||||||
"reiniciar."
|
"reiniciar."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1099
|
#: crates/pdfs-gui/src/app/pages/status.rs:1143
|
||||||
msgid "Sync complete"
|
msgid "Sync complete"
|
||||||
msgstr "Sincronização concluída"
|
msgstr "Sincronização concluída"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1101
|
#: crates/pdfs-gui/src/app/pages/status.rs:1145
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file finished transferring."
|
msgid "{n} file finished transferring."
|
||||||
msgid_plural "{n} files finished transferring."
|
msgid_plural "{n} files finished transferring."
|
||||||
@@ -5014,28 +5085,28 @@ msgstr[1] "{n} arquivos terminaram de ser transferidos."
|
|||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, such as
|
#. Translators: a background job's progress. {title} is the job, such as
|
||||||
#. "Scanning Photos"; {done} and {total} are counts.
|
#. "Scanning Photos"; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1179
|
#: crates/pdfs-gui/src/app/pages/status.rs:1223
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {done} of {total}"
|
msgid "{title} — {done} of {total}"
|
||||||
msgstr "{title} — {done} de {total}"
|
msgstr "{title} — {done} de {total}"
|
||||||
|
|
||||||
#. Translators: a background job's progress. {title} is the job, {detail}
|
#. Translators: a background job's progress. {title} is the job, {detail}
|
||||||
#. what it is working on; {done} and {total} are counts.
|
#. what it is working on; {done} and {total} are counts.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1182
|
#: crates/pdfs-gui/src/app/pages/status.rs:1226
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail} ({done} of {total})"
|
msgid "{title} — {detail} ({done} of {total})"
|
||||||
msgstr "{title} — {detail} ({done} de {total})"
|
msgstr "{title} — {detail} ({done} de {total})"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job.
|
#. Translators: a background job still running. {title} is the job.
|
||||||
#. Translators: {title} names a running job whose size is not known yet.
|
#. Translators: {title} names a running job whose size is not known yet.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1184 crates/pdfs-gui/src/main.rs:113
|
#: crates/pdfs-gui/src/app/pages/status.rs:1228 crates/pdfs-gui/src/main.rs:113
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title}…"
|
msgid "{title}…"
|
||||||
msgstr "{title}…"
|
msgstr "{title}…"
|
||||||
|
|
||||||
#. Translators: a background job still running. {title} is the job,
|
#. Translators: a background job still running. {title} is the job,
|
||||||
#. {detail} what it is working on.
|
#. {detail} what it is working on.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1187
|
#: crates/pdfs-gui/src/app/pages/status.rs:1231
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{title} — {detail}…"
|
msgid "{title} — {detail}…"
|
||||||
msgstr "{title} — {detail}…"
|
msgstr "{title} — {detail}…"
|
||||||
@@ -5043,7 +5114,7 @@ msgstr "{title} — {detail}…"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} the size moved so far and {speed} a size such as
|
#. file name, {done} the size moved so far and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1216
|
#: crates/pdfs-gui/src/app/pages/status.rs:1260
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} ({speed}/s)"
|
msgid "{arrow} {name} — {done} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} ({speed}/s)"
|
||||||
@@ -5051,154 +5122,162 @@ msgstr "{arrow} {name} — {done} ({speed}/s)"
|
|||||||
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
#. Translators: a file being transferred. {arrow} is ↑ or ↓, {name} the
|
||||||
#. file name, {done} and {total} sizes and {speed} a size such as
|
#. file name, {done} and {total} sizes and {speed} a size such as
|
||||||
#. "1.2 MiB"; "/s" means per second.
|
#. "1.2 MiB"; "/s" means per second.
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1224
|
#: crates/pdfs-gui/src/app/pages/status.rs:1268
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
msgid "{arrow} {name} — {done} of {total} ({speed}/s)"
|
||||||
msgstr "{arrow} {name} — {done} de {total} ({speed}/s)"
|
msgstr "{arrow} {name} — {done} de {total} ({speed}/s)"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1325
|
#: crates/pdfs-gui/src/app/pages/status.rs:1369
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} cached — no limit set"
|
msgid "{used} cached — no limit set"
|
||||||
msgstr "{used} em cache — sem limite definido"
|
msgstr "{used} em cache — sem limite definido"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1331
|
#: crates/pdfs-gui/src/app/pages/status.rs:1375
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{used} of {limit} used"
|
msgid "{used} of {limit} used"
|
||||||
msgstr "{used} de {limit} usados"
|
msgstr "{used} de {limit} usados"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1410
|
#: crates/pdfs-gui/src/app/pages/status.rs:1489
|
||||||
msgid "Session expired"
|
msgid "Session expired"
|
||||||
msgstr "Sessão expirada"
|
msgstr "Sessão expirada"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1415
|
#: crates/pdfs-gui/src/app/pages/status.rs:1494
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · sign in again to sync"
|
msgid "{queued} · sign in again to sync"
|
||||||
msgstr "{queued} · entre novamente para sincronizar"
|
msgstr "{queued} · entre novamente para sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1417
|
#: crates/pdfs-gui/src/app/pages/status.rs:1496
|
||||||
msgid "Sign in again to sync"
|
msgid "Sign in again to sync"
|
||||||
msgstr "Entre novamente para sincronizar"
|
msgstr "Entre novamente para sincronizar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1423
|
#: crates/pdfs-gui/src/app/pages/status.rs:1502
|
||||||
msgid "Sign-in not saved"
|
msgid "Sign-in not saved"
|
||||||
msgstr "Login não salvo"
|
msgstr "Login não salvo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1425
|
#: crates/pdfs-gui/src/app/pages/status.rs:1504
|
||||||
msgid "Unlock your keyring, or the next reboot signs you out"
|
msgid "Unlock your keyring, or the next reboot signs you out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Desbloqueie o chaveiro, ou a próxima reinicialização encerrará sua sessão"
|
"Desbloqueie o chaveiro, ou a próxima reinicialização encerrará sua sessão"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1431
|
#: crates/pdfs-gui/src/app/pages/status.rs:1510
|
||||||
msgid "Restart to finish updating"
|
msgid "Restart to finish updating"
|
||||||
msgstr "Reinicie para concluir a atualização"
|
msgstr "Reinicie para concluir a atualização"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1433
|
#: crates/pdfs-gui/src/app/pages/status.rs:1512
|
||||||
msgid "An older version of Proton Drive is still running"
|
msgid "An older version of Proton Drive is still running"
|
||||||
msgstr "Uma versão anterior do Proton Drive ainda está em execução"
|
msgstr "Uma versão anterior do Proton Drive ainda está em execução"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1437
|
#: crates/pdfs-gui/src/app/pages/status.rs:1516
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Proton Drive {version} is still running"
|
msgid "Proton Drive {version} is still running"
|
||||||
msgstr "O Proton Drive {version} ainda está em execução"
|
msgstr "O Proton Drive {version} ainda está em execução"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1450
|
#: crates/pdfs-gui/src/app/pages/status.rs:1529
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{queued} · resumes {time}"
|
msgid "{queued} · resumes {time}"
|
||||||
msgstr "{queued} · retoma {time}"
|
msgstr "{queued} · retoma {time}"
|
||||||
|
|
||||||
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
#. Translators: {time} is when syncing resumes, such as "at 14:30"
|
||||||
#. or "Tue 09:00".
|
#. or "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1455
|
#: crates/pdfs-gui/src/app/pages/status.rs:1534
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Resumes {time}"
|
msgid "Resumes {time}"
|
||||||
msgstr "Retoma {time}"
|
msgstr "Retoma {time}"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1457
|
#: crates/pdfs-gui/src/app/pages/status.rs:1536
|
||||||
msgid "Until you resume"
|
msgid "Until you resume"
|
||||||
msgstr "Até você retomar"
|
msgstr "Até você retomar"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1464 crates/pdfs-gui/src/main.rs:310
|
#: crates/pdfs-gui/src/app/pages/status.rs:1543 crates/pdfs-gui/src/main.rs:310
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change needs attention"
|
msgid "{n} change needs attention"
|
||||||
msgid_plural "{n} changes need attention"
|
msgid_plural "{n} changes need attention"
|
||||||
msgstr[0] "{n} alteração requer atenção"
|
msgstr[0] "{n} alteração requer atenção"
|
||||||
msgstr[1] "{n} alterações requerem atenção"
|
msgstr[1] "{n} alterações requerem atenção"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1474
|
#: crates/pdfs-gui/src/app/pages/status.rs:1553
|
||||||
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
#: crates/pdfs-gui/src/app/widgets/details.rs:110
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1475
|
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
||||||
msgid "Cached files only"
|
msgid "Cached files only"
|
||||||
msgstr "Somente arquivos em cache"
|
msgstr "Somente arquivos em cache"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1480
|
#: crates/pdfs-gui/src/app/pages/status.rs:1559
|
||||||
msgctxt "state"
|
msgctxt "state"
|
||||||
msgid "Syncing"
|
msgid "Syncing"
|
||||||
msgstr "Sincronizando"
|
msgstr "Sincronizando"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1486
|
#: crates/pdfs-gui/src/app/pages/status.rs:1565
|
||||||
msgid "Up to date"
|
msgid "Up to date"
|
||||||
msgstr "Atualizado"
|
msgstr "Atualizado"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1493
|
#: crates/pdfs-gui/src/app/pages/status.rs:1572
|
||||||
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
#: crates/pdfs-gui/src/hud/mod.rs:592 crates/pdfs-gui/src/hud/mod.rs:606
|
||||||
msgid "Proton Drive isn't running"
|
msgid "Proton Drive isn't running"
|
||||||
msgstr "O Proton Drive não está em execução"
|
msgstr "O Proton Drive não está em execução"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1498
|
#: crates/pdfs-gui/src/app/pages/status.rs:1579
|
||||||
|
msgid "Your Proton Drive folder isn't empty"
|
||||||
|
msgstr "Sua pasta do Proton Drive não está vazia"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1581
|
||||||
|
msgid "Proton Drive keeps trying to start"
|
||||||
|
msgstr "O Proton Drive continua tentando iniciar"
|
||||||
|
|
||||||
|
#: crates/pdfs-gui/src/app/pages/status.rs:1587
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr "Não está respondendo"
|
msgstr "Não está respondendo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1499
|
#: crates/pdfs-gui/src/app/pages/status.rs:1588
|
||||||
msgid "Proton Drive is taking too long to answer"
|
msgid "Proton Drive is taking too long to answer"
|
||||||
msgstr "O Proton Drive está demorando demais para responder"
|
msgstr "O Proton Drive está demorando demais para responder"
|
||||||
|
|
||||||
#. Translators: stands in for a time that could not be read, as in
|
#. Translators: stands in for a time that could not be read, as in
|
||||||
#. "Resumes later".
|
#. "Resumes later".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1539
|
#: crates/pdfs-gui/src/app/pages/status.rs:1628
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1554
|
#: crates/pdfs-gui/src/app/pages/status.rs:1643
|
||||||
msgid "later"
|
msgid "later"
|
||||||
msgstr "mais tarde"
|
msgstr "mais tarde"
|
||||||
|
|
||||||
#. Translators: strftime format for a time later today, such as "at 14:30".
|
#. Translators: strftime format for a time later today, such as "at 14:30".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1543
|
#: crates/pdfs-gui/src/app/pages/status.rs:1632
|
||||||
msgid "at %H:%M"
|
msgid "at %H:%M"
|
||||||
msgstr "às %H:%M"
|
msgstr "às %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a time within the next week, such as
|
#. Translators: strftime format for a time within the next week, such as
|
||||||
#. "Tue 09:00".
|
#. "Tue 09:00".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1547
|
#: crates/pdfs-gui/src/app/pages/status.rs:1636
|
||||||
msgid "%a %H:%M"
|
msgid "%a %H:%M"
|
||||||
msgstr "%a às %H:%M"
|
msgstr "%a às %H:%M"
|
||||||
|
|
||||||
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
#. Translators: strftime format for a date further ahead, such as "23 Sep".
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1550
|
#: crates/pdfs-gui/src/app/pages/status.rs:1639
|
||||||
msgid "%e %b"
|
msgid "%e %b"
|
||||||
msgstr "em %-d de %b"
|
msgstr "em %-d de %b"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1580
|
#: crates/pdfs-gui/src/app/pages/status.rs:1669
|
||||||
msgid "No files kept offline"
|
msgid "No files kept offline"
|
||||||
msgstr "Nenhum arquivo mantido offline"
|
msgstr "Nenhum arquivo mantido offline"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1582
|
#: crates/pdfs-gui/src/app/pages/status.rs:1671
|
||||||
msgid "Right-click a file or folder and choose “Available offline”."
|
msgid "Right-click a file or folder and choose “Available offline”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Clique com o botão direito em um arquivo ou pasta e escolha “Disponível "
|
"Clique com o botão direito em um arquivo ou pasta e escolha “Disponível "
|
||||||
"offline”."
|
"offline”."
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1634
|
#: crates/pdfs-gui/src/app/pages/status.rs:1723
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1641
|
#: crates/pdfs-gui/src/app/pages/status.rs:1730
|
||||||
msgid "Couldn't make it online only"
|
msgid "Couldn't make it online only"
|
||||||
msgstr "Não foi possível torná-lo somente online"
|
msgstr "Não foi possível torná-lo somente online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1658
|
#: crates/pdfs-gui/src/app/pages/status.rs:1747
|
||||||
msgid "Show fewer"
|
msgid "Show fewer"
|
||||||
msgstr "Mostrar menos"
|
msgstr "Mostrar menos"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/app/pages/status.rs:1661
|
#: crates/pdfs-gui/src/app/pages/status.rs:1750
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "Show all {n} file"
|
msgid "Show all {n} file"
|
||||||
msgid_plural "Show all {n} files"
|
msgid_plural "Show all {n} files"
|
||||||
@@ -6270,37 +6349,37 @@ msgctxt "file state"
|
|||||||
msgid "Online only"
|
msgid "Online only"
|
||||||
msgstr "Somente online"
|
msgstr "Somente online"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:84
|
#: crates/pdfs-gui/src/i18n.rs:85
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr "Kosovo"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:178
|
#: crates/pdfs-gui/src/i18n.rs:182
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload queued"
|
msgid "{n} upload queued"
|
||||||
msgid_plural "{n} uploads queued"
|
msgid_plural "{n} uploads queued"
|
||||||
msgstr[0] "{n} envio na fila"
|
msgstr[0] "{n} envio na fila"
|
||||||
msgstr[1] "{n} envios na fila"
|
msgstr[1] "{n} envios na fila"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:184
|
#: crates/pdfs-gui/src/i18n.rs:188
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} change queued"
|
msgid "{n} change queued"
|
||||||
msgid_plural "{n} changes queued"
|
msgid_plural "{n} changes queued"
|
||||||
msgstr[0] "{n} alteração na fila"
|
msgstr[0] "{n} alteração na fila"
|
||||||
msgstr[1] "{n} alterações na fila"
|
msgstr[1] "{n} alterações na fila"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:190
|
#: crates/pdfs-gui/src/i18n.rs:194
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} upload"
|
msgid "{n} upload"
|
||||||
msgid_plural "{n} uploads"
|
msgid_plural "{n} uploads"
|
||||||
msgstr[0] "{n} envio"
|
msgstr[0] "{n} envio"
|
||||||
msgstr[1] "{n} envios"
|
msgstr[1] "{n} envios"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:194
|
#: crates/pdfs-gui/src/i18n.rs:198
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{uploads}, {changes} queued"
|
msgid "{uploads}, {changes} queued"
|
||||||
msgstr "{uploads}, {changes} na fila"
|
msgstr "{uploads}, {changes} na fila"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/i18n.rs:251
|
#: crates/pdfs-gui/src/i18n.rs:255
|
||||||
#, rust-format
|
#, rust-format
|
||||||
msgid "{n} file in {dir}"
|
msgid "{n} file in {dir}"
|
||||||
msgid_plural "{n} files in {dir}"
|
msgid_plural "{n} files in {dir}"
|
||||||
@@ -6435,10 +6514,6 @@ msgstr "Abrir o Proton Drive"
|
|||||||
msgid "Restart Proton Drive"
|
msgid "Restart Proton Drive"
|
||||||
msgstr "Reiniciar o Proton Drive"
|
msgstr "Reiniciar o Proton Drive"
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:500
|
|
||||||
msgid "Open Folder"
|
|
||||||
msgstr "Abrir pasta"
|
|
||||||
|
|
||||||
#: crates/pdfs-gui/src/main.rs:512
|
#: crates/pdfs-gui/src/main.rs:512
|
||||||
msgid "Resume Sync"
|
msgid "Resume Sync"
|
||||||
msgstr "Retomar sincronização"
|
msgstr "Retomar sincronização"
|
||||||
@@ -6768,9 +6843,6 @@ msgstr "não foi possível acessar o daemon do Proton Drive: {error}"
|
|||||||
#~ msgid "Stop sharing?"
|
#~ msgid "Stop sharing?"
|
||||||
#~ msgstr "Parar de compartilhar?"
|
#~ msgstr "Parar de compartilhar?"
|
||||||
|
|
||||||
#~ msgid "Choose mountpoint folder"
|
|
||||||
#~ msgstr "Escolher a pasta do ponto de montagem"
|
|
||||||
|
|
||||||
#~ msgid "Couldn't save mountpoint"
|
#~ msgid "Couldn't save mountpoint"
|
||||||
#~ msgstr "Não foi possível salvar o ponto de montagem"
|
#~ msgstr "Não foi possível salvar o ponto de montagem"
|
||||||
|
|
||||||
|
|||||||
@@ -3561,8 +3561,36 @@ JOURNAL_WARNINGS = (
|
|||||||
"queued write conflicts; keeping a conflict copy",
|
"queued write conflicts; keeping a conflict copy",
|
||||||
"a fuse worker has held the same job for a long time",
|
"a fuse worker has held the same job for a long time",
|
||||||
"re-interned an authority missing from the local tree",
|
"re-interned an authority missing from the local tree",
|
||||||
|
# A Rust panic goes to stderr without a tracing level, so the ERROR match
|
||||||
|
# does not see it (`docs/BUGS.md` B276).
|
||||||
|
"panicked at",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# A stop aborts each mount's FUSE connection so the unmount cannot hang. A
|
||||||
|
# request still running then replies into a connection the kernel has
|
||||||
|
# closed, and the kernel refuses that reply with ENOENT. While a stop is in
|
||||||
|
# progress that error is expected (`docs/BUGS.md` B276); at any other time it
|
||||||
|
# still counts.
|
||||||
|
STOP_STARTED = "aborted FUSE connection to unblock unmount"
|
||||||
|
STOP_ENDED = ("daemon stopping", "control socket listening")
|
||||||
|
LATE_REPLY = "Failed to send FUSE reply: No such file or directory"
|
||||||
|
|
||||||
|
|
||||||
|
def journal_problems(lines: list[str]) -> list[str]:
|
||||||
|
"""The lines of `lines` that count as problems."""
|
||||||
|
problems = []
|
||||||
|
stopping = False
|
||||||
|
for line in lines:
|
||||||
|
if STOP_STARTED in line:
|
||||||
|
stopping = True
|
||||||
|
elif any(marker in line for marker in STOP_ENDED):
|
||||||
|
stopping = False
|
||||||
|
if stopping and LATE_REPLY in line:
|
||||||
|
continue
|
||||||
|
if ERROR_LEVEL.search(line) or any(warning in line for warning in JOURNAL_WARNINGS):
|
||||||
|
problems.append(line)
|
||||||
|
return problems
|
||||||
|
|
||||||
|
|
||||||
def read_journal(unit: str, since: float) -> list[str] | None:
|
def read_journal(unit: str, since: float) -> list[str] | None:
|
||||||
"""The unit's journal lines since `since`, or None without journalctl.
|
"""The unit's journal lines since `since`, or None without journalctl.
|
||||||
@@ -3621,11 +3649,7 @@ class JournalWatch:
|
|||||||
# Filtering on syslog priority (`-p err`) finds nothing: the daemon writes
|
# Filtering on syslog priority (`-p err`) finds nothing: the daemon writes
|
||||||
# tracing levels as text on stdout, which journald files at the unit's
|
# tracing levels as text on stdout, which journald files at the unit's
|
||||||
# default priority. Match the level token instead.
|
# default priority. Match the level token instead.
|
||||||
return [
|
return journal_problems(lines)
|
||||||
line
|
|
||||||
for line in lines
|
|
||||||
if ERROR_LEVEL.search(line) or any(warning in line for warning in JOURNAL_WARNINGS)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in new issue
Block a user