feat(gui): rewrite the search launcher with a preview pane

The launcher (pdfs-prompt) now follows the app's theme: the theme code
moved into a shared theme.rs, the prompt's stylesheet lives in
resources/prompt.css on the libadwaita palette, the Proton-purple accent
pin is gone, and every activation re-reads the Proton theme and open_with
settings so changes in the app apply without restarting the launcher.

The window is rebuilt in src/hud/:
- one list with Recent, Pinned and Best matches sections; a click
  selects, a double-click or Enter opens, focus stays in the entry
- rows show a thumbnail, the name with its matched characters in bold,
  location, sync badge, size and age
- a preview pane with a large thumbnail, type, size, modified date,
  location and availability, plus Open (Enter), Show in Folder
  (Ctrl+Enter, via FileManager1) and Copy Path (Ctrl+C / Ctrl+Shift+C)
- thumbnails from the freedesktop cache, local decoding (written back
  to the shared cache) or the daemon, on two worker threads
- a history of opened files that fills the Recent section and adds a
  frecency bonus to search ranking
- the mount check before opening a Drive file runs off the main thread
  with a 2 s timeout, and Escape cancels a slow open
- rows can be dragged out as files
- the search debounce drops to 80 ms

New strings are translated in every catalog.
This commit is contained in:
nvrl committed 2026-09-28 22:53:46 +02:00
1 parent 7099106802
commit 7a087b8827
22 files changed
+5310 -2929

No files matched your search

+1
View File
@@ -27,5 +27,6 @@ fn main() {
println!("cargo:rerun-if-changed=resources/icons"); println!("cargo:rerun-if-changed=resources/icons");
println!("cargo:rerun-if-changed=resources/style.css"); println!("cargo:rerun-if-changed=resources/style.css");
println!("cargo:rerun-if-changed=resources/proton-theme.css"); println!("cargo:rerun-if-changed=resources/proton-theme.css");
println!("cargo:rerun-if-changed=resources/prompt.css");
println!("cargo:rerun-if-changed=../../packaging/io.narl.proton-drive-linux.svg"); println!("cargo:rerun-if-changed=../../packaging/io.narl.proton-drive-linux.svg");
} }
@@ -33,5 +33,7 @@
<gresource prefix="/de/nils/protondrivelinux"> <gresource prefix="/de/nils/protondrivelinux">
<file>style.css</file> <file>style.css</file>
<file>proton-theme.css</file> <file>proton-theme.css</file>
<!-- The search launcher's own sheet, over the same palette. -->
<file>prompt.css</file>
</gresource> </gresource>
</gresources> </gresources>
+224
View File
@@ -0,0 +1,224 @@
/* The search launcher (pdfs-prompt). Colours come from the libadwaita
palette, so the launcher follows the system accent, light/dark and high
contrast like the app; the opt-in Proton theme recolours both alike. */
window.launcher-window {
background: transparent;
}
.launcher-card {
background-color: var(--view-bg-color);
color: var(--view-fg-color);
border: 1px solid var(--border-color);
border-radius: 14px;
box-shadow: 0 16px 48px rgb(0 0 0 / 35%);
}
.search-bar {
padding: 14px 18px;
border-bottom: 1px solid var(--border-color);
}
.search-icon {
-gtk-icon-size: 20px;
color: color-mix(in srgb, currentColor 55%, transparent);
}
.search-entry {
background: none;
border: none;
box-shadow: none;
outline: none;
padding: 2px 0;
font-size: 1.15rem;
}
.key-hint {
padding: 2px 8px;
border-radius: 6px;
background-color: color-mix(in srgb, currentColor 8%, transparent);
font-size: 0.75rem;
opacity: 0.55;
}
.chip-row {
padding: 10px 14px;
border-bottom: 1px solid var(--border-color);
}
.chip {
padding: 4px 14px;
min-height: 0;
border-radius: 999px;
background: none;
border: 1px solid var(--border-color);
box-shadow: none;
font-size: 0.86rem;
font-weight: 500;
}
.chip:hover {
background-color: color-mix(in srgb, currentColor 6%, transparent);
}
.chip:checked {
background-color: var(--accent-bg-color);
color: var(--accent-fg-color);
border-color: var(--accent-bg-color);
}
/* --- results ------------------------------------------------------------ */
.results {
padding: 2px 8px 10px 8px;
}
.section-header {
padding: 12px 10px 6px 10px;
}
.section-title {
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
opacity: 0.55;
}
.section-icon {
-gtk-icon-size: 14px;
opacity: 0.55;
}
.result-list {
background: none;
}
.result-row {
padding: 6px 10px;
border-radius: 10px;
}
.result-row:hover {
background-color: color-mix(in srgb, currentColor 5%, transparent);
}
/* A soft tint rather than a solid accent bar: the text keeps its colour, so
the highlighted match stays readable on the selected row. */
.result-row:selected,
.result-row:selected:hover {
background-color: color-mix(in srgb, var(--accent-bg-color) 18%, transparent);
color: inherit;
}
.result-name {
font-weight: 500;
}
.result-location,
.result-meta {
font-size: 0.8rem;
opacity: 0.55;
}
.result-row:selected .result-location,
.result-row:selected .result-meta {
opacity: 0.7;
}
.thumb {
border-radius: 6px;
}
.result-badge,
.preview-badge {
-gtk-icon-size: 14px;
}
.badge-pinned {
color: var(--success-color);
}
.badge-cached {
color: var(--accent-color);
}
.badge-cloud,
.badge-local {
opacity: 0.55;
}
/* --- preview ------------------------------------------------------------ */
.preview {
padding: 16px;
background-color: color-mix(in srgb, currentColor 3%, transparent);
}
.preview-thumb {
margin-bottom: 12px;
}
.preview-thumb .thumb {
border-radius: 10px;
}
.preview-name {
font-weight: 700;
font-size: 1.05rem;
}
.preview-kind {
font-size: 0.85rem;
opacity: 0.6;
margin-bottom: 12px;
}
.preview-key {
font-size: 0.8rem;
opacity: 0.55;
}
.preview-value {
font-size: 0.85rem;
}
.preview-actions {
margin-top: 12px;
}
.preview-action {
padding: 6px 8px;
border-radius: 8px;
}
.preview-shortcut {
font-size: 0.75rem;
opacity: 0.6;
}
.preview-feedback {
margin-top: 6px;
font-size: 0.8rem;
color: var(--accent-color);
}
.preview-empty {
opacity: 0.2;
}
/* --- footer ------------------------------------------------------------- */
.footer {
padding: 8px 16px;
border-top: 1px solid var(--border-color);
}
.footer-text {
font-size: 0.78rem;
opacity: 0.5;
}
statuspage.compact > scrolledwindow > viewport > box {
margin: 24px 12px;
}
+4 -152
View File
@@ -8,6 +8,8 @@ pub(crate) mod events;
pub(crate) mod i18n; pub(crate) mod i18n;
pub(crate) mod pages; pub(crate) mod pages;
pub(crate) mod reload; pub(crate) mod reload;
#[path = "../theme.rs"]
pub(crate) mod theme;
pub(crate) mod widgets; pub(crate) mod widgets;
use compat::*; use compat::*;
@@ -30,6 +32,7 @@ use pages::takeout::*;
use pages::trash::*; use pages::trash::*;
use pages::verify::*; use pages::verify::*;
use reload::{LoadTicket, Loader, replace_items}; use reload::{LoadTicket, Loader, replace_items};
use theme::{load_resources, proton_theme_active, set_proton_theme};
use widgets::compat::*; use widgets::compat::*;
use widgets::details::*; use widgets::details::*;
use widgets::file_list::*; use widgets::file_list::*;
@@ -210,7 +213,7 @@ fn main() -> glib::ExitCode {
.flags(gio::ApplicationFlags::HANDLES_COMMAND_LINE) .flags(gio::ApplicationFlags::HANDLES_COMMAND_LINE)
.build(); .build();
app.connect_startup(|_| { app.connect_startup(|_| {
load_proton_theme(); load_resources("/de/nils/protondrivelinux/style.css");
if let Ok(dirs) = AppDirs::new() { if let Ok(dirs) = AppDirs::new() {
set_proton_theme(dirs.load_config().proton_theme.unwrap_or(false)); set_proton_theme(dirs.load_config().proton_theme.unwrap_or(false));
} }
@@ -287,157 +290,6 @@ pub(crate) fn spawn_tray() {
} }
} }
/// Register the bundled GResources (custom icons, the stylesheet) and load the
/// app stylesheet. The Proton theme is a separate provider, applied by
/// [`set_proton_theme`] from the saved preference.
fn load_proton_theme() {
let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/pdfs.gresource"));
let resource_data = glib::Bytes::from_static(bytes);
if let Ok(resource) = gio::Resource::from_data(&resource_data) {
gio::resources_register(&resource);
} else {
tracing::error!("failed to load gresource bundle");
}
let Some(display) = gtk4::gdk::Display::default() else {
return;
};
let provider = gtk4::CssProvider::new();
provider.load_from_resource("/de/nils/protondrivelinux/style.css");
// Above the user's own gtk.css, which often imports a whole theme: its
// `button { padding: 6px 10px; min-width: 16px }` would otherwise pad every
// photo tile and push the grid past the window. Every rule in the sheet is
// scoped to the app's own classes, so nothing else the user styled changes.
// One above the Proton theme too, so the app's rules refine it.
gtk4::style_context_add_provider_for_display(
&display,
&provider,
gtk4::STYLE_PROVIDER_PRIORITY_USER + 2,
);
gtk4::IconTheme::for_display(&display).add_resource_path("/de/nils/protondrivelinux/icons");
}
thread_local! {
/// The Proton theme provider while it is installed. Kept so turning the
/// preference off can remove exactly what turning it on added.
static PROTON_THEME: RefCell<Option<gtk4::CssProvider>> = const { RefCell::new(None) };
}
/// Whether the Proton theme is on.
fn proton_theme_active() -> bool {
PROTON_THEME.with(|slot| slot.borrow().is_some())
}
/// libadwaita's own stylesheet, bundled in the library.
const ADWAITA_STYLESHEET: &str = "/org/gnome/Adwaita/styles/gtk.css";
/// The Proton palette laid over it, from our own bundle.
const PROTON_PALETTE: &str = "/de/nils/protondrivelinux/proton-theme.css";
/// Make the theme provider's `@media (prefers-color-scheme)` and
/// `(prefers-contrast)` rules match what libadwaita shows, now and whenever it
/// changes. A provider evaluates those itself, and a new one assumes light.
///
/// The properties are set by name because they only exist since GTK 4.20, and
/// the app still runs on older GTK, whose libadwaita has no such rules anyway.
fn follow_style_manager(provider: &gtk4::CssProvider) {
fn set_enum(provider: &gtk4::CssProvider, property: &str, nick: &str) {
let Some(pspec) = provider.find_property(property) else {
return;
};
if let Some(value) = glib::EnumClass::with_type(pspec.value_type())
.and_then(|class| class.to_value_by_nick(nick))
{
provider.set_property_from_value(property, &value);
}
}
fn apply(provider: &gtk4::CssProvider, manager: &adw::StyleManager) {
let scheme = if manager.is_dark() { "dark" } else { "light" };
set_enum(provider, "prefers-color-scheme", scheme);
let contrast = if manager.is_high_contrast() {
"more"
} else {
"no-preference"
};
set_enum(provider, "prefers-contrast", contrast);
}
let manager = adw::StyleManager::default();
apply(provider, &manager);
// Weak, so a provider the preference removed isn't kept alive; its
// handlers then do nothing.
let weak = provider.downgrade();
let weak_dark = weak.clone();
manager.connect_dark_notify(move |manager| {
if let Some(provider) = weak_dark.upgrade() {
apply(&provider, manager);
}
});
manager.connect_high_contrast_notify(move |manager| {
if let Some(provider) = weak.upgrade() {
apply(&provider, manager);
}
});
}
/// Paint the app in the Proton web apps' colours (`on`) or follow the system
/// theme and accent colour.
///
/// Setting libadwaita's colour variables alone isn't enough: a GTK theme the
/// user's `gtk.css` imports (Catppuccin, Fluent, ...) sits above the app and
/// hard-codes its own accent into hundreds of rules. So the theme provider,
/// one above the user's CSS, first resets every property, then re-applies
/// libadwaita's whole stylesheet and finally the Proton palette, which leaves
/// nothing of the user's theme inside the app.
fn set_proton_theme(on: bool) {
let Some(display) = gtk4::gdk::Display::default() else {
return;
};
PROTON_THEME.with(|slot| {
let mut slot = slot.borrow_mut();
match (on, slot.as_ref()) {
(true, None) => {
let stylesheet = |path| {
gio::resources_lookup_data(path, gio::ResourceLookupFlags::NONE)
.map(|bytes| String::from_utf8_lossy(&bytes).into_owned())
};
let palette = stylesheet(PROTON_PALETTE).unwrap_or_default();
let css = match stylesheet(ADWAITA_STYLESHEET) {
// Its images are named relative to the sheet, which a
// string loaded here doesn't have.
Ok(adwaita) => format!(
"* {{ all: unset; }}\n{}\n{palette}",
adwaita.replace(
"url(\"assets/",
"url(\"resource:///org/gnome/Adwaita/styles/assets/"
)
),
// Still recolours everything that follows libadwaita's
// variables; only a custom theme's own rules show through.
Err(e) => {
tracing::warn!("libadwaita stylesheet not found, only recolouring: {e}");
palette
}
};
let provider = gtk4::CssProvider::new();
follow_style_manager(&provider);
provider.load_from_string(&css);
gtk4::style_context_add_provider_for_display(
&display,
&provider,
gtk4::STYLE_PROVIDER_PRIORITY_USER + 1,
);
*slot = Some(provider);
}
(false, Some(provider)) => {
gtk4::style_context_remove_provider_for_display(&display, provider);
*slot = None;
}
_ => {}
}
});
}
/// Build the application window, wire the two pages, kick off the refresh loop, /// Build the application window, wire the two pages, kick off the refresh loop,
/// and present it. /// and present it.
fn build_window(app: &adw::Application) { fn build_window(app: &adw::Application) {
+143
View File
@@ -0,0 +1,143 @@
//! Match highlighting: which characters of a result name the query matched,
//! as Pango markup with those characters in bold.
//!
//! Each query term is looked for as a substring of the name first, and as a
//! subsequence ("rpt" in "report") when that fails, which is roughly how the
//! daemon's ranking treats a term too. Case is folded one character at a
//! time, so every range stays on a character boundary of the original name,
//! whatever the script.
use gtk4::glib;
/// One character of a name: its byte range and its case-folded form.
struct Folded {
start: usize,
end: usize,
folded: String,
}
fn fold(text: &str) -> Vec<Folded> {
text.char_indices()
.map(|(start, c)| Folded {
start,
end: start + c.len_utf8(),
folded: c.to_lowercase().collect(),
})
.collect()
}
/// The byte ranges of `name` that `query` matched, sorted and merged.
pub(crate) fn ranges(name: &str, query: &str) -> Vec<(usize, usize)> {
let chars = fold(name);
let mut found: Vec<(usize, usize)> = Vec::new();
for term in query.split_whitespace() {
let term: Vec<String> = fold(term).into_iter().map(|c| c.folded).collect();
if let Some(at) = substring(&chars, &term) {
found.push((chars[at].start, chars[at + term.len() - 1].end));
} else if let Some(hits) = subsequence(&chars, &term) {
found.extend(hits.into_iter().map(|at| (chars[at].start, chars[at].end)));
}
}
found.sort_unstable();
let mut merged: Vec<(usize, usize)> = Vec::with_capacity(found.len());
for (start, end) in found {
match merged.last_mut() {
Some(last) if start <= last.1 => last.1 = last.1.max(end),
_ => merged.push((start, end)),
}
}
merged
}
/// Where `term` first occurs in `chars`, as a character index.
fn substring(chars: &[Folded], term: &[String]) -> Option<usize> {
if term.is_empty() || term.len() > chars.len() {
return None;
}
(0..=chars.len() - term.len()).find(|&at| {
chars[at..at + term.len()]
.iter()
.zip(term)
.all(|(c, t)| c.folded == *t)
})
}
/// The character indices of the leftmost match of `term` as a subsequence,
/// or `None` when not every character of it can be found in order.
fn subsequence(chars: &[Folded], term: &[String]) -> Option<Vec<usize>> {
if term.is_empty() {
return None;
}
let mut hits = Vec::with_capacity(term.len());
let mut next = 0;
for wanted in term {
let at = (next..chars.len()).find(|&i| chars[i].folded == *wanted)?;
hits.push(at);
next = at + 1;
}
Some(hits)
}
/// `name` as Pango markup, escaped, with the matched characters in bold.
pub(crate) fn markup(name: &str, query: &str) -> String {
let mut out = String::with_capacity(name.len() + 16);
let mut done = 0;
for (start, end) in ranges(name, query) {
out.push_str(&glib::markup_escape_text(&name[done..start]));
out.push_str("<b>");
out.push_str(&glib::markup_escape_text(&name[start..end]));
out.push_str("</b>");
done = end;
}
out.push_str(&glib::markup_escape_text(&name[done..]));
out
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_substring_match_is_one_range_in_any_case() {
assert_eq!(ranges("Tax Report.pdf", "REP"), vec![(4, 7)]);
}
#[test]
fn a_term_that_is_no_substring_falls_back_to_a_subsequence() {
// r, p and t of "report", not the "rt" pair at the end of a substring.
assert_eq!(ranges("report.txt", "rpt"), vec![(0, 1), (2, 3), (5, 6)]);
}
#[test]
fn a_term_with_no_match_highlights_nothing() {
assert!(ranges("report.txt", "xyz").is_empty());
assert!(ranges("report.txt", "").is_empty());
}
#[test]
fn several_terms_merge_into_sorted_ranges() {
assert_eq!(
ranges("tax return 2024", "2024 tax ret"),
vec![(0, 3), (4, 7), (11, 15)]
);
assert_eq!(ranges("abc", "ab bc"), vec![(0, 3)]);
}
#[test]
fn non_ascii_names_keep_ranges_on_character_boundaries() {
assert_eq!(ranges("Über Größe.odt", "über"), vec![(0, 5)]);
assert_eq!(ranges("Über Größe.odt", "GRÖ"), vec![(6, 10)]);
assert_eq!(markup("Über Größe.odt", "größe"), "Über <b>Größe</b>.odt");
assert_eq!(
markup("日本語のメモ.txt", "メモ"),
"日本語の<b>メモ</b>.txt"
);
}
#[test]
fn markup_escapes_the_name_inside_and_outside_matches() {
assert_eq!(markup("a<b>&c", "b"), "a&lt;<b>b</b>&gt;&amp;c");
assert_eq!(markup("R&D.pdf", "r&d"), "<b>R&amp;D</b>.pdf");
assert_eq!(markup("<none>", "zzz"), "&lt;none&gt;");
}
}
+363
View File
@@ -0,0 +1,363 @@
//! Recent files and frecency.
//!
//! The launcher remembers what it opened in `prompt-history.json` under the
//! state directory. With an empty query those files come first, and while
//! searching a file opened often and lately gets a bonus on top of its match
//! score (see [`frecency_bonus`]).
//!
//! One writer thread owns the file: it loads it, applies every recorded visit
//! in order and writes the result back atomically. A visit recorded before the
//! first load finished simply waits in the channel, so it is merged into the
//! loaded list rather than overwriting it. The main thread only ever sees
//! snapshots.
use std::cell::RefCell;
use std::collections::HashMap;
use std::io::Write;
use std::path::{Path, PathBuf};
use std::rc::Rc;
use gtk4::glib;
use crate::Hit;
/// How many files the history keeps. More than the launcher ever shows, so
/// frecency still knows a file that dropped off the recent list.
const MAX_VISITS: usize = 50;
/// The frecency bonus of one visit made just now.
const VISIT_BONUS: f64 = 1500.0;
/// The bonus halves every this many days without a visit.
const HALF_LIFE_DAYS: f64 = 14.0;
/// The largest frecency bonus. A name match is worth up to 20000 points, so
/// history breaks ties between similar matches but cannot beat a much better
/// one.
const MAX_BONUS: f64 = 6000.0;
#[derive(Clone, serde::Serialize, serde::Deserialize)]
pub(crate) struct Visit {
pub(crate) hit: Hit,
/// When the file was last opened, in epoch seconds.
pub(crate) last: i64,
pub(crate) count: u32,
}
/// The history bonus for a file opened `count` times, the last time
/// `age_secs` ago.
pub(crate) fn frecency_bonus(count: u32, age_secs: i64) -> i64 {
let age_days = age_secs.max(0) as f64 / 86_400.0;
let bonus = f64::from(count) * VISIT_BONUS * 0.5f64.powf(age_days / HALF_LIFE_DAYS);
bonus.min(MAX_BONUS) as i64
}
/// Count one more visit of `hit` at `now`, newest first, and keep at most
/// [`MAX_VISITS`]. The stored hit is replaced, so its size, date and sync
/// state are the ones from the latest search.
fn record(visits: &mut Vec<Visit>, hit: Hit, now: i64) {
let key = hit.key();
let count = match visits.iter().position(|visit| visit.hit.key() == key) {
Some(at) => visits.remove(at).count.saturating_add(1),
None => 1,
};
visits.insert(
0,
Visit {
hit,
last: now,
count,
},
);
visits.truncate(MAX_VISITS);
}
/// Drop local files that no longer exist. Drive files stay: checking them
/// would touch the mount, and a stale one only costs a row.
fn prune(visits: &mut Vec<Visit>) -> bool {
let before = visits.len();
visits.retain(|visit| match &visit.hit {
Hit::Local(hit) => Path::new(&hit.path).symlink_metadata().is_ok(),
Hit::Drive(_) => true,
});
visits.len() != before
}
fn load(path: &Path) -> Vec<Visit> {
match std::fs::read(path) {
Ok(bytes) => serde_json::from_slice(&bytes).unwrap_or_else(|e| {
tracing::warn!("ignoring unreadable {}: {e}", path.display());
Vec::new()
}),
Err(_) => Vec::new(),
}
}
/// Write the history through a temporary file and a rename, so a crash
/// mid-write leaves the old file rather than half a new one.
fn save(path: &Path, visits: &[Visit]) -> std::io::Result<()> {
let json = serde_json::to_vec(visits).map_err(std::io::Error::other)?;
if let Some(dir) = path.parent() {
std::fs::create_dir_all(dir)?;
}
let tmp = path.with_extension("json.tmp");
let mut file = std::fs::File::create(&tmp)?;
file.write_all(&json)?;
file.sync_all()?;
std::fs::rename(&tmp, path)
}
enum Command {
Record(Hit, i64),
Prune,
}
/// The writer thread's loop: load, then apply commands until the launcher
/// exits. `publish` receives the list after the load and after every change.
fn serve(path: &Path, commands: &async_channel::Receiver<Command>, publish: impl Fn(Vec<Visit>)) {
let mut visits = load(path);
let pruned = prune(&mut visits);
publish(visits.clone());
if pruned && let Err(e) = save(path, &visits) {
tracing::warn!("cannot write {}: {e}", path.display());
}
while let Ok(command) = commands.recv_blocking() {
let changed = match command {
Command::Record(hit, now) => {
record(&mut visits, hit, now);
true
}
Command::Prune => prune(&mut visits),
};
if changed {
if let Err(e) = save(path, &visits) {
tracing::warn!("cannot write {}: {e}", path.display());
}
publish(visits.clone());
}
}
}
/// The main thread's view of the history.
pub(crate) struct History {
visits: Rc<RefCell<Vec<Visit>>>,
commands: async_channel::Sender<Command>,
}
impl History {
/// Start the writer thread. `changed` runs on the main thread whenever a
/// new snapshot arrives.
pub(crate) fn start(path: PathBuf, changed: impl Fn() + 'static) -> Self {
let (commands, inbox) = async_channel::unbounded();
let (snapshots, updates) = async_channel::unbounded::<Vec<Visit>>();
let spawned = std::thread::Builder::new()
.name("prompt-history".into())
.spawn(move || {
serve(&path, &inbox, |visits| {
let _ = snapshots.send_blocking(visits);
})
});
if let Err(e) = spawned {
tracing::warn!("cannot start the history writer: {e}");
}
let visits = Rc::new(RefCell::new(Vec::new()));
let shared = visits.clone();
glib::spawn_future_local(async move {
while let Ok(snapshot) = updates.recv().await {
*shared.borrow_mut() = snapshot;
changed();
}
});
Self { visits, commands }
}
/// Remember that `hit` was opened just now.
pub(crate) fn record(&self, hit: Hit) {
let _ = self.commands.try_send(Command::Record(hit, now()));
}
/// Forget local files that were deleted since they were opened.
pub(crate) fn prune(&self) {
let _ = self.commands.try_send(Command::Prune);
}
/// The most recently opened files, newest first.
pub(crate) fn recent(&self, limit: usize) -> Vec<Hit> {
self.visits
.borrow()
.iter()
.take(limit)
.map(|visit| visit.hit.clone())
.collect()
}
/// The frecency bonus of every remembered file, by [`Hit::key`].
pub(crate) fn bonuses(&self) -> HashMap<(bool, String), i64> {
let now = now();
self.visits
.borrow()
.iter()
.map(|visit| {
(
visit.hit.key(),
frecency_bonus(visit.count, now - visit.last),
)
})
.collect()
}
}
fn now() -> i64 {
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.map_or(0, |d| d.as_secs() as i64)
}
#[cfg(test)]
mod tests {
use super::*;
use pdfs_core::control::{LocalHit, SearchHit};
const DAY: i64 = 86_400;
fn drive(name: &str) -> Hit {
Hit::Drive(SearchHit {
name: name.into(),
path: format!("Docs/{name}"),
is_dir: false,
size: 1,
modified: 1,
pinned: false,
cached: false,
uid: format!("v~{name}"),
mounted_path: None,
score: 0,
})
}
fn scratch_dir(test: &str) -> PathBuf {
let dir = std::env::temp_dir().join(format!(
"pdfs-prompt-history-{test}-{}-{}",
std::process::id(),
now()
));
std::fs::create_dir_all(&dir).unwrap();
dir
}
#[test]
fn the_bonus_halves_every_two_weeks() {
assert_eq!(frecency_bonus(1, 0), 1500);
assert_eq!(frecency_bonus(1, 14 * DAY), 750);
assert_eq!(frecency_bonus(1, 28 * DAY), 375);
assert_eq!(frecency_bonus(2, 14 * DAY), 1500);
// A clock that went backwards counts as "just now", not as a boost.
assert_eq!(frecency_bonus(1, -DAY), 1500);
}
#[test]
fn the_bonus_is_capped() {
assert_eq!(frecency_bonus(4, 0), 6000);
assert_eq!(frecency_bonus(1000, 0), 6000);
assert!(frecency_bonus(1000, 365 * DAY) < 6000);
}
#[test]
fn a_repeat_visit_moves_the_file_to_the_top_and_counts_it() {
let mut visits = Vec::new();
record(&mut visits, drive("a.pdf"), 10);
record(&mut visits, drive("b.pdf"), 20);
record(&mut visits, drive("a.pdf"), 30);
assert_eq!(visits.len(), 2);
assert_eq!(visits[0].hit.name(), "a.pdf");
assert_eq!((visits[0].count, visits[0].last), (2, 30));
assert_eq!(visits[1].count, 1);
}
#[test]
fn the_history_keeps_the_newest_fifty_files() {
let mut visits = Vec::new();
for n in 0..60 {
record(&mut visits, drive(&format!("{n}.pdf")), n);
}
assert_eq!(visits.len(), MAX_VISITS);
assert_eq!(visits[0].hit.name(), "59.pdf");
assert_eq!(visits[MAX_VISITS - 1].hit.name(), "10.pdf");
}
#[test]
fn the_history_file_round_trips() {
let dir = scratch_dir("round-trip");
let path = dir.join("prompt-history.json");
let mut visits = Vec::new();
record(&mut visits, drive("a.pdf"), 10);
record(&mut visits, drive("a.pdf"), 20);
save(&path, &visits).unwrap();
let loaded = load(&path);
assert_eq!(loaded.len(), 1);
assert_eq!(loaded[0].hit.key(), drive("a.pdf").key());
assert_eq!((loaded[0].count, loaded[0].last), (2, 20));
assert!(!path.with_extension("json.tmp").exists());
std::fs::remove_dir_all(dir).unwrap();
}
#[test]
fn visits_recorded_before_the_load_are_merged_into_it() {
let dir = scratch_dir("merge");
let path = dir.join("prompt-history.json");
let mut stored = Vec::new();
record(&mut stored, drive("old.pdf"), 10);
record(&mut stored, drive("old.pdf"), 20);
save(&path, &stored).unwrap();
// Both visits are queued before the writer has read the file.
let (commands, inbox) = async_channel::unbounded();
commands
.send_blocking(Command::Record(drive("old.pdf"), 30))
.unwrap();
commands
.send_blocking(Command::Record(drive("new.pdf"), 40))
.unwrap();
drop(commands);
let published = RefCell::new(Vec::new());
serve(&path, &inbox, |visits| published.borrow_mut().push(visits));
let last = published.borrow().last().cloned().unwrap();
assert_eq!(last.len(), 2);
assert_eq!(last[0].hit.name(), "new.pdf");
assert_eq!((last[1].hit.name(), last[1].count), ("old.pdf", 3));
let on_disk = load(&path);
assert_eq!(on_disk.len(), 2);
assert_eq!(on_disk[1].count, 3);
std::fs::remove_dir_all(dir).unwrap();
}
#[test]
fn pruning_drops_deleted_local_files_only() {
let dir = scratch_dir("prune");
let kept = dir.join("kept.txt");
std::fs::write(&kept, "x").unwrap();
let local = |path: &Path| {
Hit::Local(LocalHit {
name: path.file_name().unwrap().to_string_lossy().into_owned(),
path: path.display().to_string(),
is_dir: false,
size: 1,
modified: 1,
score: 0,
})
};
let mut visits = Vec::new();
record(&mut visits, local(&kept), 1);
record(&mut visits, local(&dir.join("gone.txt")), 2);
record(&mut visits, drive("remote.pdf"), 3);
assert!(prune(&mut visits));
let names: Vec<&str> = visits.iter().map(|visit| visit.hit.name()).collect();
assert_eq!(names, ["remote.pdf", "kept.txt"]);
std::fs::remove_dir_all(dir).unwrap();
}
}
File diff suppressed because it is too large. Load diff
+311
View File
@@ -0,0 +1,311 @@
//! The preview pane beside the results: a thumbnail of the selected hit, what
//! it is, where it is and whether it is on this computer, and the actions for
//! it with their shortcuts.
use std::cell::RefCell;
use std::path::Path;
use std::rc::Rc;
use std::time::Duration;
use adw::prelude::*;
use gtk4::{gio, glib};
use super::row::{fill_slot, thumb_slot};
use super::thumbs::Thumbs;
use crate::{Hit, dates, gettext, human_bytes, pgettext};
/// Width of the pane.
pub(crate) const PREVIEW_WIDTH: i32 = 300;
/// The thumbnail area, inside the pane's padding.
const THUMB_WIDTH: i32 = 268;
const THUMB_HEIGHT: i32 = 180;
/// How long "Path copied" stays up.
const COPIED_FEEDBACK: Duration = Duration::from_millis(1500);
/// One label/value line of the details grid.
struct Detail {
title: gtk4::Label,
value: gtk4::Label,
}
impl Detail {
fn new(grid: &gtk4::Grid, row: i32, title: &str) -> Self {
let title = gtk4::Label::builder()
.label(title)
.xalign(0.0)
.valign(gtk4::Align::Start)
.build();
title.add_css_class("preview-key");
let value = gtk4::Label::builder()
.xalign(0.0)
.hexpand(true)
.wrap(true)
.wrap_mode(gtk4::pango::WrapMode::WordChar)
.build();
value.add_css_class("preview-value");
grid.attach(&title, 0, row, 1, 1);
grid.attach(&value, 1, row, 1, 1);
Self { title, value }
}
/// Show `value`, or hide the line when there is nothing to say.
fn set(&self, value: Option<&str>) {
self.title.set_visible(value.is_some());
self.value.set_visible(value.is_some());
self.value.set_label(value.unwrap_or_default());
}
}
pub(crate) struct Preview {
pub(crate) root: gtk4::Box,
stack: gtk4::Stack,
slot: gtk4::Overlay,
name: gtk4::Label,
kind: gtk4::Label,
size: Detail,
modified: Detail,
location: Detail,
availability: Detail,
availability_icon: gtk4::Image,
pub(crate) open: gtk4::Button,
open_label: gtk4::Label,
pub(crate) reveal: gtk4::Button,
pub(crate) copy: gtk4::Button,
copied: gtk4::Revealer,
copied_timer: Rc<RefCell<Option<glib::SourceId>>>,
}
/// A flat action button: the label, and its shortcut at the far end.
fn action(icon: &str, label: &str, accelerator: &str) -> (gtk4::Button, gtk4::Label) {
let content = gtk4::Box::new(gtk4::Orientation::Horizontal, 10);
content.append(&gtk4::Image::from_icon_name(icon));
let text = gtk4::Label::builder()
.label(label)
.xalign(0.0)
.hexpand(true)
.build();
content.append(&text);
let shortcut = gtk4::ShortcutLabel::new(accelerator);
shortcut.add_css_class("preview-shortcut");
content.append(&shortcut);
let button = gtk4::Button::builder()
.child(&content)
.focus_on_click(false)
.focusable(false)
.build();
button.add_css_class("flat");
button.add_css_class("preview-action");
(button, text)
}
impl Preview {
pub(crate) fn new() -> Self {
let details = gtk4::Box::new(gtk4::Orientation::Vertical, 0);
let slot = thumb_slot(THUMB_WIDTH, THUMB_HEIGHT, 96, gtk4::ContentFit::Contain);
slot.add_css_class("preview-thumb");
details.append(&slot);
let name = gtk4::Label::builder()
.xalign(0.0)
.wrap(true)
.wrap_mode(gtk4::pango::WrapMode::WordChar)
.lines(3)
.ellipsize(gtk4::pango::EllipsizeMode::End)
.build();
name.add_css_class("preview-name");
details.append(&name);
let kind = gtk4::Label::builder()
.xalign(0.0)
.ellipsize(gtk4::pango::EllipsizeMode::End)
.build();
kind.add_css_class("preview-kind");
details.append(&kind);
let grid = gtk4::Grid::builder()
.row_spacing(6)
.column_spacing(12)
.build();
grid.add_css_class("preview-details");
let size = Detail::new(&grid, 0, &pgettext("column", "Size"));
let modified = Detail::new(&grid, 1, &pgettext("column", "Modified"));
let location = Detail::new(&grid, 2, &gettext("Location"));
// Translators: a heading in the launcher's preview pane, followed by
// "Available offline", "Downloaded", "Online only" or "On this computer".
let availability = Detail::new(&grid, 3, &gettext("Availability"));
// The availability value is an icon and a text.
let availability_icon = gtk4::Image::new();
availability_icon.add_css_class("preview-badge");
grid.remove(&availability.value);
let availability_box = gtk4::Box::new(gtk4::Orientation::Horizontal, 6);
availability_box.append(&availability_icon);
availability_box.append(&availability.value);
grid.attach(&availability_box, 1, 3, 1, 1);
details.append(&grid);
let spacer = gtk4::Box::builder().vexpand(true).build();
details.append(&spacer);
let actions = gtk4::Box::new(gtk4::Orientation::Vertical, 2);
actions.add_css_class("preview-actions");
let (open, open_label) = action("document-open-symbolic", "", "Return");
let (reveal, _) = action(
"folder-open-symbolic",
&gettext("Show in Folder"),
"<Control>Return",
);
let (copy, _) = action("edit-copy-symbolic", &gettext("Copy Path"), "<Control>c");
actions.append(&open);
actions.append(&reveal);
actions.append(&copy);
details.append(&actions);
let copied_label = gtk4::Label::new(Some(&gettext("Path copied")));
copied_label.add_css_class("preview-feedback");
let copied = gtk4::Revealer::builder()
.transition_type(gtk4::RevealerTransitionType::Crossfade)
.child(&copied_label)
.build();
details.append(&copied);
let empty = gtk4::Image::from_icon_name("system-search-symbolic");
empty.set_pixel_size(64);
empty.add_css_class("preview-empty");
let stack = gtk4::Stack::builder()
.transition_type(gtk4::StackTransitionType::Crossfade)
.transition_duration(100)
.vexpand(true)
.build();
stack.add_named(&empty, Some("empty"));
stack.add_named(&details, Some("details"));
let root = gtk4::Box::builder()
.orientation(gtk4::Orientation::Vertical)
.width_request(PREVIEW_WIDTH)
.build();
root.add_css_class("preview");
root.append(&stack);
Self {
root,
stack,
slot,
name,
kind,
size,
modified,
location,
availability,
availability_icon,
open,
open_label,
reveal,
copy,
copied,
copied_timer: Rc::new(RefCell::new(None)),
}
}
/// Show `hit`, or the empty pane when nothing is selected.
pub(crate) fn show(&self, hit: Option<&Hit>, thumbs: &Rc<Thumbs>, mountpoint: &Path) {
let Some(hit) = hit else {
self.stack.set_visible_child_name("empty");
return;
};
self.stack.set_visible_child_name("details");
fill_slot(&self.slot, hit, thumbs, mountpoint);
self.name.set_label(hit.name());
self.name.set_tooltip_text(Some(hit.name()));
let content_type = if hit.is_dir() {
glib::GString::from("inode/directory")
} else {
gio::functions::content_type_guess(Some(hit.name()), None).0
};
self.kind
.set_label(&gio::functions::content_type_get_description(&content_type));
let size = (!hit.is_dir() && hit.size() > 0).then(|| human_bytes(hit.size()));
self.size.set(size.as_deref());
let modified = (hit.modified() > 0).then(|| dates::relative(hit.modified()));
self.modified.set(modified.as_deref());
self.modified.value.set_tooltip_text(
(hit.modified() > 0)
.then(|| dates::full(hit.modified()))
.as_deref(),
);
let location = hit.location();
self.location.set(Some(&location));
match availability(hit) {
Some((icon, class, text)) => {
self.availability.set(Some(&text));
self.availability_icon.set_icon_name(Some(icon));
for other in ["badge-pinned", "badge-cached", "badge-cloud", "badge-local"] {
self.availability_icon.remove_css_class(other);
}
self.availability_icon.add_css_class(class);
self.availability_icon.set_visible(true);
}
None => {
self.availability.set(None);
self.availability_icon.set_visible(false);
}
}
self.open_label.set_label(&if hit.is_dir() {
gettext("Open folder")
} else {
pgettext("verb", "Open")
});
}
/// Say "Path copied" for a moment.
pub(crate) fn flash_copied(&self) {
self.copied.set_reveal_child(true);
if let Some(source) = self.copied_timer.borrow_mut().take() {
source.remove();
}
let copied = self.copied.clone();
let slot = self.copied_timer.clone();
let timer = glib::timeout_add_local_once(COPIED_FEEDBACK, move || {
slot.borrow_mut().take();
copied.set_reveal_child(false);
});
*self.copied_timer.borrow_mut() = Some(timer);
}
}
/// Where the hit's content is: its icon, its style class and its wording.
fn availability(hit: &Hit) -> Option<(&'static str, &'static str, String)> {
match hit {
Hit::Local(_) => Some((
"drive-harddisk-symbolic",
"badge-local",
gettext("On this computer"),
)),
Hit::Drive(drive) if drive.pinned => Some((
"pdfs-offline-symbolic",
"badge-pinned",
gettext("Available offline"),
)),
// A folder is never downloaded as a whole; only pinning says anything.
Hit::Drive(drive) if drive.is_dir => None,
Hit::Drive(drive) if drive.cached => Some((
"pdfs-cached-symbolic",
"badge-cached",
pgettext("file state", "Downloaded"),
)),
Hit::Drive(_) => Some((
"pdfs-online-only-symbolic",
"badge-cloud",
pgettext("file state", "Online only"),
)),
}
}
+187
View File
@@ -0,0 +1,187 @@
//! Result rows: a thumbnail or icon, the name with its matched characters in
//! bold, the location, and on the right the sync state, size and age.
use std::cell::Cell;
use std::path::{Path, PathBuf};
use std::rc::Rc;
use adw::prelude::*;
use gtk4::{gdk, gio};
use super::highlight;
use super::thumbs::Thumbs;
use crate::theme::proton_theme_active;
use crate::{Hit, format_age, human_bytes};
/// Edge of a row's thumbnail.
const ROW_THUMB: i32 = 40;
/// A thumbnail surface: an icon, with a picture laid over it that shows once
/// the thumbnail has loaded. [`Thumbs`] paints the picture.
pub(crate) fn thumb_slot(
width: i32,
height: i32,
icon_size: i32,
fit: gtk4::ContentFit,
) -> gtk4::Overlay {
let fallback = gtk4::Image::builder().pixel_size(icon_size).build();
let picture = gtk4::Picture::builder()
.width_request(width)
.height_request(height)
.content_fit(fit)
.can_shrink(true)
.visible(false)
.build();
picture.set_overflow(gtk4::Overflow::Hidden);
picture.add_css_class("thumb");
let overlay = gtk4::Overlay::new();
overlay.set_size_request(width, height);
overlay.set_halign(gtk4::Align::Center);
overlay.set_valign(gtk4::Align::Center);
overlay.set_child(Some(&fallback));
overlay.add_overlay(&picture);
overlay
}
/// Show `hit` in a slot from [`thumb_slot`]: its icon at once, and its
/// thumbnail when there is one.
pub(crate) fn fill_slot(slot: &gtk4::Overlay, hit: &Hit, thumbs: &Rc<Thumbs>, mountpoint: &Path) {
let Some(fallback) = slot.child().and_downcast::<gtk4::Image>() else {
return;
};
let Some(picture) = fallback.next_sibling().and_downcast::<gtk4::Picture>() else {
return;
};
fallback.set_from_gicon(&icon_for(hit.name(), hit.is_dir()));
fallback.set_visible(true);
picture.set_visible(false);
picture.set_paintable(gdk::Paintable::NONE);
thumbs.want(hit, mountpoint, &picture);
}
/// The desktop's own full-colour icon for a file name, so results look like
/// the user's file manager. Folders are Proton's purple ones while the Proton
/// theme is on, as in the app's browser.
pub(crate) fn icon_for(name: &str, is_dir: bool) -> gio::Icon {
if is_dir {
let folder = if proton_theme_active() {
"pdfs-proton-folder"
} else {
"folder"
};
return gio::ThemedIcon::new(folder).upcast();
}
let (content_type, _uncertain) = gio::functions::content_type_guess(Some(name), None);
gio::functions::content_type_get_icon(&content_type)
}
/// The sync badge of a Drive file, as in the app's browser: pinned, cached,
/// or online only. Folders and local files have none.
pub(crate) fn badge_for(hit: &Hit) -> Option<(&'static str, &'static str)> {
let Hit::Drive(drive) = hit else {
return None;
};
if drive.is_dir {
return None;
}
Some(if drive.pinned {
("pdfs-offline-symbolic", "badge-pinned")
} else if drive.cached {
("pdfs-cached-symbolic", "badge-cached")
} else {
("pdfs-online-only-symbolic", "badge-cloud")
})
}
pub(crate) fn build_row(
hit: &Hit,
query: &str,
thumbs: &Rc<Thumbs>,
mountpoint: &Path,
) -> gtk4::ListBoxRow {
let row = gtk4::ListBoxRow::new();
row.add_css_class("result-row");
// Focus stays in the search entry; the list only shows the cursor.
row.set_focusable(false);
let content = gtk4::Box::new(gtk4::Orientation::Horizontal, 12);
let slot = thumb_slot(ROW_THUMB, ROW_THUMB, 32, gtk4::ContentFit::Cover);
fill_slot(&slot, hit, thumbs, mountpoint);
content.append(&slot);
let text = gtk4::Box::new(gtk4::Orientation::Vertical, 1);
text.set_hexpand(true);
text.set_valign(gtk4::Align::Center);
let name = gtk4::Label::builder()
.label(highlight::markup(hit.name(), query))
.use_markup(true)
.xalign(0.0)
.ellipsize(gtk4::pango::EllipsizeMode::Middle)
.build();
name.add_css_class("result-name");
text.append(&name);
let location = gtk4::Label::builder()
.label(hit.location())
.xalign(0.0)
.ellipsize(gtk4::pango::EllipsizeMode::Start)
.build();
location.add_css_class("result-location");
text.append(&location);
content.append(&text);
let meta = gtk4::Box::new(gtk4::Orientation::Horizontal, 10);
meta.set_valign(gtk4::Align::Center);
if let Some((icon, class)) = badge_for(hit) {
let badge = gtk4::Image::from_icon_name(icon);
badge.add_css_class("result-badge");
badge.add_css_class(class);
meta.append(&badge);
}
if !hit.is_dir() && hit.size() > 0 {
let size = gtk4::Label::new(Some(&human_bytes(hit.size())));
size.add_css_class("result-meta");
meta.append(&size);
}
if hit.modified() > 0 {
let modified = gtk4::Label::new(Some(&format_age(hit.modified())));
modified.add_css_class("result-meta");
meta.append(&modified);
}
content.append(&meta);
row.set_child(Some(&content));
row
}
/// Let a row be dragged into a file manager or an application as a file.
/// `dropped` runs once a drop was accepted; a cancelled drag changes nothing.
pub(crate) fn attach_drag(row: &gtk4::ListBoxRow, path: PathBuf, dropped: impl Fn() + 'static) {
let source = gtk4::DragSource::new();
source.set_actions(gdk::DragAction::COPY);
let files = gdk::FileList::from_array(&[gio::File::for_path(&path)]);
source.set_content(Some(&gdk::ContentProvider::for_value(&files.to_value())));
let cancelled = Rc::new(Cell::new(false));
let begin = cancelled.clone();
source.connect_drag_begin(move |source, _| {
begin.set(false);
if let Some(widget) = source.widget() {
source.set_icon(Some(&gtk4::WidgetPaintable::new(Some(&widget))), 0, 0);
}
});
let cancel = cancelled.clone();
source.connect_drag_cancel(move |_, _, _| {
cancel.set(true);
false
});
source.connect_drag_end(move |_, _, _| {
if !cancelled.get() {
dropped();
}
});
row.add_controller(source);
}
+697
View File
@@ -0,0 +1,697 @@
//! Thumbnails for the launcher's rows and preview pane.
//!
//! The main thread keeps a small LRU of textures, the keys known to have no
//! thumbnail, and the pictures waiting for one (as weak references, so a row
//! that was rebuilt or dropped keeps nothing alive). Everything that touches
//! a file runs on two worker threads, which try in order:
//!
//! 1. the freedesktop thumbnail cache, valid only when its `Thumb::MTime`
//! matches the file's;
//! 2. for local images, decoding the file itself, and writing the result back
//! to that cache for the next time and for every other application;
//! 3. for Drive images, the daemon's `FileThumbs`, batched after a short quiet
//! period.
//!
//! Workers hand back `gdk::Texture`s, never a `Pixbuf`, which may not cross
//! threads. Each job carries the render epoch it was queued in, and workers
//! skip jobs a newer query has made pointless.
use std::cell::{Cell, RefCell};
use std::collections::{HashMap, HashSet, VecDeque};
use std::io::Write;
use std::os::unix::fs::{DirBuilderExt, OpenOptionsExt};
use std::path::{Path, PathBuf};
use std::rc::{Rc, Weak};
use std::sync::Arc;
use std::sync::atomic::{AtomicU64, Ordering};
use std::time::{Duration, UNIX_EPOCH};
use gtk4::gdk_pixbuf::Pixbuf;
use gtk4::prelude::*;
use gtk4::{gdk, glib};
use pdfs_core::control::{FileThumbRequest, Request, Response, is_thumbnail_image_name};
use crate::{Hit, spawn_request};
/// Decoded textures kept in memory. A launcher shows a few dozen rows, so
/// this covers several searches back.
const TEXTURE_CACHE_MAX: usize = 128;
const MISSING_MAX: usize = 1024;
const WORKERS: usize = 2;
/// Edge of the thumbnails this loader decodes and writes: the freedesktop
/// "large" size.
const THUMB_SIZE: i32 = 256;
/// Local images above this size are not decoded here; a thumbnail is not
/// worth reading that much.
const MAX_SOURCE_BYTES: u64 = 64 * 1024 * 1024;
/// Quiet period before Drive misses go to the daemon as one batch, so typing
/// a word asks once for the final result set.
const DAEMON_DEBOUNCE: Duration = Duration::from_millis(150);
const DAEMON_RETRY: Duration = Duration::from_secs(1);
const DAEMON_BATCH: usize = 32;
/// Where a job finds its image.
enum Source {
/// A file on this machine.
Local(PathBuf),
/// A Drive file: the thumbnail cache is keyed by its mounted path, and
/// the daemon is asked on a miss.
Drive {
mounted: PathBuf,
request: FileThumbRequest,
},
/// A thumbnail the daemon made, in its own cache.
Daemon(PathBuf),
}
struct Job {
epoch: u64,
key: String,
source: Source,
}
enum Outcome {
Texture(gdk::Texture),
Missing,
/// Not in the thumbnail cache; the daemon has to make it.
Daemon(FileThumbRequest),
/// Queued for an older render; handed back in case it is wanted again.
Skipped(Source),
}
struct Done {
key: String,
outcome: Outcome,
}
pub(crate) struct Thumbs {
socket: PathBuf,
epoch: Arc<AtomicU64>,
jobs: async_channel::Sender<Job>,
textures: RefCell<HashMap<String, gdk::Texture>>,
/// Least recently used first.
order: RefCell<VecDeque<String>>,
missing: RefCell<HashSet<String>>,
missing_order: RefCell<VecDeque<String>>,
waiters: RefCell<HashMap<String, Vec<glib::WeakRef<gtk4::Picture>>>>,
/// Keys with a worker job or a daemon request outstanding.
working: RefCell<HashSet<String>>,
/// Drive misses waiting for the next batch, by key.
queued: RefCell<HashMap<String, FileThumbRequest>>,
/// Drive items the daemon is working on under `generation`, by key.
sent: RefCell<HashMap<String, FileThumbRequest>>,
generation: Cell<u64>,
reserving: Cell<bool>,
inflight: Cell<bool>,
flush: RefCell<Option<glib::SourceId>>,
}
impl Thumbs {
pub(crate) fn new(socket: PathBuf) -> Rc<Self> {
let epoch = Arc::new(AtomicU64::new(0));
let (jobs, inbox) = async_channel::unbounded::<Job>();
let (done, results) = async_channel::unbounded::<Done>();
for n in 0..WORKERS {
let inbox = inbox.clone();
let done = done.clone();
let epoch = epoch.clone();
let spawned = std::thread::Builder::new()
.name(format!("prompt-thumbs-{n}"))
.spawn(move || work(n, &inbox, &done, &epoch));
if let Err(e) = spawned {
tracing::warn!("cannot start a thumbnail worker: {e}");
}
}
let thumbs = Rc::new(Self {
socket,
epoch,
jobs,
textures: RefCell::new(HashMap::new()),
order: RefCell::new(VecDeque::new()),
missing: RefCell::new(HashSet::new()),
missing_order: RefCell::new(VecDeque::new()),
waiters: RefCell::new(HashMap::new()),
working: RefCell::new(HashSet::new()),
queued: RefCell::new(HashMap::new()),
sent: RefCell::new(HashMap::new()),
generation: Cell::new(0),
reserving: Cell::new(false),
inflight: Cell::new(false),
flush: RefCell::new(None),
});
let weak = Rc::downgrade(&thumbs);
glib::spawn_future_local(async move {
while let Ok(done) = results.recv().await {
let Some(thumbs) = weak.upgrade() else {
break;
};
thumbs.finish(done);
}
});
thumbs
}
/// Paint `hit`'s thumbnail into `picture` now if it is known, or as soon
/// as it is. Folders and non-images keep the slot's icon.
pub(crate) fn want(self: &Rc<Self>, hit: &Hit, mountpoint: &Path, picture: &gtk4::Picture) {
let key = hit.thumb_key();
// The widget name binds the picture to one key: a late reply for
// another hit must not paint into it.
picture.set_widget_name(&key);
if hit.is_dir() || !is_thumbnail_image_name(hit.name()) {
return;
}
if matches!(hit, Hit::Drive(drive) if drive.uid.is_empty()) {
return;
}
let cached = self.textures.borrow().get(&key).cloned();
if let Some(texture) = cached {
self.touch(&key);
paint(picture, &key, &texture);
return;
}
if self.missing.borrow().contains(&key) {
return;
}
self.waiters
.borrow_mut()
.entry(key.clone())
.or_default()
.push(picture.downgrade());
if !self.working.borrow_mut().insert(key.clone()) {
return;
}
let source = match hit {
Hit::Local(local) => Source::Local(PathBuf::from(&local.path)),
Hit::Drive(drive) => Source::Drive {
mounted: hit.fs_path(mountpoint),
request: FileThumbRequest {
uid: drive.uid.clone(),
modified: drive.modified,
name: drive.name.clone(),
},
},
};
self.dispatch(key, source);
}
/// The rows are about to be rebuilt: forget their pictures, and let the
/// workers skip what was queued for them.
pub(crate) fn begin_render(&self) {
self.epoch.fetch_add(1, Ordering::SeqCst);
self.waiters.borrow_mut().clear();
}
/// The rows are rebuilt and have asked for their thumbnails. Drive work
/// for hits that are gone is dropped, and cancelled at the daemon when it
/// had already been sent.
pub(crate) fn end_render(self: &Rc<Self>) {
let wanted: HashSet<String> = self.waiters.borrow().keys().cloned().collect();
let mut dropped = Vec::new();
self.queued.borrow_mut().retain(|key, _| {
let keep = wanted.contains(key);
if !keep {
dropped.push(key.clone());
}
keep
});
let stale = self.sent.borrow().keys().any(|key| !wanted.contains(key));
if stale {
self.cancel_daemon();
// Still-wanted items go back into the next batch, under a fresh
// generation.
let sent: Vec<(String, FileThumbRequest)> = self.sent.borrow_mut().drain().collect();
for (key, request) in sent {
if wanted.contains(&key) {
self.queued.borrow_mut().insert(key, request);
} else {
dropped.push(key);
}
}
self.schedule(DAEMON_DEBOUNCE);
}
let mut working = self.working.borrow_mut();
for key in dropped {
working.remove(&key);
}
}
/// The launcher was dismissed: stop everything.
pub(crate) fn cancel_all(&self) {
self.epoch.fetch_add(1, Ordering::SeqCst);
self.waiters.borrow_mut().clear();
self.working.borrow_mut().clear();
self.queued.borrow_mut().clear();
self.sent.borrow_mut().clear();
if let Some(source) = self.flush.borrow_mut().take() {
source.remove();
}
self.cancel_daemon();
}
fn dispatch(&self, key: String, source: Source) {
let job = Job {
epoch: self.epoch.load(Ordering::SeqCst),
key: key.clone(),
source,
};
if self.jobs.try_send(job).is_err() {
self.working.borrow_mut().remove(&key);
}
}
fn wanted(&self, key: &str) -> bool {
self.waiters.borrow().contains_key(key)
}
fn finish(self: &Rc<Self>, done: Done) {
let Done { key, outcome } = done;
match outcome {
Outcome::Texture(texture) => {
self.working.borrow_mut().remove(&key);
self.store_texture(&key, texture.clone());
let waiters = self.waiters.borrow_mut().remove(&key);
for picture in waiters.into_iter().flatten() {
if let Some(picture) = picture.upgrade() {
paint(&picture, &key, &texture);
}
}
}
Outcome::Missing => {
self.working.borrow_mut().remove(&key);
self.store_missing(key.clone());
self.waiters.borrow_mut().remove(&key);
}
Outcome::Daemon(request) => {
if self.wanted(&key) {
self.queued.borrow_mut().insert(key, request);
self.schedule(DAEMON_DEBOUNCE);
} else {
self.working.borrow_mut().remove(&key);
}
}
Outcome::Skipped(source) => {
// A newer render may want the same image again.
if self.wanted(&key) {
self.dispatch(key, source);
} else {
self.working.borrow_mut().remove(&key);
}
}
}
}
fn touch(&self, key: &str) {
let mut order = self.order.borrow_mut();
if let Some(at) = order.iter().position(|held| held == key) {
order.remove(at);
order.push_back(key.to_string());
}
}
fn store_texture(&self, key: &str, texture: gdk::Texture) {
let mut textures = self.textures.borrow_mut();
if textures.insert(key.to_string(), texture).is_none() {
self.order.borrow_mut().push_back(key.to_string());
} else {
drop(textures);
self.touch(key);
return;
}
let mut order = self.order.borrow_mut();
while order.len() > TEXTURE_CACHE_MAX {
if let Some(old) = order.pop_front() {
textures.remove(&old);
}
}
}
fn store_missing(&self, key: String) {
let mut missing = self.missing.borrow_mut();
let mut order = self.missing_order.borrow_mut();
if missing.insert(key.clone()) {
order.push_back(key);
}
while order.len() > MISSING_MAX {
if let Some(old) = order.pop_front() {
missing.remove(&old);
}
}
}
/// Stop the daemon's work for this launcher. The generation is shared
/// with the app, so this is only sent when something was asked for.
fn cancel_daemon(&self) {
let generation = self.generation.replace(0);
if generation != 0 {
// The reply is not needed; `spawn_request` owns the round-trip.
drop(spawn_request(
self.socket.clone(),
Request::CancelFileThumbs {
generation: generation.saturating_add(1),
},
));
}
}
fn schedule(self: &Rc<Self>, delay: Duration) {
if let Some(source) = self.flush.borrow_mut().take() {
source.remove();
}
let weak = Rc::downgrade(self);
let source = glib::timeout_add_local_once(delay, move || {
if let Some(thumbs) = weak.upgrade() {
thumbs.flush.borrow_mut().take();
thumbs.send_batch();
}
});
*self.flush.borrow_mut() = Some(source);
}
fn send_batch(self: &Rc<Self>) {
if self.inflight.get() || self.queued.borrow().is_empty() {
return;
}
if self.generation.get() == 0 {
self.reserve();
return;
}
let batch: Vec<(String, FileThumbRequest)> = {
let mut queued = self.queued.borrow_mut();
let keys: Vec<String> = queued.keys().take(DAEMON_BATCH).cloned().collect();
keys.into_iter()
.filter_map(|key| queued.remove_entry(&key))
.collect()
};
self.sent.borrow_mut().extend(batch.iter().cloned());
let generation = self.generation.get();
self.inflight.set(true);
let rx = spawn_request(
self.socket.clone(),
Request::FileThumbs {
items: batch.iter().map(|(_, request)| request.clone()).collect(),
generation,
},
);
let weak = Rc::downgrade(self);
glib::spawn_future_local(async move {
let reply = rx.recv().await;
let Some(thumbs) = weak.upgrade() else {
return;
};
thumbs.inflight.set(false);
thumbs.receive(generation, batch, reply);
if !thumbs.queued.borrow().is_empty() {
thumbs.schedule(Duration::ZERO);
}
});
}
fn receive(
self: &Rc<Self>,
generation: u64,
batch: Vec<(String, FileThumbRequest)>,
reply: Result<Result<Response, String>, async_channel::RecvError>,
) {
// Cancelled while in flight: `end_render` or `cancel_all` already
// re-queued what is still wanted. A finished thumbnail is still worth
// painting.
let current = generation == self.generation.get();
match reply {
Ok(Ok(Response::Thumbs { items })) => {
let mut by_uid: HashMap<String, (String, FileThumbRequest)> = batch
.into_iter()
.map(|(key, request)| (request.uid.clone(), (key, request)))
.collect();
let mut again = Vec::new();
for item in items {
let Some((key, request)) = by_uid.remove(&item.uid) else {
continue;
};
if let Some(path) = item.path {
if current {
self.sent.borrow_mut().remove(&key);
}
if self.wanted(&key) {
self.working.borrow_mut().insert(key.clone());
self.dispatch(key, Source::Daemon(PathBuf::from(path)));
} else {
self.working.borrow_mut().remove(&key);
}
} else if !current {
continue;
} else if item.pending {
again.push((key, request));
} else {
self.sent.borrow_mut().remove(&key);
self.working.borrow_mut().remove(&key);
self.store_missing(key.clone());
self.waiters.borrow_mut().remove(&key);
}
}
if current {
again.extend(by_uid.into_values());
self.retry(again);
}
}
Ok(Ok(Response::FileThumbsStale)) if current => {
self.generation.set(0);
self.retry(batch);
}
Ok(Ok(Response::Error { message, .. })) if current => {
tracing::debug!("launcher thumbnails failed: {message}");
self.retry(batch);
}
_ if current => self.retry(batch),
_ => {}
}
}
/// Ask again for items the daemon is still making, after a pause.
fn retry(self: &Rc<Self>, items: Vec<(String, FileThumbRequest)>) {
if items.is_empty() {
return;
}
let weak = Rc::downgrade(self);
glib::timeout_add_local_once(DAEMON_RETRY, move || {
let Some(thumbs) = weak.upgrade() else {
return;
};
for (key, request) in items {
// Gone from `sent` means cancelled or already answered.
if thumbs.sent.borrow_mut().remove(&key).is_some() && thumbs.wanted(&key) {
thumbs.queued.borrow_mut().insert(key, request);
} else {
thumbs.working.borrow_mut().remove(&key);
}
}
thumbs.send_batch();
});
}
fn reserve(self: &Rc<Self>) {
if self.reserving.replace(true) {
return;
}
let rx = spawn_request(self.socket.clone(), Request::ReserveFileThumbGeneration);
let weak: Weak<Self> = Rc::downgrade(self);
glib::spawn_future_local(async move {
let reply = rx.recv().await;
let Some(thumbs) = weak.upgrade() else {
return;
};
thumbs.reserving.set(false);
match reply {
Ok(Ok(Response::FileThumbGeneration { generation })) if generation != 0 => {
thumbs.generation.set(generation);
thumbs.send_batch();
}
_ => thumbs.schedule(DAEMON_RETRY),
}
});
}
}
/// Show `texture` in `picture` if the picture still belongs to `key`, and hide
/// the icon underneath it.
fn paint(picture: &gtk4::Picture, key: &str, texture: &gdk::Texture) {
if picture.widget_name() != key {
return;
}
picture.set_paintable(Some(texture));
picture.set_visible(true);
if let Some(overlay) = picture.parent().and_downcast::<gtk4::Overlay>()
&& let Some(fallback) = overlay.child()
{
fallback.set_visible(false);
}
}
fn work(
index: usize,
inbox: &async_channel::Receiver<Job>,
done: &async_channel::Sender<Done>,
epoch: &AtomicU64,
) {
while let Ok(job) = inbox.recv_blocking() {
// A daemon thumbnail is already made; decoding it is cheap and the
// texture is cached for the next render.
let stale =
!matches!(job.source, Source::Daemon(_)) && job.epoch < epoch.load(Ordering::SeqCst);
let outcome = if stale {
Outcome::Skipped(job.source)
} else {
load(index, job.source)
};
if done
.send_blocking(Done {
key: job.key,
outcome,
})
.is_err()
{
break;
}
}
}
fn load(worker: usize, source: Source) -> Outcome {
match source {
Source::Local(path) => {
let Ok(meta) = std::fs::metadata(&path) else {
return Outcome::Missing;
};
let mtime = meta
.modified()
.ok()
.and_then(|at| at.duration_since(UNIX_EPOCH).ok())
.map_or(0, |at| at.as_secs() as i64);
if let Some(pixbuf) = cached(&path, mtime) {
return texture(&pixbuf);
}
if meta.len() > MAX_SOURCE_BYTES {
return Outcome::Missing;
}
let Some((pixbuf, scaled)) = decode(&path) else {
return Outcome::Missing;
};
// An image that already fits is its own thumbnail.
if scaled && let Err(e) = write_cached(worker, &path, mtime, &pixbuf) {
tracing::debug!("cannot cache a thumbnail of {}: {e}", path.display());
}
texture(&pixbuf)
}
Source::Drive { mounted, request } => match cached(&mounted, request.modified) {
Some(pixbuf) => texture(&pixbuf),
None => Outcome::Daemon(request),
},
Source::Daemon(path) => match gdk::Texture::from_filename(&path) {
Ok(texture) => Outcome::Texture(texture),
Err(e) => {
tracing::debug!("cannot decode {}: {e}", path.display());
Outcome::Missing
}
},
}
}
/// `$XDG_CACHE_HOME/thumbnails`.
fn thumbnail_root() -> PathBuf {
glib::user_cache_dir().join("thumbnails")
}
/// The URI and its MD5, which name a file's entry in the thumbnail cache.
fn cache_name(path: &Path) -> Option<(String, String)> {
let uri = glib::filename_to_uri(path, None).ok()?.to_string();
let md5 = glib::compute_checksum_for_data(glib::ChecksumType::Md5, uri.as_bytes())?.to_string();
Some((uri, md5))
}
/// A thumbnail from the shared cache, if one was made for this version of
/// the file.
fn cached(path: &Path, mtime: i64) -> Option<Pixbuf> {
let (_, md5) = cache_name(path)?;
let root = thumbnail_root();
["large", "x-large", "normal"].iter().find_map(|size| {
let pixbuf = Pixbuf::from_file(root.join(size).join(format!("{md5}.png"))).ok()?;
let stamp = pixbuf.option("tEXt::Thumb::MTime")?;
(stamp.parse::<i64>().ok()? == mtime).then_some(pixbuf)
})
}
/// Decode a local image at most [`THUMB_SIZE`] on its longer edge, upright.
/// The bool says whether it had to be scaled down.
fn decode(path: &Path) -> Option<(Pixbuf, bool)> {
let (_, width, height) = Pixbuf::file_info(path)?;
let scaled = width > THUMB_SIZE || height > THUMB_SIZE;
let pixbuf = if scaled {
Pixbuf::from_file_at_scale(path, THUMB_SIZE, THUMB_SIZE, true)
} else {
Pixbuf::from_file(path)
}
.ok()?;
let pixbuf = pixbuf.apply_embedded_orientation().unwrap_or(pixbuf);
Some((pixbuf, scaled))
}
/// Store a thumbnail as the freedesktop spec asks: in `large/`, with
/// `Thumb::URI` and `Thumb::MTime`, readable only by the user, and written
/// through a temporary file so another reader never sees half of it.
fn write_cached(worker: usize, path: &Path, mtime: i64, pixbuf: &Pixbuf) -> std::io::Result<()> {
let (uri, md5) = cache_name(path).ok_or_else(|| std::io::Error::other("no file URI"))?;
let dir = thumbnail_root().join("large");
std::fs::DirBuilder::new()
.recursive(true)
.mode(0o700)
.create(&dir)?;
let mtime = mtime.to_string();
let png = pixbuf
.save_to_bufferv(
"png",
&[
("tEXt::Thumb::URI", uri.as_str()),
("tEXt::Thumb::MTime", mtime.as_str()),
],
)
.map_err(std::io::Error::other)?;
let tmp = dir.join(format!(
"{md5}.png.pdfs-{}-{worker}.tmp",
std::process::id()
));
let written = std::fs::OpenOptions::new()
.write(true)
.create(true)
.truncate(true)
.mode(0o600)
.open(&tmp)
.and_then(|mut file| file.write_all(&png))
.and_then(|()| std::fs::rename(&tmp, dir.join(format!("{md5}.png"))));
if written.is_err() {
let _ = std::fs::remove_file(&tmp);
}
written
}
/// A `Pixbuf` may not leave its thread; its pixels, as a memory texture, can.
fn texture(pixbuf: &Pixbuf) -> Outcome {
let format = if pixbuf.has_alpha() {
gdk::MemoryFormat::R8g8b8a8
} else {
gdk::MemoryFormat::R8g8b8
};
let texture = gdk::MemoryTexture::new(
pixbuf.width(),
pixbuf.height(),
format,
&pixbuf.read_pixel_bytes(),
pixbuf.rowstride() as usize,
);
Outcome::Texture(texture.upcast())
}
File diff suppressed because it is too large. Load diff
+158
View File
@@ -0,0 +1,158 @@
//! The bundled resources and the optional Proton theme, shared by `pdfs-app`
//! and `pdfs-prompt` so both paint the same way from the same preference.
use std::cell::RefCell;
use adw::prelude::*;
use gtk4::{gio, glib};
/// Register the bundled GResources (custom icons, the stylesheets) and load
/// `stylesheet`, the front end's own sheet. The Proton theme is a separate
/// provider, applied by [`set_proton_theme`] from the saved preference.
pub(crate) fn load_resources(stylesheet: &str) {
let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/pdfs.gresource"));
let resource_data = glib::Bytes::from_static(bytes);
if let Ok(resource) = gio::Resource::from_data(&resource_data) {
gio::resources_register(&resource);
} else {
tracing::error!("failed to load gresource bundle");
}
let Some(display) = gtk4::gdk::Display::default() else {
return;
};
let provider = gtk4::CssProvider::new();
provider.load_from_resource(stylesheet);
// Above the user's own gtk.css, which often imports a whole theme: its
// `button { padding: 6px 10px; min-width: 16px }` would otherwise pad every
// photo tile and push the grid past the window. Every rule in the sheet is
// scoped to the app's own classes, so nothing else the user styled changes.
// One above the Proton theme too, so the app's rules refine it.
gtk4::style_context_add_provider_for_display(
&display,
&provider,
gtk4::STYLE_PROVIDER_PRIORITY_USER + 2,
);
gtk4::IconTheme::for_display(&display).add_resource_path("/de/nils/protondrivelinux/icons");
}
thread_local! {
/// The Proton theme provider while it is installed. Kept so turning the
/// preference off can remove exactly what turning it on added.
static PROTON_THEME: RefCell<Option<gtk4::CssProvider>> = const { RefCell::new(None) };
}
/// Whether the Proton theme is on.
pub(crate) fn proton_theme_active() -> bool {
PROTON_THEME.with(|slot| slot.borrow().is_some())
}
/// libadwaita's own stylesheet, bundled in the library.
const ADWAITA_STYLESHEET: &str = "/org/gnome/Adwaita/styles/gtk.css";
/// The Proton palette laid over it, from our own bundle.
const PROTON_PALETTE: &str = "/de/nils/protondrivelinux/proton-theme.css";
/// Make the theme provider's `@media (prefers-color-scheme)` and
/// `(prefers-contrast)` rules match what libadwaita shows, now and whenever it
/// changes. A provider evaluates those itself, and a new one assumes light.
///
/// The properties are set by name because they only exist since GTK 4.20, and
/// the app still runs on older GTK, whose libadwaita has no such rules anyway.
fn follow_style_manager(provider: &gtk4::CssProvider) {
fn set_enum(provider: &gtk4::CssProvider, property: &str, nick: &str) {
let Some(pspec) = provider.find_property(property) else {
return;
};
if let Some(value) = glib::EnumClass::with_type(pspec.value_type())
.and_then(|class| class.to_value_by_nick(nick))
{
provider.set_property_from_value(property, &value);
}
}
fn apply(provider: &gtk4::CssProvider, manager: &adw::StyleManager) {
let scheme = if manager.is_dark() { "dark" } else { "light" };
set_enum(provider, "prefers-color-scheme", scheme);
let contrast = if manager.is_high_contrast() {
"more"
} else {
"no-preference"
};
set_enum(provider, "prefers-contrast", contrast);
}
let manager = adw::StyleManager::default();
apply(provider, &manager);
// Weak, so a provider the preference removed isn't kept alive; its
// handlers then do nothing.
let weak = provider.downgrade();
let weak_dark = weak.clone();
manager.connect_dark_notify(move |manager| {
if let Some(provider) = weak_dark.upgrade() {
apply(&provider, manager);
}
});
manager.connect_high_contrast_notify(move |manager| {
if let Some(provider) = weak.upgrade() {
apply(&provider, manager);
}
});
}
/// Paint the window in the Proton web apps' colours (`on`) or follow the
/// system theme and accent colour.
///
/// Setting libadwaita's colour variables alone isn't enough: a GTK theme the
/// user's `gtk.css` imports (Catppuccin, Fluent, ...) sits above the app and
/// hard-codes its own accent into hundreds of rules. So the theme provider,
/// one above the user's CSS, first resets every property, then re-applies
/// libadwaita's whole stylesheet and finally the Proton palette, which leaves
/// nothing of the user's theme inside the app.
pub(crate) fn set_proton_theme(on: bool) {
let Some(display) = gtk4::gdk::Display::default() else {
return;
};
PROTON_THEME.with(|slot| {
let mut slot = slot.borrow_mut();
match (on, slot.as_ref()) {
(true, None) => {
let stylesheet = |path| {
gio::resources_lookup_data(path, gio::ResourceLookupFlags::NONE)
.map(|bytes| String::from_utf8_lossy(&bytes).into_owned())
};
let palette = stylesheet(PROTON_PALETTE).unwrap_or_default();
let css = match stylesheet(ADWAITA_STYLESHEET) {
// Its images are named relative to the sheet, which a
// string loaded here doesn't have.
Ok(adwaita) => format!(
"* {{ all: unset; }}\n{}\n{palette}",
adwaita.replace(
"url(\"assets/",
"url(\"resource:///org/gnome/Adwaita/styles/assets/"
)
),
// Still recolours everything that follows libadwaita's
// variables; only a custom theme's own rules show through.
Err(e) => {
tracing::warn!("libadwaita stylesheet not found, only recolouring: {e}");
palette
}
};
let provider = gtk4::CssProvider::new();
follow_style_manager(&provider);
provider.load_from_string(&css);
gtk4::style_context_add_provider_for_display(
&display,
&provider,
gtk4::STYLE_PROVIDER_PRIORITY_USER + 1,
);
*slot = Some(provider);
}
(false, Some(provider)) => {
gtk4::style_context_remove_provider_for_display(&display, provider);
*slot = None;
}
_ => {}
}
});
}
+2
View File
@@ -28,6 +28,8 @@ crates/pdfs-gui/src/app/widgets/thumbnails.rs
crates/pdfs-gui/src/app/widgets/versions_dialog.rs crates/pdfs-gui/src/app/widgets/versions_dialog.rs
crates/pdfs-gui/src/dmenu.rs crates/pdfs-gui/src/dmenu.rs
crates/pdfs-gui/src/fzf.rs crates/pdfs-gui/src/fzf.rs
crates/pdfs-gui/src/hud/mod.rs
crates/pdfs-gui/src/hud/preview.rs
crates/pdfs-gui/src/i18n.rs crates/pdfs-gui/src/i18n.rs
crates/pdfs-gui/src/main.rs crates/pdfs-gui/src/main.rs
crates/pdfs-gui/src/prompt.rs crates/pdfs-gui/src/prompt.rs
+218 -178
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "Keine Internetverbindung" msgstr "Keine Internetverbindung"
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Hauptmenü" msgstr "Hauptmenü"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -164,23 +164,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Quellcode" msgstr "Quellcode"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Haftungsausschluss" msgstr "Haftungsausschluss"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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 ""
"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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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>, 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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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> gezeichnet, die " "href=\"https://www.naturalearthdata.com/\">Natural Earth</a> gezeichnet, die "
"gemeinfrei sind." "gemeinfrei sind."
#: crates/pdfs-gui/src/app/main.rs:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Proton Drive beenden?" msgstr "Proton Drive beenden?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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 ""
"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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -287,30 +287,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Beenden" msgstr "Beenden"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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 +319,38 @@ msgstr "Drive durchsuchen"
msgid "Refresh" msgid "Refresh"
msgstr "Aktualisieren" msgstr "Aktualisieren"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Tastenkürzel" msgstr "Tastenkürzel"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Dateien" msgstr "Dateien"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Zurück / Vor" msgstr "Zurück / Vor"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Übergeordneter Ordner" msgstr "Übergeordneter Ordner"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Raster / Liste" msgstr "Raster / Liste"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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 +359,7 @@ msgstr "Raster / Liste"
msgid "Rename" msgid "Rename"
msgstr "Umbenennen" msgstr "Umbenennen"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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,72 +369,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Auswahl aufheben" msgstr "Auswahl aufheben"
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Größere Vorschaubilder" msgstr "Größere Vorschaubilder"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Kleinere Vorschaubilder" msgstr "Kleinere Vorschaubilder"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
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:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Alles auswählen" msgstr "Alles auswählen"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Fotobetrachter" msgstr "Fotobetrachter"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
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:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "Erstes / letztes Foto" msgstr "Erstes / letztes Foto"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Details anzeigen" msgstr "Details anzeigen"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Vollbild" msgstr "Vollbild"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Nicht verbunden" msgstr "Nicht verbunden"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Verbindung wird hergestellt …" msgstr "Verbindung wird hergestellt …"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -479,7 +480,7 @@ msgstr "Nichts im aktuellen Protokoll entspricht diesem Filter."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Erneut versuchen" msgstr "Erneut versuchen"
@@ -1238,6 +1239,7 @@ msgstr "Der Proton-Drive-Dienst hat nicht geantwortet."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Öffnen" msgstr "Öffnen"
@@ -1428,6 +1430,7 @@ msgstr "Name"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Größe" msgstr "Größe"
@@ -1606,6 +1609,7 @@ msgstr[1] "{n} Dateien sind jetzt nur online verfügbar"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Geändert" msgstr "Geändert"
@@ -1614,6 +1618,7 @@ msgstr "Geändert"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Ort" msgstr "Ort"
@@ -1632,6 +1637,7 @@ msgstr "Abspielen"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Offline verfügbar" msgstr "Offline verfügbar"
@@ -2054,7 +2060,6 @@ msgstr "Proton Drive herunterladen"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Dieser Computer" msgstr "Dieser Computer"
@@ -2546,7 +2551,7 @@ msgid "About Sync Modes"
msgstr "Über Synchronisierungsarten" msgstr "Über Synchronisierungsarten"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Ordner" msgstr "Ordner"
@@ -3423,7 +3428,7 @@ msgid "Select Photo to Upload"
msgstr "Foto zum Hochladen auswählen" msgstr "Foto zum Hochladen auswählen"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Bilder" msgstr "Bilder"
@@ -4602,7 +4607,7 @@ msgid "Up to date"
msgstr "Auf dem neuesten Stand" msgstr "Auf dem neuesten Stand"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive läuft nicht" msgstr "Proton Drive läuft nicht"
@@ -5147,6 +5152,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Ordner öffnen" msgstr "Ordner öffnen"
@@ -5529,6 +5535,137 @@ msgstr "(keine angehefteten Elemente – zum Suchen tippen)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(Anwendungsverzeichnisse nicht ermittelbar)" msgstr "(Anwendungsverzeichnisse nicht ermittelbar)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Zuletzt verwendet"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "In Proton Drive angeheftet"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Beste Treffer"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Proton Drive durchsuchen"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "In Drive und auf diesem Computer suchen"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Keine Ergebnisse"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive läuft nicht"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Proton Drive starten, um deine Dateien zu durchsuchen."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ Navigieren · ↵ Öffnen · Tab Filter"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Das Drive durchsuchen"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Dieser Computer wird noch indiziert – lokale Ergebnisse erscheinen in Kürze."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Eine andere Suche oder einen anderen Filter versuchen."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Mit dem Tippen beginnen, um Proton Drive und die Dateien auf diesem Computer "
"zu durchsuchen."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Keine angehefteten Dateien"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} angeheftete Datei"
msgstr[1] "{n} angeheftete Dateien"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} auf diesem Computer · wird indiziert …"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} auf diesem Computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "{name} wird geöffnet …"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Öffnen fehlgeschlagen: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Proton Drive ist nicht erreichbar"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Verfügbarkeit"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Im Ordner anzeigen"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Pfad kopieren"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Pfad kopiert"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Auf diesem Computer"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Heruntergeladen"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Nur online"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5682,16 +5819,16 @@ msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Dokumente" msgstr "Dokumente"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Medien" msgstr "Medien"
@@ -5700,143 +5837,49 @@ msgstr "Medien"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Meine Dateien / {path}" msgstr "Meine Dateien / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Proton Drive durchsuchen"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "In Drive und auf diesem Computer suchen"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Beste Treffer"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Keine Ergebnisse"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive läuft nicht"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Proton Drive starten, um deine Dateien zu durchsuchen."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ Navigieren · ↵ Öffnen · Tab Filter"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "In Proton Drive angeheftet"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Das Drive durchsuchen"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Dieser Computer wird noch indiziert – lokale Ergebnisse erscheinen in Kürze."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Eine andere Suche oder einen anderen Filter versuchen."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Mit dem Tippen beginnen, um Proton Drive und die Dateien auf diesem Computer "
"zu durchsuchen."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Keine angehefteten Dateien"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} angeheftete Datei"
msgstr[1] "{n} angeheftete Dateien"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} auf diesem Computer · wird indiziert …"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} auf diesem Computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "{name} wird geöffnet …"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Öffnen fehlgeschlagen: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Proton Drive ist nicht erreichbar"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Persönlicher Ordner" msgstr "Persönlicher Ordner"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Persönlicher Ordner / {path}" msgstr "Persönlicher Ordner / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "jetzt" msgstr "jetzt"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} Min." msgstr "{count} Min."
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} Std." msgstr "{count} Std."
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} T." msgstr "{count} T."
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} Mon." msgstr "{count} Mon."
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} J." msgstr "{count} J."
@@ -5986,9 +6029,6 @@ msgstr "Proton-Drive-Hintergrunddienst nicht erreichbar: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Identität dieses Computers verwenden" #~ msgstr "Identität dieses Computers verwenden"
#~ msgid "On this computer"
#~ msgstr "Auf diesem Computer"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+215 -175
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "You're offline" msgstr "You're offline"
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Main menu" msgstr "Main menu"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -164,23 +164,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Source Code" msgstr "Source Code"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "Proton Privacy Policy" msgstr "Proton Privacy Policy"
#: crates/pdfs-gui/src/app/main.rs:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Disclaimer" msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -202,7 +202,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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/"
@@ -212,7 +212,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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 "
@@ -222,7 +222,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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -238,15 +238,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Stop Proton Drive?" msgstr "Stop Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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."
@@ -254,7 +254,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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -283,30 +283,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancel" msgstr "Cancel"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Stop" msgstr "Stop"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -315,38 +315,38 @@ msgstr "Search Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Refresh" msgstr "Refresh"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Keyboard shortcuts" msgstr "Keyboard shortcuts"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Files" msgstr "Files"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Back / forward" msgstr "Back / forward"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Parent folder" msgstr "Parent folder"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Grid / list" msgstr "Grid / list"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -355,7 +355,7 @@ msgstr "Grid / list"
msgid "Rename" msgid "Rename"
msgstr "Rename" msgstr "Rename"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -365,72 +365,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Clear the selection" msgstr "Clear the selection"
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Larger thumbnails" msgstr "Larger thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Smaller thumbnails" msgstr "Smaller thumbnails"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Reset thumbnail size" msgstr "Reset thumbnail size"
#: crates/pdfs-gui/src/app/main.rs:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Select all" msgstr "Select all"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Photo Viewer" msgstr "Photo Viewer"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Previous / next photo" msgstr "Previous / next photo"
#: crates/pdfs-gui/src/app/main.rs:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "First / last photo" msgstr "First / last photo"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Show details" msgstr "Show details"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Fullscreen" msgstr "Fullscreen"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Close" msgstr "Close"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Not connected" msgstr "Not connected"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Connecting…" msgstr "Connecting…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -475,7 +476,7 @@ msgstr "Nothing in the recent log fits this filter."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Retry" msgstr "Retry"
@@ -1231,6 +1232,7 @@ msgstr "The Proton Drive service didn't respond."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Open" msgstr "Open"
@@ -1421,6 +1423,7 @@ msgstr "Name"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Size" msgstr "Size"
@@ -1595,6 +1598,7 @@ msgstr[1] "{n} files are now online only"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modified" msgstr "Modified"
@@ -1603,6 +1607,7 @@ msgstr "Modified"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Location" msgstr "Location"
@@ -1621,6 +1626,7 @@ msgstr "Play"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Available offline" msgstr "Available offline"
@@ -2036,7 +2042,6 @@ msgstr "Get Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "This computer" msgstr "This computer"
@@ -2516,7 +2521,7 @@ msgid "About Sync Modes"
msgstr "About Sync Modes" msgstr "About Sync Modes"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Folders" msgstr "Folders"
@@ -3376,7 +3381,7 @@ msgid "Select Photo to Upload"
msgstr "Select Photo to Upload" msgstr "Select Photo to Upload"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Images" msgstr "Images"
@@ -4521,7 +4526,7 @@ msgid "Up to date"
msgstr "Up to date" msgstr "Up to date"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive isn't running" msgstr "Proton Drive isn't running"
@@ -5053,6 +5058,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Open folder" msgstr "Open folder"
@@ -5431,6 +5437,134 @@ msgstr "(no pinned files — type to search)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(cannot resolve app dirs)" msgstr "(cannot resolve app dirs)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Recent"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Pinned in Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Best matches"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Search Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Search in Drive and on this computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "No results"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive is not running"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Start Proton Drive to search your files."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navigate · ↵ open · Tab filter"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Search your Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr "Still indexing this computer — local results will fill in shortly."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Try a different search, or another filter."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr "Start typing to search Proton Drive and the files on this computer."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "No pinned files"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} pinned file"
msgstr[1] "{n} pinned files"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} on this computer · indexing…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} on this computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Opening {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Could not open: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Couldn't reach Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Availability"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Show in Folder"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Copy Path"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Path copied"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "On this computer"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Downloaded"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Online only"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5584,16 +5718,16 @@ msgid "Quit"
msgstr "Quit" msgstr "Quit"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "All" msgstr "All"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documents" msgstr "Documents"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Media" msgstr "Media"
@@ -5602,140 +5736,49 @@ msgstr "Media"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "My files / {path}" msgstr "My files / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Search Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Search in Drive and on this computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Best matches"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "No results"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive is not running"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Start Proton Drive to search your files."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navigate · ↵ open · Tab filter"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Pinned in Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Search your Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr "Still indexing this computer — local results will fill in shortly."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Try a different search, or another filter."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr "Start typing to search Proton Drive and the files on this computer."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "No pinned files"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} pinned file"
msgstr[1] "{n} pinned files"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} on this computer · indexing…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} on this computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Opening {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Could not open: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Couldn't reach Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Home / {path}" msgstr "Home / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "now" msgstr "now"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count}m" msgstr "{count}m"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count}h" msgstr "{count}h"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count}d" msgstr "{count}d"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count}mo" msgstr "{count}mo"
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count}y" msgstr "{count}y"
@@ -5882,9 +5925,6 @@ msgstr "cannot reach the Proton Drive daemon: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Use this computer's identity" #~ msgstr "Use this computer's identity"
#~ msgid "On this computer"
#~ msgstr "On this computer"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+219 -179
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
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:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Menú principal" msgstr "Menú principal"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -164,23 +164,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Código fuente" msgstr "Código fuente"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso legal" msgstr "Aviso legal"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -203,7 +203,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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/"
@@ -213,7 +213,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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 "
@@ -223,7 +223,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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -239,15 +239,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "¿Detener Proton Drive?" msgstr "¿Detener Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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 ""
"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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -285,30 +285,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Detener" msgstr "Detener"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -317,38 +317,38 @@ msgstr "Buscar en Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Actualizar" msgstr "Actualizar"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Atajos del teclado" msgstr "Atajos del teclado"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Archivos" msgstr "Archivos"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Atrás / adelante" msgstr "Atrás / adelante"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Carpeta superior" msgstr "Carpeta superior"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Cuadrícula / lista" msgstr "Cuadrícula / lista"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -357,7 +357,7 @@ msgstr "Cuadrícula / lista"
msgid "Rename" msgid "Rename"
msgstr "Renombrar" msgstr "Renombrar"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -367,72 +367,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
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:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniaturas más grandes" msgstr "Miniaturas más grandes"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
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:1533 #: crates/pdfs-gui/src/app/main.rs:1385
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:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Seleccionar todo" msgstr "Seleccionar todo"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visor de fotos" msgstr "Visor de fotos"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Foto anterior / siguiente" msgstr "Foto anterior / siguiente"
#: crates/pdfs-gui/src/app/main.rs:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "Primera / última foto" msgstr "Primera / última foto"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Pantalla completa" msgstr "Pantalla completa"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Sin conexión" msgstr "Sin conexión"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Conectando…" msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -477,7 +478,7 @@ msgstr "Nada del registro reciente coincide con este filtro."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Reintentar" msgstr "Reintentar"
@@ -1236,6 +1237,7 @@ msgstr "El servicio de Proton Drive no respondió."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Abrir" msgstr "Abrir"
@@ -1426,6 +1428,7 @@ msgstr "Nombre"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Tamaño" msgstr "Tamaño"
@@ -1601,6 +1604,7 @@ msgstr[1] "{n} archivos ahora están solo en línea"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modificado" msgstr "Modificado"
@@ -1609,6 +1613,7 @@ msgstr "Modificado"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Ubicación" msgstr "Ubicación"
@@ -1627,6 +1632,7 @@ msgstr "Reproducir"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Disponible sin conexión" msgstr "Disponible sin conexión"
@@ -2047,7 +2053,6 @@ msgstr "Obtener Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Este equipo" msgstr "Este equipo"
@@ -2533,7 +2538,7 @@ msgid "About Sync Modes"
msgstr "Acerca de los modos de sincronización" msgstr "Acerca de los modos de sincronización"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Carpetas" msgstr "Carpetas"
@@ -3407,7 +3412,7 @@ msgid "Select Photo to Upload"
msgstr "Seleccionar la foto que subir" msgstr "Seleccionar la foto que subir"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Imágenes" msgstr "Imágenes"
@@ -4570,7 +4575,7 @@ msgid "Up to date"
msgstr "Actualizado" msgstr "Actualizado"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive no está en ejecución" msgstr "Proton Drive no está en ejecución"
@@ -5112,6 +5117,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Abrir carpeta" msgstr "Abrir carpeta"
@@ -5495,6 +5501,138 @@ msgstr "(no hay archivos anclados; escriba para buscar)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(no se pueden resolver las carpetas de la aplicación)" msgstr "(no se pueden resolver las carpetas de la aplicación)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Recientes"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Anclado en Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Mejores coincidencias"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Buscar en Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Buscar en Drive y en este equipo"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "No hay resultados"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive no está en ejecución"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Inicie Proton Drive para buscar en sus archivos."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navegar · ↵ abrir · Tab filtrar"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Buscar en su Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Todavía se está indexando este equipo; los resultados locales aparecerán en "
"breve."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Pruebe con otra búsqueda u otro filtro."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Empiece a escribir para buscar en Proton Drive y en los archivos de este "
"equipo."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "No hay archivos anclados"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} archivo anclado"
msgstr[1] "{n} archivos anclados"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} en Drive · {local} en este equipo · indexando…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} en Drive · {local} en este equipo"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Abriendo {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "No se pudo abrir: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "No se pudo contactar con Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Disponibilidad"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Mostrar en la carpeta"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Copiar ruta"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Ruta copiada"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "En este equipo"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Descargado"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Solo en línea"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5648,16 +5786,16 @@ msgid "Quit"
msgstr "Salir" msgstr "Salir"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Todo" msgstr "Todo"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documentos" msgstr "Documentos"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Multimedia" msgstr "Multimedia"
@@ -5666,144 +5804,49 @@ msgstr "Multimedia"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Mis archivos / {path}" msgstr "Mis archivos / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Buscar en Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Buscar en Drive y en este equipo"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Mejores coincidencias"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "No hay resultados"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive no está en ejecución"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Inicie Proton Drive para buscar en sus archivos."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navegar · ↵ abrir · Tab filtrar"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Anclado en Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Buscar en su Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Todavía se está indexando este equipo; los resultados locales aparecerán en "
"breve."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Pruebe con otra búsqueda u otro filtro."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Empiece a escribir para buscar en Proton Drive y en los archivos de este "
"equipo."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "No hay archivos anclados"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} archivo anclado"
msgstr[1] "{n} archivos anclados"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} en Drive · {local} en este equipo · indexando…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} en Drive · {local} en este equipo"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Abriendo {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "No se pudo abrir: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "No se pudo contactar con Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Carpeta personal" msgstr "Carpeta personal"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Carpeta personal / {path}" msgstr "Carpeta personal / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "ahora" msgstr "ahora"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} min" msgstr "{count} min"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} h" msgstr "{count} h"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} d" msgstr "{count} d"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} mes." msgstr "{count} mes."
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} a" msgstr "{count} a"
@@ -5954,9 +5997,6 @@ msgstr "no se puede contactar con el demonio de Proton Drive: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Usar la identidad de este equipo" #~ msgstr "Usar la identidad de este equipo"
#~ msgid "On this computer"
#~ msgstr "En este equipo"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+219 -179
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what} : {detail}" msgstr "{what} : {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
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:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Menu principal" msgstr "Menu principal"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -164,23 +164,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Code source" msgstr "Code source"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Avertissement" msgstr "Avertissement"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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 ""
"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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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 ""
"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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 ""
"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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
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:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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 ""
"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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -287,30 +287,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Arrêter" msgstr "Arrêter"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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 +319,38 @@ msgstr "Rechercher dans Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Actualiser" msgstr "Actualiser"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Raccourcis clavier" msgstr "Raccourcis clavier"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Fichiers" msgstr "Fichiers"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Précédent / suivant" msgstr "Précédent / suivant"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Dossier parent" msgstr "Dossier parent"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Grille / liste" msgstr "Grille / liste"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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 +359,7 @@ msgstr "Grille / liste"
msgid "Rename" msgid "Rename"
msgstr "Renommer" msgstr "Renommer"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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,72 +369,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
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:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniatures plus grandes" msgstr "Miniatures plus grandes"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniatures plus petites" msgstr "Miniatures plus petites"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
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:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Tout sélectionner" msgstr "Tout sélectionner"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visionneuse de photos" msgstr "Visionneuse de photos"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
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:1541 #: crates/pdfs-gui/src/app/main.rs:1393
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:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Afficher les détails" msgstr "Afficher les détails"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Plein écran" msgstr "Plein écran"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Fermer" msgstr "Fermer"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Non connecté" msgstr "Non connecté"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Connexion…" msgstr "Connexion…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -479,7 +480,7 @@ msgstr "Rien dans le journal récent ne correspond à ce filtre."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Réessayer" msgstr "Réessayer"
@@ -1243,6 +1244,7 @@ msgstr "Le service Proton Drive n’a pas répondu."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Ouvrir" msgstr "Ouvrir"
@@ -1433,6 +1435,7 @@ msgstr "Nom"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Taille" msgstr "Taille"
@@ -1609,6 +1612,7 @@ msgstr[1] "{n} fichiers sont désormais en ligne uniquement"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modifié" msgstr "Modifié"
@@ -1617,6 +1621,7 @@ msgstr "Modifié"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Emplacement" msgstr "Emplacement"
@@ -1635,6 +1640,7 @@ msgstr "Lire"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Disponible hors ligne" msgstr "Disponible hors ligne"
@@ -2056,7 +2062,6 @@ msgstr "Obtenir Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Cet ordinateur" msgstr "Cet ordinateur"
@@ -2546,7 +2551,7 @@ msgid "About Sync Modes"
msgstr "À propos des modes de synchronisation" msgstr "À propos des modes de synchronisation"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Dossiers" msgstr "Dossiers"
@@ -3421,7 +3426,7 @@ msgid "Select Photo to Upload"
msgstr "Sélectionner une photo à téléverser" msgstr "Sélectionner une photo à téléverser"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Images" msgstr "Images"
@@ -4598,7 +4603,7 @@ msgid "Up to date"
msgstr "À jour" msgstr "À jour"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive n’est pas en cours d’exécution" msgstr "Proton Drive n’est pas en cours d’exécution"
@@ -5143,6 +5148,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Ouvrir le dossier" msgstr "Ouvrir le dossier"
@@ -5527,6 +5533,138 @@ msgstr "(aucun fichier épinglé — tapez pour rechercher)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(impossible de déterminer les répertoires de l’application)" msgstr "(impossible de déterminer les répertoires de l’application)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Récents"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Épinglé dans Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Meilleurs résultats"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Rechercher dans Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Rechercher dans Drive et sur cet ordinateur"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Échap"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Aucun résultat"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive n’est pas en cours d’exécution"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Démarrez Proton Drive pour rechercher dans vos fichiers."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ naviguer · ↵ ouvrir · Tab filtrer"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Rechercher dans votre Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Indexation de cet ordinateur en cours — les résultats locaux vont bientôt "
"apparaître."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Essayez une autre recherche ou un autre filtre."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Commencez à taper pour rechercher dans Proton Drive et dans les fichiers de "
"cet ordinateur."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Aucun fichier épinglé"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} fichier épinglé"
msgstr[1] "{n} fichiers épinglés"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} dans Drive · {local} sur cet ordinateur · indexation…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} dans Drive · {local} sur cet ordinateur"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Ouverture de {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Impossible d’ouvrir : {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Impossible de joindre Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Disponibilité"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Afficher dans le dossier"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Copier le chemin"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Chemin copié"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Sur cet ordinateur"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Téléchargé"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "En ligne uniquement"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5680,16 +5818,16 @@ msgid "Quit"
msgstr "Quitter" msgstr "Quitter"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Tout" msgstr "Tout"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documents" msgstr "Documents"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Médias" msgstr "Médias"
@@ -5698,144 +5836,49 @@ msgstr "Médias"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Mes fichiers / {path}" msgstr "Mes fichiers / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Rechercher dans Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Rechercher dans Drive et sur cet ordinateur"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Échap"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Meilleurs résultats"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Aucun résultat"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive n’est pas en cours d’exécution"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Démarrez Proton Drive pour rechercher dans vos fichiers."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ naviguer · ↵ ouvrir · Tab filtrer"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Épinglé dans Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Rechercher dans votre Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Indexation de cet ordinateur en cours — les résultats locaux vont bientôt "
"apparaître."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Essayez une autre recherche ou un autre filtre."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Commencez à taper pour rechercher dans Proton Drive et dans les fichiers de "
"cet ordinateur."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Aucun fichier épinglé"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} fichier épinglé"
msgstr[1] "{n} fichiers épinglés"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} dans Drive · {local} sur cet ordinateur · indexation…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} dans Drive · {local} sur cet ordinateur"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Ouverture de {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Impossible d’ouvrir : {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Impossible de joindre Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Dossier personnel" msgstr "Dossier personnel"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Dossier personnel / {path}" msgstr "Dossier personnel / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "maintenant" msgstr "maintenant"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} min" msgstr "{count} min"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} h" msgstr "{count} h"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} j" msgstr "{count} j"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} mois" msgstr "{count} mois"
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} a" msgstr "{count} a"
@@ -5986,9 +6029,6 @@ msgstr "impossible de joindre le démon Proton Drive : {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Utiliser l’identité de cet ordinateur" #~ msgstr "Utiliser l’identité de cet ordinateur"
#~ msgid "On this computer"
#~ msgstr "Sur cet ordinateur"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+218 -178
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "Sei offline" msgstr "Sei offline"
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Menu principale" msgstr "Menu principale"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -163,23 +163,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Codice sorgente" msgstr "Codice sorgente"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Esclusione di responsabilità" msgstr "Esclusione di responsabilità"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -202,7 +202,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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/"
@@ -212,7 +212,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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 "
@@ -222,7 +222,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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -238,15 +238,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Arrestare Proton Drive?" msgstr "Arrestare Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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."
@@ -254,7 +254,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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -283,30 +283,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Arresta" msgstr "Arresta"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -315,38 +315,38 @@ msgstr "Cerca in Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Aggiorna" msgstr "Aggiorna"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Scorciatoie da tastiera" msgstr "Scorciatoie da tastiera"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "File" msgstr "File"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Indietro / avanti" msgstr "Indietro / avanti"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Cartella superiore" msgstr "Cartella superiore"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Griglia / elenco" msgstr "Griglia / elenco"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -355,7 +355,7 @@ msgstr "Griglia / elenco"
msgid "Rename" msgid "Rename"
msgstr "Rinomina" msgstr "Rinomina"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -365,72 +365,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Annulla la selezione" msgstr "Annulla la selezione"
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniature più grandi" msgstr "Miniature più grandi"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniature più piccole" msgstr "Miniature più piccole"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
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:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Seleziona tutto" msgstr "Seleziona tutto"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visualizzatore di foto" msgstr "Visualizzatore di foto"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Foto precedente / successiva" msgstr "Foto precedente / successiva"
#: crates/pdfs-gui/src/app/main.rs:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "Prima / ultima foto" msgstr "Prima / ultima foto"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Mostra dettagli" msgstr "Mostra dettagli"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Schermo intero" msgstr "Schermo intero"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Chiudi" msgstr "Chiudi"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Non connesso" msgstr "Non connesso"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Connessione…" msgstr "Connessione…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -475,7 +476,7 @@ msgstr "Nessuna voce del registro recente corrisponde a questo filtro."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Riprova" msgstr "Riprova"
@@ -1237,6 +1238,7 @@ msgstr "Il servizio di Proton Drive non ha risposto."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Apri" msgstr "Apri"
@@ -1427,6 +1429,7 @@ msgstr "Nome"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Dimensione" msgstr "Dimensione"
@@ -1603,6 +1606,7 @@ msgstr[1] "{n} file sono ora solo online"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modificato" msgstr "Modificato"
@@ -1611,6 +1615,7 @@ msgstr "Modificato"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Posizione" msgstr "Posizione"
@@ -1629,6 +1634,7 @@ msgstr "Riproduci"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Disponibile offline" msgstr "Disponibile offline"
@@ -2050,7 +2056,6 @@ msgstr "Scarica Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Questo computer" msgstr "Questo computer"
@@ -2544,7 +2549,7 @@ msgid "About Sync Modes"
msgstr "Informazioni sulle modalità di sincronizzazione" msgstr "Informazioni sulle modalità di sincronizzazione"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Cartelle" msgstr "Cartelle"
@@ -3417,7 +3422,7 @@ msgid "Select Photo to Upload"
msgstr "Seleziona la foto da caricare" msgstr "Seleziona la foto da caricare"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Immagini" msgstr "Immagini"
@@ -4579,7 +4584,7 @@ msgid "Up to date"
msgstr "Aggiornato" msgstr "Aggiornato"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive non è in esecuzione" msgstr "Proton Drive non è in esecuzione"
@@ -5126,6 +5131,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Apri cartella" msgstr "Apri cartella"
@@ -5508,6 +5514,137 @@ msgstr "(nessun file fissato: digita per cercare)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(impossibile determinare le directory dell'app)" msgstr "(impossibile determinare le directory dell'app)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Recenti"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Fissato in Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Migliori corrispondenze"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Cerca in Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Cerca in Drive e su questo computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Nessun risultato"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive non è in esecuzione"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Avvia Proton Drive per cercare nei tuoi file."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ naviga · ↵ apri · Tab filtra"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Cerca nel tuo Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Indicizzazione di questo computer ancora in corso: i risultati locali "
"arriveranno a breve."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Prova una ricerca diversa o un altro filtro."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Inizia a digitare per cercare in Proton Drive e nei file di questo computer."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Nessun file fissato"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} file fissato"
msgstr[1] "{n} file fissati"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} su questo computer · indicizzazione…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} su questo computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Apertura di {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Impossibile aprire: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Impossibile raggiungere Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Disponibilità"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Mostra nella cartella"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Copia percorso"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Percorso copiato"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Su questo computer"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Scaricato"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Solo online"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5661,16 +5798,16 @@ msgid "Quit"
msgstr "Esci" msgstr "Esci"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Tutti" msgstr "Tutti"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documenti" msgstr "Documenti"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Multimedia" msgstr "Multimedia"
@@ -5679,143 +5816,49 @@ msgstr "Multimedia"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "I miei file / {path}" msgstr "I miei file / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Cerca in Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Cerca in Drive e su questo computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Migliori corrispondenze"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Nessun risultato"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive non è in esecuzione"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Avvia Proton Drive per cercare nei tuoi file."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ naviga · ↵ apri · Tab filtra"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Fissato in Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Cerca nel tuo Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Indicizzazione di questo computer ancora in corso: i risultati locali "
"arriveranno a breve."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Prova una ricerca diversa o un altro filtro."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Inizia a digitare per cercare in Proton Drive e nei file di questo computer."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Nessun file fissato"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} file fissato"
msgstr[1] "{n} file fissati"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} su questo computer · indicizzazione…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} su questo computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Apertura di {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Impossibile aprire: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Impossibile raggiungere Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Home / {path}" msgstr "Home / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "ora" msgstr "ora"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} min" msgstr "{count} min"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} h" msgstr "{count} h"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} g" msgstr "{count} g"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} mes." msgstr "{count} mes."
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} a" msgstr "{count} a"
@@ -5964,9 +6007,6 @@ msgstr "impossibile raggiungere il demone di Proton Drive: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Usa l'identità di questo computer" #~ msgstr "Usa l'identità di questo computer"
#~ msgid "On this computer"
#~ msgstr "Su questo computer"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+218 -178
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "Je bent offline" msgstr "Je bent offline"
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Hoofdmenu" msgstr "Hoofdmenu"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -164,23 +164,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Broncode" msgstr "Broncode"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "Privacybeleid van Proton" msgstr "Privacybeleid van Proton"
#: crates/pdfs-gui/src/app/main.rs:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Disclaimer" msgstr "Disclaimer"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -203,7 +203,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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/"
@@ -213,7 +213,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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 "
@@ -223,7 +223,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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -239,15 +239,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Proton Drive stoppen?" msgstr "Proton Drive stoppen?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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."
@@ -255,7 +255,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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -284,30 +284,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Annuleren" msgstr "Annuleren"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Stoppen" msgstr "Stoppen"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -316,38 +316,38 @@ msgstr "Drive doorzoeken"
msgid "Refresh" msgid "Refresh"
msgstr "Verversen" msgstr "Verversen"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Sneltoetsen" msgstr "Sneltoetsen"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Bestanden" msgstr "Bestanden"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Terug / vooruit" msgstr "Terug / vooruit"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Bovenliggende map" msgstr "Bovenliggende map"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Raster / lijst" msgstr "Raster / lijst"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -356,7 +356,7 @@ msgstr "Raster / lijst"
msgid "Rename" msgid "Rename"
msgstr "Hernoemen" msgstr "Hernoemen"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -366,72 +366,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Selectie wissen" msgstr "Selectie wissen"
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Grotere miniaturen" msgstr "Grotere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Kleinere miniaturen" msgstr "Kleinere miniaturen"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Miniatuurgrootte herstellen" msgstr "Miniatuurgrootte herstellen"
#: crates/pdfs-gui/src/app/main.rs:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Alles selecteren" msgstr "Alles selecteren"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Fotoweergave" msgstr "Fotoweergave"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "Vorige / volgende foto" msgstr "Vorige / volgende foto"
#: crates/pdfs-gui/src/app/main.rs:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "Eerste / laatste foto" msgstr "Eerste / laatste foto"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Details tonen" msgstr "Details tonen"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Volledig scherm" msgstr "Volledig scherm"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Sluiten" msgstr "Sluiten"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Niet verbonden" msgstr "Niet verbonden"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Verbinden…" msgstr "Verbinden…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -476,7 +477,7 @@ msgstr "Niets in het recente logboek past bij dit filter."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Opnieuw proberen" msgstr "Opnieuw proberen"
@@ -1235,6 +1236,7 @@ msgstr "De Proton Drive-service reageerde niet."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Openen" msgstr "Openen"
@@ -1425,6 +1427,7 @@ msgstr "Naam"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Grootte" msgstr "Grootte"
@@ -1601,6 +1604,7 @@ msgstr[1] "{n} bestanden zijn nu alleen online"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Gewijzigd" msgstr "Gewijzigd"
@@ -1609,6 +1613,7 @@ msgstr "Gewijzigd"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Locatie" msgstr "Locatie"
@@ -1627,6 +1632,7 @@ msgstr "Afspelen"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Offline beschikbaar" msgstr "Offline beschikbaar"
@@ -2046,7 +2052,6 @@ msgstr "Proton Drive downloaden"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Deze computer" msgstr "Deze computer"
@@ -2538,7 +2543,7 @@ msgid "About Sync Modes"
msgstr "Over synchronisatiemodi" msgstr "Over synchronisatiemodi"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Mappen" msgstr "Mappen"
@@ -3409,7 +3414,7 @@ msgid "Select Photo to Upload"
msgstr "Foto selecteren om te uploaden" msgstr "Foto selecteren om te uploaden"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Afbeeldingen" msgstr "Afbeeldingen"
@@ -4579,7 +4584,7 @@ msgid "Up to date"
msgstr "Bijgewerkt" msgstr "Bijgewerkt"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive draait niet" msgstr "Proton Drive draait niet"
@@ -5120,6 +5125,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Map openen" msgstr "Map openen"
@@ -5501,6 +5507,137 @@ msgstr "(geen vastgezette bestanden — typ om te zoeken)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(kan app-mappen niet bepalen)" msgstr "(kan app-mappen niet bepalen)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Recent"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Vastgezet in Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Beste overeenkomsten"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Proton Drive doorzoeken"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Zoeken in Drive en op deze computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Geen resultaten"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive draait niet"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Start Proton Drive om je bestanden te doorzoeken."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navigeren · ↵ openen · Tab filter"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Je Drive doorzoeken"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Deze computer wordt nog geïndexeerd — lokale resultaten verschijnen zo."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Probeer een andere zoekopdracht of een ander filter."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Begin met typen om Proton Drive en de bestanden op deze computer te "
"doorzoeken."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Geen vastgezette bestanden"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} vastgezet bestand"
msgstr[1] "{n} vastgezette bestanden"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} op deze computer · indexeren…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} op deze computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "{name} openen…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Kon niet openen: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Kon Proton Drive niet bereiken"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Beschikbaarheid"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "In map tonen"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Pad kopiëren"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Pad gekopieerd"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Op deze computer"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Gedownload"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Alleen online"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5654,16 +5791,16 @@ msgid "Quit"
msgstr "Afsluiten" msgstr "Afsluiten"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Alles" msgstr "Alles"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documenten" msgstr "Documenten"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Media" msgstr "Media"
@@ -5672,143 +5809,49 @@ msgstr "Media"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Mijn bestanden / {path}" msgstr "Mijn bestanden / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Proton Drive doorzoeken"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Zoeken in Drive en op deze computer"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Beste overeenkomsten"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Geen resultaten"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive draait niet"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Start Proton Drive om je bestanden te doorzoeken."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navigeren · ↵ openen · Tab filter"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Vastgezet in Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Je Drive doorzoeken"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Deze computer wordt nog geïndexeerd — lokale resultaten verschijnen zo."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Probeer een andere zoekopdracht of een ander filter."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Begin met typen om Proton Drive en de bestanden op deze computer te "
"doorzoeken."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Geen vastgezette bestanden"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} vastgezet bestand"
msgstr[1] "{n} vastgezette bestanden"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} in Drive · {local} op deze computer · indexeren…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} in Drive · {local} op deze computer"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "{name} openen…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Kon niet openen: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Kon Proton Drive niet bereiken"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Persoonlijke map" msgstr "Persoonlijke map"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Persoonlijke map / {path}" msgstr "Persoonlijke map / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "nu" msgstr "nu"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count}m" msgstr "{count}m"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count}u" msgstr "{count}u"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count}d" msgstr "{count}d"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count}mnd" msgstr "{count}mnd"
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count}j" msgstr "{count}j"
@@ -5957,9 +6000,6 @@ msgstr "kan de achtergronddienst van Proton Drive niet bereiken: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Identiteit van deze computer gebruiken" #~ msgstr "Identiteit van deze computer gebruiken"
#~ msgid "On this computer"
#~ msgstr "Op deze computer"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+215 -172
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: proton-drive-linux 2.5.0\n" "Project-Id-Version: proton-drive-linux 2.5.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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -71,91 +71,91 @@ msgstr ""
msgid "My files" msgid "My files"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
msgid "That's not there any more" msgid "That's not there any more"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
msgid "Something changed this first" msgid "Something changed this first"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1241 #: crates/pdfs-gui/src/app/main.rs:1093
msgid "Your Proton Drive is full" msgid "Your Proton Drive is full"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
msgid "About Proton Drive for Linux" msgid "About Proton Drive for Linux"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
msgid "Proton Drive for Linux" msgid "Proton Drive for Linux"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -163,23 +163,23 @@ msgid ""
"AG." "AG."
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
msgid "Proton Terms of Service" msgid "Proton Terms of Service"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1367 #: crates/pdfs-gui/src/app/main.rs:1219
msgid "Proton Privacy Policy" msgid "Proton Privacy Policy"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -192,21 +192,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -217,21 +217,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -260,30 +260,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
msgid "Couldn't stop Proton Drive" msgid "Couldn't stop Proton Drive"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -292,38 +292,38 @@ msgstr ""
msgid "Refresh" msgid "Refresh"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -332,7 +332,7 @@ msgstr ""
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -342,72 +342,73 @@ msgstr ""
msgid "Move to Trash" msgid "Move to Trash"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
msgid "Previous / next photo" msgid "Previous / next photo"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
msgid "Waiting for the Proton Drive service to start." msgid "Waiting for the Proton Drive service to start."
msgstr "" msgstr ""
@@ -452,7 +453,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "" msgstr ""
@@ -1203,6 +1204,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "" msgstr ""
@@ -1393,6 +1395,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "" msgstr ""
@@ -1567,6 +1570,7 @@ msgstr[1] ""
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "" msgstr ""
@@ -1575,6 +1579,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "" msgstr ""
@@ -1593,6 +1598,7 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "" msgstr ""
@@ -2008,7 +2014,6 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "" msgstr ""
@@ -2453,7 +2458,7 @@ msgid "About Sync Modes"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "" msgstr ""
@@ -3289,7 +3294,7 @@ msgid "Select Photo to Upload"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "" msgstr ""
@@ -4414,7 +4419,7 @@ msgid "Up to date"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "" msgstr ""
@@ -4930,6 +4935,7 @@ msgid "Proton Drive"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "" msgstr ""
@@ -5304,6 +5310,134 @@ msgstr ""
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "" msgstr ""
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr ""
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr ""
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr ""
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr ""
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr ""
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr ""
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr ""
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr ""
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "" msgstr ""
@@ -5457,16 +5591,16 @@ msgid "Quit"
msgstr "" msgstr ""
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "" msgstr ""
@@ -5475,140 +5609,49 @@ msgstr ""
msgid "My files / {path}" msgid "My files / {path}"
msgstr "" msgstr ""
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr ""
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr ""
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] ""
msgstr[1] ""
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr ""
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr ""
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr ""
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr ""
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "" msgstr ""
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "" msgstr ""
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "" msgstr ""
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "" msgstr ""
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "" msgstr ""
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "" msgstr ""
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "" msgstr ""
+217 -177
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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 "Moje pliki" msgstr "Moje pliki"
#: crates/pdfs-gui/src/app/main.rs:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
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:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Menu główne" msgstr "Menu główne"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
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 ""
"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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Kod źródłowy" msgstr "Kod źródłowy"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Zastrzeżenia" msgstr "Zastrzeżenia"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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 ""
"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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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 ""
"\">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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 ""
"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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -242,15 +242,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
msgid "Stop Proton Drive?" msgid "Stop Proton Drive?"
msgstr "Zatrzymać Proton Drive?" msgstr "Zatrzymać Proton Drive?"
#: crates/pdfs-gui/src/app/main.rs:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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."
@@ -259,7 +259,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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -288,30 +288,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Zatrzymaj" msgstr "Zatrzymaj"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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 +320,38 @@ msgstr "Przeszukaj Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Odśwież" msgstr "Odśwież"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Skróty klawiszowe" msgstr "Skróty klawiszowe"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Pliki" msgstr "Pliki"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Wstecz/dalej" msgstr "Wstecz/dalej"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Katalog nadrzędny" msgstr "Katalog nadrzędny"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Siatka/lista" msgstr "Siatka/lista"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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 +360,7 @@ msgstr "Siatka/lista"
msgid "Rename" msgid "Rename"
msgstr "Zmień nazwę" msgstr "Zmień nazwę"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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,72 +370,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
msgid "Clear the selection" msgid "Clear the selection"
msgstr "Wyczyść zaznaczenie" msgstr "Wyczyść zaznaczenie"
#: crates/pdfs-gui/src/app/main.rs:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Większe miniatury" msgstr "Większe miniatury"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Mniejsze miniatury" msgstr "Mniejsze miniatury"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
msgid "Reset thumbnail size" msgid "Reset thumbnail size"
msgstr "Przywróć rozmiar miniatur" msgstr "Przywróć rozmiar miniatur"
#: crates/pdfs-gui/src/app/main.rs:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Zaznacz wszystko" msgstr "Zaznacz wszystko"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Przeglądarka zdjęć" msgstr "Przeglądarka zdjęć"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
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:1541 #: crates/pdfs-gui/src/app/main.rs:1393
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:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Wyświetl szczegóły" msgstr "Wyświetl szczegóły"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Pełny ekran" msgstr "Pełny ekran"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Zamknij" msgstr "Zamknij"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Brak połączenia" msgstr "Brak połączenia"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Łączenie…" msgstr "Łączenie…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -480,7 +481,7 @@ msgstr "Nic w ostatnim dzienniku nie pasuje do tego filtru."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Ponów" msgstr "Ponów"
@@ -1268,6 +1269,7 @@ msgstr "Usługa Proton Drive nie odpowiedziała."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Otwórz" msgstr "Otwórz"
@@ -1463,6 +1465,7 @@ msgstr "Nazwa"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Rozmiar" msgstr "Rozmiar"
@@ -1647,6 +1650,7 @@ msgstr[2] "{n} plików jest teraz tylko online"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modyfikacja" msgstr "Modyfikacja"
@@ -1655,6 +1659,7 @@ msgstr "Modyfikacja"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Położenie" msgstr "Położenie"
@@ -1673,6 +1678,7 @@ msgstr "Odtwórz"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Dostępne offline" msgstr "Dostępne offline"
@@ -2100,7 +2106,6 @@ msgstr "Pobierz Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Ten komputer" msgstr "Ten komputer"
@@ -2595,7 +2600,7 @@ msgid "About Sync Modes"
msgstr "Informacje o trybach synchronizacji" msgstr "Informacje o trybach synchronizacji"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Katalogi" msgstr "Katalogi"
@@ -3471,7 +3476,7 @@ msgid "Select Photo to Upload"
msgstr "Wybór zdjęcia do wysłania" msgstr "Wybór zdjęcia do wysłania"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Obrazy" msgstr "Obrazy"
@@ -4654,7 +4659,7 @@ msgid "Up to date"
msgstr "Aktualne" msgstr "Aktualne"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "Proton Drive nie jest uruchomiony" msgstr "Proton Drive nie jest uruchomiony"
@@ -5208,6 +5213,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Otwórz katalog" msgstr "Otwórz katalog"
@@ -5591,6 +5597,136 @@ msgstr "(brak przypiętych plików — zacznij pisać, aby wyszukać)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(nie można ustalić katalogów aplikacji)" msgstr "(nie można ustalić katalogów aplikacji)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Ostatnie"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Przypięte w Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Najlepsze wyniki"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Przeszukaj Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Wyszukiwanie w Drive i na tym komputerze"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Brak wyników"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "Proton Drive nie jest uruchomiony"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Uruchom Proton Drive, aby przeszukać pliki."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ nawigacja · ↵ otwarcie · Tab filtr"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Przeszukaj Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr "Trwa indeksowanie tego komputera — lokalne wyniki wkrótce się pojawią."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Można spróbować innego wyszukiwania lub innego filtru."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Można zacząć pisać, aby przeszukać Proton Drive i pliki na tym komputerze."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Brak przypiętych plików"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} przypięty plik"
msgstr[1] "{n} przypięte pliki"
msgstr[2] "{n} przypiętych plików"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} w Drive · {local} na tym komputerze · indeksowanie…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} w Drive · {local} na tym komputerze"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Otwieranie {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Nie można otworzyć: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Nie można połączyć się z Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Dostępność"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Pokaż w katalogu"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Skopiuj ścieżkę"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Skopiowano ścieżkę"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Na tym komputerze"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Pobrane"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Tylko online"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosowo" msgstr "Kosowo"
@@ -5754,16 +5890,16 @@ msgid "Quit"
msgstr "Zakończ" msgstr "Zakończ"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Wszystko" msgstr "Wszystko"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Dokumenty" msgstr "Dokumenty"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Multimedia" msgstr "Multimedia"
@@ -5772,142 +5908,49 @@ msgstr "Multimedia"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Moje pliki / {path}" msgstr "Moje pliki / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Przeszukaj Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Wyszukiwanie w Drive i na tym komputerze"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Najlepsze wyniki"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Brak wyników"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "Proton Drive nie jest uruchomiony"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Uruchom Proton Drive, aby przeszukać pliki."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ nawigacja · ↵ otwarcie · Tab filtr"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Przypięte w Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Przeszukaj Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr "Trwa indeksowanie tego komputera — lokalne wyniki wkrótce się pojawią."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Można spróbować innego wyszukiwania lub innego filtru."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Można zacząć pisać, aby przeszukać Proton Drive i pliki na tym komputerze."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Brak przypiętych plików"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} przypięty plik"
msgstr[1] "{n} przypięte pliki"
msgstr[2] "{n} przypiętych plików"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} w Drive · {local} na tym komputerze · indeksowanie…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} w Drive · {local} na tym komputerze"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Otwieranie {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Nie można otworzyć: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Nie można połączyć się z Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Katalog domowy" msgstr "Katalog domowy"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Katalog domowy / {path}" msgstr "Katalog domowy / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "teraz" msgstr "teraz"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} min" msgstr "{count} min"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} godz." msgstr "{count} godz."
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} dn." msgstr "{count} dn."
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} mies." msgstr "{count} mies."
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} r." msgstr "{count} r."
@@ -6057,9 +6100,6 @@ msgstr "nie można połączyć się z usługą Proton Drive: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Użycie tożsamości tego komputera" #~ msgstr "Użycie tożsamości tego komputera"
#~ msgid "On this computer"
#~ msgstr "Na tym komputerze"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "
+218 -178
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-09-28 16:17+0200\n" "POT-Creation-Date: 2026-09-28 22:51+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:882 #: crates/pdfs-gui/src/app/main.rs:734
#: crates/pdfs-gui/src/app/pages/activity_text.rs:466 #: crates/pdfs-gui/src/app/pages/activity_text.rs:466
#: 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
@@ -68,91 +68,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:885 crates/pdfs-gui/src/app/main.rs:1529 #: crates/pdfs-gui/src/app/main.rs:737 crates/pdfs-gui/src/app/main.rs:1381
#: 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:890 #: crates/pdfs-gui/src/app/main.rs:742
#: 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:895 #: crates/pdfs-gui/src/app/main.rs:747
#: 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:898 #: crates/pdfs-gui/src/app/main.rs:750
#: 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:899 #: crates/pdfs-gui/src/app/main.rs:751
#: 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:901 #: crates/pdfs-gui/src/app/main.rs:753
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:1218 #: crates/pdfs-gui/src/app/main.rs:1070
#, rust-format #, rust-format
msgid "{what}: {detail}" msgid "{what}: {detail}"
msgstr "{what}: {detail}" msgstr "{what}: {detail}"
#: crates/pdfs-gui/src/app/main.rs:1237 #: crates/pdfs-gui/src/app/main.rs:1089
msgid "You're offline" msgid "You're offline"
msgstr "Você está offline" msgstr "Você está offline"
#: crates/pdfs-gui/src/app/main.rs:1238 #: crates/pdfs-gui/src/app/main.rs:1090
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:1239 #: crates/pdfs-gui/src/app/main.rs:1091
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:1240 #: crates/pdfs-gui/src/app/main.rs:1092
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:1241 #: crates/pdfs-gui/src/app/main.rs:1093
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:1282 crates/pdfs-gui/src/app/main.rs:1511 #: crates/pdfs-gui/src/app/main.rs:1134 crates/pdfs-gui/src/app/main.rs:1363
#: 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:1283 #: crates/pdfs-gui/src/app/main.rs:1135
#: 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:1285 #: crates/pdfs-gui/src/app/main.rs:1137
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:1290 #: crates/pdfs-gui/src/app/main.rs:1142
msgid "Main menu" msgid "Main menu"
msgstr "Menu principal" msgstr "Menu principal"
#: crates/pdfs-gui/src/app/main.rs:1346 #: crates/pdfs-gui/src/app/main.rs:1198
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:1354 #: crates/pdfs-gui/src/app/main.rs:1206
msgid "" msgid ""
"Files-on-demand Proton Drive for the Linux desktop.\n" "Files-on-demand Proton Drive for the Linux desktop.\n"
"\n" "\n"
@@ -163,23 +163,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:1359 #: crates/pdfs-gui/src/app/main.rs:1211
msgid "Source Code" msgid "Source Code"
msgstr "Código-fonte" msgstr "Código-fonte"
#: crates/pdfs-gui/src/app/main.rs:1363 #: crates/pdfs-gui/src/app/main.rs:1215
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:1367 #: crates/pdfs-gui/src/app/main.rs:1219
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:1372 #: crates/pdfs-gui/src/app/main.rs:1224
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso legal" msgstr "Aviso legal"
#: crates/pdfs-gui/src/app/main.rs:1376 #: crates/pdfs-gui/src/app/main.rs:1228
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"
@@ -202,7 +202,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:1384 #: crates/pdfs-gui/src/app/main.rs:1236
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/"
@@ -212,7 +212,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:1392 #: crates/pdfs-gui/src/app/main.rs:1244
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 "
@@ -222,7 +222,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:1400 #: crates/pdfs-gui/src/app/main.rs:1252
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/"
@@ -238,15 +238,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:1411 #: crates/pdfs-gui/src/app/main.rs:1263
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:1449 #: crates/pdfs-gui/src/app/main.rs:1301
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:1450 #: crates/pdfs-gui/src/app/main.rs:1302
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."
@@ -254,7 +254,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:1452 crates/pdfs-gui/src/app/main.rs:1727 #: crates/pdfs-gui/src/app/main.rs:1304 crates/pdfs-gui/src/app/main.rs:1579
#: 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
@@ -283,30 +283,30 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: crates/pdfs-gui/src/app/main.rs:1453 #: crates/pdfs-gui/src/app/main.rs:1305
msgctxt "verb" msgctxt "verb"
msgid "Stop" msgid "Stop"
msgstr "Parar" msgstr "Parar"
#: crates/pdfs-gui/src/app/main.rs:1470 #: crates/pdfs-gui/src/app/main.rs:1322
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:1471 #: crates/pdfs-gui/src/app/main.rs:1323
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:1507 #: crates/pdfs-gui/src/app/main.rs:1359
#: 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:1509 #: crates/pdfs-gui/src/app/main.rs:1361
#: 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:1510 #: crates/pdfs-gui/src/app/main.rs:1362
#: 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
@@ -315,38 +315,38 @@ msgstr "Pesquisar no Drive"
msgid "Refresh" msgid "Refresh"
msgstr "Atualizar" msgstr "Atualizar"
#: crates/pdfs-gui/src/app/main.rs:1512 #: crates/pdfs-gui/src/app/main.rs:1364
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Atalhos de teclado" msgstr "Atalhos de teclado"
#: crates/pdfs-gui/src/app/main.rs:1516 #: crates/pdfs-gui/src/app/main.rs:1368
msgid "Files" msgid "Files"
msgstr "Arquivos" msgstr "Arquivos"
#: crates/pdfs-gui/src/app/main.rs:1518 #: crates/pdfs-gui/src/app/main.rs:1370
#: 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:1519 #: crates/pdfs-gui/src/app/main.rs:1371
#: 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:1520 #: crates/pdfs-gui/src/app/main.rs:1372
msgid "Back / forward" msgid "Back / forward"
msgstr "Voltar / avançar" msgstr "Voltar / avançar"
#: crates/pdfs-gui/src/app/main.rs:1521 #: crates/pdfs-gui/src/app/main.rs:1373
#: crates/pdfs-gui/src/app/pages/browser.rs:1939 #: crates/pdfs-gui/src/app/pages/browser.rs:1939
msgid "Parent folder" msgid "Parent folder"
msgstr "Pasta superior" msgstr "Pasta superior"
#: crates/pdfs-gui/src/app/main.rs:1522 #: crates/pdfs-gui/src/app/main.rs:1374
msgid "Grid / list" msgid "Grid / list"
msgstr "Grade / lista" msgstr "Grade / lista"
#: crates/pdfs-gui/src/app/main.rs:1523 #: crates/pdfs-gui/src/app/main.rs:1375
#: 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
@@ -355,7 +355,7 @@ msgstr "Grade / lista"
msgid "Rename" msgid "Rename"
msgstr "Renomear" msgstr "Renomear"
#: crates/pdfs-gui/src/app/main.rs:1524 crates/pdfs-gui/src/app/main.rs:1544 #: crates/pdfs-gui/src/app/main.rs:1376 crates/pdfs-gui/src/app/main.rs:1396
#: 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
@@ -365,72 +365,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:1525 #: crates/pdfs-gui/src/app/main.rs:1377
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:1531 #: crates/pdfs-gui/src/app/main.rs:1383
msgid "Larger thumbnails" msgid "Larger thumbnails"
msgstr "Miniaturas maiores" msgstr "Miniaturas maiores"
#: crates/pdfs-gui/src/app/main.rs:1532 #: crates/pdfs-gui/src/app/main.rs:1384
msgid "Smaller thumbnails" msgid "Smaller thumbnails"
msgstr "Miniaturas menores" msgstr "Miniaturas menores"
#: crates/pdfs-gui/src/app/main.rs:1533 #: crates/pdfs-gui/src/app/main.rs:1385
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:1534 #: crates/pdfs-gui/src/app/main.rs:1386
msgid "Select all" msgid "Select all"
msgstr "Selecionar tudo" msgstr "Selecionar tudo"
#: crates/pdfs-gui/src/app/main.rs:1538 #: crates/pdfs-gui/src/app/main.rs:1390
msgid "Photo Viewer" msgid "Photo Viewer"
msgstr "Visualizador de fotos" msgstr "Visualizador de fotos"
#: crates/pdfs-gui/src/app/main.rs:1540 #: crates/pdfs-gui/src/app/main.rs:1392
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:1541 #: crates/pdfs-gui/src/app/main.rs:1393
msgid "First / last photo" msgid "First / last photo"
msgstr "Primeira / última foto" msgstr "Primeira / última foto"
#: crates/pdfs-gui/src/app/main.rs:1542 #: crates/pdfs-gui/src/app/main.rs:1394
msgid "Show details" msgid "Show details"
msgstr "Mostrar detalhes" msgstr "Mostrar detalhes"
#: crates/pdfs-gui/src/app/main.rs:1543 #: crates/pdfs-gui/src/app/main.rs:1395
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Tela cheia" msgstr "Tela cheia"
#: crates/pdfs-gui/src/app/main.rs:1545 #: crates/pdfs-gui/src/app/main.rs:1397
msgid "Close" msgid "Close"
msgstr "Fechar" msgstr "Fechar"
#: crates/pdfs-gui/src/app/main.rs:1635 #: crates/pdfs-gui/src/app/main.rs:1487
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:1795 #: crates/pdfs-gui/src/app/main.rs:1647
#: 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:1366 #: crates/pdfs-gui/src/app/pages/status.rs:1366
msgid "Not connected" msgid "Not connected"
msgstr "Não conectado" msgstr "Não conectado"
#: crates/pdfs-gui/src/app/main.rs:1796 #: crates/pdfs-gui/src/app/main.rs:1648
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:1804 #: crates/pdfs-gui/src/app/main.rs:1656
#: crates/pdfs-gui/src/app/pages/status.rs:336 crates/pdfs-gui/src/main.rs:444 #: crates/pdfs-gui/src/app/pages/status.rs:336
#: crates/pdfs-gui/src/prompt.rs:616 crates/pdfs-gui/src/prompt.rs:867 #: crates/pdfs-gui/src/hud/mod.rs:274 crates/pdfs-gui/src/hud/mod.rs:589
#: crates/pdfs-gui/src/main.rs:444
msgid "Connecting…" msgid "Connecting…"
msgstr "Conectando…" msgstr "Conectando…"
#: crates/pdfs-gui/src/app/main.rs:1805 #: crates/pdfs-gui/src/app/main.rs:1657
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."
@@ -475,7 +476,7 @@ msgstr "Nada no registro recente corresponde a este filtro."
#: crates/pdfs-gui/src/app/pages/photos.rs:465 #: crates/pdfs-gui/src/app/pages/photos.rs:465
#: crates/pdfs-gui/src/app/pages/shared.rs:183 #: crates/pdfs-gui/src/app/pages/shared.rs:183
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:94
#: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/prompt.rs:595 #: crates/pdfs-gui/src/app/pages/trash.rs:53 crates/pdfs-gui/src/hud/mod.rs:245
msgid "Retry" msgid "Retry"
msgstr "Tentar novamente" msgstr "Tentar novamente"
@@ -1234,6 +1235,7 @@ msgstr "O serviço do Proton Drive não respondeu."
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:474
#: crates/pdfs-gui/src/app/widgets/details.rs:155 #: crates/pdfs-gui/src/app/widgets/details.rs:155
#: crates/pdfs-gui/src/app/widgets/details.rs:395 #: crates/pdfs-gui/src/app/widgets/details.rs:395
#: crates/pdfs-gui/src/hud/preview.rs:265
msgctxt "verb" msgctxt "verb"
msgid "Open" msgid "Open"
msgstr "Abrir" msgstr "Abrir"
@@ -1424,6 +1426,7 @@ msgstr "Nome"
#: crates/pdfs-gui/src/app/pages/shared.rs:273 #: crates/pdfs-gui/src/app/pages/shared.rs:273
#: crates/pdfs-gui/src/app/pages/trash.rs:153 #: crates/pdfs-gui/src/app/pages/trash.rs:153
#: crates/pdfs-gui/src/app/widgets/details.rs:88 #: crates/pdfs-gui/src/app/widgets/details.rs:88
#: crates/pdfs-gui/src/hud/preview.rs:133
msgctxt "column" msgctxt "column"
msgid "Size" msgid "Size"
msgstr "Tamanho" msgstr "Tamanho"
@@ -1598,6 +1601,7 @@ msgstr[1] "{n} arquivos agora estão somente online"
#: crates/pdfs-gui/src/app/pages/browser.rs:803 #: crates/pdfs-gui/src/app/pages/browser.rs:803
#: crates/pdfs-gui/src/app/pages/devices.rs:175 #: crates/pdfs-gui/src/app/pages/devices.rs:175
#: crates/pdfs-gui/src/app/widgets/details.rs:93 #: crates/pdfs-gui/src/app/widgets/details.rs:93
#: crates/pdfs-gui/src/hud/preview.rs:134
msgctxt "column" msgctxt "column"
msgid "Modified" msgid "Modified"
msgstr "Modificado" msgstr "Modificado"
@@ -1606,6 +1610,7 @@ msgstr "Modificado"
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154 #: crates/pdfs-gui/src/app/pages/shared_by_me.rs:154
#: crates/pdfs-gui/src/app/pages/status.rs:192 #: crates/pdfs-gui/src/app/pages/status.rs:192
#: crates/pdfs-gui/src/app/widgets/details.rs:98 #: crates/pdfs-gui/src/app/widgets/details.rs:98
#: crates/pdfs-gui/src/hud/preview.rs:135
msgid "Location" msgid "Location"
msgstr "Local" msgstr "Local"
@@ -1624,6 +1629,7 @@ msgstr "Reproduzir"
#: crates/pdfs-gui/src/app/pages/browser.rs:916 #: crates/pdfs-gui/src/app/pages/browser.rs:916
#: crates/pdfs-gui/src/app/pages/status.rs:311 #: crates/pdfs-gui/src/app/pages/status.rs:311
#: crates/pdfs-gui/src/app/widgets/details.rs:111 #: crates/pdfs-gui/src/app/widgets/details.rs:111
#: crates/pdfs-gui/src/hud/preview.rs:296
msgid "Available offline" msgid "Available offline"
msgstr "Disponível offline" msgstr "Disponível offline"
@@ -2043,7 +2049,6 @@ msgstr "Baixar o Proton Drive"
#: crates/pdfs-gui/src/app/pages/devices.rs:391 #: crates/pdfs-gui/src/app/pages/devices.rs:391
#: crates/pdfs-gui/src/app/pages/devices.rs:397 #: crates/pdfs-gui/src/app/pages/devices.rs:397
#: crates/pdfs-gui/src/prompt.rs:568
msgid "This computer" msgid "This computer"
msgstr "Este computador" msgstr "Este computador"
@@ -2531,7 +2536,7 @@ msgid "About Sync Modes"
msgstr "Sobre os modos de sincronização" msgstr "Sobre os modos de sincronização"
#: crates/pdfs-gui/src/app/pages/locations.rs:178 #: crates/pdfs-gui/src/app/pages/locations.rs:178
#: crates/pdfs-gui/src/prompt.rs:60 #: crates/pdfs-gui/src/prompt.rs:65
msgid "Folders" msgid "Folders"
msgstr "Pastas" msgstr "Pastas"
@@ -3401,7 +3406,7 @@ msgid "Select Photo to Upload"
msgstr "Selecione a foto a enviar" msgstr "Selecione a foto a enviar"
#: crates/pdfs-gui/src/app/pages/photos.rs:1350 #: crates/pdfs-gui/src/app/pages/photos.rs:1350
#: crates/pdfs-gui/src/prompt.rs:62 #: crates/pdfs-gui/src/prompt.rs:67
msgid "Images" msgid "Images"
msgstr "Imagens" msgstr "Imagens"
@@ -4563,7 +4568,7 @@ msgid "Up to date"
msgstr "Atualizado" msgstr "Atualizado"
#: crates/pdfs-gui/src/app/pages/status.rs:1367 #: crates/pdfs-gui/src/app/pages/status.rs:1367
#: crates/pdfs-gui/src/prompt.rs:880 crates/pdfs-gui/src/prompt.rs:893 #: crates/pdfs-gui/src/hud/mod.rs:602 crates/pdfs-gui/src/hud/mod.rs:616
msgid "Proton Drive isn't running" msgid "Proton Drive isn't running"
msgstr "O Proton Drive não está em execução" msgstr "O Proton Drive não está em execução"
@@ -5106,6 +5111,7 @@ msgid "Proton Drive"
msgstr "Proton Drive" msgstr "Proton Drive"
#: crates/pdfs-gui/src/app/widgets/details.rs:393 #: crates/pdfs-gui/src/app/widgets/details.rs:393
#: crates/pdfs-gui/src/hud/preview.rs:263
msgid "Open folder" msgid "Open folder"
msgstr "Abrir pasta" msgstr "Abrir pasta"
@@ -5488,6 +5494,137 @@ msgstr "(nenhum arquivo fixado — digite para pesquisar)"
msgid "(cannot resolve app dirs)" msgid "(cannot resolve app dirs)"
msgstr "(não foi possível resolver os diretórios do aplicativo)" msgstr "(não foi possível resolver os diretórios do aplicativo)"
#. Translators: the launcher's section of recently opened files.
#: crates/pdfs-gui/src/hud/mod.rs:57
msgid "Recent"
msgstr "Recentes"
#: crates/pdfs-gui/src/hud/mod.rs:58
msgid "Pinned in Proton Drive"
msgstr "Fixado no Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:59
msgid "Best matches"
msgstr "Melhores correspondências"
#: crates/pdfs-gui/src/hud/mod.rs:159
msgid "Search Proton Drive"
msgstr "Pesquisar no Proton Drive"
#: crates/pdfs-gui/src/hud/mod.rs:180
msgid "Search in Drive and on this computer"
msgstr "Pesquisar no Drive e neste computador"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/hud/mod.rs:191
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/hud/mod.rs:232 crates/pdfs-gui/src/hud/mod.rs:862
msgid "No results"
msgstr "Nenhum resultado"
#: crates/pdfs-gui/src/hud/mod.rs:240
msgid "Proton Drive is not running"
msgstr "O Proton Drive não está em execução"
#: crates/pdfs-gui/src/hud/mod.rs:241
msgid "Start Proton Drive to search your files."
msgstr "Inicie o Proton Drive para pesquisar seus arquivos."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/hud/mod.rs:282
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navegar · ↵ abrir · Tab filtrar"
#: crates/pdfs-gui/src/hud/mod.rs:864
msgid "Search your Drive"
msgstr "Pesquisar no seu Drive"
#: crates/pdfs-gui/src/hud/mod.rs:869
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Ainda indexando este computador — os resultados locais aparecerão em breve."
#: crates/pdfs-gui/src/hud/mod.rs:871
msgid "Try a different search, or another filter."
msgstr "Tente uma pesquisa diferente ou outro filtro."
#: crates/pdfs-gui/src/hud/mod.rs:873
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Comece a digitar para pesquisar no Proton Drive e nos arquivos deste "
"computador."
#: crates/pdfs-gui/src/hud/mod.rs:900
msgid "No pinned files"
msgstr "Nenhum arquivo fixado"
#: crates/pdfs-gui/src/hud/mod.rs:901
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} arquivo fixado"
msgstr[1] "{n} arquivos fixados"
#: crates/pdfs-gui/src/hud/mod.rs:914
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} no Drive · {local} neste computador · indexando…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/hud/mod.rs:919
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} no Drive · {local} neste computador"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/hud/mod.rs:1050
#, rust-format
msgid "Opening {name}…"
msgstr "Abrindo {name}…"
#: crates/pdfs-gui/src/hud/mod.rs:1090
#, rust-format
msgid "Could not open: {message}"
msgstr "Não foi possível abrir: {message}"
#: crates/pdfs-gui/src/hud/mod.rs:1094
msgid "Couldn't reach Proton Drive"
msgstr "Não foi possível acessar o Proton Drive"
#. Translators: a heading in the launcher's preview pane, followed by
#. "Available offline", "Downloaded", "Online only" or "On this computer".
#: crates/pdfs-gui/src/hud/preview.rs:138
msgid "Availability"
msgstr "Disponibilidade"
#: crates/pdfs-gui/src/hud/preview.rs:157
msgid "Show in Folder"
msgstr "Mostrar na pasta"
#: crates/pdfs-gui/src/hud/preview.rs:160
msgid "Copy Path"
msgstr "Copiar caminho"
#: crates/pdfs-gui/src/hud/preview.rs:166
msgid "Path copied"
msgstr "Caminho copiado"
#: crates/pdfs-gui/src/hud/preview.rs:291
msgid "On this computer"
msgstr "Neste computador"
#: crates/pdfs-gui/src/hud/preview.rs:303
msgctxt "file state"
msgid "Downloaded"
msgstr "Baixado"
#: crates/pdfs-gui/src/hud/preview.rs:308
msgctxt "file state"
msgid "Online only"
msgstr "Somente online"
#: crates/pdfs-gui/src/i18n.rs:84 #: crates/pdfs-gui/src/i18n.rs:84
msgid "Kosovo" msgid "Kosovo"
msgstr "Kosovo" msgstr "Kosovo"
@@ -5641,16 +5778,16 @@ msgid "Quit"
msgstr "Sair" msgstr "Sair"
#. Translators: a filter chip that shows every kind of result. #. Translators: a filter chip that shows every kind of result.
#: crates/pdfs-gui/src/prompt.rs:59 #: crates/pdfs-gui/src/prompt.rs:64
msgid "All" msgid "All"
msgstr "Tudo" msgstr "Tudo"
#: crates/pdfs-gui/src/prompt.rs:61 #: crates/pdfs-gui/src/prompt.rs:66
msgid "Documents" msgid "Documents"
msgstr "Documentos" msgstr "Documentos"
#. Translators: a filter chip for audio and video files. #. Translators: a filter chip for audio and video files.
#: crates/pdfs-gui/src/prompt.rs:64 #: crates/pdfs-gui/src/prompt.rs:69
msgid "Media" msgid "Media"
msgstr "Mídia" msgstr "Mídia"
@@ -5659,143 +5796,49 @@ msgstr "Mídia"
msgid "My files / {path}" msgid "My files / {path}"
msgstr "Meus arquivos / {path}" msgstr "Meus arquivos / {path}"
#: crates/pdfs-gui/src/prompt.rs:520
msgid "Search Proton Drive"
msgstr "Pesquisar no Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:541
msgid "Search in Drive and on this computer"
msgstr "Pesquisar no Drive e neste computador"
#. Translators: the Escape key, shown as a hint that it closes the window.
#: crates/pdfs-gui/src/prompt.rs:552
msgid "Esc"
msgstr "Esc"
#: crates/pdfs-gui/src/prompt.rs:566 crates/pdfs-gui/src/prompt.rs:1085
msgid "Best matches"
msgstr "Melhores correspondências"
#: crates/pdfs-gui/src/prompt.rs:582 crates/pdfs-gui/src/prompt.rs:1109
msgid "No results"
msgstr "Nenhum resultado"
#: crates/pdfs-gui/src/prompt.rs:590
msgid "Proton Drive is not running"
msgstr "O Proton Drive não está em execução"
#: crates/pdfs-gui/src/prompt.rs:591
msgid "Start Proton Drive to search your files."
msgstr "Inicie o Proton Drive para pesquisar seus arquivos."
#. Translators: keyboard hints in the footer; keep the arrow and Enter symbols.
#: crates/pdfs-gui/src/prompt.rs:624
msgid "↑↓ navigate · ↵ open · Tab filter"
msgstr "↑↓ navegar · ↵ abrir · Tab filtrar"
#: crates/pdfs-gui/src/prompt.rs:1096
msgid "Pinned in Proton Drive"
msgstr "Fixado no Proton Drive"
#: crates/pdfs-gui/src/prompt.rs:1111
msgid "Search your Drive"
msgstr "Pesquisar no seu Drive"
#: crates/pdfs-gui/src/prompt.rs:1116
msgid "Still indexing this computer — local results will fill in shortly."
msgstr ""
"Ainda indexando este computador — os resultados locais aparecerão em breve."
#: crates/pdfs-gui/src/prompt.rs:1118
msgid "Try a different search, or another filter."
msgstr "Tente uma pesquisa diferente ou outro filtro."
#: crates/pdfs-gui/src/prompt.rs:1120
msgid "Start typing to search Proton Drive and the files on this computer."
msgstr ""
"Comece a digitar para pesquisar no Proton Drive e nos arquivos deste "
"computador."
#: crates/pdfs-gui/src/prompt.rs:1146
msgid "No pinned files"
msgstr "Nenhum arquivo fixado"
#: crates/pdfs-gui/src/prompt.rs:1147
#, rust-format
msgid "{n} pinned file"
msgid_plural "{n} pinned files"
msgstr[0] "{n} arquivo fixado"
msgstr[1] "{n} arquivos fixados"
#: crates/pdfs-gui/src/prompt.rs:1156
#, rust-format
msgid "{drive} in Drive · {local} on this computer · indexing…"
msgstr "{drive} no Drive · {local} neste computador · indexando…"
#. Translators: result counts in the footer; {drive} and {local} are numbers.
#: crates/pdfs-gui/src/prompt.rs:1161
#, rust-format
msgid "{drive} in Drive · {local} on this computer"
msgstr "{drive} no Drive · {local} neste computador"
#. Translators: {name} is a file name.
#: crates/pdfs-gui/src/prompt.rs:1294
#, rust-format
msgid "Opening {name}…"
msgstr "Abrindo {name}…"
#: crates/pdfs-gui/src/prompt.rs:1317
#, rust-format
msgid "Could not open: {message}"
msgstr "Não foi possível abrir: {message}"
#: crates/pdfs-gui/src/prompt.rs:1321
msgid "Couldn't reach Proton Drive"
msgstr "Não foi possível acessar o Proton Drive"
#. Translators: the user's home folder, as the location of a result. #. Translators: the user's home folder, as the location of a result.
#: crates/pdfs-gui/src/prompt.rs:1430 #: crates/pdfs-gui/src/prompt.rs:455
msgid "Home" msgid "Home"
msgstr "Pasta pessoal" msgstr "Pasta pessoal"
#. Translators: {path} is a folder path inside the home folder, folder names separated by " / ". #. Translators: {path} is a folder path inside the home folder, folder names separated by " / ".
#: crates/pdfs-gui/src/prompt.rs:1432 #: crates/pdfs-gui/src/prompt.rs:457
#, rust-format #, rust-format
msgid "Home / {path}" msgid "Home / {path}"
msgstr "Pasta pessoal / {path}" msgstr "Pasta pessoal / {path}"
#. Translators: the age of a file modified under a minute ago. #. Translators: the age of a file modified under a minute ago.
#: crates/pdfs-gui/src/prompt.rs:1452 #: crates/pdfs-gui/src/prompt.rs:477
msgctxt "age" msgctxt "age"
msgid "now" msgid "now"
msgstr "agora" msgstr "agora"
#. Translators: a compact file age; {count} is a number of minutes. #. Translators: a compact file age; {count} is a number of minutes.
#: crates/pdfs-gui/src/prompt.rs:1454 #: crates/pdfs-gui/src/prompt.rs:479
#, rust-format #, rust-format
msgid "{count}m" msgid "{count}m"
msgstr "{count} min" msgstr "{count} min"
#. Translators: a compact file age; {count} is a number of hours. #. Translators: a compact file age; {count} is a number of hours.
#: crates/pdfs-gui/src/prompt.rs:1456 #: crates/pdfs-gui/src/prompt.rs:481
#, rust-format #, rust-format
msgid "{count}h" msgid "{count}h"
msgstr "{count} h" msgstr "{count} h"
#. Translators: a compact file age; {count} is a number of days. #. Translators: a compact file age; {count} is a number of days.
#: crates/pdfs-gui/src/prompt.rs:1458 #: crates/pdfs-gui/src/prompt.rs:483
#, rust-format #, rust-format
msgid "{count}d" msgid "{count}d"
msgstr "{count} d" msgstr "{count} d"
#. Translators: a compact file age; {count} is a number of months. #. Translators: a compact file age; {count} is a number of months.
#: crates/pdfs-gui/src/prompt.rs:1460 #: crates/pdfs-gui/src/prompt.rs:485
#, rust-format #, rust-format
msgid "{count}mo" msgid "{count}mo"
msgstr "{count} m" msgstr "{count} m"
#. Translators: a compact file age; {count} is a number of years. #. Translators: a compact file age; {count} is a number of years.
#: crates/pdfs-gui/src/prompt.rs:1462 #: crates/pdfs-gui/src/prompt.rs:487
#, rust-format #, rust-format
msgid "{count}y" msgid "{count}y"
msgstr "{count} a" msgstr "{count} a"
@@ -5944,9 +5987,6 @@ msgstr "não foi possível acessar o daemon do Proton Drive: {error}"
#~ msgid "Use this computer's identity" #~ msgid "Use this computer's identity"
#~ msgstr "Usar a identidade deste computador" #~ msgstr "Usar a identidade deste computador"
#~ msgid "On this computer"
#~ msgstr "Neste computador"
#~ msgid "" #~ msgid ""
#~ "Where Proton Drive lives on this machine. Synced folders keep a full copy " #~ "Where Proton Drive lives on this machine. Synced folders keep a full copy "
#~ "on this disk; on-demand folders keep the files in Proton Drive only and " #~ "on this disk; on-demand folders keep the files in Proton Drive only and "