mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
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:
1 parent
7099106802
commit
7a087b8827
22 files changed
+5310
-2929
No files matched your search
@@ -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>
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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: >k4::CssProvider) {
|
|
||||||
fn set_enum(provider: >k4::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: >k4::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) {
|
||||||
|
|||||||
@@ -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<<b>b</b>>&c");
|
||||||
|
assert_eq!(markup("R&D.pdf", "r&d"), "<b>R&D</b>.pdf");
|
||||||
|
assert_eq!(markup("<none>", "zzz"), "<none>");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
@@ -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: >k4::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(>k4::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(©);
|
||||||
|
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"),
|
||||||
|
)),
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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: >k4::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: >k4::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(>k4::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);
|
||||||
|
}
|
||||||
@@ -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: >k4::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: >k4::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())
|
||||||
|
}
|
||||||
+77
-1183
File diff suppressed because it is too large.
Load diff
@@ -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: >k4::CssProvider) {
|
||||||
|
fn set_enum(provider: >k4::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: >k4::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;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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 "
|
||||||
|
|||||||
@@ -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 "
|
||||||
|
|||||||
@@ -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 "
|
||||||
|
|||||||
@@ -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 "
|
||||||
|
|||||||
@@ -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
@@ -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 ""
|
||||||
|
|||||||
@@ -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
@@ -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 "
|
||||||
|
|||||||
Reference in new issue
Block a user