Compare commits

..
Author SHA1 Message Date
nvrl d13e74fc12 fix(gui,cli,core): offer the CAPTCHA in the browser when the web view cannot start (B195)
The verification window now runs in its own process, so the app survives
when WebKit cannot start its sandbox on secureblue, but the CAPTCHA still
could not be solved there (#29). WebKit binds the journal socket with
`--ro-bind-try`, bubblewrap only skips a missing path, not an unreadable
one, and WebKit has no switch to leave the socket out.

Proton Mail Bridge never uses a web view: it opens verify.proton.me in the
system browser and retries with the original challenge token, typed with
the offered methods. Do the same as a fallback.

- core: `browser_verification_url` and `browser_verified` build the page
  URL and the retry credential from the challenge
- gui: when the verification window fails, a dialog opens the page in the
  browser and continues the sign-in once the user is done
- cli: `pdfs login` handles a CAPTCHA the same way instead of failing
- i18n: translate the new dialog in every catalog
- docs: B195, TROUBLESHOOTING.md, ARCHITECTURE.md, changelog

Fixes #29
2026-10-08 19:02:29 +02:00
nvrl 07c9b675d3 chore(deps) updated sdk to 0.8.1 2026-10-08 15:25:44 +02:00
nvrl f82343b844 Merge pull request #30 from narrrl/fix/secureblue-captcha
Fix/secureblue captcha
2026-10-08 15:25:05 +02:00
Nils Pukropp d09e10dc7d chore(aur): update packages to 3.1.1 2026-10-08 09:49:25 +00:00
nvrl 8d0351124c chore(release): 3.1.2 2026-10-08 11:31:18 +02:00
nvrl a888e0bb28 fix(gui): run the CAPTCHA page in its own process (B195)
On secureblue, WebKit cannot start the sandbox for the verification page:
bubblewrap is kept from the journal socket, xdg-dbus-proxy fails, and
WebKit ends its process with g_error. The webview lived in pdfs-app, so
the whole app crashed after the sign-in (#29).

- gui: `pdfs-app --human-verification` shows the page in its own window,
  reads the URL on stdin and prints the token on stdout; its logs go to
  stderr
- gui: a child that dies or fails without a token ends the sign-in with a
  message that the page could not be opened, instead of "cancelled"
- i18n: translate the new message in every catalog
- docs: B195 in the bug ledger, the cause and a one-time workaround in
  TROUBLESHOOTING.md, the child process in ARCHITECTURE.md, changelog
2026-10-08 10:25:14 +02:00
nvrl c7fc85e943 fix(gui): create the state dir before the tray and app use it (B194)
On a fresh install only the daemon and the CLI created
~/.local/state/proton-drive-linux. The app starts the tray before the
first sign-in, so the tray failed to bind its single-instance socket and
exited, and the Takeout page could not remember staged archives (#29).

- gui: pdfs-tray and pdfs-app call AppDirs::ensure at start, which also
  makes the directories owner-only
- docs: B194 in the bug ledger, changelog entry
2026-10-08 10:25:04 +02:00
nvrl 5bfae0fee1 docs(changelog): add the 3.1.1 entry
3.1.1 shipped the client identity change without a changelog entry. Also
add the missing release links for 3.1.0 and 3.1.1.
2026-10-08 10:24:07 +02:00
nvrl edd62c5f7a chore(release): 3.1.1 2026-10-07 17:01:32 +02:00
nvrl 5c1530b4b9 fix(core,gui): send the release version as the client identity
Every release sent the fixed `external-drive-linux@0.1.0-alpha`. If Proton
ever retires that version, every release fails sign-in at once and no update
can fix it.

- core: APP_VERSION and USER_AGENT follow CARGO_PKG_VERSION
  (`external-drive-linux@<version>-stable`, `proton-drive-linux/<version>`)
- core: `app_version` and `user_agent` in config.json are optional overrides;
  the fixed values older releases stored there read as unset and leave the
  file on the next save, a hand-set value is kept
- gui: the About dialog shows the release, its debug info the identity
  actually sent
- docs: describe the new default and the migration
2026-10-07 17:01:32 +02:00
Nils Pukropp ce324510de chore(aur): update packages to 3.1.0 2026-10-07 10:53:15 +00:00
nvrl 274bfd0ca2 Merge pull request #27 from narrrl/feature/two-password-mode
Feature/two password mode
2026-10-07 12:47:05 +02:00
30 changed files with 1870 additions and 1042 deletions

No files matched your search

Generated
+22 -22
View File
@@ -166,7 +166,7 @@ version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -177,7 +177,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"once_cell_polyfill", "once_cell_polyfill",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -1254,7 +1254,7 @@ dependencies = [
"libc", "libc",
"option-ext", "option-ext",
"redox_users", "redox_users",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -1433,7 +1433,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -1896,7 +1896,7 @@ dependencies = [
"gobject-sys", "gobject-sys",
"libc", "libc",
"system-deps 9.0.0", "system-deps 9.0.0",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -3100,7 +3100,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -3474,7 +3474,7 @@ checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4"
[[package]] [[package]]
name = "pdfs-cli" name = "pdfs-cli"
version = "3.1.0" version = "3.1.2"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@@ -3490,7 +3490,7 @@ dependencies = [
[[package]] [[package]]
name = "pdfs-core" name = "pdfs-core"
version = "3.1.0" version = "3.1.2"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64 0.23.1", "base64 0.23.1",
@@ -3516,7 +3516,7 @@ dependencies = [
[[package]] [[package]]
name = "pdfs-fuse" name = "pdfs-fuse"
version = "3.1.0" version = "3.1.2"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64 0.23.1", "base64 0.23.1",
@@ -3538,7 +3538,7 @@ dependencies = [
[[package]] [[package]]
name = "pdfs-gui" name = "pdfs-gui"
version = "3.1.0" version = "3.1.2"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-channel", "async-channel",
@@ -3778,9 +3778,9 @@ dependencies = [
[[package]] [[package]]
name = "proton-drive-rs" name = "proton-drive-rs"
version = "0.8.0" version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bde475139afb5fc2649621e1d283e243f9df2bb412f08802cdf3f4ffaf97c44" checksum = "014165ed0f2d3847a4b8956ca94a82ba16c82f2d5c7fa139c3541c15150dba21"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64 0.23.1", "base64 0.23.1",
@@ -3805,9 +3805,9 @@ dependencies = [
[[package]] [[package]]
name = "proton-sdk" name = "proton-sdk"
version = "0.8.0" version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "faf32d0a03f7d13bd9bdcc8c9503e35e9df9318ca9f2a100dcf06cf50cb7ac8c" checksum = "9e16bf5592b7947708dd754defeaee7a58e9fa35988a6ea345b5b9a93765fd81"
dependencies = [ dependencies = [
"aes-gcm 0.11.1", "aes-gcm 0.11.1",
"async-trait", "async-trait",
@@ -3926,7 +3926,7 @@ dependencies = [
"once_cell", "once_cell",
"socket2", "socket2",
"tracing", "tracing",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -4374,7 +4374,7 @@ dependencies = [
"errno", "errno",
"libc", "libc",
"linux-raw-sys", "linux-raw-sys",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -4431,7 +4431,7 @@ dependencies = [
"security-framework", "security-framework",
"security-framework-sys", "security-framework-sys",
"webpki-root-certs", "webpki-root-certs",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -4764,7 +4764,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -4932,10 +4932,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [ dependencies = [
"fastrand", "fastrand",
"getrandom 0.4.3", "getrandom 0.3.4",
"once_cell", "once_cell",
"rustix", "rustix",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -5266,7 +5266,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e"
dependencies = [ dependencies = [
"memoffset", "memoffset",
"tempfile", "tempfile",
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
@@ -5590,7 +5590,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.60.2",
] ]
[[package]] [[package]]
+3 -3
View File
@@ -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.1.0" version = "3.1.2"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = ["Nils Pukropp <contact@narl.io>"] authors = ["Nils Pukropp <contact@narl.io>"]
@@ -15,8 +15,8 @@ keywords = ["proton", "drive", "fuse", "sync", "linux"]
categories = ["filesystem", "command-line-utilities"] categories = ["filesystem", "command-line-utilities"]
[workspace.dependencies] [workspace.dependencies]
proton-sdk = { version = "0.8.0" } proton-sdk = { version = "0.8.1" }
proton-drive-rs = { version = "0.8.0" } proton-drive-rs = { version = "0.8.1" }
# Internal crates. # Internal crates.
pdfs-core = { path = "crates/pdfs-core" } pdfs-core = { path = "crates/pdfs-core" }
+22 -13
View File
@@ -1816,20 +1816,29 @@ fn cmd_login(username: Option<String>, remember: bool) -> Result<()> {
// Only a two-password account is ever asked for this. // Only a two-password account is ever asked for this.
let get_mailbox = |attempt: u32| prompt_mailbox(attempt, remember); let get_mailbox = |attempt: u32| prompt_mailbox(attempt, remember);
// Proton may ask for a CAPTCHA first, usually on a VPN. The CLI has no
// browser engine, so the user solves the page in their own browser and says
// when they are done; the retry then carries the challenge token.
let get_hv = |hv: pdfs_core::proton_sdk::api::HumanVerification| {
println!(
"Proton is asking for a CAPTCHA before it will accept this sign-in.\n\
Open this page in your browser and complete it:\n\n {}\n",
auth::browser_verification_url(&hv)
);
prompt_line("Press Enter once the page says you are verified")
.map_err(|e| pdfs_core::Error::Other(format!("read verification answer: {e}")))?;
Ok(auth::browser_verified(&hv))
};
let rt = tokio::runtime::Runtime::new()?; let rt = tokio::runtime::Runtime::new()?;
// Solving a CAPTCHA needs a browser engine, which the CLI has no business rt.block_on(auth::login_interactive(
// carrying. Point at the app that does rather than failing with the raw API &username,
// message, which reads as "your login is broken". &password,
rt.block_on(auth::login(&username, &password, get_totp, get_mailbox)) get_totp,
.map_err(|e| match e { get_mailbox,
pdfs_core::Error::HumanVerificationRequired(_) => anyhow::anyhow!( get_hv,
"Proton is asking for a CAPTCHA before it will accept this sign-in.\n\ ))
Run `pdfs-app` and sign in there — it can show the verification page.\n\ .context("login failed")?;
(This is usually triggered by a VPN or an unfamiliar IP; signing in from \
your usual network often avoids it.)"
),
other => anyhow::Error::new(other).context("login failed"),
})?;
// A daemon that is already up is parked in `wait_for_session`, sleeping // A daemon that is already up is parked in `wait_for_session`, sleeping
// between keyring checks; restart it so the mount appears now instead of // between keyring checks; restart it so the mount appears now instead of
+66 -1
View File
@@ -109,7 +109,10 @@ fn client_config() -> ProtonClientConfiguration {
let (app_version, user_agent) = match AppDirs::new() { let (app_version, user_agent) = match AppDirs::new() {
Ok(dirs) => { Ok(dirs) => {
let config = dirs.load_config(); let config = dirs.load_config();
(config.app_version, config.user_agent) (
config.resolved_app_version().to_string(),
config.resolved_user_agent().to_string(),
)
} }
Err(_) => (APP_VERSION.to_string(), USER_AGENT.to_string()), Err(_) => (APP_VERSION.to_string(), USER_AGENT.to_string()),
}; };
@@ -203,6 +206,44 @@ pub async fn login_interactive(
} }
} }
/// Proton's verification page for the user's own browser, for a front-end that
/// cannot host it in a webview.
///
/// Unlike [`HumanVerification::verification_url`] this asks for the full page,
/// not the embedded one: a browser tab has no host to post the token to, so the
/// page has to tell the user they are done instead. Proton Mail Bridge opens the
/// same URL.
pub fn browser_verification_url(hv: &HumanVerification) -> String {
let token: String = hv
.token
.bytes()
.map(|b| match b {
b'A'..=b'Z' | b'a'..=b'z' | b'0'..=b'9' | b'-' | b'_' | b'.' | b'~' => {
(b as char).to_string()
}
_ => format!("%{b:02X}"),
})
.collect();
format!(
"https://verify.proton.me/?methods={}&token={token}",
hv.methods.join(","),
)
}
/// The credential to retry with once the user has solved the challenge in
/// their browser.
///
/// The browser keeps the page's own token, so the retry carries the challenge
/// token instead: solving the page marks that token as verified on Proton's
/// side. The type is every offered method, as Proton Mail Bridge sends it, since
/// the user may have picked any of them on the page.
pub fn browser_verified(hv: &HumanVerification) -> HumanVerificationCredential {
HumanVerificationCredential {
token: hv.token.clone(),
method: hv.methods.join(","),
}
}
/// [`login`], replaying a human-verification token the user has already earned. /// [`login`], replaying a human-verification token the user has already earned.
/// ///
/// A gated login fails with [`Error::HumanVerificationRequired`] carrying the /// A gated login fails with [`Error::HumanVerificationRequired`] carrying the
@@ -671,6 +712,30 @@ mod tests {
) )
} }
fn challenge() -> HumanVerification {
serde_json::from_str(
r#"{"HumanVerificationToken":"ab+c/d=","HumanVerificationMethods":["captcha","email"]}"#,
)
.unwrap()
}
#[test]
fn the_browser_gets_the_full_verification_page() {
assert_eq!(
browser_verification_url(&challenge()),
"https://verify.proton.me/?methods=captcha,email&token=ab%2Bc%2Fd%3D"
);
}
/// The browser keeps the page's token, so the retry replays the challenge
/// itself, typed with every method the page offered.
#[test]
fn a_browser_verification_retries_with_the_challenge_token() {
let credential = browser_verified(&challenge());
assert_eq!(credential.token, "ab+c/d=");
assert_eq!(credential.method, "captcha,email");
}
#[test] #[test]
fn passphrases_survive_the_blob_encoding() { fn passphrases_survive_the_blob_encoding() {
let decoded = decode(&encode(&passphrases())).expect("decodes"); let decoded = decode(&encode(&passphrases())).expect("decodes");
+106 -34
View File
@@ -3,7 +3,7 @@
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use directories::ProjectDirs; use directories::ProjectDirs;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Deserializer, Serialize};
use crate::error::{Error, Result}; use crate::error::{Error, Result};
use crate::menu::PromptConfig; use crate::menu::PromptConfig;
@@ -12,8 +12,19 @@ use crate::syncignore::DEFAULT_IGNORE_PATTERNS;
/// Proton requires `external-drive-{name}@{semver}-{channel}` (channel ∈ /// Proton requires `external-drive-{name}@{semver}-{channel}` (channel ∈
/// stable/beta/alpha); a malformed value trips the 422 anti-abuse path. /// stable/beta/alpha); a malformed value trips the 422 anti-abuse path.
pub const APP_VERSION: &str = "external-drive-linux@0.1.0-alpha"; /// Follows the release so Proton can tell releases apart and retire old ones
pub const USER_AGENT: &str = "proton-drive-linux/0.1.0"; /// without retiring every one.
pub const APP_VERSION: &str = concat!(
"external-drive-linux@",
env!("CARGO_PKG_VERSION"),
"-stable"
);
pub const USER_AGENT: &str = concat!("proton-drive-linux/", env!("CARGO_PKG_VERSION"));
/// The fixed identity every release up to 3.1.0 wrote into `config.json`. Read
/// back as "unset" so those configs follow the release instead of pinning it.
const LEGACY_APP_VERSION: &str = "external-drive-linux@0.1.0-alpha";
const LEGACY_USER_AGENT: &str = "proton-drive-linux/0.1.0";
/// Keyring service name; one entry per credential kind keyed by username. /// Keyring service name; one entry per credential kind keyed by username.
pub const KEYRING_SERVICE: &str = "proton-drive-linux"; pub const KEYRING_SERVICE: &str = "proton-drive-linux";
@@ -76,10 +87,24 @@ fn resolve_sweep_mode(env: Option<&str>, stored: Option<SweepMode>) -> SweepMode
} }
/// Configuration structure allowing the user to customize client identification headers. /// Configuration structure allowing the user to customize client identification headers.
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct AppConfig { pub struct AppConfig {
pub app_version: String, /// Override for [`APP_VERSION`]. `None` means "use the release's own";
pub user_agent: String, /// the old fixed default reads as `None`, so it leaves the file on the
/// next save.
#[serde(
default,
deserialize_with = "identity_override",
skip_serializing_if = "Option::is_none"
)]
pub app_version: Option<String>,
/// Override for [`USER_AGENT`], handled like `app_version`.
#[serde(
default,
deserialize_with = "identity_override",
skip_serializing_if = "Option::is_none"
)]
pub user_agent: Option<String>,
/// Soft cap on the on-disk content cache, in bytes (`0` = unlimited). /// Soft cap on the on-disk content cache, in bytes (`0` = unlimited).
/// `None` means "use [`DEFAULT_CACHE_BUDGET_BYTES`]"; the Settings page /// `None` means "use [`DEFAULT_CACHE_BUDGET_BYTES`]"; the Settings page
/// writes an explicit value here. Defaulted for configs predating the field. /// writes an explicit value here. Defaulted for configs predating the field.
@@ -216,31 +241,28 @@ impl FileSort {
} }
} }
impl Default for AppConfig { /// Reads an `app_version` or `user_agent` override, dropping the fixed
fn default() -> Self { /// identity older releases stored as the default.
Self { fn identity_override<'de, D: Deserializer<'de>>(
app_version: APP_VERSION.to_string(), deserializer: D,
user_agent: USER_AGENT.to_string(), ) -> std::result::Result<Option<String>, D::Error> {
cache_budget: None, let value = Option::<String>::deserialize(deserializer)?;
upload_limit: None, Ok(value.filter(|v| v != LEGACY_APP_VERSION && v != LEGACY_USER_AGENT))
download_limit: None,
mountpoint: None,
ignore_patterns: None,
device_uid: None,
conflict_sweep: None,
open_with: None,
prompt: None,
proton_theme: None,
files_view: FilesView::default(),
tray_hidden: false,
language: None,
online_map: false,
local_first: None,
}
}
} }
impl AppConfig { impl AppConfig {
/// The `x-pm-appversion` sent to Proton: the user's override, or
/// [`APP_VERSION`].
pub fn resolved_app_version(&self) -> &str {
self.app_version.as_deref().unwrap_or(APP_VERSION)
}
/// The `User-Agent` sent to Proton: the user's override, or
/// [`USER_AGENT`].
pub fn resolved_user_agent(&self) -> &str {
self.user_agent.as_deref().unwrap_or(USER_AGENT)
}
/// The effective cache budget in bytes: the user's explicit choice, or /// The effective cache budget in bytes: the user's explicit choice, or
/// [`DEFAULT_CACHE_BUDGET_BYTES`] when unset. /// [`DEFAULT_CACHE_BUDGET_BYTES`] when unset.
pub fn resolved_cache_budget(&self) -> u64 { pub fn resolved_cache_budget(&self) -> u64 {
@@ -571,8 +593,8 @@ mod tests {
#[test] #[test]
fn test_app_config_serialization() { fn test_app_config_serialization() {
let config = AppConfig { let config = AppConfig {
app_version: "external-drive-test-client@1.0.0".to_string(), app_version: Some("external-drive-test-client@1.0.0".to_string()),
user_agent: "test-agent/1.0".to_string(), user_agent: Some("test-agent/1.0".to_string()),
cache_budget: Some(1234), cache_budget: Some(1234),
upload_limit: Some(500_000), upload_limit: Some(500_000),
download_limit: None, download_limit: None,
@@ -596,8 +618,11 @@ mod tests {
}; };
let json = serde_json::to_string(&config).unwrap(); let json = serde_json::to_string(&config).unwrap();
let decoded: AppConfig = serde_json::from_str(&json).unwrap(); let decoded: AppConfig = serde_json::from_str(&json).unwrap();
assert_eq!(decoded.app_version, "external-drive-test-client@1.0.0"); assert_eq!(
assert_eq!(decoded.user_agent, "test-agent/1.0"); decoded.resolved_app_version(),
"external-drive-test-client@1.0.0"
);
assert_eq!(decoded.resolved_user_agent(), "test-agent/1.0");
assert_eq!(decoded.proton_theme, Some(true)); assert_eq!(decoded.proton_theme, Some(true));
assert!(decoded.tray_hidden); assert!(decoded.tray_hidden);
assert!(decoded.online_map); assert!(decoded.online_map);
@@ -628,8 +653,55 @@ mod tests {
#[test] #[test]
fn test_default_app_config() { fn test_default_app_config() {
let default_config = AppConfig::default(); let default_config = AppConfig::default();
assert_eq!(default_config.app_version, APP_VERSION); assert_eq!(default_config.resolved_app_version(), APP_VERSION);
assert_eq!(default_config.user_agent, USER_AGENT); assert_eq!(default_config.resolved_user_agent(), USER_AGENT);
}
#[test]
fn the_client_identity_follows_the_release() {
let version = env!("CARGO_PKG_VERSION");
assert_eq!(
APP_VERSION,
format!("external-drive-linux@{version}-stable")
);
assert_eq!(USER_AGENT, format!("proton-drive-linux/{version}"));
}
#[test]
fn an_old_config_with_the_fixed_identity_follows_the_release() {
// Every config written up to 3.1.0 holds these two values, so they must
// not pin the identity once Proton retires 0.1.0.
let json = format!(
r#"{{"app_version":"{LEGACY_APP_VERSION}","user_agent":"{LEGACY_USER_AGENT}","tray_hidden":true}}"#
);
let decoded: AppConfig = serde_json::from_str(&json).unwrap();
assert_eq!(decoded.resolved_app_version(), APP_VERSION);
assert_eq!(decoded.resolved_user_agent(), USER_AGENT);
assert!(decoded.tray_hidden, "the rest of the config survives");
let saved = serde_json::to_string(&decoded).unwrap();
assert!(!saved.contains("app_version"), "{saved}");
assert!(!saved.contains("user_agent"), "{saved}");
}
#[test]
fn a_hand_set_client_identity_is_kept() {
let json = r#"{"app_version":"external-drive-linux@9.9.9-beta","user_agent":"custom/1"}"#;
let decoded: AppConfig = serde_json::from_str(json).unwrap();
assert_eq!(
decoded.resolved_app_version(),
"external-drive-linux@9.9.9-beta"
);
assert_eq!(decoded.resolved_user_agent(), "custom/1");
let saved = serde_json::to_string(&decoded).unwrap();
assert!(saved.contains("external-drive-linux@9.9.9-beta"), "{saved}");
}
#[test]
fn a_config_without_a_client_identity_loads() {
let decoded: AppConfig = serde_json::from_str("{}").unwrap();
assert_eq!(decoded.resolved_app_version(), APP_VERSION);
assert_eq!(decoded.resolved_user_agent(), USER_AGENT);
} }
#[test] #[test]
+21 -8
View File
@@ -202,12 +202,20 @@ impl Ui {
} }
fn main() -> glib::ExitCode { fn main() -> glib::ExitCode {
tracing_subscriber::fmt() let verify = std::env::args().nth(1).as_deref() == Some(VERIFY_ARG);
.with_env_filter( let logs = tracing_subscriber::fmt().with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| "info".into()), tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| "info".into()),
) );
.init(); // The verification window's stdout carries its token back to the app.
if verify {
logs.with_writer(std::io::stderr).init();
} else {
logs.init();
}
i18n::init(); i18n::init();
if verify {
return run_verification_window();
}
// The tray launches the app with arguments ("--page locations", // The tray launches the app with arguments ("--page locations",
// "--confirm-stop"), which a running instance must receive too. // "--confirm-stop"), which a running instance must receive too.
@@ -303,6 +311,11 @@ fn build_window(app: &adw::Application) {
return; return;
} }
}; };
// On a fresh install the daemon has not run yet to make these, and the
// Takeout page keeps its staged archives in the state dir (B194).
if let Err(e) = dirs.ensure() {
tracing::warn!("cannot create the app's directories: {e}");
}
let stack = adw::ViewStack::new(); let stack = adw::ViewStack::new();
let (login_page, login_widgets) = build_login_page(); let (login_page, login_widgets) = build_login_page();
@@ -1210,7 +1223,7 @@ fn install_window_actions(ui: &Rc<Ui>, window: &adw::ApplicationWindow) {
let dialog = adw::AboutDialog::builder() let dialog = adw::AboutDialog::builder()
.application_name(gettext("Proton Drive for Linux")) .application_name(gettext("Proton Drive for Linux"))
.application_icon("io.narl.proton-drive-linux") .application_icon("io.narl.proton-drive-linux")
.version(pdfs_core::config::APP_VERSION) .version(env!("CARGO_PKG_VERSION"))
.developer_name("Nils Pukropp") .developer_name("Nils Pukropp")
.website("https://proton-drive.narl.io") .website("https://proton-drive.narl.io")
.issue_url("https://github.com/narrrl/proton-drive-linux/issues") .issue_url("https://github.com/narrrl/proton-drive-linux/issues")
@@ -1350,8 +1363,8 @@ fn debug_info(ui: &Rc<Ui>) -> String {
format!( format!(
"App version: {}\nUser agent: {}\nlibadwaita: {}.{}.{}\nGTK: {}.{}.{}\n\ "App version: {}\nUser agent: {}\nlibadwaita: {}.{}.{}\nGTK: {}.{}.{}\n\
Mountpoint: {}\nControl socket: {}\nMount service running: {}\n", Mountpoint: {}\nControl socket: {}\nMount service running: {}\n",
pdfs_core::config::APP_VERSION, config.resolved_app_version(),
pdfs_core::config::USER_AGENT, config.resolved_user_agent(),
adw::major_version(), adw::major_version(),
adw::minor_version(), adw::minor_version(),
adw::micro_version(), adw::micro_version(),
+86 -18
View File
@@ -1,5 +1,5 @@
use crate::*; use crate::*;
use pdfs_core::proton_sdk::api::HumanVerificationCredential; use pdfs_core::proton_sdk::api::{HumanVerification, HumanVerificationCredential};
pub(crate) struct LoginState { pub(crate) struct LoginState {
// Login page. // Login page.
@@ -150,15 +150,25 @@ pub(crate) fn wire_login(ui: &Rc<Ui>) {
}); });
// Same shape for human verification: only fires when the API gates the // Same shape for human verification: only fires when the API gates the
// sign-in, and the worker is blocked on the token until it does. // sign-in, and the worker is blocked on the credential until it does.
let ui_hv = ui.clone(); let ui_hv = ui.clone();
glib::spawn_future_local(async move { glib::spawn_future_local(async move {
if let Ok((url, token_tx)) = hv_req_rx.recv().await { if let Ok((hv, credential_tx)) = hv_req_rx.recv().await {
ui_hv ui_hv
.login .login
.login_status .login_status
.set_text(&gettext("Complete the verification to continue…")); .set_text(&gettext("Complete the verification to continue…"));
prompt_human_verification(&ui_hv, &url, token_tx); // Anything but a credential drops the sender, which the worker
// reads as a cancelled sign-in.
match verify_human(hv.verification_url()).await {
Verification::Solved(token) => {
let _ = credential_tx.send(HumanVerificationCredential::captcha(token));
}
Verification::Cancelled => {}
// The web view could not start, most likely its sandbox
// (B195): the user's browser can show the page instead.
Verification::Failed => verify_in_browser(&ui_hv, &hv, credential_tx),
}
} }
}); });
@@ -252,9 +262,12 @@ pub(crate) struct LoginChannels {
pub(crate) result: async_channel::Receiver<Result<(), String>>, pub(crate) result: async_channel::Receiver<Result<(), String>>,
/// Fires only if the account needs a 2FA code; carries the sender for it. /// Fires only if the account needs a 2FA code; carries the sender for it.
pub(crate) totp: async_channel::Receiver<std::sync::mpsc::Sender<String>>, pub(crate) totp: async_channel::Receiver<std::sync::mpsc::Sender<String>>,
/// Fires only if the sign-in is gated: the page to show, and the sender for /// Fires only if the sign-in is gated: the challenge, and the sender for the
/// the token the user earns on it. /// credential the user earns by solving it.
pub(crate) hv: async_channel::Receiver<(String, std::sync::mpsc::Sender<String>)>, pub(crate) hv: async_channel::Receiver<(
HumanVerification,
std::sync::mpsc::Sender<HumanVerificationCredential>,
)>,
/// Fires only for a two-password account: how many answers were already /// Fires only for a two-password account: how many answers were already
/// wrong, and the sender for the password and the "remember" choice. /// wrong, and the sender for the password and the "remember" choice.
pub(crate) mailbox: async_channel::Receiver<(u32, std::sync::mpsc::Sender<(String, bool)>)>, pub(crate) mailbox: async_channel::Receiver<(u32, std::sync::mpsc::Sender<(String, bool)>)>,
@@ -312,18 +325,16 @@ pub(crate) fn spawn_login(username: String, password: String) -> LoginChannels {
}) })
}, },
|hv| { |hv| {
// Gated: hand the UI the page to show, block on the token the // Gated: hand the UI the challenge, block on the credential
// user earns by solving it. // the user earns by solving it.
let (token_tx, token_rx) = std::sync::mpsc::channel::<String>(); let (credential_tx, credential_rx) =
hv_req_tx std::sync::mpsc::channel::<HumanVerificationCredential>();
.send_blocking((hv.verification_url(), token_tx)) hv_req_tx.send_blocking((hv, credential_tx)).map_err(|_| {
.map_err(|_| { pdfs_core::Error::Other("verification prompt closed".into())
pdfs_core::Error::Other("verification prompt closed".into()) })?;
})?; credential_rx
let token = token_rx
.recv() .recv()
.map_err(|_| pdfs_core::Error::Other("verification cancelled".into()))?; .map_err(|_| pdfs_core::Error::Other("verification cancelled".into()))
Ok(HumanVerificationCredential::captcha(token))
}, },
) )
.await .await
@@ -510,6 +521,63 @@ pub(crate) fn prompt_2fa(ui: &Rc<Ui>, code_tx: std::sync::mpsc::Sender<String>)
dialog.present(parent.as_ref()); dialog.present(parent.as_ref());
} }
/// Let the user solve the challenge in their own browser, for when the
/// verification window could not come up. The page cannot hand its token back
/// to us, so the user says when they are done, and the retry carries the
/// challenge token, which the solved page made good (see
/// [`auth::browser_verified`]).
fn verify_in_browser(
ui: &Rc<Ui>,
hv: &HumanVerification,
credential_tx: std::sync::mpsc::Sender<HumanVerificationCredential>,
) {
let dialog = adw::AlertDialog::builder()
.heading(gettext("Verify in Your Browser"))
.body(gettext(
"The verification page can't be shown in the app on this system. Open it in your browser, complete it there, then come back and choose Continue.",
))
.build();
let url = auth::browser_verification_url(hv);
let open = gtk4::Button::builder()
.label(gettext("Open Verification Page"))
.halign(gtk4::Align::Center)
.build();
open.add_css_class("pill");
dialog.set_extra_child(Some(&open));
dialog.add_response("cancel", &gettext("Cancel"));
dialog.add_response("continue", &gettext("Continue"));
dialog.set_response_appearance("continue", adw::ResponseAppearance::Suggested);
// Continuing before the page was even opened would only fail the retry.
dialog.set_response_enabled("continue", false);
dialog.set_default_response(Some("continue"));
dialog.set_close_response("cancel");
let dialog_weak = dialog.downgrade();
open.connect_clicked(move |_| {
open_uri(&url);
if let Some(dialog) = dialog_weak.upgrade() {
dialog.set_response_enabled("continue", true);
}
});
let credential = auth::browser_verified(hv);
let credential_tx = RefCell::new(Some(credential_tx));
dialog.connect_response(None, move |_, resp| {
// On cancel/close we take + drop `tx` without sending, so the worker's
// recv errors out and the login is reported as cancelled.
if let Some(tx) = credential_tx.borrow_mut().take()
&& resp == "continue"
{
let _ = tx.send(credential.clone());
}
});
let parent = ui.login.login_button.root().and_downcast::<gtk4::Window>();
dialog.present(parent.as_ref());
}
/// Sign out, after a confirmation: disable+stop the mount service (so the /// Sign out, after a confirmation: disable+stop the mount service (so the
/// daemon isn't left running without credentials), forget the stored session, /// daemon isn't left running without credentials), forget the stored session,
/// and drop back to the login page. /// and drop back to the login page.
+168 -40
View File
@@ -1,4 +1,4 @@
//! The human-verification (CAPTCHA) dialog. //! The human-verification (CAPTCHA) window.
//! //!
//! Proton gates logins it does not recognise — a new IP, a VPN exit — behind a //! Proton gates logins it does not recognise — a new IP, a VPN exit — behind a
//! CAPTCHA. The API answers the login with a challenge instead of a session, and //! CAPTCHA. The API answers the login with a challenge instead of a session, and
@@ -8,10 +8,26 @@
//! The page is hosted in a `WebKitWebView` rather than handed to the system //! The page is hosted in a `WebKitWebView` rather than handed to the system
//! browser because it reports completion by posting a message to its host, not //! browser because it reports completion by posting a message to its host, not
//! by redirecting: a browser has nowhere to post it back to. //! by redirecting: a browser has nowhere to post it back to.
//!
//! The webview runs in a child `pdfs-app` started with [`VERIFY_ARG`], not in the
//! app itself. WebKit aborts its whole process when its sandbox cannot start, as
//! on hardened systems that keep bubblewrap from the journal socket
//! (`docs/BUGS.md` B195); in a child that costs the verification, not the app.
//! The URL goes to the child on stdin, so it never shows in a process list, and
//! the token comes back on stdout.
use crate::*; use crate::*;
use std::io::{BufRead, BufReader, Write as _};
use std::process::{ExitStatus, Stdio};
use webkit6::prelude::*; use webkit6::prelude::*;
/// The argument that makes `pdfs-app` the verification window instead of the app.
pub(crate) const VERIFY_ARG: &str = "--human-verification";
/// Marks the token among whatever else lands on the child's stdout: GLib and
/// WebKit write debug output there.
const TOKEN_PREFIX: &str = "hv-token ";
/// Bridge the verification page's `postMessage` to a handler this side can read. /// Bridge the verification page's `postMessage` to a handler this side can read.
/// ///
/// The page targets its embedding host (`window.parent`), which in a webview is /// The page targets its embedding host (`window.parent`), which in a webview is
@@ -26,15 +42,100 @@ window.addEventListener('message', function (event) {
}); });
"#; "#;
/// Present the challenge and hand the solved token back through `token_tx`. /// How the verification window ended.
/// #[derive(Debug, PartialEq, Eq)]
/// Closing the dialog without solving drops the sender, which the waiting login pub(crate) enum Verification {
/// worker reads as a cancelled sign-in — the same contract as the 2FA prompt. Solved(String),
pub(crate) fn prompt_human_verification( /// Closed without solving.
ui: &Rc<Ui>, Cancelled,
url: &str, /// Never came up, or died: most likely WebKit could not start its sandbox.
token_tx: std::sync::mpsc::Sender<String>, Failed,
) { }
/// Show the challenge in the verification window and wait until it closes.
pub(crate) async fn verify_human(url: String) -> Verification {
match gio::spawn_blocking(move || run_verification_child(&url)).await {
Ok(Ok(verification)) => verification,
Ok(Err(e)) => {
tracing::error!("cannot run the verification window: {e}");
Verification::Failed
}
Err(_) => Verification::Failed,
}
}
fn run_verification_child(url: &str) -> std::io::Result<Verification> {
let mut child = Command::new(own_exe())
.arg(VERIFY_ARG)
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.spawn()?;
if let Some(mut stdin) = child.stdin.take() {
// A failed write means the child is already gone; its exit status says
// how. Dropping `stdin` closes it.
let _ = writeln!(stdin, "{url}");
}
// Stops reading at the token rather than at EOF: WebKit's helper processes
// inherit the pipe and may hold it open a moment after the child quits.
let token = child
.stdout
.take()
.and_then(|out| find_token(BufReader::new(out)));
let status = child.wait()?;
Ok(outcome(token, status))
}
/// This very binary, so a development build opens its own window. After an
/// upgrade replaced the file, `current_exe` names a deleted path, and the
/// installed `pdfs-app` is the next best.
fn own_exe() -> PathBuf {
std::env::current_exe()
.ok()
.filter(|path| path.is_file())
.unwrap_or_else(|| PathBuf::from("pdfs-app"))
}
fn find_token(out: impl BufRead) -> Option<String> {
out.lines()
.map_while(Result::ok)
.find_map(|line| line.strip_prefix(TOKEN_PREFIX).map(str::to_owned))
}
/// A token wins over the exit status: the user solved the page, even if
/// WebKit's teardown crashed after it.
fn outcome(token: Option<String>, status: ExitStatus) -> Verification {
match token {
Some(token) => Verification::Solved(token),
None if status.success() => Verification::Cancelled,
None => {
tracing::error!(%status, "the verification window failed");
Verification::Failed
}
}
}
/// Run as the verification window: read the page's URL from stdin, show it, and
/// print the token once the user has solved it. Closing the window exits
/// without a token, which the app reads as a cancelled sign-in.
pub(crate) fn run_verification_window() -> glib::ExitCode {
let mut url = String::new();
if std::io::stdin().lock().read_line(&mut url).is_err() || url.trim().is_empty() {
tracing::error!("{VERIFY_ARG} expects the verification URL on stdin");
return glib::ExitCode::FAILURE;
}
let url = url.trim().to_owned();
// Not unique: the app that started it already holds APP_ID.
let app = adw::Application::builder()
.flags(gio::ApplicationFlags::NON_UNIQUE)
.build();
app.connect_activate(move |app| build_verification_window(app, &url));
// GApplication would refuse VERIFY_ARG as an unknown option.
let argv0 = std::env::args().next().unwrap_or_default();
app.run_with_args(&[argv0])
}
fn build_verification_window(app: &adw::Application, url: &str) {
let content = webkit6::UserContentManager::new(); let content = webkit6::UserContentManager::new();
content.add_script(&webkit6::UserScript::new( content.add_script(&webkit6::UserScript::new(
BRIDGE, BRIDGE,
@@ -53,24 +154,19 @@ pub(crate) fn prompt_human_verification(
.hexpand(true) .hexpand(true)
.build(); .build();
let dialog = adw::Dialog::builder() let body = gtk4::Box::new(gtk4::Orientation::Vertical, 0);
body.append(&adw::HeaderBar::new());
body.append(&webview);
let window = adw::ApplicationWindow::builder()
.application(app)
.title(gettext("Verification")) .title(gettext("Verification"))
.content_width(420) .icon_name(APP_ID)
.content_height(560) .default_width(420)
.default_height(560)
.content(&body)
.build(); .build();
let header = adw::HeaderBar::new(); let app = app.downgrade();
let body = gtk4::Box::new(gtk4::Orientation::Vertical, 0);
body.append(&header);
body.append(&webview);
dialog.set_child(Some(&body));
// Taken on the first success *or* on close, so the token is sent at most
// once and a cancelled dialog always drops the sender.
let token_tx = Rc::new(RefCell::new(Some(token_tx)));
let tx = token_tx.clone();
let dlg_weak = dialog.downgrade();
content.connect_script_message_received(Some("hv"), move |_, value| { content.connect_script_message_received(Some("hv"), move |_, value| {
let Some(token) = extract_token(&value.to_str()) else { let Some(token) = extract_token(&value.to_str()) else {
// Every `postMessage` on the page reaches here, most of them the // Every `postMessage` on the page reaches here, most of them the
@@ -78,25 +174,17 @@ pub(crate) fn prompt_human_verification(
// is simply not ours. // is simply not ours.
return; return;
}; };
if let Some(tx) = tx.borrow_mut().take() { let mut stdout = std::io::stdout().lock();
let _ = tx.send(token); if let Err(e) = writeln!(stdout, "{TOKEN_PREFIX}{token}").and_then(|()| stdout.flush()) {
tracing::error!("cannot hand the verification token back: {e}");
} }
if let Some(dlg) = dlg_weak.upgrade() { if let Some(app) = app.upgrade() {
dlg.close(); app.quit();
} }
}); });
// Covers the close button, Escape, and the user giving up.
dialog.connect_closed(move |_| {
token_tx.borrow_mut().take();
});
webview.load_uri(url); webview.load_uri(url);
window.present();
let parent = ui.login.login_button.root().and_downcast::<gtk4::Window>();
// Returns immediately; the login worker stays blocked on the channel until
// the handler above sends, or the dialog closes and drops the sender.
dialog.present(parent.as_ref());
} }
/// Pull the verification token out of a message posted by the verification page. /// Pull the verification token out of a message posted by the verification page.
@@ -133,7 +221,12 @@ fn extract_token(raw: &str) -> Option<String> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::extract_token; use super::{Verification, extract_token, find_token, outcome};
use std::os::unix::process::ExitStatusExt as _;
use std::process::ExitStatus;
/// The wait status of a process killed by SIGABRT.
const ABORTED: i32 = 6;
#[test] #[test]
fn a_completion_message_yields_its_token() { fn a_completion_message_yields_its_token() {
@@ -163,4 +256,39 @@ mod tests {
assert!(extract_token(raw).is_none(), "accepted: {raw}"); assert!(extract_token(raw).is_none(), "accepted: {raw}");
} }
} }
#[test]
fn the_token_is_found_among_other_output() {
let out = "Gtk-Message: something\nhv-token tok-1\nmore\n";
assert_eq!(find_token(out.as_bytes()).as_deref(), Some("tok-1"));
assert_eq!(find_token("only chatter\n".as_bytes()), None);
}
#[test]
fn a_window_closed_without_a_token_cancels() {
assert_eq!(
outcome(None, ExitStatus::from_raw(0)),
Verification::Cancelled
);
}
/// WebKit aborts when its sandbox cannot start (B195). That must read as a
/// failure the app explains, not as the user giving up.
#[test]
fn a_window_that_died_fails() {
assert_eq!(
outcome(None, ExitStatus::from_raw(ABORTED)),
Verification::Failed
);
let exited_1 = ExitStatus::from_raw(1 << 8);
assert_eq!(outcome(None, exited_1), Verification::Failed);
}
#[test]
fn a_token_counts_even_if_the_window_died_after_it() {
assert_eq!(
outcome(Some("tok-1".into()), ExitStatus::from_raw(ABORTED)),
Verification::Solved("tok-1".into())
);
}
} }
+4
View File
@@ -485,6 +485,10 @@ fn main() -> Result<()> {
return Ok(()); return Ok(());
} }
// The socket lives in the state dir, which nothing has made yet when the app
// starts the tray on a fresh install (B194).
dirs.ensure().context("create the app's directories")?;
// Ensure only one instance of the tray runs. // Ensure only one instance of the tray runs.
let tray_sock = dirs.tray_socket(); let tray_sock = dirs.tray_socket();
if std::os::unix::net::UnixStream::connect(&tray_sock).is_ok() { if std::os::unix::net::UnixStream::connect(&tray_sock).is_ok() {
+12 -5
View File
@@ -542,7 +542,7 @@ sequenceDiagram
actor User actor User
participant UI as pdfs-app participant UI as pdfs-app
participant Auth as pdfs-core auth participant Auth as pdfs-core auth
participant Web as WebKitGTK dialog participant Web as pdfs-app --human-verification
participant API as Proton API participant API as Proton API
User->>UI: email and password User->>UI: email and password
@@ -550,9 +550,9 @@ sequenceDiagram
Auth->>API: SRP handshake Auth->>API: SRP handshake
API-->>Auth: 9001, challenge URL API-->>Auth: 9001, challenge URL
Auth-->>UI: HumanVerificationRequired Auth-->>UI: HumanVerificationRequired
UI->>Web: load challenge UI->>Web: challenge URL (stdin)
User->>Web: solve it User->>Web: solve it
Web-->>UI: token (postMessage) Web-->>UI: token (stdout)
UI->>Auth: login_verified(token) UI->>Auth: login_verified(token)
Auth->>API: new SRP handshake with the token Auth->>API: new SRP handshake with the token
API-->>Auth: session API-->>Auth: session
@@ -561,8 +561,15 @@ sequenceDiagram
- The challenge used up the first SRP handshake, so the retry starts a new one with the token - The challenge used up the first SRP handshake, so the retry starts a new one with the token
attached. attached.
- The page may post the token as an object or as a JSON string; both are accepted. - The page may post the token as an object or as a JSON string; both are accepted.
- The CLI has no web view. It fails with a message to sign in once with `pdfs-app`; the stored - The page runs in a WebKitGTK view inside a child `pdfs-app`. WebKit aborts its process when its
session then works for the CLI and the service. sandbox cannot start, as on hardened systems such as secureblue (B195). In the child, that ends
the web view, not the app.
- When the child fails, the app offers the page in the user's own browser instead, as Proton Mail
Bridge does. A browser tab cannot post the token back, so the user says when they are done, and
the retry carries the challenge token itself, which the solved page made good. Its type header
lists every offered method (`auth::browser_verified`).
- The CLI has no web view, so it always takes the browser path: it prints the page's URL and waits
for Enter.
--- ---
+66 -1
View File
@@ -47,7 +47,7 @@ original wording.
it in the index in the same change. it in the index in the same change.
```markdown ```markdown
### B194 — What the user sees, in one line ### B196 — What the user sees, in one line
**Status:** Open **Status:** Open
**Found:** 2026-10-06, how it was found **Found:** 2026-10-06, how it was found
@@ -100,6 +100,7 @@ a live account since.
| Entry | Title | | Entry | Title |
|---|---| |---|---|
| [B195](#b195--the-app-crashes-when-proton-asks-for-a-captcha-on-secureblue) | The app crashes when Proton asks for a CAPTCHA on secureblue |
| [B193](#b193--deleting-a-file-whose-create-failed-can-trash-a-file-of-the-users-on-drive) | Deleting a file whose create failed can trash a file of the user's on Drive | | [B193](#b193--deleting-a-file-whose-create-failed-can-trash-a-file-of-the-users-on-drive) | Deleting a file whose create failed can trash a file of the user's on Drive |
| [B191](#b191--a-file-deleted-after-its-create-failed-and-was-written-again-can-stay-on-drive) | A file deleted after its create failed and was written again can stay on Drive | | [B191](#b191--a-file-deleted-after-its-create-failed-and-was-written-again-can-stay-on-drive) | A file deleted after its create failed and was written again can stay on Drive |
| [B190](#b190--a-file-saved-just-before-the-daemon-stops-can-keep-its-old-content-on-drive) | A file saved just before the daemon stops can keep its old content on Drive | | [B190](#b190--a-file-saved-just-before-the-daemon-stops-can-keep-its-old-content-on-drive) | A file saved just before the daemon stops can keep its old content on Drive |
@@ -214,6 +215,7 @@ a live account since.
| Entry | Title | | Entry | Title |
|---|---| |---|---|
| [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 |
| [B180](#b180--a-stop-waits-10-s-for-a-drain-worker-that-slept-through-it) | A stop waits 10 s for a drain worker that slept through it | | [B180](#b180--a-stop-waits-10-s-for-a-drain-worker-that-slept-through-it) | A stop waits 10 s for a drain worker that slept through it |
@@ -296,6 +298,69 @@ a live account since.
Newest first. Newest first.
### B195 — The app crashes when Proton asks for a CAPTCHA on secureblue
**Status:** Fixed (unverified). On 2026-10-08 the reporter confirmed that the app survives, but
the CAPTCHA still could not be solved; the browser fallback below has not run on secureblue yet.
**Found:** 2026-10-07, [#29](https://github.com/narrrl/proton-drive-linux/issues/29). On
secureblue 44 (a hardened Fedora Atomic), `pdfs-app` aborted a few seconds after the sign-in, with
`bwrap: Can't get type of source /run/systemd/journal/socket: Permission denied` and
`Failed to fully launch dbus-proxy`.
**Where:** `crates/pdfs-gui/src/app/pages/verify.rs`, `crates/pdfs-gui/src/app/pages/login.rs`,
`crates/pdfs-core/src/auth.rs`, `crates/pdfs-cli/src/main.rs`
**Repro:** Sign in on secureblue from a network Proton asks a CAPTCHA for, such as a VPN.
**Cause.** The CAPTCHA page runs in a WebKitGTK view (B8). Before it loads anything, WebKit starts
its sandbox: bubblewrap, with the journal socket bound in, and `xdg-dbus-proxy`. secureblue keeps
bubblewrap from the socket, the proxy does not start, and WebKit ends its process with `g_error`.
WebKit binds the socket with `--ro-bind-try`, but bubblewrap skips only a missing path, not one it
may not read, and WebKit has no switch to leave the socket out.
The view was in the app's own process, so the whole app went down, and nothing in our code can
catch that.
**Fix.** The view runs in a child, `pdfs-app --human-verification`, that reads the URL on stdin
and prints the token on stdout. A child that exits without a token after a crash or a non-zero
status no longer ends the sign-in: the app offers the page in the user's own browser, as Proton
Mail Bridge does. The tab cannot post the token back, so the user says when they are done, and the
retry carries the challenge token, typed with every offered method. `pdfs login` takes the same
path. The sandbox is not switched off by the app: users choose a hardened system for that
isolation. TROUBLESHOOTING.md keeps the one-time workaround as a last resort.
**Test:** unit tests `a_window_that_died_fails`, `a_window_closed_without_a_token_cancels`,
`a_token_counts_even_if_the_window_died_after_it`, `the_token_is_found_among_other_output`,
`the_browser_gets_the_full_verification_page` and
`a_browser_verification_retries_with_the_challenge_token`. The browser retry has not run against a
live challenge: Proton only asks for one from a network it distrusts.
On 2026-10-08 the child ran under real WebKit on Arch against a local page that posts a completion,
and handed back its token.
---
### B194 — On a fresh install the tray exits and the Takeout page cannot remember its archives
**Status:** Fixed.
**Found:** 2026-10-07, in the log of [#29](https://github.com/narrrl/proton-drive-linux/issues/29):
`failed to bind tray single-instance socket: No such file or directory` and
`cannot remember staged Takeout archives: No such file or directory`.
**Where:** `crates/pdfs-gui/src/main.rs`, `build_window` in `crates/pdfs-gui/src/app/main.rs`
**Repro:** Start `pdfs-app` with no `~/.local/state/proton-drive-linux`, as on a fresh install. The
tray is gone, and staging a Takeout archive logs the warning.
**Cause.** Both write to the state directory, and only the daemon and the CLI made it
(`AppDirs::ensure`). The app starts the tray before the first sign-in, so before the daemon has
ever run.
**Fix.** `pdfs-tray` and `pdfs-app` call `AppDirs::ensure` at start, which also makes the
directories owner-only (B6).
**Verified:** 2026-10-08, `pdfs-tray` with `XDG_STATE_HOME`, `XDG_CONFIG_HOME` and
`XDG_CACHE_HOME` pointing at an empty directory. It exited with the error before the fix, and
afterwards ran with `tray.sock` in a `0700` state directory.
---
### B193 — Deleting a file whose create failed can trash a file of the user's on Drive ### B193 — Deleting a file whose create failed can trash a file of the user's on Drive
**Status:** Fixed (unverified). **Status:** Fixed (unverified).
+42
View File
@@ -11,6 +11,42 @@ scratch (user data in `staging/` and `recovery/` is never touched by this).
## [Unreleased] ## [Unreleased]
### Fixed
- **A CAPTCHA could not be solved on hardened systems.** When the verification page cannot open in
the app, as on secureblue, the app now offers it in your browser and continues the sign-in
once you are done. `pdfs login` now handles a CAPTCHA the same way instead of failing.
([#29](https://github.com/narrrl/proton-drive-linux/issues/29))
## [3.1.2] — 2026-10-08
Schema: **42**, unchanged.
### Fixed
- **The app crashed when Proton asked for a CAPTCHA on hardened systems.** On secureblue, WebKit
cannot start the sandbox for the verification page and ends its process, which took the app
down with it. The page now opens in a separate window process: if that process fails, the
sign-in stops with a message that says why, and TROUBLESHOOTING.md has a workaround.
([#29](https://github.com/narrrl/proton-drive-linux/issues/29))
- **On a fresh install the tray icon did not start.** The tray and the app now create their state
directory themselves instead of waiting for the service to do it. This also lets the Takeout
page remember staged archives before the first mount.
([#29](https://github.com/narrrl/proton-drive-linux/issues/29))
## [3.1.1] — 2026-10-07
Schema: **42**, unchanged.
### Changed
- **The client identifies itself with its release.** Sign-in and every API call used to send the
fixed `external-drive-linux@0.1.0-alpha` and `proton-drive-linux/0.1.0`. If Proton retired that
version, every release would fail to sign in at once and no update could fix it. The client now
sends `external-drive-linux@<version>-stable` and `proton-drive-linux/<version>`. `app_version`
and `user_agent` in `config.json` are optional overrides now. The fixed values that releases up
to 3.1.0 wrote there count as unset and are removed on the next save. A value you set by hand is
kept.
- The About dialog shows the release version, and its debug info shows the identity that is
actually sent.
## [3.1.0] — 2026-10-07 ## [3.1.0] — 2026-10-07
Schema: **42**, unchanged. Schema: **42**, unchanged.
@@ -1635,6 +1671,12 @@ First stable release: FUSE files-on-demand mount, sync daemon under `proton-driv
- The outstanding FUSE defects tracked in `docs/BUGS.md`, plus a truncate defect, validated - The outstanding FUSE defects tracked in `docs/BUGS.md`, plus a truncate defect, validated
by a new POSIX compliance suite for the filesystem. by a new POSIX compliance suite for the filesystem.
[3.1.2]: https://github.com/narrrl/proton-drive-linux/releases/tag/v3.1.2
[3.1.1]: https://github.com/narrrl/proton-drive-linux/releases/tag/v3.1.1
[3.1.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v3.1.0
[3.0.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v3.0.0 [3.0.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v3.0.0
[2.10.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v2.10.0 [2.10.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v2.10.0
+5 -1
View File
@@ -89,7 +89,11 @@ fix it.
| `open_with` | object | `xdg-open` | — | See [`open_with`](#open_with) | | `open_with` | object | `xdg-open` | — | See [`open_with`](#open_with) |
| `prompt` | object | built-in window | — | See [`prompt`](#prompt) | | `prompt` | object | built-in window | — | See [`prompt`](#prompt) |
`app_version` and `user_agent` identify the client to Proton. Leave them alone. `app_version` and `user_agent` identify the client to Proton. When the keys are absent, the
client sends its own release (`external-drive-linux@<version>-stable`, `proton-drive-linux/<version>`).
Leave them out unless a support case asks for a different value. The fixed
`external-drive-linux@0.1.0-alpha` and `proton-drive-linux/0.1.0` that releases up to 3.1.0 wrote
here are treated as absent and removed on the next save.
### `ignore_patterns` ### `ignore_patterns`
+18 -2
View File
@@ -69,8 +69,24 @@ pdfs status
## Signing in ## Signing in
**"Proton is asking for a CAPTCHA"** — Proton wants human verification, usually on a VPN or an **"Proton is asking for a CAPTCHA"** — Proton wants human verification, usually on a VPN or an
unfamiliar network. The CLI cannot show it. Sign in with `pdfs-app`, which displays the challenge; unfamiliar network. `pdfs login` prints the verification page's address: open it in your browser,
the stored session then works for the CLI too. complete it, then press Enter. The app shows the page in its own window.
**"Verify in Your Browser"** — WebKit, which shows the CAPTCHA page in the app, could not start
its sandbox. Hardened systems such as secureblue keep its bubblewrap from the journal socket, and
the log then shows `bwrap: Can't get type of source /run/systemd/journal/socket: Permission
denied` and `Failed to fully launch dbus-proxy`. Choose **Open Verification Page**, complete the
page in your browser, then choose **Continue**. If that sign-in is refused too, check that `bwrap`
and `xdg-dbus-proxy` are installed. As a last resort, sign in once with the sandbox switched off
for this one run:
```bash
WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1 pdfs-app
```
Quit the app first, so this starts a new instance. The page then runs without WebKit's isolation,
so use this only for the sign-in. The stored session keeps working without it. Signing in from
your usual network, without a VPN, often avoids the CAPTCHA in the first place.
**Sign-in works but is forgotten after a restart** — no Secret Service provider is running, or its **Sign-in works but is forgotten after a restart** — no Secret Service provider is running, or its
keyring is locked. Install and unlock GNOME Keyring, KWallet or KeePassXC (with Secret Service keyring is locked. Install and unlock GNOME Keyring, KWallet or KeePassXC (with Secret Service
+1 -1
View File
@@ -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.1.0 pkgver=3.1.2
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.0.0 pkgver = 3.1.1
pkgrel = 1 pkgrel = 1
url = https://proton-drive.narl.io url = https://proton-drive.narl.io
arch = x86_64 arch = x86_64
@@ -21,21 +21,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.0.0 provides = proton-drive-for-linux=3.1.1
provides = proton-drive-linux=3.0.0 provides = proton-drive-linux=3.1.1
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.0.0-x86_64.tar.gz::https://github.com/narrrl/proton-drive-linux/releases/download/v3.0.0/proton-drive-linux-3.0.0-x86_64.tar.gz source = proton-drive-linux-3.1.1-x86_64.tar.gz::https://github.com/narrrl/proton-drive-linux/releases/download/v3.1.1/proton-drive-linux-3.1.1-x86_64.tar.gz
source = io.narl.proton-drive-linux-3.0.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.0.0/packaging/io.narl.proton-drive-linux.desktop source = io.narl.proton-drive-linux-3.1.1.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.1.1/packaging/io.narl.proton-drive-linux.desktop
source = io.narl.proton-drive-linux-tray-3.0.0.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.0.0/packaging/io.narl.proton-drive-linux-tray.desktop source = io.narl.proton-drive-linux-tray-3.1.1.desktop::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.1.1/packaging/io.narl.proton-drive-linux-tray.desktop
source = io.narl.proton-drive-linux-3.0.0.svg::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.0.0/packaging/io.narl.proton-drive-linux.svg source = io.narl.proton-drive-linux-3.1.1.svg::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.1.1/packaging/io.narl.proton-drive-linux.svg
source = proton-drive-3.0.0.service::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.0.0/packaging/proton-drive.service source = proton-drive-3.1.1.service::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.1.1/packaging/proton-drive.service
source = LICENSE-3.0.0::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.0.0/LICENSE source = LICENSE-3.1.1::https://raw.githubusercontent.com/narrrl/proton-drive-linux/v3.1.1/LICENSE
sha256sums = 4d72420f287e0a9b1d65dfc2954779b2df1bf367cb41ffe28519b2791451b6ed sha256sums = e8a2ca20dc5a4b050a85056196eb7f3f4a428db2a8d41aa09b813e007609c0b6
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.0.0 pkgver=3.1.1
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')
@@ -34,7 +34,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=('4d72420f287e0a9b1d65dfc2954779b2df1bf367cb41ffe28519b2791451b6ed' sha256sums=('e8a2ca20dc5a4b050a85056196eb7f3f4a428db2a8d41aa09b813e007609c0b6'
'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.0.0.r0.g2177383 pkgver = 3.1.1.r0.gedd62c5
pkgrel = 1 pkgrel = 1
url = https://proton-drive.narl.io url = https://proton-drive.narl.io
arch = x86_64 arch = x86_64
@@ -24,8 +24,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.0.0.r0.g2177383 provides = proton-drive-for-linux=3.1.1.r0.gedd62c5
provides = proton-drive-linux=3.0.0.r0.g2177383 provides = proton-drive-linux=3.1.1.r0.gedd62c5
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.0.0.r0.g2177383 pkgver=3.1.1.r0.gedd62c5
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.0.0 pkgver = 3.1.1
pkgrel = 1 pkgrel = 1
url = https://proton-drive.narl.io url = https://proton-drive.narl.io
arch = x86_64 arch = x86_64
@@ -23,13 +23,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.0.0 provides = proton-drive-linux=3.1.1
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.0.0.tar.gz::https://github.com/narrrl/proton-drive-linux/archive/refs/tags/v3.0.0.tar.gz source = proton-drive-for-linux-3.1.1.tar.gz::https://github.com/narrrl/proton-drive-linux/archive/refs/tags/v3.1.1.tar.gz
sha256sums = 3a9ca82adae6b03e2b33af520ec49f702a3b4c83151ccc70ae3c21645b719ab5 sha256sums = c16019c75959d5056c8ae486e0a4dc1f6346828ea93f346dfeae7da717629256
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.0.0 pkgver=3.1.1
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')
@@ -24,7 +24,7 @@ conflicts=('proton-drive-linux' 'proton-drive-for-linux-bin' 'proton-drive-for-l
# LTO has broken GTK/Rust links for this workspace; the release profile keeps it off. # LTO has broken GTK/Rust links for this workspace; the release profile keeps it off.
options=('!lto') options=('!lto')
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=('3a9ca82adae6b03e2b33af520ec49f702a3b4c83151ccc70ae3c21645b719ab5') sha256sums=('c16019c75959d5056c8ae486e0a4dc1f6346828ea93f346dfeae7da717629256')
_srcname="proton-drive-linux-$pkgver" _srcname="proton-drive-linux-$pkgver"
+137 -97
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Mit mir geteilt" msgstr "Mit mir geteilt"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Computer" msgstr "Computer"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "Keine Internetverbindung" msgstr "Keine Internetverbindung"
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Einstellungen" msgstr "Einstellungen"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Tastenkürzel" msgstr "Tastenkürzel"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "Info zu Proton Drive for Linux" msgstr "Info zu Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Hauptmenü" msgstr "Hauptmenü"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -166,23 +166,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Quellcode" msgstr "Quellcode"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Haftungsausschluss" msgstr "Haftungsausschluss"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -207,7 +207,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -217,7 +217,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -227,7 +227,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -243,15 +243,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Proton Drive beenden?" msgstr "Proton Drive beenden?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -260,7 +260,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -275,8 +275,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -291,30 +292,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Beenden" msgstr "Beenden"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Allgemein" msgstr "Allgemein"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -323,38 +324,38 @@ msgstr "Drive durchsuchen"
msgid "Refresh" msgid "Refresh"
msgstr "Aktualisieren" msgstr "Aktualisieren"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Tastenkürzel" msgstr "Tastenkürzel"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Dateien" msgstr "Dateien"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Zurück / Vor" msgstr "Zurück / Vor"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Übergeordneter Ordner" msgstr "Übergeordneter Ordner"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Raster / Liste" msgstr "Raster / Liste"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -363,7 +364,7 @@ msgstr "Raster / Liste"
msgid "Rename" msgid "Rename"
msgstr "Umbenennen" msgstr "Umbenennen"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -373,73 +374,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Auswahl aufheben" msgstr "Auswahl aufheben"
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Größere Vorschaubilder" msgstr "Größere Vorschaubilder"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Kleinere Vorschaubilder" msgstr "Kleinere Vorschaubilder"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
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:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Alles auswählen" msgstr "Alles auswählen"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Fotobetrachter" msgstr "Fotobetrachter"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
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:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "Erstes / letztes Foto" msgstr "Erstes / letztes Foto"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Details anzeigen" msgstr "Details anzeigen"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Vollbild" msgstr "Vollbild"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Nicht verbunden" msgstr "Nicht verbunden"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Verbindung wird hergestellt …" msgstr "Verbindung wird hergestellt …"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3205,21 +3206,21 @@ msgstr "Anmeldung läuft …"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Zum Fortfahren die Überprüfung abschließen …" msgstr "Zum Fortfahren die Überprüfung abschließen …"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "Anmeldung abgebrochen" msgstr "Anmeldung abgebrochen"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "Zu viele Anmeldeversuche. Einige Minuten warten und erneut versuchen." msgstr "Zu viele Anmeldeversuche. Einige Minuten warten und erneut versuchen."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Proton ist nicht erreichbar. Bitte die Internetverbindung prüfen und erneut " "Proton ist nicht erreichbar. Bitte die Internetverbindung prüfen und erneut "
"versuchen." "versuchen."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3228,19 +3229,19 @@ msgstr ""
"gespeichert werden. Bitte sicherstellen, dass ein Schlüsselbund (GNOME " "gespeichert werden. Bitte sicherstellen, dass ein Schlüsselbund (GNOME "
"Keyring oder KWallet) läuft und entsperrt ist." "Keyring oder KWallet) läuft und entsperrt ist."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Anmeldung abgebrochen: Es wurde kein Zwei-Faktor-Code eingegeben." msgstr "Anmeldung abgebrochen: Es wurde kein Zwei-Faktor-Code eingegeben."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Anmeldung abgebrochen: Es wurde kein Postfach-Passwort eingegeben." msgstr "Anmeldung abgebrochen: Es wurde kein Postfach-Passwort eingegeben."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Das Postfach-Passwort hat Ihr Konto nicht entsperrt." msgstr "Das Postfach-Passwort hat Ihr Konto nicht entsperrt."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3249,79 +3250,108 @@ msgstr ""
"neue Überprüfung erneut anmelden." "neue Überprüfung erneut anmelden."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Anmeldung fehlgeschlagen: {error}" msgstr "Anmeldung fehlgeschlagen: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Das Postfach-Passwort hat Ihr Konto nicht entsperrt. Versuchen Sie es erneut." msgstr ""
"Das Postfach-Passwort hat Ihr Konto nicht entsperrt. Versuchen Sie es erneut."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Dieses Konto hat ein separates Postfach-Passwort. Geben Sie es ein, um Ihre Dateien zu entsperren." msgstr ""
"Dieses Konto hat ein separates Postfach-Passwort. Geben Sie es ein, um Ihre "
"Dateien zu entsperren."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Postfach-Passwort" msgstr "Postfach-Passwort"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Postfach-Passwort" msgstr "Postfach-Passwort"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Auf diesem Computer entsperrt lassen" msgstr "Auf diesem Computer entsperrt lassen"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Speichert die Entsperrung im System-Schlüsselbund, sodass sich Proton Drive nach jeder Anmeldung ohne Nachfrage öffnet. Andernfalls geben Sie das Passwort einmal pro Sitzung ein." msgstr ""
"Speichert die Entsperrung im System-Schlüsselbund, sodass sich Proton Drive "
"nach jeder Anmeldung ohne Nachfrage öffnet. Andernfalls geben Sie das "
"Passwort einmal pro Sitzung ein."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Entsperren" msgstr "Entsperren"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive ist gesperrt. Geben Sie Ihr Postfach-Passwort ein, um es zu entsperren." msgstr ""
"Proton Drive ist gesperrt. Geben Sie Ihr Postfach-Passwort ein, um es zu "
"entsperren."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Entsperrt." msgstr "Entsperrt."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Entsperren fehlgeschlagen" msgstr "Entsperren fehlgeschlagen"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Zwei-Faktor-Authentifizierung" msgstr "Zwei-Faktor-Authentifizierung"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Den Code aus der Authentifizierungs-App oder einen der " "Den Code aus der Authentifizierungs-App oder einen der "
"Wiederherstellungscodes eingeben." "Wiederherstellungscodes eingeben."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Authentifizierungscode" msgstr "Authentifizierungscode"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Bestätigen" msgstr "Bestätigen"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Im Browser überprüfen"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "Die Überprüfungsseite kann auf diesem System nicht in der App angezeigt werden. Öffne sie in deinem Browser, schließe sie dort ab, komm dann zurück und wähle „Weiter“."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Überprüfungsseite öffnen"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Weiter"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Abmelden?" msgstr "Abmelden?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3330,7 +3360,7 @@ msgstr ""
"nächsten Anmeldung. Dateien, die sich bereits auf diesem Computer befinden, " "nächsten Anmeldung. Dateien, die sich bereits auf diesem Computer befinden, "
"bleiben, wo sie sind." "bleiben, wo sie sind."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Abmelden" msgstr "Abmelden"
@@ -5319,7 +5349,7 @@ msgstr "Papierkorb geleert"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Der Papierkorb konnte nicht geleert werden" msgstr "Der Papierkorb konnte nicht geleert werden"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Überprüfung" msgstr "Überprüfung"
@@ -6117,6 +6147,16 @@ msgstr "{count} J."
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "Proton-Drive-Hintergrunddienst nicht erreichbar: {error}" msgstr "Proton-Drive-Hintergrunddienst nicht erreichbar: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "Die Überprüfungsseite konnte nicht geöffnet werden, daher wurde die "
#~ "Anmeldung abgebrochen. Möglicherweise verhindert das System, dass die "
#~ "Sandbox der Webansicht startet; die Anleitung zur Fehlerbehebung erklärt, "
#~ "was zu tun ist."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Zu einem Monat springen" #~ msgstr "Zu einem Monat springen"
+129 -95
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Shared with me" msgstr "Shared with me"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Computers" msgstr "Computers"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "You're offline" msgstr "You're offline"
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Preferences" msgstr "Preferences"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Keyboard Shortcuts" msgstr "Keyboard Shortcuts"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "About Proton Drive for Linux" msgstr "About Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Main menu" msgstr "Main menu"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -166,23 +166,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Source Code" msgstr "Source Code"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "Proton Privacy Policy" msgstr "Proton Privacy Policy"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Disclaimer" msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -204,7 +204,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -214,7 +214,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -224,7 +224,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -240,15 +240,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Stop Proton Drive?" msgstr "Stop Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -256,7 +256,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -271,8 +271,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -287,30 +288,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancel" msgstr "Cancel"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Stop" msgstr "Stop"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "General" msgstr "General"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -319,38 +320,38 @@ msgstr "Search Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Refresh" msgstr "Refresh"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Keyboard shortcuts" msgstr "Keyboard shortcuts"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Files" msgstr "Files"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Back / forward" msgstr "Back / forward"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Parent folder" msgstr "Parent folder"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Grid / list" msgstr "Grid / list"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -359,7 +360,7 @@ msgstr "Grid / list"
msgid "Rename" msgid "Rename"
msgstr "Rename" msgstr "Rename"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -369,73 +370,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Clear the selection" msgstr "Clear the selection"
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Larger thumbnails" msgstr "Larger thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Smaller thumbnails" msgstr "Smaller thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Reset thumbnail size" msgstr "Reset thumbnail size"
#: crates/pdfs-gui/src/app/main.rs:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Select all" msgstr "Select all"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Photo Viewer" msgstr "Photo Viewer"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Previous / next photo" msgstr "Previous / next photo"
#: crates/pdfs-gui/src/app/main.rs:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "First / last photo" msgstr "First / last photo"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Show details" msgstr "Show details"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Fullscreen" msgstr "Fullscreen"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Close" msgstr "Close"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Not connected" msgstr "Not connected"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Connecting…" msgstr "Connecting…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3154,19 +3155,19 @@ msgstr "Signing in…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Complete the verification to continue…" msgstr "Complete the verification to continue…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "login cancelled" msgstr "login cancelled"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "Too many sign-in attempts. Wait a few minutes and try again." msgstr "Too many sign-in attempts. Wait a few minutes and try again."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "Couldn't reach Proton. Check your internet connection and try again." msgstr "Couldn't reach Proton. Check your internet connection and try again."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3174,19 +3175,19 @@ msgstr ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Sign-in cancelled: no two-factor code was entered." msgstr "Sign-in cancelled: no two-factor code was entered."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Sign-in cancelled: no mailbox password was entered." msgstr "Sign-in cancelled: no mailbox password was entered."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "That mailbox password didn't unlock your account." msgstr "That mailbox password didn't unlock your account."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3195,78 +3196,102 @@ msgstr ""
"new one." "new one."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Sign-in failed: {error}" msgstr "Sign-in failed: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "That mailbox password didn't unlock your account. Try again." msgstr "That mailbox password didn't unlock your account. Try again."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "This account has a separate mailbox password. Enter it to unlock your files." msgstr ""
"This account has a separate mailbox password. Enter it to unlock your files."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Mailbox Password" msgstr "Mailbox Password"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Mailbox password" msgstr "Mailbox password"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Keep unlocked on this computer" msgstr "Keep unlocked on this computer"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Stores the unlock in the system keyring, so Proton Drive opens without asking after every login. Otherwise you enter the password once per session." msgstr ""
"Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Unlock" msgstr "Unlock"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive is locked. Enter your mailbox password to unlock it." msgstr "Proton Drive is locked. Enter your mailbox password to unlock it."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Unlocked." msgstr "Unlocked."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Couldn't unlock" msgstr "Couldn't unlock"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Two-Factor Authentication" msgstr "Two-Factor Authentication"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Authentication code" msgstr "Authentication code"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Confirm" msgstr "Confirm"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Verify in Your Browser"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "The verification page can't be shown in the app on this system. Open it in your browser, complete it there, then come back and choose Continue."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Open Verification Page"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Continue"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Sign Out?" msgstr "Sign Out?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3274,7 +3299,7 @@ msgstr ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Sign Out" msgstr "Sign Out"
@@ -5216,7 +5241,7 @@ msgstr "Trash emptied"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Couldn't empty the trash" msgstr "Couldn't empty the trash"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Verification" msgstr "Verification"
@@ -6007,6 +6032,15 @@ msgstr "{count}y"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "cannot reach the Proton Drive daemon: {error}" msgstr "cannot reach the Proton Drive daemon: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Jump to a month" #~ msgstr "Jump to a month"
+135 -96
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Compartido conmigo" msgstr "Compartido conmigo"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Equipos" msgstr "Equipos"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
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:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Preferencias" msgstr "Preferencias"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Atajos del teclado" msgstr "Atajos del teclado"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "Acerca de Proton Drive for Linux" msgstr "Acerca de Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Menú principal" msgstr "Menú principal"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -166,23 +166,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Código fuente" msgstr "Código fuente"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso legal" msgstr "Aviso legal"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -205,7 +205,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -215,7 +215,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -225,7 +225,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -241,15 +241,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "¿Detener Proton Drive?" msgstr "¿Detener Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -258,7 +258,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -273,8 +273,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -289,30 +290,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Detener" msgstr "Detener"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "General" msgstr "General"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -321,38 +322,38 @@ msgstr "Buscar en Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Actualizar" msgstr "Actualizar"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Atajos del teclado" msgstr "Atajos del teclado"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Archivos" msgstr "Archivos"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Atrás / adelante" msgstr "Atrás / adelante"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Carpeta superior" msgstr "Carpeta superior"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Cuadrícula / lista" msgstr "Cuadrícula / lista"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -361,7 +362,7 @@ msgstr "Cuadrícula / lista"
msgid "Rename" msgid "Rename"
msgstr "Renombrar" msgstr "Renombrar"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -371,73 +372,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
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:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniaturas más grandes" msgstr "Miniaturas más grandes"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
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:1398 #: crates/pdfs-gui/src/app/main.rs:1411
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:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Seleccionar todo" msgstr "Seleccionar todo"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visor de fotos" msgstr "Visor de fotos"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Foto anterior / siguiente" msgstr "Foto anterior / siguiente"
#: crates/pdfs-gui/src/app/main.rs:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "Primera / última foto" msgstr "Primera / última foto"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Pantalla completa" msgstr "Pantalla completa"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Sin conexión" msgstr "Sin conexión"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Conectando…" msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3179,23 +3180,23 @@ msgstr "Iniciando sesión…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Complete la verificación para continuar…" msgstr "Complete la verificación para continuar…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "inicio de sesión cancelado" msgstr "inicio de sesión cancelado"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "" msgstr ""
"Demasiados intentos de inicio de sesión. Espere unos minutos e inténtelo de " "Demasiados intentos de inicio de sesión. Espere unos minutos e inténtelo de "
"nuevo." "nuevo."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"No se pudo contactar con Proton. Compruebe su conexión a Internet e " "No se pudo contactar con Proton. Compruebe su conexión a Internet e "
"inténtelo de nuevo." "inténtelo de nuevo."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3204,20 +3205,20 @@ msgstr ""
"sistema. Asegúrese de que un depósito de claves (GNOME Keyring o KWallet) " "sistema. Asegúrese de que un depósito de claves (GNOME Keyring o KWallet) "
"esté en ejecución y desbloqueado." "esté en ejecución y desbloqueado."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "" msgstr ""
"Inicio de sesión cancelado: no se introdujo ningún código de dos factores." "Inicio de sesión cancelado: no se introdujo ningún código de dos factores."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Inicio de sesión cancelado: no se introdujo la contraseña del buzón." msgstr "Inicio de sesión cancelado: no se introdujo la contraseña del buzón."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Esa contraseña del buzón no desbloqueó tu cuenta." msgstr "Esa contraseña del buzón no desbloqueó tu cuenta."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3226,79 +3227,107 @@ msgstr ""
"sesión para obtener una nueva." "sesión para obtener una nueva."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Falló el inicio de sesión: {error}" msgstr "Falló el inicio de sesión: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Esa contraseña del buzón no desbloqueó tu cuenta. Inténtalo de nuevo." msgstr "Esa contraseña del buzón no desbloqueó tu cuenta. Inténtalo de nuevo."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Esta cuenta tiene una contraseña del buzón independiente. Introdúcela para desbloquear tus archivos." msgstr ""
"Esta cuenta tiene una contraseña del buzón independiente. Introdúcela para "
"desbloquear tus archivos."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Contraseña del buzón" msgstr "Contraseña del buzón"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Contraseña del buzón" msgstr "Contraseña del buzón"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Mantener desbloqueado en este equipo" msgstr "Mantener desbloqueado en este equipo"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Guarda el desbloqueo en el llavero del sistema, para que Proton Drive se abra sin preguntar después de cada inicio de sesión. De lo contrario, introduces la contraseña una vez por sesión." msgstr ""
"Guarda el desbloqueo en el llavero del sistema, para que Proton Drive se "
"abra sin preguntar después de cada inicio de sesión. De lo contrario, "
"introduces la contraseña una vez por sesión."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Desbloquear" msgstr "Desbloquear"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive está bloqueado. Introduce la contraseña del buzón para desbloquearlo." msgstr ""
"Proton Drive está bloqueado. Introduce la contraseña del buzón para "
"desbloquearlo."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Desbloqueado." msgstr "Desbloqueado."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "No se pudo desbloquear" msgstr "No se pudo desbloquear"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Autenticación en dos pasos" msgstr "Autenticación en dos pasos"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Introduzca el código de su aplicación de autenticación o uno de sus códigos " "Introduzca el código de su aplicación de autenticación o uno de sus códigos "
"de recuperación." "de recuperación."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Código de autenticación" msgstr "Código de autenticación"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Verificar en el navegador"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "La página de verificación no se puede mostrar en la aplicación en este sistema. Ábrala en su navegador, complétela allí y luego vuelva y elija “Continuar”."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Abrir página de verificación"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Continuar"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "¿Cerrar la sesión?" msgstr "¿Cerrar la sesión?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3307,7 +3336,7 @@ msgstr ""
"iniciar sesión. Los archivos que ya están en este equipo se quedan donde " "iniciar sesión. Los archivos que ya están en este equipo se quedan donde "
"están." "están."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Cerrar la sesión" msgstr "Cerrar la sesión"
@@ -5277,7 +5306,7 @@ msgstr "Papelera vaciada"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "No se pudo vaciar la papelera" msgstr "No se pudo vaciar la papelera"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Verificación" msgstr "Verificación"
@@ -6077,6 +6106,16 @@ msgstr "{count} a"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "no se puede contactar con el demonio de Proton Drive: {error}" msgstr "no se puede contactar con el demonio de Proton Drive: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "No se pudo abrir la página de verificación, así que se canceló el inicio "
#~ "de sesión. Es posible que su sistema impida que se inicie el entorno "
#~ "aislado de la vista web; la guía de solución de problemas explica qué "
#~ "hacer."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Saltar a un mes" #~ msgstr "Saltar a un mes"
+141 -99
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
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:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Ordinateurs" msgstr "Ordinateurs"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what} : {detail}" msgstr "{what} : {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
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:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Préférences" msgstr "Préférences"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Raccourcis clavier" msgstr "Raccourcis clavier"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "À propos de Proton Drive for Linux" msgstr "À propos de Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Menu principal" msgstr "Menu principal"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -166,23 +166,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Code source" msgstr "Code source"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Avertissement" msgstr "Avertissement"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -206,7 +206,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -216,7 +216,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -226,7 +226,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -243,15 +243,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
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:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -260,7 +260,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -275,8 +275,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -291,30 +292,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Arrêter" msgstr "Arrêter"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Général" msgstr "Général"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -323,38 +324,38 @@ msgstr "Rechercher dans Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Actualiser" msgstr "Actualiser"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Raccourcis clavier" msgstr "Raccourcis clavier"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Fichiers" msgstr "Fichiers"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Précédent / suivant" msgstr "Précédent / suivant"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Dossier parent" msgstr "Dossier parent"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Grille / liste" msgstr "Grille / liste"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -363,7 +364,7 @@ msgstr "Grille / liste"
msgid "Rename" msgid "Rename"
msgstr "Renommer" msgstr "Renommer"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -373,73 +374,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
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:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniatures plus grandes" msgstr "Miniatures plus grandes"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniatures plus petites" msgstr "Miniatures plus petites"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
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:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Tout sélectionner" msgstr "Tout sélectionner"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visionneuse de photos" msgstr "Visionneuse de photos"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
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:1406 #: crates/pdfs-gui/src/app/main.rs:1419
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:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Afficher les détails" msgstr "Afficher les détails"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Plein écran" msgstr "Plein écran"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Fermer" msgstr "Fermer"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Non connecté" msgstr "Non connecté"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Connexion…" msgstr "Connexion…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3205,21 +3206,21 @@ msgstr "Connexion…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Terminez la vérification pour continuer…" msgstr "Terminez la vérification pour continuer…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "connexion annulée" msgstr "connexion annulée"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "" msgstr ""
"Trop de tentatives de connexion. Patientez quelques minutes et réessayez." "Trop de tentatives de connexion. Patientez quelques minutes et réessayez."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Impossible de joindre Proton. Vérifiez votre connexion Internet et réessayez." "Impossible de joindre Proton. Vérifiez votre connexion Internet et réessayez."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3228,19 +3229,21 @@ msgstr ""
"système. Assurez-vous qu’un trousseau (GNOME Keyring ou KWallet) est en " "système. Assurez-vous qu’un trousseau (GNOME Keyring ou KWallet) est en "
"cours d’exécution et déverrouillé." "cours d’exécution et déverrouillé."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Connexion annulée : aucun code à deux facteurs n’a été saisi." msgstr "Connexion annulée : aucun code à deux facteurs n’a été saisi."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Connexion annulée : aucun mot de passe de boîte aux lettres n’a été saisi." msgstr ""
"Connexion annulée : aucun mot de passe de boîte aux lettres n’a été saisi."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Ce mot de passe de boîte aux lettres n’a pas déverrouillé votre compte." msgstr ""
"Ce mot de passe de boîte aux lettres n’a pas déverrouillé votre compte."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3249,79 +3252,109 @@ msgstr ""
"pour en obtenir une nouvelle." "pour en obtenir une nouvelle."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Échec de la connexion : {error}" msgstr "Échec de la connexion : {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Ce mot de passe de boîte aux lettres n’a pas déverrouillé votre compte. Réessayez." msgstr ""
"Ce mot de passe de boîte aux lettres n’a pas déverrouillé votre compte. "
"Réessayez."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Ce compte a un mot de passe de boîte aux lettres distinct. Saisissez-le pour déverrouiller vos fichiers." msgstr ""
"Ce compte a un mot de passe de boîte aux lettres distinct. Saisissez-le pour "
"déverrouiller vos fichiers."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Mot de passe de la boîte aux lettres" msgstr "Mot de passe de la boîte aux lettres"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Mot de passe de la boîte aux lettres" msgstr "Mot de passe de la boîte aux lettres"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Garder déverrouillé sur cet ordinateur" msgstr "Garder déverrouillé sur cet ordinateur"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Enregistre le déverrouillage dans le trousseau de clés du système, afin que Proton Drive s’ouvre sans demande après chaque connexion. Sinon, vous saisissez le mot de passe une fois par session." msgstr ""
"Enregistre le déverrouillage dans le trousseau de clés du système, afin que "
"Proton Drive s’ouvre sans demande après chaque connexion. Sinon, vous "
"saisissez le mot de passe une fois par session."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Déverrouiller" msgstr "Déverrouiller"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive est verrouillé. Saisissez votre mot de passe de boîte aux lettres pour le déverrouiller." msgstr ""
"Proton Drive est verrouillé. Saisissez votre mot de passe de boîte aux "
"lettres pour le déverrouiller."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Déverrouillé." msgstr "Déverrouillé."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Impossible de déverrouiller" msgstr "Impossible de déverrouiller"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Authentification à deux facteurs" msgstr "Authentification à deux facteurs"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Saisissez le code de votre application d’authentification ou l’un de vos " "Saisissez le code de votre application d’authentification ou l’un de vos "
"codes de récupération." "codes de récupération."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Code d’authentification" msgstr "Code d’authentification"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Confirmer" msgstr "Confirmer"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Vérifier dans le navigateur"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "La page de vérification ne peut pas s’afficher dans l’application sur ce système. Ouvrez-la dans votre navigateur, terminez-la, puis revenez et choisissez « Continuer »."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Ouvrir la page de vérification"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Continuer"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Se déconnecter ?" msgstr "Se déconnecter ?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3330,7 +3363,7 @@ msgstr ""
"vous vous reconnectiez. Les fichiers déjà présents sur cet ordinateur " "vous vous reconnectiez. Les fichiers déjà présents sur cet ordinateur "
"restent en place." "restent en place."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Se déconnecter" msgstr "Se déconnecter"
@@ -5317,7 +5350,7 @@ msgstr "Corbeille vidée"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Impossible de vider la corbeille" msgstr "Impossible de vider la corbeille"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Vérification" msgstr "Vérification"
@@ -6118,6 +6151,15 @@ msgstr "{count} a"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "impossible de joindre le démon Proton Drive : {error}" msgstr "impossible de joindre le démon Proton Drive : {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "La page de vérification n’a pas pu s’ouvrir, la connexion a donc été "
#~ "annulée. Votre système empêche peut-être le démarrage du bac à sable de "
#~ "la vue web ; le guide de dépannage explique la marche à suivre."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Aller à un mois" #~ msgstr "Aller à un mois"
+142 -99
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Condivisi con me" msgstr "Condivisi con me"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Computer" msgstr "Computer"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "Sei offline" msgstr "Sei offline"
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Preferenze" msgstr "Preferenze"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Scorciatoie da tastiera" msgstr "Scorciatoie da tastiera"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "Informazioni su Proton Drive for Linux" msgstr "Informazioni su Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Menu principale" msgstr "Menu principale"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -165,23 +165,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Codice sorgente" msgstr "Codice sorgente"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Esclusione di responsabilità" msgstr "Esclusione di responsabilità"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -204,7 +204,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -214,7 +214,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -224,7 +224,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -240,15 +240,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Arrestare Proton Drive?" msgstr "Arrestare Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -256,7 +256,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -271,8 +271,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -287,30 +288,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Arresta" msgstr "Arresta"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Generale" msgstr "Generale"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -319,38 +320,38 @@ msgstr "Cerca in Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Aggiorna" msgstr "Aggiorna"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Scorciatoie da tastiera" msgstr "Scorciatoie da tastiera"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "File" msgstr "File"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Indietro / avanti" msgstr "Indietro / avanti"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Cartella superiore" msgstr "Cartella superiore"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Griglia / elenco" msgstr "Griglia / elenco"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -359,7 +360,7 @@ msgstr "Griglia / elenco"
msgid "Rename" msgid "Rename"
msgstr "Rinomina" msgstr "Rinomina"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -369,73 +370,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Annulla la selezione" msgstr "Annulla la selezione"
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniature più grandi" msgstr "Miniature più grandi"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniature più piccole" msgstr "Miniature più piccole"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
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:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Seleziona tutto" msgstr "Seleziona tutto"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visualizzatore di foto" msgstr "Visualizzatore di foto"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Foto precedente / successiva" msgstr "Foto precedente / successiva"
#: crates/pdfs-gui/src/app/main.rs:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "Prima / ultima foto" msgstr "Prima / ultima foto"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Mostra dettagli" msgstr "Mostra dettagli"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Schermo intero" msgstr "Schermo intero"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Chiudi" msgstr "Chiudi"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Non connesso" msgstr "Non connesso"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Connessione…" msgstr "Connessione…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3197,21 +3198,21 @@ msgstr "Accesso in corso…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Completa la verifica per continuare…" msgstr "Completa la verifica per continuare…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "accesso annullato" msgstr "accesso annullato"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "Troppi tentativi di accesso. Attendi qualche minuto e riprova." msgstr "Troppi tentativi di accesso. Attendi qualche minuto e riprova."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Impossibile raggiungere Proton. Controlla la connessione a Internet e " "Impossibile raggiungere Proton. Controlla la connessione a Internet e "
"riprova." "riprova."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3220,21 +3221,24 @@ msgstr ""
"portachiavi di sistema. Assicurati che un portachiavi (GNOME Keyring o " "portachiavi di sistema. Assicurati che un portachiavi (GNOME Keyring o "
"KWallet) sia in esecuzione e sbloccato." "KWallet) sia in esecuzione e sbloccato."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "" msgstr ""
"Accesso annullato: non è stato inserito alcun codice di autenticazione a due " "Accesso annullato: non è stato inserito alcun codice di autenticazione a due "
"fattori." "fattori."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Accesso annullato: non è stata inserita alcuna password della casella di posta." msgstr ""
"Accesso annullato: non è stata inserita alcuna password della casella di "
"posta."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Quella password della casella di posta non ha sbloccato il tuo account." msgstr ""
"Quella password della casella di posta non ha sbloccato il tuo account."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3243,79 +3247,109 @@ msgstr ""
"riceverne una nuova." "riceverne una nuova."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Accesso non riuscito: {error}" msgstr "Accesso non riuscito: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Quella password della casella di posta non ha sbloccato il tuo account. Riprova." msgstr ""
"Quella password della casella di posta non ha sbloccato il tuo account. "
"Riprova."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Questo account ha una password della casella di posta separata. Inseriscila per sbloccare i tuoi file." msgstr ""
"Questo account ha una password della casella di posta separata. Inseriscila "
"per sbloccare i tuoi file."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Password della casella di posta" msgstr "Password della casella di posta"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Password della casella di posta" msgstr "Password della casella di posta"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Mantieni sbloccato su questo computer" msgstr "Mantieni sbloccato su questo computer"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Salva lo sblocco nel portachiavi di sistema, così Proton Drive si apre senza chiedere dopo ogni accesso. Altrimenti inserisci la password una volta per sessione." msgstr ""
"Salva lo sblocco nel portachiavi di sistema, così Proton Drive si apre senza "
"chiedere dopo ogni accesso. Altrimenti inserisci la password una volta per "
"sessione."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Sblocca" msgstr "Sblocca"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive è bloccato. Inserisci la password della casella di posta per sbloccarlo." msgstr ""
"Proton Drive è bloccato. Inserisci la password della casella di posta per "
"sbloccarlo."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Sbloccato." msgstr "Sbloccato."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Impossibile sbloccare" msgstr "Impossibile sbloccare"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Autenticazione a due fattori" msgstr "Autenticazione a due fattori"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Inserisci il codice dell'app di autenticazione o uno dei tuoi codici di " "Inserisci il codice dell'app di autenticazione o uno dei tuoi codici di "
"recupero." "recupero."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Codice di autenticazione" msgstr "Codice di autenticazione"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Conferma" msgstr "Conferma"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Verifica nel browser"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "La pagina di verifica non può essere mostrata nell’app su questo sistema. Aprila nel browser, completala lì, poi torna qui e scegli “Continua”."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Apri pagina di verifica"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Continua"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Disconnettersi?" msgstr "Disconnettersi?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3323,7 +3357,7 @@ msgstr ""
"Proton Drive si disconnetterà e interromperà la sincronizzazione finché non " "Proton Drive si disconnetterà e interromperà la sincronizzazione finché non "
"accedi di nuovo. I file già presenti su questo computer restano dove sono." "accedi di nuovo. I file già presenti su questo computer restano dove sono."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Disconnetti" msgstr "Disconnetti"
@@ -5297,7 +5331,7 @@ msgstr "Cestino svuotato"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Impossibile svuotare il cestino" msgstr "Impossibile svuotare il cestino"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Verifica" msgstr "Verifica"
@@ -6095,6 +6129,15 @@ msgstr "{count} a"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "impossibile raggiungere il demone di Proton Drive: {error}" msgstr "impossibile raggiungere il demone di Proton Drive: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "Impossibile aprire la pagina di verifica, quindi l'accesso è stato "
#~ "annullato. Il sistema potrebbe impedire l'avvio della sandbox della vista "
#~ "web; la guida alla risoluzione dei problemi spiega cosa fare."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Vai a un mese" #~ msgstr "Vai a un mese"
+137 -97
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Gedeeld met mij" msgstr "Gedeeld met mij"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Computers" msgstr "Computers"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "Je bent offline" msgstr "Je bent offline"
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Voorkeuren" msgstr "Voorkeuren"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Sneltoetsen" msgstr "Sneltoetsen"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "Over Proton Drive for Linux" msgstr "Over Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Hoofdmenu" msgstr "Hoofdmenu"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -166,23 +166,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Broncode" msgstr "Broncode"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "Privacybeleid van Proton" msgstr "Privacybeleid van Proton"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Disclaimer" msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -205,7 +205,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -215,7 +215,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -225,7 +225,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -241,15 +241,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Proton Drive stoppen?" msgstr "Proton Drive stoppen?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -257,7 +257,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -272,8 +272,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -288,30 +289,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annuleren" msgstr "Annuleren"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Stoppen" msgstr "Stoppen"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Algemeen" msgstr "Algemeen"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -320,38 +321,38 @@ msgstr "Drive doorzoeken"
msgid "Refresh" msgid "Refresh"
msgstr "Verversen" msgstr "Verversen"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Sneltoetsen" msgstr "Sneltoetsen"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Bestanden" msgstr "Bestanden"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Terug / vooruit" msgstr "Terug / vooruit"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Bovenliggende map" msgstr "Bovenliggende map"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Raster / lijst" msgstr "Raster / lijst"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -360,7 +361,7 @@ msgstr "Raster / lijst"
msgid "Rename" msgid "Rename"
msgstr "Hernoemen" msgstr "Hernoemen"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -370,73 +371,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Selectie wissen" msgstr "Selectie wissen"
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Grotere miniaturen" msgstr "Grotere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Kleinere miniaturen" msgstr "Kleinere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Miniatuurgrootte herstellen" msgstr "Miniatuurgrootte herstellen"
#: crates/pdfs-gui/src/app/main.rs:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Alles selecteren" msgstr "Alles selecteren"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Fotoweergave" msgstr "Fotoweergave"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Vorige / volgende foto" msgstr "Vorige / volgende foto"
#: crates/pdfs-gui/src/app/main.rs:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "Eerste / laatste foto" msgstr "Eerste / laatste foto"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Details tonen" msgstr "Details tonen"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Volledig scherm" msgstr "Volledig scherm"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Sluiten" msgstr "Sluiten"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Niet verbonden" msgstr "Niet verbonden"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Verbinden…" msgstr "Verbinden…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3190,22 +3191,22 @@ msgstr "Aanmelden…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Voltooi de verificatie om verder te gaan…" msgstr "Voltooi de verificatie om verder te gaan…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "aanmelden geannuleerd" msgstr "aanmelden geannuleerd"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "" msgstr ""
"Te veel aanmeldpogingen. Wacht een paar minuten en probeer het opnieuw." "Te veel aanmeldpogingen. Wacht een paar minuten en probeer het opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Kon Proton niet bereiken. Controleer je internetverbinding en probeer het " "Kon Proton niet bereiken. Controleer je internetverbinding en probeer het "
"opnieuw." "opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3214,19 +3215,19 @@ msgstr ""
"opgeslagen. Zorg dat een sleutelbos (GNOME Keyring of KWallet) actief en " "opgeslagen. Zorg dat een sleutelbos (GNOME Keyring of KWallet) actief en "
"ontgrendeld is." "ontgrendeld is."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Aanmelden geannuleerd: er is geen tweestapscode ingevoerd." msgstr "Aanmelden geannuleerd: er is geen tweestapscode ingevoerd."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Aanmelden geannuleerd: er is geen mailboxwachtwoord ingevoerd." msgstr "Aanmelden geannuleerd: er is geen mailboxwachtwoord ingevoerd."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Dat mailboxwachtwoord heeft je account niet ontgrendeld." msgstr "Dat mailboxwachtwoord heeft je account niet ontgrendeld."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3235,77 +3236,106 @@ msgstr ""
"om een nieuwe te krijgen." "om een nieuwe te krijgen."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Aanmelden mislukt: {error}" msgstr "Aanmelden mislukt: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Dat mailboxwachtwoord heeft je account niet ontgrendeld. Probeer het opnieuw." msgstr ""
"Dat mailboxwachtwoord heeft je account niet ontgrendeld. Probeer het opnieuw."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Dit account heeft een apart mailboxwachtwoord. Voer het in om je bestanden te ontgrendelen." msgstr ""
"Dit account heeft een apart mailboxwachtwoord. Voer het in om je bestanden "
"te ontgrendelen."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Mailboxwachtwoord" msgstr "Mailboxwachtwoord"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Mailboxwachtwoord" msgstr "Mailboxwachtwoord"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Ontgrendeld houden op deze computer" msgstr "Ontgrendeld houden op deze computer"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Bewaart de ontgrendeling in de sleutelhanger van het systeem, zodat Proton Drive na elke aanmelding opent zonder te vragen. Anders voer je het wachtwoord één keer per sessie in." msgstr ""
"Bewaart de ontgrendeling in de sleutelhanger van het systeem, zodat Proton "
"Drive na elke aanmelding opent zonder te vragen. Anders voer je het "
"wachtwoord één keer per sessie in."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Ontgrendelen" msgstr "Ontgrendelen"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive is vergrendeld. Voer je mailboxwachtwoord in om het te ontgrendelen." msgstr ""
"Proton Drive is vergrendeld. Voer je mailboxwachtwoord in om het te "
"ontgrendelen."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Ontgrendeld." msgstr "Ontgrendeld."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Ontgrendelen mislukt" msgstr "Ontgrendelen mislukt"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Tweestapsverificatie" msgstr "Tweestapsverificatie"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "Voer de code uit je authenticator-app in, of een van je herstelcodes." msgstr "Voer de code uit je authenticator-app in, of een van je herstelcodes."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Verificatiecode" msgstr "Verificatiecode"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Bevestigen" msgstr "Bevestigen"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Verifiëren in je browser"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "De verificatiepagina kan op dit systeem niet in de app worden getoond. Open hem in je browser, voltooi hem daar, kom dan terug en kies “Doorgaan”."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Verificatiepagina openen"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Doorgaan"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Afmelden?" msgstr "Afmelden?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3314,7 +3344,7 @@ msgstr ""
"je opnieuw aanmeldt. Bestanden die al op deze computer staan, blijven waar " "je opnieuw aanmeldt. Bestanden die al op deze computer staan, blijven waar "
"ze zijn." "ze zijn."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Afmelden" msgstr "Afmelden"
@@ -5290,7 +5320,7 @@ msgstr "Prullenbak geleegd"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Kon de prullenbak niet legen" msgstr "Kon de prullenbak niet legen"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Verificatie" msgstr "Verificatie"
@@ -6087,6 +6117,16 @@ msgstr "{count}j"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "kan de achtergronddienst van Proton Drive niet bereiken: {error}" msgstr "kan de achtergronddienst van Proton Drive niet bereiken: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "De verificatiepagina kon niet worden geopend, dus het aanmelden is "
#~ "geannuleerd. Mogelijk verhindert je systeem dat de sandbox van de "
#~ "webweergave start; de handleiding voor probleemoplossing legt uit wat je "
#~ "kunt doen."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Naar een maand springen" #~ msgstr "Naar een maand springen"
+113 -94
View File
@@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: proton-drive-linux 3.1.0\n" "Project-Id-Version: proton-drive-linux 3.1.2\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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -73,91 +73,91 @@ msgstr ""
msgid "My files" msgid "My files"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
msgid "That's not there any more" msgid "That's not there any more"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
msgid "Something changed this first" msgid "Something changed this first"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1106 #: crates/pdfs-gui/src/app/main.rs:1119
msgid "Your Proton Drive is full" msgid "Your Proton Drive is full"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Proton Drive for Linux" msgid "Proton Drive for Linux"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -165,23 +165,23 @@ msgid ""
"AG." "AG."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
msgid "Proton Terms of Service" msgid "Proton Terms of Service"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1232 #: crates/pdfs-gui/src/app/main.rs:1245
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -194,21 +194,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -219,21 +219,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -248,8 +248,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -264,30 +265,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
msgid "Couldn't stop Proton Drive" msgid "Couldn't stop Proton Drive"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -296,38 +297,38 @@ msgstr ""
msgid "Refresh" msgid "Refresh"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -336,7 +337,7 @@ msgstr ""
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -346,73 +347,73 @@ msgstr ""
msgid "Move to Trash" msgid "Move to Trash"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
msgid "Waiting for the Proton Drive service to start." msgid "Waiting for the Proton Drive service to start."
msgstr "" msgstr ""
@@ -3057,120 +3058,138 @@ msgstr ""
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
msgstr "" msgstr ""
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
msgid "Verify in Your Browser"
msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:543
msgid "Open Verification Page"
msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:550
msgid "Continue"
msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "" msgstr ""
@@ -5076,7 +5095,7 @@ msgstr ""
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "" msgstr ""
+136 -97
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -72,91 +72,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Udostępnione mi" msgstr "Udostępnione mi"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Komputery" msgstr "Komputery"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
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:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Preferencje" msgstr "Preferencje"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Skróty klawiszowe" msgstr "Skróty klawiszowe"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "O programie Proton Drive for Linux" msgstr "O programie Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Menu główne" msgstr "Menu główne"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -168,23 +168,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Kod źródłowy" msgstr "Kod źródłowy"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Zastrzeżenia" msgstr "Zastrzeżenia"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -208,7 +208,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -218,7 +218,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -228,7 +228,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -244,15 +244,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Zatrzymać Proton Drive?" msgstr "Zatrzymać Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -261,7 +261,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -276,8 +276,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -292,30 +293,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Zatrzymaj" msgstr "Zatrzymaj"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Ogólne" msgstr "Ogólne"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -324,38 +325,38 @@ msgstr "Przeszukaj Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Odśwież" msgstr "Odśwież"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Skróty klawiszowe" msgstr "Skróty klawiszowe"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Pliki" msgstr "Pliki"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Wstecz/dalej" msgstr "Wstecz/dalej"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Katalog nadrzędny" msgstr "Katalog nadrzędny"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Siatka/lista" msgstr "Siatka/lista"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -364,7 +365,7 @@ msgstr "Siatka/lista"
msgid "Rename" msgid "Rename"
msgstr "Zmień nazwę" msgstr "Zmień nazwę"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -374,73 +375,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Wyczyść zaznaczenie" msgstr "Wyczyść zaznaczenie"
#: crates/pdfs-gui/src/app/main.rs:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Większe miniatury" msgstr "Większe miniatury"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Mniejsze miniatury" msgstr "Mniejsze miniatury"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Przywróć rozmiar miniatur" msgstr "Przywróć rozmiar miniatur"
#: crates/pdfs-gui/src/app/main.rs:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Zaznacz wszystko" msgstr "Zaznacz wszystko"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Przeglądarka zdjęć" msgstr "Przeglądarka zdjęć"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
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:1406 #: crates/pdfs-gui/src/app/main.rs:1419
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:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Wyświetl szczegóły" msgstr "Wyświetl szczegóły"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Pełny ekran" msgstr "Pełny ekran"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Zamknij" msgstr "Zamknij"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Brak połączenia" msgstr "Brak połączenia"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Łączenie…" msgstr "Łączenie…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3247,22 +3248,22 @@ msgstr "Logowanie…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Proszę ukończyć weryfikację, aby kontynuować…" msgstr "Proszę ukończyć weryfikację, aby kontynuować…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "anulowano logowanie" msgstr "anulowano logowanie"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "" msgstr ""
"Za dużo prób logowania. Proszę odczekać kilka minut i spróbować ponownie." "Za dużo prób logowania. Proszę odczekać kilka minut i spróbować ponownie."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Nie można połączyć się z Proton. Proszę sprawdzić połączenie z Internetem i " "Nie można połączyć się z Proton. Proszę sprawdzić połączenie z Internetem i "
"spróbować ponownie." "spróbować ponownie."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3271,19 +3272,19 @@ msgstr ""
"upewnić, że baza kluczy (GNOME Keyring lub KWallet) jest uruchomiona i " "upewnić, że baza kluczy (GNOME Keyring lub KWallet) jest uruchomiona i "
"odblokowana." "odblokowana."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Anulowano logowanie: nie wpisano kodu uwierzytelniania dwuetapowego." msgstr "Anulowano logowanie: nie wpisano kodu uwierzytelniania dwuetapowego."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Anulowano logowanie: nie wpisano hasła skrzynki pocztowej." msgstr "Anulowano logowanie: nie wpisano hasła skrzynki pocztowej."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "To hasło skrzynki pocztowej nie odblokowało Twojego konta." msgstr "To hasło skrzynki pocztowej nie odblokowało Twojego konta."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3292,79 +3293,108 @@ msgstr ""
"ponownie, aby otrzymać nową." "ponownie, aby otrzymać nową."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Logowanie się nie powiodło: {error}" msgstr "Logowanie się nie powiodło: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "To hasło skrzynki pocztowej nie odblokowało Twojego konta. Spróbuj ponownie." msgstr ""
"To hasło skrzynki pocztowej nie odblokowało Twojego konta. Spróbuj ponownie."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "To konto ma osobne hasło skrzynki pocztowej. Wpisz je, aby odblokować swoje pliki." msgstr ""
"To konto ma osobne hasło skrzynki pocztowej. Wpisz je, aby odblokować swoje "
"pliki."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Hasło skrzynki pocztowej" msgstr "Hasło skrzynki pocztowej"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Hasło skrzynki pocztowej" msgstr "Hasło skrzynki pocztowej"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Pozostaw odblokowane na tym komputerze" msgstr "Pozostaw odblokowane na tym komputerze"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Zapisuje odblokowanie w systemowym breloku kluczy, aby Proton Drive otwierał się bez pytania po każdym logowaniu. W przeciwnym razie wpisujesz hasło raz na sesję." msgstr ""
"Zapisuje odblokowanie w systemowym breloku kluczy, aby Proton Drive otwierał "
"się bez pytania po każdym logowaniu. W przeciwnym razie wpisujesz hasło raz "
"na sesję."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Odblokuj" msgstr "Odblokuj"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "Proton Drive jest zablokowany. Wpisz hasło skrzynki pocztowej, aby go odblokować." msgstr ""
"Proton Drive jest zablokowany. Wpisz hasło skrzynki pocztowej, aby go "
"odblokować."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Odblokowano." msgstr "Odblokowano."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Nie udało się odblokować" msgstr "Nie udało się odblokować"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Uwierzytelnianie dwuskładnikowe" msgstr "Uwierzytelnianie dwuskładnikowe"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Proszę wpisać kod z aplikacji uwierzytelniającej lub jeden z kodów " "Proszę wpisać kod z aplikacji uwierzytelniającej lub jeden z kodów "
"odzyskiwania." "odzyskiwania."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Kod uwierzytelniania" msgstr "Kod uwierzytelniania"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Potwierdź" msgstr "Potwierdź"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Weryfikacja w przeglądarce"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "Na tym systemie strony weryfikacji nie można wyświetlić w aplikacji. Proszę otworzyć ją w przeglądarce, ukończyć tam weryfikację, a następnie wrócić i wybrać „Kontynuuj”."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Otwórz stronę weryfikacji"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Kontynuuj"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Wylogować się?" msgstr "Wylogować się?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3372,7 +3402,7 @@ msgstr ""
"Proton Drive rozłączy się i przestanie synchronizować do czasu ponownego " "Proton Drive rozłączy się i przestanie synchronizować do czasu ponownego "
"zalogowania. Pliki znajdujące się już na tym komputerze pozostaną na miejscu." "zalogowania. Pliki znajdujące się już na tym komputerze pozostaną na miejscu."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Wyloguj się" msgstr "Wyloguj się"
@@ -5373,7 +5403,7 @@ msgstr "Opróżniono kosz"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Nie można opróżnić kosza" msgstr "Nie można opróżnić kosza"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Weryfikacja" msgstr "Weryfikacja"
@@ -6182,6 +6212,15 @@ msgstr "{count} r."
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "nie można połączyć się z usługą Proton Drive: {error}" msgstr "nie można połączyć się z usługą Proton Drive: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "Nie można otworzyć strony weryfikacji, więc logowanie zostało anulowane. "
#~ "System może blokować uruchomienie piaskownicy widoku internetowego; "
#~ "poradnik rozwiązywania problemów wyjaśnia, co zrobić."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Przejdź do miesiąca" #~ msgstr "Przejdź do miesiąca"
+136 -97
View File
@@ -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-07 02:39+0200\n" "POT-Creation-Date: 2026-10-08 18:47+0200\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:747 #: crates/pdfs-gui/src/app/main.rs:760
#: crates/pdfs-gui/src/app/pages/activity_text.rs:539 #: crates/pdfs-gui/src/app/pages/activity_text.rs:539
#: 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:819 #: crates/pdfs-gui/src/app/pages/browser.rs:819
@@ -70,91 +70,91 @@ 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:750 crates/pdfs-gui/src/app/main.rs:1394 #: crates/pdfs-gui/src/app/main.rs:763 crates/pdfs-gui/src/app/main.rs:1407
#: 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:842 #: crates/pdfs-gui/src/app/pages/photos.rs:842
#: 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:755 #: crates/pdfs-gui/src/app/main.rs:768
#: 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:482 #: crates/pdfs-gui/src/app/pages/shared.rs:482
msgid "Shared with me" msgid "Shared with me"
msgstr "Compartilhados comigo" msgstr "Compartilhados comigo"
#: crates/pdfs-gui/src/app/main.rs:760 #: crates/pdfs-gui/src/app/main.rs:773
#: 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:763 #: crates/pdfs-gui/src/app/main.rs:776
#: 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:481 #: crates/pdfs-gui/src/app/pages/devices.rs:481
msgid "Computers" msgid "Computers"
msgstr "Computadores" msgstr "Computadores"
#: crates/pdfs-gui/src/app/main.rs:764 #: crates/pdfs-gui/src/app/main.rs:777
#: 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:766 #: crates/pdfs-gui/src/app/main.rs:779
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:1083 #: crates/pdfs-gui/src/app/main.rs:1096
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1102 #: crates/pdfs-gui/src/app/main.rs:1115
msgid "You're offline" msgid "You're offline"
msgstr "Você está offline" msgstr "Você está offline"
#: crates/pdfs-gui/src/app/main.rs:1103 #: crates/pdfs-gui/src/app/main.rs:1116
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:1104 #: crates/pdfs-gui/src/app/main.rs:1117
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:1105 #: crates/pdfs-gui/src/app/main.rs:1118
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:1106 #: crates/pdfs-gui/src/app/main.rs:1119
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:1147 crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1160 crates/pdfs-gui/src/app/main.rs:1389
#: crates/pdfs-gui/src/app/pages/status.rs:385 #: crates/pdfs-gui/src/app/pages/status.rs:385
msgid "Preferences" msgid "Preferences"
msgstr "Preferências" msgstr "Preferências"
#: crates/pdfs-gui/src/app/main.rs:1148 #: crates/pdfs-gui/src/app/main.rs:1161
#: crates/pdfs-gui/src/app/widgets/compat.rs:262 #: crates/pdfs-gui/src/app/widgets/compat.rs:262
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Atalhos de teclado" msgstr "Atalhos de teclado"
#: crates/pdfs-gui/src/app/main.rs:1150 #: crates/pdfs-gui/src/app/main.rs:1163
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "Sobre o Proton Drive for Linux" msgstr "Sobre o Proton Drive for Linux"
#: crates/pdfs-gui/src/app/main.rs:1155 #: crates/pdfs-gui/src/app/main.rs:1168
msgid "Main menu" msgid "Main menu"
msgstr "Menu principal" msgstr "Menu principal"
#: crates/pdfs-gui/src/app/main.rs:1211 #: crates/pdfs-gui/src/app/main.rs:1224
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:1219 #: crates/pdfs-gui/src/app/main.rs:1232
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -165,23 +165,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:1224 #: crates/pdfs-gui/src/app/main.rs:1237
msgid "Source Code" msgid "Source Code"
msgstr "Código-fonte" msgstr "Código-fonte"
#: crates/pdfs-gui/src/app/main.rs:1228 #: crates/pdfs-gui/src/app/main.rs:1241
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:1232 #: crates/pdfs-gui/src/app/main.rs:1245
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:1237 #: crates/pdfs-gui/src/app/main.rs:1250
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso legal" msgstr "Aviso legal"
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1254
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"
@@ -204,7 +204,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:1249 #: crates/pdfs-gui/src/app/main.rs:1262
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/"
@@ -214,7 +214,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:1257 #: crates/pdfs-gui/src/app/main.rs:1270
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 "
@@ -224,7 +224,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:1265 #: crates/pdfs-gui/src/app/main.rs:1278
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/"
@@ -240,15 +240,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:1276 #: crates/pdfs-gui/src/app/main.rs:1289
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:1314 #: crates/pdfs-gui/src/app/main.rs:1327
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:1315 #: crates/pdfs-gui/src/app/main.rs:1328
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."
@@ -256,7 +256,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:1317 crates/pdfs-gui/src/app/main.rs:1592 #: crates/pdfs-gui/src/app/main.rs:1330 crates/pdfs-gui/src/app/main.rs:1605
#: 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:1892 #: crates/pdfs-gui/src/app/pages/browser.rs:1892
@@ -271,8 +271,9 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:1013 #: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488 #: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538 #: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:378 #: crates/pdfs-gui/src/app/pages/login.rs:389
#: crates/pdfs-gui/src/app/pages/login.rs:492 #: crates/pdfs-gui/src/app/pages/login.rs:503
#: crates/pdfs-gui/src/app/pages/login.rs:549
#: crates/pdfs-gui/src/app/pages/photos.rs:2055 #: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946 #: crates/pdfs-gui/src/app/pages/shared.rs:946
#: crates/pdfs-gui/src/app/pages/shared.rs:1027 #: crates/pdfs-gui/src/app/pages/shared.rs:1027
@@ -287,30 +288,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: crates/pdfs-gui/src/app/main.rs:1318 #: crates/pdfs-gui/src/app/main.rs:1331
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Parar" msgstr "Parar"
#: crates/pdfs-gui/src/app/main.rs:1335 #: crates/pdfs-gui/src/app/main.rs:1348
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:1336 #: crates/pdfs-gui/src/app/main.rs:1349
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:1372 #: crates/pdfs-gui/src/app/main.rs:1385
#: crates/pdfs-gui/src/app/pages/status.rs:254 #: crates/pdfs-gui/src/app/pages/status.rs:254
msgid "General" msgid "General"
msgstr "Geral" msgstr "Geral"
#: crates/pdfs-gui/src/app/main.rs:1374 #: crates/pdfs-gui/src/app/main.rs:1387
#: 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:1375 #: crates/pdfs-gui/src/app/main.rs:1388
#: crates/pdfs-gui/src/app/pages/browser.rs:957 #: crates/pdfs-gui/src/app/pages/browser.rs:957
#: crates/pdfs-gui/src/app/pages/devices.rs:554 #: crates/pdfs-gui/src/app/pages/devices.rs:554
#: crates/pdfs-gui/src/app/pages/shared.rs:586 #: crates/pdfs-gui/src/app/pages/shared.rs:586
@@ -319,38 +320,38 @@ msgstr "Pesquisar no Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Atualizar" msgstr "Atualizar"
#: crates/pdfs-gui/src/app/main.rs:1377 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Atalhos de teclado" msgstr "Atalhos de teclado"
#: crates/pdfs-gui/src/app/main.rs:1381 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Files" msgid "Files"
msgstr "Arquivos" msgstr "Arquivos"
#: crates/pdfs-gui/src/app/main.rs:1383 #: crates/pdfs-gui/src/app/main.rs:1396
#: 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:1384 #: crates/pdfs-gui/src/app/main.rs:1397
#: 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:1385 #: crates/pdfs-gui/src/app/main.rs:1398
msgid "Back / forward" msgid "Back / forward"
msgstr "Voltar / avançar" msgstr "Voltar / avançar"
#: crates/pdfs-gui/src/app/main.rs:1386 #: crates/pdfs-gui/src/app/main.rs:1399
#: crates/pdfs-gui/src/app/pages/browser.rs:1943 #: crates/pdfs-gui/src/app/pages/browser.rs:1943
msgid "Parent folder" msgid "Parent folder"
msgstr "Pasta superior" msgstr "Pasta superior"
#: crates/pdfs-gui/src/app/main.rs:1387 #: crates/pdfs-gui/src/app/main.rs:1400
msgid "Grid / list" msgid "Grid / list"
msgstr "Grade / lista" msgstr "Grade / lista"
#: crates/pdfs-gui/src/app/main.rs:1388 #: crates/pdfs-gui/src/app/main.rs:1401
#: 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:1871 #: crates/pdfs-gui/src/app/pages/browser.rs:1871
#: crates/pdfs-gui/src/app/pages/browser.rs:1893 #: crates/pdfs-gui/src/app/pages/browser.rs:1893
@@ -359,7 +360,7 @@ msgstr "Grade / lista"
msgid "Rename" msgid "Rename"
msgstr "Renomear" msgstr "Renomear"
#: crates/pdfs-gui/src/app/main.rs:1389 crates/pdfs-gui/src/app/main.rs:1409 #: crates/pdfs-gui/src/app/main.rs:1402 crates/pdfs-gui/src/app/main.rs:1422
#: 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:900 #: crates/pdfs-gui/src/app/pages/browser.rs:900
#: crates/pdfs-gui/src/app/pages/browser.rs:932 #: crates/pdfs-gui/src/app/pages/browser.rs:932
@@ -369,73 +370,73 @@ 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:1390 #: crates/pdfs-gui/src/app/main.rs:1403
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:1396 #: crates/pdfs-gui/src/app/main.rs:1409
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniaturas maiores" msgstr "Miniaturas maiores"
#: crates/pdfs-gui/src/app/main.rs:1397 #: crates/pdfs-gui/src/app/main.rs:1410
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniaturas menores" msgstr "Miniaturas menores"
#: crates/pdfs-gui/src/app/main.rs:1398 #: crates/pdfs-gui/src/app/main.rs:1411
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:1399 #: crates/pdfs-gui/src/app/main.rs:1412
msgid "Select all" msgid "Select all"
msgstr "Selecionar tudo" msgstr "Selecionar tudo"
#: crates/pdfs-gui/src/app/main.rs:1403 #: crates/pdfs-gui/src/app/main.rs:1416
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visualizador de fotos" msgstr "Visualizador de fotos"
#: crates/pdfs-gui/src/app/main.rs:1405 #: crates/pdfs-gui/src/app/main.rs:1418
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:1406 #: crates/pdfs-gui/src/app/main.rs:1419
msgid "First / last photo" msgid "First / last photo"
msgstr "Primeira / última foto" msgstr "Primeira / última foto"
#: crates/pdfs-gui/src/app/main.rs:1407 #: crates/pdfs-gui/src/app/main.rs:1420
msgid "Show details" msgid "Show details"
msgstr "Mostrar detalhes" msgstr "Mostrar detalhes"
#: crates/pdfs-gui/src/app/main.rs:1408 #: crates/pdfs-gui/src/app/main.rs:1421
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Tela cheia" msgstr "Tela cheia"
#: crates/pdfs-gui/src/app/main.rs:1410 #: crates/pdfs-gui/src/app/main.rs:1423
msgid "Close" msgid "Close"
msgstr "Fechar" msgstr "Fechar"
#: crates/pdfs-gui/src/app/main.rs:1500 #: crates/pdfs-gui/src/app/main.rs:1513
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:1660 #: crates/pdfs-gui/src/app/main.rs:1673
#: 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:1371 #: crates/pdfs-gui/src/app/pages/status.rs:1371
msgid "Not connected" msgid "Not connected"
msgstr "Não conectado" msgstr "Não conectado"
#: crates/pdfs-gui/src/app/main.rs:1661 #: crates/pdfs-gui/src/app/main.rs:1674
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:1669 #: crates/pdfs-gui/src/app/main.rs:1682
#: crates/pdfs-gui/src/app/pages/status.rs:336 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:595
#: crates/pdfs-gui/src/main.rs:453 #: crates/pdfs-gui/src/main.rs:453
msgid "Connecting…" msgid "Connecting…"
msgstr "Conectando…" msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1670 #: crates/pdfs-gui/src/app/main.rs:1683
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."
@@ -3182,21 +3183,21 @@ msgstr "Entrando…"
msgid "Complete the verification to continue…" msgid "Complete the verification to continue…"
msgstr "Conclua a verificação para continuar…" msgstr "Conclua a verificação para continuar…"
#: crates/pdfs-gui/src/app/pages/login.rs:185 #: crates/pdfs-gui/src/app/pages/login.rs:195
msgid "login cancelled" msgid "login cancelled"
msgstr "login cancelado" msgstr "login cancelado"
#: crates/pdfs-gui/src/app/pages/login.rs:218 #: crates/pdfs-gui/src/app/pages/login.rs:228
msgid "Too many sign-in attempts. Wait a few minutes and try again." msgid "Too many sign-in attempts. Wait a few minutes and try again."
msgstr "Muitas tentativas de entrar. Aguarde alguns minutos e tente novamente." msgstr "Muitas tentativas de entrar. Aguarde alguns minutos e tente novamente."
#: crates/pdfs-gui/src/app/pages/login.rs:224 #: crates/pdfs-gui/src/app/pages/login.rs:234
msgid "Couldn't reach Proton. Check your internet connection and try again." msgid "Couldn't reach Proton. Check your internet connection and try again."
msgstr "" msgstr ""
"Não foi possível acessar o Proton. Verifique sua conexão com a internet e " "Não foi possível acessar o Proton. Verifique sua conexão com a internet e "
"tente novamente." "tente novamente."
#: crates/pdfs-gui/src/app/pages/login.rs:227 #: crates/pdfs-gui/src/app/pages/login.rs:237
msgid "" msgid ""
"Signed in, but the session couldn't be saved to the system keyring. Make " "Signed in, but the session couldn't be saved to the system keyring. Make "
"sure a keyring (GNOME Keyring or KWallet) is running and unlocked." "sure a keyring (GNOME Keyring or KWallet) is running and unlocked."
@@ -3205,19 +3206,19 @@ msgstr ""
"Certifique-se de que um chaveiro (GNOME Keyring ou KWallet) esteja em " "Certifique-se de que um chaveiro (GNOME Keyring ou KWallet) esteja em "
"execução e desbloqueado." "execução e desbloqueado."
#: crates/pdfs-gui/src/app/pages/login.rs:230 #: crates/pdfs-gui/src/app/pages/login.rs:240
msgid "Sign-in cancelled: no two-factor code was entered." msgid "Sign-in cancelled: no two-factor code was entered."
msgstr "Entrada cancelada: nenhum código de dois fatores foi digitado." msgstr "Entrada cancelada: nenhum código de dois fatores foi digitado."
#: crates/pdfs-gui/src/app/pages/login.rs:233 #: crates/pdfs-gui/src/app/pages/login.rs:243
msgid "Sign-in cancelled: no mailbox password was entered." msgid "Sign-in cancelled: no mailbox password was entered."
msgstr "Entrada cancelada: nenhuma senha da caixa de correio foi digitada." msgstr "Entrada cancelada: nenhuma senha da caixa de correio foi digitada."
#: crates/pdfs-gui/src/app/pages/login.rs:236 #: crates/pdfs-gui/src/app/pages/login.rs:246
msgid "That mailbox password didn't unlock your account." msgid "That mailbox password didn't unlock your account."
msgstr "Essa senha da caixa de correio não desbloqueou sua conta." msgstr "Essa senha da caixa de correio não desbloqueou sua conta."
#: crates/pdfs-gui/src/app/pages/login.rs:239 #: crates/pdfs-gui/src/app/pages/login.rs:249
msgid "" msgid ""
"Sign-in cancelled: the verification wasn't completed. Sign in again to get a " "Sign-in cancelled: the verification wasn't completed. Sign in again to get a "
"new one." "new one."
@@ -3226,79 +3227,108 @@ msgstr ""
"receber uma nova." "receber uma nova."
#. Translators: {error} is an error message, usually in English. #. Translators: {error} is an error message, usually in English.
#: crates/pdfs-gui/src/app/pages/login.rs:244 #: crates/pdfs-gui/src/app/pages/login.rs:254
#, rust-format #, rust-format
msgid "Sign-in failed: {error}" msgid "Sign-in failed: {error}"
msgstr "Falha ao entrar: {error}" msgstr "Falha ao entrar: {error}"
#: crates/pdfs-gui/src/app/pages/login.rs:354 #: crates/pdfs-gui/src/app/pages/login.rs:365
msgid "That mailbox password didn't unlock your account. Try again." msgid "That mailbox password didn't unlock your account. Try again."
msgstr "Essa senha da caixa de correio não desbloqueou sua conta. Tente novamente." msgstr ""
"Essa senha da caixa de correio não desbloqueou sua conta. Tente novamente."
#: crates/pdfs-gui/src/app/pages/login.rs:356 #: crates/pdfs-gui/src/app/pages/login.rs:367
msgid "" msgid ""
"This account has a separate mailbox password. Enter it to unlock your files." "This account has a separate mailbox password. Enter it to unlock your files."
msgstr "Esta conta tem uma senha da caixa de correio separada. Digite-a para desbloquear seus arquivos." msgstr ""
"Esta conta tem uma senha da caixa de correio separada. Digite-a para "
"desbloquear seus arquivos."
#: crates/pdfs-gui/src/app/pages/login.rs:359 #: crates/pdfs-gui/src/app/pages/login.rs:370
msgid "Mailbox Password" msgid "Mailbox Password"
msgstr "Senha da caixa de correio" msgstr "Senha da caixa de correio"
#: crates/pdfs-gui/src/app/pages/login.rs:365 #: crates/pdfs-gui/src/app/pages/login.rs:376
msgid "Mailbox password" msgid "Mailbox password"
msgstr "Senha da caixa de correio" msgstr "Senha da caixa de correio"
#: crates/pdfs-gui/src/app/pages/login.rs:369 #: crates/pdfs-gui/src/app/pages/login.rs:380
msgid "Keep unlocked on this computer" msgid "Keep unlocked on this computer"
msgstr "Manter desbloqueado neste computador" msgstr "Manter desbloqueado neste computador"
#: crates/pdfs-gui/src/app/pages/login.rs:371 #: crates/pdfs-gui/src/app/pages/login.rs:382
msgid "" msgid ""
"Stores the unlock in the system keyring, so Proton Drive opens without " "Stores the unlock in the system keyring, so Proton Drive opens without "
"asking after every login. Otherwise you enter the password once per session." "asking after every login. Otherwise you enter the password once per session."
msgstr "Guarda o desbloqueio no chaveiro do sistema, para que o Proton Drive abra sem perguntar após cada login. Caso contrário, você digita a senha uma vez por sessão." msgstr ""
"Guarda o desbloqueio no chaveiro do sistema, para que o Proton Drive abra "
"sem perguntar após cada login. Caso contrário, você digita a senha uma vez "
"por sessão."
#: crates/pdfs-gui/src/app/pages/login.rs:379 #: crates/pdfs-gui/src/app/pages/login.rs:390
#: crates/pdfs-gui/src/app/pages/login.rs:432 #: crates/pdfs-gui/src/app/pages/login.rs:443
msgid "Unlock" msgid "Unlock"
msgstr "Desbloquear" msgstr "Desbloquear"
#: crates/pdfs-gui/src/app/pages/login.rs:431 #: crates/pdfs-gui/src/app/pages/login.rs:442
msgid "Proton Drive is locked. Enter your mailbox password to unlock it." msgid "Proton Drive is locked. Enter your mailbox password to unlock it."
msgstr "O Proton Drive está bloqueado. Digite a senha da caixa de correio para desbloqueá-lo." msgstr ""
"O Proton Drive está bloqueado. Digite a senha da caixa de correio para "
"desbloqueá-lo."
#: crates/pdfs-gui/src/app/pages/login.rs:460 #: crates/pdfs-gui/src/app/pages/login.rs:471
msgid "Unlocked." msgid "Unlocked."
msgstr "Desbloqueado." msgstr "Desbloqueado."
#: crates/pdfs-gui/src/app/pages/login.rs:465 #: crates/pdfs-gui/src/app/pages/login.rs:476
msgid "Couldn't unlock" msgid "Couldn't unlock"
msgstr "Não foi possível desbloquear" msgstr "Não foi possível desbloquear"
#: crates/pdfs-gui/src/app/pages/login.rs:478 #: crates/pdfs-gui/src/app/pages/login.rs:489
msgid "Two-Factor Authentication" msgid "Two-Factor Authentication"
msgstr "Autenticação de dois fatores" msgstr "Autenticação de dois fatores"
#: crates/pdfs-gui/src/app/pages/login.rs:480 #: crates/pdfs-gui/src/app/pages/login.rs:491
msgid "" msgid ""
"Enter the code from your authenticator app, or one of your recovery codes." "Enter the code from your authenticator app, or one of your recovery codes."
msgstr "" msgstr ""
"Digite o código do seu aplicativo autenticador ou um dos seus códigos de " "Digite o código do seu aplicativo autenticador ou um dos seus códigos de "
"recuperação." "recuperação."
#: crates/pdfs-gui/src/app/pages/login.rs:486 #: crates/pdfs-gui/src/app/pages/login.rs:497
msgid "Authentication code" msgid "Authentication code"
msgstr "Código de autenticação" msgstr "Código de autenticação"
#: crates/pdfs-gui/src/app/pages/login.rs:493 #: crates/pdfs-gui/src/app/pages/login.rs:504
msgid "Confirm" msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
#: crates/pdfs-gui/src/app/pages/login.rs:521 #: crates/pdfs-gui/src/app/pages/login.rs:535
#
msgid "Verify in Your Browser"
msgstr "Verificar no navegador"
#: crates/pdfs-gui/src/app/pages/login.rs:537
msgid ""
"The verification page can't be shown in the app on this system. Open it in "
"your browser, complete it there, then come back and choose Continue."
msgstr "A página de verificação não pode ser exibida no app neste sistema. Abra-a no navegador, conclua-a lá e depois volte e escolha “Continuar”."
#: crates/pdfs-gui/src/app/pages/login.rs:543
#
msgid "Open Verification Page"
msgstr "Abrir página de verificação"
#: crates/pdfs-gui/src/app/pages/login.rs:550
#
msgid "Continue"
msgstr "Continuar"
#: crates/pdfs-gui/src/app/pages/login.rs:589
msgid "Sign Out?" msgid "Sign Out?"
msgstr "Sair?" msgstr "Sair?"
#: crates/pdfs-gui/src/app/pages/login.rs:523 #: crates/pdfs-gui/src/app/pages/login.rs:591
msgid "" msgid ""
"Proton Drive will disconnect and stop syncing until you sign in again. Files " "Proton Drive will disconnect and stop syncing until you sign in again. Files "
"already on this computer stay where they are." "already on this computer stay where they are."
@@ -3306,7 +3336,7 @@ msgstr ""
"O Proton Drive será desconectado e deixará de sincronizar até você entrar " "O Proton Drive será desconectado e deixará de sincronizar até você entrar "
"novamente. Os arquivos que já estão neste computador permanecem onde estão." "novamente. Os arquivos que já estão neste computador permanecem onde estão."
#: crates/pdfs-gui/src/app/pages/login.rs:525 #: crates/pdfs-gui/src/app/pages/login.rs:593
msgid "Sign Out" msgid "Sign Out"
msgstr "Sair" msgstr "Sair"
@@ -5276,7 +5306,7 @@ msgstr "Lixeira esvaziada"
msgid "Couldn't empty the trash" msgid "Couldn't empty the trash"
msgstr "Não foi possível esvaziar a lixeira" msgstr "Não foi possível esvaziar a lixeira"
#: crates/pdfs-gui/src/app/pages/verify.rs:57 #: crates/pdfs-gui/src/app/pages/verify.rs:162
msgid "Verification" msgid "Verification"
msgstr "Verificação" msgstr "Verificação"
@@ -6074,6 +6104,15 @@ msgstr "{count} a"
msgid "cannot reach the Proton Drive daemon: {error}" msgid "cannot reach the Proton Drive daemon: {error}"
msgstr "não foi possível acessar o daemon do Proton Drive: {error}" msgstr "não foi possível acessar o daemon do Proton Drive: {error}"
#~ msgid ""
#~ "The verification page couldn't be opened, so the sign-in was cancelled. "
#~ "Your system may keep the web view's sandbox from starting; the "
#~ "troubleshooting guide explains what to do."
#~ msgstr ""
#~ "Não foi possível abrir a página de verificação, então a entrada foi "
#~ "cancelada. Seu sistema pode estar impedindo que a sandbox da visualização "
#~ "web inicie; o guia de solução de problemas explica o que fazer."
#~ msgid "Jump to a month" #~ msgid "Jump to a month"
#~ msgstr "Ir para um mês" #~ msgstr "Ir para um mês"