Replace hand-rolled i18n with Fluent.

This commit is contained in:
2026-07-18 14:34:40 +02:00
parent 16a210c0ad
commit 2e35afc731
24 changed files with 2338 additions and 2187 deletions

84
Cargo.lock generated
View File

@@ -799,6 +799,7 @@ dependencies = [
"axum",
"chrono",
"deunicode",
"fluent-bundle",
"image 0.25.10",
"keyring",
"liquid",
@@ -2205,6 +2206,41 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
[[package]]
name = "fluent-bundle"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4"
dependencies = [
"fluent-langneg",
"fluent-syntax",
"intl-memoizer",
"intl_pluralrules",
"rustc-hash 2.1.2",
"self_cell",
"smallvec",
"unic-langid",
]
[[package]]
name = "fluent-langneg"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0"
dependencies = [
"unic-langid",
]
[[package]]
name = "fluent-syntax"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198"
dependencies = [
"memchr",
"thiserror 2.0.18",
]
[[package]]
name = "fnv"
version = "1.0.7"
@@ -3537,6 +3573,25 @@ dependencies = [
"syn 2.0.117",
]
[[package]]
name = "intl-memoizer"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f"
dependencies = [
"type-map",
"unic-langid",
]
[[package]]
name = "intl_pluralrules"
version = "7.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
dependencies = [
"unic-langid",
]
[[package]]
name = "ipnet"
version = "2.12.0"
@@ -7218,6 +7273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
dependencies = [
"displaydoc",
"serde_core",
"zerovec",
]
@@ -7490,6 +7546,15 @@ dependencies = [
"toml 0.5.11",
]
[[package]]
name = "type-map"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90"
dependencies = [
"rustc-hash 2.1.2",
]
[[package]]
name = "typed-builder"
version = "0.23.2"
@@ -7533,6 +7598,24 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "unic-langid"
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05"
dependencies = [
"unic-langid-impl",
]
[[package]]
name = "unic-langid-impl"
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658"
dependencies = [
"tinystr",
]
[[package]]
name = "unicase"
version = "2.9.0"
@@ -9370,6 +9453,7 @@ version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
dependencies = [
"serde",
"yoke",
"zerofrom",
"zerovec-derive",

View File

@@ -32,6 +32,7 @@ walkdir = "2"
image = "0.25"
rust-stemmers = "1"
sys-locale = "0.3"
fluent-bundle = "0.16"
dirs = "5"
open = "5"
pulldown-cmark = "0.13"

View File

@@ -19,6 +19,7 @@ walkdir = { workspace = true }
image = { workspace = true }
rust-stemmers = { workspace = true }
sys-locale = { workspace = true }
fluent-bundle = { workspace = true }
pulldown-cmark = { workspace = true }
liquid = { workspace = true }
liquid-core = { workspace = true }

View File

@@ -1,3 +1,5 @@
use fluent_bundle::concurrent::FluentBundle;
use fluent_bundle::{FluentArgs, FluentResource};
use std::collections::HashMap;
use std::sync::LazyLock;
@@ -74,83 +76,127 @@ pub fn detect_os_locale() -> UiLocale {
}
}
type Catalog = HashMap<String, String>;
type Bundle = FluentBundle<FluentResource>;
fn parse_catalog(json: &str) -> Catalog {
serde_json::from_str(json).unwrap_or_default()
const UI_EN: &str = include_str!("../../../../locales/ui/en.ftl");
const RENDER_EN: &str = include_str!("../../../../locales/render/en.ftl");
fn resource(source: &str) -> FluentResource {
FluentResource::try_new(source.to_owned())
.unwrap_or_else(|(_, errors)| panic!("invalid Fluent catalog: {errors:?}"))
}
static CATALOG_EN: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/ui/en.json")));
static CATALOG_DE: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/ui/de.json")));
static CATALOG_FR: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/ui/fr.json")));
static CATALOG_IT: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/ui/it.json")));
static CATALOG_ES: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/ui/es.json")));
// ── Render catalogs (content/template locale, independent of UI locale) ──
static RENDER_EN: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/render/en.json")));
static RENDER_DE: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/render/de.json")));
static RENDER_FR: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/render/fr.json")));
static RENDER_IT: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/render/it.json")));
static RENDER_ES: LazyLock<Catalog> =
LazyLock::new(|| parse_catalog(include_str!("../../../../locales/render/es.json")));
fn render_catalog_for(code: &str) -> &'static Catalog {
let base = code.split(['-', '_']).next().unwrap_or("en").to_lowercase();
match base.as_str() {
"de" => &RENDER_DE,
"fr" => &RENDER_FR,
"it" => &RENDER_IT,
"es" => &RENDER_ES,
_ => &RENDER_EN,
fn bundle(locale: UiLocale, english: &str, localized: &str) -> Bundle {
let mut bundle = FluentBundle::new_concurrent(vec![
locale.code().parse().expect("supported locale is valid"),
]);
bundle.set_use_isolating(false);
bundle
.add_resource(resource(english))
.expect("English Fluent catalog has unique keys");
if locale != UiLocale::En {
bundle.add_resource_overriding(resource(localized));
}
bundle
}
fn catalog_for(locale: UiLocale) -> &'static Catalog {
static UI_CATALOGS: LazyLock<[Bundle; 5]> = LazyLock::new(|| {
[
bundle(UiLocale::En, UI_EN, UI_EN),
bundle(
UiLocale::De,
UI_EN,
include_str!("../../../../locales/ui/de.ftl"),
),
bundle(
UiLocale::Fr,
UI_EN,
include_str!("../../../../locales/ui/fr.ftl"),
),
bundle(
UiLocale::It,
UI_EN,
include_str!("../../../../locales/ui/it.ftl"),
),
bundle(
UiLocale::Es,
UI_EN,
include_str!("../../../../locales/ui/es.ftl"),
),
]
});
static RENDER_CATALOGS: LazyLock<[Bundle; 5]> = LazyLock::new(|| {
[
bundle(UiLocale::En, RENDER_EN, RENDER_EN),
bundle(
UiLocale::De,
RENDER_EN,
include_str!("../../../../locales/render/de.ftl"),
),
bundle(
UiLocale::Fr,
RENDER_EN,
include_str!("../../../../locales/render/fr.ftl"),
),
bundle(
UiLocale::It,
RENDER_EN,
include_str!("../../../../locales/render/it.ftl"),
),
bundle(
UiLocale::Es,
RENDER_EN,
include_str!("../../../../locales/render/es.ftl"),
),
]
});
fn locale_index(locale: UiLocale) -> usize {
match locale {
UiLocale::En => &CATALOG_EN,
UiLocale::De => &CATALOG_DE,
UiLocale::Fr => &CATALOG_FR,
UiLocale::It => &CATALOG_IT,
UiLocale::Es => &CATALOG_ES,
UiLocale::En => 0,
UiLocale::De => 1,
UiLocale::Fr => 2,
UiLocale::It => 3,
UiLocale::Es => 4,
}
}
fn format(bundle: &Bundle, key: &str, params: &[(&str, &str)]) -> Option<String> {
let id = key.replace('.', "-");
let pattern = bundle.get_message(&id)?.value()?;
let mut args = FluentArgs::new();
for (name, value) in params {
args.set(*name, *value);
}
let mut errors = Vec::new();
let value = bundle
.format_pattern(pattern, Some(&args), &mut errors)
.into_owned();
Some(value)
}
fn ui_catalog_for(locale: UiLocale) -> &'static Bundle {
&UI_CATALOGS[locale_index(locale)]
}
fn render_catalog_for(language: &str) -> &'static Bundle {
&RENDER_CATALOGS[locale_index(normalize_language(language))]
}
/// Look up a translation key for the given locale.
///
/// Fallback chain: requested locale → English → key itself.
/// This implements the MenuTranslations invariant from i18n.allium.
pub fn translate(locale: UiLocale, key: &str) -> String {
if let Some(val) = catalog_for(locale).get(key) {
return val.clone();
}
if locale != UiLocale::En
&& let Some(val) = CATALOG_EN.get(key)
{
return val.clone();
}
key.to_string()
format(ui_catalog_for(locale), key, &[]).unwrap_or_else(|| key.to_owned())
}
/// Look up a translation key and substitute `{param}` placeholders.
///
/// Parameters are provided as `&[("param_name", "value")]`.
pub fn translate_with(locale: UiLocale, key: &str, params: &[(&str, &str)]) -> String {
let mut result = translate(locale, key);
for (name, value) in params {
let placeholder = format!("{{{name}}}");
result = result.replace(&placeholder, value);
}
result
format(ui_catalog_for(locale), key, params).unwrap_or_else(|| key.to_owned())
}
/// Look up a render/template translation key by content language code.
@@ -159,25 +205,64 @@ pub fn translate_with(locale: UiLocale, key: &str, params: &[(&str, &str)]) -> S
/// Fallback chain: requested language → English → key itself.
/// Implements the RenderTranslations invariant from i18n.allium.
pub fn translate_render(language: &str, key: &str) -> String {
let catalog = render_catalog_for(language);
if let Some(val) = catalog.get(key) {
return val.clone();
}
if !language.starts_with("en")
&& let Some(val) = RENDER_EN.get(key)
{
return val.clone();
}
key.to_string()
format(render_catalog_for(language), key, &[]).unwrap_or_else(|| key.to_owned())
}
/// Return the entire render translation map for a language.
///
/// Used to inject as `translations` into the Liquid template context.
pub fn get_render_translations(language: &str) -> &'static HashMap<String, String> {
render_catalog_for(language)
&RENDER_MAPS[locale_index(normalize_language(language))]
}
const RENDER_KEYS: &[&str] = &[
"render.archive",
"render.pagination.label",
"render.pagination.newer",
"render.pagination.older",
"render.notFound.message",
"render.notFound.back",
"render.photoArchive.empty",
"render.gallery.empty",
"render.tagCloud.empty",
"render.tagCloud.ariaLabel",
"render.calendar.open",
"render.calendar.close",
"render.calendar.title",
"render.calendar.loading",
"render.calendar.error",
"render.taxonomy.ariaLabel",
"render.backlinks.label",
"render.backlinks.ariaLabel",
"render.languageSwitcher.ariaLabel",
"render.video.youtubeTitle",
"render.video.vimeoTitle",
"render.month.1",
"render.month.2",
"render.month.3",
"render.month.4",
"render.month.5",
"render.month.6",
"render.month.7",
"render.month.8",
"render.month.9",
"render.month.10",
"render.month.11",
"render.month.12",
"render.search.placeholder",
"render.search.ariaLabel",
];
static RENDER_MAPS: LazyLock<[HashMap<String, String>; 5]> = LazyLock::new(|| {
std::array::from_fn(|index| {
let locale = UiLocale::all()[index];
RENDER_KEYS
.iter()
.map(|key| ((*key).to_owned(), translate_render(locale.code(), key)))
.collect()
})
});
#[cfg(test)]
mod tests {
use super::*;

35
locales/render/de.ftl Normal file
View File

@@ -0,0 +1,35 @@
render-archive = Archiv
render-pagination-label = Seitennummerierung
render-pagination-newer = neuer
render-pagination-older = älter
render-notFound-message = Die angeforderte Vorschauseite konnte nicht gefunden werden.
render-notFound-back = Zurück zur Vorschau-Startseite
render-photoArchive-empty = Keine Fotos für dieses Archiv gefunden.
render-gallery-empty = Keine verknüpften Bilder gefunden.
render-tagCloud-empty = Keine Tags gefunden.
render-tagCloud-ariaLabel = Tag-Wolke
render-calendar-open = Kalender öffnen
render-calendar-close = Kalender schließen
render-calendar-title = Archivkalender
render-calendar-loading = Kalender wird geladen …
render-calendar-error = Kalenderdaten konnten nicht geladen werden.
render-taxonomy-ariaLabel = Taxonomie
render-backlinks-label = Verlinkt von
render-backlinks-ariaLabel = Rückverweise
render-languageSwitcher-ariaLabel = Sprache
render-video-youtubeTitle = YouTube-Video
render-video-vimeoTitle = Vimeo-Video
render-month-1 = Januar
render-month-2 = Februar
render-month-3 = März
render-month-4 = Apr.
render-month-5 = Mai
render-month-6 = Juni
render-month-7 = Juli
render-month-8 = Aug.
render-month-9 = Sept.
render-month-10 = Oktober
render-month-11 = Nov.
render-month-12 = Dezember
render-search-placeholder = Suchen...
render-search-ariaLabel = Seitensuche

View File

@@ -1,37 +0,0 @@
{
"render.archive": "Archiv",
"render.pagination.label": "Seitennummerierung",
"render.pagination.newer": "neuer",
"render.pagination.older": "\u00e4lter",
"render.notFound.message": "Die angeforderte Vorschauseite konnte nicht gefunden werden.",
"render.notFound.back": "Zur\u00fcck zur Vorschau-Startseite",
"render.photoArchive.empty": "Keine Fotos f\u00fcr dieses Archiv gefunden.",
"render.gallery.empty": "Keine verkn\u00fcpften Bilder gefunden.",
"render.tagCloud.empty": "Keine Tags gefunden.",
"render.tagCloud.ariaLabel": "Tag-Wolke",
"render.calendar.open": "Kalender \u00f6ffnen",
"render.calendar.close": "Kalender schlie\u00dfen",
"render.calendar.title": "Archivkalender",
"render.calendar.loading": "Kalender wird geladen \u2026",
"render.calendar.error": "Kalenderdaten konnten nicht geladen werden.",
"render.taxonomy.ariaLabel": "Taxonomie",
"render.backlinks.label": "Verlinkt von",
"render.backlinks.ariaLabel": "R\u00fcckverweise",
"render.languageSwitcher.ariaLabel": "Sprache",
"render.video.youtubeTitle": "YouTube-Video",
"render.video.vimeoTitle": "Vimeo-Video",
"render.month.1": "Januar",
"render.month.2": "Februar",
"render.month.3": "M\u00e4rz",
"render.month.4": "Apr.",
"render.month.5": "Mai",
"render.month.6": "Juni",
"render.month.7": "Juli",
"render.month.8": "Aug.",
"render.month.9": "Sept.",
"render.month.10": "Oktober",
"render.month.11": "Nov.",
"render.month.12": "Dezember",
"render.search.placeholder": "Suchen...",
"render.search.ariaLabel": "Seitensuche"
}

35
locales/render/en.ftl Normal file
View File

@@ -0,0 +1,35 @@
render-archive = Archive
render-pagination-label = Pagination
render-pagination-newer = newer
render-pagination-older = older
render-notFound-message = The requested preview page could not be found.
render-notFound-back = Back to preview home
render-photoArchive-empty = No photos found for this archive.
render-gallery-empty = No linked images found.
render-tagCloud-empty = No tags found.
render-tagCloud-ariaLabel = Tag cloud
render-calendar-open = Open calendar
render-calendar-close = Close calendar
render-calendar-title = Archive calendar
render-calendar-loading = Loading calendar…
render-calendar-error = Calendar data could not be loaded.
render-taxonomy-ariaLabel = Taxonomy
render-backlinks-label = Linked from
render-backlinks-ariaLabel = Backlinks
render-languageSwitcher-ariaLabel = Language
render-video-youtubeTitle = YouTube video
render-video-vimeoTitle = Vimeo video
render-month-1 = January
render-month-2 = February
render-month-3 = March
render-month-4 = April
render-month-5 = May
render-month-6 = June
render-month-7 = July
render-month-8 = August
render-month-9 = September
render-month-10 = October
render-month-11 = November
render-month-12 = December
render-search-placeholder = Search...
render-search-ariaLabel = Site search

View File

@@ -1,37 +0,0 @@
{
"render.archive": "Archive",
"render.pagination.label": "Pagination",
"render.pagination.newer": "newer",
"render.pagination.older": "older",
"render.notFound.message": "The requested preview page could not be found.",
"render.notFound.back": "Back to preview home",
"render.photoArchive.empty": "No photos found for this archive.",
"render.gallery.empty": "No linked images found.",
"render.tagCloud.empty": "No tags found.",
"render.tagCloud.ariaLabel": "Tag cloud",
"render.calendar.open": "Open calendar",
"render.calendar.close": "Close calendar",
"render.calendar.title": "Archive calendar",
"render.calendar.loading": "Loading calendar\u2026",
"render.calendar.error": "Calendar data could not be loaded.",
"render.taxonomy.ariaLabel": "Taxonomy",
"render.backlinks.label": "Linked from",
"render.backlinks.ariaLabel": "Backlinks",
"render.languageSwitcher.ariaLabel": "Language",
"render.video.youtubeTitle": "YouTube video",
"render.video.vimeoTitle": "Vimeo video",
"render.month.1": "January",
"render.month.2": "February",
"render.month.3": "March",
"render.month.4": "April",
"render.month.5": "May",
"render.month.6": "June",
"render.month.7": "July",
"render.month.8": "August",
"render.month.9": "September",
"render.month.10": "October",
"render.month.11": "November",
"render.month.12": "December",
"render.search.placeholder": "Search...",
"render.search.ariaLabel": "Site search"
}

35
locales/render/es.ftl Normal file
View File

@@ -0,0 +1,35 @@
render-archive = Archivo
render-pagination-label = Paginación
render-pagination-newer = más reciente
render-pagination-older = más antiguo
render-notFound-message = No se pudo encontrar la página de vista previa solicitada.
render-notFound-back = Volver al inicio de vista previa
render-photoArchive-empty = No se encontraron fotos para este archivo.
render-gallery-empty = No se encontraron imágenes vinculadas.
render-tagCloud-empty = No se encontraron etiquetas.
render-tagCloud-ariaLabel = Nube de etiquetas
render-calendar-open = Abrir calendario
render-calendar-close = Cerrar calendario
render-calendar-title = Calendario de archivo
render-calendar-loading = Cargando calendario…
render-calendar-error = No se pudieron cargar los datos del calendario.
render-taxonomy-ariaLabel = Taxonomía
render-backlinks-label = Enlazado desde
render-backlinks-ariaLabel = Retroenlaces
render-languageSwitcher-ariaLabel = Idioma
render-video-youtubeTitle = Vídeo de YouTube
render-video-vimeoTitle = Vídeo de Vimeo
render-month-1 = enero
render-month-2 = febrero
render-month-3 = marzo
render-month-4 = abril
render-month-5 = mayo
render-month-6 = junio
render-month-7 = julio
render-month-8 = agosto
render-month-9 = septiembre
render-month-10 = octubre
render-month-11 = noviembre
render-month-12 = diciembre
render-search-placeholder = Buscar...
render-search-ariaLabel = Buscar en el sitio

View File

@@ -1,37 +0,0 @@
{
"render.archive": "Archivo",
"render.pagination.label": "Paginaci\u00f3n",
"render.pagination.newer": "m\u00e1s reciente",
"render.pagination.older": "m\u00e1s antiguo",
"render.notFound.message": "No se pudo encontrar la p\u00e1gina de vista previa solicitada.",
"render.notFound.back": "Volver al inicio de vista previa",
"render.photoArchive.empty": "No se encontraron fotos para este archivo.",
"render.gallery.empty": "No se encontraron im\u00e1genes vinculadas.",
"render.tagCloud.empty": "No se encontraron etiquetas.",
"render.tagCloud.ariaLabel": "Nube de etiquetas",
"render.calendar.open": "Abrir calendario",
"render.calendar.close": "Cerrar calendario",
"render.calendar.title": "Calendario de archivo",
"render.calendar.loading": "Cargando calendario\u2026",
"render.calendar.error": "No se pudieron cargar los datos del calendario.",
"render.taxonomy.ariaLabel": "Taxonom\u00eda",
"render.backlinks.label": "Enlazado desde",
"render.backlinks.ariaLabel": "Retroenlaces",
"render.languageSwitcher.ariaLabel": "Idioma",
"render.video.youtubeTitle": "V\u00eddeo de YouTube",
"render.video.vimeoTitle": "V\u00eddeo de Vimeo",
"render.month.1": "enero",
"render.month.2": "febrero",
"render.month.3": "marzo",
"render.month.4": "abril",
"render.month.5": "mayo",
"render.month.6": "junio",
"render.month.7": "julio",
"render.month.8": "agosto",
"render.month.9": "septiembre",
"render.month.10": "octubre",
"render.month.11": "noviembre",
"render.month.12": "diciembre",
"render.search.placeholder": "Buscar...",
"render.search.ariaLabel": "Buscar en el sitio"
}

35
locales/render/fr.ftl Normal file
View File

@@ -0,0 +1,35 @@
render-archive = Archives
render-pagination-label = Navigation paginée
render-pagination-newer = plus récent
render-pagination-older = plus ancien
render-notFound-message = La page daperçu demandée est introuvable.
render-notFound-back = Retour à laccueil de laperçu
render-photoArchive-empty = Aucune photo trouvée pour cette archive.
render-gallery-empty = Aucune image liée trouvée.
render-tagCloud-empty = Aucun tag trouvé.
render-tagCloud-ariaLabel = Nuage de tags
render-calendar-open = Ouvrir le calendrier
render-calendar-close = Fermer le calendrier
render-calendar-title = Calendrier des archives
render-calendar-loading = Chargement du calendrier…
render-calendar-error = Impossible de charger les données du calendrier.
render-taxonomy-ariaLabel = Taxonomie
render-backlinks-label = Lié depuis
render-backlinks-ariaLabel = Rétroliens
render-languageSwitcher-ariaLabel = Langue
render-video-youtubeTitle = Vidéo YouTube
render-video-vimeoTitle = Vidéo Vimeo
render-month-1 = janvier
render-month-2 = février
render-month-3 = mars
render-month-4 = avril
render-month-5 = mai
render-month-6 = juin
render-month-7 = juillet
render-month-8 = août
render-month-9 = septembre
render-month-10 = octobre
render-month-11 = novembre
render-month-12 = décembre
render-search-placeholder = Rechercher...
render-search-ariaLabel = Recherche du site

View File

@@ -1,37 +0,0 @@
{
"render.archive": "Archives",
"render.pagination.label": "Navigation pagin\u00e9e",
"render.pagination.newer": "plus r\u00e9cent",
"render.pagination.older": "plus ancien",
"render.notFound.message": "La page d\u2019aper\u00e7u demand\u00e9e est introuvable.",
"render.notFound.back": "Retour \u00e0 l\u2019accueil de l\u2019aper\u00e7u",
"render.photoArchive.empty": "Aucune photo trouv\u00e9e pour cette archive.",
"render.gallery.empty": "Aucune image li\u00e9e trouv\u00e9e.",
"render.tagCloud.empty": "Aucun tag trouv\u00e9.",
"render.tagCloud.ariaLabel": "Nuage de tags",
"render.calendar.open": "Ouvrir le calendrier",
"render.calendar.close": "Fermer le calendrier",
"render.calendar.title": "Calendrier des archives",
"render.calendar.loading": "Chargement du calendrier\u2026",
"render.calendar.error": "Impossible de charger les donn\u00e9es du calendrier.",
"render.taxonomy.ariaLabel": "Taxonomie",
"render.backlinks.label": "Li\u00e9 depuis",
"render.backlinks.ariaLabel": "R\u00e9troliens",
"render.languageSwitcher.ariaLabel": "Langue",
"render.video.youtubeTitle": "Vid\u00e9o YouTube",
"render.video.vimeoTitle": "Vid\u00e9o Vimeo",
"render.month.1": "janvier",
"render.month.2": "f\u00e9vrier",
"render.month.3": "mars",
"render.month.4": "avril",
"render.month.5": "mai",
"render.month.6": "juin",
"render.month.7": "juillet",
"render.month.8": "ao\u00fbt",
"render.month.9": "septembre",
"render.month.10": "octobre",
"render.month.11": "novembre",
"render.month.12": "d\u00e9cembre",
"render.search.placeholder": "Rechercher...",
"render.search.ariaLabel": "Recherche du site"
}

35
locales/render/it.ftl Normal file
View File

@@ -0,0 +1,35 @@
render-archive = Archivio
render-pagination-label = Paginazione
render-pagination-newer = più recente
render-pagination-older = più vecchio
render-notFound-message = La pagina di anteprima richiesta non è stata trovata.
render-notFound-back = Torna alla home di anteprima
render-photoArchive-empty = Nessuna foto trovata per questo archivio.
render-gallery-empty = Nessuna immagine collegata trovata.
render-tagCloud-empty = Nessun tag trovato.
render-tagCloud-ariaLabel = Nuvola di tag
render-calendar-open = Apri calendario
render-calendar-close = Chiudi calendario
render-calendar-title = Calendario archivio
render-calendar-loading = Caricamento calendario…
render-calendar-error = Impossibile caricare i dati del calendario.
render-taxonomy-ariaLabel = Tassonomia
render-backlinks-label = Collegato da
render-backlinks-ariaLabel = Retrocollegamenti
render-languageSwitcher-ariaLabel = Lingua
render-video-youtubeTitle = Video YouTube
render-video-vimeoTitle = Video Vimeo
render-month-1 = gennaio
render-month-2 = febbraio
render-month-3 = marzo
render-month-4 = aprile
render-month-5 = maggio
render-month-6 = giugno
render-month-7 = luglio
render-month-8 = agosto
render-month-9 = settembre
render-month-10 = ottobre
render-month-11 = novembre
render-month-12 = dicembre
render-search-placeholder = Cerca...
render-search-ariaLabel = Ricerca nel sito

View File

@@ -1,37 +0,0 @@
{
"render.archive": "Archivio",
"render.pagination.label": "Paginazione",
"render.pagination.newer": "pi\u00f9 recente",
"render.pagination.older": "pi\u00f9 vecchio",
"render.notFound.message": "La pagina di anteprima richiesta non \u00e8 stata trovata.",
"render.notFound.back": "Torna alla home di anteprima",
"render.photoArchive.empty": "Nessuna foto trovata per questo archivio.",
"render.gallery.empty": "Nessuna immagine collegata trovata.",
"render.tagCloud.empty": "Nessun tag trovato.",
"render.tagCloud.ariaLabel": "Nuvola di tag",
"render.calendar.open": "Apri calendario",
"render.calendar.close": "Chiudi calendario",
"render.calendar.title": "Calendario archivio",
"render.calendar.loading": "Caricamento calendario\u2026",
"render.calendar.error": "Impossibile caricare i dati del calendario.",
"render.taxonomy.ariaLabel": "Tassonomia",
"render.backlinks.label": "Collegato da",
"render.backlinks.ariaLabel": "Retrocollegamenti",
"render.languageSwitcher.ariaLabel": "Lingua",
"render.video.youtubeTitle": "Video YouTube",
"render.video.vimeoTitle": "Video Vimeo",
"render.month.1": "gennaio",
"render.month.2": "febbraio",
"render.month.3": "marzo",
"render.month.4": "aprile",
"render.month.5": "maggio",
"render.month.6": "giugno",
"render.month.7": "luglio",
"render.month.8": "agosto",
"render.month.9": "settembre",
"render.month.10": "ottobre",
"render.month.11": "novembre",
"render.month.12": "dicembre",
"render.search.placeholder": "Cerca...",
"render.search.ariaLabel": "Ricerca nel sito"
}

385
locales/ui/de.ftl Normal file
View File

@@ -0,0 +1,385 @@
menu-group-file = Datei
menu-group-edit = Bearbeiten
menu-group-view = Ansicht
menu-group-blog = Blog
menu-group-help = Hilfe
menu-item-newPost = Neuer Beitrag
menu-item-importMedia = Medien importieren...
menu-item-save = Speichern
menu-item-openInBrowser = Im Browser öffnen
menu-item-openDataFolder = Datenordner öffnen
menu-item-find = Suchen
menu-item-replace = Ersetzen
menu-item-editPreferences = Einstellungen bearbeiten
menu-item-viewPosts = Beiträge
menu-item-viewMedia = Medien
menu-item-toggleSidebar = Seitenleiste umschalten
menu-item-togglePanel = Panel umschalten
menu-item-publishSelected = Ausgewählte veröffentlichen
menu-item-previewPost = Beitragsvorschau
menu-item-rebuildDatabase = Datenbank aus Dateien neu aufbauen
menu-item-reindexText = Suchtext neu indizieren
menu-item-metadataDiff = Metadaten-Diff-Werkzeug
menu-item-editMenu = Blog-Menü bearbeiten
menu-item-generateSitemap = Site rendern
menu-item-regenerateCalendar = Kalender neu erzeugen
menu-item-validateSite = Website validieren
menu-item-validateTranslations = Übersetzungen validieren
menu-item-fillMissingTranslations = Fehlende Übersetzungen ausfüllen
menu-item-uploadSite = Website hochladen
menu-item-about = Über Blogging Desktop Server
menu-item-openDocumentation = Dokumentation öffnen
menu-item-viewOnGitHub = Auf GitHub ansehen
menu-item-reportIssue = Problem melden
activity-posts = Beiträge
activity-pages = Seiten
activity-media = Medien
activity-scripts = Skripte
activity-tags = Schlagwörter
activity-templates = Vorlagen
activity-aiAssistant = KI-Assistent
activity-import = Importieren
activity-sourceControl = Versionskontrolle
common-save = Speichern
common-open = Öffnen
common-cancel = Abbrechen
common-settings = Einstellungen
common-tasks = Aufgaben
common-running = laufend
common-pending = ausstehend
tasks-backgroundTasks = Hintergrundaufgaben
tasks-clearCompleted = Abgeschlossene löschen
tasks-noActive = Keine aktiven Aufgaben
tasks-cancelTask = Aufgabe abbrechen
tasks-triggerTitle = { $running } laufend, { $pending } ausstehend
app-taskCompleted = Aufgabe abgeschlossen: { $message }
app-taskFailed = Aufgabe fehlgeschlagen: { $message }
app-databaseRebuildFailed = Datenbank-Neuaufbau fehlgeschlagen
app-textReindexFailed = Text-Neuindizierung fehlgeschlagen
panel-output = Ausgabe
panel-postLinks = Beitragsverknüpfungen
panel-gitLog = Git-Verlauf
panel-postLinksPlaceholder = Keine Beitragsverknüpfungen vorhanden
panel-gitLogPlaceholder = Kein Git-Verlauf vorhanden
panel-closeTitle = Panel schließen
panel-noRecentTasks = Keine aktuellen Aufgaben
panel-noOutput = Keine Ausgabe
statusBar-posts = { $count } Beiträge
statusBar-media = { $count } Medien
statusBar-ui = UI
statusBar-uiLanguage = UI-Sprache
statusBar-offlineMode = Flugmodus
statusBar-offlineModeActive = Flugmodus (aktiv)
projectSelector-switchProject = Projekt wechseln
projectSelector-projectsHeader = Projekte
projectSelector-newProject = Neues Projekt
projectSelector-createProject = Projekt erstellen
projectSelector-projectName = Projektname
projectSelector-projectNamePlaceholder = Mein Blog
projectSelector-chooseFolder = Ordner wählen...
projectSelector-useDefaultLocation = Standardort verwenden
projectSelector-deleteProject = Projekt löschen
projectSelector-toast-switched = Zu { $name } gewechselt
projectSelector-toast-switchFailed = Projektwechsel fehlgeschlagen
projectSelector-toast-created = Projekt "{ $name }" erstellt
projectSelector-toast-createFailed = Projekt konnte nicht erstellt werden
projectSelector-toast-deleteFailed = Projekt konnte nicht gelöscht werden
tabBar-closeHint = Schließen
tabBar-loading = Laden...
tabBar-unknown = Unbekannt
tabBar-style = Stil
tabBar-menuEditor = Menü-Editor
tabBar-metadataDiff = Metadaten-Diff
tabBar-siteValidation = Website-Validierung
tabBar-translationValidation = Übersetzungsvalidierung
siteValidation-run = Validierung starten
siteValidation-apply = Validierung anwenden
siteValidation-applying = Wird angewendet...
siteValidation-idle = Starte die Website-Validierung, um generierte Dateien mit dem erwarteten Output zu vergleichen.
siteValidation-running = Validierung läuft...
siteValidation-clean = Es wurden keine fehlenden, zusätzlichen oder veralteten generierten Dateien gefunden.
siteValidation-error = Validierung fehlgeschlagen
siteValidation-missing = Fehlende Dateien
siteValidation-extra = Zusätzliche Dateien
siteValidation-stale = Veraltete Dateien
tabBar-documentation = Dokumentation
tabBar-apiDocumentation = API-Dokumentation
tabBar-findDuplicates = Duplikate finden
tabBar-tags = Tags
tabBar-preview = Vorschau
tabBar-modified = Geändert
sidebar-noPostsYet = Noch keine Beiträge
sidebar-noPagesYet = Noch keine Seiten
sidebar-noMediaYet = Noch keine Medien
sidebar-noScriptsYet = Noch keine Skripte
sidebar-noTemplatesYet = Noch keine Vorlagen
sidebar-chatPlaceholder = KI-Assistent erscheint hier
sidebar-importPlaceholder = Inhalte aus externen Quellen importieren
sidebar-gitPlaceholder = Versionskontrolle-Integration
sidebar-loading = Lädt...
sidebar-settingsHeader = Einstellungen
sidebar-tagsHeader = Schlagwörter
sidebar-drafts = Entwürfe
sidebar-published = Veröffentlicht
sidebar-archived = Archiviert
sidebar-loadMore = Mehr laden…
language-en = Englisch
language-de = Deutsch
language-fr = Französisch
language-it = Italienisch
language-es = Spanisch
welcome-title = Willkommen bei bDS
welcome-subtitle = Öffne ein Projekt oder erstelle einen neuen Beitrag.
post-untitled = Unbenannt
post-createFailed = Beitrag konnte nicht erstellt werden: { $error }
engine-rebuildStarted = Datenbank wird aus Dateien neu aufgebaut...
engine-rebuildComplete = Datenbank neu aufgebaut: { $posts } Beiträge, { $media } Medien, { $templates } Vorlagen, { $scripts } Skripte
engine-rebuildFailed = Datenbankaufbau fehlgeschlagen: { $error }
engine-reindexStarted = Suchtext wird neu indiziert...
engine-reindexComplete = Suchtext neu indiziert: { $posts } Beiträge, { $media } Medien
engine-reindexFailed = Suchtext-Indizierung fehlgeschlagen: { $error }
engine-calendarStarted = Kalender wird neu generiert...
engine-calendarComplete = Kalender neu generiert
engine-calendarFailed = Kalender-Generierung fehlgeschlagen: { $error }
engine-calendarNoProject = Kein aktives Projekt
engine-validateTranslationsStarted = Übersetzungen werden validiert...
engine-validateMediaStarted = Medien werden überprüft...
engine-validateTranslationsComplete = Übersetzungsvalidierung: { $dbIssues } DB-Probleme, { $fsIssues } Dateisystem-Probleme
engine-validateTranslationsFailed = Übersetzungsvalidierung fehlgeschlagen: { $error }
engine-fillMissingTranslationsOffline = Übersetzungen können nicht ergänzt werden: KI im Offline-Modus nicht verfügbar
engine-fillMissingTranslationsNoAi = Übersetzungen können nicht ergänzt werden: KI noch nicht verfügbar
engine-uploadStarted = Seite wird hochgeladen...
engine-uploadMissingCredentials = Veröffentlichungsdaten unvollständig. In Projekteinstellungen konfigurieren.
engine-uploadOffline = Hochladen nicht möglich: Flugmodus ist aktiv
engine-generateSiteStarted = Seite wird generiert...
engine-generateSiteNoProject = Kein aktives Projekt
engine-previewDataDirUnavailable = Projekt-Datenverzeichnis nicht verfügbar
engine-previewPortInUse = Der Port des Vorschau-Servers wird bereits verwendet
dialog-selectFolder = Ordner auswählen
dialog-importMedia = Medien importieren
dialog-imageFilter = Bilder
settings-nav-project = Projekt
settings-nav-editor = Editor
settings-nav-content = Inhalt
settings-nav-ai = KI
settings-nav-technology = Technologie
settings-nav-publishing = Veröffentlichung
settings-nav-data = Daten
settings-nav-mcp = MCP
settings-nav-style = Stil
tags-nav-cloud = Tag-Wolke
tags-nav-manage = Tags verwalten
tags-nav-merge = Tags zusammenführen
tags-nav-discover = Tags entdecken
sidebar-chatYesterday = Gestern
modal-confirmDelete-title = Löschen bestätigen
modal-confirmDelete-warning = Diese Aktion kann nicht rückgängig gemacht werden.
modal-confirmDelete-cancel = Abbrechen
modal-confirmDelete-delete = Löschen
modal-confirm-title = Bestätigen
modal-confirm-cancel = Abbrechen
modal-confirm-confirm = Bestätigen
modal-postInsertLink-title = Link einfügen
modal-postInsertLink-description = Wählen Sie einen Beitrag, den Sie verlinken möchten.
modal-postInsertLink-cancel = Abbrechen
modal-postInsertLink-tabInternal = Intern
modal-postInsertLink-tabExternal = Extern
modal-postInsertLink-searchPlaceholder = Beiträge durchsuchen...
modal-postInsertLink-emptyState = Tippen Sie, um Beiträge zu suchen oder verwenden Sie verwandte Beiträge
modal-postInsertLink-createPost = Beitrag erstellen
modal-postInsertLink-insert = Einfügen
modal-postInsertLink-externalUrlPlaceholder = https://example.com
modal-postInsertLink-externalTextPlaceholder = Anzeigetext (optional)
modal-postInsertLink-urlRequired = Eine URL ist erforderlich.
modal-postInsertLink-titleRequired = Geben Sie einen Titel ein, um einen verlinkten Beitrag zu erstellen.
modal-postInsertLink-createFailed = Der verlinkte Beitrag konnte nicht erstellt werden.
modal-postInsertLink-loadFailed = Der ausgewählte Beitrag konnte nicht geladen werden.
modal-insertMedia-title = Medien einfügen
modal-insertMedia-description = Wählen Sie ein Medium zum Einfügen.
modal-insertMedia-cancel = Abbrechen
modal-insertMedia-searchPlaceholder = Medien durchsuchen...
modal-insertMedia-loadFailed = Das ausgewählte Medium konnte nicht geladen werden.
modal-postGallery-title = Mediengalerie
modal-postGallery-description = Klicken Sie auf ein Bild, um es in voller Größe anzuzeigen.
modal-postGallery-close = Schließen
modal-postGallery-backToGrid = Zurück zur Übersicht
modal-postGallery-unavailable = Vorschau nicht verfügbar
modal-aiSuggestions-title = KI-Vorschläge
modal-aiSuggestions-applySelected = Auswahl anwenden
modal-languagePicker-title = Übersetzen nach
sidebar-filter-search = Suchen...
sidebar-filter-toggle = Filter
sidebar-filter-clearAll = Alle Filter zurücksetzen
sidebar-filter-status = Status
sidebar-filter-language = Sprache
sidebar-filter-dateRange = Zeitraum
sidebar-filter-from = Von (JJJJ-MM-TT)
sidebar-filter-to = Bis (JJJJ-MM-TT)
editor-insertLink = Link einfügen
editor-insertMedia = Medium einfügen
editor-gallery = Galerie
sidebar-filter-tags = Tags
sidebar-filter-categories = Kategorien
sidebar-filter-calendar = Archiv
sidebar-filter-noResults = Keine Treffer
editor-title = Titel
editor-titlePlaceholder = Titel eingeben...
editor-slug = Slug
editor-slugPlaceholder = slug-eingeben
editor-content = Inhalt
editor-contentPlaceholder = Inhalt schreiben...
editor-excerpt = Auszug
editor-excerptPlaceholder = Kurze Zusammenfassung...
editor-author = Autor
editor-language = Sprache
editor-aiAnalyze = Mit KI analysieren
editor-detectLanguage = Sprache erkennen
editor-quickActions = Schnellaktionen
editor-modeMarkdown = Markdown
editor-modePreview = Vorschau
editor-suggestTaxonomy = Taxonomie vorschlagen
editor-translate = Übersetzen
editor-templateSlug = Vorlage
editor-doNotTranslate = Nicht übersetzen
editor-publish = Veröffentlichen
editor-discard = Verwerfen
editor-duplicate = Duplizieren
editor-validate = Validieren
editor-run = Ausführen
editor-checkSyntax = Syntax prüfen
editor-kind = Art
editor-enabled = Aktiviert
editor-entrypoint = Einstiegspunkt
editor-alt = Alternativtext
editor-altPlaceholder = Bild beschreiben...
editor-caption = Bildunterschrift
editor-metadata = Metadaten
editor-tags = Tags
editor-tagsPlaceholder = Tag hinzufügen...
editor-categories = Kategorien
editor-categoriesPlaceholder = Kategorie hinzufügen...
editor-outlinks = Ausgehende Links
editor-backlinks = Eingehende Links
editor-linkedMedia = Verknüpfte Medien
editor-linkedMediaEmpty = Noch keine verknüpften Medien.
editor-linkExistingMedia = Vorhandenes verknüpfen
editor-linkToPost = Mit Beitrag verknüpfen
editor-linkedPosts = Verknüpfte Beiträge
editor-linkedPostsEmpty = Mit keinen Beiträgen verknüpft.
editor-postPickerSearch = Beiträge suchen
editor-postPickerSearchPlaceholder = Beiträge suchen...
editor-unlinkMedia = Verknüpfung lösen
editor-linkedMediaKindImage = Bild
editor-linkedMediaKindFile = Datei
editor-untitled = Ohne Titel
editor-createdAt = Erstellt
editor-updatedAt = Aktualisiert
editor-publishedAt = Veröffentlicht
tags-noTags = Noch keine Tags
tags-cloudSection = Wolke
tags-cloudHelp = Wählen Sie einen oder mehrere Tags aus, um sie zu bearbeiten, zu löschen oder zusammenzuführen.
tags-selectedCount = { $count } ausgewählt
tags-clearSelection = Auswahl aufheben
tags-createSection = Tag erstellen
tags-createPlaceholder = neues-tag
tags-createButton = Erstellen
tags-editTag = Tag bearbeiten
tags-manageSection = Verwalten
tags-name = Name
tags-color = Farbe
tags-colorPresets = Farbvorgaben
tags-postTemplate = Beitragsvorlage
tags-noTemplate = Keine
tags-merge = Zusammenführen
tags-mergeTarget = Ziel-Tag
tags-mergeSection = Zusammenführen
tags-mergeHelp = Wählen Sie mindestens zwei Tags aus der Wolke oder Liste aus, um sie zusammenzuführen.
tags-mergePreview = Zu löschende Tags: { $tags }
tags-mergeConfirmTitle = Tags zusammenführen
tags-mergeConfirmMessage = { $count } Tags in { $target } zusammenführen? Dies kann nicht rückgängig gemacht werden.
tags-deleteUsage = Dieses Tag wird in { $count } Beiträgen verwendet.
tags-discoverSection = Entdecken
tags-discoverDescription = Tags aus aktuellen Beiträgen entdecken und tags.json passend zur Datenbank neu schreiben.
tags-discoverButton = Entdecken
tags-selectTag = Tag zum Bearbeiten auswählen
template-forceDeleteTitle = Vorlage zwangsweise löschen
template-forceDeleteMessage = Diese Vorlage wird von { $posts } Beiträgen und { $tags } Tags verwendet. Trotzdem löschen?
common-add = Hinzufügen
common-remove = Entfernen
common-clear = Leeren
common-noResults = Keine Ergebnisse
settings-projectName = Projektname
settings-projectDescription = Beschreibung
settings-dataPath = Datenordner
settings-browse = Durchsuchen...
settings-reset = Zurücksetzen
settings-publicUrl = Öffentliche URL
settings-mainLanguage = Hauptsprache
settings-mainLanguageRequired = erforderlich
settings-blogLanguages = Blogsprachen
settings-defaultAuthor = Standardautor
settings-maxPostsPerPage = Beiträge pro Seite
settings-blogmarkCategory = Blogmark-Kategorie
settings-defaultMode = Standard-Editormodus
settings-diffViewStyle = Diff-Ansicht
settings-categoryTitle = Titel für { $category }
settings-categoryPostTemplate = Beitragsvorlage
settings-categoryListTemplate = Listenvorlage
settings-categoryRenderInLists = In Listen rendern
settings-categoryShowTitles = Titel anzeigen
settings-addCategory = Kategorie hinzufügen
settings-resetCategories = Auf Standard zurücksetzen
settings-wrapLongLines = Lange Zeilen umbrechen
settings-hideUnchangedRegions = Unveränderte Bereiche ausblenden
settings-offlineMode = Flugmodus
settings-onlineEndpointSection = Online-Endpunkt
settings-onlineEndpointUrl = URL des Online-Endpunkts
settings-onlineEndpointModel = Modell des Online-Endpunkts
settings-onlineApiKey = Online-API-Schlüssel
settings-airplaneEndpointSection = Flugmodus-Endpunkt
settings-airplaneEndpointUrl = URL des Flugmodus-Endpunkts
settings-airplaneEndpointModel = Modell des Flugmodus-Endpunkts
settings-refreshModels = Modelle aktualisieren
settings-defaultModel = Standardmodell
settings-titleModel = Titelmodell
settings-imageAnalysisModel = Bildanalysemodell
settings-keychainConfigured = Im Schlüsselbund gespeichert
settings-systemPrompt = System-Prompt
settings-resetToDefault = Auf Standard zurücksetzen
settings-luaRuntimeOnly = Lua ist die einzige Skriptlaufzeit in der Rust-App.
settings-semanticSimilarityEnabled = Semantische Ähnlichkeit
settings-sshHost = SSH-Host
settings-sshUsername = SSH-Benutzername
settings-sshRemotePath = Remote-Pfad
settings-clear = Leeren
settings-rebuildPosts = Beiträge neu aufbauen
settings-rebuildMedia = Medien neu aufbauen
settings-rebuildScripts = Skripte neu aufbauen
settings-rebuildTemplates = Vorlagen neu aufbauen
settings-rebuildLinks = Links neu aufbauen
settings-regenerateThumbnails = Vorschaubilder regenerieren
settings-openDataFolder = Datenordner öffnen
settings-contentPlaceholder = Inhaltseinstellungen erscheinen hier
settings-technologyPlaceholder = Technologieeinstellungen erscheinen hier
settings-mcpPlaceholder = MCP-Server-Einstellungen erscheinen hier
dashboard-overview = Übersicht
dashboard-posts = Beiträge
dashboard-media = Medien
dashboard-tags = Tags
dashboard-categories = Kategorien
dashboard-images = Bilder
dashboard-drafts = Entwürfe
dashboard-published = Veröffentlicht
dashboard-archived = Archiviert
dashboard-statCards = Überblick
dashboard-timeline = Zeitachse
dashboard-noTimelineData = Noch keine Zeitachsendaten
dashboard-tagCloud = Tag-Wolke
dashboard-noTags = Noch keine Tags
dashboard-categoryCloud = Kategorie-Wolke
dashboard-recentPosts = Letzte Beiträge
dashboard-noRecentPosts = Keine aktuellen Beiträge
dashboard-and = und
dashboard-pin = Anheften
common-tabNotImplemented = Dieser Bereich wird in einem späteren Meilenstein implementiert.
editor-noPreviewAvailable = Keine Vorschau verfügbar

View File

@@ -1,387 +0,0 @@
{
"menu.group.file": "Datei",
"menu.group.edit": "Bearbeiten",
"menu.group.view": "Ansicht",
"menu.group.blog": "Blog",
"menu.group.help": "Hilfe",
"menu.item.newPost": "Neuer Beitrag",
"menu.item.importMedia": "Medien importieren...",
"menu.item.save": "Speichern",
"menu.item.openInBrowser": "Im Browser öffnen",
"menu.item.openDataFolder": "Datenordner öffnen",
"menu.item.find": "Suchen",
"menu.item.replace": "Ersetzen",
"menu.item.editPreferences": "Einstellungen bearbeiten",
"menu.item.viewPosts": "Beiträge",
"menu.item.viewMedia": "Medien",
"menu.item.toggleSidebar": "Seitenleiste umschalten",
"menu.item.togglePanel": "Panel umschalten",
"menu.item.publishSelected": "Ausgewählte veröffentlichen",
"menu.item.previewPost": "Beitragsvorschau",
"menu.item.rebuildDatabase": "Datenbank aus Dateien neu aufbauen",
"menu.item.reindexText": "Suchtext neu indizieren",
"menu.item.metadataDiff": "Metadaten-Diff-Werkzeug",
"menu.item.editMenu": "Blog-Menü bearbeiten",
"menu.item.generateSitemap": "Site rendern",
"menu.item.regenerateCalendar": "Kalender neu erzeugen",
"menu.item.validateSite": "Website validieren",
"menu.item.validateTranslations": "Übersetzungen validieren",
"menu.item.fillMissingTranslations": "Fehlende Übersetzungen ausfüllen",
"menu.item.uploadSite": "Website hochladen",
"menu.item.about": "Über Blogging Desktop Server",
"menu.item.openDocumentation": "Dokumentation öffnen",
"menu.item.viewOnGitHub": "Auf GitHub ansehen",
"menu.item.reportIssue": "Problem melden",
"activity.posts": "Beiträge",
"activity.pages": "Seiten",
"activity.media": "Medien",
"activity.scripts": "Skripte",
"activity.tags": "Schlagwörter",
"activity.templates": "Vorlagen",
"activity.aiAssistant": "KI-Assistent",
"activity.import": "Importieren",
"activity.sourceControl": "Versionskontrolle",
"common.save": "Speichern",
"common.open": "Öffnen",
"common.cancel": "Abbrechen",
"common.settings": "Einstellungen",
"common.tasks": "Aufgaben",
"common.running": "laufend",
"common.pending": "ausstehend",
"tasks.backgroundTasks": "Hintergrundaufgaben",
"tasks.clearCompleted": "Abgeschlossene löschen",
"tasks.noActive": "Keine aktiven Aufgaben",
"tasks.cancelTask": "Aufgabe abbrechen",
"tasks.triggerTitle": "{running} laufend, {pending} ausstehend",
"app.taskCompleted": "Aufgabe abgeschlossen: {message}",
"app.taskFailed": "Aufgabe fehlgeschlagen: {message}",
"app.databaseRebuildFailed": "Datenbank-Neuaufbau fehlgeschlagen",
"app.textReindexFailed": "Text-Neuindizierung fehlgeschlagen",
"panel.output": "Ausgabe",
"panel.postLinks": "Beitragsverknüpfungen",
"panel.gitLog": "Git-Verlauf",
"panel.postLinksPlaceholder": "Keine Beitragsverknüpfungen vorhanden",
"panel.gitLogPlaceholder": "Kein Git-Verlauf vorhanden",
"panel.closeTitle": "Panel schließen",
"panel.noRecentTasks": "Keine aktuellen Aufgaben",
"panel.noOutput": "Keine Ausgabe",
"statusBar.posts": "{count} Beiträge",
"statusBar.media": "{count} Medien",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "UI-Sprache",
"statusBar.offlineMode": "Flugmodus",
"statusBar.offlineModeActive": "Flugmodus (aktiv)",
"projectSelector.switchProject": "Projekt wechseln",
"projectSelector.projectsHeader": "Projekte",
"projectSelector.newProject": "Neues Projekt",
"projectSelector.createProject": "Projekt erstellen",
"projectSelector.projectName": "Projektname",
"projectSelector.projectNamePlaceholder": "Mein Blog",
"projectSelector.chooseFolder": "Ordner wählen...",
"projectSelector.useDefaultLocation": "Standardort verwenden",
"projectSelector.deleteProject": "Projekt löschen",
"projectSelector.toast.switched": "Zu {name} gewechselt",
"projectSelector.toast.switchFailed": "Projektwechsel fehlgeschlagen",
"projectSelector.toast.created": "Projekt \"{name}\" erstellt",
"projectSelector.toast.createFailed": "Projekt konnte nicht erstellt werden",
"projectSelector.toast.deleteFailed": "Projekt konnte nicht gelöscht werden",
"tabBar.closeHint": "Schließen",
"tabBar.loading": "Laden...",
"tabBar.unknown": "Unbekannt",
"tabBar.style": "Stil",
"tabBar.menuEditor": "Menü-Editor",
"tabBar.metadataDiff": "Metadaten-Diff",
"tabBar.siteValidation": "Website-Validierung",
"tabBar.translationValidation": "Übersetzungsvalidierung",
"siteValidation.run": "Validierung starten",
"siteValidation.apply": "Validierung anwenden",
"siteValidation.applying": "Wird angewendet...",
"siteValidation.idle": "Starte die Website-Validierung, um generierte Dateien mit dem erwarteten Output zu vergleichen.",
"siteValidation.running": "Validierung läuft...",
"siteValidation.clean": "Es wurden keine fehlenden, zusätzlichen oder veralteten generierten Dateien gefunden.",
"siteValidation.error": "Validierung fehlgeschlagen",
"siteValidation.missing": "Fehlende Dateien",
"siteValidation.extra": "Zusätzliche Dateien",
"siteValidation.stale": "Veraltete Dateien",
"tabBar.documentation": "Dokumentation",
"tabBar.apiDocumentation": "API-Dokumentation",
"tabBar.findDuplicates": "Duplikate finden",
"tabBar.tags": "Tags",
"tabBar.preview": "Vorschau",
"tabBar.modified": "Geändert",
"sidebar.noPostsYet": "Noch keine Beiträge",
"sidebar.noPagesYet": "Noch keine Seiten",
"sidebar.noMediaYet": "Noch keine Medien",
"sidebar.noScriptsYet": "Noch keine Skripte",
"sidebar.noTemplatesYet": "Noch keine Vorlagen",
"sidebar.chatPlaceholder": "KI-Assistent erscheint hier",
"sidebar.importPlaceholder": "Inhalte aus externen Quellen importieren",
"sidebar.gitPlaceholder": "Versionskontrolle-Integration",
"sidebar.loading": "Lädt...",
"sidebar.settingsHeader": "Einstellungen",
"sidebar.tagsHeader": "Schlagwörter",
"sidebar.drafts": "Entwürfe",
"sidebar.published": "Veröffentlicht",
"sidebar.archived": "Archiviert",
"sidebar.loadMore": "Mehr laden…",
"language.en": "Englisch",
"language.de": "Deutsch",
"language.fr": "Französisch",
"language.it": "Italienisch",
"language.es": "Spanisch",
"welcome.title": "Willkommen bei bDS",
"welcome.subtitle": "Öffne ein Projekt oder erstelle einen neuen Beitrag.",
"post.untitled": "Unbenannt",
"post.createFailed": "Beitrag konnte nicht erstellt werden: {error}",
"engine.rebuildStarted": "Datenbank wird aus Dateien neu aufgebaut...",
"engine.rebuildComplete": "Datenbank neu aufgebaut: {posts} Beiträge, {media} Medien, {templates} Vorlagen, {scripts} Skripte",
"engine.rebuildFailed": "Datenbankaufbau fehlgeschlagen: {error}",
"engine.reindexStarted": "Suchtext wird neu indiziert...",
"engine.reindexComplete": "Suchtext neu indiziert: {posts} Beiträge, {media} Medien",
"engine.reindexFailed": "Suchtext-Indizierung fehlgeschlagen: {error}",
"engine.calendarStarted": "Kalender wird neu generiert...",
"engine.calendarComplete": "Kalender neu generiert",
"engine.calendarFailed": "Kalender-Generierung fehlgeschlagen: {error}",
"engine.calendarNoProject": "Kein aktives Projekt",
"engine.validateTranslationsStarted": "Übersetzungen werden validiert...",
"engine.validateMediaStarted": "Medien werden überprüft...",
"engine.validateTranslationsComplete": "Übersetzungsvalidierung: {dbIssues} DB-Probleme, {fsIssues} Dateisystem-Probleme",
"engine.validateTranslationsFailed": "Übersetzungsvalidierung fehlgeschlagen: {error}",
"engine.fillMissingTranslationsOffline": "Übersetzungen können nicht ergänzt werden: KI im Offline-Modus nicht verfügbar",
"engine.fillMissingTranslationsNoAi": "Übersetzungen können nicht ergänzt werden: KI noch nicht verfügbar",
"engine.uploadStarted": "Seite wird hochgeladen...",
"engine.uploadMissingCredentials": "Veröffentlichungsdaten unvollständig. In Projekteinstellungen konfigurieren.",
"engine.uploadOffline": "Hochladen nicht möglich: Flugmodus ist aktiv",
"engine.generateSiteStarted": "Seite wird generiert...",
"engine.generateSiteNoProject": "Kein aktives Projekt",
"engine.previewDataDirUnavailable": "Projekt-Datenverzeichnis nicht verfügbar",
"engine.previewPortInUse": "Der Port des Vorschau-Servers wird bereits verwendet",
"dialog.selectFolder": "Ordner auswählen",
"dialog.importMedia": "Medien importieren",
"dialog.imageFilter": "Bilder",
"settings.nav.project": "Projekt",
"settings.nav.editor": "Editor",
"settings.nav.content": "Inhalt",
"settings.nav.ai": "KI",
"settings.nav.technology": "Technologie",
"settings.nav.publishing": "Veröffentlichung",
"settings.nav.data": "Daten",
"settings.nav.mcp": "MCP",
"settings.nav.style": "Stil",
"tags.nav.cloud": "Tag-Wolke",
"tags.nav.manage": "Tags verwalten",
"tags.nav.merge": "Tags zusammenführen",
"tags.nav.discover": "Tags entdecken",
"sidebar.chatYesterday": "Gestern",
"modal.confirmDelete.title": "Löschen bestätigen",
"modal.confirmDelete.warning": "Diese Aktion kann nicht rückgängig gemacht werden.",
"modal.confirmDelete.cancel": "Abbrechen",
"modal.confirmDelete.delete": "Löschen",
"modal.confirm.title": "Bestätigen",
"modal.confirm.cancel": "Abbrechen",
"modal.confirm.confirm": "Bestätigen",
"modal.postInsertLink.title": "Link einfügen",
"modal.postInsertLink.description": "Wählen Sie einen Beitrag, den Sie verlinken möchten.",
"modal.postInsertLink.cancel": "Abbrechen",
"modal.postInsertLink.tabInternal": "Intern",
"modal.postInsertLink.tabExternal": "Extern",
"modal.postInsertLink.searchPlaceholder": "Beiträge durchsuchen...",
"modal.postInsertLink.emptyState": "Tippen Sie, um Beiträge zu suchen oder verwenden Sie verwandte Beiträge",
"modal.postInsertLink.createPost": "Beitrag erstellen",
"modal.postInsertLink.insert": "Einfügen",
"modal.postInsertLink.externalUrlPlaceholder": "https://example.com",
"modal.postInsertLink.externalTextPlaceholder": "Anzeigetext (optional)",
"modal.postInsertLink.urlRequired": "Eine URL ist erforderlich.",
"modal.postInsertLink.titleRequired": "Geben Sie einen Titel ein, um einen verlinkten Beitrag zu erstellen.",
"modal.postInsertLink.createFailed": "Der verlinkte Beitrag konnte nicht erstellt werden.",
"modal.postInsertLink.loadFailed": "Der ausgewählte Beitrag konnte nicht geladen werden.",
"modal.insertMedia.title": "Medien einfügen",
"modal.insertMedia.description": "Wählen Sie ein Medium zum Einfügen.",
"modal.insertMedia.cancel": "Abbrechen",
"modal.insertMedia.searchPlaceholder": "Medien durchsuchen...",
"modal.insertMedia.loadFailed": "Das ausgewählte Medium konnte nicht geladen werden.",
"modal.postGallery.title": "Mediengalerie",
"modal.postGallery.description": "Klicken Sie auf ein Bild, um es in voller Größe anzuzeigen.",
"modal.postGallery.close": "Schließen",
"modal.postGallery.backToGrid": "Zurück zur Übersicht",
"modal.postGallery.unavailable": "Vorschau nicht verfügbar",
"modal.aiSuggestions.title": "KI-Vorschläge",
"modal.aiSuggestions.applySelected": "Auswahl anwenden",
"modal.languagePicker.title": "Übersetzen nach",
"sidebar.filter.search": "Suchen...",
"sidebar.filter.toggle": "Filter",
"sidebar.filter.clearAll": "Alle Filter zurücksetzen",
"sidebar.filter.status": "Status",
"sidebar.filter.language": "Sprache",
"sidebar.filter.dateRange": "Zeitraum",
"sidebar.filter.from": "Von (JJJJ-MM-TT)",
"sidebar.filter.to": "Bis (JJJJ-MM-TT)",
"editor.insertLink": "Link einfügen",
"editor.insertMedia": "Medium einfügen",
"editor.gallery": "Galerie",
"sidebar.filter.tags": "Tags",
"sidebar.filter.categories": "Kategorien",
"sidebar.filter.calendar": "Archiv",
"sidebar.filter.noResults": "Keine Treffer",
"editor.title": "Titel",
"editor.titlePlaceholder": "Titel eingeben...",
"editor.slug": "Slug",
"editor.slugPlaceholder": "slug-eingeben",
"editor.content": "Inhalt",
"editor.contentPlaceholder": "Inhalt schreiben...",
"editor.excerpt": "Auszug",
"editor.excerptPlaceholder": "Kurze Zusammenfassung...",
"editor.author": "Autor",
"editor.language": "Sprache",
"editor.aiAnalyze": "Mit KI analysieren",
"editor.detectLanguage": "Sprache erkennen",
"editor.quickActions": "Schnellaktionen",
"editor.modeMarkdown": "Markdown",
"editor.modePreview": "Vorschau",
"editor.suggestTaxonomy": "Taxonomie vorschlagen",
"editor.translate": "Übersetzen",
"editor.templateSlug": "Vorlage",
"editor.doNotTranslate": "Nicht übersetzen",
"editor.publish": "Veröffentlichen",
"editor.discard": "Verwerfen",
"editor.duplicate": "Duplizieren",
"editor.validate": "Validieren",
"editor.run": "Ausführen",
"editor.checkSyntax": "Syntax prüfen",
"editor.kind": "Art",
"editor.enabled": "Aktiviert",
"editor.entrypoint": "Einstiegspunkt",
"editor.alt": "Alternativtext",
"editor.altPlaceholder": "Bild beschreiben...",
"editor.caption": "Bildunterschrift",
"editor.metadata": "Metadaten",
"editor.tags": "Tags",
"editor.tagsPlaceholder": "Tag hinzufügen...",
"editor.categories": "Kategorien",
"editor.categoriesPlaceholder": "Kategorie hinzufügen...",
"editor.outlinks": "Ausgehende Links",
"editor.backlinks": "Eingehende Links",
"editor.linkedMedia": "Verknüpfte Medien",
"editor.linkedMediaEmpty": "Noch keine verknüpften Medien.",
"editor.linkExistingMedia": "Vorhandenes verknüpfen",
"editor.linkToPost": "Mit Beitrag verknüpfen",
"editor.linkedPosts": "Verknüpfte Beiträge",
"editor.linkedPostsEmpty": "Mit keinen Beiträgen verknüpft.",
"editor.postPickerSearch": "Beiträge suchen",
"editor.postPickerSearchPlaceholder": "Beiträge suchen...",
"editor.unlinkMedia": "Verknüpfung lösen",
"editor.linkedMediaKindImage": "Bild",
"editor.linkedMediaKindFile": "Datei",
"editor.untitled": "Ohne Titel",
"editor.createdAt": "Erstellt",
"editor.updatedAt": "Aktualisiert",
"editor.publishedAt": "Veröffentlicht",
"tags.noTags": "Noch keine Tags",
"tags.cloudSection": "Wolke",
"tags.cloudHelp": "Wählen Sie einen oder mehrere Tags aus, um sie zu bearbeiten, zu löschen oder zusammenzuführen.",
"tags.selectedCount": "{count} ausgewählt",
"tags.clearSelection": "Auswahl aufheben",
"tags.createSection": "Tag erstellen",
"tags.createPlaceholder": "neues-tag",
"tags.createButton": "Erstellen",
"tags.editTag": "Tag bearbeiten",
"tags.manageSection": "Verwalten",
"tags.name": "Name",
"tags.color": "Farbe",
"tags.colorPresets": "Farbvorgaben",
"tags.postTemplate": "Beitragsvorlage",
"tags.noTemplate": "Keine",
"tags.merge": "Zusammenführen",
"tags.mergeTarget": "Ziel-Tag",
"tags.mergeSection": "Zusammenführen",
"tags.mergeHelp": "Wählen Sie mindestens zwei Tags aus der Wolke oder Liste aus, um sie zusammenzuführen.",
"tags.mergePreview": "Zu löschende Tags: {tags}",
"tags.mergeConfirmTitle": "Tags zusammenführen",
"tags.mergeConfirmMessage": "{count} Tags in {target} zusammenführen? Dies kann nicht rückgängig gemacht werden.",
"tags.deleteUsage": "Dieses Tag wird in {count} Beiträgen verwendet.",
"tags.discoverSection": "Entdecken",
"tags.discoverDescription": "Tags aus aktuellen Beiträgen entdecken und tags.json passend zur Datenbank neu schreiben.",
"tags.discoverButton": "Entdecken",
"tags.selectTag": "Tag zum Bearbeiten auswählen",
"template.forceDeleteTitle": "Vorlage zwangsweise löschen",
"template.forceDeleteMessage": "Diese Vorlage wird von {posts} Beiträgen und {tags} Tags verwendet. Trotzdem löschen?",
"common.add": "Hinzufügen",
"common.remove": "Entfernen",
"common.clear": "Leeren",
"common.noResults": "Keine Ergebnisse",
"settings.projectName": "Projektname",
"settings.projectDescription": "Beschreibung",
"settings.dataPath": "Datenordner",
"settings.browse": "Durchsuchen...",
"settings.reset": "Zurücksetzen",
"settings.publicUrl": "Öffentliche URL",
"settings.mainLanguage": "Hauptsprache",
"settings.mainLanguageRequired": "erforderlich",
"settings.blogLanguages": "Blogsprachen",
"settings.defaultAuthor": "Standardautor",
"settings.maxPostsPerPage": "Beiträge pro Seite",
"settings.blogmarkCategory": "Blogmark-Kategorie",
"settings.defaultMode": "Standard-Editormodus",
"settings.diffViewStyle": "Diff-Ansicht",
"settings.categoryTitle": "Titel für {category}",
"settings.categoryPostTemplate": "Beitragsvorlage",
"settings.categoryListTemplate": "Listenvorlage",
"settings.categoryRenderInLists": "In Listen rendern",
"settings.categoryShowTitles": "Titel anzeigen",
"settings.addCategory": "Kategorie hinzufügen",
"settings.resetCategories": "Auf Standard zurücksetzen",
"settings.wrapLongLines": "Lange Zeilen umbrechen",
"settings.hideUnchangedRegions": "Unveränderte Bereiche ausblenden",
"settings.offlineMode": "Flugmodus",
"settings.onlineEndpointSection": "Online-Endpunkt",
"settings.onlineEndpointUrl": "URL des Online-Endpunkts",
"settings.onlineEndpointModel": "Modell des Online-Endpunkts",
"settings.onlineApiKey": "Online-API-Schlüssel",
"settings.airplaneEndpointSection": "Flugmodus-Endpunkt",
"settings.airplaneEndpointUrl": "URL des Flugmodus-Endpunkts",
"settings.airplaneEndpointModel": "Modell des Flugmodus-Endpunkts",
"settings.refreshModels": "Modelle aktualisieren",
"settings.defaultModel": "Standardmodell",
"settings.titleModel": "Titelmodell",
"settings.imageAnalysisModel": "Bildanalysemodell",
"settings.keychainConfigured": "Im Schlüsselbund gespeichert",
"settings.systemPrompt": "System-Prompt",
"settings.resetToDefault": "Auf Standard zurücksetzen",
"settings.luaRuntimeOnly": "Lua ist die einzige Skriptlaufzeit in der Rust-App.",
"settings.semanticSimilarityEnabled": "Semantische Ähnlichkeit",
"settings.sshHost": "SSH-Host",
"settings.sshUsername": "SSH-Benutzername",
"settings.sshRemotePath": "Remote-Pfad",
"settings.clear": "Leeren",
"settings.rebuildPosts": "Beiträge neu aufbauen",
"settings.rebuildMedia": "Medien neu aufbauen",
"settings.rebuildScripts": "Skripte neu aufbauen",
"settings.rebuildTemplates": "Vorlagen neu aufbauen",
"settings.rebuildLinks": "Links neu aufbauen",
"settings.regenerateThumbnails": "Vorschaubilder regenerieren",
"settings.openDataFolder": "Datenordner öffnen",
"settings.contentPlaceholder": "Inhaltseinstellungen erscheinen hier",
"settings.technologyPlaceholder": "Technologieeinstellungen erscheinen hier",
"settings.mcpPlaceholder": "MCP-Server-Einstellungen erscheinen hier",
"dashboard.overview": "Übersicht",
"dashboard.posts": "Beiträge",
"dashboard.media": "Medien",
"dashboard.tags": "Tags",
"dashboard.categories": "Kategorien",
"dashboard.images": "Bilder",
"dashboard.drafts": "Entwürfe",
"dashboard.published": "Veröffentlicht",
"dashboard.archived": "Archiviert",
"dashboard.statCards": "Überblick",
"dashboard.timeline": "Zeitachse",
"dashboard.noTimelineData": "Noch keine Zeitachsendaten",
"dashboard.tagCloud": "Tag-Wolke",
"dashboard.noTags": "Noch keine Tags",
"dashboard.categoryCloud": "Kategorie-Wolke",
"dashboard.recentPosts": "Letzte Beiträge",
"dashboard.noRecentPosts": "Keine aktuellen Beiträge",
"dashboard.and": "und",
"dashboard.pin": "Anheften",
"common.tabNotImplemented": "Dieser Bereich wird in einem späteren Meilenstein implementiert.",
"editor.noPreviewAvailable": "Keine Vorschau verfügbar"
}

385
locales/ui/en.ftl Normal file
View File

@@ -0,0 +1,385 @@
menu-group-file = File
menu-group-edit = Edit
menu-group-view = View
menu-group-blog = Blog
menu-group-help = Help
menu-item-newPost = New Post
menu-item-importMedia = Import Media...
menu-item-save = Save
menu-item-openInBrowser = Open in Browser
menu-item-openDataFolder = Open Data Folder
menu-item-find = Find
menu-item-replace = Replace
menu-item-editPreferences = Edit Preferences
menu-item-viewPosts = Posts
menu-item-viewMedia = Media
menu-item-toggleSidebar = Toggle Sidebar
menu-item-togglePanel = Toggle Panel
menu-item-publishSelected = Publish Selected
menu-item-previewPost = Preview Post
menu-item-rebuildDatabase = Rebuild Database from Files
menu-item-reindexText = Reindex Search Text
menu-item-metadataDiff = Metadata Diff Tool
menu-item-editMenu = Edit Blog Menu
menu-item-generateSitemap = Render Site
menu-item-regenerateCalendar = Regenerate Calendar
menu-item-validateSite = Validate Site
menu-item-validateTranslations = Validate Translations
menu-item-fillMissingTranslations = Fill Missing Translations
menu-item-uploadSite = Upload Site
menu-item-about = About Blogging Desktop Server
menu-item-openDocumentation = Open Documentation
menu-item-viewOnGitHub = View on GitHub
menu-item-reportIssue = Report Issue
activity-posts = Posts
activity-pages = Pages
activity-media = Media
activity-scripts = Scripts
activity-tags = Tags
activity-templates = Templates
activity-aiAssistant = AI Assistant
activity-import = Import
activity-sourceControl = Source Control
common-save = Save
common-open = Open
common-cancel = Cancel
common-settings = Settings
common-tasks = Tasks
common-running = running
common-pending = pending
tasks-backgroundTasks = Background Tasks
tasks-clearCompleted = Clear completed
tasks-noActive = No active tasks
tasks-cancelTask = Cancel task
tasks-triggerTitle = { $running } running, { $pending } pending
app-taskCompleted = Task completed: { $message }
app-taskFailed = Task failed: { $message }
app-databaseRebuildFailed = Database rebuild failed
app-textReindexFailed = Text reindex failed
panel-output = Output
panel-postLinks = Post Links
panel-gitLog = Git Log
panel-postLinksPlaceholder = No post links to display
panel-gitLogPlaceholder = No git history to display
panel-closeTitle = Close panel
panel-noRecentTasks = No recent tasks
panel-noOutput = No output
statusBar-posts = { $count } posts
statusBar-media = { $count } media
statusBar-ui = UI
statusBar-uiLanguage = UI Language
statusBar-offlineMode = Airplane Mode
statusBar-offlineModeActive = Airplane Mode (active)
projectSelector-switchProject = Switch project
projectSelector-projectsHeader = Projects
projectSelector-newProject = New Project
projectSelector-createProject = Create Project
projectSelector-projectName = Project name
projectSelector-projectNamePlaceholder = My Blog
projectSelector-chooseFolder = Choose folder...
projectSelector-useDefaultLocation = Use default location
projectSelector-deleteProject = Delete Project
projectSelector-toast-switched = Switched to { $name }
projectSelector-toast-switchFailed = Project switch failed
projectSelector-toast-created = Project "{ $name }" created
projectSelector-toast-createFailed = Failed to create project
projectSelector-toast-deleteFailed = Failed to delete project
tabBar-closeHint = Close
tabBar-loading = Loading...
tabBar-unknown = Unknown
tabBar-style = Style
tabBar-menuEditor = Menu Editor
tabBar-metadataDiff = Metadata Diff
tabBar-siteValidation = Site Validation
tabBar-translationValidation = Translation Validation
siteValidation-run = Run Validation
siteValidation-apply = Apply Validation
siteValidation-applying = Applying...
siteValidation-idle = Run site validation to compare generated files against expected output.
siteValidation-running = Validation in progress...
siteValidation-clean = No missing, extra, or stale generated files were found.
siteValidation-error = Validation failed
siteValidation-missing = Missing Files
siteValidation-extra = Extra Files
siteValidation-stale = Stale Files
tabBar-documentation = Documentation
tabBar-apiDocumentation = API Documentation
tabBar-findDuplicates = Find Duplicates
tabBar-tags = Tags
tabBar-preview = Preview
tabBar-modified = Modified
sidebar-noPostsYet = No posts yet
sidebar-noPagesYet = No pages yet
sidebar-noMediaYet = No media yet
sidebar-noScriptsYet = No scripts yet
sidebar-noTemplatesYet = No templates yet
sidebar-chatPlaceholder = AI assistant will appear here
sidebar-importPlaceholder = Import content from external sources
sidebar-gitPlaceholder = Source control integration
sidebar-loading = Loading...
sidebar-settingsHeader = Settings
sidebar-tagsHeader = Tags
sidebar-drafts = Drafts
sidebar-published = Published
sidebar-archived = Archived
sidebar-loadMore = Load More…
language-en = English
language-de = German
language-fr = French
language-it = Italian
language-es = Spanish
welcome-title = Welcome to bDS
welcome-subtitle = Open a project or create a new post to get started.
post-untitled = Untitled
post-createFailed = Failed to create post: { $error }
engine-rebuildStarted = Rebuilding database from files...
engine-rebuildComplete = Database rebuilt: { $posts } posts, { $media } media, { $templates } templates, { $scripts } scripts
engine-rebuildFailed = Database rebuild failed: { $error }
engine-reindexStarted = Reindexing search text...
engine-reindexComplete = Search text reindexed: { $posts } posts, { $media } media
engine-reindexFailed = Search text reindex failed: { $error }
engine-calendarStarted = Regenerating calendar...
engine-calendarComplete = Calendar regenerated
engine-calendarFailed = Calendar regeneration failed: { $error }
engine-calendarNoProject = No active project
engine-validateTranslationsStarted = Validating translations...
engine-validateMediaStarted = Validating media assets...
engine-validateTranslationsComplete = Translation validation: { $dbIssues } DB issues, { $fsIssues } filesystem issues
engine-validateTranslationsFailed = Translation validation failed: { $error }
engine-fillMissingTranslationsOffline = Cannot fill translations: AI is unavailable in offline mode
engine-fillMissingTranslationsNoAi = Cannot fill translations: AI not yet available
engine-uploadStarted = Uploading site...
engine-uploadMissingCredentials = Publishing credentials incomplete. Configure in project settings.
engine-uploadOffline = Cannot upload: airplane mode is active
engine-generateSiteStarted = Generating site...
engine-generateSiteNoProject = No active project
engine-previewDataDirUnavailable = Project data directory unavailable
engine-previewPortInUse = Preview server port is already in use
dialog-selectFolder = Select Folder
dialog-importMedia = Import Media
dialog-imageFilter = Images
settings-nav-project = Project
settings-nav-editor = Editor
settings-nav-content = Content
settings-nav-ai = AI
settings-nav-technology = Technology
settings-nav-publishing = Publishing
settings-nav-data = Data
settings-nav-mcp = MCP
settings-nav-style = Style
tags-nav-cloud = Tag Cloud
tags-nav-manage = Manage Tags
tags-nav-merge = Merge Tags
tags-nav-discover = Discover Tags
sidebar-chatYesterday = Yesterday
modal-confirmDelete-title = Confirm Delete
modal-confirmDelete-warning = This action cannot be undone.
modal-confirmDelete-cancel = Cancel
modal-confirmDelete-delete = Delete
modal-confirm-title = Confirm
modal-confirm-cancel = Cancel
modal-confirm-confirm = Confirm
modal-postInsertLink-title = Insert Link
modal-postInsertLink-description = Select a post to link to.
modal-postInsertLink-cancel = Cancel
modal-postInsertLink-tabInternal = Internal
modal-postInsertLink-tabExternal = External
modal-postInsertLink-searchPlaceholder = Search posts...
modal-postInsertLink-emptyState = Start typing to search posts or use related posts
modal-postInsertLink-createPost = Create Post
modal-postInsertLink-insert = Insert
modal-postInsertLink-externalUrlPlaceholder = https://example.com
modal-postInsertLink-externalTextPlaceholder = Display text (optional)
modal-postInsertLink-urlRequired = A URL is required.
modal-postInsertLink-titleRequired = Enter a title to create a linked post.
modal-postInsertLink-createFailed = Failed to create the linked post.
modal-postInsertLink-loadFailed = Failed to load the selected post.
modal-insertMedia-title = Insert Media
modal-insertMedia-description = Select a media item to insert.
modal-insertMedia-cancel = Cancel
modal-insertMedia-searchPlaceholder = Search media...
modal-insertMedia-loadFailed = Failed to load the selected media item.
modal-postGallery-title = Media Gallery
modal-postGallery-description = Click an image to view full size.
modal-postGallery-close = Close
modal-postGallery-backToGrid = Back to Grid
modal-postGallery-unavailable = Preview unavailable
modal-aiSuggestions-title = AI Suggestions
modal-aiSuggestions-applySelected = Apply Selected
modal-languagePicker-title = Translate To
sidebar-filter-search = Search...
sidebar-filter-toggle = Filters
sidebar-filter-clearAll = Clear All Filters
sidebar-filter-status = Status
sidebar-filter-language = Language
sidebar-filter-dateRange = Date Range
sidebar-filter-from = From (YYYY-MM-DD)
sidebar-filter-to = To (YYYY-MM-DD)
sidebar-filter-tags = Tags
sidebar-filter-categories = Categories
sidebar-filter-calendar = Archive
sidebar-filter-noResults = No matching items
editor-title = Title
editor-titlePlaceholder = Enter title...
editor-slug = Slug
editor-slugPlaceholder = enter-slug
editor-content = Content
editor-contentPlaceholder = Write your content...
editor-excerpt = Excerpt
editor-excerptPlaceholder = Brief summary...
editor-author = Author
editor-language = Language
editor-aiAnalyze = Analyze with AI
editor-detectLanguage = Detect Language
editor-quickActions = Quick Actions
editor-modeMarkdown = Markdown
editor-modePreview = Preview
editor-suggestTaxonomy = Suggest Taxonomy
editor-translate = Translate
editor-templateSlug = Template
editor-doNotTranslate = Do Not Translate
editor-publish = Publish
editor-discard = Discard
editor-duplicate = Duplicate
editor-validate = Validate
editor-run = Run
editor-checkSyntax = Check Syntax
editor-kind = Kind
editor-enabled = Enabled
editor-entrypoint = Entrypoint
editor-alt = Alt Text
editor-altPlaceholder = Describe the image...
editor-caption = Caption
editor-metadata = Metadata
editor-tags = Tags
editor-tagsPlaceholder = Add tag...
editor-categories = Categories
editor-categoriesPlaceholder = Add category...
editor-outlinks = Outgoing Links
editor-backlinks = Incoming Links
editor-linkedMedia = Linked Media
editor-linkedMediaEmpty = No linked media yet.
editor-linkExistingMedia = Link Existing
editor-linkToPost = Link to Post
editor-linkedPosts = Linked Posts
editor-linkedPostsEmpty = Not linked to any posts.
editor-postPickerSearch = Search Posts
editor-postPickerSearchPlaceholder = Search posts...
editor-unlinkMedia = Unlink
editor-linkedMediaKindImage = Image
editor-linkedMediaKindFile = File
editor-untitled = Untitled
editor-createdAt = Created
editor-updatedAt = Updated
editor-publishedAt = Published
editor-insertLink = Insert Link
editor-insertMedia = Insert Media
editor-gallery = Gallery
tags-noTags = No tags yet
tags-cloudSection = Cloud
tags-cloudHelp = Select one or more tags to edit, delete, or merge them.
tags-selectedCount = { $count } selected
tags-clearSelection = Clear selection
tags-createSection = Create Tag
tags-createPlaceholder = new-tag
tags-createButton = Create
tags-editTag = Edit Tag
tags-manageSection = Manage
tags-name = Name
tags-color = Color
tags-colorPresets = Color presets
tags-postTemplate = Post Template
tags-noTemplate = None
tags-merge = Merge
tags-mergeTarget = Target Tag
tags-mergeSection = Merge
tags-mergeHelp = Select at least two tags from the cloud or list to merge them.
tags-mergePreview = Tags to delete: { $tags }
tags-mergeConfirmTitle = Merge Tags
tags-mergeConfirmMessage = Merge { $count } tags into { $target }? This cannot be undone.
tags-deleteUsage = This tag is used in { $count } posts.
tags-discoverSection = Discover
tags-discoverDescription = Discover tags from current posts and rewrite tags.json to match the database.
tags-discoverButton = Discover
tags-selectTag = Select a tag to edit
template-forceDeleteTitle = Force Delete Template
template-forceDeleteMessage = This template is used by { $posts } posts and { $tags } tags. Force delete?
common-add = Add
common-remove = Remove
common-clear = Clear
common-noResults = No results
settings-projectName = Project Name
settings-projectDescription = Description
settings-dataPath = Data Folder
settings-browse = Browse...
settings-reset = Reset
settings-publicUrl = Public URL
settings-mainLanguage = Main Language
settings-mainLanguageRequired = required
settings-blogLanguages = Blog Languages
settings-defaultAuthor = Default Author
settings-maxPostsPerPage = Posts per Page
settings-blogmarkCategory = Blogmark Category
settings-defaultMode = Default Editor Mode
settings-diffViewStyle = Diff View Style
settings-categoryTitle = Title for { $category }
settings-categoryPostTemplate = Post Template
settings-categoryListTemplate = List Template
settings-categoryRenderInLists = Render in Lists
settings-categoryShowTitles = Show Titles
settings-addCategory = Add Category
settings-resetCategories = Reset to Defaults
settings-wrapLongLines = Wrap Long Lines
settings-hideUnchangedRegions = Hide Unchanged Regions
settings-offlineMode = Airplane Mode
settings-onlineEndpointSection = Online Endpoint
settings-onlineEndpointUrl = Online Endpoint URL
settings-onlineEndpointModel = Online Endpoint Model
settings-onlineApiKey = Online API Key
settings-airplaneEndpointSection = Airplane Endpoint
settings-airplaneEndpointUrl = Airplane Endpoint URL
settings-airplaneEndpointModel = Airplane Endpoint Model
settings-refreshModels = Refresh Models
settings-defaultModel = Default Model
settings-titleModel = Title Model
settings-imageAnalysisModel = Image Analysis Model
settings-keychainConfigured = Stored in keychain
settings-systemPrompt = System Prompt
settings-resetToDefault = Reset to Default
settings-luaRuntimeOnly = Lua is the only scripting runtime in the Rust app.
settings-semanticSimilarityEnabled = Semantic Similarity
settings-sshHost = SSH Host
settings-sshUsername = SSH Username
settings-sshRemotePath = Remote Path
settings-clear = Clear
settings-rebuildPosts = Rebuild Posts
settings-rebuildMedia = Rebuild Media
settings-rebuildScripts = Rebuild Scripts
settings-rebuildTemplates = Rebuild Templates
settings-rebuildLinks = Rebuild Links
settings-regenerateThumbnails = Regenerate Thumbnails
settings-openDataFolder = Open Data Folder
settings-contentPlaceholder = Content settings will appear here
settings-technologyPlaceholder = Technology settings will appear here
settings-mcpPlaceholder = MCP server settings will appear here
dashboard-overview = Overview
dashboard-posts = Posts
dashboard-media = Media
dashboard-tags = Tags
dashboard-categories = Categories
dashboard-images = Images
dashboard-drafts = Drafts
dashboard-published = Published
dashboard-archived = Archived
dashboard-statCards = Snapshot
dashboard-timeline = Timeline
dashboard-noTimelineData = No timeline data yet
dashboard-tagCloud = Tag Cloud
dashboard-noTags = No tags yet
dashboard-categoryCloud = Category Cloud
dashboard-recentPosts = Recent Posts
dashboard-noRecentPosts = No recent posts
dashboard-and = and
dashboard-pin = Pin
common-tabNotImplemented = This area will be implemented in a later milestone.
editor-noPreviewAvailable = No preview available

View File

@@ -1,387 +0,0 @@
{
"menu.group.file": "File",
"menu.group.edit": "Edit",
"menu.group.view": "View",
"menu.group.blog": "Blog",
"menu.group.help": "Help",
"menu.item.newPost": "New Post",
"menu.item.importMedia": "Import Media...",
"menu.item.save": "Save",
"menu.item.openInBrowser": "Open in Browser",
"menu.item.openDataFolder": "Open Data Folder",
"menu.item.find": "Find",
"menu.item.replace": "Replace",
"menu.item.editPreferences": "Edit Preferences",
"menu.item.viewPosts": "Posts",
"menu.item.viewMedia": "Media",
"menu.item.toggleSidebar": "Toggle Sidebar",
"menu.item.togglePanel": "Toggle Panel",
"menu.item.publishSelected": "Publish Selected",
"menu.item.previewPost": "Preview Post",
"menu.item.rebuildDatabase": "Rebuild Database from Files",
"menu.item.reindexText": "Reindex Search Text",
"menu.item.metadataDiff": "Metadata Diff Tool",
"menu.item.editMenu": "Edit Blog Menu",
"menu.item.generateSitemap": "Render Site",
"menu.item.regenerateCalendar": "Regenerate Calendar",
"menu.item.validateSite": "Validate Site",
"menu.item.validateTranslations": "Validate Translations",
"menu.item.fillMissingTranslations": "Fill Missing Translations",
"menu.item.uploadSite": "Upload Site",
"menu.item.about": "About Blogging Desktop Server",
"menu.item.openDocumentation": "Open Documentation",
"menu.item.viewOnGitHub": "View on GitHub",
"menu.item.reportIssue": "Report Issue",
"activity.posts": "Posts",
"activity.pages": "Pages",
"activity.media": "Media",
"activity.scripts": "Scripts",
"activity.tags": "Tags",
"activity.templates": "Templates",
"activity.aiAssistant": "AI Assistant",
"activity.import": "Import",
"activity.sourceControl": "Source Control",
"common.save": "Save",
"common.open": "Open",
"common.cancel": "Cancel",
"common.settings": "Settings",
"common.tasks": "Tasks",
"common.running": "running",
"common.pending": "pending",
"tasks.backgroundTasks": "Background Tasks",
"tasks.clearCompleted": "Clear completed",
"tasks.noActive": "No active tasks",
"tasks.cancelTask": "Cancel task",
"tasks.triggerTitle": "{running} running, {pending} pending",
"app.taskCompleted": "Task completed: {message}",
"app.taskFailed": "Task failed: {message}",
"app.databaseRebuildFailed": "Database rebuild failed",
"app.textReindexFailed": "Text reindex failed",
"panel.output": "Output",
"panel.postLinks": "Post Links",
"panel.gitLog": "Git Log",
"panel.postLinksPlaceholder": "No post links to display",
"panel.gitLogPlaceholder": "No git history to display",
"panel.closeTitle": "Close panel",
"panel.noRecentTasks": "No recent tasks",
"panel.noOutput": "No output",
"statusBar.posts": "{count} posts",
"statusBar.media": "{count} media",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "UI Language",
"statusBar.offlineMode": "Airplane Mode",
"statusBar.offlineModeActive": "Airplane Mode (active)",
"projectSelector.switchProject": "Switch project",
"projectSelector.projectsHeader": "Projects",
"projectSelector.newProject": "New Project",
"projectSelector.createProject": "Create Project",
"projectSelector.projectName": "Project name",
"projectSelector.projectNamePlaceholder": "My Blog",
"projectSelector.chooseFolder": "Choose folder...",
"projectSelector.useDefaultLocation": "Use default location",
"projectSelector.deleteProject": "Delete Project",
"projectSelector.toast.switched": "Switched to {name}",
"projectSelector.toast.switchFailed": "Project switch failed",
"projectSelector.toast.created": "Project \"{name}\" created",
"projectSelector.toast.createFailed": "Failed to create project",
"projectSelector.toast.deleteFailed": "Failed to delete project",
"tabBar.closeHint": "Close",
"tabBar.loading": "Loading...",
"tabBar.unknown": "Unknown",
"tabBar.style": "Style",
"tabBar.menuEditor": "Menu Editor",
"tabBar.metadataDiff": "Metadata Diff",
"tabBar.siteValidation": "Site Validation",
"tabBar.translationValidation": "Translation Validation",
"siteValidation.run": "Run Validation",
"siteValidation.apply": "Apply Validation",
"siteValidation.applying": "Applying...",
"siteValidation.idle": "Run site validation to compare generated files against expected output.",
"siteValidation.running": "Validation in progress...",
"siteValidation.clean": "No missing, extra, or stale generated files were found.",
"siteValidation.error": "Validation failed",
"siteValidation.missing": "Missing Files",
"siteValidation.extra": "Extra Files",
"siteValidation.stale": "Stale Files",
"tabBar.documentation": "Documentation",
"tabBar.apiDocumentation": "API Documentation",
"tabBar.findDuplicates": "Find Duplicates",
"tabBar.tags": "Tags",
"tabBar.preview": "Preview",
"tabBar.modified": "Modified",
"sidebar.noPostsYet": "No posts yet",
"sidebar.noPagesYet": "No pages yet",
"sidebar.noMediaYet": "No media yet",
"sidebar.noScriptsYet": "No scripts yet",
"sidebar.noTemplatesYet": "No templates yet",
"sidebar.chatPlaceholder": "AI assistant will appear here",
"sidebar.importPlaceholder": "Import content from external sources",
"sidebar.gitPlaceholder": "Source control integration",
"sidebar.loading": "Loading...",
"sidebar.settingsHeader": "Settings",
"sidebar.tagsHeader": "Tags",
"sidebar.drafts": "Drafts",
"sidebar.published": "Published",
"sidebar.archived": "Archived",
"sidebar.loadMore": "Load More…",
"language.en": "English",
"language.de": "German",
"language.fr": "French",
"language.it": "Italian",
"language.es": "Spanish",
"welcome.title": "Welcome to bDS",
"welcome.subtitle": "Open a project or create a new post to get started.",
"post.untitled": "Untitled",
"post.createFailed": "Failed to create post: {error}",
"engine.rebuildStarted": "Rebuilding database from files...",
"engine.rebuildComplete": "Database rebuilt: {posts} posts, {media} media, {templates} templates, {scripts} scripts",
"engine.rebuildFailed": "Database rebuild failed: {error}",
"engine.reindexStarted": "Reindexing search text...",
"engine.reindexComplete": "Search text reindexed: {posts} posts, {media} media",
"engine.reindexFailed": "Search text reindex failed: {error}",
"engine.calendarStarted": "Regenerating calendar...",
"engine.calendarComplete": "Calendar regenerated",
"engine.calendarFailed": "Calendar regeneration failed: {error}",
"engine.calendarNoProject": "No active project",
"engine.validateTranslationsStarted": "Validating translations...",
"engine.validateMediaStarted": "Validating media assets...",
"engine.validateTranslationsComplete": "Translation validation: {dbIssues} DB issues, {fsIssues} filesystem issues",
"engine.validateTranslationsFailed": "Translation validation failed: {error}",
"engine.fillMissingTranslationsOffline": "Cannot fill translations: AI is unavailable in offline mode",
"engine.fillMissingTranslationsNoAi": "Cannot fill translations: AI not yet available",
"engine.uploadStarted": "Uploading site...",
"engine.uploadMissingCredentials": "Publishing credentials incomplete. Configure in project settings.",
"engine.uploadOffline": "Cannot upload: airplane mode is active",
"engine.generateSiteStarted": "Generating site...",
"engine.generateSiteNoProject": "No active project",
"engine.previewDataDirUnavailable": "Project data directory unavailable",
"engine.previewPortInUse": "Preview server port is already in use",
"dialog.selectFolder": "Select Folder",
"dialog.importMedia": "Import Media",
"dialog.imageFilter": "Images",
"settings.nav.project": "Project",
"settings.nav.editor": "Editor",
"settings.nav.content": "Content",
"settings.nav.ai": "AI",
"settings.nav.technology": "Technology",
"settings.nav.publishing": "Publishing",
"settings.nav.data": "Data",
"settings.nav.mcp": "MCP",
"settings.nav.style": "Style",
"tags.nav.cloud": "Tag Cloud",
"tags.nav.manage": "Manage Tags",
"tags.nav.merge": "Merge Tags",
"tags.nav.discover": "Discover Tags",
"sidebar.chatYesterday": "Yesterday",
"modal.confirmDelete.title": "Confirm Delete",
"modal.confirmDelete.warning": "This action cannot be undone.",
"modal.confirmDelete.cancel": "Cancel",
"modal.confirmDelete.delete": "Delete",
"modal.confirm.title": "Confirm",
"modal.confirm.cancel": "Cancel",
"modal.confirm.confirm": "Confirm",
"modal.postInsertLink.title": "Insert Link",
"modal.postInsertLink.description": "Select a post to link to.",
"modal.postInsertLink.cancel": "Cancel",
"modal.postInsertLink.tabInternal": "Internal",
"modal.postInsertLink.tabExternal": "External",
"modal.postInsertLink.searchPlaceholder": "Search posts...",
"modal.postInsertLink.emptyState": "Start typing to search posts or use related posts",
"modal.postInsertLink.createPost": "Create Post",
"modal.postInsertLink.insert": "Insert",
"modal.postInsertLink.externalUrlPlaceholder": "https://example.com",
"modal.postInsertLink.externalTextPlaceholder": "Display text (optional)",
"modal.postInsertLink.urlRequired": "A URL is required.",
"modal.postInsertLink.titleRequired": "Enter a title to create a linked post.",
"modal.postInsertLink.createFailed": "Failed to create the linked post.",
"modal.postInsertLink.loadFailed": "Failed to load the selected post.",
"modal.insertMedia.title": "Insert Media",
"modal.insertMedia.description": "Select a media item to insert.",
"modal.insertMedia.cancel": "Cancel",
"modal.insertMedia.searchPlaceholder": "Search media...",
"modal.insertMedia.loadFailed": "Failed to load the selected media item.",
"modal.postGallery.title": "Media Gallery",
"modal.postGallery.description": "Click an image to view full size.",
"modal.postGallery.close": "Close",
"modal.postGallery.backToGrid": "Back to Grid",
"modal.postGallery.unavailable": "Preview unavailable",
"modal.aiSuggestions.title": "AI Suggestions",
"modal.aiSuggestions.applySelected": "Apply Selected",
"modal.languagePicker.title": "Translate To",
"sidebar.filter.search": "Search...",
"sidebar.filter.toggle": "Filters",
"sidebar.filter.clearAll": "Clear All Filters",
"sidebar.filter.status": "Status",
"sidebar.filter.language": "Language",
"sidebar.filter.dateRange": "Date Range",
"sidebar.filter.from": "From (YYYY-MM-DD)",
"sidebar.filter.to": "To (YYYY-MM-DD)",
"sidebar.filter.tags": "Tags",
"sidebar.filter.categories": "Categories",
"sidebar.filter.calendar": "Archive",
"sidebar.filter.noResults": "No matching items",
"editor.title": "Title",
"editor.titlePlaceholder": "Enter title...",
"editor.slug": "Slug",
"editor.slugPlaceholder": "enter-slug",
"editor.content": "Content",
"editor.contentPlaceholder": "Write your content...",
"editor.excerpt": "Excerpt",
"editor.excerptPlaceholder": "Brief summary...",
"editor.author": "Author",
"editor.language": "Language",
"editor.aiAnalyze": "Analyze with AI",
"editor.detectLanguage": "Detect Language",
"editor.quickActions": "Quick Actions",
"editor.modeMarkdown": "Markdown",
"editor.modePreview": "Preview",
"editor.suggestTaxonomy": "Suggest Taxonomy",
"editor.translate": "Translate",
"editor.templateSlug": "Template",
"editor.doNotTranslate": "Do Not Translate",
"editor.publish": "Publish",
"editor.discard": "Discard",
"editor.duplicate": "Duplicate",
"editor.validate": "Validate",
"editor.run": "Run",
"editor.checkSyntax": "Check Syntax",
"editor.kind": "Kind",
"editor.enabled": "Enabled",
"editor.entrypoint": "Entrypoint",
"editor.alt": "Alt Text",
"editor.altPlaceholder": "Describe the image...",
"editor.caption": "Caption",
"editor.metadata": "Metadata",
"editor.tags": "Tags",
"editor.tagsPlaceholder": "Add tag...",
"editor.categories": "Categories",
"editor.categoriesPlaceholder": "Add category...",
"editor.outlinks": "Outgoing Links",
"editor.backlinks": "Incoming Links",
"editor.linkedMedia": "Linked Media",
"editor.linkedMediaEmpty": "No linked media yet.",
"editor.linkExistingMedia": "Link Existing",
"editor.linkToPost": "Link to Post",
"editor.linkedPosts": "Linked Posts",
"editor.linkedPostsEmpty": "Not linked to any posts.",
"editor.postPickerSearch": "Search Posts",
"editor.postPickerSearchPlaceholder": "Search posts...",
"editor.unlinkMedia": "Unlink",
"editor.linkedMediaKindImage": "Image",
"editor.linkedMediaKindFile": "File",
"editor.untitled": "Untitled",
"editor.createdAt": "Created",
"editor.updatedAt": "Updated",
"editor.publishedAt": "Published",
"editor.insertLink": "Insert Link",
"editor.insertMedia": "Insert Media",
"editor.gallery": "Gallery",
"tags.noTags": "No tags yet",
"tags.cloudSection": "Cloud",
"tags.cloudHelp": "Select one or more tags to edit, delete, or merge them.",
"tags.selectedCount": "{count} selected",
"tags.clearSelection": "Clear selection",
"tags.createSection": "Create Tag",
"tags.createPlaceholder": "new-tag",
"tags.createButton": "Create",
"tags.editTag": "Edit Tag",
"tags.manageSection": "Manage",
"tags.name": "Name",
"tags.color": "Color",
"tags.colorPresets": "Color presets",
"tags.postTemplate": "Post Template",
"tags.noTemplate": "None",
"tags.merge": "Merge",
"tags.mergeTarget": "Target Tag",
"tags.mergeSection": "Merge",
"tags.mergeHelp": "Select at least two tags from the cloud or list to merge them.",
"tags.mergePreview": "Tags to delete: {tags}",
"tags.mergeConfirmTitle": "Merge Tags",
"tags.mergeConfirmMessage": "Merge {count} tags into {target}? This cannot be undone.",
"tags.deleteUsage": "This tag is used in {count} posts.",
"tags.discoverSection": "Discover",
"tags.discoverDescription": "Discover tags from current posts and rewrite tags.json to match the database.",
"tags.discoverButton": "Discover",
"tags.selectTag": "Select a tag to edit",
"template.forceDeleteTitle": "Force Delete Template",
"template.forceDeleteMessage": "This template is used by {posts} posts and {tags} tags. Force delete?",
"common.add": "Add",
"common.remove": "Remove",
"common.clear": "Clear",
"common.noResults": "No results",
"settings.projectName": "Project Name",
"settings.projectDescription": "Description",
"settings.dataPath": "Data Folder",
"settings.browse": "Browse...",
"settings.reset": "Reset",
"settings.publicUrl": "Public URL",
"settings.mainLanguage": "Main Language",
"settings.mainLanguageRequired": "required",
"settings.blogLanguages": "Blog Languages",
"settings.defaultAuthor": "Default Author",
"settings.maxPostsPerPage": "Posts per Page",
"settings.blogmarkCategory": "Blogmark Category",
"settings.defaultMode": "Default Editor Mode",
"settings.diffViewStyle": "Diff View Style",
"settings.categoryTitle": "Title for {category}",
"settings.categoryPostTemplate": "Post Template",
"settings.categoryListTemplate": "List Template",
"settings.categoryRenderInLists": "Render in Lists",
"settings.categoryShowTitles": "Show Titles",
"settings.addCategory": "Add Category",
"settings.resetCategories": "Reset to Defaults",
"settings.wrapLongLines": "Wrap Long Lines",
"settings.hideUnchangedRegions": "Hide Unchanged Regions",
"settings.offlineMode": "Airplane Mode",
"settings.onlineEndpointSection": "Online Endpoint",
"settings.onlineEndpointUrl": "Online Endpoint URL",
"settings.onlineEndpointModel": "Online Endpoint Model",
"settings.onlineApiKey": "Online API Key",
"settings.airplaneEndpointSection": "Airplane Endpoint",
"settings.airplaneEndpointUrl": "Airplane Endpoint URL",
"settings.airplaneEndpointModel": "Airplane Endpoint Model",
"settings.refreshModels": "Refresh Models",
"settings.defaultModel": "Default Model",
"settings.titleModel": "Title Model",
"settings.imageAnalysisModel": "Image Analysis Model",
"settings.keychainConfigured": "Stored in keychain",
"settings.systemPrompt": "System Prompt",
"settings.resetToDefault": "Reset to Default",
"settings.luaRuntimeOnly": "Lua is the only scripting runtime in the Rust app.",
"settings.semanticSimilarityEnabled": "Semantic Similarity",
"settings.sshHost": "SSH Host",
"settings.sshUsername": "SSH Username",
"settings.sshRemotePath": "Remote Path",
"settings.clear": "Clear",
"settings.rebuildPosts": "Rebuild Posts",
"settings.rebuildMedia": "Rebuild Media",
"settings.rebuildScripts": "Rebuild Scripts",
"settings.rebuildTemplates": "Rebuild Templates",
"settings.rebuildLinks": "Rebuild Links",
"settings.regenerateThumbnails": "Regenerate Thumbnails",
"settings.openDataFolder": "Open Data Folder",
"settings.contentPlaceholder": "Content settings will appear here",
"settings.technologyPlaceholder": "Technology settings will appear here",
"settings.mcpPlaceholder": "MCP server settings will appear here",
"dashboard.overview": "Overview",
"dashboard.posts": "Posts",
"dashboard.media": "Media",
"dashboard.tags": "Tags",
"dashboard.categories": "Categories",
"dashboard.images": "Images",
"dashboard.drafts": "Drafts",
"dashboard.published": "Published",
"dashboard.archived": "Archived",
"dashboard.statCards": "Snapshot",
"dashboard.timeline": "Timeline",
"dashboard.noTimelineData": "No timeline data yet",
"dashboard.tagCloud": "Tag Cloud",
"dashboard.noTags": "No tags yet",
"dashboard.categoryCloud": "Category Cloud",
"dashboard.recentPosts": "Recent Posts",
"dashboard.noRecentPosts": "No recent posts",
"dashboard.and": "and",
"dashboard.pin": "Pin",
"common.tabNotImplemented": "This area will be implemented in a later milestone.",
"editor.noPreviewAvailable": "No preview available"
}

385
locales/ui/es.ftl Normal file
View File

@@ -0,0 +1,385 @@
menu-group-file = Archivo
menu-group-edit = Editar
menu-group-view = Ver
menu-group-blog = Blog
menu-group-help = Ayuda
menu-item-newPost = Nueva entrada
menu-item-importMedia = Importar medios...
menu-item-save = Guardar
menu-item-openInBrowser = Abrir en el navegador
menu-item-openDataFolder = Abrir carpeta de datos
menu-item-find = Buscar
menu-item-replace = Reemplazar
menu-item-editPreferences = Editar preferencias
menu-item-viewPosts = Entradas
menu-item-viewMedia = Medios
menu-item-toggleSidebar = Alternar barra lateral
menu-item-togglePanel = Alternar panel
menu-item-publishSelected = Publicar selección
menu-item-previewPost = Vista previa de entrada
menu-item-rebuildDatabase = Reconstruir base de datos desde archivos
menu-item-reindexText = Reindexar texto de búsqueda
menu-item-metadataDiff = Herramienta diff de metadatos
menu-item-editMenu = Editar menú del blog
menu-item-generateSitemap = Renderizar sitio
menu-item-regenerateCalendar = Regenerar calendario
menu-item-validateSite = Validar sitio
menu-item-validateTranslations = Validar traducciones
menu-item-fillMissingTranslations = Completar traducciones faltantes
menu-item-uploadSite = Subir sitio
menu-item-about = Acerca de Blogging Desktop Server
menu-item-openDocumentation = Abrir documentación
menu-item-viewOnGitHub = Ver en GitHub
menu-item-reportIssue = Reportar problema
activity-posts = Entradas
activity-pages = Páginas
activity-media = Medios
activity-scripts = Scripts
activity-tags = Etiquetas
activity-templates = Plantillas
activity-aiAssistant = Asistente IA
activity-import = Importar
activity-sourceControl = Control de código fuente
common-save = Guardar
common-open = Abrir
common-cancel = Cancelar
common-settings = Configuración
common-tasks = Tareas
common-running = en ejecución
common-pending = pendiente
tasks-backgroundTasks = Tareas en segundo plano
tasks-clearCompleted = Limpiar completadas
tasks-noActive = No hay tareas activas
tasks-cancelTask = Cancelar tarea
tasks-triggerTitle = { $running } en ejecución, { $pending } pendiente
app-taskCompleted = Tarea completada: { $message }
app-taskFailed = Tarea fallida: { $message }
app-databaseRebuildFailed = La reconstrucción de la base de datos falló
app-textReindexFailed = La reindexación de texto falló
panel-output = Salida
panel-postLinks = Enlaces de entradas
panel-gitLog = Historial de Git
panel-postLinksPlaceholder = No hay enlaces de entradas para mostrar
panel-gitLogPlaceholder = No hay historial de Git para mostrar
panel-closeTitle = Cerrar panel
panel-noRecentTasks = No hay tareas recientes
panel-noOutput = Sin salida
statusBar-posts = { $count } publicaciones
statusBar-media = { $count } medios
statusBar-ui = UI
statusBar-uiLanguage = Idioma de la interfaz
statusBar-offlineMode = Modo avión
statusBar-offlineModeActive = Modo avión (activo)
projectSelector-switchProject = Cambiar proyecto
projectSelector-projectsHeader = Proyectos
projectSelector-newProject = Nuevo proyecto
projectSelector-createProject = Crear proyecto
projectSelector-projectName = Nombre del proyecto
projectSelector-projectNamePlaceholder = Mi blog
projectSelector-chooseFolder = Elegir carpeta...
projectSelector-useDefaultLocation = Usar ubicación predeterminada
projectSelector-deleteProject = Eliminar proyecto
projectSelector-toast-switched = Cambiado a { $name }
projectSelector-toast-switchFailed = No se pudo cambiar de proyecto
projectSelector-toast-created = Proyecto "{ $name }" creado
projectSelector-toast-createFailed = No se pudo crear el proyecto
projectSelector-toast-deleteFailed = No se pudo eliminar el proyecto
tabBar-closeHint = Cerrar
tabBar-loading = Cargando...
tabBar-unknown = Desconocido
tabBar-style = Estilo
tabBar-menuEditor = Editor de menú
tabBar-metadataDiff = Diff de metadatos
tabBar-siteValidation = Validación del sitio
tabBar-translationValidation = Validación de traducciones
siteValidation-run = Ejecutar validación
siteValidation-apply = Aplicar validación
siteValidation-applying = Aplicando...
siteValidation-idle = Ejecuta la validación del sitio para comparar los archivos generados con la salida esperada.
siteValidation-running = Validación en curso...
siteValidation-clean = No se encontraron archivos generados faltantes, extra o desactualizados.
siteValidation-error = La validación falló
siteValidation-missing = Archivos faltantes
siteValidation-extra = Archivos adicionales
siteValidation-stale = Archivos desactualizados
tabBar-documentation = Documentación
tabBar-apiDocumentation = Documentación API
tabBar-findDuplicates = Buscar duplicados
tabBar-tags = Etiquetas
tabBar-preview = Vista previa
tabBar-modified = Modificado
sidebar-noPostsYet = Aún no hay entradas
sidebar-noPagesYet = Aún no hay páginas
sidebar-noMediaYet = Aún no hay medios
sidebar-noScriptsYet = Aún no hay scripts
sidebar-noTemplatesYet = Aún no hay plantillas
sidebar-chatPlaceholder = El asistente IA aparecerá aquí
sidebar-importPlaceholder = Importar contenido desde fuentes externas
sidebar-gitPlaceholder = Integración del control de código fuente
sidebar-loading = Cargando...
sidebar-settingsHeader = Configuración
sidebar-tagsHeader = Etiquetas
sidebar-drafts = Borradores
sidebar-published = Publicados
sidebar-archived = Archivados
sidebar-loadMore = Cargar más…
language-en = Inglés
language-de = Alemán
language-fr = Francés
language-it = Italiano
language-es = Español
welcome-title = Bienvenido a bDS
welcome-subtitle = Abre un proyecto o crea una nueva entrada para comenzar.
post-untitled = Sin título
post-createFailed = No se pudo crear la entrada: { $error }
engine-rebuildStarted = Reconstruyendo la base de datos desde archivos...
engine-rebuildComplete = Base de datos reconstruida: { $posts } entradas, { $media } medios, { $templates } plantillas, { $scripts } scripts
engine-rebuildFailed = La reconstrucción de la base de datos falló: { $error }
engine-reindexStarted = Reindexando texto de búsqueda...
engine-reindexComplete = Texto de búsqueda reindexado: { $posts } entradas, { $media } medios
engine-reindexFailed = La reindexación del texto de búsqueda falló: { $error }
engine-calendarStarted = Regenerando calendario...
engine-calendarComplete = Calendario regenerado
engine-calendarFailed = La regeneración del calendario falló: { $error }
engine-calendarNoProject = No hay proyecto activo
engine-validateTranslationsStarted = Validando traducciones...
engine-validateMediaStarted = Validando medios...
engine-validateTranslationsComplete = Validación de traducciones: { $dbIssues } problemas en la base de datos, { $fsIssues } problemas en el sistema de archivos
engine-validateTranslationsFailed = La validación de traducciones falló: { $error }
engine-fillMissingTranslationsOffline = No se pueden completar las traducciones: la IA no está disponible en modo avión
engine-fillMissingTranslationsNoAi = No se pueden completar las traducciones: la IA aún no está disponible
engine-uploadStarted = Subiendo sitio...
engine-uploadMissingCredentials = Credenciales de publicación incompletas. Configúralas en los ajustes del proyecto.
engine-uploadOffline = No se puede subir: el modo avión está activo
engine-generateSiteStarted = Generando sitio...
engine-generateSiteNoProject = No hay proyecto activo
engine-previewDataDirUnavailable = El directorio de datos del proyecto no está disponible
engine-previewPortInUse = El puerto del servidor de vista previa ya está en uso
dialog-selectFolder = Seleccionar carpeta
dialog-importMedia = Importar medios
dialog-imageFilter = Imágenes
settings-nav-project = Proyecto
settings-nav-editor = Editor
settings-nav-content = Contenido
settings-nav-ai = IA
settings-nav-technology = Tecnología
settings-nav-publishing = Publicación
settings-nav-data = Datos
settings-nav-mcp = MCP
settings-nav-style = Estilo
tags-nav-cloud = Nube de etiquetas
tags-nav-manage = Gestionar etiquetas
tags-nav-merge = Fusionar etiquetas
tags-nav-discover = Descubrir etiquetas
sidebar-chatYesterday = Ayer
modal-confirmDelete-title = Confirmar eliminación
modal-confirmDelete-warning = Esta acción no se puede deshacer.
modal-confirmDelete-cancel = Cancelar
modal-confirmDelete-delete = Eliminar
modal-confirm-title = Confirmar
modal-confirm-cancel = Cancelar
modal-confirm-confirm = Confirmar
modal-postInsertLink-title = Insertar enlace
modal-postInsertLink-description = Selecciona una entrada a la que vincular.
modal-postInsertLink-cancel = Cancelar
modal-postInsertLink-tabInternal = Internos
modal-postInsertLink-tabExternal = Externos
modal-postInsertLink-searchPlaceholder = Buscar entradas...
modal-postInsertLink-emptyState = Escribe para buscar entradas o usa entradas relacionadas
modal-postInsertLink-createPost = Crear entrada
modal-postInsertLink-insert = Insertar
modal-postInsertLink-externalUrlPlaceholder = https://example.com
modal-postInsertLink-externalTextPlaceholder = Texto mostrado (opcional)
modal-postInsertLink-urlRequired = Se requiere una URL.
modal-postInsertLink-titleRequired = Introduce un título para crear una entrada enlazada.
modal-postInsertLink-createFailed = No se pudo crear la entrada enlazada.
modal-postInsertLink-loadFailed = No se pudo cargar la entrada seleccionada.
modal-insertMedia-title = Insertar medio
modal-insertMedia-description = Selecciona un medio para insertar.
modal-insertMedia-cancel = Cancelar
modal-insertMedia-searchPlaceholder = Buscar medios...
modal-insertMedia-loadFailed = No se pudo cargar el medio seleccionado.
modal-postGallery-title = Galería de medios
modal-postGallery-description = Haz clic en una imagen para verla a tamaño completo.
modal-postGallery-close = Cerrar
modal-postGallery-backToGrid = Volver a la cuadrícula
modal-postGallery-unavailable = Vista previa no disponible
modal-aiSuggestions-title = Sugerencias de IA
modal-aiSuggestions-applySelected = Aplicar selección
modal-languagePicker-title = Traducir a
sidebar-filter-search = Buscar...
sidebar-filter-toggle = Filtros
sidebar-filter-clearAll = Borrar todos los filtros
sidebar-filter-status = Estado
sidebar-filter-language = Idioma
sidebar-filter-dateRange = Rango de fechas
sidebar-filter-from = Desde (AAAA-MM-DD)
sidebar-filter-to = Hasta (AAAA-MM-DD)
editor-insertLink = Insertar enlace
editor-insertMedia = Insertar medio
editor-gallery = Galería
sidebar-filter-tags = Etiquetas
sidebar-filter-categories = Categorías
sidebar-filter-calendar = Archivo
sidebar-filter-noResults = Sin resultados
editor-title = Título
editor-titlePlaceholder = Introducir título...
editor-slug = Slug
editor-slugPlaceholder = introducir-slug
editor-content = Contenido
editor-contentPlaceholder = Escribe tu contenido...
editor-excerpt = Extracto
editor-excerptPlaceholder = Breve resumen...
editor-author = Autor
editor-language = Idioma
editor-aiAnalyze = Analizar con IA
editor-detectLanguage = Detectar idioma
editor-quickActions = Acciones rápidas
editor-modeMarkdown = Markdown
editor-modePreview = Vista previa
editor-suggestTaxonomy = Sugerir taxonomía
editor-translate = Traducir
editor-templateSlug = Plantilla
editor-doNotTranslate = No traducir
editor-publish = Publicar
editor-discard = Descartar
editor-duplicate = Duplicar
editor-validate = Validar
editor-run = Ejecutar
editor-checkSyntax = Verificar sintaxis
editor-kind = Tipo
editor-enabled = Habilitado
editor-entrypoint = Punto de entrada
editor-alt = Texto alternativo
editor-altPlaceholder = Describir la imagen...
editor-caption = Leyenda
editor-metadata = Metadatos
editor-tags = Etiquetas
editor-tagsPlaceholder = Añadir etiqueta...
editor-categories = Categorías
editor-categoriesPlaceholder = Añadir categoría...
editor-outlinks = Enlaces salientes
editor-backlinks = Enlaces entrantes
editor-linkedMedia = Medios vinculados
editor-linkedMediaEmpty = Todavía no hay medios vinculados.
editor-linkExistingMedia = Vincular existente
editor-linkToPost = Vincular a artículo
editor-linkedPosts = Artículos vinculados
editor-linkedPostsEmpty = No está vinculado a ningún artículo.
editor-postPickerSearch = Buscar artículos
editor-postPickerSearchPlaceholder = Buscar artículos...
editor-unlinkMedia = Desvincular
editor-linkedMediaKindImage = Imagen
editor-linkedMediaKindFile = Archivo
editor-untitled = Sin título
editor-createdAt = Creado
editor-updatedAt = Actualizado
editor-publishedAt = Publicado
tags-noTags = Sin etiquetas
tags-cloudSection = Nube
tags-cloudHelp = Selecciona una o más etiquetas para editarlas, eliminarlas o fusionarlas.
tags-selectedCount = { $count } seleccionadas
tags-clearSelection = Borrar selección
tags-createSection = Crear etiqueta
tags-createPlaceholder = nueva-etiqueta
tags-createButton = Crear
tags-editTag = Editar etiqueta
tags-manageSection = Gestionar
tags-name = Nombre
tags-color = Color
tags-colorPresets = Colores predefinidos
tags-postTemplate = Plantilla de artículo
tags-noTemplate = Ninguna
tags-merge = Fusionar
tags-mergeTarget = Etiqueta destino
tags-mergeSection = Fusionar
tags-mergeHelp = Selecciona al menos dos etiquetas de la nube o la lista para fusionarlas.
tags-mergePreview = Etiquetas para eliminar: { $tags }
tags-mergeConfirmTitle = Fusionar etiquetas
tags-mergeConfirmMessage = ¿Fusionar { $count } etiquetas en { $target }? Esta acción no se puede deshacer.
tags-deleteUsage = Esta etiqueta se usa en { $count } publicaciones.
tags-discoverSection = Descubrir
tags-discoverDescription = Descubre etiquetas a partir de las publicaciones actuales y reescribe tags.json para reflejar la base de datos.
tags-discoverButton = Descubrir
tags-selectTag = Seleccione una etiqueta para editar
template-forceDeleteTitle = Forzar eliminación de plantilla
template-forceDeleteMessage = Esta plantilla se usa en { $posts } publicaciones y { $tags } etiquetas. ¿Forzar eliminación?
common-add = Agregar
common-remove = Eliminar
common-clear = Limpiar
common-noResults = Sin resultados
settings-projectName = Nombre del proyecto
settings-projectDescription = Descripción
settings-dataPath = Carpeta de datos
settings-browse = Explorar...
settings-reset = Restablecer
settings-publicUrl = URL pública
settings-mainLanguage = Idioma principal
settings-mainLanguageRequired = obligatorio
settings-blogLanguages = Idiomas del blog
settings-defaultAuthor = Autor predeterminado
settings-maxPostsPerPage = Artículos por página
settings-blogmarkCategory = Categoría de Blogmark
settings-defaultMode = Modo de editor predeterminado
settings-diffViewStyle = Estilo de diff
settings-categoryTitle = Título para { $category }
settings-categoryPostTemplate = Plantilla de artículo
settings-categoryListTemplate = Plantilla de lista
settings-categoryRenderInLists = Mostrar en listas
settings-categoryShowTitles = Mostrar títulos
settings-addCategory = Agregar categoría
settings-resetCategories = Restablecer categorías predeterminadas
settings-wrapLongLines = Ajuste de línea automático
settings-hideUnchangedRegions = Ocultar regiones sin cambios
settings-offlineMode = Modo avión
settings-onlineEndpointSection = Extremo en línea
settings-onlineEndpointUrl = URL del extremo en línea
settings-onlineEndpointModel = Modelo del extremo en línea
settings-onlineApiKey = Clave API en línea
settings-airplaneEndpointSection = Extremo de modo avión
settings-airplaneEndpointUrl = URL del extremo de modo avión
settings-airplaneEndpointModel = Modelo del extremo de modo avión
settings-refreshModels = Actualizar modelos
settings-defaultModel = Modelo predeterminado
settings-titleModel = Modelo de títulos
settings-imageAnalysisModel = Modelo de análisis de imágenes
settings-keychainConfigured = Guardado en el llavero
settings-systemPrompt = Prompt del sistema
settings-resetToDefault = Restaurar valores predeterminados
settings-luaRuntimeOnly = Lua es el único tiempo de ejecución de scripts en la app Rust.
settings-semanticSimilarityEnabled = Similitud semántica
settings-sshHost = Host SSH
settings-sshUsername = Nombre de usuario SSH
settings-sshRemotePath = Ruta remota
settings-clear = Limpiar
settings-rebuildPosts = Reconstruir artículos
settings-rebuildMedia = Reconstruir medios
settings-rebuildScripts = Reconstruir scripts
settings-rebuildTemplates = Reconstruir plantillas
settings-rebuildLinks = Reconstruir enlaces
settings-regenerateThumbnails = Regenerar miniaturas
settings-openDataFolder = Abrir carpeta de datos
settings-contentPlaceholder = La configuración de contenido aparecerá aquí
settings-technologyPlaceholder = La configuración tecnológica aparecerá aquí
settings-mcpPlaceholder = La configuración del servidor MCP aparecerá aquí
dashboard-overview = Resumen
dashboard-posts = Artículos
dashboard-media = Medios
dashboard-tags = Etiquetas
dashboard-categories = Categorías
dashboard-images = Imágenes
dashboard-drafts = Borradores
dashboard-published = Publicados
dashboard-archived = Archivados
dashboard-statCards = Resumen
dashboard-timeline = Cronología
dashboard-noTimelineData = Todavía no hay datos de cronología
dashboard-tagCloud = Nube de etiquetas
dashboard-noTags = Todavía no hay etiquetas
dashboard-categoryCloud = Nube de categorías
dashboard-recentPosts = Publicaciones recientes
dashboard-noRecentPosts = No hay publicaciones recientes
dashboard-and = y
dashboard-pin = Fijar
common-tabNotImplemented = Esta sección se implementará en un hito posterior.
editor-noPreviewAvailable = No hay vista previa disponible

View File

@@ -1,387 +0,0 @@
{
"menu.group.file": "Archivo",
"menu.group.edit": "Editar",
"menu.group.view": "Ver",
"menu.group.blog": "Blog",
"menu.group.help": "Ayuda",
"menu.item.newPost": "Nueva entrada",
"menu.item.importMedia": "Importar medios...",
"menu.item.save": "Guardar",
"menu.item.openInBrowser": "Abrir en el navegador",
"menu.item.openDataFolder": "Abrir carpeta de datos",
"menu.item.find": "Buscar",
"menu.item.replace": "Reemplazar",
"menu.item.editPreferences": "Editar preferencias",
"menu.item.viewPosts": "Entradas",
"menu.item.viewMedia": "Medios",
"menu.item.toggleSidebar": "Alternar barra lateral",
"menu.item.togglePanel": "Alternar panel",
"menu.item.publishSelected": "Publicar selección",
"menu.item.previewPost": "Vista previa de entrada",
"menu.item.rebuildDatabase": "Reconstruir base de datos desde archivos",
"menu.item.reindexText": "Reindexar texto de búsqueda",
"menu.item.metadataDiff": "Herramienta diff de metadatos",
"menu.item.editMenu": "Editar menú del blog",
"menu.item.generateSitemap": "Renderizar sitio",
"menu.item.regenerateCalendar": "Regenerar calendario",
"menu.item.validateSite": "Validar sitio",
"menu.item.validateTranslations": "Validar traducciones",
"menu.item.fillMissingTranslations": "Completar traducciones faltantes",
"menu.item.uploadSite": "Subir sitio",
"menu.item.about": "Acerca de Blogging Desktop Server",
"menu.item.openDocumentation": "Abrir documentación",
"menu.item.viewOnGitHub": "Ver en GitHub",
"menu.item.reportIssue": "Reportar problema",
"activity.posts": "Entradas",
"activity.pages": "Páginas",
"activity.media": "Medios",
"activity.scripts": "Scripts",
"activity.tags": "Etiquetas",
"activity.templates": "Plantillas",
"activity.aiAssistant": "Asistente IA",
"activity.import": "Importar",
"activity.sourceControl": "Control de código fuente",
"common.save": "Guardar",
"common.open": "Abrir",
"common.cancel": "Cancelar",
"common.settings": "Configuración",
"common.tasks": "Tareas",
"common.running": "en ejecución",
"common.pending": "pendiente",
"tasks.backgroundTasks": "Tareas en segundo plano",
"tasks.clearCompleted": "Limpiar completadas",
"tasks.noActive": "No hay tareas activas",
"tasks.cancelTask": "Cancelar tarea",
"tasks.triggerTitle": "{running} en ejecución, {pending} pendiente",
"app.taskCompleted": "Tarea completada: {message}",
"app.taskFailed": "Tarea fallida: {message}",
"app.databaseRebuildFailed": "La reconstrucción de la base de datos falló",
"app.textReindexFailed": "La reindexación de texto falló",
"panel.output": "Salida",
"panel.postLinks": "Enlaces de entradas",
"panel.gitLog": "Historial de Git",
"panel.postLinksPlaceholder": "No hay enlaces de entradas para mostrar",
"panel.gitLogPlaceholder": "No hay historial de Git para mostrar",
"panel.closeTitle": "Cerrar panel",
"panel.noRecentTasks": "No hay tareas recientes",
"panel.noOutput": "Sin salida",
"statusBar.posts": "{count} publicaciones",
"statusBar.media": "{count} medios",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Idioma de la interfaz",
"statusBar.offlineMode": "Modo avión",
"statusBar.offlineModeActive": "Modo avión (activo)",
"projectSelector.switchProject": "Cambiar proyecto",
"projectSelector.projectsHeader": "Proyectos",
"projectSelector.newProject": "Nuevo proyecto",
"projectSelector.createProject": "Crear proyecto",
"projectSelector.projectName": "Nombre del proyecto",
"projectSelector.projectNamePlaceholder": "Mi blog",
"projectSelector.chooseFolder": "Elegir carpeta...",
"projectSelector.useDefaultLocation": "Usar ubicación predeterminada",
"projectSelector.deleteProject": "Eliminar proyecto",
"projectSelector.toast.switched": "Cambiado a {name}",
"projectSelector.toast.switchFailed": "No se pudo cambiar de proyecto",
"projectSelector.toast.created": "Proyecto \"{name}\" creado",
"projectSelector.toast.createFailed": "No se pudo crear el proyecto",
"projectSelector.toast.deleteFailed": "No se pudo eliminar el proyecto",
"tabBar.closeHint": "Cerrar",
"tabBar.loading": "Cargando...",
"tabBar.unknown": "Desconocido",
"tabBar.style": "Estilo",
"tabBar.menuEditor": "Editor de menú",
"tabBar.metadataDiff": "Diff de metadatos",
"tabBar.siteValidation": "Validación del sitio",
"tabBar.translationValidation": "Validación de traducciones",
"siteValidation.run": "Ejecutar validación",
"siteValidation.apply": "Aplicar validación",
"siteValidation.applying": "Aplicando...",
"siteValidation.idle": "Ejecuta la validación del sitio para comparar los archivos generados con la salida esperada.",
"siteValidation.running": "Validación en curso...",
"siteValidation.clean": "No se encontraron archivos generados faltantes, extra o desactualizados.",
"siteValidation.error": "La validación falló",
"siteValidation.missing": "Archivos faltantes",
"siteValidation.extra": "Archivos adicionales",
"siteValidation.stale": "Archivos desactualizados",
"tabBar.documentation": "Documentación",
"tabBar.apiDocumentation": "Documentación API",
"tabBar.findDuplicates": "Buscar duplicados",
"tabBar.tags": "Etiquetas",
"tabBar.preview": "Vista previa",
"tabBar.modified": "Modificado",
"sidebar.noPostsYet": "Aún no hay entradas",
"sidebar.noPagesYet": "Aún no hay páginas",
"sidebar.noMediaYet": "Aún no hay medios",
"sidebar.noScriptsYet": "Aún no hay scripts",
"sidebar.noTemplatesYet": "Aún no hay plantillas",
"sidebar.chatPlaceholder": "El asistente IA aparecerá aquí",
"sidebar.importPlaceholder": "Importar contenido desde fuentes externas",
"sidebar.gitPlaceholder": "Integración del control de código fuente",
"sidebar.loading": "Cargando...",
"sidebar.settingsHeader": "Configuración",
"sidebar.tagsHeader": "Etiquetas",
"sidebar.drafts": "Borradores",
"sidebar.published": "Publicados",
"sidebar.archived": "Archivados",
"sidebar.loadMore": "Cargar más…",
"language.en": "Inglés",
"language.de": "Alemán",
"language.fr": "Francés",
"language.it": "Italiano",
"language.es": "Español",
"welcome.title": "Bienvenido a bDS",
"welcome.subtitle": "Abre un proyecto o crea una nueva entrada para comenzar.",
"post.untitled": "Sin título",
"post.createFailed": "No se pudo crear la entrada: {error}",
"engine.rebuildStarted": "Reconstruyendo la base de datos desde archivos...",
"engine.rebuildComplete": "Base de datos reconstruida: {posts} entradas, {media} medios, {templates} plantillas, {scripts} scripts",
"engine.rebuildFailed": "La reconstrucción de la base de datos falló: {error}",
"engine.reindexStarted": "Reindexando texto de búsqueda...",
"engine.reindexComplete": "Texto de búsqueda reindexado: {posts} entradas, {media} medios",
"engine.reindexFailed": "La reindexación del texto de búsqueda falló: {error}",
"engine.calendarStarted": "Regenerando calendario...",
"engine.calendarComplete": "Calendario regenerado",
"engine.calendarFailed": "La regeneración del calendario falló: {error}",
"engine.calendarNoProject": "No hay proyecto activo",
"engine.validateTranslationsStarted": "Validando traducciones...",
"engine.validateMediaStarted": "Validando medios...",
"engine.validateTranslationsComplete": "Validación de traducciones: {dbIssues} problemas en la base de datos, {fsIssues} problemas en el sistema de archivos",
"engine.validateTranslationsFailed": "La validación de traducciones falló: {error}",
"engine.fillMissingTranslationsOffline": "No se pueden completar las traducciones: la IA no está disponible en modo avión",
"engine.fillMissingTranslationsNoAi": "No se pueden completar las traducciones: la IA aún no está disponible",
"engine.uploadStarted": "Subiendo sitio...",
"engine.uploadMissingCredentials": "Credenciales de publicación incompletas. Configúralas en los ajustes del proyecto.",
"engine.uploadOffline": "No se puede subir: el modo avión está activo",
"engine.generateSiteStarted": "Generando sitio...",
"engine.generateSiteNoProject": "No hay proyecto activo",
"engine.previewDataDirUnavailable": "El directorio de datos del proyecto no está disponible",
"engine.previewPortInUse": "El puerto del servidor de vista previa ya está en uso",
"dialog.selectFolder": "Seleccionar carpeta",
"dialog.importMedia": "Importar medios",
"dialog.imageFilter": "Imágenes",
"settings.nav.project": "Proyecto",
"settings.nav.editor": "Editor",
"settings.nav.content": "Contenido",
"settings.nav.ai": "IA",
"settings.nav.technology": "Tecnología",
"settings.nav.publishing": "Publicación",
"settings.nav.data": "Datos",
"settings.nav.mcp": "MCP",
"settings.nav.style": "Estilo",
"tags.nav.cloud": "Nube de etiquetas",
"tags.nav.manage": "Gestionar etiquetas",
"tags.nav.merge": "Fusionar etiquetas",
"tags.nav.discover": "Descubrir etiquetas",
"sidebar.chatYesterday": "Ayer",
"modal.confirmDelete.title": "Confirmar eliminación",
"modal.confirmDelete.warning": "Esta acción no se puede deshacer.",
"modal.confirmDelete.cancel": "Cancelar",
"modal.confirmDelete.delete": "Eliminar",
"modal.confirm.title": "Confirmar",
"modal.confirm.cancel": "Cancelar",
"modal.confirm.confirm": "Confirmar",
"modal.postInsertLink.title": "Insertar enlace",
"modal.postInsertLink.description": "Selecciona una entrada a la que vincular.",
"modal.postInsertLink.cancel": "Cancelar",
"modal.postInsertLink.tabInternal": "Internos",
"modal.postInsertLink.tabExternal": "Externos",
"modal.postInsertLink.searchPlaceholder": "Buscar entradas...",
"modal.postInsertLink.emptyState": "Escribe para buscar entradas o usa entradas relacionadas",
"modal.postInsertLink.createPost": "Crear entrada",
"modal.postInsertLink.insert": "Insertar",
"modal.postInsertLink.externalUrlPlaceholder": "https://example.com",
"modal.postInsertLink.externalTextPlaceholder": "Texto mostrado (opcional)",
"modal.postInsertLink.urlRequired": "Se requiere una URL.",
"modal.postInsertLink.titleRequired": "Introduce un título para crear una entrada enlazada.",
"modal.postInsertLink.createFailed": "No se pudo crear la entrada enlazada.",
"modal.postInsertLink.loadFailed": "No se pudo cargar la entrada seleccionada.",
"modal.insertMedia.title": "Insertar medio",
"modal.insertMedia.description": "Selecciona un medio para insertar.",
"modal.insertMedia.cancel": "Cancelar",
"modal.insertMedia.searchPlaceholder": "Buscar medios...",
"modal.insertMedia.loadFailed": "No se pudo cargar el medio seleccionado.",
"modal.postGallery.title": "Galería de medios",
"modal.postGallery.description": "Haz clic en una imagen para verla a tamaño completo.",
"modal.postGallery.close": "Cerrar",
"modal.postGallery.backToGrid": "Volver a la cuadrícula",
"modal.postGallery.unavailable": "Vista previa no disponible",
"modal.aiSuggestions.title": "Sugerencias de IA",
"modal.aiSuggestions.applySelected": "Aplicar selección",
"modal.languagePicker.title": "Traducir a",
"sidebar.filter.search": "Buscar...",
"sidebar.filter.toggle": "Filtros",
"sidebar.filter.clearAll": "Borrar todos los filtros",
"sidebar.filter.status": "Estado",
"sidebar.filter.language": "Idioma",
"sidebar.filter.dateRange": "Rango de fechas",
"sidebar.filter.from": "Desde (AAAA-MM-DD)",
"sidebar.filter.to": "Hasta (AAAA-MM-DD)",
"editor.insertLink": "Insertar enlace",
"editor.insertMedia": "Insertar medio",
"editor.gallery": "Galería",
"sidebar.filter.tags": "Etiquetas",
"sidebar.filter.categories": "Categorías",
"sidebar.filter.calendar": "Archivo",
"sidebar.filter.noResults": "Sin resultados",
"editor.title": "Título",
"editor.titlePlaceholder": "Introducir título...",
"editor.slug": "Slug",
"editor.slugPlaceholder": "introducir-slug",
"editor.content": "Contenido",
"editor.contentPlaceholder": "Escribe tu contenido...",
"editor.excerpt": "Extracto",
"editor.excerptPlaceholder": "Breve resumen...",
"editor.author": "Autor",
"editor.language": "Idioma",
"editor.aiAnalyze": "Analizar con IA",
"editor.detectLanguage": "Detectar idioma",
"editor.quickActions": "Acciones rápidas",
"editor.modeMarkdown": "Markdown",
"editor.modePreview": "Vista previa",
"editor.suggestTaxonomy": "Sugerir taxonomía",
"editor.translate": "Traducir",
"editor.templateSlug": "Plantilla",
"editor.doNotTranslate": "No traducir",
"editor.publish": "Publicar",
"editor.discard": "Descartar",
"editor.duplicate": "Duplicar",
"editor.validate": "Validar",
"editor.run": "Ejecutar",
"editor.checkSyntax": "Verificar sintaxis",
"editor.kind": "Tipo",
"editor.enabled": "Habilitado",
"editor.entrypoint": "Punto de entrada",
"editor.alt": "Texto alternativo",
"editor.altPlaceholder": "Describir la imagen...",
"editor.caption": "Leyenda",
"editor.metadata": "Metadatos",
"editor.tags": "Etiquetas",
"editor.tagsPlaceholder": "Añadir etiqueta...",
"editor.categories": "Categorías",
"editor.categoriesPlaceholder": "Añadir categoría...",
"editor.outlinks": "Enlaces salientes",
"editor.backlinks": "Enlaces entrantes",
"editor.linkedMedia": "Medios vinculados",
"editor.linkedMediaEmpty": "Todavía no hay medios vinculados.",
"editor.linkExistingMedia": "Vincular existente",
"editor.linkToPost": "Vincular a artículo",
"editor.linkedPosts": "Artículos vinculados",
"editor.linkedPostsEmpty": "No está vinculado a ningún artículo.",
"editor.postPickerSearch": "Buscar artículos",
"editor.postPickerSearchPlaceholder": "Buscar artículos...",
"editor.unlinkMedia": "Desvincular",
"editor.linkedMediaKindImage": "Imagen",
"editor.linkedMediaKindFile": "Archivo",
"editor.untitled": "Sin título",
"editor.createdAt": "Creado",
"editor.updatedAt": "Actualizado",
"editor.publishedAt": "Publicado",
"tags.noTags": "Sin etiquetas",
"tags.cloudSection": "Nube",
"tags.cloudHelp": "Selecciona una o más etiquetas para editarlas, eliminarlas o fusionarlas.",
"tags.selectedCount": "{count} seleccionadas",
"tags.clearSelection": "Borrar selección",
"tags.createSection": "Crear etiqueta",
"tags.createPlaceholder": "nueva-etiqueta",
"tags.createButton": "Crear",
"tags.editTag": "Editar etiqueta",
"tags.manageSection": "Gestionar",
"tags.name": "Nombre",
"tags.color": "Color",
"tags.colorPresets": "Colores predefinidos",
"tags.postTemplate": "Plantilla de artículo",
"tags.noTemplate": "Ninguna",
"tags.merge": "Fusionar",
"tags.mergeTarget": "Etiqueta destino",
"tags.mergeSection": "Fusionar",
"tags.mergeHelp": "Selecciona al menos dos etiquetas de la nube o la lista para fusionarlas.",
"tags.mergePreview": "Etiquetas para eliminar: {tags}",
"tags.mergeConfirmTitle": "Fusionar etiquetas",
"tags.mergeConfirmMessage": "¿Fusionar {count} etiquetas en {target}? Esta acción no se puede deshacer.",
"tags.deleteUsage": "Esta etiqueta se usa en {count} publicaciones.",
"tags.discoverSection": "Descubrir",
"tags.discoverDescription": "Descubre etiquetas a partir de las publicaciones actuales y reescribe tags.json para reflejar la base de datos.",
"tags.discoverButton": "Descubrir",
"tags.selectTag": "Seleccione una etiqueta para editar",
"template.forceDeleteTitle": "Forzar eliminación de plantilla",
"template.forceDeleteMessage": "Esta plantilla se usa en {posts} publicaciones y {tags} etiquetas. ¿Forzar eliminación?",
"common.add": "Agregar",
"common.remove": "Eliminar",
"common.clear": "Limpiar",
"common.noResults": "Sin resultados",
"settings.projectName": "Nombre del proyecto",
"settings.projectDescription": "Descripción",
"settings.dataPath": "Carpeta de datos",
"settings.browse": "Explorar...",
"settings.reset": "Restablecer",
"settings.publicUrl": "URL pública",
"settings.mainLanguage": "Idioma principal",
"settings.mainLanguageRequired": "obligatorio",
"settings.blogLanguages": "Idiomas del blog",
"settings.defaultAuthor": "Autor predeterminado",
"settings.maxPostsPerPage": "Artículos por página",
"settings.blogmarkCategory": "Categoría de Blogmark",
"settings.defaultMode": "Modo de editor predeterminado",
"settings.diffViewStyle": "Estilo de diff",
"settings.categoryTitle": "Título para {category}",
"settings.categoryPostTemplate": "Plantilla de artículo",
"settings.categoryListTemplate": "Plantilla de lista",
"settings.categoryRenderInLists": "Mostrar en listas",
"settings.categoryShowTitles": "Mostrar títulos",
"settings.addCategory": "Agregar categoría",
"settings.resetCategories": "Restablecer categorías predeterminadas",
"settings.wrapLongLines": "Ajuste de línea automático",
"settings.hideUnchangedRegions": "Ocultar regiones sin cambios",
"settings.offlineMode": "Modo avión",
"settings.onlineEndpointSection": "Extremo en línea",
"settings.onlineEndpointUrl": "URL del extremo en línea",
"settings.onlineEndpointModel": "Modelo del extremo en línea",
"settings.onlineApiKey": "Clave API en línea",
"settings.airplaneEndpointSection": "Extremo de modo avión",
"settings.airplaneEndpointUrl": "URL del extremo de modo avión",
"settings.airplaneEndpointModel": "Modelo del extremo de modo avión",
"settings.refreshModels": "Actualizar modelos",
"settings.defaultModel": "Modelo predeterminado",
"settings.titleModel": "Modelo de títulos",
"settings.imageAnalysisModel": "Modelo de análisis de imágenes",
"settings.keychainConfigured": "Guardado en el llavero",
"settings.systemPrompt": "Prompt del sistema",
"settings.resetToDefault": "Restaurar valores predeterminados",
"settings.luaRuntimeOnly": "Lua es el único tiempo de ejecución de scripts en la app Rust.",
"settings.semanticSimilarityEnabled": "Similitud semántica",
"settings.sshHost": "Host SSH",
"settings.sshUsername": "Nombre de usuario SSH",
"settings.sshRemotePath": "Ruta remota",
"settings.clear": "Limpiar",
"settings.rebuildPosts": "Reconstruir artículos",
"settings.rebuildMedia": "Reconstruir medios",
"settings.rebuildScripts": "Reconstruir scripts",
"settings.rebuildTemplates": "Reconstruir plantillas",
"settings.rebuildLinks": "Reconstruir enlaces",
"settings.regenerateThumbnails": "Regenerar miniaturas",
"settings.openDataFolder": "Abrir carpeta de datos",
"settings.contentPlaceholder": "La configuración de contenido aparecerá aquí",
"settings.technologyPlaceholder": "La configuración tecnológica aparecerá aquí",
"settings.mcpPlaceholder": "La configuración del servidor MCP aparecerá aquí",
"dashboard.overview": "Resumen",
"dashboard.posts": "Artículos",
"dashboard.media": "Medios",
"dashboard.tags": "Etiquetas",
"dashboard.categories": "Categorías",
"dashboard.images": "Imágenes",
"dashboard.drafts": "Borradores",
"dashboard.published": "Publicados",
"dashboard.archived": "Archivados",
"dashboard.statCards": "Resumen",
"dashboard.timeline": "Cronología",
"dashboard.noTimelineData": "Todavía no hay datos de cronología",
"dashboard.tagCloud": "Nube de etiquetas",
"dashboard.noTags": "Todavía no hay etiquetas",
"dashboard.categoryCloud": "Nube de categorías",
"dashboard.recentPosts": "Publicaciones recientes",
"dashboard.noRecentPosts": "No hay publicaciones recientes",
"dashboard.and": "y",
"dashboard.pin": "Fijar",
"common.tabNotImplemented": "Esta sección se implementará en un hito posterior.",
"editor.noPreviewAvailable": "No hay vista previa disponible"
}

385
locales/ui/fr.ftl Normal file
View File

@@ -0,0 +1,385 @@
menu-group-file = Fichier
menu-group-edit = Édition
menu-group-view = Affichage
menu-group-blog = Blog
menu-group-help = Aide
menu-item-newPost = Nouvel article
menu-item-importMedia = Importer des médias...
menu-item-save = Enregistrer
menu-item-openInBrowser = Ouvrir dans le navigateur
menu-item-openDataFolder = Ouvrir le dossier de données
menu-item-find = Rechercher
menu-item-replace = Remplacer
menu-item-editPreferences = Modifier les préférences
menu-item-viewPosts = Articles
menu-item-viewMedia = Médias
menu-item-toggleSidebar = Basculer la barre latérale
menu-item-togglePanel = Basculer le panneau
menu-item-publishSelected = Publier la sélection
menu-item-previewPost = Aperçu de l'article
menu-item-rebuildDatabase = Reconstruire la base de données
menu-item-reindexText = Réindexer le texte de recherche
menu-item-metadataDiff = Outil de diff des métadonnées
menu-item-editMenu = Modifier le menu du blog
menu-item-generateSitemap = Rendre le site
menu-item-regenerateCalendar = Régénérer le calendrier
menu-item-validateSite = Valider le site
menu-item-validateTranslations = Valider les traductions
menu-item-fillMissingTranslations = Compléter les traductions manquantes
menu-item-uploadSite = Publier le site
menu-item-about = À propos de Blogging Desktop Server
menu-item-openDocumentation = Ouvrir la documentation
menu-item-viewOnGitHub = Voir sur GitHub
menu-item-reportIssue = Signaler un problème
activity-posts = Articles
activity-pages = Pages du site
activity-media = Médias
activity-scripts = Scripts
activity-tags = Étiquettes
activity-templates = Modèles
activity-aiAssistant = Assistant IA
activity-import = Importation
activity-sourceControl = Contrôle de source
common-save = Enregistrer
common-open = Ouvrir
common-cancel = Annuler
common-settings = Paramètres
common-tasks = Tâches
common-running = en cours
common-pending = en attente
tasks-backgroundTasks = Tâches en arrière-plan
tasks-clearCompleted = Effacer terminé
tasks-noActive = Aucune tâche active
tasks-cancelTask = Annuler la tâche
tasks-triggerTitle = { $running } en cours, { $pending } en attente
app-taskCompleted = Tâche terminée : { $message }
app-taskFailed = Échec de la tâche : { $message }
app-databaseRebuildFailed = Échec de la reconstruction de la base de données
app-textReindexFailed = Échec de la réindexation du texte
panel-output = Sortie
panel-postLinks = Liens d'articles
panel-gitLog = Historique Git
panel-postLinksPlaceholder = Aucun lien d'article à afficher
panel-gitLogPlaceholder = Aucun historique Git à afficher
panel-closeTitle = Fermer le panneau
panel-noRecentTasks = Aucune tâche récente
panel-noOutput = Aucune sortie
statusBar-posts = { $count } articles
statusBar-media = { $count } médias
statusBar-ui = UI
statusBar-uiLanguage = Langue de l'interface
statusBar-offlineMode = Mode avion
statusBar-offlineModeActive = Mode avion (actif)
projectSelector-switchProject = Changer de projet
projectSelector-projectsHeader = Projets
projectSelector-newProject = Nouveau projet
projectSelector-createProject = Créer le projet
projectSelector-projectName = Nom du projet
projectSelector-projectNamePlaceholder = Mon blog
projectSelector-chooseFolder = Choisir un dossier...
projectSelector-useDefaultLocation = Utiliser l'emplacement par défaut
projectSelector-deleteProject = Supprimer le projet
projectSelector-toast-switched = Projet actif : { $name }
projectSelector-toast-switchFailed = Échec du changement de projet
projectSelector-toast-created = Projet "{ $name }" créé
projectSelector-toast-createFailed = Impossible de créer le projet
projectSelector-toast-deleteFailed = Impossible de supprimer le projet
tabBar-closeHint = Fermer
tabBar-loading = Chargement...
tabBar-unknown = Inconnu
tabBar-style = Style
tabBar-menuEditor = Éditeur de menu
tabBar-metadataDiff = Diff métadonnées
tabBar-siteValidation = Validation du site
tabBar-translationValidation = Validation des traductions
siteValidation-run = Lancer la validation
siteValidation-apply = Appliquer la validation
siteValidation-applying = Application en cours...
siteValidation-idle = Lancez la validation du site pour comparer les fichiers générés à la sortie attendue.
siteValidation-running = Validation en cours...
siteValidation-clean = Aucun fichier généré manquant, supplémentaire ou obsolète n'a été trouvé.
siteValidation-error = La validation a échoué
siteValidation-missing = Fichiers manquants
siteValidation-extra = Fichiers supplémentaires
siteValidation-stale = Fichiers obsolètes
tabBar-documentation = Documentation
tabBar-apiDocumentation = Documentation API
tabBar-findDuplicates = Trouver les doublons
tabBar-tags = Tags
tabBar-preview = Aperçu
tabBar-modified = Modifié
sidebar-noPostsYet = Aucun article pour le moment
sidebar-noPagesYet = Aucune page pour le moment
sidebar-noMediaYet = Aucun média pour le moment
sidebar-noScriptsYet = Aucun script
sidebar-noTemplatesYet = Aucun modèle
sidebar-chatPlaceholder = L'assistant IA apparaîtra ici
sidebar-importPlaceholder = Importer du contenu depuis des sources externes
sidebar-gitPlaceholder = Intégration du contrôle de source
sidebar-loading = Chargement...
sidebar-settingsHeader = Paramètres
sidebar-tagsHeader = Étiquettes
sidebar-drafts = Brouillons
sidebar-published = Publiés
sidebar-archived = Archivés
sidebar-loadMore = Charger plus…
language-en = Anglais
language-de = Allemand
language-fr = Français
language-it = Italien
language-es = Espagnol
welcome-title = Bienvenue dans bDS
welcome-subtitle = Ouvrez un projet ou créez un nouvel article pour commencer.
post-untitled = Sans titre
post-createFailed = Impossible de créer l'article : { $error }
engine-rebuildStarted = Reconstruction de la base de données à partir des fichiers...
engine-rebuildComplete = Base de données reconstruite : { $posts } articles, { $media } médias, { $templates } modèles, { $scripts } scripts
engine-rebuildFailed = Échec de la reconstruction de la base de données : { $error }
engine-reindexStarted = Réindexation du texte de recherche...
engine-reindexComplete = Texte de recherche réindexé : { $posts } articles, { $media } médias
engine-reindexFailed = Échec de la réindexation du texte de recherche : { $error }
engine-calendarStarted = Régénération du calendrier...
engine-calendarComplete = Calendrier régénéré
engine-calendarFailed = Échec de la régénération du calendrier : { $error }
engine-calendarNoProject = Aucun projet actif
engine-validateTranslationsStarted = Validation des traductions...
engine-validateMediaStarted = Validation des médias...
engine-validateTranslationsComplete = Validation des traductions : { $dbIssues } problèmes en base, { $fsIssues } problèmes sur le système de fichiers
engine-validateTranslationsFailed = Échec de la validation des traductions : { $error }
engine-fillMissingTranslationsOffline = Impossible de compléter les traductions : l'IA n'est pas disponible en mode avion
engine-fillMissingTranslationsNoAi = Impossible de compléter les traductions : l'IA n'est pas encore disponible
engine-uploadStarted = Publication du site...
engine-uploadMissingCredentials = Identifiants de publication incomplets. Configurez-les dans les paramètres du projet.
engine-uploadOffline = Impossible de publier : le mode avion est actif
engine-generateSiteStarted = Génération du site...
engine-generateSiteNoProject = Aucun projet actif
engine-previewDataDirUnavailable = Le répertoire de données du projet est indisponible
engine-previewPortInUse = Le port du serveur d'aperçu est déjà utilisé
dialog-selectFolder = Sélectionner un dossier
dialog-importMedia = Importer des médias
dialog-imageFilter = Images
settings-nav-project = Projet
settings-nav-editor = Éditeur
settings-nav-content = Contenu
settings-nav-ai = IA
settings-nav-technology = Technologie
settings-nav-publishing = Publication
settings-nav-data = Données
settings-nav-mcp = MCP
settings-nav-style = Style
tags-nav-cloud = Nuage de tags
tags-nav-manage = Gérer les tags
tags-nav-merge = Fusionner les tags
tags-nav-discover = Découvrir les tags
sidebar-chatYesterday = Hier
modal-confirmDelete-title = Confirmer la suppression
modal-confirmDelete-warning = Cette action est irréversible.
modal-confirmDelete-cancel = Annuler
modal-confirmDelete-delete = Supprimer
modal-confirm-title = Confirmer
modal-confirm-cancel = Annuler
modal-confirm-confirm = Confirmer
modal-postInsertLink-title = Insérer un lien
modal-postInsertLink-description = Sélectionnez un article à lier.
modal-postInsertLink-cancel = Annuler
modal-postInsertLink-tabInternal = Interne
modal-postInsertLink-tabExternal = Externe
modal-postInsertLink-searchPlaceholder = Rechercher les articles...
modal-postInsertLink-emptyState = Commencez à taper pour rechercher des articles ou utilisez des articles similaires
modal-postInsertLink-createPost = Créer l'article
modal-postInsertLink-insert = Insérer
modal-postInsertLink-externalUrlPlaceholder = https://example.com
modal-postInsertLink-externalTextPlaceholder = Texte affiché (optionnel)
modal-postInsertLink-urlRequired = Une URL est requise.
modal-postInsertLink-titleRequired = Saisissez un titre pour créer un article lié.
modal-postInsertLink-createFailed = Impossible de créer l'article lié.
modal-postInsertLink-loadFailed = Impossible de charger l'article sélectionné.
modal-insertMedia-title = Insérer un média
modal-insertMedia-description = Sélectionnez un média à insérer.
modal-insertMedia-cancel = Annuler
modal-insertMedia-searchPlaceholder = Rechercher les médias...
modal-insertMedia-loadFailed = Impossible de charger le média sélectionné.
modal-postGallery-title = Galerie média
modal-postGallery-description = Cliquez sur une image pourvoir en taille réelle.
modal-postGallery-close = Fermer
modal-postGallery-backToGrid = Retour à la grille
modal-postGallery-unavailable = Aperçu indisponible
modal-aiSuggestions-title = Suggestions IA
modal-aiSuggestions-applySelected = Appliquer la sélection
modal-languagePicker-title = Traduire vers
sidebar-filter-search = Rechercher...
sidebar-filter-toggle = Filtres
sidebar-filter-clearAll = Effacer tous les filtres
sidebar-filter-status = Statut
sidebar-filter-language = Langue
sidebar-filter-dateRange = Plage de dates
sidebar-filter-from = Depuis (AAAA-MM-JJ)
sidebar-filter-to = Jusqu'au (AAAA-MM-JJ)
editor-insertLink = Insérer un lien
editor-insertMedia = Insérer un média
editor-gallery = Galerie
sidebar-filter-tags = Tags
sidebar-filter-categories = Catégories
sidebar-filter-calendar = Archives
sidebar-filter-noResults = Aucun résultat
editor-title = Titre
editor-titlePlaceholder = Saisir le titre...
editor-slug = Slug
editor-slugPlaceholder = saisir-slug
editor-content = Contenu
editor-contentPlaceholder = Rédigez votre contenu...
editor-excerpt = Extrait
editor-excerptPlaceholder = Bref résumé...
editor-author = Auteur
editor-language = Langue
editor-aiAnalyze = Analyser avec l'IA
editor-detectLanguage = Détecter la langue
editor-quickActions = Actions rapides
editor-modeMarkdown = Markdown
editor-modePreview = Aperçu
editor-suggestTaxonomy = Suggérer la taxonomie
editor-translate = Traduire
editor-templateSlug = Modèle
editor-doNotTranslate = Ne pas traduire
editor-publish = Publier
editor-discard = Annuler les modifications
editor-duplicate = Dupliquer
editor-validate = Valider
editor-run = Exécuter
editor-checkSyntax = Vérifier la syntaxe
editor-kind = Type
editor-enabled = Activé
editor-entrypoint = Point d'entrée
editor-alt = Texte alternatif
editor-altPlaceholder = Décrivez l'image...
editor-caption = Légende
editor-metadata = Métadonnées
editor-tags = Tags
editor-tagsPlaceholder = Ajouter un tag...
editor-categories = Catégories
editor-categoriesPlaceholder = Ajouter une catégorie...
editor-outlinks = Liens sortants
editor-backlinks = Liens entrants
editor-linkedMedia = Médias liés
editor-linkedMediaEmpty = Aucun média lié pour le moment.
editor-linkExistingMedia = Lier un existant
editor-linkToPost = Lier à un article
editor-linkedPosts = Articles liés
editor-linkedPostsEmpty = Lié à aucun article.
editor-postPickerSearch = Rechercher des articles
editor-postPickerSearchPlaceholder = Rechercher des articles...
editor-unlinkMedia = Dissocier
editor-linkedMediaKindImage = Image
editor-linkedMediaKindFile = Fichier
editor-untitled = Sans titre
editor-createdAt = Créé
editor-updatedAt = Mis à jour
editor-publishedAt = Publié
tags-noTags = Aucun tag
tags-cloudSection = Nuage
tags-cloudHelp = Sélectionnez un ou plusieurs tags pour les modifier, les supprimer ou les fusionner.
tags-selectedCount = { $count } sélectionnés
tags-clearSelection = Effacer la sélection
tags-createSection = Créer un tag
tags-createPlaceholder = nouveau-tag
tags-createButton = Créer
tags-editTag = Modifier le tag
tags-manageSection = Gérer
tags-name = Nom
tags-color = Couleur
tags-colorPresets = Couleurs prédéfinies
tags-postTemplate = Modèle d'article
tags-noTemplate = Aucun
tags-merge = Fusionner
tags-mergeTarget = Tag cible
tags-mergeSection = Fusionner
tags-mergeHelp = Sélectionnez au moins deux tags dans le nuage ou la liste pour les fusionner.
tags-mergePreview = Tags à supprimer : { $tags }
tags-mergeConfirmTitle = Fusionner les tags
tags-mergeConfirmMessage = Fusionner { $count } tags dans { $target } ? Cette action est irréversible.
tags-deleteUsage = Ce tag est utilisé dans { $count } articles.
tags-discoverSection = Découvrir
tags-discoverDescription = Découvrir les tags à partir des articles actuels et réécrire tags.json pour refléter la base de données.
tags-discoverButton = Découvrir
tags-selectTag = Sélectionnez un tag à modifier
template-forceDeleteTitle = Forcer la suppression du modèle
template-forceDeleteMessage = Ce modèle est utilisé par { $posts } articles et { $tags } tags. Forcer la suppression ?
common-add = Ajouter
common-remove = Supprimer
common-clear = Effacer
common-noResults = Aucun résultat
settings-projectName = Nom du projet
settings-projectDescription = Description
settings-dataPath = Dossier de données
settings-browse = Parcourir...
settings-reset = Réinitialiser
settings-publicUrl = URL publique
settings-mainLanguage = Langue principale
settings-mainLanguageRequired = requise
settings-blogLanguages = Langues du blog
settings-defaultAuthor = Auteur par défaut
settings-maxPostsPerPage = Articles par page
settings-blogmarkCategory = Catégorie Blogmark
settings-defaultMode = Mode d'édition par défaut
settings-diffViewStyle = Style de diff
settings-categoryTitle = Titre pour { $category }
settings-categoryPostTemplate = Modèle d'article
settings-categoryListTemplate = Modèle de liste
settings-categoryRenderInLists = Afficher dans les listes
settings-categoryShowTitles = Afficher les titres
settings-addCategory = Ajouter une catégorie
settings-resetCategories = Rétablir les catégories par défaut
settings-wrapLongLines = Retour à la ligne automatique
settings-hideUnchangedRegions = Masquer les régions inchangées
settings-offlineMode = Mode avion
settings-onlineEndpointSection = Point de terminaison en ligne
settings-onlineEndpointUrl = URL du point de terminaison en ligne
settings-onlineEndpointModel = Modèle du point de terminaison en ligne
settings-onlineApiKey = Clé API en ligne
settings-airplaneEndpointSection = Point de terminaison mode avion
settings-airplaneEndpointUrl = URL du point de terminaison mode avion
settings-airplaneEndpointModel = Modèle du point de terminaison mode avion
settings-refreshModels = Rafraîchir les modèles
settings-defaultModel = Modèle par défaut
settings-titleModel = Modèle de titres
settings-imageAnalysisModel = Modèle d'analyse d'image
settings-keychainConfigured = Stocké dans le trousseau
settings-systemPrompt = Prompt système
settings-resetToDefault = Rétablir les valeurs par défaut
settings-luaRuntimeOnly = Lua est l'unique moteur de script dans l'application Rust.
settings-semanticSimilarityEnabled = Similarité sémantique
settings-sshHost = Hôte SSH
settings-sshUsername = Nom d'utilisateur SSH
settings-sshRemotePath = Chemin distant
settings-clear = Effacer
settings-rebuildPosts = Reconstruire les articles
settings-rebuildMedia = Reconstruire les médias
settings-rebuildScripts = Reconstruire les scripts
settings-rebuildTemplates = Reconstruire les modèles
settings-rebuildLinks = Reconstruire les liens
settings-regenerateThumbnails = Régénérer les miniatures
settings-openDataFolder = Ouvrir le dossier de données
settings-contentPlaceholder = Les paramètres de contenu apparaîtront ici
settings-technologyPlaceholder = Les paramètres technologiques apparaîtront ici
settings-mcpPlaceholder = Les paramètres du serveur MCP apparaîtront ici
dashboard-overview = Aperçu
dashboard-posts = Articles
dashboard-media = Médias
dashboard-tags = Tags
dashboard-categories = Catégories
dashboard-images = Images
dashboard-drafts = Brouillons
dashboard-published = Publiés
dashboard-archived = Archivés
dashboard-statCards = Instantané
dashboard-timeline = Chronologie
dashboard-noTimelineData = Aucune donnée de chronologie
dashboard-tagCloud = Nuage de tags
dashboard-noTags = Aucun tag pour le moment
dashboard-categoryCloud = Nuage de catégories
dashboard-recentPosts = Articles récents
dashboard-noRecentPosts = Aucun article récent
dashboard-and = et
dashboard-pin = Épingler
common-tabNotImplemented = Cette section sera mise en œuvre lors dune étape ultérieure.
editor-noPreviewAvailable = Aucun aperçu disponible

View File

@@ -1,387 +0,0 @@
{
"menu.group.file": "Fichier",
"menu.group.edit": "Édition",
"menu.group.view": "Affichage",
"menu.group.blog": "Blog",
"menu.group.help": "Aide",
"menu.item.newPost": "Nouvel article",
"menu.item.importMedia": "Importer des médias...",
"menu.item.save": "Enregistrer",
"menu.item.openInBrowser": "Ouvrir dans le navigateur",
"menu.item.openDataFolder": "Ouvrir le dossier de données",
"menu.item.find": "Rechercher",
"menu.item.replace": "Remplacer",
"menu.item.editPreferences": "Modifier les préférences",
"menu.item.viewPosts": "Articles",
"menu.item.viewMedia": "Médias",
"menu.item.toggleSidebar": "Basculer la barre latérale",
"menu.item.togglePanel": "Basculer le panneau",
"menu.item.publishSelected": "Publier la sélection",
"menu.item.previewPost": "Aperçu de l'article",
"menu.item.rebuildDatabase": "Reconstruire la base de données",
"menu.item.reindexText": "Réindexer le texte de recherche",
"menu.item.metadataDiff": "Outil de diff des métadonnées",
"menu.item.editMenu": "Modifier le menu du blog",
"menu.item.generateSitemap": "Rendre le site",
"menu.item.regenerateCalendar": "Régénérer le calendrier",
"menu.item.validateSite": "Valider le site",
"menu.item.validateTranslations": "Valider les traductions",
"menu.item.fillMissingTranslations": "Compléter les traductions manquantes",
"menu.item.uploadSite": "Publier le site",
"menu.item.about": "À propos de Blogging Desktop Server",
"menu.item.openDocumentation": "Ouvrir la documentation",
"menu.item.viewOnGitHub": "Voir sur GitHub",
"menu.item.reportIssue": "Signaler un problème",
"activity.posts": "Articles",
"activity.pages": "Pages du site",
"activity.media": "Médias",
"activity.scripts": "Scripts",
"activity.tags": "Étiquettes",
"activity.templates": "Modèles",
"activity.aiAssistant": "Assistant IA",
"activity.import": "Importation",
"activity.sourceControl": "Contrôle de source",
"common.save": "Enregistrer",
"common.open": "Ouvrir",
"common.cancel": "Annuler",
"common.settings": "Paramètres",
"common.tasks": "Tâches",
"common.running": "en cours",
"common.pending": "en attente",
"tasks.backgroundTasks": "Tâches en arrière-plan",
"tasks.clearCompleted": "Effacer terminé",
"tasks.noActive": "Aucune tâche active",
"tasks.cancelTask": "Annuler la tâche",
"tasks.triggerTitle": "{running} en cours, {pending} en attente",
"app.taskCompleted": "Tâche terminée : {message}",
"app.taskFailed": "Échec de la tâche : {message}",
"app.databaseRebuildFailed": "Échec de la reconstruction de la base de données",
"app.textReindexFailed": "Échec de la réindexation du texte",
"panel.output": "Sortie",
"panel.postLinks": "Liens d'articles",
"panel.gitLog": "Historique Git",
"panel.postLinksPlaceholder": "Aucun lien d'article à afficher",
"panel.gitLogPlaceholder": "Aucun historique Git à afficher",
"panel.closeTitle": "Fermer le panneau",
"panel.noRecentTasks": "Aucune tâche récente",
"panel.noOutput": "Aucune sortie",
"statusBar.posts": "{count} articles",
"statusBar.media": "{count} médias",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Langue de l'interface",
"statusBar.offlineMode": "Mode avion",
"statusBar.offlineModeActive": "Mode avion (actif)",
"projectSelector.switchProject": "Changer de projet",
"projectSelector.projectsHeader": "Projets",
"projectSelector.newProject": "Nouveau projet",
"projectSelector.createProject": "Créer le projet",
"projectSelector.projectName": "Nom du projet",
"projectSelector.projectNamePlaceholder": "Mon blog",
"projectSelector.chooseFolder": "Choisir un dossier...",
"projectSelector.useDefaultLocation": "Utiliser l'emplacement par défaut",
"projectSelector.deleteProject": "Supprimer le projet",
"projectSelector.toast.switched": "Projet actif : {name}",
"projectSelector.toast.switchFailed": "Échec du changement de projet",
"projectSelector.toast.created": "Projet \"{name}\" créé",
"projectSelector.toast.createFailed": "Impossible de créer le projet",
"projectSelector.toast.deleteFailed": "Impossible de supprimer le projet",
"tabBar.closeHint": "Fermer",
"tabBar.loading": "Chargement...",
"tabBar.unknown": "Inconnu",
"tabBar.style": "Style",
"tabBar.menuEditor": "Éditeur de menu",
"tabBar.metadataDiff": "Diff métadonnées",
"tabBar.siteValidation": "Validation du site",
"tabBar.translationValidation": "Validation des traductions",
"siteValidation.run": "Lancer la validation",
"siteValidation.apply": "Appliquer la validation",
"siteValidation.applying": "Application en cours...",
"siteValidation.idle": "Lancez la validation du site pour comparer les fichiers générés à la sortie attendue.",
"siteValidation.running": "Validation en cours...",
"siteValidation.clean": "Aucun fichier généré manquant, supplémentaire ou obsolète n'a été trouvé.",
"siteValidation.error": "La validation a échoué",
"siteValidation.missing": "Fichiers manquants",
"siteValidation.extra": "Fichiers supplémentaires",
"siteValidation.stale": "Fichiers obsolètes",
"tabBar.documentation": "Documentation",
"tabBar.apiDocumentation": "Documentation API",
"tabBar.findDuplicates": "Trouver les doublons",
"tabBar.tags": "Tags",
"tabBar.preview": "Aperçu",
"tabBar.modified": "Modifié",
"sidebar.noPostsYet": "Aucun article pour le moment",
"sidebar.noPagesYet": "Aucune page pour le moment",
"sidebar.noMediaYet": "Aucun média pour le moment",
"sidebar.noScriptsYet": "Aucun script",
"sidebar.noTemplatesYet": "Aucun modèle",
"sidebar.chatPlaceholder": "L'assistant IA apparaîtra ici",
"sidebar.importPlaceholder": "Importer du contenu depuis des sources externes",
"sidebar.gitPlaceholder": "Intégration du contrôle de source",
"sidebar.loading": "Chargement...",
"sidebar.settingsHeader": "Paramètres",
"sidebar.tagsHeader": "Étiquettes",
"sidebar.drafts": "Brouillons",
"sidebar.published": "Publiés",
"sidebar.archived": "Archivés",
"sidebar.loadMore": "Charger plus…",
"language.en": "Anglais",
"language.de": "Allemand",
"language.fr": "Français",
"language.it": "Italien",
"language.es": "Espagnol",
"welcome.title": "Bienvenue dans bDS",
"welcome.subtitle": "Ouvrez un projet ou créez un nouvel article pour commencer.",
"post.untitled": "Sans titre",
"post.createFailed": "Impossible de créer l'article : {error}",
"engine.rebuildStarted": "Reconstruction de la base de données à partir des fichiers...",
"engine.rebuildComplete": "Base de données reconstruite : {posts} articles, {media} médias, {templates} modèles, {scripts} scripts",
"engine.rebuildFailed": "Échec de la reconstruction de la base de données : {error}",
"engine.reindexStarted": "Réindexation du texte de recherche...",
"engine.reindexComplete": "Texte de recherche réindexé : {posts} articles, {media} médias",
"engine.reindexFailed": "Échec de la réindexation du texte de recherche : {error}",
"engine.calendarStarted": "Régénération du calendrier...",
"engine.calendarComplete": "Calendrier régénéré",
"engine.calendarFailed": "Échec de la régénération du calendrier : {error}",
"engine.calendarNoProject": "Aucun projet actif",
"engine.validateTranslationsStarted": "Validation des traductions...",
"engine.validateMediaStarted": "Validation des médias...",
"engine.validateTranslationsComplete": "Validation des traductions : {dbIssues} problèmes en base, {fsIssues} problèmes sur le système de fichiers",
"engine.validateTranslationsFailed": "Échec de la validation des traductions : {error}",
"engine.fillMissingTranslationsOffline": "Impossible de compléter les traductions : l'IA n'est pas disponible en mode avion",
"engine.fillMissingTranslationsNoAi": "Impossible de compléter les traductions : l'IA n'est pas encore disponible",
"engine.uploadStarted": "Publication du site...",
"engine.uploadMissingCredentials": "Identifiants de publication incomplets. Configurez-les dans les paramètres du projet.",
"engine.uploadOffline": "Impossible de publier : le mode avion est actif",
"engine.generateSiteStarted": "Génération du site...",
"engine.generateSiteNoProject": "Aucun projet actif",
"engine.previewDataDirUnavailable": "Le répertoire de données du projet est indisponible",
"engine.previewPortInUse": "Le port du serveur d'aperçu est déjà utilisé",
"dialog.selectFolder": "Sélectionner un dossier",
"dialog.importMedia": "Importer des médias",
"dialog.imageFilter": "Images",
"settings.nav.project": "Projet",
"settings.nav.editor": "Éditeur",
"settings.nav.content": "Contenu",
"settings.nav.ai": "IA",
"settings.nav.technology": "Technologie",
"settings.nav.publishing": "Publication",
"settings.nav.data": "Données",
"settings.nav.mcp": "MCP",
"settings.nav.style": "Style",
"tags.nav.cloud": "Nuage de tags",
"tags.nav.manage": "Gérer les tags",
"tags.nav.merge": "Fusionner les tags",
"tags.nav.discover": "Découvrir les tags",
"sidebar.chatYesterday": "Hier",
"modal.confirmDelete.title": "Confirmer la suppression",
"modal.confirmDelete.warning": "Cette action est irréversible.",
"modal.confirmDelete.cancel": "Annuler",
"modal.confirmDelete.delete": "Supprimer",
"modal.confirm.title": "Confirmer",
"modal.confirm.cancel": "Annuler",
"modal.confirm.confirm": "Confirmer",
"modal.postInsertLink.title": "Insérer un lien",
"modal.postInsertLink.description": "Sélectionnez un article à lier.",
"modal.postInsertLink.cancel": "Annuler",
"modal.postInsertLink.tabInternal": "Interne",
"modal.postInsertLink.tabExternal": "Externe",
"modal.postInsertLink.searchPlaceholder": "Rechercher les articles...",
"modal.postInsertLink.emptyState": "Commencez à taper pour rechercher des articles ou utilisez des articles similaires",
"modal.postInsertLink.createPost": "Créer l'article",
"modal.postInsertLink.insert": "Insérer",
"modal.postInsertLink.externalUrlPlaceholder": "https://example.com",
"modal.postInsertLink.externalTextPlaceholder": "Texte affiché (optionnel)",
"modal.postInsertLink.urlRequired": "Une URL est requise.",
"modal.postInsertLink.titleRequired": "Saisissez un titre pour créer un article lié.",
"modal.postInsertLink.createFailed": "Impossible de créer l'article lié.",
"modal.postInsertLink.loadFailed": "Impossible de charger l'article sélectionné.",
"modal.insertMedia.title": "Insérer un média",
"modal.insertMedia.description": "Sélectionnez un média à insérer.",
"modal.insertMedia.cancel": "Annuler",
"modal.insertMedia.searchPlaceholder": "Rechercher les médias...",
"modal.insertMedia.loadFailed": "Impossible de charger le média sélectionné.",
"modal.postGallery.title": "Galerie média",
"modal.postGallery.description": "Cliquez sur une image pourvoir en taille réelle.",
"modal.postGallery.close": "Fermer",
"modal.postGallery.backToGrid": "Retour à la grille",
"modal.postGallery.unavailable": "Aperçu indisponible",
"modal.aiSuggestions.title": "Suggestions IA",
"modal.aiSuggestions.applySelected": "Appliquer la sélection",
"modal.languagePicker.title": "Traduire vers",
"sidebar.filter.search": "Rechercher...",
"sidebar.filter.toggle": "Filtres",
"sidebar.filter.clearAll": "Effacer tous les filtres",
"sidebar.filter.status": "Statut",
"sidebar.filter.language": "Langue",
"sidebar.filter.dateRange": "Plage de dates",
"sidebar.filter.from": "Depuis (AAAA-MM-JJ)",
"sidebar.filter.to": "Jusqu'au (AAAA-MM-JJ)",
"editor.insertLink": "Insérer un lien",
"editor.insertMedia": "Insérer un média",
"editor.gallery": "Galerie",
"sidebar.filter.tags": "Tags",
"sidebar.filter.categories": "Catégories",
"sidebar.filter.calendar": "Archives",
"sidebar.filter.noResults": "Aucun résultat",
"editor.title": "Titre",
"editor.titlePlaceholder": "Saisir le titre...",
"editor.slug": "Slug",
"editor.slugPlaceholder": "saisir-slug",
"editor.content": "Contenu",
"editor.contentPlaceholder": "Rédigez votre contenu...",
"editor.excerpt": "Extrait",
"editor.excerptPlaceholder": "Bref résumé...",
"editor.author": "Auteur",
"editor.language": "Langue",
"editor.aiAnalyze": "Analyser avec l'IA",
"editor.detectLanguage": "Détecter la langue",
"editor.quickActions": "Actions rapides",
"editor.modeMarkdown": "Markdown",
"editor.modePreview": "Aperçu",
"editor.suggestTaxonomy": "Suggérer la taxonomie",
"editor.translate": "Traduire",
"editor.templateSlug": "Modèle",
"editor.doNotTranslate": "Ne pas traduire",
"editor.publish": "Publier",
"editor.discard": "Annuler les modifications",
"editor.duplicate": "Dupliquer",
"editor.validate": "Valider",
"editor.run": "Exécuter",
"editor.checkSyntax": "Vérifier la syntaxe",
"editor.kind": "Type",
"editor.enabled": "Activé",
"editor.entrypoint": "Point d'entrée",
"editor.alt": "Texte alternatif",
"editor.altPlaceholder": "Décrivez l'image...",
"editor.caption": "Légende",
"editor.metadata": "Métadonnées",
"editor.tags": "Tags",
"editor.tagsPlaceholder": "Ajouter un tag...",
"editor.categories": "Catégories",
"editor.categoriesPlaceholder": "Ajouter une catégorie...",
"editor.outlinks": "Liens sortants",
"editor.backlinks": "Liens entrants",
"editor.linkedMedia": "Médias liés",
"editor.linkedMediaEmpty": "Aucun média lié pour le moment.",
"editor.linkExistingMedia": "Lier un existant",
"editor.linkToPost": "Lier à un article",
"editor.linkedPosts": "Articles liés",
"editor.linkedPostsEmpty": "Lié à aucun article.",
"editor.postPickerSearch": "Rechercher des articles",
"editor.postPickerSearchPlaceholder": "Rechercher des articles...",
"editor.unlinkMedia": "Dissocier",
"editor.linkedMediaKindImage": "Image",
"editor.linkedMediaKindFile": "Fichier",
"editor.untitled": "Sans titre",
"editor.createdAt": "Créé",
"editor.updatedAt": "Mis à jour",
"editor.publishedAt": "Publié",
"tags.noTags": "Aucun tag",
"tags.cloudSection": "Nuage",
"tags.cloudHelp": "Sélectionnez un ou plusieurs tags pour les modifier, les supprimer ou les fusionner.",
"tags.selectedCount": "{count} sélectionnés",
"tags.clearSelection": "Effacer la sélection",
"tags.createSection": "Créer un tag",
"tags.createPlaceholder": "nouveau-tag",
"tags.createButton": "Créer",
"tags.editTag": "Modifier le tag",
"tags.manageSection": "Gérer",
"tags.name": "Nom",
"tags.color": "Couleur",
"tags.colorPresets": "Couleurs prédéfinies",
"tags.postTemplate": "Modèle d'article",
"tags.noTemplate": "Aucun",
"tags.merge": "Fusionner",
"tags.mergeTarget": "Tag cible",
"tags.mergeSection": "Fusionner",
"tags.mergeHelp": "Sélectionnez au moins deux tags dans le nuage ou la liste pour les fusionner.",
"tags.mergePreview": "Tags à supprimer : {tags}",
"tags.mergeConfirmTitle": "Fusionner les tags",
"tags.mergeConfirmMessage": "Fusionner {count} tags dans {target} ? Cette action est irréversible.",
"tags.deleteUsage": "Ce tag est utilisé dans {count} articles.",
"tags.discoverSection": "Découvrir",
"tags.discoverDescription": "Découvrir les tags à partir des articles actuels et réécrire tags.json pour refléter la base de données.",
"tags.discoverButton": "Découvrir",
"tags.selectTag": "Sélectionnez un tag à modifier",
"template.forceDeleteTitle": "Forcer la suppression du modèle",
"template.forceDeleteMessage": "Ce modèle est utilisé par {posts} articles et {tags} tags. Forcer la suppression ?",
"common.add": "Ajouter",
"common.remove": "Supprimer",
"common.clear": "Effacer",
"common.noResults": "Aucun résultat",
"settings.projectName": "Nom du projet",
"settings.projectDescription": "Description",
"settings.dataPath": "Dossier de données",
"settings.browse": "Parcourir...",
"settings.reset": "Réinitialiser",
"settings.publicUrl": "URL publique",
"settings.mainLanguage": "Langue principale",
"settings.mainLanguageRequired": "requise",
"settings.blogLanguages": "Langues du blog",
"settings.defaultAuthor": "Auteur par défaut",
"settings.maxPostsPerPage": "Articles par page",
"settings.blogmarkCategory": "Catégorie Blogmark",
"settings.defaultMode": "Mode d'édition par défaut",
"settings.diffViewStyle": "Style de diff",
"settings.categoryTitle": "Titre pour {category}",
"settings.categoryPostTemplate": "Modèle d'article",
"settings.categoryListTemplate": "Modèle de liste",
"settings.categoryRenderInLists": "Afficher dans les listes",
"settings.categoryShowTitles": "Afficher les titres",
"settings.addCategory": "Ajouter une catégorie",
"settings.resetCategories": "Rétablir les catégories par défaut",
"settings.wrapLongLines": "Retour à la ligne automatique",
"settings.hideUnchangedRegions": "Masquer les régions inchangées",
"settings.offlineMode": "Mode avion",
"settings.onlineEndpointSection": "Point de terminaison en ligne",
"settings.onlineEndpointUrl": "URL du point de terminaison en ligne",
"settings.onlineEndpointModel": "Modèle du point de terminaison en ligne",
"settings.onlineApiKey": "Clé API en ligne",
"settings.airplaneEndpointSection": "Point de terminaison mode avion",
"settings.airplaneEndpointUrl": "URL du point de terminaison mode avion",
"settings.airplaneEndpointModel": "Modèle du point de terminaison mode avion",
"settings.refreshModels": "Rafraîchir les modèles",
"settings.defaultModel": "Modèle par défaut",
"settings.titleModel": "Modèle de titres",
"settings.imageAnalysisModel": "Modèle d'analyse d'image",
"settings.keychainConfigured": "Stocké dans le trousseau",
"settings.systemPrompt": "Prompt système",
"settings.resetToDefault": "Rétablir les valeurs par défaut",
"settings.luaRuntimeOnly": "Lua est l'unique moteur de script dans l'application Rust.",
"settings.semanticSimilarityEnabled": "Similarité sémantique",
"settings.sshHost": "Hôte SSH",
"settings.sshUsername": "Nom d'utilisateur SSH",
"settings.sshRemotePath": "Chemin distant",
"settings.clear": "Effacer",
"settings.rebuildPosts": "Reconstruire les articles",
"settings.rebuildMedia": "Reconstruire les médias",
"settings.rebuildScripts": "Reconstruire les scripts",
"settings.rebuildTemplates": "Reconstruire les modèles",
"settings.rebuildLinks": "Reconstruire les liens",
"settings.regenerateThumbnails": "Régénérer les miniatures",
"settings.openDataFolder": "Ouvrir le dossier de données",
"settings.contentPlaceholder": "Les paramètres de contenu apparaîtront ici",
"settings.technologyPlaceholder": "Les paramètres technologiques apparaîtront ici",
"settings.mcpPlaceholder": "Les paramètres du serveur MCP apparaîtront ici",
"dashboard.overview": "Aperçu",
"dashboard.posts": "Articles",
"dashboard.media": "Médias",
"dashboard.tags": "Tags",
"dashboard.categories": "Catégories",
"dashboard.images": "Images",
"dashboard.drafts": "Brouillons",
"dashboard.published": "Publiés",
"dashboard.archived": "Archivés",
"dashboard.statCards": "Instantané",
"dashboard.timeline": "Chronologie",
"dashboard.noTimelineData": "Aucune donnée de chronologie",
"dashboard.tagCloud": "Nuage de tags",
"dashboard.noTags": "Aucun tag pour le moment",
"dashboard.categoryCloud": "Nuage de catégories",
"dashboard.recentPosts": "Articles récents",
"dashboard.noRecentPosts": "Aucun article récent",
"dashboard.and": "et",
"dashboard.pin": "Épingler",
"common.tabNotImplemented": "Cette section sera mise en œuvre lors dune étape ultérieure.",
"editor.noPreviewAvailable": "Aucun aperçu disponible"
}

385
locales/ui/it.ftl Normal file
View File

@@ -0,0 +1,385 @@
menu-group-file = Archivio
menu-group-edit = Modifica
menu-group-view = Vista
menu-group-blog = Blog
menu-group-help = Aiuto
menu-item-newPost = Nuovo post
menu-item-importMedia = Importa media...
menu-item-save = Salva
menu-item-openInBrowser = Apri nel browser
menu-item-openDataFolder = Apri cartella dati
menu-item-find = Trova
menu-item-replace = Sostituisci
menu-item-editPreferences = Modifica preferenze
menu-item-viewPosts = Post
menu-item-viewMedia = Contenuti media
menu-item-toggleSidebar = Attiva/disattiva barra laterale
menu-item-togglePanel = Attiva/disattiva pannello
menu-item-publishSelected = Pubblica selezionato
menu-item-previewPost = Anteprima post
menu-item-rebuildDatabase = Ricostruisci database dai file
menu-item-reindexText = Reindicizza testo di ricerca
menu-item-metadataDiff = Strumento diff metadati
menu-item-editMenu = Modifica menu blog
menu-item-generateSitemap = Renderizza sito
menu-item-regenerateCalendar = Rigenera calendario
menu-item-validateSite = Valida sito
menu-item-validateTranslations = Valida traduzioni
menu-item-fillMissingTranslations = Completa le traduzioni mancanti
menu-item-uploadSite = Carica sito
menu-item-about = Informazioni su Blogging Desktop Server
menu-item-openDocumentation = Apri documentazione
menu-item-viewOnGitHub = Visualizza su GitHub
menu-item-reportIssue = Segnala problema
activity-posts = Post
activity-pages = Pagine
activity-media = Contenuti media
activity-scripts = Script
activity-tags = Tag
activity-templates = Modelli
activity-aiAssistant = Assistente IA
activity-import = Importa
activity-sourceControl = Controllo sorgente
common-save = Salva
common-open = Apri
common-cancel = Annulla
common-settings = Impostazioni
common-tasks = Attività
common-running = in esecuzione
common-pending = in attesa
tasks-backgroundTasks = Attività in background
tasks-clearCompleted = Cancella completate
tasks-noActive = Nessuna attività attiva
tasks-cancelTask = Annulla attività
tasks-triggerTitle = { $running } in esecuzione, { $pending } in attesa
app-taskCompleted = Attività completata: { $message }
app-taskFailed = Attività non riuscita: { $message }
app-databaseRebuildFailed = Ricostruzione database non riuscita
app-textReindexFailed = Reindicizzazione testo non riuscita
panel-output = Uscita
panel-postLinks = Link ai post
panel-gitLog = Cronologia Git
panel-postLinksPlaceholder = Nessun link ai post da visualizzare
panel-gitLogPlaceholder = Nessuna cronologia Git da visualizzare
panel-closeTitle = Chiudi pannello
panel-noRecentTasks = Nessuna attività recente
panel-noOutput = Nessun output
statusBar-posts = { $count } articoli
statusBar-media = { $count } media
statusBar-ui = UI
statusBar-uiLanguage = Lingua interfaccia
statusBar-offlineMode = Modalità aereo
statusBar-offlineModeActive = Modalità aereo (attiva)
projectSelector-switchProject = Cambia progetto
projectSelector-projectsHeader = Progetti
projectSelector-newProject = Nuovo progetto
projectSelector-createProject = Crea progetto
projectSelector-projectName = Nome progetto
projectSelector-projectNamePlaceholder = Il mio blog
projectSelector-chooseFolder = Scegli cartella...
projectSelector-useDefaultLocation = Usa percorso predefinito
projectSelector-deleteProject = Elimina progetto
projectSelector-toast-switched = Passato a { $name }
projectSelector-toast-switchFailed = Cambio progetto non riuscito
projectSelector-toast-created = Progetto "{ $name }" creato
projectSelector-toast-createFailed = Creazione progetto non riuscita
projectSelector-toast-deleteFailed = Eliminazione progetto non riuscita
tabBar-closeHint = Chiudi
tabBar-loading = Caricamento...
tabBar-unknown = Sconosciuto
tabBar-style = Stile
tabBar-menuEditor = Editor menu
tabBar-metadataDiff = Diff metadati
tabBar-siteValidation = Validazione sito
tabBar-translationValidation = Validazione traduzioni
siteValidation-run = Esegui validazione
siteValidation-apply = Applica validazione
siteValidation-applying = Applicazione in corso...
siteValidation-idle = Esegui la validazione del sito per confrontare i file generati con l'output previsto.
siteValidation-running = Validazione in corso...
siteValidation-clean = Non sono stati trovati file generati mancanti, aggiuntivi o obsoleti.
siteValidation-error = Validazione non riuscita
siteValidation-missing = File mancanti
siteValidation-extra = File aggiuntivi
siteValidation-stale = File obsoleti
tabBar-documentation = Documentazione
tabBar-apiDocumentation = Documentazione API
tabBar-findDuplicates = Trova duplicati
tabBar-tags = Tag
tabBar-preview = Anteprima
tabBar-modified = Modificato
sidebar-noPostsYet = Nessun post
sidebar-noPagesYet = Nessuna pagina
sidebar-noMediaYet = Nessun media
sidebar-noScriptsYet = Nessuno script
sidebar-noTemplatesYet = Nessun modello
sidebar-chatPlaceholder = L'assistente IA apparirà qui
sidebar-importPlaceholder = Importa contenuti da fonti esterne
sidebar-gitPlaceholder = Integrazione del controllo sorgente
sidebar-loading = Caricamento...
sidebar-settingsHeader = Impostazioni
sidebar-tagsHeader = Tag
sidebar-drafts = Bozze
sidebar-published = Pubblicati
sidebar-archived = Archiviati
sidebar-loadMore = Carica di più…
language-en = Inglese
language-de = Tedesco
language-fr = Francese
language-it = Italiano
language-es = Spagnolo
welcome-title = Benvenuto in bDS
welcome-subtitle = Apri un progetto o crea un nuovo post per iniziare.
post-untitled = Senza titolo
post-createFailed = Impossibile creare il post: { $error }
engine-rebuildStarted = Ricostruzione del database dai file...
engine-rebuildComplete = Database ricostruito: { $posts } post, { $media } media, { $templates } modelli, { $scripts } script
engine-rebuildFailed = Ricostruzione del database non riuscita: { $error }
engine-reindexStarted = Reindicizzazione del testo di ricerca...
engine-reindexComplete = Testo di ricerca reindicizzato: { $posts } post, { $media } media
engine-reindexFailed = Reindicizzazione del testo di ricerca non riuscita: { $error }
engine-calendarStarted = Rigenerazione del calendario...
engine-calendarComplete = Calendario rigenerato
engine-calendarFailed = Rigenerazione del calendario non riuscita: { $error }
engine-calendarNoProject = Nessun progetto attivo
engine-validateTranslationsStarted = Validazione delle traduzioni...
engine-validateMediaStarted = Validazione dei media...
engine-validateTranslationsComplete = Validazione traduzioni: { $dbIssues } problemi nel database, { $fsIssues } problemi nel filesystem
engine-validateTranslationsFailed = Validazione delle traduzioni non riuscita: { $error }
engine-fillMissingTranslationsOffline = Impossibile completare le traduzioni: l'IA non è disponibile in modalità aereo
engine-fillMissingTranslationsNoAi = Impossibile completare le traduzioni: l'IA non è ancora disponibile
engine-uploadStarted = Caricamento del sito...
engine-uploadMissingCredentials = Credenziali di pubblicazione incomplete. Configurale nelle impostazioni del progetto.
engine-uploadOffline = Impossibile caricare: la modalità aereo è attiva
engine-generateSiteStarted = Generazione del sito...
engine-generateSiteNoProject = Nessun progetto attivo
engine-previewDataDirUnavailable = Directory dati del progetto non disponibile
engine-previewPortInUse = La porta del server di anteprima è già in uso
dialog-selectFolder = Seleziona cartella
dialog-importMedia = Importa media
dialog-imageFilter = Immagini
settings-nav-project = Progetto
settings-nav-editor = Editor
settings-nav-content = Contenuto
settings-nav-ai = IA
settings-nav-technology = Tecnologia
settings-nav-publishing = Pubblicazione
settings-nav-data = Dati
settings-nav-mcp = MCP
settings-nav-style = Stile
tags-nav-cloud = Nuvola di tag
tags-nav-manage = Gestisci tag
tags-nav-merge = Unisci tag
tags-nav-discover = Scopri tag
sidebar-chatYesterday = Ieri
modal-confirmDelete-title = Conferma eliminazione
modal-confirmDelete-warning = Questa azione non può essere annullata.
modal-confirmDelete-cancel = Annulla
modal-confirmDelete-delete = Elimina
modal-confirm-title = Conferma
modal-confirm-cancel = Annulla
modal-confirm-confirm = Conferma
modal-postInsertLink-title = Inserisci link
modal-postInsertLink-description = Seleziona un post a cui collegarti.
modal-postInsertLink-cancel = Annulla
modal-postInsertLink-tabInternal = Interno
modal-postInsertLink-tabExternal = Esterno
modal-postInsertLink-searchPlaceholder = Cerca post...
modal-postInsertLink-emptyState = Digita per cercare post o usa post correlati
modal-postInsertLink-createPost = Crea post
modal-postInsertLink-insert = Inserisci
modal-postInsertLink-externalUrlPlaceholder = https://example.com
modal-postInsertLink-externalTextPlaceholder = Testo visualizzato (opzionale)
modal-postInsertLink-urlRequired = È richiesto un URL.
modal-postInsertLink-titleRequired = Inserisci un titolo per creare un post collegato.
modal-postInsertLink-createFailed = Impossibile creare il post collegato.
modal-postInsertLink-loadFailed = Impossibile caricare il post selezionato.
modal-insertMedia-title = Inserisci media
modal-insertMedia-description = Seleziona un elemento media da inserire.
modal-insertMedia-cancel = Annulla
modal-insertMedia-searchPlaceholder = Cerca media...
modal-insertMedia-loadFailed = Impossibile caricare l'elemento media selezionato.
modal-postGallery-title = Galleria media
modal-postGallery-description = Clicca un'immagine per vederla a grandezza piena.
modal-postGallery-close = Chiudi
modal-postGallery-backToGrid = Torna alla griglia
modal-postGallery-unavailable = Anteprima non disponibile
modal-aiSuggestions-title = Suggerimenti IA
modal-aiSuggestions-applySelected = Applica selezione
modal-languagePicker-title = Traduci in
sidebar-filter-search = Cerca...
sidebar-filter-toggle = Filtri
sidebar-filter-clearAll = Cancella tutti i filtri
sidebar-filter-status = Stato
sidebar-filter-language = Lingua
sidebar-filter-dateRange = Intervallo date
sidebar-filter-from = Da (AAAA-MM-GG)
sidebar-filter-to = A (AAAA-MM-GG)
editor-insertLink = Inserisci link
editor-insertMedia = Inserisci media
editor-gallery = Galleria
sidebar-filter-tags = Tag
sidebar-filter-categories = Categorie
sidebar-filter-calendar = Archivio
sidebar-filter-noResults = Nessun risultato
editor-title = Titolo
editor-titlePlaceholder = Inserisci titolo...
editor-slug = Slug
editor-slugPlaceholder = inserisci-slug
editor-content = Contenuto
editor-contentPlaceholder = Scrivi il tuo contenuto...
editor-excerpt = Estratto
editor-excerptPlaceholder = Breve riassunto...
editor-author = Autore
editor-language = Lingua
editor-aiAnalyze = Analizza con IA
editor-detectLanguage = Rileva lingua
editor-quickActions = Azioni rapide
editor-modeMarkdown = Markdown
editor-modePreview = Anteprima
editor-suggestTaxonomy = Suggerisci tassonomia
editor-translate = Traduci
editor-templateSlug = Modello
editor-doNotTranslate = Non tradurre
editor-publish = Pubblica
editor-discard = Scarta
editor-duplicate = Duplica
editor-validate = Valida
editor-run = Esegui
editor-checkSyntax = Controlla sintassi
editor-kind = Tipo
editor-enabled = Abilitato
editor-entrypoint = Punto di ingresso
editor-alt = Testo alternativo
editor-altPlaceholder = Descrivi l'immagine...
editor-caption = Didascalia
editor-metadata = Metadati
editor-tags = Tag
editor-tagsPlaceholder = Aggiungi tag...
editor-categories = Categorie
editor-categoriesPlaceholder = Aggiungi categoria...
editor-outlinks = Link in uscita
editor-backlinks = Link in entrata
editor-linkedMedia = Media collegati
editor-linkedMediaEmpty = Nessun media collegato.
editor-linkExistingMedia = Collega esistente
editor-linkToPost = Collega a articolo
editor-linkedPosts = Articoli collegati
editor-linkedPostsEmpty = Non collegato ad alcun articolo.
editor-postPickerSearch = Cerca articoli
editor-postPickerSearchPlaceholder = Cerca articoli...
editor-unlinkMedia = Scollega
editor-linkedMediaKindImage = Immagine
editor-linkedMediaKindFile = File
editor-untitled = Senza titolo
editor-createdAt = Creato
editor-updatedAt = Aggiornato
editor-publishedAt = Pubblicato
tags-noTags = Nessun tag
tags-cloudSection = Nuvola
tags-cloudHelp = Seleziona uno o più tag per modificarli, eliminarli o unirli.
tags-selectedCount = { $count } selezionati
tags-clearSelection = Cancella selezione
tags-createSection = Crea tag
tags-createPlaceholder = nuovo-tag
tags-createButton = Crea
tags-editTag = Modifica tag
tags-manageSection = Gestisci
tags-name = Nome
tags-color = Colore
tags-colorPresets = Colori predefiniti
tags-postTemplate = Modello articolo
tags-noTemplate = Nessuno
tags-merge = Unisci
tags-mergeTarget = Tag destinazione
tags-mergeSection = Unisci
tags-mergeHelp = Seleziona almeno due tag dalla nuvola o dall'elenco per unirli.
tags-mergePreview = Tag da eliminare: { $tags }
tags-mergeConfirmTitle = Unisci tag
tags-mergeConfirmMessage = Unire { $count } tag in { $target }? Questa azione non può essere annullata.
tags-deleteUsage = Questo tag è usato in { $count } post.
tags-discoverSection = Scopri
tags-discoverDescription = Scopri i tag dai post correnti e riscrivi tags.json per riflettere il database.
tags-discoverButton = Scopri
tags-selectTag = Seleziona un tag da modificare
template-forceDeleteTitle = Forza eliminazione template
template-forceDeleteMessage = Questo template è usato da { $posts } post e { $tags } tag. Forzare l'eliminazione?
common-add = Aggiungi
common-remove = Rimuovi
common-clear = Cancella
common-noResults = Nessun risultato
settings-projectName = Nome progetto
settings-projectDescription = Descrizione
settings-dataPath = Cartella dati
settings-browse = Sfoglia...
settings-reset = Ripristina
settings-publicUrl = URL pubblica
settings-mainLanguage = Lingua principale
settings-mainLanguageRequired = obbligatoria
settings-blogLanguages = Lingue del blog
settings-defaultAuthor = Autore predefinito
settings-maxPostsPerPage = Articoli per pagina
settings-blogmarkCategory = Categoria Blogmark
settings-defaultMode = Modalità editor predefinita
settings-diffViewStyle = Stile diff
settings-categoryTitle = Titolo per { $category }
settings-categoryPostTemplate = Modello articolo
settings-categoryListTemplate = Modello elenco
settings-categoryRenderInLists = Mostra negli elenchi
settings-categoryShowTitles = Mostra titoli
settings-addCategory = Aggiungi categoria
settings-resetCategories = Ripristina categorie predefinite
settings-wrapLongLines = A capo automatico
settings-hideUnchangedRegions = Nascondi regioni invariate
settings-offlineMode = Modalità aereo
settings-onlineEndpointSection = Endpoint online
settings-onlineEndpointUrl = URL endpoint online
settings-onlineEndpointModel = Modello endpoint online
settings-onlineApiKey = Chiave API online
settings-airplaneEndpointSection = Endpoint modalità aereo
settings-airplaneEndpointUrl = URL endpoint modalità aereo
settings-airplaneEndpointModel = Modello endpoint modalità aereo
settings-refreshModels = Aggiorna modelli
settings-defaultModel = Modello predefinito
settings-titleModel = Modello titoli
settings-imageAnalysisModel = Modello analisi immagini
settings-keychainConfigured = Salvato nel portachiavi
settings-systemPrompt = Prompt di sistema
settings-resetToDefault = Ripristina predefiniti
settings-luaRuntimeOnly = Lua è l'unico runtime di scripting nell'app Rust.
settings-semanticSimilarityEnabled = Similarità semantica
settings-sshHost = Host SSH
settings-sshUsername = Nome utente SSH
settings-sshRemotePath = Percorso remoto
settings-clear = Cancella
settings-rebuildPosts = Ricostruisci articoli
settings-rebuildMedia = Ricostruisci media
settings-rebuildScripts = Ricostruisci script
settings-rebuildTemplates = Ricostruisci modelli
settings-rebuildLinks = Ricostruisci link
settings-regenerateThumbnails = Rigenera miniature
settings-openDataFolder = Apri cartella dati
settings-contentPlaceholder = Le impostazioni del contenuto appariranno qui
settings-technologyPlaceholder = Le impostazioni tecnologiche appariranno qui
settings-mcpPlaceholder = Le impostazioni del server MCP appariranno qui
dashboard-overview = Panoramica
dashboard-posts = Articoli
dashboard-media = Media
dashboard-tags = Tag
dashboard-categories = Categorie
dashboard-images = Immagini
dashboard-drafts = Bozze
dashboard-published = Pubblicati
dashboard-archived = Archiviati
dashboard-statCards = Riepilogo
dashboard-timeline = Cronologia
dashboard-noTimelineData = Nessun dato cronologico disponibile
dashboard-tagCloud = Nuvola di tag
dashboard-noTags = Nessun tag per ora
dashboard-categoryCloud = Nuvola di categorie
dashboard-recentPosts = Post recenti
dashboard-noRecentPosts = Nessun post recente
dashboard-and = e
dashboard-pin = Fissa
common-tabNotImplemented = Questa sezione verrà implementata in una fase successiva.
editor-noPreviewAvailable = Nessuna anteprima disponibile

View File

@@ -1,387 +0,0 @@
{
"menu.group.file": "Archivio",
"menu.group.edit": "Modifica",
"menu.group.view": "Vista",
"menu.group.blog": "Blog",
"menu.group.help": "Aiuto",
"menu.item.newPost": "Nuovo post",
"menu.item.importMedia": "Importa media...",
"menu.item.save": "Salva",
"menu.item.openInBrowser": "Apri nel browser",
"menu.item.openDataFolder": "Apri cartella dati",
"menu.item.find": "Trova",
"menu.item.replace": "Sostituisci",
"menu.item.editPreferences": "Modifica preferenze",
"menu.item.viewPosts": "Post",
"menu.item.viewMedia": "Contenuti media",
"menu.item.toggleSidebar": "Attiva/disattiva barra laterale",
"menu.item.togglePanel": "Attiva/disattiva pannello",
"menu.item.publishSelected": "Pubblica selezionato",
"menu.item.previewPost": "Anteprima post",
"menu.item.rebuildDatabase": "Ricostruisci database dai file",
"menu.item.reindexText": "Reindicizza testo di ricerca",
"menu.item.metadataDiff": "Strumento diff metadati",
"menu.item.editMenu": "Modifica menu blog",
"menu.item.generateSitemap": "Renderizza sito",
"menu.item.regenerateCalendar": "Rigenera calendario",
"menu.item.validateSite": "Valida sito",
"menu.item.validateTranslations": "Valida traduzioni",
"menu.item.fillMissingTranslations": "Completa le traduzioni mancanti",
"menu.item.uploadSite": "Carica sito",
"menu.item.about": "Informazioni su Blogging Desktop Server",
"menu.item.openDocumentation": "Apri documentazione",
"menu.item.viewOnGitHub": "Visualizza su GitHub",
"menu.item.reportIssue": "Segnala problema",
"activity.posts": "Post",
"activity.pages": "Pagine",
"activity.media": "Contenuti media",
"activity.scripts": "Script",
"activity.tags": "Tag",
"activity.templates": "Modelli",
"activity.aiAssistant": "Assistente IA",
"activity.import": "Importa",
"activity.sourceControl": "Controllo sorgente",
"common.save": "Salva",
"common.open": "Apri",
"common.cancel": "Annulla",
"common.settings": "Impostazioni",
"common.tasks": "Attività",
"common.running": "in esecuzione",
"common.pending": "in attesa",
"tasks.backgroundTasks": "Attività in background",
"tasks.clearCompleted": "Cancella completate",
"tasks.noActive": "Nessuna attività attiva",
"tasks.cancelTask": "Annulla attività",
"tasks.triggerTitle": "{running} in esecuzione, {pending} in attesa",
"app.taskCompleted": "Attività completata: {message}",
"app.taskFailed": "Attività non riuscita: {message}",
"app.databaseRebuildFailed": "Ricostruzione database non riuscita",
"app.textReindexFailed": "Reindicizzazione testo non riuscita",
"panel.output": "Uscita",
"panel.postLinks": "Link ai post",
"panel.gitLog": "Cronologia Git",
"panel.postLinksPlaceholder": "Nessun link ai post da visualizzare",
"panel.gitLogPlaceholder": "Nessuna cronologia Git da visualizzare",
"panel.closeTitle": "Chiudi pannello",
"panel.noRecentTasks": "Nessuna attività recente",
"panel.noOutput": "Nessun output",
"statusBar.posts": "{count} articoli",
"statusBar.media": "{count} media",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Lingua interfaccia",
"statusBar.offlineMode": "Modalità aereo",
"statusBar.offlineModeActive": "Modalità aereo (attiva)",
"projectSelector.switchProject": "Cambia progetto",
"projectSelector.projectsHeader": "Progetti",
"projectSelector.newProject": "Nuovo progetto",
"projectSelector.createProject": "Crea progetto",
"projectSelector.projectName": "Nome progetto",
"projectSelector.projectNamePlaceholder": "Il mio blog",
"projectSelector.chooseFolder": "Scegli cartella...",
"projectSelector.useDefaultLocation": "Usa percorso predefinito",
"projectSelector.deleteProject": "Elimina progetto",
"projectSelector.toast.switched": "Passato a {name}",
"projectSelector.toast.switchFailed": "Cambio progetto non riuscito",
"projectSelector.toast.created": "Progetto \"{name}\" creato",
"projectSelector.toast.createFailed": "Creazione progetto non riuscita",
"projectSelector.toast.deleteFailed": "Eliminazione progetto non riuscita",
"tabBar.closeHint": "Chiudi",
"tabBar.loading": "Caricamento...",
"tabBar.unknown": "Sconosciuto",
"tabBar.style": "Stile",
"tabBar.menuEditor": "Editor menu",
"tabBar.metadataDiff": "Diff metadati",
"tabBar.siteValidation": "Validazione sito",
"tabBar.translationValidation": "Validazione traduzioni",
"siteValidation.run": "Esegui validazione",
"siteValidation.apply": "Applica validazione",
"siteValidation.applying": "Applicazione in corso...",
"siteValidation.idle": "Esegui la validazione del sito per confrontare i file generati con l'output previsto.",
"siteValidation.running": "Validazione in corso...",
"siteValidation.clean": "Non sono stati trovati file generati mancanti, aggiuntivi o obsoleti.",
"siteValidation.error": "Validazione non riuscita",
"siteValidation.missing": "File mancanti",
"siteValidation.extra": "File aggiuntivi",
"siteValidation.stale": "File obsoleti",
"tabBar.documentation": "Documentazione",
"tabBar.apiDocumentation": "Documentazione API",
"tabBar.findDuplicates": "Trova duplicati",
"tabBar.tags": "Tag",
"tabBar.preview": "Anteprima",
"tabBar.modified": "Modificato",
"sidebar.noPostsYet": "Nessun post",
"sidebar.noPagesYet": "Nessuna pagina",
"sidebar.noMediaYet": "Nessun media",
"sidebar.noScriptsYet": "Nessuno script",
"sidebar.noTemplatesYet": "Nessun modello",
"sidebar.chatPlaceholder": "L'assistente IA apparirà qui",
"sidebar.importPlaceholder": "Importa contenuti da fonti esterne",
"sidebar.gitPlaceholder": "Integrazione del controllo sorgente",
"sidebar.loading": "Caricamento...",
"sidebar.settingsHeader": "Impostazioni",
"sidebar.tagsHeader": "Tag",
"sidebar.drafts": "Bozze",
"sidebar.published": "Pubblicati",
"sidebar.archived": "Archiviati",
"sidebar.loadMore": "Carica di più…",
"language.en": "Inglese",
"language.de": "Tedesco",
"language.fr": "Francese",
"language.it": "Italiano",
"language.es": "Spagnolo",
"welcome.title": "Benvenuto in bDS",
"welcome.subtitle": "Apri un progetto o crea un nuovo post per iniziare.",
"post.untitled": "Senza titolo",
"post.createFailed": "Impossibile creare il post: {error}",
"engine.rebuildStarted": "Ricostruzione del database dai file...",
"engine.rebuildComplete": "Database ricostruito: {posts} post, {media} media, {templates} modelli, {scripts} script",
"engine.rebuildFailed": "Ricostruzione del database non riuscita: {error}",
"engine.reindexStarted": "Reindicizzazione del testo di ricerca...",
"engine.reindexComplete": "Testo di ricerca reindicizzato: {posts} post, {media} media",
"engine.reindexFailed": "Reindicizzazione del testo di ricerca non riuscita: {error}",
"engine.calendarStarted": "Rigenerazione del calendario...",
"engine.calendarComplete": "Calendario rigenerato",
"engine.calendarFailed": "Rigenerazione del calendario non riuscita: {error}",
"engine.calendarNoProject": "Nessun progetto attivo",
"engine.validateTranslationsStarted": "Validazione delle traduzioni...",
"engine.validateMediaStarted": "Validazione dei media...",
"engine.validateTranslationsComplete": "Validazione traduzioni: {dbIssues} problemi nel database, {fsIssues} problemi nel filesystem",
"engine.validateTranslationsFailed": "Validazione delle traduzioni non riuscita: {error}",
"engine.fillMissingTranslationsOffline": "Impossibile completare le traduzioni: l'IA non è disponibile in modalità aereo",
"engine.fillMissingTranslationsNoAi": "Impossibile completare le traduzioni: l'IA non è ancora disponibile",
"engine.uploadStarted": "Caricamento del sito...",
"engine.uploadMissingCredentials": "Credenziali di pubblicazione incomplete. Configurale nelle impostazioni del progetto.",
"engine.uploadOffline": "Impossibile caricare: la modalità aereo è attiva",
"engine.generateSiteStarted": "Generazione del sito...",
"engine.generateSiteNoProject": "Nessun progetto attivo",
"engine.previewDataDirUnavailable": "Directory dati del progetto non disponibile",
"engine.previewPortInUse": "La porta del server di anteprima è già in uso",
"dialog.selectFolder": "Seleziona cartella",
"dialog.importMedia": "Importa media",
"dialog.imageFilter": "Immagini",
"settings.nav.project": "Progetto",
"settings.nav.editor": "Editor",
"settings.nav.content": "Contenuto",
"settings.nav.ai": "IA",
"settings.nav.technology": "Tecnologia",
"settings.nav.publishing": "Pubblicazione",
"settings.nav.data": "Dati",
"settings.nav.mcp": "MCP",
"settings.nav.style": "Stile",
"tags.nav.cloud": "Nuvola di tag",
"tags.nav.manage": "Gestisci tag",
"tags.nav.merge": "Unisci tag",
"tags.nav.discover": "Scopri tag",
"sidebar.chatYesterday": "Ieri",
"modal.confirmDelete.title": "Conferma eliminazione",
"modal.confirmDelete.warning": "Questa azione non può essere annullata.",
"modal.confirmDelete.cancel": "Annulla",
"modal.confirmDelete.delete": "Elimina",
"modal.confirm.title": "Conferma",
"modal.confirm.cancel": "Annulla",
"modal.confirm.confirm": "Conferma",
"modal.postInsertLink.title": "Inserisci link",
"modal.postInsertLink.description": "Seleziona un post a cui collegarti.",
"modal.postInsertLink.cancel": "Annulla",
"modal.postInsertLink.tabInternal": "Interno",
"modal.postInsertLink.tabExternal": "Esterno",
"modal.postInsertLink.searchPlaceholder": "Cerca post...",
"modal.postInsertLink.emptyState": "Digita per cercare post o usa post correlati",
"modal.postInsertLink.createPost": "Crea post",
"modal.postInsertLink.insert": "Inserisci",
"modal.postInsertLink.externalUrlPlaceholder": "https://example.com",
"modal.postInsertLink.externalTextPlaceholder": "Testo visualizzato (opzionale)",
"modal.postInsertLink.urlRequired": "È richiesto un URL.",
"modal.postInsertLink.titleRequired": "Inserisci un titolo per creare un post collegato.",
"modal.postInsertLink.createFailed": "Impossibile creare il post collegato.",
"modal.postInsertLink.loadFailed": "Impossibile caricare il post selezionato.",
"modal.insertMedia.title": "Inserisci media",
"modal.insertMedia.description": "Seleziona un elemento media da inserire.",
"modal.insertMedia.cancel": "Annulla",
"modal.insertMedia.searchPlaceholder": "Cerca media...",
"modal.insertMedia.loadFailed": "Impossibile caricare l'elemento media selezionato.",
"modal.postGallery.title": "Galleria media",
"modal.postGallery.description": "Clicca un'immagine per vederla a grandezza piena.",
"modal.postGallery.close": "Chiudi",
"modal.postGallery.backToGrid": "Torna alla griglia",
"modal.postGallery.unavailable": "Anteprima non disponibile",
"modal.aiSuggestions.title": "Suggerimenti IA",
"modal.aiSuggestions.applySelected": "Applica selezione",
"modal.languagePicker.title": "Traduci in",
"sidebar.filter.search": "Cerca...",
"sidebar.filter.toggle": "Filtri",
"sidebar.filter.clearAll": "Cancella tutti i filtri",
"sidebar.filter.status": "Stato",
"sidebar.filter.language": "Lingua",
"sidebar.filter.dateRange": "Intervallo date",
"sidebar.filter.from": "Da (AAAA-MM-GG)",
"sidebar.filter.to": "A (AAAA-MM-GG)",
"editor.insertLink": "Inserisci link",
"editor.insertMedia": "Inserisci media",
"editor.gallery": "Galleria",
"sidebar.filter.tags": "Tag",
"sidebar.filter.categories": "Categorie",
"sidebar.filter.calendar": "Archivio",
"sidebar.filter.noResults": "Nessun risultato",
"editor.title": "Titolo",
"editor.titlePlaceholder": "Inserisci titolo...",
"editor.slug": "Slug",
"editor.slugPlaceholder": "inserisci-slug",
"editor.content": "Contenuto",
"editor.contentPlaceholder": "Scrivi il tuo contenuto...",
"editor.excerpt": "Estratto",
"editor.excerptPlaceholder": "Breve riassunto...",
"editor.author": "Autore",
"editor.language": "Lingua",
"editor.aiAnalyze": "Analizza con IA",
"editor.detectLanguage": "Rileva lingua",
"editor.quickActions": "Azioni rapide",
"editor.modeMarkdown": "Markdown",
"editor.modePreview": "Anteprima",
"editor.suggestTaxonomy": "Suggerisci tassonomia",
"editor.translate": "Traduci",
"editor.templateSlug": "Modello",
"editor.doNotTranslate": "Non tradurre",
"editor.publish": "Pubblica",
"editor.discard": "Scarta",
"editor.duplicate": "Duplica",
"editor.validate": "Valida",
"editor.run": "Esegui",
"editor.checkSyntax": "Controlla sintassi",
"editor.kind": "Tipo",
"editor.enabled": "Abilitato",
"editor.entrypoint": "Punto di ingresso",
"editor.alt": "Testo alternativo",
"editor.altPlaceholder": "Descrivi l'immagine...",
"editor.caption": "Didascalia",
"editor.metadata": "Metadati",
"editor.tags": "Tag",
"editor.tagsPlaceholder": "Aggiungi tag...",
"editor.categories": "Categorie",
"editor.categoriesPlaceholder": "Aggiungi categoria...",
"editor.outlinks": "Link in uscita",
"editor.backlinks": "Link in entrata",
"editor.linkedMedia": "Media collegati",
"editor.linkedMediaEmpty": "Nessun media collegato.",
"editor.linkExistingMedia": "Collega esistente",
"editor.linkToPost": "Collega a articolo",
"editor.linkedPosts": "Articoli collegati",
"editor.linkedPostsEmpty": "Non collegato ad alcun articolo.",
"editor.postPickerSearch": "Cerca articoli",
"editor.postPickerSearchPlaceholder": "Cerca articoli...",
"editor.unlinkMedia": "Scollega",
"editor.linkedMediaKindImage": "Immagine",
"editor.linkedMediaKindFile": "File",
"editor.untitled": "Senza titolo",
"editor.createdAt": "Creato",
"editor.updatedAt": "Aggiornato",
"editor.publishedAt": "Pubblicato",
"tags.noTags": "Nessun tag",
"tags.cloudSection": "Nuvola",
"tags.cloudHelp": "Seleziona uno o più tag per modificarli, eliminarli o unirli.",
"tags.selectedCount": "{count} selezionati",
"tags.clearSelection": "Cancella selezione",
"tags.createSection": "Crea tag",
"tags.createPlaceholder": "nuovo-tag",
"tags.createButton": "Crea",
"tags.editTag": "Modifica tag",
"tags.manageSection": "Gestisci",
"tags.name": "Nome",
"tags.color": "Colore",
"tags.colorPresets": "Colori predefiniti",
"tags.postTemplate": "Modello articolo",
"tags.noTemplate": "Nessuno",
"tags.merge": "Unisci",
"tags.mergeTarget": "Tag destinazione",
"tags.mergeSection": "Unisci",
"tags.mergeHelp": "Seleziona almeno due tag dalla nuvola o dall'elenco per unirli.",
"tags.mergePreview": "Tag da eliminare: {tags}",
"tags.mergeConfirmTitle": "Unisci tag",
"tags.mergeConfirmMessage": "Unire {count} tag in {target}? Questa azione non può essere annullata.",
"tags.deleteUsage": "Questo tag è usato in {count} post.",
"tags.discoverSection": "Scopri",
"tags.discoverDescription": "Scopri i tag dai post correnti e riscrivi tags.json per riflettere il database.",
"tags.discoverButton": "Scopri",
"tags.selectTag": "Seleziona un tag da modificare",
"template.forceDeleteTitle": "Forza eliminazione template",
"template.forceDeleteMessage": "Questo template è usato da {posts} post e {tags} tag. Forzare l'eliminazione?",
"common.add": "Aggiungi",
"common.remove": "Rimuovi",
"common.clear": "Cancella",
"common.noResults": "Nessun risultato",
"settings.projectName": "Nome progetto",
"settings.projectDescription": "Descrizione",
"settings.dataPath": "Cartella dati",
"settings.browse": "Sfoglia...",
"settings.reset": "Ripristina",
"settings.publicUrl": "URL pubblica",
"settings.mainLanguage": "Lingua principale",
"settings.mainLanguageRequired": "obbligatoria",
"settings.blogLanguages": "Lingue del blog",
"settings.defaultAuthor": "Autore predefinito",
"settings.maxPostsPerPage": "Articoli per pagina",
"settings.blogmarkCategory": "Categoria Blogmark",
"settings.defaultMode": "Modalità editor predefinita",
"settings.diffViewStyle": "Stile diff",
"settings.categoryTitle": "Titolo per {category}",
"settings.categoryPostTemplate": "Modello articolo",
"settings.categoryListTemplate": "Modello elenco",
"settings.categoryRenderInLists": "Mostra negli elenchi",
"settings.categoryShowTitles": "Mostra titoli",
"settings.addCategory": "Aggiungi categoria",
"settings.resetCategories": "Ripristina categorie predefinite",
"settings.wrapLongLines": "A capo automatico",
"settings.hideUnchangedRegions": "Nascondi regioni invariate",
"settings.offlineMode": "Modalità aereo",
"settings.onlineEndpointSection": "Endpoint online",
"settings.onlineEndpointUrl": "URL endpoint online",
"settings.onlineEndpointModel": "Modello endpoint online",
"settings.onlineApiKey": "Chiave API online",
"settings.airplaneEndpointSection": "Endpoint modalità aereo",
"settings.airplaneEndpointUrl": "URL endpoint modalità aereo",
"settings.airplaneEndpointModel": "Modello endpoint modalità aereo",
"settings.refreshModels": "Aggiorna modelli",
"settings.defaultModel": "Modello predefinito",
"settings.titleModel": "Modello titoli",
"settings.imageAnalysisModel": "Modello analisi immagini",
"settings.keychainConfigured": "Salvato nel portachiavi",
"settings.systemPrompt": "Prompt di sistema",
"settings.resetToDefault": "Ripristina predefiniti",
"settings.luaRuntimeOnly": "Lua è l'unico runtime di scripting nell'app Rust.",
"settings.semanticSimilarityEnabled": "Similarità semantica",
"settings.sshHost": "Host SSH",
"settings.sshUsername": "Nome utente SSH",
"settings.sshRemotePath": "Percorso remoto",
"settings.clear": "Cancella",
"settings.rebuildPosts": "Ricostruisci articoli",
"settings.rebuildMedia": "Ricostruisci media",
"settings.rebuildScripts": "Ricostruisci script",
"settings.rebuildTemplates": "Ricostruisci modelli",
"settings.rebuildLinks": "Ricostruisci link",
"settings.regenerateThumbnails": "Rigenera miniature",
"settings.openDataFolder": "Apri cartella dati",
"settings.contentPlaceholder": "Le impostazioni del contenuto appariranno qui",
"settings.technologyPlaceholder": "Le impostazioni tecnologiche appariranno qui",
"settings.mcpPlaceholder": "Le impostazioni del server MCP appariranno qui",
"dashboard.overview": "Panoramica",
"dashboard.posts": "Articoli",
"dashboard.media": "Media",
"dashboard.tags": "Tag",
"dashboard.categories": "Categorie",
"dashboard.images": "Immagini",
"dashboard.drafts": "Bozze",
"dashboard.published": "Pubblicati",
"dashboard.archived": "Archiviati",
"dashboard.statCards": "Riepilogo",
"dashboard.timeline": "Cronologia",
"dashboard.noTimelineData": "Nessun dato cronologico disponibile",
"dashboard.tagCloud": "Nuvola di tag",
"dashboard.noTags": "Nessun tag per ora",
"dashboard.categoryCloud": "Nuvola di categorie",
"dashboard.recentPosts": "Post recenti",
"dashboard.noRecentPosts": "Nessun post recente",
"dashboard.and": "e",
"dashboard.pin": "Fissa",
"common.tabNotImplemented": "Questa sezione verrà implementata in una fase successiva.",
"editor.noPreviewAvailable": "Nessuna anteprima disponibile"
}