From 9e1db36df059f0f55ca9ab10eaac53254e8a35e3 Mon Sep 17 00:00:00 2001 From: neon <18559658+neonsolstice@users.noreply.github.com> Date: Sun, 1 Nov 2026 22:18:24 -0700 Subject: [PATCH] i18n(client): sync translations from Crowdin (#1881) Keep sparse translated catalogs synchronized with reviewed Crowdin content. Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com> --- client/src/locales/da.json | 26 +- client/src/locales/de.json | 11 + client/src/locales/es.json | 1173 +++++++++++++++++++++- client/src/locales/fr.json | 163 ++- client/src/locales/hu.json | 1112 +++++++++++++++++++- client/src/locales/it.json | 1247 +++++++++++++++++++---- client/src/locales/pl.json | 5 + client/src/locales/pt.json | 1951 +++++++++++++++++++++++++++++++++++- client/src/locales/ru.json | 891 ++++++++-------- client/src/locales/uk.json | 2 +- 10 files changed, 5848 insertions(+), 733 deletions(-) diff --git a/client/src/locales/da.json b/client/src/locales/da.json index d1adc63cb..e33309a82 100644 --- a/client/src/locales/da.json +++ b/client/src/locales/da.json @@ -14,7 +14,17 @@ "previous": "Forrige", "retry": "Forsøg igen", "yes": "Ja", - "no": "Nej" + "no": "Nej", + "show": "Vis", + "hide": "Skjul", + "undo": "Fortryd", + "pagination": { + "label": "Paginering", + "pageOf": "Side {page} af {totalPages}", + "previousPage": "Forrige side", + "nextPage": "Næste side", + "goToPage": "Gå til side {page}" + } }, "settings": { "privacySharing": { @@ -97,10 +107,24 @@ }, "theme": { "title": "Tema", + "style": { + "label": "Udseende", + "hint": "Det overordnede udseende af appen. Tilstand, accent, hjørner og baggrund beholder deres indstillinger.", + "bookorbit": { + "description": "Tonede flader, glaspaneler og overskrifter med seriffer." + }, + "nostalgia": { + "label": "Nostalgisk", + "description": "Neutrale flader, systemskrift, flade paneler og en glød i toppen." + } + }, "colorScheme": { "label": "Farve skema", "hint": "Lys eller mørk grænseflade" }, + "surfacePalette": { + "label": "Overflade" + }, "accents": { "grey": "Grå", "scarlet": "Scarlet", diff --git a/client/src/locales/de.json b/client/src/locales/de.json index f834c71d3..e03502107 100644 --- a/client/src/locales/de.json +++ b/client/src/locales/de.json @@ -1954,6 +1954,9 @@ } }, "providers": { + "tabs": { + "attention": "Benötigt Aufmerksamkeit" + }, "availableSources": "Verfügbare Quellen", "saveChanges": "Änderungen speichern", "discard": "Verwerfen", @@ -2025,6 +2028,14 @@ "aladin": "Aladin erfordert einen TTB-Schlüssel, bevor es aktiviert werden kann" } }, + "providerDirectory": { + "title": "Bereit für Installation", + "updated": "Update {time}", + "loadFailed": "Die Liste der vorgefertigten Anbieter konnte nicht geladen werden. Sie können aber einen Anbieter mit seiner Adresse einfügen.", + "copy": "Compose kopieren", + "copyLabel": "Kopiere den Compose-Dienst für {name}", + "copied": "{name} kopiert. Fügen Sie es unter services: in Ihre Compose-Datei ein, dann führen Sie docker compose up -d aus." + }, "fieldRules": { "clearAllProviders": "Alle Anbieter entfernen", "clearAll": "Alle entfernen", diff --git a/client/src/locales/es.json b/client/src/locales/es.json index 3e5711908..23f14d1fa 100644 --- a/client/src/locales/es.json +++ b/client/src/locales/es.json @@ -284,6 +284,8 @@ "saveError": "Error al guardar el proveedor de búsqueda de portadas por defecto" }, "placeholderStyle": { + "title": "Estilo de marcador de posición", + "hint": "Los libros sin portada se dibujan con este estilo.", "options": { "bauhaus": "Bauhaus", "constructivist": "Constructivista", @@ -1588,14 +1590,129 @@ "noFontsHint": "Las fuentes que añadas aquí aparecen en el lector de cada usuario.", "addFonts": "Agregar fuentes", "filterLabel": "Filtrar familias", + "filterPlaceholder": "Filtrar familias", "filterClear": "Borrar filtro", "noMatches": "Ninguna familia coincide con “{query}”", "previewLabel": "Previsualizar etiqueta", + "previewPlaceholder": "Escriba para previsualizarlo en cada familia", "previewSize": "Tamaño de vista previa", + "previewSizeOption": "{size} px", + "familiesUnit": "{count, plural, one {familia} other {familias}}", + "filesOfMax": "{count} de {max} archivos", + "onDisk": "{size} en disco", + "columns": { + "family": "Familia", + "specimen": "Muestra", + "styles": "Estilos", + "readers": "Lectores" + }, + "fileSummary": "{count, plural, one {# archivo} other {# archivos}} · {size}", + "newBadge": "Nuevo", + "styles": { + "single": "Solo {style}", + "many": "{count} estilos", + "manyNoItalics": "{count} estilos, sin cursivas" + }, + "facts": { + "books": "{count, plural, one {En # libro} other {En # libros}}", + "booksDetail": "{books, plural, one {Aplicada en # libro} other {Aplicada en # libros}} por {readers, plural, one {# lector} other {# lectores}}", + "defaults": "{count, plural, one {Predeterminada para # lector} other {Predeterminada para # lectores}}", + "hidden": "{count, plural, one {Oculta por el # lector} other {Oculta por los # lectores}}" + }, + "moreActions": "Más de {name}", "menu": { + "rename": "Cambiar nombre de familia", + "addFiles": "Añadir archivos", "remove": "Eliminar familia..." }, - "footerHint": "Cada lector las ve en la lista de fuentes del lector y puede ocultar cualquiera de ellas bajo Lector › Fuentes." + "footerHint": "Cada lector las ve en la lista de fuentes del lector y puede ocultar cualquiera de ellas bajo Lector › Fuentes.", + "empty": { + "dropHint": "o suelte archivos en cualquier parte de esta página", + "tip": "Una familia tipográfica se presenta normalmente en cuatro archivos: normal, cursiva, negrita y negrita cursiva. Un único archivo variable puede sustituir a todos los grosores." + }, + "drop": { + "title": "{count, plural, one {Soltar para añadir # archivo para cada lector} other {Soltar para añadir # archivos para cada lector}}" + }, + "upload": { + "ariaLabel": "Progreso de subida", + "title": "{count, plural, one {Añadir # archivo} other {Añadir # archivos}}", + "progress": "{done} de {total} completadas", + "addedCount": "{count} añadidas", + "duplicateCount": "{count} ya existe", + "refusedCount": "{count} no añadido", + "dismiss": "Descartar", + "newFamily": "familia nueva", + "states": { + "queued": "Esperando", + "uploading": "Subiendo", + "added": "Añadida", + "duplicate": "Ya está en el servidor", + "refused": "No añadida", + "failed": "Fallida" + }, + "reasons": { + "tooLarge": "Mayor que {maxMb} MB.", + "unsupportedType": "No es un archivo de fuente. Utilice TTF, OTF, WOFF o WOFF2.", + "invalidFile": "El archivo está dañado o no es realmente una fuente.", + "faceTaken": "{familyName} ya tiene un archivo con este grosor y estilo.", + "limitReached": "El servidor ya contiene archivos de fuente {limit}.", + "failed": "Subida fallida. Vuelve a intentarlo." + } + }, + "sheet": { + "description": "Previsualizar, renombrar y administrar los archivos de {name}", + "variable": "Variable", + "preview": "Vista previa", + "pageColour": "Color de página", + "papers": { + "app": "Superficie de la aplicación", + "white": "Página en blanco", + "sepia": "Página sepia", + "night": "Página nocturna" + }, + "previewHeading": "El jardín de las flores vivas", + "previewParagraph1": "Alice la miró con gran sorpresa. \"¡Por qué, creo que hemos estado bajo este árbol todo el tiempo! ¡Todo está como está!\"", + "previewParagraph2": "“Ahora, aquí, usted ve, se necesita todo lo que se puede hacer, para mantenerlo en el mismo lugar. Si quieres llegar a otro lugar, ¡debes correr al menos el doble de rápido que eso!”", + "styles": "Estilos", + "stylesHint": "Qué ofrece la fila de estilo del lector", + "singleStyleNote": "Un solo estilo, por lo que los lectores no ven la fila de Estilo. El navegador simula el texto en negrita y cursiva de los libros a partir de {style}.", + "inReader": "En el lector", + "inReaderHint": "La lista de fuentes que recibe cada lector en Lector › Ajustes, con {name} seleccionada.", + "pickerLabel": "Vista previa de la lista de fuentes del lector", + "files": "Archivos", + "filesUsed": "{count} de {max} usados en este servidor", + "fileDetail": "{summary} · Añadido el {date}", + "upright": "Normal", + "italic": "Cursiva", + "fileActions": "Más de {name}", + "changeStyle": "Cambiar grosor y estilo", + "removeFile": "Eliminar archivo", + "removeFileQuestion": "¿Eliminar este archivo para todos los lectores?", + "weight": "Grosor", + "style": "Estilo", + "name": "Nombre de familia", + "nameHint": "Los lectores eligen las fuentes con este nombre.", + "nameHiddenWarning": "{count, plural, one {# lector ocultó {name}} other {# lectores ocultaron {name}}}; un nombre nuevo se lo vuelve a mostrar.", + "nameBooksWarning": "Un nombre nuevo devuelve {count, plural, one {el # libro que lo usa} other {los # libros que lo usan}} a su propia fuente.", + "readers": "Lectores", + "stats": { + "books": "{count, plural, one {libro lo usa} other {libros lo usan}}", + "defaults": "{count, plural, one {predeterminada del lector} other {predeterminada de los lectores}}", + "hidden": "{count, plural, one {lector lo ocultó} other {lectores lo ocultaron}}" + }, + "readersPrivacy": "Solo recuentos. Qué libros y qué lectores permanecen privados para cada uno.", + "removeLabel": "Quitar familia", + "removeQuestion": "¿Eliminar {name} para todos los lectores?", + "removeConsequenceBooks": "{books, plural, one {Está aplicada en # libro} other {Está aplicada en # libros}} por {readers, plural, one {# lector} other {# lectores}}; esos libros vuelven a usar su propia fuente.", + "removeConsequenceFiles": "{count, plural, one {Su archivo ha sido eliminado del servidor.} other {Todos los # archivos han sido eliminados del servidor.}}", + "loadFailedNote": "Este navegador no ha podido cargar el archivo de fuente, por lo que en las vistas previas se muestra una fuente alternativa. Es muy probable que los navegadores de los lectores tampoco la acepten; prueba con otra copia de la fuente." + }, + "toasts": { + "removed": "{name} eliminada", + "removePartial": "{failed, plural, one {# archivo} other {# archivos}} de {name} no pudieron ser eliminados", + "renameTaken": "{name} ya tiene un archivo con este grosor y estilo" + }, + "loadFailed": "Este navegador no la puede cargar" } }, "common": { @@ -1748,6 +1865,92 @@ "inheritFromGlobal": "Heredar de global", "usingGlobalDefaults": "Usando valores predeterminados globales.", "saveOverride": "Guardar anulación" + }, + "scope": { + "ownSettings": "{count, plural, one {# ajuste propio} other {# ajustes propios}}", + "globalIntro": "Cada biblioteca sigue esta regla a menos que tenga la suya.", + "globalCoverage": "{libraryCount, plural, one {Se aplica a # biblioteca} other {Se aplica a # bibliotecas}}, {bookCount, plural, one {# libro} other {# libros}}.", + "ownLibraries": "{names} {count, plural, one {tiene su propia regla.} other {tienen sus propias reglas.}}", + "libraryFollows": "{library} sigue la regla global. Cambia cualquier cosa aquí para darle la suya propia.", + "libraryOwn": "{library} tiene su propia regla para {count, plural, one {# ajuste} other {# ajustes}}. Todo lo demás sigue la regla global.", + "lastRun": "Última ejecución {when}, en cola {count, plural, one {# libro} other {# libros}}.", + "neverRun": "Aún no ejecutado.", + "useGlobalRule": "Usar la regla global", + "loadFailed": "No se ha podido cargar la configuración de la búsqueda automática. Recarga la página para intentarlo de nuevo.", + "saved": "{scope} guardado", + "saveFailed": "No se pudo guardar {scope}. Inténtelo de nuevo." + }, + "run": { + "all": "Ejecutar para cada biblioteca", + "library": "Ejecutar para {library}", + "saveFirst": "Las ejecuciones usan la regla guardada. Guardar primero.", + "failed": "No se pudo iniciar la ejecución. Inténtalo de nuevo." + }, + "onImport": { + "label": "Obtener metadatos para nuevos libros", + "hint": "Escanea y sube los libros en cola de inmediato. Una búsqueda en la importación sólo llena campos vacíos; los campos bloqueados nunca se cambian.", + "follow": "Seguir global", + "on": "Activado", + "off": "Desactivado" + }, + "columns": { + "books": "{count, plural, one {libro} other {libros}}", + "ofTotal": "de {total}", + "off": "Desactivado", + "own": "Propio", + "global": "Global", + "useGlobal": "Usar globalmente", + "globalValue": "Regla global: {value}", + "on": "Activado", + "scoreBelowValue": "Puntuación inferior a {threshold}", + "neverFetchedSplit": "{count, plural, one {# nunca obtenido} other {# nunca obtenidos}}", + "fetchedBeforeSplit": "{count, plural, one {# obtenido antes} other {# obtenidos antes}}", + "lowScoreLabel": "Baja puntuación de confianza", + "lowScoreHint": "Obtener libros cuya puntuación de confianza esté debajo de la línea.", + "outOf": "/ 100", + "lowerThreshold": "Bajar el umbral", + "raiseThreshold": "Subir el umbral", + "missingHint": "Obtener si algún campo seleccionado está vacío. Cada campo muestra cuántos libros faltan.", + "audioGroup": "Libros con audio", + "audioHint": "{count, plural, =0 {Ninguno tiene audio.} one {Solo el # libro con audio puede no tenerlos.} other {Solo los # con audio pueden no tenerlos.}}", + "fieldCount": "{field}: {count, plural, one {# libro no lo tiene} other {# libros no lo tienen}}" + }, + "histogram": { + "label": "Umbral de puntuación de confianza", + "valueText": "Puntuación inferior a {threshold}" + }, + "preview": { + "title": "Qué obtendría una ejecución", + "matching": "{matching, plural, one {# de {total} los libros coinciden} other {# de {total} los libros coinciden}}", + "showing": "{count, plural, one {mostrando el menos completo} other {mostrando el # menos completo}}", + "empty": "Ningún libro coincide con esta regla, por lo que una ejecución no pondría en cola nada.", + "unknownAuthor": "Autor desconocido", + "score": "Puntuación {score}", + "more": "+{count}", + "missing": { + "title": "Sin título", + "subtitle": "Sin subtítulo", + "description": "Sin descripción", + "cover": "Sin portada", + "audioCover": "Sin portada de audiolibro", + "authors": "Sin autores", + "publisher": "Sin editorial", + "isbn": "Sin ISBN", + "publishedYear": "Sin año de publicación", + "language": "Sin idioma", + "pageCount": "Sin número de páginas", + "communityRating": "Sin valoración de la comunidad", + "seriesName": "Sin nombre de serie", + "seriesIndex": "Sin índice de serie", + "genres": "Sin géneros", + "narrators": "Sin narradores", + "duration": "Sin duración", + "abridged": "Versión abreviada sin definir" + } + }, + "queue": { + "progress": "{done} de {total}", + "failed": "{count, plural, one {# libro no se pudo obtener} other {# libros no se pudieron obtener}}" } }, "providers": { @@ -2196,8 +2399,143 @@ "clear": "Borrar", "noLibraries": "Aún no hay bibliotecas disponibles.", "allLibraries": "Todas las bibliotecas", + "pageFacts": "{fields, plural, one {# campo} other {# campos}} · {values, plural, one {# valor almacenado} other {# valores almacenados}}", + "newFieldAction": "Nuevo campo", + "views": { + "label": "Muestra campos activos o archivados", + "active": "Activo", + "archived": "Archivado" + }, + "columns": { + "order": "Orden", + "field": "Campo", + "type": "Tipo", + "libraries": "Bibliotecas", + "filled": "Rellenado", + "valuesKept": "Valores guardados", + "archived": "Archivado", + "actions": "Acciones" + }, + "orderHint": "Arrastre para establecer los campos de orden que aparecen en Editar Metadatos, en columnas de tabla y en exportaciones.", + "archivedHint": "Los campos archivados están ocultos en libros, filtros y exportaciones. Sus valores permanecen almacenados hasta que el campo sea eliminado.", + "coverage": "{filled} de {total}", + "coverageAria": "{filled} de {total} libros tienen un valor", + "onNoLibrary": "Sin bibliotecas", + "onNoLibraryHint": "En ninguna biblioteca, por lo que este campo no aparece en ninguna parte", + "moreLibraries": "+{count}", + "noValues": "Ninguno", + "rowActions": { + "edit": "Editar", + "editField": "Editar campo", + "moveUp": "Mover hacia arriba", + "moveDown": "Mover hacia abajo", + "archive": "Archivar", + "restore": "Restaurar", + "deletePermanently": "Eliminar permanentemente...", + "more": "Más acciones para {label}" + }, + "toasts": { + "loadFailed": "No se pudo cargar los campos personalizados", + "created": "{label} creado", + "createFailed": "No se pudo crear {label}", + "saved": "{label} guardado", + "saveFailed": "No se pudo guardar {label}", + "archived": "{label} archivado", + "archiveFailed": "No se pudo archivar {label}", + "restored": "{label} restaurado", + "restoreFailed": "No se pudo restaurar {label}", + "deleted": "{label} eliminado", + "deleteFailed": "No se pudo eliminar {label}", + "reorderFailed": "No se pudo guardar el nuevo orden." + }, + "empty": { + "body": "Registra aquella información para la que BookOrbit no dispone de ningún campo, como la ubicación de un libro en tu estantería o quién te lo ha pedido prestado. Los campos aparecen en «Editar Metadatos», en las columnas de las tablas y en los filtros.", + "examples": "Iniciar desde un ejemplo", + "shelfNumber": "Número de estante", + "acquiredOn": "Adquirido en", + "signedCopy": "Copia firmada", + "loanedTo": "Prestado a" + }, + "types": { + "text": { + "label": "Texto", + "hint": "Cualquier palabra", + "example": "Primera edición, ex libris firmado" + }, + "url": { + "label": "Enlace", + "hint": "Abrir en una nueva pestaña", + "example": "https://ejemplo.com/libro" + }, + "number": { + "label": "Número", + "hint": "Ordenar por valor", + "example": "42" + }, + "date": { + "label": "Fecha", + "hint": "Un día calendario", + "example": "2024-03-09" + }, + "boolean": { + "label": "Sí / No", + "hint": "Casilla de verificación", + "example": "Sí" + } + }, "sheet": { - "books": "{count, plural, one {# libro} other {# libros}}" + "newTitle": "Nuevo campo", + "editDescription": "Editar la etiqueta de un campo personalizado y bibliotecas, y ver dónde aparece.", + "newDescription": "Nombra un nuevo campo personalizado, elija su tipo y elija sus bibliotecas.", + "archivedDescription": "Un campo personalizado archivado. Restaurarlo o borrarlo con sus valores.", + "statusFilled": "{filled} de {total, plural, one {# libro} other {# libros}} rellenados", + "statusNone": "No esta en la biblioteca", + "statusHidden": "{count} ocultas", + "statusCreated": "creado el {date}", + "labelHint": "Mostrar en Editar Metadatos, en columnas de tabla y en filtros.", + "renameHint": "Renombrar mantiene todos los valores almacenados y la clave de archivo {key}.", + "keyHint": "Se guarda en archivos y exportaciones como {key}, que no cambia aunque cambies el nombre del campo.", + "typeLocked": "Establecer al crear", + "typeLockedHint": "El tipo no se puede cambiar después, así que los valores guardados siempre coinciden con él.", + "libraries": "Bibliotecas", + "books": "{count, plural, one {# libro} other {# libros}}", + "filledOfBooks": "{filled} de {total, plural, one {# libro} other {# libros}}", + "hiddenCount": "{count} ocultas", + "leavingNote": "{count, plural, one {# valor en {libraries} sigue guardado pero oculto mientras el campo esté desactivado allí.} other {# valores en {libraries} siguen guardados pero ocultos mientras el campo esté desactivado allí.}} Al volver a activarlo, reaparecen.", + "noLibraryWarning": "Sin bibliotecas, este campo no aparece en ningún sitio: ni en Editar Metadatos, ni en los filtros ni en las exportaciones.", + "appears": { + "title": "Donde aparece", + "editMetadata": "Editar metadatos", + "details": "Pestaña Detalles", + "filters": "Filtros", + "table": "Tabla y orden", + "tableBody": "Disponible como columna de la tabla y como opción de ordenación", + "files": "Archivos", + "filesWritten": "Se escribe en los archivos EPUB y FB2 de {libraries}, donde está activada la escritura de metadatos en archivos.", + "filesNotWritten": "No se escribe en los archivos: ninguna de estas bibliotecas escribe metadatos en archivos EPUB o FB2.", + "exports": "Exportaciones" + }, + "archiveAction": "Archivar campo", + "archiveConfirm": "¿Archivar {label}?", + "archiveConsequence": "{count, plural, =0 {Permite acceder a Editar metadatos, filtros y exportaciones. Se puede recuperar desde Archivados en cualquier momento.} one {Permite acceder a Editar metadatos, filtros y exportaciones. El valor # permanece almacenado hasta que se elimine el campo.} other {Permite acceder a Editar metadatos, filtros y exportaciones. Los valores # permanecen almacenados hasta que se elimine el campo.}}", + "create": "Crear campo", + "onLibraries": "En {count} de {total} bibliotecas", + "onAllLibraries": "En las {total} bibliotecas", + "archivedBadge": "Archivados", + "archivedTitle": "Archivado {when}.", + "archivedBody": "{count, plural, =0 {Este campo está oculto en los libros, los filtros y las exportaciones. No contiene valores.} one {Este campo está oculto en los libros, los filtros y las exportaciones. # valor guardado se conserva y vuelve al restaurarlo.} other {Este campo está oculto en los libros, los filtros y las exportaciones. # valores guardados se conservan y vuelven al restaurarlo.}}", + "facts": { + "type": "Tipo", + "libraries": "Bibliotecas", + "valuesKept": "Valores guardados", + "fileKey": "Clave del archivo", + "created": "Creado", + "archived": "Archivado" + }, + "deleteQuestion": "¿Eliminar {label} definitivamente?", + "deleteConsequence": "{count, plural, =0 {No contiene valores. Esta acción no se puede deshacer.} one {Su # valor guardado se elimina de todos los libros. Los archivos ya escritos conservan su copia. Esta acción no se puede deshacer.} other {Sus # valores guardados se eliminan de todos los libros. Los archivos ya escritos conservan su copia. Esta acción no se puede deshacer.}}", + "deleteConfirmLabel": "Escriba la etiqueta del campo para confirmar", + "deleteConfirmPlaceholder": "Escribe “{label}” para confirmar" } }, "tabs": { @@ -2444,7 +2782,25 @@ "serverFontsHint": "Estas fuentes provienen del administrador de tu servidor. Desactiva una para mantenerla fuera de tu lector.", "serverFontsShown": "{count} de {total} mostrados", "serverFontsAllHidden": "Todas las fuentes del servidor están ocultas. Su lector solo ofrecerá sus propias fuentes integradas y sus propias fuentes.", - "serverFontVisibilityFailed": "Error al actualizar la visibilidad de las fuentes del servidor" + "serverFontVisibilityFailed": "Error al actualizar la visibilidad de las fuentes del servidor", + "library": { + "columns": { + "use": "En uso" + }, + "yourDefault": "Tus valores por defecto", + "hiddenBadge": "Oculto", + "emptyHint": "Añade fuentes arriba, o suelta archivos en cualquier lugar de esta página.", + "dropTitle": "{count, plural, one {Soltar para añadir # archivo a tus fuentes} other {Soltar para añadir # archivos a tus fuentes}}", + "limitReached": "Ya tienes {limit} archivos de fuente.", + "filesUsed": "{count} de tu {max} utilizado", + "nameHint": "Este es el nombre de la lista de fuentes de su lector.", + "inReaderHint": "Tu lista de fuentes en Lector › Ajustes, con {name} seleccionada.", + "showInReader": "Mostrar en mi lector", + "showFamily": "Mostrar {name} en mi lector", + "removeConsequenceBooks": "{count, plural, one {Está asignada a # de tus libros; ese libro vuelve a usar su propia fuente.} other {Está asignada a # de tus libros; vuelven a usar sus propias fuentes.}}", + "removeConsequenceDefault": "Es tu fuente predeterminada; los libros sin ajuste propio vuelven a la fuente predeterminada del libro.", + "removeQuestion": "¿Eliminar {name} de tus fuentes?" + } }, "bookDock": { "title": "Book Dock", @@ -2774,6 +3130,8 @@ "syncHighlightsHint": "Envía los momentos destacados realizados en BookOrbit o KOReader a tu Kobo. Kobo los aspectos destacados se importan a BookOrbit incluso cuando esto está desactivado. Las anotaciones vinculadas sincronizan las ediciones y eliminaciones en ambos sentidos. Requiere entrega KEPUB; el libro en Kobo debe ser el KEPUB descargado de BookOrbit.", "storeSync": "Incluye títulos de la tienda Kobo", "storeSyncHint": "También entrega libros desde tu cuenta de Kobo, incluyendo Kobo Plus y compras, junto a tu biblioteca BookOrbit. Sin esto, solo los libros BookOrbit llegan al dispositivo. Los títulos de la tienda se descargan directamente de Kobo y no se añaden a su biblioteca de BookOrbit.", + "fullSizeCovers": "Portadas de tamaño completo", + "fullSizeCoversHint": "Envía cada portada con la resolución de pantalla de tu Kobo, para que las portadas en modo de suspensión y a pantalla completa se vean nítidas. Desactiva esta opción para enviar portadas más pequeñas que se sincronicen más rápido. Una portada que ya esté en un Kobo solo cambiará cuando cambie la portada del libro.", "convertKepub": "Convertir a KEPUB", "convertKepubHint": "Envíe EPUB elegibles como KEPUB. Esto permanece activado cuando la sincronización de progreso o los aspectos destacados de BookOrbit-to-Kobo están habilitados. En la siguiente sincronización Kobo, los libros afectados se ofrecen nuevamente como descargas de KEPUB; elimine cualquier copia antigua de EPUB si Kobo sigue abriéndola.", "forceHyphenation": "Forzar separación de palabras", @@ -3048,6 +3406,12 @@ "syncEnabled": "KOReader sincronización habilitada", "syncDisabled": "KOReader sincronización deshabilitada", "toggleSyncFailed": "No se pudo alternar la sincronización", + "pluginLibrary": "Biblioteca de plugins", + "hideAudioOnlyBooks": "Ocultar libros disponibles sólo en audiolibro", + "hideAudioOnlyBooksHint": "KOReader no puede reproducir audio, por lo que los libros que solo contienen archivos de audio no aparecen en las listas, la búsqueda ni las descargas del complemento, al igual que una biblioteca que no contenga nada más. Los libros que también tengan una versión en formato electrónico sí que se muestran.", + "audioOnlyBooksHidden": "Libros disponibles únicamente en audiolibro ocultos en el plugin", + "audioOnlyBooksShown": "Libros disponibles únicamente en audiolibro se muestran en el plugin", + "toggleAudioOnlyBooksFailed": "No se ha podido actualizar la configuración de la biblioteca de plugins", "syncUrlCopied": "Sincronizar URL copiado al portapapeles", "syncUrlCopyFailed": "No se pudo copiar la sincronización URL", "statusRefreshed": "Estado de sincronización actualizado", @@ -3856,9 +4220,58 @@ "serverFonts": "Fuentes instaladas para cada lector en este servidor.", "bookDock": "Acciones rápidas que se muestran en las páginas de los libros.", "auditLog": "¿Quién cambió qué, y cuándo.", - "requests": "Fuentes, clientes de descarga y lo que sucede con un libro una vez descargado." + "requests": "Fuentes, clientes de descarga y lo que sucede con un libro una vez descargado.", + "readerTts": "Configuración por defecto de la lectura en voz alta, la velocidad y la narración.", + "adminTts": "Motores de conversión de texto a voz disponibles para todos los lectores de este servidor." }, - "backToApp": "Volver a la biblioteca" + "backToApp": "Volver a la biblioteca", + "pageDescriptions": { + "profile": "Tu nombre, foto, zona horaria y seguimiento de logros, además de tu contraseña y los proveedores de inicio de sesión vinculados a esta cuenta.", + "appearance-theme": "Elige dónde se guardarán tus ajustes de apariencia y, a continuación, configura el estilo, la combinación de colores, el color de contraste, las esquinas, el brillo de la superficie y el patrón de fondo de tu biblioteca.", + "appearance-book-covers": "Cómo se ven las portadas en la aplicación: la imagen provisional para los libros que no tienen portada, cómo se adaptan las portadas a sus espacios, los efectos de lomo y brillo, y el tinte de la portada en las páginas del libro.", + "appearance-icons": "Sube tus propios iconos para utilizarlos junto con el conjunto integrado para bibliotecas, objetivos inteligentes y colecciones.", + "appearance-layout": "Tamaños de las portadas y espaciado de la cuadrícula de la biblioteca, la portada que se muestra para una serie oculta y cómo se distribuye la cuadrícula de autores.", + "appearance-behavior": "Qué ocurre al abrir un libro desde una cuadrícula o una lista, si las series se agrupan en una sola ficha y si las solicitudes de libros aparecen en esta cuenta.", + "appearance-language": "El idioma que utiliza BookOrbit en los menús, las etiquetas y los mensajes, así como los formatos regionales para las fechas y los números.", + "reader-ebook": "Configuración predeterminada del lector de eBooks: si los libros nuevos se abren con tu configuración, el flujo de páginas y las columnas, el tema y la tipografía tales como la fuente, el tamaño y el espaciado.", + "reader-pdf": "Cómo se abren los PDF: página por página o en desplazamiento continuo, qué página inicia la vista a doble página y el ajuste de zoom predeterminado.", + "reader-comics": "Cómo se leen los cómics: modo y sentido de lectura, páginas individuales o dobles, ajuste, manejo de páginas anchas y cómo pasar al siguiente libro de la serie.", + "reader-audio": "La velocidad inicial y el volumen de los nuevos audiolibros y hasta qué punto saltan los botones de retroceso y salta hacia adelante.", + "reader-fonts": "Sube tus propias fuentes para el lector y elige qué fuentes compartidas por el administrador de tu servidor aparecen en él.", + "reader-general": "Dónde se guardan tus preferencias de lectura y los valores predeterminados compartidos por cada modo de lectura.", + "tts": "Su voz y velocidad por defecto cuando BookOrbit lee un libro en voz alta.", + "notifications": "Elige de qué eventos quieres recibir notificaciones, desde escaneos finalizados y recuperaciones de metadatos hasta cambios de nombre de archivos, importaciones y resultados de Book Dock.", + "privacy": "Decide qué parte de tu actividad de lectura pueden ver los administradores, previsualiza tu perfil compartido y comprueba quién lo ha visto.", + "restrictions": "Los límites de contenido establecidos en esta cuenta, como las clasificaciones por edades y el contenido oculto, y lo que se excluye de tus bibliotecas.", + "libraries": "Resumen de cada biblioteca: sus carpetas, su contenido, cómo se escanea y cuándo se ejecutó por última vez. Aquí puedes añadir, editar o volver a escanear bibliotecas.", + "metadata-providers": "Activa o desactiva las fuentes de metadatos, añade claves API o cookies cuando una fuente las necesite y comprueba las credenciales en el servicio en tiempo real.", + "metadata-field-rules": "Elige qué proveedores rellenan cada campo de metadatos y en qué orden, cómo se fusionan los valores y cómo se recopilan los géneros y los identificadores de los proveedores.", + "metadata-custom-fields": "Crea tus propios campos de metadatos, elige su tipo y las bibliotecas que los utilizan, y reordénalos o archívalos.", + "metadata-score": "Decide cuánto cuenta cada campo de metadatos para la puntuación de integración que se muestra en cada libro.", + "metadata-auto-fetch": "Recupera automáticamente los metadatos de los libros al importarlos o cuando falten datos, con opciones de personalización para cada biblioteca.", + "metadata-authors": "Obtén automáticamente las biografías y las fotos de los autores, elige el orden en que se consultan las fuentes y decide qué autores cumplen los requisitos.", + "metadata-search-cache": "Guarda las respuestas de los proveedores para que las búsquedas posteriores sean rápidas y sigan funcionando aunque un proveedor esté fuera de servicio, y controla durante cuánto tiempo y en qué medida se conservan.", + "metadata-genre-blocklist": "Los valores de género que aparecen aquí se eliminan de los resultados del proveedor antes de que se escriban los metadatos, por lo que etiquetas como «Audiolibro» no aparecerán en tus libros.", + "metadata-reminders": "Elige qué campos que faltan aparecen en los recordatorios de los libros. Esto solo afecta a los recordatorios, no a las puntuaciones de los metadatos.", + "file-naming": "Patrones de nombres de carpetas y archivos que utiliza BookOrbit al renombrar los libros en el disco, con una vista previa del resultado y una explicación de lo que ocurre cuando falta un valor.", + "maintenance": "Tareas de mantenimiento del servidor: el límite de tamaño de las subidas, importaciones anteriores, recomendaciones de reconstrucción, actualización retroactiva de logros y comprobación de actualizaciones.", + "kobo": "Conecta los lectores electrónicos Kobo, elige cómo se sincronizan los libros, las estanterías y el progreso de lectura, y consulta la actividad de sincronización reciente de cada dispositivo.", + "koreader": "Sincroniza el progreso, la actividad de lectura y los fragmentos destacados con KOReader, obtén la URL de sincronización y el complemento, y gestiona los dispositivos que se conectan.", + "opds": "Activa el catálogo OPDS y crea cuentas para que las aplicaciones de lectura de terceros puedan explorar y descargar tus libros.", + "email": "Gestiona las direcciones a las que se envían los libros, como las bandejas de entrada de Kindle, marca como predeterminada la que prefieras y agrupa a los destinatarios para enviárselos a varios a la vez.", + "hardcover": "Conecta tu cuenta de Hardcover y elige cuándo se sincronizan el estado de lectura, el progreso y las valoraciones, y cómo aparecen allí los libros sincronizados.", + "readwise": "Conecta tu cuenta de Readwise para enviar tus subrayados allí automáticamente.", + "storygraph": "Conecta tu cuenta de StoryGraph utilizando las cookies de sesión de tu navegador para sincronizar el progreso y el estado de la lectura.", + "users": "Crea y gestiona cuentas, sus funciones, permisos y acceso a la biblioteca, y comprueba qué cuentas requieren atención.", + "account-activity": "Consulta cuándo se utilizó por última vez cada cuenta y cómo se inicia sesión en ella, y accede a información detallada sobre la lectura y las sesiones de cada usuario.", + "magic-links": "Crea enlaces que se puedan compartir y que permitan iniciar sesión sin contraseña, y revócalos cuando ya no sean necesarios.", + "oidc": "Conecta un proveedor de inicio de sesión único como Keycloak, mapea sus atributos y decide cómo se crean las nuevas cuentas.", + "requests": "Dónde busca BookOrbit los libros solicitados, qué clientes de descarga los obtienen y qué ocurre una vez finalizada la descarga.", + "admin-tts": "Los motores de conversión de texto a voz que los lectores pueden utilizar para la lectura en voz alta, las voces que ofrece cada uno de ellos y el orden en que aparecen.", + "book-dock": "La carpeta de entrega de Book Dock, la obtención automática de metadatos para los archivos nuevos y el nivel en el que los archivos se finalizan automáticamente.", + "server-fonts": "Sube las fuentes una sola vez para todos los lectores de este servidor. Cada lector podrá seguir ocultando cualquiera de ellas.", + "audit-log": "Un registro en el que se puede buscar quién modificó qué y cuándo, y que se puede filtrar por evento, persona, elemento afectado y fecha." + } }, "field": { "required": "(requerido)" @@ -3894,8 +4307,200 @@ "inProgress": "En curso ({count})", "locked": "Bloqueado ({count})" }, + "tiersEarnedFact": "{earned} de {total} niveles", + "loading": "Cargando logros", + "filters": { + "label": "Filtrar logros", + "all": "Todos", + "earned": "Ganados", + "inProgress": "En progreso", + "locked": "Bloqueado" + }, + "showcase": { + "label": "Lo más destacado", + "latest": "Último desbloqueo", + "newToday": "{count, plural, one {# nuevo hoy} other {# nuevos hoy}}", + "secretRevealed": "Secreto revelado", + "categoryAndDate": "{category} · {date}", + "alsoNew": "También nuevo", + "openMedal": "Abrir {name}", + "emptyTitle": "Tu primera medalla está esperando", + "emptyBody": "Cuando termines un libro, le pongas una puntuación o marques un fragmento, aparecerá aquí.", + "collection": "Colección", + "shareOfTiers": "{percent} de cada nivel", + "tiersEarned": "{earned} de {total} niveles ganados", + "closest": "Los más cerca de desbloquearse", + "allInProgress": "Todos {count}", + "tierOfSet": "Nivel {tier} de {set}", + "nothingCounting": "Aún nada cuenta para conseguir una medalla." + }, + "shelf": { + "tiers": "{earned} / {total}", + "progressLabel": "{category} de niveles ganados" + }, + "medal": { + "label": "{name}, {rarity}, {status}", + "tier": "Nivel {tier}", + "allTiers": "{count, plural, one {El único nivel} other {Todos los # niveles}}", + "keepReading": "Seguir leyendo", + "notStarted": "No empezado" + }, + "progress": { + "generic": "{current} / {threshold}", + "toGo": "{count, plural, one {Falta #} other {Faltan #}}" + }, "hints": { - "continueReading": "Continuar leyendo" + "howToGetIt": "Cómo conseguirlo", + "readingPace": "{count, plural, one {Has leído # hora en los últimos {days} días.} other {Has leído # horas en los últimos {days} días.}}", + "etaDays": "{count, plural, one {Un # día a este ritmo.} other {Unos # días a este ritmo.}}", + "etaWeeks": "{count, plural, one {Una # semana a este ritmo.} other {Unas # semanas a este ritmo.}}", + "etaMonths": "{count, plural, one {Un # mes a este ritmo.} other {Sobre # meses a este ritmo.}}", + "decadeUnread": "{count, plural, one {# libro de la {decade} está esperándote en tus estanterías.} other {# libros de la {decade} están esperándote en tus estanterías.}}", + "centuryUnread": "{count, plural, one {# libro de {century} está esperando en tus estanterías.} other {# libros del {century} están esperando en tus estanterías.}}", + "stalled": "{title} lleva un {percent} leído y se empezó el {date}.", + "stalledNoProgress": "{title} se empezó el {date}.", + "untitledBook": "Un libro en progreso", + "nearlyFinished": "{count, plural, one {# libro en curso ha superado el {percent}.} other {# libros en curso han superado el {percent}.}}", + "unratedFinished": "{count, plural, one {# libro que has terminado aún no tiene valoración.} other {# libros que has terminado aún no tienen valoración.}} ", + "shortBooks": "{count, plural, one {# libro de menos de {pages} páginas está esperando en tus estanterías.} other {# libros de menos de {pages} páginas están esperando en tus estanterías.}}", + "alreadyStarted": "{count, plural, one {# ya está en progreso.} other {# ya están en progreso.}}", + "longBooks": "{count, plural, one {# libro de menos de {pages} páginas está esperando en tus estanterías.} other {# libros de menos de {pages} páginas están esperando en tus estanterías.}}", + "oldBooks": "{count, plural, one {# libro publicado antes de {year} está esperando en tus estanterías.} other {# libros publicados antes de {year} están esperando en tus estanterías.}}", + "authorUnread": "{author}: {finished, plural, one {# terminado} other {# terminados}}, {count, plural, one {# más en tus estanterías} other {# más en tus estanterías}}", + "languageUnread": "{count, plural, one {# libro en {language} está esperando en tus estanterías.} other {# libros en {language} están esperando en tus estanterías.}}", + "monthsRead": "{count, plural, one {Has leído en # mes de {year} hasta ahora.} other {Has leído en # meses de {year} hasta ahora.}}", + "monthsLeft": "{count, plural, one {{months} restante.} other {{months} restantes.}}", + "noLongBook": "Ningún libro en tus escaparates tiene {pages} páginas o más.", + "nothingBeforeYear": "Nada en tus estanterías se publicó antes de {year}.", + "tooFewDecades": "{count, plural, one {Tus estantes abarcan solo # década hasta ahora.} other {Tus estantes solo abarcan # décadas hasta ahora.}}", + "tooFewCenturies": "{count, plural, one {Tus estantessolo duran # siglo hasta ahora.} other {Tus estantes solo duran # siglos hasta ahora.}}", + "missedMonth": "No has leído en {month}, así que {year} está fuera de alcance. El recuento empieza de nuevo en enero.", + "continueReading": "Continuar leyendo", + "rateFinished": "Califica un libro terminado", + "viewAuthor": "Ver autor", + "openBook": "Abrir {title}", + "openUntitledBook": "Abrir libro" + }, + "sets": { + "booksFinished": "Libros terminados", + "pagesRead": "Páginas leidas", + "hoursRead": "Horas leídas", + "longestBook": "Libro más largo terminado", + "librarySize": "Tamaño de la biblioteca", + "annotations": "Anotaciones", + "booksRated": "Libros valorados", + "genresFinished": "Géneros finalizados", + "languagesFinished": "Idiomas terminados", + "readingStreak": "Racha de lectura" + }, + "units": { + "books": { + "progress": "{current} / {threshold} libros", + "toGo": "{count, plural, one {# libro restante} other {# libros restantes}}" + }, + "pages": { + "progress": "{current} / {threshold} páginas", + "toGo": "¡{count, plural, one {# página restante} other {# páginas restantes}}" + }, + "hours": { + "progress": "{current} / {threshold} horas", + "toGo": "{count, plural, one {# hora restante} other {# horas restantes}}" + }, + "annotations": { + "progress": "{current} / {threshold} anotaciones", + "toGo": "¡{count, plural, one {# anotación restante} other {# anotaciones restantes}}" + }, + "ratings": { + "progress": "{current} / {threshold} valoraciones", + "toGo": "{count, plural, one {# valoración restante} other {# valoraciones restantes}}" + }, + "genres": { + "progress": "{current} / {threshold} géneros", + "toGo": "{count, plural, one {# géneros restante} other {# géneros restantes}}" + }, + "languages": { + "progress": "{current} / {threshold} idiomas", + "toGo": "{count, plural, one {# idioma restante} other {# idiomas restantes}}" + }, + "days": { + "progress": "{current} / {threshold} días", + "toGo": "{count, plural, one {# día restante} other {# días restantes}}" + } + }, + "moments": { + "nthBook": "Libro {number} era {title}", + "pagesAtUnlock": "{count, plural, one {# página} other {# páginas}} cuando se desbloqueó", + "hoursAtUnlock": "{count, plural, one {# hora} other {# horas}} cuando se desbloqueó", + "titleWithPages": "¡{title}, {count, plural, one {# página} other {# páginas}}", + "booksAtUnlock": "{count, plural, one {# libro} other {# libros}} en tu biblioteca cuando se desbloqueó", + "annotationsAtUnlock": "¡{count, plural, one {# anotación} other {# anotaciones}} cuando se desbloqueó", + "ratingsAtUnlock": "{count, plural, one {# valoración} other {# valoraciones}} cuando se desbloqueó", + "genresAtUnlock": "{count, plural, one {# género} other {# géneros}} cuando se desbloqueó", + "languagesAtUnlock": "{count, plural, one {# idioma} other {# idiomas}} cuando se desbloqueó", + "streakAtUnlock": "{count, plural, one {# día} other {# días}} seguidos consecutivos", + "longSession": "Una sesión duró {duration}", + "durationHours": "{hours} h {minutes} min", + "durationMinutes": "{minutes} min", + "sessionStartedAt": "Una sesión que comenzó a {time}", + "oneDayBook": "{title}, de principio a fin en un día", + "booksInWeek": "{count, plural, one {# libro} other {# libros}} terminados en una semana", + "booksInMonth": "{count, plural, one {# libro} other {# libros}} terminados en {month}", + "booksInYear": "{count, plural, one {# libro} other {# libros}} terminados en {year}", + "wholeBookOneSession": "Un libro completo en una sesión", + "pagesInSession": "{count, plural, one {# página} other {# páginas}} en una sola sesión", + "pagesInDay": "{count, plural, one {# página} other {# páginas}} en un solo día", + "slowBurn": "{title}, terminado después de {count, plural, one {# día} other {# días}}", + "formatsOwned": "{count, plural, one {# formato} other {# formatos}} en tus estanterías", + "annotationsWithNote": "{count, plural, one {# anotación} other {# anotaciones}} con una nota", + "annotationsInDay": "{count, plural, one {# anotación} other {# anotaciones}} en un día", + "everyStar": "Cada calificación desde una estrella a cinco", + "everyColour": "Cada color de destacados utilizados", + "titlePublished": "{title}, publicado {year}", + "booksInGenre": "{count, plural, one {# libro} other {# libros}} en un solo género", + "firstInSeries": "{title}, de la serie {series}", + "centuries": "Libros de {count, plural, one {# siglo} other {# siglos}}", + "booksBySameAuthor": "{count, plural, one {# libro} other {# libros}} de un autor", + "decades": "Libros de {count, plural, one {# década} other {# decadas}}", + "shortBooks": "{count, plural, one {# libro corto} other {# libros cortos}} finalizados", + "allSeasons": "Las cuatro estaciones de {year}", + "consistentDays": "¡{count, plural, one {# día} other {# días}} de 30 minutos o más", + "weekendsInRow": "{count, plural, one {# fin de semana} other {# fines de semana}} seguidos", + "weekendHours": "{count, plural, one {# hora} other {# horas}} durante el fin de semana del {date}", + "categoriesCovered": "{count, plural, one {# categoría} other {# categorias}} con un logro", + "readingSources": "{count, plural, one {# fuente de lectura} other {# fuentes de lectura}}", + "oneBookSources": "Un libro leído de {count, plural, one {# fuente} other {# fuentes}}" + }, + "records": { + "title": "Grabar libro", + "subtitle": "Las cifras que hay detrás de tus medallas, tal y como estaban en el momento en que se desbloqueó cada una", + "value": "{value}", + "oneSession": "Una sesión de lectura", + "pagesInSession": "Páginas en una sesión", + "pagesInDay": "Páginas en un día", + "booksInWeek": "Libros en una semana", + "booksInMonth": "Libros en {month}", + "booksInYear": "Libros terminados en {year}", + "annotations": "Anotaciones", + "genresFinished": "Géneros finalizados", + "daysInRow": "Días seguidos", + "booksInLibrary": "Libros en tu biblioteca" + }, + "detail": { + "categoryTierSet": "{category} · Niveles", + "secretHint": "Sigue leyendo para revelar éste.", + "tierOf": "Nivel {earned} de {total}", + "current": "Actual", + "noneYet": "Ninguno todavía", + "progress": "Progreso", + "allTiersEarned": "Cada nivel ganado", + "tiers": "Niveles", + "earned": "Ganados", + "status": "Estados", + "hidden": "Ocultos", + "rarity": "Rareza", + "category": "Categoría", + "theSet": "El set", + "theMoment": "El momento" } }, "adminFeature": { @@ -4470,7 +5075,8 @@ "bulkRestored": "{count, plural, =0 {Restaurado sin anotaciones} one {Restaurado # anotación} other {Restaurado # anotaciones} many {Restaurado # anotaciones}}", "bulkRecolored": "{count, plural, =0 {Recoloreado sin anotaciones} one {recoloreado # anotación} other {recoloreado # anotaciones} many {recoloreado # anotaciones}}", "bulkRestyled": "{count, plural, =0 {Rediseñado sin anotaciones} one {rediseñado # anotación} other {rediseñado # anotaciones} many {rediseñado # anotaciones}}", - "noteSaved": "Nota guardada" + "noteSaved": "Nota guardada", + "purgePendingDeviceSync": "Un dispositivo sincronizado todavía tiene que eliminar esta anotación. Sincroniza ese dispositivo y luego eliminarlo para siempre." }, "railTitle": "{marks} marcas · {books} libros", "lastTwelveMonths": "Últimos 12 meses", @@ -4515,10 +5121,16 @@ }, "activitySummary": "{count, plural, one {# resaltado entre {from} y {to}} other {# resaltados entre {from} y {to}}}", "book": "Libro", - "needsReview": "Necesita revisión" + "needsReview": "Necesita revisión", + "trashToggle": "{count, plural, one {Papelera, # anotación} other {Papeleraa, # anotaciones}}", + "purgeDialog": { + "title": "¿Eliminar para siempre?", + "description": "Esta anotación y su nota son eliminadas para siempre. No puede ser restaurada de la papelera." + } }, "sources": { "web": "Sitio web", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -4626,7 +5238,13 @@ "user": "Usuario", "action": "Acción", "description": "Descripción", - "ip": "IP" + "ip": "IP", + "time": "Fecha", + "person": "Persona", + "source": "Fuente", + "open": "Abrir", + "network": "Red", + "activity": "Actividad" }, "categories": { "authentication": "Autenticación", @@ -4636,7 +5254,10 @@ "collections": "Colecciones", "integrations": "Integraciones", "settings": "Configuración", - "other": "Otro" + "other": "Otro", + "access": "Inicio de sesión y acceso", + "requests": "Solicitudes", + "devices": "Dispositivos y email" }, "resourceLabels": { "User": "Usuario", @@ -4787,10 +5408,178 @@ "MaintenanceMissingBooksClean": "Libros faltantes limpiados", "MaintenanceBrokenCoversClean": "Limpieza de portadas rotas", "MaintenanceOrphanedCoversClean": "Carpetas de portada huérfanas limpias" - } + }, + "views": { + "label": "Mostrar", + "changes": "Cambios", + "signins": "Inicios de sesión", + "security": "Seguridad", + "all": "Todos" + }, + "search": { + "label": "Buscar eventos", + "placeholder": "Buscar personas, objetivos o direcciones IP", + "placeholderShort": "Buscar eventos" + }, + "range": { + "label": "Rango de fechas: {range}", + "today": "Hoy", + "7d": "Últimos 7 dias", + "30d": "Últimos 30 días", + "all": "Todo guardado", + "custom": "Rango personalizado", + "from": "Desde", + "to": "Hasta", + "between": "{from} a {to}", + "since": "Desde {date}", + "until": "Hasta {date}", + "sinceOldest": "Desde {date}" + }, + "filterMenu": { + "button": "Filtros", + "category": "Categoría", + "person": "Persona", + "findPerson": "Encontrar a una persona", + "noPeople": "No hay personas que coincidan", + "clear": "Borrar", + "done": "Hecho" + }, + "activeFilters": { + "target": "{type}: {name}", + "clearAll": "Borrar todo" + }, + "securityGroups": { + "label": "Tipo de evento de seguridad", + "all": "Todo", + "failed": "Inicio de sesión fallido", + "accounts": "Cuentas", + "passwords": "Contraseñas", + "permissions": "Permisos", + "access": "Acceso a la biblioteca", + "links": "Enlaces de inicio de sesión" + }, + "day": { + "today": "Hoy", + "yesterday": "Ayer", + "changes": "{count, plural, one {# cambio} other {# cambios}}", + "events": "{count, plural, one {# evento} other {# eventos}}" + }, + "person": { + "system": "Sistema", + "deleted": "Cuenta eliminada", + "automation": "Automatización" + }, + "source": { + "server": "Este servidor", + "local": "Red local", + "internet": "Internet", + "job": "Proceso en segundo plano", + "unknown": "Sin registrar" + }, + "target": { + "none": "Destino incorrecto", + "more": "+{count}", + "sinceDeleted": "Desde que se eliminó", + "withId": "{type} #{id}" + }, + "openEvent": "Detalles abiertos: {event}", + "signIns": { + "signIns": "{count, plural, one {# inicio de sesión} other {# inicio de sesión}}", + "signOuts": "{count, plural, one {# cerrar sesión} other {# cerrar sesión}}", + "failed": "{count, plural, one {# intento fallido} other {# intentos fallidos}}", + "failedAs": "{count, plural, one {# falló como {names}} other {# fallaron como {names}}}", + "range": "{from} – {to}", + "footer": "{count, plural, one {{events} eventos de inicio de sesión, agrupados en # filas por persona, día y red} other {{events} eventos de inicio de sesión, agrupados en # filas por persona, día y red}}" + }, + "pager": { + "label": "Páginas", + "previous": "Página anterior", + "next": "Página siguiente", + "page": "Página {page}", + "changes": "{from}–{to} de {count, plural, one {# cambio} other {# cambios}}", + "events": "{from}-{to} de {count, plural, one {# evento} other {# eventos}}" + }, + "drawer": { + "description": "Detalles de un evento de auditoría", + "close": "Cerrar", + "subtitle": "{category} · {day} {time}", + "when": "Cuando", + "person": "Persona", + "source": "Fuente", + "target": "Destino", + "usernameTried": "Usuario intentado", + "deletedHere": "{type} · eliminado por este evento", + "deletedSince": "{type} · desde que se eliminó", + "inThisRow": "{count, plural, one {# evento en esta fila} other {# eventos en esta fila}}", + "around": "Alrededor del evento", + "aroundHint": "{name}, con un margen de 40 minutos", + "aroundEmpty": "No ha habido más noticias de {name} en los últimos 40 minutos.", + "history": "Historial", + "historyCount": "{count, plural, one {# evento} other {# eventos}}", + "historyMeta": "{name} · {date}, {time}", + "thisEvent": "Este evento", + "raw": "Evento sin procesar", + "rawEventId": "ID de evento", + "rawAction": "Acción", + "rawTarget": "Tipo de destino", + "rawNote": "Nota del servidor", + "only": "Solo {name}" + }, + "facts": { + "format": "Formato", + "size": "Tamaño", + "download": "Descargar", + "dockFile": "Archivo de Book Dock", + "rejected": "Rechazado", + "failed": "Fallido", + "cleaned": "Limpio", + "skipped": "Omitido", + "remaining": "Quedan", + "sharingLevel": "Nivel de uso compartido", + "sharing": { + "private": "No compartido", + "summary": "Resumen", + "detailed": "Detallado" + } + }, + "retention": { + "button": "{count, plural, one {Guardado por # día} other {Guardado por # días}}", + "title": "Mantener resultados para", + "days": "{count, plural,one {# día} other {# días}}", + "hint": "Los eventos más antiguos se eliminan todas las noches a medianoche.", + "hintWithOldest": "Los eventos más antiguos se eliminan cada noche a medianoche. El evento más antiguo guardado es de {date}.", + "readOnly": "Sólo las personas que pueden cambiar los ajustes de la aplicación pueden cambiar esto.", + "saved": "{count, plural, one {Eventos de auditoría se guardan por # día.} other {Eventos de auditoría se guardan por # días.}}", + "saveFailed": "No se ha podido modificar el tiempo durante el que se conservan los eventos." + }, + "export": { + "button": "Exportar", + "title": "Exportar lo que se muestra", + "hint": "Usa la vista actual, filtros y rango de fechas.", + "csv": "CSV", + "json": "JSON", + "failed": "No se ha podido exportar el registro de auditoría." + }, + "emptyFiltered": "No hay eventos que coincidan con estos filtros." }, "auth": { "backToSignIn": "Volver para iniciar sesión", + "plate": { + "exLibris": "Ex Libris" + }, + "endpaper": { + "change": "Cambiar fondo", + "options": { + "seigaiha": "Waves", + "shippo": "Linked circles", + "asanoha": "Hamp leaf", + "quatrefoil": "Quatrefoil", + "ogee": "Ogee", + "harlequin": "Harlequin", + "greekKey": "Greek key", + "plain": "Plain" + } + }, "themePicker": { "switchToLight": "Cambiar a claro", "switchToDark": "Cambiar a oscuro", @@ -4808,7 +5597,10 @@ "confirmPassword": "Confirmar contraseña", "confirmNewPassword": "Confirmar nueva contraseña", "currentPassword": "Contraseña actual", - "passwordHint": "Mín. 8 caracteres con mayúsculas, minúsculas y un dígito" + "passwordHint": "Mín. 8 caracteres con mayúsculas, minúsculas y un dígito", + "showPassword": "Mostrar contraseña", + "hidePassword": "Ocultar contraseña", + "capsLockOn": "Bloq Mayús está activado" }, "errors": { "generic": "Algo salió mal. Por favor inténtalo de nuevo.", @@ -4820,9 +5612,11 @@ "signingIn": "Iniciando sesión...", "orDivider": "o", "forgotPassword": "¿Olvidaste tu contraseña?", + "resetPasswordAction": "Restablecer contraseña", "noAccount": "¿No tienes una cuenta?", "signUp": "Registro", "registeredNotice": "Cuenta creada. Inicie sesión para continuar. Un administrador necesita conceder permisos antes de poder acceder a la biblioteca.", + "resetNotice": "Contraseña actualizada. Inicie sesión con su nueva contraseña.", "errors": { "invalidCredentials": "Nombre de usuario o contraseña no válidos", "tooManyAttempts": "Demasiados intentos de inicio de sesión. Espere un minuto e inténtelo de nuevo.", @@ -4918,6 +5712,12 @@ "errors": { "noToken": "No se proporciona ningún token" } + }, + "reconnect": { + "heading": "Esperando al servidor", + "description": "BookOrbit no puede acceder a su servidor en este momento. Esta página continúa por sí sola tan pronto como el servidor responda.", + "retry": "Vuelve a intentarlo", + "retrying": "Volviendo a intentar..." } }, "author": { @@ -4958,7 +5758,10 @@ "died": "Fallecido", "website": "Sitio Web", "genres": "Géneros", - "influences": "Influencias" + "influences": "Influencias", + "findMatch": "Encontrar al autor correcto", + "source": "Fuente", + "pinned": "Fijado" }, "list": { "title": "Autores", @@ -5030,7 +5833,17 @@ "removing": "Eliminando...", "removeImage": "Quitar imagen", "imageHint": "PNG/JPEG/WEBP/GIF/BMP hasta {size} MB", - "saving": "Guardando..." + "saving": "Guardando...", + "website": "Sitio Web", + "websitePlaceholder": "https://ejemplo.com", + "websiteInvalid": "Introduzca una dirección web como ejemplo.com.", + "born": "Nacimiento", + "died": "Fallecimiento", + "lifeDatePlaceholder": "1965 o 1965-03-14", + "lifeDateHint": "Para las fechas de nacimiento y fallecimiento, indica un año o una fecha completa en el formato año-mes-día.", + "lifeDateInvalid": "Introduce un año o una fecha concreta en el formato año-mes-día.", + "genres": "Géneros", + "influences": "Influencias" }, "merge": { "searchPlaceholder": "Buscar autores para fusionarlos con este autor", @@ -5095,10 +5908,72 @@ "actionsFor": "Acciones para {name}", "refreshing": "Refrescando metadatos para {name}", "deleting": "Eliminando {name}" + }, + "match": { + "title": "Encuentra el autor correcto", + "description": "Elige a la persona que hay detrás de {name}, ya sea mediante una búsqueda por nombre o pegando un enlace de Goodreads o Audible.", + "search": { + "label": "Nombre", + "submit": "Búsqueda" + }, + "reference": { + "label": "Goodreads o Audible enlace o ID", + "placeholder": "goodreads.com/author/show/12345", + "submit": "Buscar", + "unrecognised": "Pegue un enlace de autor de Goodreads o Audible, un ID de Goodreads o un ASIN.", + "notFound": "Ningún autor tiene ese ID.", + "failed": "La búsqueda ha fallado. Inténtalo de nuevo en un momento." + }, + "results": { + "label": "Coincidencias", + "count": "{count, plural, =0 {No hay coincidencias} one {# coincidencia} other {# coincidencias}}", + "searching": "Buscando...", + "empty": "No se han encontrado autores. Prueba con otra grafía o pega un enlace.", + "failed": "La búsqueda falló. Inténtalo de nuevo en un momento.", + "current": "Actual", + "born": "Nació {year}", + "lifeSpan": "{born}–{died}" + }, + "detail": { + "empty": "Elige una coincidencia para ver quién es.", + "loading": "Cargando los detalles...", + "noBio": "Sin biografía.", + "back": "Regresar a coincidencias", + "use": "Usar este autor", + "unpin": "Desanclar", + "pinnedHint": "Fijado: permite buscar a este autor por su ID en lugar de buscarlo por su nombre.", + "currentHint": "El autor coincide con esta persona. Úsalo para anclar el resultado." + }, + "confirm": { + "title": "¿Usar este autor de {provider}?", + "description": "La biografía, las fechas, el sitio web, los géneros y las influencias son reemplazados por este autor y más tarde las actualizaciones se mantienen a esta persona.", + "confirm": "Utilizar este autor" + }, + "toast": { + "pinned": "Ahora coincide con {name} en {provider}", + "unpinned": "Desanclado. Vuelve a actualizar la búsqueda por nombre.", + "notFound": "{provider} ya no tiene ningún autor con ese identificador.", + "providerDown": "No se pudo cargar {provider} . Inténtalo de nuevo en un momento.", + "failed": "No se pudo usar este autor.", + "unpinFailed": "No se pudo desanclar el resultado." + } } }, "book": { "untitled": "Sin título", + "placeholder": { + "volume": "Vol. {number}", + "genre": { + "horror": "Horror", + "romance": "Romance", + "fantasy": "Fantasía", + "scifi": "Ciencia-ficción", + "mystery": "Misterio", + "classic": "Clásicos", + "nonfiction": "No ficción", + "young": "Lectores jóvenes" + } + }, "unknownFormat": "desconocido", "collapsedSeries": { "label": "Serie", @@ -5113,6 +5988,7 @@ "audiobook": "Audiolibro" }, "formats": { + "djvu": "Documento DjVu", "epub": "E-book EPUB", "kepub": "E-book KEPUB", "pdf": "Documento PDF", @@ -5288,6 +6164,7 @@ "before": "antes", "after": "después", "withinLast": "dentro del último", + "moreThanAgo": "más que", "isMissing": "no se encuentra", "isPresent": "está presente", "isUnread": "no leído", @@ -5310,6 +6187,7 @@ "withinLastPlaceholder": "por ej. 7", "unit": { "days": "días", + "daysAgo": "hace días", "weeks": "semanas", "months": "meses", "megabytes": "Mb" @@ -5488,7 +6366,8 @@ }, "header": { "previousBook": "Libro anterior", - "nextBook": "Siguiente libro" + "nextBook": "Siguiente libro", + "backToLibrary": "Volver a {library}" }, "tabs": { "details": "Detalles", @@ -5652,6 +6531,13 @@ "unavailable": "No disponible", "epubCopiesOnly": "Solo copias EPUB" }, + "chip": { + "enabled": "Sincronizado", + "partial": "Parcialmente sincronizado", + "disabled": "Sincronización desactivada", + "unavailable": "Problema de sincronización" + }, + "chipAria": "Sincronización de progreso en voz alta: {status}", "enabledDescription": "Las posiciones de Audiobook, lector web, Kobo y KOReader permanecen sincronizadas.", "disabledDescription": "Cada formato mantiene su propia posición de lectura.", "epubCopiesDescription": "Las posiciones de los lectores web, Kobo y KOReader están sincronizadas a través de las copias de EPUB. Añade archivos de audio coincidentes para sincronizar también el audiolibro.", @@ -7287,6 +8173,10 @@ "noResultsHint": "Prueba un título o autor diferente.", "noResultsIndexerHint": "Prueba un título o autor diferente, o busca en los indexadores \"{title}\" y elige una versión tú mismo.", "freeTextAction": "Buscar indexadores", + "noResultsRequestHint": "Prueba con otro título o autor, o solicita \"{title}\" tal y como lo has escrito. Una nota para la persona encargada de aprobar la solicitud, en la sección Más opciones, le ayudará a encontrar el libro correcto.", + "noResultsRequestAutoHint": "Prueba un título o autor diferente, o solicita \"{title}\" tal y como lo has escrito.", + "requestAnywayAction": "Solicitar de todos modos", + "searchAuthor": "Mostrar libros de {author}", "manualSearchAction": "Buscar indexadores manualmente", "yearUnknown": "Año desconocido", "sourceCount": "{count, plural, one {# fuente} other {# fuentes}}", @@ -7668,6 +8558,8 @@ "clientUnavailable": "Tu cliente de descarga no ha respondido a una versión anterior" }, "singleFileNote": "Una versión puede ser un mismo libro disponible en varios formatos, un audiolibro dividido en varias partes o un archivo - todos ellos se importan como un único libro. Si una versión contiene varios libros independientes, se te preguntará cuál quieres conservar.", + "holdForReview": "Revisar la descarga antes de archivarla", + "releasePageLabel": "{title}, página de lanzamiento en {indexer}", "searching": "Buscar indexadores...", "refresh": "Buscar de nuevo", "cached": "Mostrando la última búsqueda. Buscar de nuevo para obtener resultados nuevos.", @@ -7985,6 +8877,7 @@ "scoreShort": "El archivo importado obtuvo una puntuación de {score} para esta solicitud, por debajo de {threshold}, la puntuación mínima necesaria para archivarlo automáticamente.", "scoreClears": "El archivo importado obtuvo una puntuación de {score}, lo que supera el {threshold} necesario para archivarlo automáticamente.", "verificationOff": "La comprobación de importación está desactivada, por lo que este archivo nunca se puntuó en relación con la solicitud.", + "heldOnRequest": "Esta versión fue enviada para ser revisada antes de archivar, así que le está esperando.", "reason": { "isbn_match": "Su ISBN es el solicitado.", "above_threshold": "Parece ser el libro que se ha pedido.", @@ -8004,8 +8897,24 @@ }, "requested": "Solicitado", "imported": "Importado", + "releasePage": "Abrir la página de publicación", "absent": "Ni la solicitud ni el archivo tienen una.", "notSet": "No establecido", + "editionTitle": "Lo que dice el archivo es", + "edition": { + "publisher": "Editorial", + "published": "Publicado", + "language": "Idioma", + "pages": "Páginas", + "isbn10": "ISBN-10", + "narrators": "Narrado por", + "length": "Longitud", + "version": "Versión", + "chapters": "Capítulos" + }, + "abridged": "Resumen", + "unabridged": "Sin resumir", + "importedCover": "Portada encontrada en el archivo importado", "filesTitle": "Lo que llegó", "fileCount": "{count, plural, one {# archivo} other {# archivos}}", "role": { @@ -8015,6 +8924,8 @@ }, "fileAnyway": "Archivarlo de todos modos", "fileAnywayHint": "Lo archiva en la biblioteca de destino y marca la solicitud como disponible, exactamente igual que si hubiera obtenido una puntuación aprobatoria.", + "fileIt": "Registrarla", + "fileItHint": "Lo archiva en la biblioteca de destino y marca la solicitud como disponible.", "noDestination": "Esta solicitud no tiene una biblioteca de destino, por lo que no hay ningún lugar para archivar el libro.", "openDock": "Abrir el Book Dock", "missingEntry": "El archivo que se había retenido para esta solicitud ya no está en Book Dock. Se archivó o descartó manualmente, así que no queda nada que revisar aquí.", @@ -8201,7 +9112,8 @@ "updateTooltip": "Actualización {version} disponible", "openUpdateRelease": "Abrir la versión {version} en GitHub", "zones": { - "browse": "Explorar" + "browse": "Explorar", + "reading": "Leyendo" }, "reorder": { "gripAria": "Reordenar {name}", @@ -8210,6 +9122,19 @@ "dropped": "{name} soltado en la posición {position} de {total}", "cancelled": "Reordenación cancelada. {name} volvió a la posición {position} de {total}.", "filteredHint": "Borra el filtro para reordenar" + }, + "customize": { + "open": "Personalizar barra lateral", + "title": "Personalizar barra lateral", + "hint": "Arrastra para cambiar el orden. Las páginas ocultas siguen apareciendo en la búsqueda.", + "reset": "Restablecer los valores predeterminados", + "done": "Hecho", + "resetDone": "Barra lateral restablecida", + "showInSidebar": "Mostrar {name} en la barra lateral", + "show": "Mostrar", + "hide": "Ocultar", + "alwaysShown": "{name} se muestra siempre", + "returnsWithWork": "Mostrar cuando el trabajo está en espera" } }, "selectionActionBar": { @@ -8287,6 +9212,69 @@ "table": "Vista de tabla" } }, + "browseHeader": { + "eyebrow": { + "library": "Biblioteca", + "smartScope": "Filtro inteligente", + "collection": "Colección", + "browse": "Explorar" + }, + "facts": { + "books": "{count, plural, one {# libro} other {# libros}}", + "booksOf": "{matching} de {total, plural, one {# libro} other {# libros}}", + "authors": "{count, plural, one {# autor} other {¡# autores}}", + "series": "{count, plural, one {# series} other {# series}}", + "scanned": "Analizado {time}", + "scanningProgress": "Escaneando {processed} / {total}", + "syncsToKobo": "Sincronizar con Kobo" + }, + "switcher": { + "open": "Cambiar de {name}", + "jumpTo": "Saltar a...", + "libraries": "Bibliotecas", + "smartScopes": "Filtro inteligente", + "collections": "Colecciones", + "empty": "No hay coincidencias" + }, + "search": { + "removeToken": "Quitar filtro {label}", + "clearAll": "Borrar búsqueda y filtros", + "save": "Guardar", + "summaryToken": "{count, plural, one {# filtro} other {# filtros}}" + }, + "tokens": { + "anyOf": "Cualquiera de {count, plural, one {# regla} other {# reglas}}", + "allOf": "Todas las {count, plural, one {# regla} other {# reglas}}" + }, + "sort": { + "sortBy": "Ordenar por {field}", + "ascending": "Ascendente. Cambiar a descendente", + "descending": "Descendiendo. Cambiar a ascendente" + }, + "facets": { + "format": "Formato", + "rules": "Reglas", + "show": "Mostrar", + "library": "Biblioteca", + "status": "Estado", + "ruleCount": "{count, plural, one {# regla} other {# reglas}}" + }, + "menu": { + "more": "Más de {name}", + "editRules": "Editar reglas", + "deleteSmartScope": "Eliminar filtro Inteligente", + "deleteCollection": "Eliminar colección", + "confirmDelete": "¿Eliminar \"{name}\"? Esta acción no se puede deshacer.", + "upload": "Subir libros" + }, + "scan": { + "scanning": "Escaneando", + "started": "Escaneando {name}", + "finished": "Escaneo de {name} terminado" + }, + "viewModes": "Modo de visualización", + "legend": "Colores de volumen" + }, "iconPicker": { "clearSelectionAria": "Borrar icono seleccionado", "searchLucide": "Buscar iconos de Lucide...", @@ -9586,6 +10574,68 @@ "opfHint": "Guardado junto al libro por Calibre", "swap": "Intercambiar el orden", "hint": "BookOrbit utiliza el primero que tiene un libro e ignora el otro. Las biblioteca Calibre normalmente quieren metadata.opf primero." + }, + "regex": { + "title": "Configurar metadatos de regex", + "sourceTitle": "Regex", + "description": "Extrae los metadatos a partir de la ruta del archivo principal, relativa a su carpeta de biblioteca. La extensión del archivo se elimina antes de realizar la coincidencia. Se aplica la primera regla que contenga campos válidos.", + "enable": "Configurar metadatos de regex", + "primaryFileHint": "En el caso de un libro compuesto por varios archivos, como las pistas de un audiolibro, las reglas leen la ruta del archivo principal.", + "groups": "Grupos nombrados:", + "valuesHint": "Utiliza author para indicar un solo autor o varios autores separados por punto y coma. Las fechas deben escribirse en el formato AAAA-MM-DD. Opciones: i ignora las mayúsculas y minúsculas; u habilita Unicode.", + "rules": "Reglas de extracción ordenadas", + "rule": "Regla {number}", + "moveUp": "Mover regla hacia arriba", + "moveDown": "Mover regla hacia abajo", + "remove": "Eliminar regla", + "basePath": "Carpeta de librería", + "extensionHint": "La extensión del archivo es ignorada automáticamente. El anclaje final coincide con el nombre del archivo sin su extensión.", + "flags": "Marcas", + "add": "Agregar regla", + "examplePath": "Ejemplo de ruta relativa de archivo, incluyendo extensión", + "examplePlaceholder": "Autor/Series/08 - My.Book.epub", + "exampleTitle": "Ejemplo con una referencia de autor", + "exampleTestPath": "Ruta de prueba (incluida la extensión)", + "validating": "Comprobando reglas…", + "validationSuccess": "La sintaxis de reglas y grupos son válidos. Utilice la vista previa para comprobar las coincidencias de una ruta de archivo.", + "validationError": "No se pudo validar las reglas. Inténtalo de nuevo antes de aplicarlas.", + "validationRetry": "Compruebe de nuevo", + "validationRuleCount": "Añade entre {min} y {max} reglas.", + "preview": "Previsualizar", + "previewing": "Probando reglas…", + "previewError": "No se pudo previsualizar las reglas. Compruebe la ruta relativa y la configuración, y vuelva a intentarlo.", + "actualInput": "Ruta probada:", + "matched": "Regla coincidente {number}", + "noMatch": "No se ha encontrado ninguna coincidencia válida. Se utilizarán los metadatos del archivo.", + "scanHint": "Los cambios se aplicarán a la futura extracción de metadatos de los archivos nuevos o modificados. Al guardar, no se inicia ningún análisis ni se actualizan los libros que no hayan sufrido cambios.", + "apply": "Aplicar al formulario de biblioteca", + "configure": "Configurar", + "enabledHint": "Extraer campos de rutas relativas sin extensiones de archivo.", + "disabledHint": "Deshabilitado. Configurar reglas para habilitar.", + "moveSourceUp": "Mover {source} arriba", + "moveSourceDown": "Mover {source} abajo", + "diagnostics": { + "pattern_required": "Introduzca una expresión regular.", + "pattern_too_long": "La expresión no debe exceder {count} caracteres.", + "invalid_flags": "Sólo i y u están permitidos, cada uno a lo sumo una vez.", + "invalid_pattern": "Expresión regular inválida.", + "missing_group": "Incluye al menos un grupo con nombre compatible.", + "conflicting_authors": "Utilice ya sea el autor o los autores, no ambos.", + "invalid_value": "Se ha omitido un valor de campo no válido.", + "timeout": "La expresión tomó demasiado tiempo. Simplifique el patrón.", + "busy": "Todos los trabajadores de la vista previa están ocupados. Inténtalo de nuevo en breve.", + "worker_failed": "La expresión no pudo ser evaluada. Inténtalo de nuevo." + }, + "precedenceHint": "La primera fuente de archivos disponible proporciona los metadatos. Los campos de expresiones regulares siguen este orden y los valores que faltan se completan a partir de la otra fuente.", + "summary": " {format} primero, preferimos metadatos regex", + "fields": { + "title": "Título", + "authors": "Autores", + "series": "Series", + "seriesIndex": "Número de serie", + "publishedYear": "Año de publicación", + "publishedDate": "Fecha de publicación" + } } }, "fileWrite": { @@ -10406,6 +11456,22 @@ } }, "reader": { + "pageImages": { + "loadFailed": "No se pudo abrir este documento. Compruebe su acceso o vuelva a intentarlo.", + "pageFailed": "Esta página no se pudo cargar. Vuelva a intentarlo cuando el servidor esté disponible.", + "pageAlt": "Página {page}", + "previousPage": "Página anterior", + "nextPage": "Siguiente página", + "goToPage": "Ir a la página", + "pin": "Anclar menú del lector", + "unpin": "Desanclar menú del lector" + }, + "djvu": { + "pageText": "Texto de página incrustado", + "textDescription": "Texto almacenado en el documento DjVu. OCR puede contener errores.", + "noText": "Esta página no tiene texto incrustado.", + "textFailed": "No se pudo cargar el texto incrustado de esta página." + }, "retry": "Reintentar", "pdf": { "openError": "No se puede abrir este PDF", @@ -10484,7 +11550,21 @@ }, "toast": { "linkedHighlightError": "No se pudo abrir la posición destacada vinculada", - "resumed": "Reanudado en {pct}% - {label}" + "resumed": "Reanudado en {pct}% - {label}", + "newerPositionError": "No se pudo abrir tu posición más reciente", + "highlightSaveFailed": "No se puede guardar el resaltado", + "noteSaveFailed": "No se pudo guardar la nota", + "highlightDeleteFailed": "No se pudo eliminar el destacado", + "bookmarkSaveFailed": "No se pudo añadir el marcador", + "bookmarkDeleteFailed": "No se ha podido eliminar el marcador", + "bookmarkUpdateFailed": "No se pudo guardar el marcador", + "marksLoadFailed": "No se han podido cargar tus destacados y marcadores" + }, + "newerPositionDialog": { + "title": "¿Continuar desde otro dispositivo?", + "description": "Este libro fue leído a {remote} en otro dispositivo mientras estaba abierto aquí en {local}.", + "follow": "Ir a {pct}", + "stay": "Quedarse en {pct}" }, "header": { "goBack": "Volver", @@ -10626,6 +11706,7 @@ "allChapters": "Todos los capítulos", "notesOnly": "Solo notas", "deleteBookmark": "Eliminar marcador", + "editBookmark": "Editar marcador", "deleteHighlight": "Eliminar resaltado", "approximatePosition": "Sincronizado desde el dispositivo; posición exacta no disponible, salta al capítulo", "sort": { @@ -10641,6 +11722,7 @@ "translate": "Traducir", "define": "Definir", "deleteAnnotation": "Eliminar anotación", + "readFromHere": "Leer desde aquí", "apply": "Aplicar", "color": "Color de resaltado: {color}", "style": "Estilo de resaltado: {style}", @@ -10791,6 +11873,12 @@ "hideControls": "Ocultar controles", "stop": "Detener narración", "error": "Error de reproducción de narración" + }, + "bookmarkEdit": { + "title": "Editar marcador", + "titleLabel": "Título", + "noteLabel": "Nota", + "notePlaceholder": "Nota opcional" } }, "scanner": { @@ -12104,6 +13192,7 @@ "prepared": "Reemplazado preparado: {format}, {size}. Elimine este libro solo del dispositivo seleccionado, luego ofrezca el reemplazo preparado y la sincronización.", "offered": "Sustitución ofrecida. Sincroniza y descarga el archivo en el dispositivo y, después, confirma la instalación. Que la transferencia HTTP haya finalizado no garantiza que el archivo se haya instalado correctamente.", "cancelled": "Reemplazo cancelado. La cancelación no restaura una copia del dispositivo eliminada o parcialmente reemplazada. Seleccione el mismo libro para preparar una descarga de recuperación.", + "alreadyOnDevice": "El dispositivo ya tiene esta copia exacta, así que no hay nada que reemplazar.", "failed": "No se pudo preparar o actualizar este reemplazo.", "searchBook": "Buscar un libro", "chooseBook": "Seleccionar un libro", @@ -12120,8 +13209,54 @@ } }, "commandPalette": { + "title": "Buscar", + "description": "Busque libros, autores, series y ajustes, salte a un lugar o ejecute una acción.", + "placeholder": "Buscar libros, autores, series o ir a…", + "close": "Cerrar búsqueda", + "clear": "Borrar búsqueda", + "tabs": { + "all": "Todos", + "books": "Libros", + "authors": "Autores", + "series": "Series", + "settings": "Ajustes" + }, "sections": { - "continueReading": "Continuar leyendo" - } + "continueReading": "Continuar leyendo", + "goTo": "Ir a", + "actions": "Acciones", + "books": "Libros", + "authors": "Autores", + "series": "Series", + "settings": "Ajustes" + }, + "kinds": { + "author": "Autor", + "series": "Series", + "library": "Biblioteca", + "smartScope": "Filtro inteligente", + "collection": "Colección", + "page": "Página", + "setting": "Configuración" + }, + "showAllBooks": "{count, plural, one {Mostrar # libro} other {Mostrar todos los # libros}}", + "showAllAuthors": "{count, plural, one {Mostrar # autor} other {Mostrar todos los # autores}}", + "showAllSeries": "{count, plural, one {Mostrar # serie} other {Mostrar todas las # series}}", + "showAllSettings": "{count, plural, one {Mostrar # ajuste} other {Mostrar todos los # ajustes}}", + "actions": { + "lightTheme": "Cambiar a tema claro", + "darkTheme": "Cambiar al tema oscuro" + }, + "hints": { + "navigate": "Navegar", + "open": "Abrir", + "filter": "Filtrar", + "close": "Cerrar" + }, + "keys": { + "escape": "escape", + "tab": "Pestaña" + }, + "resultCount": "{count, plural, =0 {Sin resultados} one {# resultado} other {# resultados}}" } } diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json index 6c27926be..162c384dc 100644 --- a/client/src/locales/fr.json +++ b/client/src/locales/fr.json @@ -3130,6 +3130,8 @@ "syncHighlightsHint": "Envoyez les passages surlignés réalisés dans BookOrbit ou KOReader à votre Kobo. Les passages surlignés Kobo sont importées dans BookOrbit même lorsque cette option est désactivée. Les annotations liées synchronisent les modifications et les suppressions dans les deux sens. Nécessite la livraison KEPUB ; le livre sur Kobo doit être le KEPUB téléchargé depuis BookOrbit.", "storeSync": "Inclure les titres du magasin Kobo", "storeSyncHint": "Envoyez aussi les livres de votre compte Kobo (y compris Kobo Plus et vos achats) en plus de votre bibliothèque BookOrbit. Sans cette option, seuls les livres BookOrbit sont envoyés vers l'appareil. Les titres du magasin sont téléchargés directement depuis Kobo et ne sont pas ajoutés à votre bibliothèque BookOrbit.", + "fullSizeCovers": "Couvertures en pleine résolution", + "fullSizeCoversHint": "Envoyer chaque couverture à la résolution de l'écran de votre Kobo, pour que les écrans de veille et les couvertures en plein écran restent nets. Option désactivée, les couvertures envoyées sont plus légères et se synchronisent plus vite. Une couverture déjà présente sur un Kobo ne change que lorsque celle du livre change.", "convertKepub": "Convertir en KEPUB", "convertKepubHint": "Envoyez des EPUB éligibles en tant que KEPUB. Cela reste activé lorsque la synchronisation de la progression ou les passages surlignés de BookOrbit-to-Kobo sont activées. Lors de la prochaine synchronisation Kobo, les livres concernés sont à nouveau proposés en téléchargement KEPUB ; supprimez toute ancienne copie de EPUB si Kobo continue de l'ouvrir.", "forceHyphenation": "Forcer la césure", @@ -3404,6 +3406,12 @@ "syncEnabled": "Synchronisation KOReader activée", "syncDisabled": "Synchronisation KOReader désactivée", "toggleSyncFailed": "Échec de la synchronisation", + "pluginLibrary": "Bibliothèque du plugin", + "hideAudioOnlyBooks": "Masquer les livres uniquement audio", + "hideAudioOnlyBooksHint": "KOReader ne peut pas lire l'audio : les livres qui n'ont que des fichiers audio n'apparaissent ni dans les listes, ni dans la recherche, ni dans les téléchargements du plugin, pas plus qu'une bibliothèque qui ne contient rien d'autre. Les livres qui ont aussi un ebook restent affichés.", + "audioOnlyBooksHidden": "Livres uniquement audio masqués dans le plugin", + "audioOnlyBooksShown": "Livres uniquement audio affichés dans le plugin", + "toggleAudioOnlyBooksFailed": "Échec de la mise à jour du paramètre de bibliothèque du plugin", "syncUrlCopied": "Synchroniser URL copié dans le presse-papiers", "syncUrlCopyFailed": "Échec de la copie de la synchronisation URL", "statusRefreshed": "Statut de synchronisation actualisé", @@ -5067,7 +5075,8 @@ "bulkRestored": "{count, plural, =0 {Restauré sans annotations} one {Restauré # annotation} other {Restauré # annotations} many {Restauré # annotations}}", "bulkRecolored": "{count, plural, =0 {Recoloré sans annotations} one {Recoloré # annotation} other {Recoloré # annotations} many {Recoloré # annotations}}", "bulkRestyled": "{count, plural, =0 {Aucune annotation restylée} one {# annotation restylée} other {# annotations restylées} many {# annotations restylées}}", - "noteSaved": "Remarque enregistrée" + "noteSaved": "Remarque enregistrée", + "purgePendingDeviceSync": "Un appareil synchronisé doit encore retirer cette annotation. Synchronisez cet appareil, puis supprimez-la définitivement." }, "railTitle": "{marks} marques · {books} livres", "lastTwelveMonths": "12 derniers mois", @@ -5112,10 +5121,16 @@ }, "activitySummary": "{count, plural, one {# passage surligné entre {from} et {to}} other {# passages surlignés entre {from} et {to}} many {# passages surlignés entre {from} et {to}}}", "book": "Livre", - "needsReview": "À vérifier" + "needsReview": "À vérifier", + "trashToggle": "{count, plural, one {Corbeille, # annotation} other {Corbeille, # annotations} many {Corbeille, # annotations}}", + "purgeDialog": { + "title": "Supprimer définitivement ?", + "description": "Cette annotation et sa remarque seront supprimées pour de bon. Elles ne pourront pas être restaurées depuis la corbeille." + } }, "sources": { "web": "Web", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -5697,6 +5712,12 @@ "errors": { "noToken": "Aucun jeton fourni" } + }, + "reconnect": { + "heading": "En attente du serveur", + "description": "BookOrbit ne parvient pas à joindre son serveur pour le moment. Cette page reprendra d'elle-même dès que le serveur répondra.", + "retry": "Réessayer maintenant", + "retrying": "Nouvelle tentative..." } }, "author": { @@ -5737,7 +5758,10 @@ "died": "Date de décès", "website": "Site web", "genres": "Genres", - "influences": "Influences" + "influences": "Influences", + "findMatch": "Trouver le bon auteur", + "source": "Source", + "pinned": "Épinglé" }, "list": { "title": "Auteurs", @@ -5809,7 +5833,17 @@ "removing": "Suppression...", "removeImage": "Supprimer l'image", "imageHint": "PNG/JPEG/WEBP/GIF/BMP jusqu'à {size} Mo", - "saving": "Sauvegarde..." + "saving": "Sauvegarde...", + "website": "Site web", + "websitePlaceholder": "https://example.com", + "websiteInvalid": "Saisissez une adresse web, p. ex. example.com.", + "born": "Date de naissance", + "died": "Date de décès", + "lifeDatePlaceholder": "1965 ou 1965-03-14", + "lifeDateHint": "Les dates de naissance et de décès acceptent une année, ou une date complète au format année-mois-jour.", + "lifeDateInvalid": "Saisissez une année ou une date valide au format année-mois-jour.", + "genres": "Genres", + "influences": "Influences" }, "merge": { "searchPlaceholder": "Rechercher des auteurs pour fusionner avec cet auteur", @@ -5874,6 +5908,56 @@ "actionsFor": "Actions pour {name}", "refreshing": "Actualisation des métadonnées de {name}", "deleting": "Suppression de {name}" + }, + "match": { + "title": "Trouver le bon auteur", + "description": "Choisissez la personne derrière {name}, par une recherche par nom ou en collant un lien Goodreads ou Audible.", + "search": { + "label": "Nom", + "submit": "Rechercher" + }, + "reference": { + "label": "Lien ou identifiant Goodreads ou Audible", + "placeholder": "goodreads.com/author/show/12345", + "submit": "Consulter", + "unrecognised": "Collez un lien d'auteur Goodreads ou Audible, un identifiant Goodreads ou un ASIN Audible.", + "notFound": "Aucun auteur ne porte cet identifiant.", + "failed": "La consultation a échoué. Réessayez dans un instant." + }, + "results": { + "label": "Correspondances", + "count": "{count, plural, =0 {Aucune correspondance} one {# correspondance} other {# correspondances} many {# correspondances}}", + "searching": "Recherche...", + "empty": "Aucun auteur trouvé. Essayez une autre orthographe ou collez un lien.", + "failed": "La recherche a échoué. Réessayez dans un instant.", + "current": "Actuel", + "born": "Naissance : {year}", + "lifeSpan": "{born}–{died}" + }, + "detail": { + "empty": "Choisissez une correspondance pour voir de qui il s'agit.", + "loading": "Chargement des détails...", + "noBio": "Aucune biographie.", + "viewOn": "Voir sur {provider}", + "back": "Retour aux correspondances", + "use": "Utiliser cet auteur", + "unpin": "Désépingler", + "pinnedHint": "Épinglé : les actualisations recherchent cet auteur par son identifiant au lieu de le chercher par son nom.", + "currentHint": "L'auteur est actuellement associé à cette personne. Choisissez « Utiliser cet auteur » pour épingler la correspondance." + }, + "confirm": { + "title": "Utiliser cet auteur de {provider} ?", + "description": "La biographie, la photo, les dates, le site web, les genres et les influences seront remplacés par ceux de cet auteur, et les actualisations suivantes s'en tiendront à cette personne.", + "confirm": "Utiliser cet auteur" + }, + "toast": { + "pinned": "Désormais associé à {name} sur {provider}", + "unpinned": "Désépinglé. Les actualisations recherchent de nouveau par nom.", + "notFound": "{provider} n'a plus aucun auteur avec cet identifiant.", + "providerDown": "Impossible de joindre {provider}. Réessayez dans un instant.", + "failed": "Impossible d'utiliser cet auteur.", + "unpinFailed": "Impossible de désépingler la correspondance." + } } }, "book": { @@ -6081,6 +6165,7 @@ "before": "avant", "after": "après", "withinLast": "dans le dernier", + "moreThanAgo": "il y a plus de", "isMissing": "est manquant", "isPresent": "existe", "isUnread": "est non lu", @@ -6103,6 +6188,7 @@ "withinLastPlaceholder": "par ex. 7", "unit": { "days": "jours", + "daysAgo": "jours", "weeks": "semaines", "months": "mois", "megabytes": "Mo" @@ -6446,6 +6532,13 @@ "unavailable": "Indisponible", "epubCopiesOnly": "Exemplaires EPUB uniquement" }, + "chip": { + "enabled": "Synchronisation active", + "partial": "Synchronisation partielle", + "disabled": "Synchronisation désactivée", + "unavailable": "Problème de synchronisation" + }, + "chipAria": "Synchronisation de la progression audio-texte : {status}", "enabledDescription": "Les positions du livre audio, du lecteur web, de Kobo et de KOReader restent synchronisées.", "disabledDescription": "Chaque format conserve sa propre position de lecture.", "epubCopiesDescription": "Les positions du lecteur web, de Kobo et de KOReader restent synchronisées entre les exemplaires EPUB. Ajoutez des fichiers de livre audio correspondants pour synchroniser aussi le livre audio.", @@ -8081,6 +8174,10 @@ "noResultsHint": "Essayez un autre titre ou un autre auteur.", "noResultsIndexerHint": "Essayez un autre titre ou un autre auteur, ou cherchez « {title} » sur les indexeurs et choisissez une release vous-même.", "freeTextAction": "Chercher sur les indexeurs", + "noResultsRequestHint": "Essayez un autre titre ou un autre auteur, ou demandez « {title} » tel que saisi. Une note pour l'approbateur, dans « Plus d'options », l'aide à trouver le bon livre.", + "noResultsRequestAutoHint": "Essayez un autre titre ou un autre auteur, ou demandez « {title} » tel que saisi.", + "requestAnywayAction": "Demander quand même", + "searchAuthor": "Afficher les livres de {author}", "manualSearchAction": "Chercher manuellement sur les indexeurs", "yearUnknown": "Année inconnue", "sourceCount": "{count, plural, one {# source} other {# sources} many {# sources}}", @@ -8462,6 +8559,8 @@ "clientUnavailable": "Votre client de téléchargement n'a pas répondu pour une release précédente" }, "singleFileNote": "Une release peut être un livre en plusieurs formats, un livre audio en plusieurs parties ou une archive - tout cela s’importe comme un seul livre. Une release contenant plusieurs livres distincts vous demande lequel garder.", + "holdForReview": "Vérifier le téléchargement avant son classement", + "releasePageLabel": "{title}, page de la release sur {indexer}", "searching": "Interrogation des indexeurs...", "refresh": "Chercher à nouveau", "cached": "Affichage de la dernière recherche. Relancez-la pour des résultats frais.", @@ -8779,6 +8878,7 @@ "scoreShort": "Le fichier importé a obtenu un score de {score} face à cette demande, sous les {threshold} nécessaires pour le classer automatiquement.", "scoreClears": "Le fichier importé a obtenu un score de {score}, qui atteint les {threshold} nécessaires pour le classer automatiquement.", "verificationOff": "La vérification des imports est inactive : ce fichier n'a donc jamais été noté face à la demande.", + "heldOnRequest": "Cette release a été envoyée pour vérification avant classement : elle vous attend.", "reason": { "isbn_match": "Son ISBN est celui qui avait été demandé.", "above_threshold": "Il ressemble au livre qui avait été demandé.", @@ -8798,8 +8898,24 @@ }, "requested": "Demandé", "imported": "Importé", + "releasePage": "Ouvrir la page de la release", "absent": "Ni la demande ni le fichier n'en portent.", "notSet": "Non renseigné", + "editionTitle": "Ce que le fichier annonce", + "edition": { + "publisher": "Éditeur", + "published": "Date de publication", + "language": "Langue", + "pages": "Pages", + "isbn10": "ISBN-10", + "narrators": "Lu par", + "length": "Durée", + "version": "Version", + "chapters": "Chapitres" + }, + "abridged": "Abrégée", + "unabridged": "Intégrale", + "importedCover": "Couverture trouvée dans le fichier importé", "filesTitle": "Ce qui est arrivé", "fileCount": "{count, plural, one {# fichier} other {# fichiers} many {# fichiers}}", "role": { @@ -8809,6 +8925,8 @@ }, "fileAnyway": "Classer quand même", "fileAnywayHint": "Classe ce fichier dans la bibliothèque de destination et marque la demande comme disponible, exactement comme l'aurait fait un score suffisant.", + "fileIt": "Classer", + "fileItHint": "Classe ce fichier dans la bibliothèque de destination et marque la demande comme disponible.", "noDestination": "Cette demande n'a aucune bibliothèque de destination pourvue d'un dossier : il n'y a donc pas encore où classer le livre.", "openDock": "Ouvrir le Book Dock", "missingEntry": "Le fichier pour lequel cette demande était en attente n'est plus dans le Book Dock. Il a été classé ou écarté à la main : il ne reste donc rien à vérifier ici.", @@ -9005,6 +9123,19 @@ "dropped": "{name} déposé à la position {position} sur {total}", "cancelled": "Réorganisation annulée. {name} est revenu à la position {position} sur {total}.", "filteredHint": "Effacez le filtre pour réorganiser" + }, + "customize": { + "open": "Personnaliser la barre latérale", + "title": "Personnaliser la barre latérale", + "hint": "Faites glisser pour réorganiser. Les pages masquées restent accessibles depuis la recherche.", + "reset": "Réinitialiser", + "done": "Terminé", + "resetDone": "Barre latérale réinitialisée", + "showInSidebar": "Afficher {name} dans la barre latérale", + "show": "Afficher", + "hide": "Masquer", + "alwaysShown": "{name} : affichage permanent", + "returnsWithWork": "S'affiche quand des éléments sont en attente" } }, "selectionActionBar": { @@ -11421,7 +11552,21 @@ }, "toast": { "linkedHighlightError": "Impossible d'ouvrir la position du passage surligné lié", - "resumed": "Reprise à {pct} % - {label}" + "resumed": "Reprise à {pct} % - {label}", + "newerPositionError": "Impossible d'ouvrir votre position la plus récente", + "highlightSaveFailed": "Impossible d'enregistrer le passage surligné", + "noteSaveFailed": "Impossible d'enregistrer la remarque", + "highlightDeleteFailed": "Impossible de supprimer le passage surligné", + "bookmarkSaveFailed": "Impossible d'ajouter le signet", + "bookmarkDeleteFailed": "Impossible de supprimer le signet", + "bookmarkUpdateFailed": "Impossible d'enregistrer le signet", + "marksLoadFailed": "Impossible de charger vos passages surlignés et signets" + }, + "newerPositionDialog": { + "title": "Reprendre depuis un autre appareil ?", + "description": "Ce livre a été lu jusqu'à {remote} sur un autre appareil alors qu'il était ouvert ici à {local}.", + "follow": "Aller à {pct}", + "stay": "Rester à {pct}" }, "header": { "goBack": "Retourner", @@ -11563,6 +11708,7 @@ "allChapters": "Tous les chapitres", "notesOnly": "Remarques uniquement", "deleteBookmark": "Supprimer le favori", + "editBookmark": "Modifier le signet", "deleteHighlight": "Supprimer le surlignage", "approximatePosition": "Synchronisé depuis l'appareil ; position exacte indisponible, passe au chapitre", "sort": { @@ -11578,6 +11724,7 @@ "translate": "Traduire", "define": "Définir", "deleteAnnotation": "Supprimer l'annotation", + "readFromHere": "Écouter à partir d'ici", "apply": "Appliquer", "color": "Couleur de l'annotation : {color}", "style": "Style de l'annotation : {style}", @@ -11728,6 +11875,12 @@ "hideControls": "Masquer les commandes", "stop": "Arrêter la narration", "error": "Erreur de lecture de la narration" + }, + "bookmarkEdit": { + "title": "Modifier le signet", + "titleLabel": "Titre", + "noteLabel": "Remarque", + "notePlaceholder": "Remarque facultative" } }, "scanner": { diff --git a/client/src/locales/hu.json b/client/src/locales/hu.json index a7aa44d24..e54251449 100644 --- a/client/src/locales/hu.json +++ b/client/src/locales/hu.json @@ -1951,6 +1951,11 @@ } }, "providers": { + "tabs": { + "builtIn": "Beépített", + "external": "Külső", + "attention": "Figyelmet igényel" + }, "availableSources": "Elérhető források", "saveChanges": "Változtatások mentése", "discard": "Elvetés", @@ -2022,6 +2027,115 @@ "aladin": "Az Aladin engedélyezéséhez TTB-kulcs szükséges" } }, + "providerDirectory": { + "title": "Telepíthető", + "hint": "Mindegyik egy kis konténerként fut a BookOrbit mellett. Másold a hozzá tartozó Compose-szolgáltatást a BookOrbitot futtató fájlba, indítsd el a docker compose up -d paranccsal, majd válaszd a Hozzáadás gombot.", + "updated": "Frissítve {time}", + "bundled": "Ezen verzió részét képező lista", + "loadFailed": "Az előre konfigurált szolgáltatók listájának betöltése nem sikerült. Bármelyik szolgáltatót hozzáadhatod a címe alapján is.", + "copy": "Compose másolása", + "copyLabel": "{name} Compose-szolgáltatásának másolása", + "copied": "{name} másolva. Illeszd be a services: rész alá a Compose-fájlodban, majd futtasd a docker compose up -d parancsot.", + "copyFailed": "A vágólapra másolás nem sikerült. Ugyanez a kódrészlet a szolgáltató dokumentációjában is megtalálható.", + "add": "Hozzáadás", + "addLabel": "{name} hozzáadása", + "alreadyAdded": "Már hozzáadva: {names}", + "allAdded": "A listában szereplő összes szolgáltatót hozzáadtad.", + "wasBuiltIn": "Készült", + "docs": "Dokumentáció", + "docsLabel": "{name} dokumentációja, új fülön nyílik meg", + "media": { + "book": "Könyvek", + "audiobook": "Hangoskönyvek", + "comic": "Képregények" + } + }, + "buildYourOwn": { + "title": "Saját létrehozása", + "body": "Hiányzik egy forrás? A szolgáltató egy kis webszolgáltatás, amely három JSON-kérésre válaszol, így bármilyen programozási nyelv megfelel. Indulj ki a Rust vagy Go sablonból, ellenőrizd a megfelelőségi tesztelővel, majd add hozzá itt, mint bármelyik másikat.", + "links": { + "guide": "Összeállítási útmutató", + "starters": "Sablonok", + "checker": "Megfelelőségi tesztelő", + "suggest": "Javasoljon egy forrást" + } + }, + "movedProviders": { + "title": "Bizonyos források már nem beépítettek", + "description": "Az ezeket a forrásokat felsoroló mezőszabályok egyelőre átugorják őket. A könyveiden már meglévő azonosítók és linkek megmaradnak.", + "run": "A(z) {name} mostantól saját szolgáltatóként fut: indítsd el a(z) {image} image-et, majd add hozzá a Külső szolgáltatók rész alatt.", + "closed": "A(z) {name} leállította a BookOrbit által használt szolgáltatást, így azt nem lehet újra hozzáadni. Távolítsd el a mezőszabályaid közül." + }, + "externalProviders": { + "title": "Külső szolgáltatók", + "description": "A BookOrbiton kívül futó metaadat-szolgáltatások, például egy mellette lévő konténer vagy egy hosztolt szolgáltatás. Add hozzá a címe alapján; az engedélyezés után ugyanúgy megjelenik a Keresőben, a Könyvdokkban és a mezőszabályokban, mint bármelyik más forrás.", + "yourProviders": "Saját szolgáltatók", + "emptyWithDirectory": "Még nincs semmi hozzáadva. Válassz egy előre konfigurált szolgáltatót alább, vagy adj hozzá egyet a címe alapján.", + "add": "Szolgáltató hozzáadása", + "empty": "Még nincsenek külső szolgáltatók. Bármilyen szolgáltatás hozzáadható ide, amely támogatja a book-metadata-provider specifikációt.", + "edit": "{name} szerkesztése", + "toggle": "{name} engedélyezése", + "row": "{host} · verzió {version}", + "useInFieldRules": "Használat a mezőszabályokban", + "fieldRulesAdded": "{name} hozzáadva {count, plural, =0 {nincs új mezőszabály; már minden kitölthető szabályban szerepel} one {# mezőszabályhoz} other {# mezőszabályhoz}}.", + "added": "{name} hozzáadva. Kikapcsolva marad, amíg nem engedélyezed.", + "saved": "{name} elmentve.", + "removed": "{name} eltávolítva. A tárolt azonosítók és értékelések megmaradtak.", + "purged": "{name} eltávolítva a tárolt azonosítóival és értékeléseivel együtt.", + "status": { + "active": "Aktív", + "ready": "Kész", + "stale": "Legutóbbi ellenőrzés sikertelen", + "unreachable": "Nem elérhető", + "key_changed": "A kulcs megváltozott", + "incompatible": "Nem kompatibilis", + "authorizationUnreadable": "A fejléc nem olvasható" + }, + "authorizationUnreadableHint": "A mentett hitelesítési fejléc visszafejtése nem sikerült, így ez a szolgáltató kimarad a keresésből. Add meg újra a fejlécet.", + "sheet": { + "createTitle": "Külső szolgáltató hozzáadása", + "description": "Egy HTTP-szolgáltatás, amely támogatja a book-metadata-provider specifikációt. A BookOrbit ettől kéri le a metaadatokat; a szolgáltató kódját soha nem futtatja.", + "identity": "Kulcs {key} · verzió {version}", + "test": "Tesztelés", + "testing": "Tesztelés...", + "remove": "Szolgáltató törlése", + "removeConfirm": "{name} törlése?", + "removeConsequence": "A tárolt azonosítók, értékelések és mezőszabály-bejegyzések megmaradnak, így az újbóli hozzáadás visszaállítja őket.", + "purge": "Törlés az adatokkal együtt", + "purgeConfirm": "{name} törlése az adataival együtt?", + "purgeConsequence": "Törli a hozzá tartozó összes tárolt azonosítót és értékelést. Ez a művelet nem vonható vissza." + }, + "fields": { + "baseUrl": "Cím", + "baseUrlHint": "A szolgáltató alap-URL-címe, például http://provider:8080 az azonos Docker-hálózaton lévő konténerek esetén.", + "authorization": "Hitelesítési fejléc", + "authorizationHint": "Opcionális. Pontosan a megadott formában lesz elküldve, például: „Bearer abc123”. Titkosítva tároljuk, és többé nem jelenik meg.", + "authorizationSaved": "Egy fejléc már el van mentve. Adj meg egy újat a lecseréléséhez.", + "clearAuthorization": "A mentett fejléc eltávolítása", + "allowPrivate": "Privát cím engedélyezése", + "allowPrivateHint": "A saját hálózatodon vagy a BookOrbit melletti konténerben lévő szolgáltatókhoz szükséges. Interneten lévő szolgáltató esetén hagyd kikapcsolva.", + "timeout": "Időtúllépés (másodperc)", + "timeoutHint": "{min} és {max} másodperc között.", + "privacy": "A szolgáltató megkapja a lekérdezett könyvek címeit, szerzőit és ISBN-számait." + }, + "test": { + "ok": "{name} megválaszolva {latency} ms alatt {count, plural, one {# eredménnyel} other {# eredménnyel}}.", + "sample": "Első eredmény: {title}", + "failed": "Teszt sikertelen: {error}" + }, + "errors": { + "privateAddress": "Ez a cím privát hálózaton van. Kapcsold be a Privát címek engedélyezése opciót az ott lévő szolgáltató eléréséhez.", + "unreachable": "A BookOrbit nem érte el a szolgáltatót ezen a címen.", + "unauthorized": "A szolgáltató elutasította a hitelesítési fejlécet.", + "invalidInfo": "Ez a cím válaszolt, de nem tartalmaz használható szolgáltatói adatokat.", + "invalidUrl": "A szolgáltató címét teljes http vagy https URL-ként add meg, hitelesítési adatok nélkül.", + "keyTaken": "Egy ugyanilyen kulccsal rendelkező szolgáltató már be van regisztrálva.", + "keyChanged": "Ez a cím egy másik szolgáltatóhoz tartozik. Add hozzá új szolgáltatóként inkább.", + "notReady": "A szolgáltató engedélyezése előtt futtass le egy sikeres tesztet.", + "authorizationUnreadable": "A mentett hitelesítési fejléc visszafejtése nem sikerült. Add meg újra a szolgáltató engedélyezése előtt.", + "generic": "A szolgáltatóhoz intézett kérés nem sikerült." + } + }, "fieldRules": { "clearAllProviders": "Összes szolgáltató törlése", "clearAll": "Összes törlése", @@ -2044,7 +2158,7 @@ "overwriteBody": "Cserélje ki, valahányszor a szolgáltató rendelkezik adatokkal." }, "summary": "A szolgáltatókat felülről lefelé próbálja ki a rendszer, és az első értéket visszaadó nyer. Az egyesítési stratégia dönti el, hogy az új érték felülírhatja-e a könyvben már meglévőt; a zsánerek új, egyedi értékeket is hozzáfűzhetnek. Állítsd be itt az alapértelmezett értékeket, majd bíráld felül az egyes mezőket könyvtáranként.", - "summaryByMedium": "A szolgáltatók próbálkozása fentről lefelé halad, és az első értékkel rendelkező nyer; az összevonási módban lévő zsánerek és a közösségi értékelések ehelyett minden szolgáltatót kombinálnak. Az összevonási stratégia dönti el, hogy egy érték helyettesítheti-e azt, amivel a könyv már rendelkezik. Az Audible, az AudNexus és a Libro.fm csak a hanganyaggal rendelkező könyvekre válaszol, a hangos EPUB-okat is beleértve, így az élre helyezésük a hangoskönyv-metaadatokat részesíti előnyben anélkül, hogy hozzáérne a csak e-könyv formátumú könyvekhez. A nem megfelelő formájú borítókép csak akkor tölt be egy helyet, ha semmi más nem áll rendelkezésre. Egy könyvtárszintű felülbírálás kicseréli az adott mező teljes szabályát." + "summaryByMedium": "A szolgáltatók lekérdezése fentről lefelé haladva történik, és az első olyan adatforrás nyer, amely rendelkezik értékkel; az összefésülési módban lévő műfajok és a közösségi értékelések ehelyett az összes szolgáltató adatait kombinálják. Az összefésülési stratégia határozza meg, hogy egy újonnan letöltött érték felülírhatja-e azt, amivel a könyv már rendelkezik. Az Audible, az AudNexus és a Libro.fm csak a hanganyagot tartalmazó könyvekre válaszol, beleértve a felolvasós EPUB-okat is, így az élre sorolásuk a hangoskönyvek metaadatait részesíti előnyben anélkül, hogy hozzáérne a csak e-könyvként létező kötetekhez. A nem megfelelő formájú borítóképek csak akkor töltenek be egy helyet, ha semmilyen más kép sem érhető el. A könyvtárszintű felülbírálás az adott mező teljes szabályát helyettesíti." }, "libraryOverrides": { "title": "Könyvtár felülbírálások", @@ -3348,7 +3462,7 @@ "deviceCount": "{count, plural, =0 {nincs eszköz} one {# eszköz} other {# eszköz}}", "credentialsCreatedLabel": "Hitelesítő adatok létrehozva", "setup": "Beállítás", - "pluginServerUrl": "Bővítménykiszolgáló URL-címe", + "pluginServerUrl": "Bővítményszerver URL-címe", "syncUrl": "KOReader-szinkronizálási URL", "syncUrlHint": "Működik a BookOrbit bővítménnyel és a KOReader beépített folyamatszinkronizációjával.", "copied": "Másolva", @@ -3403,6 +3517,12 @@ "syncEnabled": "KOReader-szinkronizálás engedélyezve", "syncDisabled": "KOReader-szinkronizálás letiltva", "toggleSyncFailed": "Nem sikerült be-/kikapcsolni a szinkronizálást", + "pluginLibrary": "Bővítménykönyvtár", + "hideAudioOnlyBooks": "A csak hangoskönyvként elérhető könyvek elrejtése", + "hideAudioOnlyBooksHint": "A KOReader nem tud hangot lejátszani, így a kizárólag audiofájlokat tartalmazó könyvek kimaradnak a bővítmény listáiból, a keresésből és a letöltésekből – ugyanígy az olyan könyvtárak is, amelyek semmi mást nem tartalmaznak. Az e-könyvvel is rendelkező könyvek továbbra is megjelennek.", + "audioOnlyBooksHidden": "A csak hangoskönyvet tartalmazó könyvek elrejtve a bővítményben", + "audioOnlyBooksShown": "A csak hangoskönyvet tartalmazó könyvek megjelenítve a bővítményben", + "toggleAudioOnlyBooksFailed": "A bővítménykönyvtár beállításának frissítése nem sikerült", "syncUrlCopied": "Szinkronizálási URL a vágólapra másolva", "syncUrlCopyFailed": "A szinkronizálási URL másolása sikertelen", "statusRefreshed": "Szinkronizálási állapot frissítve", @@ -3453,7 +3573,10 @@ "reviewDismissed": "A könyv eltávolítva az ellenőrzendők közül", "reviewDismissFailed": "A könyv eltávolítása az ellenőrzendők közül sikertelen", "reviewAllDismissed": "{count, plural, =0 {Nincs könyv eltávolítva az ellenőrzendők közül} one {# könyv eltávolítva az ellenőrzendők közül} other {# könyv eltávolítva az ellenőrzendők közül}}", - "reviewDismissAllFailed": "Az összes könyv eltávolítása az ellenőrzendők közül sikertelen" + "reviewDismissAllFailed": "Az összes könyv eltávolítása az ellenőrzendők közül sikertelen", + "suggestedLinked": "{count, plural, one {# ajánlott könyv összekapcsolva} other {# ajánlott könyv összekapcsolva}}", + "suggestedPartlyLinked": "{linked, plural, one {# ajánlott könyv összekapcsolva.} other {# ajánlott könyv összekapcsolva.}} {failed, plural, one {# összekapcsolása nem sikerült, így a listában marad.} other {# összekapcsolása nem sikerült, így a listában marad.}}", + "suggestedLinkFailed": "Az ajánlott könyvek összekapcsolása sikertelen" }, "modal": { "linkTitle": "KOReader könyv összekapcsolása", @@ -3496,7 +3619,7 @@ "enterMinChars": "Írj be legalább 2 karaktert.", "searching": "Keresés...", "noBooksFound": "Nem találhatók könyvek.", - "untitledBook": "Névtelen könyv", + "untitledBook": "Cím nélküli könyv", "selected": "Kiválasztva", "select": "Kiválaszt", "loadMore": "Több betöltése", @@ -3514,7 +3637,21 @@ "manualUnlinkConfirmBody": "Távolítsd el a(z) {title} kézi összekapcsolását, és tedd vissza ezt a könyvet az ellenőrzendők listájára. A jövőbeli szinkronizálások automatikus párosítást fognak használni, ha létezik ilyen. A már szinkronizált statisztikák a jelenlegi BookOrbit könyvön maradnak.", "reviewDismissConfirmBody": "Ez eltávolítja a könyvet az ellenőrzendő könyvek közül. Az automatikus párosítás és a meglévő szinkronizálási adatok megmaradnak. Ha egy eszköz találat nélkül jelenti újra ezt a hasht, a könyv újra megjelenhet.", "reviewDismissAllConfirmTitle": "{count, plural, =0 {Nincs ellenőrzendő könyv} one {Elveted mind a(z) # ellenőrzendő könyvet?} other {Elveted mind a(z) # ellenőrzendő könyvet?}}", - "reviewDismissAllConfirmBody": "Ez kiüríti a teljes ellenőrzendő könyvek listáját, beleértve a többi oldalon szereplő elemeket is. Az automatikus párosítás és a meglévő szinkronizálási adatok megmaradnak. Ha egy eszköz találat nélkül jelenti újra a hasht, a könyv újra megjelenhet." + "reviewDismissAllConfirmBody": "Ez kiüríti a teljes ellenőrzendő könyvek listáját, beleértve a többi oldalon szereplő elemeket is. Az automatikus párosítás és a meglévő szinkronizálási adatok megmaradnak. Ha egy eszköz találat nélkül jelenti újra a hasht, a könyv újra megjelenhet.", + "copyNote": "Ez a KOReader-példány egy másik fájl, mint ami a BookOrbitban van. Az olvasási állapot, az értékelés, az olvasási idő és a haladás (százalékban) szinkronizálódik. A kiemelések és a könyvjelzők viszont nem. Mindezek szinkronizálásához töltsd le a könyvet a BookOrbitból a KOReaderre.", + "differentCopyHint": "A BookOrbitban lévőtől eltérő fájl: a haladás százalékban szinkronizálódik, a kiemelések és könyvjelzők viszont nem.", + "suggestedMatch": "Ajánlott találat", + "possibleMatches": "{count, plural, one {# lehetséges találat} other {# lehetséges találat}}", + "morePossibleMatches": "{count, plural, one {Több mint # lehetséges találat} other {Több mint # lehetséges találat}}", + "possibleMatchesHint": "A könyvtáradban lévő, azonos című és szerzőjű könyvek. Az összekapcsolás előtt ellenőrizd a kiadást.", + "reviewMatch": "Találat ellenőrzése", + "chooseMatch": "Találat kiválasztása", + "linkSuggested": "Ajánlottak összekapcsolása ({count})", + "bulkLinkTitle": "{count, plural, one {# ajánlott könyv összekapcsolása?} other {# ajánlott könyv összekapcsolása?}}", + "bulkLinkDescription": "Minden alábbi KOReader-könyv címe és szerzője pontosan egy, a könyvtáradban lévő könyvvel egyezik meg. Az összekapcsolás előtt ellenőrizd a listát.", + "bulkLinkConfirm": "{count, plural, one {# könyv összekapcsolása} other {# könyv összekapcsolása}}", + "bulkLinkListLabel": "Ajánlott összekapcsolások", + "openCandidate": "{title} megnyitása új fülön" }, "remove": "Eltávolítás", "removing": "Eltávolítás...", @@ -3544,8 +3681,8 @@ "subtitle": "Csatlakoztass OPDS-kompatibilis olvasóalkalmazásokat, például a KOReader-t vagy a Thorium Reader-t a könyvtáradhoz.", "copy": "Másolás", "loadFailed": "Betöltés sikertelen", - "server": "Kiszolgáló", - "catalogServer": "OPDS katalóguskiszolgáló", + "server": "Szerver", + "catalogServer": "OPDS katalógusszerver", "catalogServerHint": "Engedélyezd az OPDS klienseknek a könyvek böngészését és letöltését", "endpoint": "Végpont", "accounts": "OPDS-fiókok", @@ -4177,7 +4314,7 @@ "library": "Könyvtár", "devices": "Eszközök", "accounts": "Fiókok", - "server": "Kiszolgáló" + "server": "Szerver" }, "descriptions": { "profile": "A neved, email címed, jelszavad és aktív munkameneteid.", @@ -4764,6 +4901,10 @@ "clearAll": "Törlés", "permissionsHint": "Amit ez a fiók tehet. {granted}/{total} engedélyezett.", "groupLegend": "{group}: {granted}/{total} engedélyezett", + "permissionNotes": { + "editMetadataNowhere": "Még nincs hatása: a könyvtáron a Szerkesztő vagy Tulajdonos szerepkörre is szükség van, amely a Beállítások > Könyvtárak > Hozzáférés menüpontban adható meg.", + "editMetadataExcept": "A(z) {libraries} könyvtárakban nem, ahol ez a fiók csak Olvasó. Állítsd be a Szerkesztő vagy Tulajdonos szerepkört a Beállítások > Könyvtárak > Hozzáférés menüpontban." + }, "presets": { "label": "Engedély előbeállítás", "none": "Egyik sem", @@ -5066,7 +5207,8 @@ "bulkRestored": "{count, plural, =0 {Nincs visszaállított annotáció} one {# annotáció visszaállítva} other {# annotáció visszaállítva}}", "bulkRecolored": "{count, plural, =0 {Nincs átszínezett annotáció} one {# annotáció átszínezve} other {# annotáció átszínezve}}", "bulkRestyled": "{count, plural, =0 {Nincs újraformázott annotáció} one {# annotáció újraformázva} other {# annotáció újraformázva}}", - "noteSaved": "Megjegyzés elmentve" + "noteSaved": "Megjegyzés elmentve", + "purgePendingDeviceSync": "Egy szinkronizált eszköznek még el kell távolítania ezt az annotációt. Szinkronizáld azt az eszközt, majd töröld végleg." }, "railTitle": "{marks} jelölés · {books} könyv", "lastTwelveMonths": "Utolsó 12 hónap", @@ -5111,10 +5253,16 @@ }, "activitySummary": "{count, plural, one {# kiemelés {from} és {to} között} other {# kiemelés {from} és {to} között}}", "book": "Könyv", - "needsReview": "Felülvizsgálat szükséges" + "needsReview": "Felülvizsgálat szükséges", + "trashToggle": "{count, plural, one {Kuka, # annotáció} other {Kuka, # annotáció}}", + "purgeDialog": { + "title": "Végleges törlés?", + "description": "Ez az annotáció és a hozzá tartozó megjegyzés véglegesen törlődik. A kukából nem állítható vissza." + } }, "sources": { "web": "Web", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -5253,6 +5401,7 @@ "BookRequest": "Könyvkérés", "DownloadClient": "Letöltőkliens", "RequestIndexer": "Indexelő", + "MetadataHttpProvider": "Metaadat-szolgáltató", "Author": "Szerző", "AppSettings": "Alkalmazás beállításai", "Genre": "Zsáner", @@ -5311,6 +5460,7 @@ "LibraryWriteMetadataToFiles": "Metaadatok fájlokba írása", "LibraryBulkRename": "Könyvtárfájlok átnevezése", "LibraryRecomputeAddedAt": "Hozzáadási dátum újraszámítása", + "LibraryReapplyRegexMetadata": "Útvonalszabályok alkalmazása a meglévő könyvekre", "BookUpload": "Könyv feltöltése", "BookMetadataUpdate": "Könyv metaadatainak frissítése", "BookMetadataLocksUpdate": "Metaadat-zárolások frissítése", @@ -5354,6 +5504,9 @@ "RequestIndexerPluginInspect": "Indexelőbővítmény ellenőrizve", "RequestIndexerPluginInstall": "Indexelőbővítmény telepítve", "RequestIndexerPluginRemove": "Indexelőbővítmény törölve", + "MetadataHttpProviderCreate": "Metaadat-szolgáltató hozzáadva", + "MetadataHttpProviderUpdate": "Metaadat-szolgáltató frissítve", + "MetadataHttpProviderDelete": "Metaadat-szolgáltató eltávolítva", "AuthorUpdate": "Szerző frissítése", "AuthorDelete": "Szerző törlése", "AuthorMerge": "Szerzők egyesítése", @@ -5696,6 +5849,12 @@ "errors": { "noToken": "Nincs token megadva" } + }, + "reconnect": { + "heading": "Várakozás a szerverre", + "description": "A BookOrbit jelenleg nem éri el a szervert. Ez az oldal magától folytatódik, amint a szerver válaszol.", + "retry": "Újrapróbálás most", + "retrying": "Újrapróbálás..." } }, "author": { @@ -5736,7 +5895,10 @@ "died": "Meghalt", "website": "Weboldal", "genres": "Zsánerek", - "influences": "Hatások" + "influences": "Hatások", + "findMatch": "A megfelelő szerző kiválasztása", + "source": "Forrás", + "pinned": "Rögzítve" }, "list": { "title": "Szerzők", @@ -5808,7 +5970,17 @@ "removing": "Eltávolítás...", "removeImage": "Kép eltávolítása", "imageHint": "PNG/JPEG/WEBP/GIF/BMP, legfeljebb {size} MB", - "saving": "Mentés..." + "saving": "Mentés...", + "website": "Weboldal", + "websitePlaceholder": "https://example.com", + "websiteInvalid": "Adj meg egy webcímet, például: example.com.", + "born": "Született", + "died": "Meghalt", + "lifeDatePlaceholder": "1965 vagy 1965-03-14", + "lifeDateHint": "A született és meghalt mezők értéke egy évszám vagy egy teljes dátum év-hónap-nap formátumban.", + "lifeDateInvalid": "Adj meg egy évszámot, vagy egy valós dátumot év-hónap-nap formátumban.", + "genres": "Zsánerek", + "influences": "Hatások" }, "merge": { "searchPlaceholder": "Keress szerzőket az ebbe a szerzőbe való egyesítéshez", @@ -5873,6 +6045,56 @@ "actionsFor": "Műveletek ehhez: {name}", "refreshing": "{name} metaadatainak frissítése", "deleting": "{name} törlése" + }, + "match": { + "title": "A megfelelő szerző kiválasztása", + "description": "Válaszd ki a(z) {name} név mögötti személyt névkereséssel, vagy egy beillesztett Goodreads- vagy Audible-link segítségével.", + "search": { + "label": "Név", + "submit": "Keresés" + }, + "reference": { + "label": "Goodreads- vagy Audible-link vagy azonosító", + "placeholder": "goodreads.com/author/show/12345", + "submit": "Lekérés", + "unrecognised": "Illessz be egy Goodreads- vagy Audible-szerzőlinket, egy Goodreads-azonosítót vagy egy Audible ASIN-kódot.", + "notFound": "Nem található szerző ezzel az azonosítóval.", + "failed": "Az adatok lekérése nem sikerült. Próbáld újra egy pillanat múlva." + }, + "results": { + "label": "Egyezések", + "count": "{count, plural, =0 {Nincs találat} one {# találat} other {# találat}}", + "searching": "Keresés...", + "empty": "Nem található szerző. Próbálkozz más írásmóddal, vagy illessz be egy hivatkozást.", + "failed": "A keresés nem sikerült. Próbáld újra egy pillanat múlva.", + "current": "Jelenlegi", + "born": "Született {year}", + "lifeSpan": "{born}–{died}" + }, + "detail": { + "empty": "Válassz ki egy találatot, hogy megtekintsd, ki az.", + "loading": "Részletek betöltése...", + "noBio": "Nincs életrajz.", + "viewOn": "Megtekintés itt: {provider}", + "back": "Vissza a találatokhoz", + "use": "Ezen szerző használata", + "unpin": "Rögzítés feloldása", + "pinnedHint": "Rögzítve: a frissítések név alapú keresés helyett az azonosító alapján kérik le a szerző adatait.", + "currentHint": "A szerző most már ehhez a személyhez van rendelve. Használd a rögzítést a találat fixálásához." + }, + "confirm": { + "title": "Ezt a(z) {provider}-szerzőt használod?", + "description": "Az életrajz, a fotó, az évszámok, a weboldal, a műfajok és a hatások lecserélődnek ezen szerző adataira, a későbbi frissítések pedig ehhez a személyhez igazodnak.", + "confirm": "Ezen szerző használata" + }, + "toast": { + "pinned": "Mostantól párosítva a(z) {name} névvel itt: {provider}", + "unpinned": "Rögzítés feloldva. A frissítések ismét név alapján keresnek.", + "notFound": "A(z) {provider} szolgáltatónál már nem található szerző ezzel az azonosítóval.", + "providerDown": "A(z) {provider} nem érhető el. Próbáld újra egy pillanat múlva.", + "failed": "A szerző használata nem sikerült.", + "unpinFailed": "A találat rögzítésének feloldása nem sikerült." + } } }, "book": { @@ -5921,7 +6143,7 @@ "opus": "Opus-hangfájl", "ogg": "OGG-hangfájl", "flac": "FLAC-hangfájl", - "readAlong": "Hanggal rendelkező EPUB", + "readAlong": "Felolvasós EPUB", "primary": "Elsődleges formátum" }, "actions": { @@ -5945,7 +6167,7 @@ "sendViaEmail": "Küldés emailben", "rate": "{star} csillagos értékelés", "openAs": "Megnyitás {format} formátumban", - "openReadAlong": "Hanggal rendelkező EPUB megnyitása" + "openReadAlong": "Felolvasós EPUB megnyitása" }, "refreshMetadata": { "success": "Metaadatok frissítve", @@ -6080,6 +6302,7 @@ "before": "előtte", "after": "utána", "withinLast": "az elmúlt időszakban", + "moreThanAgo": "több mint", "isMissing": "hiányzik", "isPresent": "jelen van", "isUnread": "olvasatlan", @@ -6102,6 +6325,7 @@ "withinLastPlaceholder": "pl. 7", "unit": { "days": "nap", + "daysAgo": "napja", "weeks": "hét", "months": "hónap", "megabytes": "MB" @@ -6126,7 +6350,8 @@ }, "deleteDialog": { "title": "Könyv törlése?", - "description": "Ez véglegesen törli a könyvet és annak összes metaadatát, fájlját, olvasási haladását, valamint a könyvjelzőit. Ez a művelet nem vonható vissza." + "description": "Ez véglegesen törli a könyvet és annak összes metaadatát, fájlját, olvasási haladását, valamint a könyvjelzőit. Ez a művelet nem vonható vissza.", + "keepsHistory": "A befejezett olvasások megmaradnak az egyes olvasók előzményeiben, a könyv címe és szerzője alatt." }, "bulkEdit": { "title": "{count, plural, =0 {Metaadatok szerkesztése - # könyv} one {Metaadatok szerkesztése - # könyv} other {Metaadatok szerkesztése - # könyv}}", @@ -6287,6 +6512,7 @@ "details": "Részletek", "editMetadata": "Metaadatok szerkesztése", "files": "Fájlok", + "chapters": "Fejezetek", "readingLog": "Olvasási napló", "highlights": "Kiemelések" }, @@ -6428,6 +6654,20 @@ }, "editCover": "Borító szerkesztése", "viewCover": "Nagyobb borító megtekintése", + "coverStack": { + "show": { + "ebook": "Könyvborító megjelenítése", + "audio": "Hangoskönyv-borító megjelenítése" + }, + "front": { + "ebook": "Könyvborító megjelenítése", + "audio": "Hangoskönyv-borító megjelenítése" + } + }, + "readAloudInvite": { + "chip": "Felolvasás", + "title": "Felolvasás létrehozása EPUB-ból és hangoskönyvből" + }, "finished": "Kész", "resetFileProgress": "Fájlhaladás visszaállítása", "resetEditionProgress": "A(z) {format} haladásának alaphelyzetbe állítása", @@ -6445,14 +6685,22 @@ "unavailable": "Nem elérhető", "epubCopiesOnly": "Csak EPUB példányok" }, + "chip": { + "enabled": "Szinkronizált", + "partial": "Részben szinkronizált", + "disabled": "Szinkronizálás ki", + "unavailable": "Szinkronizálási probléma" + }, + "chipAria": "Felolvasási haladás szinkronizálása: {status}", + "noneYet": "Még nincs felolvasási EPUB. Hozz létre egyet a hangoskönyv és a szöveg közötti pozíciók szinkronizálásához.", "enabledDescription": "A hangoskönyv-, webes olvasó-, Kobo- és KOReader-pozíciók szinkronban maradnak.", "disabledDescription": "Mindegyik formátum megőrzi a saját olvasási pozícióját.", "epubCopiesDescription": "A webes olvasó-, Kobo- és KOReader-pozíciók szinkronban maradnak az EPUB-példányok között. Adj hozzá egyező hangoskönyvfájlokat a hangoskönyv szinkronizálásához.", "reason": { - "no_media_overlay_epub": "Médiaátfedésekkel rendelkező, hanggal rendelkező EPUB szükséges.", + "no_media_overlay_epub": "Médiaátfedésekkel rendelkező, felolvasós EPUB szükséges.", "no_audio_files": "Egyező, önálló hangoskönyvfájlok szükségesek.", "missing_duration": "Hiányos hangidőtartam-metaadatok.", - "durationMismatch": "Az időtartamok nem egyeznek kellő pontossággal: hangoskönyv: {audio}, hanggal rendelkező EPUB: {overlay}." + "durationMismatch": "Az időtartamok nem egyeznek kellő pontossággal: hangoskönyv: {audio}, felolvasós EPUB: {overlay}." }, "enable": "Engedélyezés", "disable": "Letiltás", @@ -6606,6 +6854,8 @@ "durationLabel": "Időtartam (s)", "abridgedLabel": "Rövidített", "providerIds": "Szolgáltatói azonosítók", + "externalProviderUnavailable": "A(z) {provider} már nincs regisztrálva, így ez az azonosító megmaradt, de nincs használatban", + "clearExternalProviderId": "A(z) {provider} azonosító törlése", "comicDetails": "Képregény részletei", "comicIssueNumberLabel": "Kiadás száma", "comicVolumeLabel": "Kötet", @@ -6819,7 +7069,7 @@ }, "compare": { "label": "Összehasonlítás", - "backToMatches": "Vissza az egyezésekhez", + "backToMatches": "Vissza a találatokhoz", "previous": "Előző eredmény", "next": "Következő eredmény", "position": "{index}/{total}", @@ -6965,6 +7215,292 @@ }, "files": { "title": "Könyvfájlok", + "readAloud": { + "action": "Felolvasás létrehozása", + "loadFailed": "A felolvasás elérhetőségének ellenőrzése nem sikerült.", + "loadFailedAgain": "{count, plural, one {A felolvasás elérhetőségének ellenőrzése # próbálkozás után sem sikerült.} other {A felolvasás elérhetőségének ellenőrzése # próbálkozás után sem sikerült.}}", + "checkAgain": "Ellenőrzés újra", + "checking": "Ellenőrzés…", + "reasons": { + "worker_unavailable": "A felolvasási háttérfolyamat jelenleg nem elérhető.", + "worker_incompatible": "A felolvasási háttérfolyamat frissítése szükséges, hogy működjön ezzel a szerverrel.", + "book_missing": "Állítsd vissza a könyv hiányzó fájljait a felolvasás létrehozásához.", + "no_epub": "Adj hozzá egy sima EPUB-fájlt ehhez a könyvhöz a felolvasás létrehozásához.", + "no_epub_existing": "Ez a könyv már rendelkezik felolvasással, de nincs sima EPUB-fájl az újraépítéséhez.", + "too_many_audio_files": "Ez a hangoskönyv több fájlra van bontva, mint amennyiből felolvasás hozható létre.", + "epub_not_allowed": "Ez a könyvtár nem fogad el EPUB-fájlokat, így felolvasás sem adható hozzá.", + "library_not_mounted": "A felolvasási háttérfolyamat nem éri el ennek a könyvtárnak a mappáját.", + "job_active": "Ehhez a könyvhöz már folyamatban van a felolvasás létrehozása.", + "unknown": "Ehhez a könyvhöz jelenleg nem hozható létre felolvasás." + }, + "dialog": { + "title": "Felolvasás létrehozása", + "description": "Összefésüli a narrációt az e-könyv szövegével, és hozzáad egy, a hanggal szinkronban kiemelő EPUB-fájlt.", + "sources": "Források", + "ebook": "E-könyv", + "ebookHint": "Válaszd ki a narrációnak megfelelő sima EPUB-fájlt.", + "existing": { + "title": "{count, plural, one {Ez a könyv már rendelkezik felolvasással} other {Ez a könyv már rendelkezik # felolvasással}}", + "replace": "{filename} lecserélése", + "keep": "{count, plural, one {Mindkettő megtartása} other {Mindegyik megtartása}}", + "keepHint": "Az új felolvasás egy másik fájlként adódik hozzá.", + "replaceHint": "A régi fájl cseréje csak azután történik meg, hogy az új sikeresen átment az ellenőrzéseken, az olvasási pozíciók pedig átvitelre kerülnek.", + "replaceNotPermitted": "A felolvasás lecseréléséhez könyvtörlési jogosultság szükséges, így az új egy másik fájlként adódik hozzá.", + "generated": "A BookOrbit által készítve", + "imported": "Importálva" + }, + "audio": "Hangoskönyv", + "audioSummary": "{count, plural, one {# sáv} other {# sáv}}, {order, select, book {könyv szerinti sorrendben} other {saját sorrendedben}}", + "audioSummaryWithDuration": "{count, plural, one {# sáv} other {# sáv}}, {duration}, {order, select, book {könyv szerinti sorrendben} other {saját sorrendedben}}", + "audioSkipped": "{count, plural, one {# sáv kihagyva} other {# sáv kihagyva}}", + "changeOrder": "Sorrend módosítása", + "restoreOrder": "Könyv szerinti sorrend visszaállítása", + "trackList": "Sávok a lejátszási sorrendben", + "trackLabel": "Sáv {position}/{total}: {name}", + "moveUp": "{name} mozgatása felfelé", + "moveDown": "{name} mozgatása lefelé", + "moved": "{name} áthelyezve, pozíció {position}/{total}", + "skipped": "Átugorva", + "noTracks": "Válassz ki legalább egy sávot.", + "language": "Narráció nyelve", + "chooseLanguage": "Válassz egy nyelvet", + "languageUnsupported": "A beszédmodell nem támogatja a(z) {language} nyelvet.", + "languageFromBook": "A könyv adatlapjáról.", + "languageIsDefault": "Az alapértelmezett nyelved.", + "languageSavedAsDefault": "Elmentve saját alapértelmezett nyelvként.", + "setDefaultLanguage": "Beállítás alapértelmezettként", + "defaultLanguageFailed": "A saját alapértelmezett nyelved elmentése nem sikerült. Próbáld újra.", + "granularity": "Kiemelés", + "sentence": "Mondat", + "sentenceHint": "Egyszerre egy mondatot emel ki. Ajánlott.", + "word": "Szó", + "wordHint": "Minden szót külön kiemel. Hosszabb ideig tart, és nagyobb fájlt eredményez.", + "experimental": "Kísérleti", + "model": "Beszédmodell: {model}", + "estimatedSize": "Becsült méret: {size}", + "lowDiskLabel": "Kevés a szabad lemezterület.", + "lowDisk": "Ehhez körülbelül {needed} munkaterületre lenne szükség a háttérfolyamaton, amelyen jelenleg {free} szabad hely van.", + "processingNote": "A háttérben fut. A hosszú hangoskönyvek feldolgozása órákig is eltarthat, és egy-egy nyelv első futtatásakor letölti a hozzá tartozó modellt.", + "start": "Indít", + "starting": "Indítás…" + }, + "devices": { + "cpu": "A CPU-n fut", + "mlx": "Apple Silicon (MLX) alapon fut", + "cuda": "NVIDIA GPU-n (CUDA) fut", + "webgpu": "GPU-n (WebGPU) fut", + "other": "{device} eszközön fut" + }, + "job": { + "heading": "Felolvasás", + "startedBy": "Indította: {name}", + "startedByUnknown": "Egy másik felhasználó indította", + "dismiss": "Elvetés", + "details": "Részletek", + "queuedTitle": "Indításra vár", + "queueAhead": "{count, plural, =0 {A következő a sorban} one {# feladat van előtte} other {# feladat van előtte}}", + "elapsed": "Futási idő: {duration}", + "justStarted": "Épp most indult", + "firstRunForLanguage": "Első futtatás ezen a nyelven", + "stoppingTitle": "Leállítás…", + "stoppingDescription": "Az aktuális lépés befejezése után leáll. Semmi sem adódik hozzá ehhez a könyvhöz.", + "reviewTitle": "Ellenőrzésre kész", + "reviewDescription": "A szöveg {percent}-a egyezik a narrációval. A hozzáadás előtt ellenőrizd a fejezeteket.", + "reviewDescriptionPlain": "A könyvhöz való hozzáadás előtt ellenőrizd a fejezeteket.", + "reviewExpires": "Automatikusan elvetésre kerül ekkor: {when}, hacsak át nem nézed.", + "completeTitle": "A felolvasás elkészült", + "completeWarningsTitle": "A felolvasás elkészült, figyelmeztetésekkel", + "completeAdded": "Új EPUB-ként hozzáadva ehhez a könyvhöz.", + "completeReplaced": "A korábbi felolvasás lecserélve. Az olvasási pozíciók átvitelre kerültek.", + "matchedSentences": "{matched}/{total} {count, plural, one {mondat} other {mondat}} egyezik a narrációval", + "audioUsed": "A hanganyag {percent}-a felhasználva", + "outsideNarration": "Nem szerepel a narrációban, így hang nélkül maradt: {chapters}.", + "outsideMore": "{count, plural, one {# további fejezet} other {# további fejezet}}", + "chaptersHeading": "Fejezetek", + "activityHeading": "Tevékenység", + "failedTitle": "A felolvasás sikertelen", + "retryUntil": "Az újrapróbálkozás a legutóbb befejezett lépéstől folytatódik eddig: {date}.", + "cancelledTitle": "Létrehozás megszakítva", + "discardedTitle": "Kimenet elvetve", + "nothingAdded": "Semmi sem lett hozzáadva ehhez a könyvhöz.", + "expiredDescription": "Nem lett ellenőrizve 14 napon belül, így semmi sem lett hozzáadva ehhez a könyvhöz.", + "progress": "Felolvasás állapota", + "steps": "Lépések", + "stepDone": "{step}, kész", + "stepCurrent": "{step}, folyamatban", + "stepUpcoming": "{step}, nincs elkezdve", + "openReadAlong": "Felolvasás megnyitása", + "showFile": "Fájl megjelenítése", + "retry": "Újra", + "startOver": "Újrakezdés", + "cancel": "Létrehozás megszakítása", + "cancelPrompt": "Létrehozás megszakítása?", + "keepRunning": "Futtatás tovább", + "warnings": "Figyelmeztetések", + "live": "Felolvasás: {status}" + }, + "stageDetail": { + "file": "{current}/{total} fájl", + "track": "{current}/{total} sáv", + "chapter": "{current}/{total} fejezet", + "step": "{current}/{total} lépés" + }, + "stages": { + "queued": "Indításra vár", + "preparing_audio": "Hanganyag előkészítése", + "downloading_model": "Beszédmodell letöltése", + "generating_emissions": "Narráció meghallgatása", + "marking_up_ebook": "E-könyv szövegének megjelölése", + "aligning": "Szöveg párosítása a narrációval", + "validating": "Eredmény ellenőrzése", + "awaiting_review": "Ellenőrzésre vár", + "publishing": "Felolvasás hozzáadása a könyvhöz", + "completed": "Kész", + "working": "Folyamatban" + }, + "steps": { + "audio": "Hang", + "speech": "Beszéd", + "text": "Szöveg", + "align": "Igazítás", + "check": "Ellenőrzés", + "publish": "Közzététel" + }, + "review": { + "heading": "Fejezetek", + "summary": "{count, plural, one {# fejezet} other {# fejezet}}, {attention, plural, =0 {egyik sem igényel átnézést} one {# átnézést igényel} other {# átnézést igényel}}", + "chapter": "Fejezet", + "part": "Rész", + "statusLabel": "Állapot", + "status": { + "aligned": "Igazított", + "notFound": "Nem található a hanganyagban", + "tooShort": "Túl rövid a párosításhoz", + "excluded": "Kizárva", + "audioOnly": "Csak hang", + "outside": "Nincs a narrációban", + "unknown": "Ismeretlen" + }, + "matched": "Párosítva", + "matchedValue": "{percent} párosítva", + "zones": { + "front": "Bevezető részek", + "body": "Törzs", + "back": "Záró részek" + }, + "include": "{title} belefoglalása", + "showText": "Szöveg megjelenítése innen: {title}", + "hideText": "Szöveg elrejtése innen: {title}", + "preview": "Előnézet", + "firstMatch": "Első találat", + "lastMatch": "Utolsó találat", + "noText": "Ehhez a fejezethez nincs megjeleníthető szöveg.", + "noReport": "Ehhez a feladathoz nem maradt meg fejezetszintű jelentés. Futtasd le újra, hogy láthass egyet.", + "loading": "Fejezetek betöltése…", + "loadFailed": "A fejezetszintű jelentés betöltése sikertelen.", + "tryAgain": "Próbáld újra", + "pending": "{count, plural, one {# módosítás még nincs alkalmazva.} other {# módosítás még nincs alkalmazva.}} Az újraszinkronizálás kizárólag a párosítási lépést futtatja le újra.", + "resync": "Újraszinkronizálás", + "publishAnyway": "Közzététel mindenképp", + "discard": "Elvetés", + "discardPrompt": "Elveted ezt a kimenetet?", + "keep": "Megtartás" + }, + "log": { + "heading": "Tevékenység", + "empty": "Még nincs tevékenység.", + "loading": "Tevékenység betöltése…", + "loadFailed": "A tevékenységnapló betöltése sikertelen.", + "tryAgain": "Próbáld újra", + "warn": "Figyelmeztetés", + "error": "Hiba", + "other": "Háttérfolyamat-tevékenység", + "events": { + "job_created": "Feladat létrehozva", + "claimed": "Átadva a háttérfolyamatnak", + "job_accepted": "A háttérfolyamat elfogadta a feladatot", + "disk_checked": "Elegendő szabad hely van a háttérfolyamaton", + "disk_check_failed": "Nincs elegendő szabad hely a háttérfolyamaton", + "stage_started": "Elindítva", + "stage_finished": "Befejezési idő: {duration}", + "stage_finished_plain": "Befejezve", + "stage_skipped": "Korábbi munka újrafelhasználva", + "stage_failed": "Ez a lépés sikertelen", + "model_download_started": "A beszédmodell letöltése ehhez a nyelvhez", + "model_download_finished": "A beszédmodell letöltve", + "emissions_cached": "Korábbi beszéd-elemzés felhasználva", + "audio_reencoded_cbr": "Változó bitrátájú MP3 konvertálva a pontos időzítés érdekében", + "stalign_warning": "Az igazító figyelmeztetést jelzett", + "waiting_for_worker": "Várakozás a háttérfolyamat válaszára", + "worker_reachable_again": "A háttérfolyamat újra válaszol", + "worker_lost_job": "A háttérfolyamat újraindult; folytatás a korábbi munkából", + "requeued": "Rövidesen újra megpróbálja", + "recovered": "Folytatás szerverújraindítás után", + "output_validated": "Eredmény ellenőrizve", + "needs_review": "Átnézendő: a szöveg egy része nem egyezik a hanganyaggal", + "publish_requested": "Hozzáadás a könyvhöz", + "published": "Hozzáadva a könyvhöz", + "file_added": "Elmentve új fájlként", + "file_replaced": "A meglévő felolvasás lecserélve", + "file_already_attached": "Ez a fájl már megvolt a könyvnél", + "replace_target_missing": "A lecserélendő felolvasás eltűnt, így új fájl lett hozzáadva", + "replace_not_permitted": "A felolvasás lecserélése már nem volt engedélyezett, így új fájl lett hozzáadva", + "job_completed": "A háttérfolyamat befejezte a munkát", + "cancel_requested": "Megszakítás kérve", + "runner_killed": "A háttérfolyamat leállítva", + "job_cancelled": "A háttérfolyamat leállt", + "cancelled": "Megszakítva", + "discarded": "Elvetve az ellenőrzés során", + "job_failed": "A háttérfolyamat hibát jelzett", + "retry_requested": "Újrapróbálkozás kérve", + "resync_requested": "Újraszinkronizálás kérve", + "review_reminder_sent": "Emlékeztető elküldve: az ellenőrzési határidő hamarosan lejár", + "review_expired": "14 nap után, ellenőrzés hiányában elvetve" + } + }, + "warnings": { + "unaligned_tracks": "Egy vagy több hangsáv igazítása nem sikerült.", + "unmatched_text": "Az e-könyv szövegének jelentős része nem lett párosítva a narrációval.", + "interpolated_text": "Néhány szövegidőzítés becsléssel készült a biztos találatok között.", + "dropped_text": "Az e-könyv szövegének egy része kimaradt a szinkronizált sorozatból." + }, + "errors": { + "create": "A felolvasás elindítása nem sikerült. Próbáld újra.", + "createInvalid": "Néhány kijelölt fájl már nincs ennél a könyvnél. Ellenőrizd a kijelölést, és próbáld újra.", + "createConflict": "Ehhez a könyvhöz már folyamatban van egy másik felolvasás létrehozása.", + "createUnavailable": "A felolvasási háttérfolyamat nem elérhető. Próbáld újra később.", + "forbidden": "Nincs jogosultságod a művelet végrehajtásához.", + "gone": "Ez a feladat már nem létezik.", + "conflict": "Ez a feladat már továbblépett. Most az aktuális állapota látható.", + "cancel": "A feladat megszakítása nem sikerült. Próbáld újra.", + "publish": "A felolvasás hozzáadása nem sikerült ehhez a könyvhöz. Próbáld újra.", + "retry": "A feladat újrapróbálása nem sikerült. Próbáld újra.", + "resync": "Az újraszinkronizálás elindítása nem sikerült. Próbáld újra.", + "dismiss": "A kártya bezárása nem sikerült. Próbáld újra.", + "job": { + "worker_unavailable": "A felolvasási háttérfolyamat nem érhető el.", + "worker_incompatible": "A felolvasási háttérfolyamat frissítése szükséges, hogy működjön ezzel a szerverrel.", + "worker_crashed": "A felolvasási háttérfolyamat váratlanul leállt.", + "library_not_mounted": "A felolvasási háttérfolyamat nem éri el ennek a könyvtárnak a mappáját.", + "source_missing": "Egy kijelölt fájl már nem érhető el.", + "source_changed": "Egy kijelölt fájl módosult a feladat elindulása után.", + "invalid_source": "A kijelölt EPUB vagy hangoskönyv beolvasása nem sikerült.", + "unsupported_language": "A beszédmodell nem támogatja a kijelölt nyelvet.", + "insufficient_storage": "Nincs elég szabad lemezterület a befejezéshez.", + "audio_processing_failed": "A hangoskönyv előkészítése nem sikerült.", + "model_download_failed": "A beszédmodell letöltése nem sikerült.", + "inference_failed": "A beszéd-felismerés nem sikerült a narráció elemzése közben.", + "markup_failed": "Az e-könyv szövegének előkészítése nem sikerült a párosításhoz.", + "alignment_failed": "A szöveg párosítása nem sikerült a narrációval.", + "invalid_output": "A generált EPUB ellenőrzése nem sikerült.", + "publication_failed": "A generált EPUB hozzáadása nem sikerült ehhez a könyvhöz.", + "review_expired": "Nem lett ellenőrizve 14 napon belül.", + "discarded": "A felolvasás elvetve az ellenőrzés során.", + "cancelled": "A feladat meg lett szakítva.", + "unknown": "Hiba történt a felolvasás létrehozása során." + } + } + }, "stats": { "files": "Fájlok", "total": "Összesen", @@ -6984,12 +7520,12 @@ "editMetadata": "Metaadatok szerkesztése", "showAllTracks": "Mind megjelenítése", "collapseTracks": "Összecsuk", - "moreTracks": "{count, plural, one {# további fejezet} other {# további fejezet}}", - "tracksRolled": "{count, plural,one {# fejezet} other {# fejezet}}", + "moreTracks": "{count, plural, one {# további sáv} other {# további sáv}}", + "tracksRolled": "{count, plural,one {# sáv} other {# sáv}}", "fileDetails": "Fájl részletei", "openDetails": "Fájl részleteinek megnyitása", "closeDetails": "Fájl részleteinek bezárása", - "trackFrom": "{track}/{total}. fejezet, ekkortól: {time}", + "trackFrom": "{track}/{total}. sáv, ekkortól: {time}", "throughCopy": "{percent} olvasva ebből a példányból", "fileCount": "{count, plural, =0 {nincs fájl} one {# fájl} other {# fájl}}", "synced": "Szinkronizálva {time}", @@ -7019,7 +7555,7 @@ "viewSyncLog": "Szinkronizálási napló megtekintése", "noWriteHistory": "Még nincs írási előzmény.", "fieldsWritten": "{count, plural, =0 {nincs mező} one {egy mező} other {# mező}}", - "track": "{number}. fejezet", + "track": "{number}. sáv", "primary": "Elsődleges", "read": "Olvasás", "play": "Lejátszás", @@ -7065,11 +7601,11 @@ "notSet": "nincs beállítva", "sortAdded": "Hozzáadva", "formatCount": "{count, plural, one {# formátum} other {# formátum}}", - "trackCount": "{count, plural,one {# fejezet} other {# fejezet}}", + "trackCount": "{count, plural,one {# sáv} other {# sáv}}", "formatsInFolder": "{count, plural, one {# formátumot tartalmaz} other {# formátumot tartalmaz}}", "compositionAria": "Mappaméret megoszlása formátum szerint", "percentRead": "{percent} elolvasva", - "trackOf": "Fejezet {track}/{total}", + "trackOf": "Sáv {track}/{total}", "groups": { "ebook": "E-könyv", "document": "Dokumentum", @@ -7099,7 +7635,7 @@ "indexed": "Indexelve", "opensIn": "Megnyílik itt", "writeBack": "Visszaírás", - "track": "Fejezet", + "track": "Sáv", "targetFile": "Célfájl", "notWritten": "Nincs írva" }, @@ -7116,7 +7652,7 @@ "notOpened": "Még nincs megnyitva", "lastRead": "Utoljára olvasva: {time}", "noPosition": "Nincs tárolt olvasási pozíció", - "trackPositionHeading": "Ez a fejezet itt található", + "trackPositionHeading": "Hol található ez a sáv", "totalRuntime": "{duration} összesen", "startsAt": "Ekkor kezdődik: {time}", "trackLength": "{duration} hosszú", @@ -7135,6 +7671,365 @@ "indexedMany": "{count} {format} fájl indexelve" } }, + "chapters": { + "heading": "Fejezetek", + "untitled": "Névtelen könyv", + "untitledChapter": "Névtelen fejezet", + "edit": "Fejezetek szerkesztése", + "done": "Kész", + "protected": "Védett", + "unprotected": "Nem védett", + "protectedHint": "Az újraolvasások és a metaadat-frissítések érintetlenül hagyják ezeket a fejezeteket.", + "unprotectedHint": "Egy újraolvasás vagy egy metaadat-frissítés lecserélheti ezeket a fejezeteket.", + "stats": { + "chapters": "Fejezetek", + "runtime": "Hossz", + "average": "Átlag" + }, + "source": { + "embedded": "Beolvasás a hangfájlokból", + "tracks": "Hangfájlonként egy fejezet, nincs elmentve", + "provider": "Lekért metaadatokból", + "migration": "Audiobookshelfből importálva", + "manual": "BookOrbitban szerkesztve", + "manualBy": "{name} szerkesztette ekkor: {when}", + "none": "Még nincsenek fejezetek" + }, + "youAreHere": "Itt vagy", + "playFrom": "Hallgatás innen: {title}", + "selectRow": "{index}. fejezet kiválasztása", + "selectedCount": "{count, plural, one {# kiválasztva} other {# kiválasztva}}", + "selectAll": "Összes kiválasztása", + "selectNone": "Kijelölések megszüntetése", + "removeSelected": "Kijelöltek törlése", + "startOf": "{index}. fejezet kezdete", + "titleOf": "{index}. fejezet címe", + "titlePlaceholder": "Fejezet címe", + "retryOperation": "Fejezetművelet újrapróbálása", + "operationProgress": "Fejezetművelet folyamatban: {done}/{total} fájl feldolgozva.", + "createFirst": "Első fejezet hozzáadása", + "newChapter": "Új fejezet", + "undo": "Visszavon", + "redo": "Mégis", + "find": "Fejezetek keresése", + "toolsMenu": "Eszközök", + "export": "Exportálás", + "saved": "Fejezetek elmentve", + "reload": "Újratöltés", + "retry": "Próbáld újra", + "nudge": { + "backSecond": "Kezdet eltolása vissza egy másodperccel", + "backTenth": "Kezdet eltolása vissza egy tizedmásodperccel", + "forwardTenth": "Kezdet eltolása előre egy tizedmásodperccel", + "forwardSecond": "Kezdet eltolása előre egy másodperccel" + }, + "issues": { + "emptyTitle": "Ehhez a fejezethez cím szükséges.", + "firstNotZero": "Az első fejezetnek 0:00-nál kell kezdődnie.", + "notAscending": "Ez a fejezet ugyanakkor kezdődik, mint az előző.", + "pastEnd": "Ez a fejezet a hangoskönyv vége után kezdődik.", + "tooShort": "Ez a fejezet egy másodpercnél rövidebb." + }, + "player": { + "scrubber": "Előnézet pozíciója", + "play": "Előnézet lejátszása", + "pause": "Előnézet szüneteltetése", + "back": "Vissza 15 másodpercet", + "forward": "Előre 15 másodpercet" + }, + "history": { + "heading": "Előzmények", + "empty": "A mentett verziók itt jelennek meg.", + "by": "{source} {name} által", + "facts": "{when}: {count, plural, one {# fejezet} other {# fejezet}}", + "source": { + "embedded": "A hangfájlokból", + "tracks": "Hangfájlonként egy", + "provider": "Lekért metaadatokból", + "migration": "Audiobookshelfből", + "manual": "Szerkesztve" + } + }, + "revert": { + "action": "Visszaállítás a fájlok fejezeteire", + "title": "Visszaállítod a fájlokban lévő fejezeteket?", + "description": "A BookOrbit újra beolvassa a hangfájlokba ágyazott fejezeteket, és megszünteti a védelmüket az újraolvasásokkal szemben. A nem mentett módosítások elvesznek. A jelenlegi lista megmarad az előzményekben.", + "confirm": "Visszaállít", + "done": "A fejezetek visszaállítva a hangfájlok alapján" + }, + "discardDialog": { + "title": "Elveted a fejezetmódosításokat?", + "description": "A fejezeteken végzett módosításaid nincsenek elmentve.", + "confirm": "Elvetés" + }, + "save": { + "action": "Fejezetek mentése", + "discard": "Elvetés", + "lock": "Védelem az újraolvasás ellen", + "lockHint": "Ezeknek a fejezeteknek a megőrzése a fájlok újraolvasásakor vagy a metaadatok frissítésekor.", + "unsaved": "Nem mentett módosítások", + "unsavedWithWarnings": "{count, plural, one {Nem mentett módosítások, # figyelmeztetés} other {Nem mentett módosítások, # figyelmeztetés}}", + "blocked": "{count, plural, one {Javíts ki # hibát a mentéshez} other {Javíts ki # hibát a mentéshez}}", + "upToDate": "Minden módosítás elmentve", + "short": "Mentés" + }, + "writeFiles": { + "more": "További mentési lehetőségek", + "saveAndWrite": "Mentés és írás fájlokba", + "writeSaved": "Mentett fejezetek fájlokba írása", + "writing": "Fejezetek írása a hangfájlokba...", + "confirmTitle": "Kiírod a fejezeteket a hangfájlokba?", + "confirmDescription": "{count, plural, one {Ez felülírja a könyv hangfájlját ezekkel a fejezetekkel.} other {Ez felülírja a könyv # hangfájlját ezekkel a fejezetekkel.}} Maga a hanganyag változatlanul másolódik át. Azoknak, akik éppen streamelik a könyvet, szükség lehet az újraindítására, a könyvet már letöltött telefonok pedig megtartják a saját példányukat, amíg újra le nem töltik azt.", + "confirm": "Írás fájlokba", + "done": "{count, plural, one {A fejezetek kiírva a hangfájlba.} other {A fejezetek kiírva mind a(z) # hangfájlba.}}", + "partial": "A fejezetek kiírva {total} fájlból {written} esetében. A többi változatlanul maradt.", + "reasons": { + "libraryDisabled": "A fájlba írás ki van kapcsolva ennél a könyvtárnál. Kapcsold be a könyvtár beállításaiban.", + "noFiles": "Ehhez a könyvhöz nincsenek hangfájlok, amikbe írni lehetne.", + "formatNotSupported": "Ezek a hangfájlok nem tudnak fejezeteket tárolni. Csak az M4B, M4A és MP3 formátumok képesek erre.", + "formatDisabled": "A hangfájlokba írás ki van kapcsolva ennél a könyvtárnál.", + "tooLarge": "Egy fájl nagyobb, mint a könyvtár fájlba írási korlátja." + } + }, + "formats": { + "cue": "CUE-fájl", + "ffmetadata": "FFmpeg-metaadatok", + "audacity": "Audacity-címkék", + "timestamps": "Időbélyeges szöveg", + "titles": "Címek listája", + "json": "JSON" + }, + "apply": { + "label": "Hogyan használd ezeket a fejezeteket", + "action": "Alkalmazás a szerkesztőben", + "replace": "Összes cseréje", + "replaceHint": "Ezen fejezetek, címek és időpontok használata.", + "titles": "Csak címek", + "titlesHint": "Tartsd meg a kezdőidőpontokat, és vedd át a címeket az egyező sorokból.", + "times": "Csak kezdőidőpontok", + "timesHint": "Címek megőrzése és az egyező sorok kezdési időpontjainak átvétele." + }, + "sources": { + "description": "Hasonlítsd össze őket az éppen szerkesztett listával, majd válaszd ki, mit szeretnél átvenni.", + "loading": "Fejezetek beolvasása...", + "counts": "{incoming, plural, one {# bejövő fejezet} other {# bejövő fejezet}}, {current, plural, one {# a szerkesztőben} other {# a szerkesztőben}}", + "pastEnd": "{count, plural, one {# fejezet a hangoskönyved vége után kezdődik.} other {# fejezet a hangoskönyved vége után kezdődik.}}", + "currentColumn": "A szerkesztőben", + "incomingColumn": "Bejövő", + "deltaColumn": "Eltolás (mp)", + "applied": "Alkalmazva a szerkesztőben. Mentéssel tarthatod meg.", + "empty": "Itt nem találhatók fejezetek.", + "files": { + "menu": "A hangfájlokból", + "title": "Fejezetek a hangfájlokban" + }, + "tracks": { + "menu": "Hangfájlonként egy", + "title": "Hangfájlonként egy fejezet" + }, + "lookup": { + "menu": "Audible-ből...", + "title": "Fejezetek az Audible-ből", + "asin": "ASIN", + "region": "Áruház", + "action": "Lekérés", + "hint": "Az Audible fejezetei ehhez a kiadáshoz. Az időzítések az Audible saját felvételéből származnak, így előfordulhat, hogy eltolást vagy nyújtást igényelnek, hogy egybeessenek a fájljaiddal." + }, + "toc": { + "menu": "Az e-könyv tartalomjegyzékéből", + "title": "Címek az e-könyvből" + }, + "readAlong": { + "menu": "A szinkronizált e-könyvből", + "title": "Fejezetek a felolvasásból" + }, + "import": { + "menu": "Importálás...", + "title": "Fejezetek importálása", + "pasteLabel": "Fejezetek beillesztése", + "placeholder": "00:00:00 Főcím\n00:00:14 Ajánlás\n00:00:23 1. fejezet", + "formats": "Beolvassa a CUE-fájlokat, az FFmpeg-metaadatokat, az Audacity-címkéket, az Audiobookshelf JSON-fájlokat, az időbélyeges sorokat vagy a címek egyszerű listáját.", + "read": "Fejezetek beolvasása", + "chooseFile": "Válassz egy fájlt", + "unreadable": "Ebből nem sikerült fejezeteket beolvasni.", + "tooLarge": "Ez a fájl túl nagy ahhoz, hogy fejezetlista legyen.", + "skipped": "{count, plural, one {# sor kihagyva} other {# sor kihagyva}}", + "truncated": "Csak az első {count} fejezet beolvasása sikerült." + }, + "version": { + "title": "Mentett verzió", + "detail": "Elmentve {when}", + "detailBy": "Elmentve {when} {name} által" + } + }, + "review": { + "adjust": "Az időpontok igazítása", + "runtimes": "Forrás játékideje: {theirs}, ez a hangoskönyv: {ours} ({difference} mp)", + "accurate": "Az Audible pontosként jelöli ezeket az időpontokat", + "offset": "Eltolás (mp)", + "suggestIntro": "Az Audible-bevezető átugrása ({seconds} mp)", + "suggestMatch": "Első fejezetek igazítása ({seconds} mp)", + "fitPauses": "Igazítás a szünetekhez", + "fitPausesResult": "Igazítás a szünetekhez ({seconds} mp, {hits}/{total})", + "fitPausesNone": "Egyetlen eltolással sem igazíthatók ezek a fejezetek a hangod szüneteihez.", + "resetOffset": "Visszaállítás", + "stretch": "Nyújtás ehhez a hangoskönyvhöz", + "stretchHint": "Minden kezdési időpontot megszoroz a(z) {factor} értékkel, ami az utolsó fejezetet {seconds} másodperccel eltolja.", + "parts": "Részek fejlécei", + "partsOwn": "Megtartás fejezetként", + "partsPrefix": "Hozzáadás a fejezetcímekhez", + "partsDrop": "Kihagyás", + "match": "Sorok párosítása", + "matchTime": "Kezdőidő alapján", + "matchPosition": "Sorrendben", + "matched": "{count, plural, one {# sor párosítva} other {# sor párosítva}}", + "include": "Belefoglal", + "includeRow": "{title} belefoglalása", + "willReplace": "{count, plural, one {Lecseréli a listát # fejezettel} other {Lecseréli a listát # fejezettel}}", + "willChange": "{count, plural, =0 {Semmi sem változna} one {# fejezet változik} other {# fejezet változik}}" + }, + "tools": { + "apply": "Alkalmaz", + "changes": "{count, plural, =0 {Semmi sem változna.} one {# fejezet meg fog változni.} other {# fejezet meg fog változni.}}", + "scope": { + "label": "Alkalmazás erre", + "all": "{count, plural, one {A # fejezet} other {Mind a(z) # fejezet}}", + "selected": "{count, plural, one {A(z) # kijelölt fejezet} other {A(z) # kijelölt fejezet}}", + "fromActive": "{index}. fejezettől a végéig" + }, + "shift": { + "title": "Időpontok eltolása", + "description": "A fejezetek kezdőpontjait egységesen korábbra vagy későbbre mozgatja. A 0:00-nál lévő fejezet ott marad.", + "amount": "Másodperc", + "hint": "A negatív érték korábbra mozgatja a fejezeteket. Akkor használd, ha egy kiadás hosszabb vagy rövidebb bevezetővel rendelkezik.", + "invalid": "Adj meg egy másodpercértéket, például: 4.04 vagy -2." + }, + "renumber": { + "title": "Címek újrasorszámozása", + "description": "Sorszámozott címeket ad a fejezeteknek, sorrendben.", + "pattern": "Címminta", + "hint": "A(z) {'{n}'} helyére a szám kerül.", + "defaultPattern": "{'{n}'}. fejezet", + "start": "Első szám", + "invalid": "Adj meg egy nemnegatív egész kezdőszámot, és egy 0 és 4 közötti helyiérték-kiegészítést.", + "padding": "Számjegyek" + }, + "replace": { + "title": "Keresés és csere", + "description": "Szöveg módosítása a fejezetcímekben.", + "find": "Keresés", + "with": "Csere erre:", + "regex": "Reguláris kifejezés", + "caseSensitive": "Betűméret-egyezés", + "invalidPattern": "Ez a reguláris kifejezés érvénytelen." + }, + "mergeShort": { + "title": "Rövid fejezetek összevonása", + "description": "A megadott hossznál rövidebb fejezeteket beolvasztja az előttük lévő fejezetbe.", + "threshold": "Rövidebb, mint (másodperc)", + "invalid": "Adj meg egy 0-nál nagyobb másodpercértéket." + }, + "clean": { + "title": "Címek letisztítása", + "nothing": "A címek már tiszták.", + "done": "{count, plural, one {# cím letisztítva} other {# cím letisztítva}}" + } + }, + "snap": { + "menu": "Illesztés a szünetekre...", + "title": "Illesztés a szünetekre", + "description": "A fejezetek kezdőpontjait a hanganyag legközelebbi olyan szünetére mozgatja, ahol a narrátor megáll a fejezetek között.", + "radius": "Szünet keresése", + "radiusOption": "{seconds} másodperces tartományon belül mindkét irányban", + "placement": "Mindegyik kezdőpont elhelyezése", + "placementEnd": "Közvetlenül azelőtt, hogy a narrátor újra megszólal", + "placementMiddle": "A szünet közepére", + "progressive": "Korrekciók továbbvitele", + "progressiveHint": "Olyan időzítésekhez, amelyek a könyv előrehaladtával egyre jobban elcsúsznak: minden módosítás eltolja a következő kezdőpont keresési helyét is.", + "run": "Szünetek keresése", + "running": "Szünetek detektálása: {done}/{total}", + "progressLabel": "Szünetkeresés előrehaladása", + "stop": "Leállítás", + "back": "Beállítások módosítása", + "moved": "{count, plural, one {# fejezet elmozdul, átlagosan {average} mp-cel} other {# fejezet elmozdul, átlagosan {average} mp-cel, legfeljebb {largest} mp-cel}}", + "nothing": "Egyetlen fejezetet sem kell elmozdítani.", + "notFound": "{count, plural, one {nem található szünet # közelében} other {nem található szünet # közelében}}", + "blocked": "{count, plural, one {# a helyén marad, hogy a fejezetek sorrendben maradjanak} other {# a helyén marad, hogy a fejezetek sorrendben maradjanak}}", + "failed": "{count, plural, one {# nem hallgatható meg: a hanganyag dekódolása sikertelen volt} other {# nem hallgatható meg: a hanganyaguk dekódolása sikertelen volt}}", + "movedOne": "Áthelyezve a(z) {time} időpontnál lévő szünetre ({delta} mp).", + "notFoundOne": "Nem található szünet ezen kezdőpont {seconds} mp-es körzetében.", + "blockedOne": "A legközelebbi szünet felborítaná a fejezetek sorrendjét.", + "alreadyThere": "Ez a kezdőpont már szüneten van." + }, + "waveform": { + "label": "Fejezetkezdés a hanganyagban", + "loading": "A hanganyag betöltése ezen kezdőpont körül...", + "failed": "Az itteni hanganyag kirajzolása nem sikerült." + }, + "errors": { + "operation": "A fejezetművelet nem tudott befejeződni. Próbáld újra a kapcsolódást, vagy ellenőrizd az állapotát.", + "load": "A fejezeteket nem sikerült betölteni.", + "save": "A fejezeteket nem sikerült elmenteni.", + "revert": "A fejezeteket nem sikerült visszaállítani.", + "readFiles": "A hangfájlokat nem sikerült beolvasni.", + "lookup": "Nem sikerült lekérni a fejezeteket az Audible-ből.", + "readEbook": "Az e-könyvet nem sikerült beolvasni.", + "analyze": "A hanganyagot nem sikerült elemezni.", + "writeFiles": "A fejezeteket nem sikerült kiírni a fájlokba.", + "versions": "A fejezettörténetet nem sikerült betölteni.", + "preview": "Az előnézet elindítása sikertelen.", + "stale": "Valaki más módosította ezeket a fejezeteket. Az új verzió megtekintéséhez töltsd újra az oldalt; a saját módosításaid az újratöltésig megmaradnak." + }, + "addCutTooClose": "Mozgasd el a lejátszófejet legalább egy másodperccel a vágási ponttól.", + "columns": { + "chapter": "Fejezet", + "inBook": "A könyvben", + "starts": "Kezdőpontok", + "length": "Hossz", + "start": "Eleje", + "title": "Cím" + }, + "listen": { + "resume": "Folytatás", + "start": "Hallgatás", + "progress": "{left} van hátra a fejezetből · a könyv {percent}-a", + "notStarted": "Nincs elkezdve", + "left": "{time} van vissza" + }, + "timeline": { + "label": "Fejezetek a könyvben", + "listened": "A könyv {percent}-a meghallgatva" + }, + "cut": { + "heading": "Vágás", + "label": "Vágás {previous} és {next} között", + "firstHeading": "A könyv eleje", + "count": "{index}/{total}", + "previous": "Előző vágás", + "next": "Következő vágás", + "ends": "Végpontok", + "starts": "Kezdőpontok", + "saved": "elmentve", + "backToCut": "Vissza a vágáshoz", + "move": "Vágás mozgatása", + "playCut": "Lejátszás a vágáson keresztül", + "playCutHint": "Pár másodperc lejátszása a vágás körül (P)", + "stop": "Leállítás", + "stopHint": "Lejátszás leállítása (P)", + "snap": "Illesztés a szünetre", + "onPause": "Szüneten", + "noPause": "{seconds, plural, one {Nincs szünet # másodpercen belül} other {Nincs szünet # másodpercen belül}}", + "remove": "Vágás eltávolítása", + "removeHint": "{title} beolvad ebbe: {previous}", + "first": "A legelső fejezet mindig 0:00-kor kezdődik, így ott nincs elmozdítható vágási pont. Válassz ki egy másik fejezetet a kezdőpontja igazításához.", + "announce": "Vágás itt: {time}", + "moveHere": "Vágás mozgatása ide", + "moveHereHint": "Vágási pont áthelyezése ide: {time} (M)", + "moveHereOutside": "A vágási pont áthelyezéséhez állítsd a lejátszófejet a(z) {previous} vagy a(z) {title} belsejébe.", + "newChapterHere": "Új fejezet beszúrása ide", + "newChapterHereHint": "Új fejezet indítása itt: {time}" + } + }, "highlights": { "note": { "placeholder": "Jegyzet hozzáadása...", @@ -7555,7 +8450,7 @@ "link": "Hivatkozás", "removeLink": "Hivatkozás eltávolítása", "undo": "Visszavon", - "redo": "Újra", + "redo": "Mégis", "clearFormatting": "Formázás törlése", "previewDescription": "Leírás előnézete", "preview": "Előnézet", @@ -8080,6 +8975,10 @@ "noResultsHint": "Próbálj meg egy másik címet vagy szerzőt.", "noResultsIndexerHint": "Próbálj meg egy másik címet vagy szerzőt, vagy keress rá a(z) „{title}” címre az indexelőkben, és válassz ki egy kiadást kézzel.", "freeTextAction": "Indexelők keresése", + "noResultsRequestHint": "Próbálkozz egy másik címmel vagy szerzővel, vagy kérd a(z) „{title}” kötetet a beírt formában. A További opciók alatt a jóváhagyónak fűzött megjegyzés segít neki megtalálni a megfelelő könyvet.", + "noResultsRequestAutoHint": "Próbálkozz egy másik címmel vagy szerzővel, vagy kérd a(z) „{title}” könyvet pontosan így beírva.", + "requestAnywayAction": "Kérés mindenképp", + "searchAuthor": "{author} könyveinek megjelenítése", "manualSearchAction": "Indexelők keresése kézzel", "yearUnknown": "Év ismeretlen", "sourceCount": "{count, plural, one {# forrás} other {# forrás}}", @@ -8460,7 +9359,18 @@ "clientRefused": "A letöltőkliens elutasított egy korábbi kiadást", "clientUnavailable": "A letöltőkliens nem válaszolt egy korábbi kiadásra" }, + "clientProblem": { + "unavailable": "A(z) {client} nem válaszol", + "unavailableUnnamed": "A letöltőkliensed nem válaszol", + "unavailableHint": "Az ezt használó kiadások nem küldhetők el, amíg nem válaszol. Ellenőrizd, hogy fut-e, majd próbáld újra.", + "refused": "A(z) {client} visszautasította a kiadást", + "refusedUnnamed": "A letöltőkliensed visszautasította a kiadást", + "refusedHint": "Az ezt használó kiadások nem küldhetők el, amíg ez nincs javítva.", + "retry": "Próbáld újra" + }, "singleFileNote": "Egy kiadás állhat egy könyv több formátumából, egy hangoskönyv részeiből vagy egy archívumból – ezek mind egyetlen könyvként importálódnak. Ha egy kiadás több különálló könyvet tartalmaz, a rendszer megkérdezi, melyiket szeretné megtartani.", + "holdForReview": "A letöltés ellenőrzése a fájlba írás előtt", + "releasePageLabel": "{title}, kiadási oldal itt: {indexer}", "searching": "Indexelők keresése...", "refresh": "Keresés újra", "cached": "A legutóbbi keresés látható. Friss találatokért keress újra.", @@ -8778,6 +9688,7 @@ "scoreShort": "Az importált fájl {score} pontot ért el ehhez a kéréshez képest, amely elmarad az automatikus mentéshez szükséges {threshold} küszöbértéktől.", "scoreClears": "Az importált fájl {score} pontot ért el, amellyel elérte az automatikus mentéshez szükséges {threshold} küszöbértéket.", "verificationOff": "Az importálás-ellenőrzés ki van kapcsolva, így ez a fájl soha nem lett pontozva a kéréshez képest.", + "heldOnRequest": "Ez a kiadás ellenőrzésre lett elküldve a fájlba írás előtt, így most rád vár.", "reason": { "isbn_match": "Az ISBN-száma megegyezik a kért értékkel.", "above_threshold": "A kért könyvnek tűnik.", @@ -8797,8 +9708,24 @@ }, "requested": "Kérve", "imported": "Importálva", + "releasePage": "Kiadási oldal megnyitása", "absent": "Sem a kérés, sem a fájl nem tartalmazza.", "notSet": "Nincs beállítva", + "editionTitle": "Amit a fájl tartalmaz", + "edition": { + "publisher": "Kiadó", + "published": "Publikálva", + "language": "Nyelv", + "pages": "Oldalak", + "isbn10": "ISBN-10", + "narrators": "Felolvasó", + "length": "Hossz", + "version": "Verzió", + "chapters": "Fejezetek" + }, + "abridged": "Rövidített", + "unabridged": "Teljes kiadás", + "importedCover": "Az importált fájlban talált borító", "filesTitle": "Mi érkezett be", "fileCount": "{count, plural, one {# fájl} other {# fájl}}", "role": { @@ -8808,6 +9735,8 @@ }, "fileAnyway": "Tárolás mindenképp", "fileAnywayHint": "Bemásolja a fájlt a célkönyvtárba, a kérést pedig elérhetőként jelöli meg – pontosan úgy, mintha sikeres pontszámot ért volna el.", + "fileIt": "Fájlba írás", + "fileItHint": "Fájlba írja ezt a célkönyvtárba, és elérhetőnek jelöli a kérést.", "noDestination": "Ehhez a kéréshez nincs mappát tartalmazó célkönyvtár megadva, így még nincs hol tárolni a könyvet.", "openDock": "Könyvdokk megnyitása", "missingEntry": "A fájl, amely miatt ez a kérés fel lett függesztve, már nincs a Könyvdokkban. Manuálisan tárolva vagy elvetve lett, így itt nem maradt felülbírálandó elem.", @@ -8942,7 +9871,8 @@ }, "surfaceOpacity": "Felület átlátszósága", "surfaceOpacityValue": "{value}%", - "surfaceBrightnessValue": "{value}%" + "surfaceBrightnessValue": "{value}%", + "readingHistory": "Előzmények" }, "sidebar": { "dashboard": "Irányítópult", @@ -9004,6 +9934,19 @@ "dropped": "{name} lehelyezve, pozíció {position}/{total}", "cancelled": "Átrendezés megszakítva. {name} visszahelyezve a következő pozícióba: {position}/{total}.", "filteredHint": "Az átrendezéshez töröld a szűrőt" + }, + "customize": { + "open": "Oldalsáv testreszabása", + "title": "Oldalsáv testreszabása", + "hint": "Húzd a sorrend módosításához. Az elrejtett oldalak a Keresőben elérhetők maradnak.", + "reset": "Alapbeállítások visszaállítása", + "done": "Kész", + "resetDone": "Az oldalsáv visszaállt az alapértelmezettre", + "showInSidebar": "{name} megjelenítése az oldalsávon", + "show": "Megjelenítés", + "hide": "Elrejtés", + "alwaysShown": "A(z) {name} mindig megjelenik", + "returnsWithWork": "Megjelenik, ha elvégzendő feladat vár" } }, "selectionActionBar": { @@ -9497,7 +10440,7 @@ "saveFailed": "Mentés sikertelen", "deleteFailed": "Törlés sikertelen", "setDefaultFailed": "Alapértelmezés beállítása sikertelen", - "setAsDefault": "Beállítása alapértelmezettként", + "setAsDefault": "Beállítás alapértelmezettként", "saving": "Mentés...", "update": "Frissítés", "create": "Létrehozás", @@ -9797,7 +10740,7 @@ "unconfirmed": "nincs visszaigazolva", "sending": "küldés", "narration": "Narráció", - "narrationTitle": "A hanggal rendelkező könyvek megőrzik a narrációt" + "narrationTitle": "A felolvasós könyvek megőrzik a narrációt" }, "device": { "kindle": "Kindle", @@ -9822,7 +10765,7 @@ "total": "{size} összesen", "send": "{count, plural, one {Küldés} other {# email küldése}}", "noFormat": "Nincs {format}, a(z) {got} formátumot kapja", - "readAlong": "Hanggal rendelkező, {size}", + "readAlong": "Felolvasós, {size}", "overKindle": "{size}, meghaladja a Kindle 50 MB-os korlátját", "overGmail": "{size}, meghaladja a Gmail 25 MB-os korlátját", "kindleRejects": "A Kindle elutasítja a(z) {format} formátumot", @@ -9859,7 +10802,7 @@ "formatHint": "Az ezzel a formátummal nem rendelkező könyv az elsődleges kiadását kapja.", "kindleFormatHint": "Az Amazon 2023-ban megszüntette a MOBI és AZW3 formátumok emailben történő fogadását, így ezek nem érhetők el a Kindle-höz. Az ezzel a formátummal nem rendelkező könyv az elsődleges kiadását kapja.", "kindleLegacyFormat": "A Kindle már nem fogadja el a(z) {format} formátumot emailben. Válassz EPUB-ot vagy PDF-et.", - "readAlong": "Hanggal rendelkező könyvek", + "readAlong": "Felolvasós könyvek", "readAlongAutomatic": "Automatikus", "readAlongAutomaticHint": "Csak szöveges, ha biztonságos másolat készíthető, egyébként az eredeti.", "readAlongTextOnly": "Csak szöveges EPUB", @@ -9981,7 +10924,22 @@ } }, "errors": { - "network": "A BookOrbit nem érhető el. Ellenőrizd a kapcsolatot, majd próbáld újra." + "network": "A BookOrbit nem érhető el. Ellenőrizd a kapcsolatot, majd próbáld újra.", + "codes": { + "CHAPTERS_STALE": "Valaki más módosította ezeket a fejezeteket. Az új verzió megtekintéséhez töltsd újra az oldalt.", + "CHAPTERS_EMPTY_TITLE": "Minden fejezetnek kell egy cím.", + "CHAPTERS_FIRST_NOT_ZERO": "Az első fejezetnek 0:00-nál kell kezdődnie.", + "CHAPTERS_NOT_ASCENDING": "A fejezeteknek sorrendben kell kezdődniük, mindegyiknek az előző után.", + "CHAPTERS_PAST_END": "Egy fejezet a hangoskönyv vége után kezdődik.", + "CHAPTERS_FILES_UNREADABLE": "Egy hangfájlt nem sikerült beolvasni, így a fejezetei ismeretlenek.", + "CHAPTERS_LOOKUP_NOT_FOUND": "Az Audible nem rendelkezik fejezetekkel ehhez az ASIN-hoz ebben az áruházban.", + "CHAPTERS_LOOKUP_UNAVAILABLE": "Az Audible nem válaszolt. Próbáld újra egy pillanat múlva.", + "CHAPTERS_EBOOK_UNAVAILABLE": "Ez az e-könyv nem tartalmaz beolvasható fejezetlistát.", + "CHAPTERS_ANALYSIS_TOO_LARGE": "Ez a hanganyag túl sok az egyszerre történő elemzéshez.", + "CHAPTERS_ANALYSIS_UNAVAILABLE": "A szünetek kereséséhez ffmpeg szükséges a szerveren.", + "CHAPTERS_WRITE_UNAVAILABLE": "A fejezeteket nem lehet kiírni ezekbe a fájlokba.", + "CHAPTERS_NOTHING_TO_WRITE": "Nincsenek elmentett fejezetek a kiíráshoz." + } }, "hardcover": { "settings": { @@ -10323,6 +11281,10 @@ "fileAsBook": { "title": "Fájl könyvként", "hint": "Minden fájlt külön könyvként kezel. Leginkább olyan könyvtárakhoz alkalmas, ahol címenként csak egy formátum található. Kerülendő, ha a hangoskönyvek több fájlból állnak." + }, + "seriesFolders": { + "title": "Sorozatmappák", + "uses": "Fájl mint könyv" } }, "addedAt": { @@ -10388,8 +11350,11 @@ "cannotChange": "Ez az egyetlen beállítás, amelyet később nem módosíthatsz.", "folderHint": "Minden mappa egy könyvnek felel meg. Ideális megoldás, ha egy cím több formátumot fog össze, vagy ha egy hangoskönyv sok különálló fájlból áll.", "fileHint": "Minden fájl egy önálló könyvnek felel meg. Ideális megoldás az egyrétegű mappákhoz, ahol címenként egy formátum található.", + "fileHintSeries": "Minden fájl egy külön könyv. Ideális a sorozatonként egy mappában tárolt képregényekhez és mangákhoz, vagy olyan egyszerű mappákhoz, ahol címenként egy formátum található.", "folderResult": "Egy könyv két formátummal", - "fileResult": "Három könyv, fájlonként egy" + "fileResult": "Három könyv, fájlonként egy", + "seriesHint": "Minden fájl egy külön könyv, és a mappa, amelyben található, a sorozata. Ez a Komga és a Kavita által használt elrendezés. Ideális a képregényekhez és mangákhoz.", + "seriesResult": "Kettős sorozat, fájlonként egy könyv" }, "import": { "title": "Importálás", @@ -10411,6 +11376,15 @@ "placeholder": "Írj be egy mintát (pl. **/samples/**), majd nyomd meg az Entert", "placeholderMore": "Másik minta hozzáadása", "remove": "Minta törlése: {pattern}" + }, + "series": { + "title": "Sorozatok", + "toggle": "A mappák sorozatok", + "hintOn": "Minden mappa egy-egy sorozattá válik, a fájlnevekben szereplő szám pedig meghatározza a könyv helyét a sorozatban, ahogy a Komga és a Kavita esetében is. Ha a fájlon belül egy másik sorozatnév szerepel, az továbbra is elsőbbséget élvez.", + "hintOff": "Kapcsold be ezt a sorozatonként egy mappában tárolt képregényekhez és mangákhoz, így mindegyik mappa megnevezi a benne lévő fájlok sorozatát.", + "replacesCustom": "Ennek bekapcsolása felülírja a Metaadatok alatt megadott útvonalszabályokat. Ha a mentés előtt visszakapcsolod, az eredeti szabályok visszaállnak.", + "existingBooks": "A könyvtárban már meglévő könyvek akkor kapják meg ezeket a sorozatokat, ha alkalmazod rájuk a szabályokat a Metaadatok alatt.", + "previewSeries": "Sorozatok" } }, "metadata": { @@ -10505,6 +11479,17 @@ "seriesIndex": "Sorozat száma", "publishedYear": "Kiadás éve", "publishedDate": "Kiadás dátuma" + }, + "preset": { + "title": "A mappák sorozatok", + "hint": "Szabályok a sorozatonként egy mappát és kötetenként, fejezetenként vagy számonként egy fájlt tartalmazó, a Komga és a Kavita által elvárt struktúrához. Ezek felülírják az alábbi szabályokat.", + "apply": "Ezen szabályok használata" + }, + "reapply": { + "action": "Szabályok alkalmazása a meglévő könyvekre", + "applying": "Szabályok alkalmazása...", + "hint": "Frissíti a könyvtárban már meglévő könyveket a szabályok által meghatározott mezőkkel. Semmi más nem változik, és a zárolt mezők megőrzik az értéküket.", + "saveFirst": "Előbb mentsd el a módosításokat, majd csak ezután alkalmazd a szabályokat a meglévő könyvekre." } } }, @@ -10534,9 +11519,9 @@ "toggleAria": "EPUB-metaadatok beírása" }, "readAlong": { - "title": "Hanggal rendelkező EPUB", - "hint": "Szinkronizált narrációval rendelkező EPUB-ok, például Storyteller-felolvasások. Magukkal hordozzák a hanganyagukat, ezért nagy méretűek, és több memóriára van szükségük az újraíráshoz.", - "toggleAria": "Hanggal rendelkező EPUB-ok metaadatainak írása" + "title": "Felolvasós EPUB", + "hint": "Szinkronizált narrációval rendelkező EPUB-ok, mint például a Storyteller felolvasós kötetei. Mivel magukban hordozzák a hanganyagot, a méretük nagy, és több memóriára van szükség az újraírásukhoz.", + "toggleAria": "Felolvasós EPUB-ok metaadatainak írása" }, "fb2": { "title": "FictionBook (FB2)", @@ -10773,6 +11758,33 @@ "createFolder": "Mappa létrehozása sikertelen" } }, + "folderBrowser": { + "close": "Bezárás", + "mode": { + "folder": "Mappa könyvként", + "file": "Fájl könyvként" + }, + "field": { + "clear": "Törlés", + "mounted": "Csatolva", + "libraries": "Könyvtárak", + "recent": "Legutóbbiak", + "thisLibrary": "{name} (ez a könyvtár)" + }, + "view": { + "button": "Megtekintés", + "label": "Megtekintés beállításai", + "sort": "Rendezés", + "sortName": "Név", + "show": "Megjelenítés" + }, + "newFolder": { + "button": "Új mappa", + "label": "Új mappa itt: {name}", + "placeholder": "Új mappa itt: {name}", + "create": "Létrehozás" + } + }, "destination": { "loadFailed": "A célkönyvtárak betöltése sikertelen. A hiba elhárításához zárd be, majd nyisd meg újra.", "noLibraries": "Nem érhetők el könyvtárak. Hozz létre egy könyvtárat, vagy kérj hozzáférést egy adminisztrátortól.", @@ -11167,7 +12179,7 @@ "unavailable": "Egyeztetési stratégia nem elérhető" }, "connectionError": { - "unreachable": "Nem sikerült elérni az adatbázis-kiszolgálót. Ellenőrizze a kiszolgálót és a portot.", + "unreachable": "Nem sikerült elérni az adatbázis-szervert. Ellenőrizze a kiszolgálót és a portot.", "authFailed": "A hitelesítés sikertelen. Ellenőrizze a felhasználónevet és a jelszót.", "databaseNotFound": "Az adatbázis nem található. Ellenőrizd az adatbázis nevét.", "timeout": "Időtúllépés történt a kapcsolat során. Ellenőrizd a kiszolgáló és a tűzfal beállításait.", @@ -11420,7 +12432,21 @@ }, "toast": { "linkedHighlightError": "Nem sikerült megnyitni a hivatkozott kiemelési pozíciót", - "resumed": "Folytatva {pct}%-nál - {label}" + "resumed": "Folytatva {pct}%-nál - {label}", + "newerPositionError": "Az újabb hely megnyitása nem sikerült", + "highlightSaveFailed": "A kiemelés mentése nem sikerült", + "noteSaveFailed": "A megjegyzés mentése sikertelen", + "highlightDeleteFailed": "A kiemelés törlése sikertelen", + "bookmarkSaveFailed": "A könyvjelző hozzáadása sikertelen", + "bookmarkDeleteFailed": "A könyvjelző törlése sikertelen", + "bookmarkUpdateFailed": "A könyvjelző mentése sikertelen", + "marksLoadFailed": "A kiemelések és könyvjelzők betöltése sikertelen" + }, + "newerPositionDialog": { + "title": "Folytatod egy másik eszközről?", + "description": "Ezt a könyvet egy másik eszközön a(z) {remote} pozícióig olvasták, miközben itt a(z) {local} helyen volt megnyitva.", + "follow": "Ugrás ide: {pct}", + "stay": "Maradjon itt: {pct}" }, "header": { "goBack": "Vissza", @@ -11562,6 +12588,7 @@ "allChapters": "Összes fejezet", "notesOnly": "Csak jegyzetek", "deleteBookmark": "Könyvjelző törlése", + "editBookmark": "Könyvjelző szerkesztése", "deleteHighlight": "Kiemelés törlése", "approximatePosition": "Eszközről szinkronizálva; a pontos pozíció nem érhető el, ugrás a fejezethez", "sort": { @@ -11577,6 +12604,7 @@ "translate": "Fordítás", "define": "Meghatározás", "deleteAnnotation": "Annotáció törlése", + "readFromHere": "Olvasás innen", "apply": "Alkalmaz", "color": "Kiemelés színe: {color}", "style": "Kiemelés stílusa: {style}", @@ -11727,6 +12755,12 @@ "hideControls": "Vezérlők elrejtése", "stop": "Narráció leállítása", "error": "Narráció-lejátszási hiba" + }, + "bookmarkEdit": { + "title": "Könyvjelző szerkesztése", + "titleLabel": "Cím", + "noteLabel": "Megjegyzés", + "notePlaceholder": "Opcionális megjegyzés" } }, "scanner": { diff --git a/client/src/locales/it.json b/client/src/locales/it.json index 672a694e1..69ab1f1c6 100644 --- a/client/src/locales/it.json +++ b/client/src/locales/it.json @@ -98,7 +98,7 @@ "saveError": "Impossibile salvare la preferenza della lingua" }, "pageTitle": "Visualizzazione", - "pageSubtitle": "Controlla temi, copertine, disposizione e come viene presentata la tua libreria.", + "pageSubtitle": "Controlla temi, copertine, disposizione e come viene presentata la tua biblioteca.", "mobileSummary": "Tema: {theme} • Accento: {accent} • Sfondo: {background}", "themeMode": { "light": "Luce", @@ -395,7 +395,7 @@ "coverSize": "Dimensioni della copertina", "gridSpacing": "Spaziatura della griglia", "gridLayout": { - "title": "Layout della griglia della libreria" + "title": "Layout della griglia della biblioteca" }, "coverSizeBehavior": { "label": "Comportamento delle dimensioni della copertina", @@ -476,7 +476,7 @@ } }, "behavior": { - "title": "Comportamento della libreria", + "title": "Comportamento della biblioteca", "thumbnailClicks": { "label": "Clic sulle miniature", "hint": "Scegli cosa succede quando si apre un libro dalle visualizzazioni griglia ed elenco", @@ -720,7 +720,7 @@ "createDialog": { "title": "Crea un collegamento magico", "description": "Genera un accesso condivisibile URL per un account condiviso.", - "sharedAccount": "Conto condiviso", + "sharedAccount": "Account condiviso", "selectAccount": "Seleziona un account condiviso", "label": "Etichetta", "labelPlaceholder": "ad es. Link demo per la conferenza", @@ -863,7 +863,7 @@ "updatesGroup": "Aggiornamenti", "importFromBooklore": "Importa da Booklore", "bookloreImportConfigured": "Importazione di Booklore configurata", - "importLibraryData": "Importa dati della libreria", + "importLibraryData": "Importa dati della biblioteca", "migrationConfigured": "Origine della migrazione configurata", "migrationRunning": "Migrazione in corso", "migrationCompleted": "Migrazione completata", @@ -880,7 +880,7 @@ "continueSetup": "Continua l'installazione", "viewDetails": "Visualizza dettagli", "refreshRecommendationIndex": "Aggiorna l'indice dei consigli", - "refreshRecommendationHint": "Aggiorna il motore dei consigli con le ultime modifiche alla libreria. Questo processo viene eseguito in background.", + "refreshRecommendationHint": "Aggiorna il motore dei consigli con le ultime modifiche alla biblioteca. Questo processo viene eseguito in background.", "booksQueuedForProcessing": "{count, plural, =0 {nessun libro in coda per l'elaborazione} one {# libro in coda per l'elaborazione} other {# libri in coda per l'elaborazione} many {# libri in coda per l'elaborazione}}", "run": "Esegui", "running": "Correre...", @@ -911,7 +911,7 @@ "migration": { "title": "Migrazione", "subtitle": "Importazione di Booklore una tantum: connetti l'origine, mappa gli utenti, esegui il test, avvia la migrazione ed esporta un report.", - "genericSubtitle": "Importazione della libreria una tantum: connetti l'origine, mappa gli utenti, esegui il test, avvia la migrazione ed esporta un report.", + "genericSubtitle": "Importazione della biblioteca una tantum: connetti l'origine, mappa gli utenti, esegui il test, avvia la migrazione ed esporta un report.", "progress": "Progresso", "stepSourceConnection": "Connessione alla sorgente", "stepUserPathMapping": "Mappatura utenti e percorsi", @@ -921,7 +921,7 @@ "stepReport": "Rapporto", "stepReportTitle": "Rapporto sulla migrazione", "subtitleSource": "Configura la connessione al database all'istanza Booklore di origine.", - "genericSubtitleSource": "Configura la connessione alla tua applicazione di libreria sorgente.", + "genericSubtitleSource": "Configura la connessione alla tua applicazione di biblioteca sorgente.", "subtitleMappings": "Mappare gli utenti di origine per gli utenti di destinazione e tradurre i percorsi dei file.", "subtitleDryRun": "Visualizza in anteprima ciò che verrà importato prima di eseguire la migrazione in tempo reale.", "subtitleRun": "Avvia l'importazione dal vivo e monitora il suo progresso.", @@ -954,7 +954,7 @@ "errorInitialize": "Impossibile inizializzare le impostazioni di migrazione", "errorLoadSourceTypes": "Impossibile caricare i tipi di origine della migrazione supportati", "errorLoadTargetUsers": "Impossibile caricare gli utenti di destinazione", - "errorLoadLibraryFolders": "Impossibile caricare le cartelle della libreria di destinazione", + "errorLoadLibraryFolders": "Impossibile caricare le cartelle della biblioteca di destinazione", "noSourceUsersReturned": "Non è stato restituito alcun utente di origine", "userMappingSuggestionsLoaded": "Suggerimenti per la mappatura degli utenti caricati", "errorLoadSuggestions": "Impossibile caricare i suggerimenti per la mappatura degli utenti", @@ -1003,10 +1003,10 @@ "reportExported": "Rapporto esportato come {format}", "errorExportReport": "Impossibile esportare il rapporto sulla migrazione", "reasonNoTitleAuthorMatch": "Nessun libro corrispondente trovato per titolo o autore", - "reasonNoFilePathMatch": "Il percorso del file non corrisponde ad alcun libro in questa libreria", - "reasonNoFileHashMatch": "L'hash del file non corrisponde ad alcun libro in questa libreria", - "reasonNoIsbnMatch": "ISBN non corrisponde ad alcun libro in questa libreria", - "reasonNoAsinMatch": "L'ASIN non corrisponde ad alcun libro in questa libreria", + "reasonNoFilePathMatch": "Il percorso del file non corrisponde ad alcun libro in questa biblioteca", + "reasonNoFileHashMatch": "L'hash del file non corrisponde ad alcun libro in questa biblioteca", + "reasonNoIsbnMatch": "ISBN non corrisponde ad alcun libro in questa biblioteca", + "reasonNoAsinMatch": "L'ASIN non corrisponde ad alcun libro in questa biblioteca", "reasonInsufficientSourceData": "Metadati insufficienti per tentare la corrispondenza", "reasonAmbiguousIsbnMatch": "Più libri corrispondevano allo stesso ISBN", "reasonAmbiguousAsinMatch": "Più libri corrispondevano allo stesso ASIN", @@ -1149,13 +1149,13 @@ "subtitle": "Gestisci le tue librerie multimediali e attiva le scansioni dei contenuti.", "scanAll": "Scansiona tutto", "scanning": "Scansione...", - "addLibrary": "Aggiungi libreria", + "addLibrary": "Aggiungi biblioteca", "scan": "Scansiona", - "editLibrary": "Modifica libreria", + "editLibrary": "Modifica biblioteca", "refreshCovers": "Aggiorna le copertine", "syncMetadataToFiles": "Sincronizza i metadati sui file", - "deleteLibrary": "Elimina libreria", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "deleteLibrary": "Elimina biblioteca", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "booksUnit": "{count, plural, one {# libro} other {# libri}}", "folderCount": "{count, plural, =0 {nessuna cartella} one {# cartella} other {# cartelle} many {# cartelle}}", "fileMode": "Modalità file", @@ -1954,6 +1954,11 @@ } }, "providers": { + "tabs": { + "builtIn": "Integrati", + "external": "Esterni", + "attention": "Da verificare" + }, "availableSources": "Fonti disponibili", "saveChanges": "Salva modifiche", "discard": "Scarta", @@ -2025,6 +2030,115 @@ "aladin": "Aladin richiede una chiave TTB prima di poter essere abilitato" } }, + "providerDirectory": { + "title": "Disponibili per l'installazione", + "hint": "Ognuno funziona come un piccolo container accanto a BookOrbit. Copia il suo servizio compose nel file che esegue BookOrbit, avvialo con docker compose -d, quindi scegli Aggiungi.", + "updated": "Aggiornato {time}", + "bundled": "Elenco incluso con questa versione", + "loadFailed": "Impossibile caricare l'elenco dei provider integrati. Puoi comunque aggiungere qualsiasi provider tramite il suo indirizzo.", + "copy": "Copia Compose", + "copyLabel": "Copia il servizio Compose per {name}", + "copied": "{name} copiato. Incollalo sotto i servizi: nel tuo file Compose, quindi esegui docker compose up -d.", + "copyFailed": "Impossibile copiare negli appunti. I documenti del provider hanno la stessa snippet.", + "add": "Aggiungi", + "addLabel": "Aggiungi {name}", + "alreadyAdded": "Già aggiunto: {names}", + "allAdded": "Hai aggiunto tutti i provider in questa lista.", + "wasBuiltIn": "In precedenza integrato", + "docs": "Documenti", + "docsLabel": "Documentazione di {name}, si apre in una nuova scheda", + "media": { + "book": "Libri", + "audiobook": "Audiolibri", + "comic": "Fumetti" + } + }, + "buildYourOwn": { + "title": "Crea il tuo", + "body": "Manca una fonte? Un provider è un piccolo servizio web che risponde a tre richieste JSON, quindi va bene qualsiasi linguaggio. Parti dal template iniziale in Rust o Go, verificalo con il test di conformità e poi aggiungilo qui come qualsiasi altro.", + "links": { + "guide": "Guida alla creazione", + "starters": "Template", + "checker": "Verifica della conformità", + "suggest": "Suggerisci una fonte" + } + }, + "movedProviders": { + "title": "Alcune fonti non sono più integrate", + "description": "Le regole per i campi che elencano queste fonti per ora le saltano. Gli Id e i link già presenti sui tuoi libri verranno conservati.", + "run": "{name} ora funziona come provider autonomo: esegui {image}, quindi aggiungilo sotto Provider esterni.", + "closed": "{name} ha chiuso il servizio BookOrbit usato, quindi non può essere aggiunto. Rimuoverlo dalle regole del campo." + }, + "externalProviders": { + "title": "Fornitori esterni", + "description": "Servizi di metadati che vengono eseguiti al di fuori di BookOrbit, come un container o un servizio ospitato. Aggiungine uno tramite il suo indirizzo; una volta abilitato, appare nella ricerca, nel Book Dock e nelle regole del campo come qualsiasi altra fonte.", + "yourProviders": "I tuoi fornitori", + "emptyWithDirectory": "Non c'è ancora nulla. Scegli un provider pronto all'uso qui sotto, oppure aggiungine uno tramite il suo indirizzo.", + "add": "Aggiungi fornitore", + "empty": "Ancora nessun provider esterno. Qui puoi aggiungere qualsiasi servizio compatibile con le specifiche del fornitore di metadati.", + "edit": "Modifica {name}", + "toggle": "Abilita {name}", + "row": "{host} · versione {version}", + "useInFieldRules": "Usa nelle regole del campo", + "fieldRulesAdded": "{name} aggiunto a {count, plural, =0 {nessuna nuova regola di campo; è già presente in ogni regola che può compilare} one {# regola di campo} other {# regole di campo}}.", + "added": "{name} aggiunto. Rimane spento finché non lo abiliti.", + "saved": "{name} salvato.", + "removed": "{name} rimosso. Gli id e le valutazioni memorizzati sono state mantenuti.", + "purged": "{name} rimosso assieme ai suoi id e alle sue valutazioni.", + "status": { + "active": "Attivo", + "ready": "Pronto", + "stale": "Ultimo controllo non riuscito", + "unreachable": "Non raggiungibile", + "key_changed": "Chiave modificata", + "incompatible": "Incompatibile", + "authorizationUnreadable": "Header illeggibile" + }, + "authorizationUnreadableHint": "Impossibile decifrare l'intestazione di autorizzazione salvata, pertanto questo provider non verrà cercato. Inserisci nuovamente l'intestazione.", + "sheet": { + "createTitle": "Aggiungi provider esterno", + "description": "Un servizio HTTP conforme alle specifiche del provider di metadati dei libri. BookOrbit gli richiede i metadati senza mai eseguire il codice del provider.", + "identity": "{key} · versione {version}", + "test": "Prova", + "testing": "Prova in corso...", + "remove": "Rimuovi il fornitore", + "removeConfirm": "Rimuovere {name}?", + "removeConsequence": "Gli Id, le valutazioni e le voci delle regole di campo salvati rimangono memorizzati, quindi aggiungendolo di nuovo verranno ripristinati.", + "purge": "Rimuovi ed elimina i dati", + "purgeConfirm": "Rimuovere {name} e i relativi dati?", + "purgeConsequence": "Elimina ogni Id e valutazione salvati da questo provider. Questa azione non può essere annullata." + }, + "fields": { + "baseUrl": "Indirizzo", + "baseUrlHint": "URL di base del provider, come http://provider:8080 per un container sulla stessa rete Docker.", + "authorization": "Intestazione di autorizzazione", + "authorizationHint": "Opzionale. Viene inviata esattamente come inserita, ad esempio \"Bearer abc123\". Viene salvata crittografata e non verrà più mostrata.", + "authorizationSaved": "È stata salvata un'intestazione. Inseriscine una nuova per sostituirla.", + "clearAuthorization": "Rimuovi l'intestazione salvata", + "allowPrivate": "Consenti indirizzo privato", + "allowPrivateHint": "Necessario per un fornitore presente nella tua rete o in un container accanto a BookOrbit. Lascialo vuoto per un fornitore su Internet.", + "timeout": "Timeout (secondi)", + "timeoutHint": "Da {min} a {max} secondi.", + "privacy": "Il provider riceve i titoli, gli autori e gli ISBN dei libri relativi alle richieste effettuate." + }, + "test": { + "ok": "{name} ha risposto in {latency} ms con {count, plural, one {# risultato} other {# risultati}}.", + "sample": "Primo risultato: {title}", + "failed": "Test fallito: {error}" + }, + "errors": { + "privateAddress": "Questo indirizzo è su una rete privata. Attiva Consenti indirizzi privati per raggiungere un fornitore lì.", + "unreachable": "BookOrbit non è riuscito a raggiungere un fornitore a quell'indirizzo.", + "unauthorized": "Il fornitore ha rifiutato l'intestazione dell'autorizzazione.", + "invalidInfo": "Questo indirizzo ha risposto, ma non con informazioni provider utilizzabili.", + "invalidUrl": "Inserisci l'indirizzo del fornitore come un URL http o https completo, senza credenziali.", + "keyTaken": "Un fornitore con la stessa chiave è già registrato.", + "keyChanged": "Questo indirizzo appartiene a un fornitore diverso. Aggiungilo invece come nuovo fornitore.", + "notReady": "Esegui un test con successo prima di abilitare questo provider.", + "authorizationUnreadable": "L'intestazione di autorizzazione salvata non può essere decifrata. Inseriscila nuovamente prima di abilitare questo fornitore.", + "generic": "La richiesta al fornitore è fallita." + } + }, "fieldRules": { "clearAllProviders": "Cancella tutti i provider", "clearAll": "Cancella tutto", @@ -2573,7 +2687,7 @@ "saved": "Preferenze dei metadati salvate", "saveFailed": "Impossibile salvare le preferenze dei metadati. Controllare la connessione e riprovare.", "globalReset": "Regole globali di campo reimpostate ai valori predefiniti di sistema", - "libraryReset": "Libreria ripristinata alle regole globali", + "libraryReset": "Biblioteca ripristinata alle regole globali", "resetFailed": "Impossibile ripristinare le preferenze dei metadati. Controllare la connessione e riprovare." } } @@ -2820,7 +2934,7 @@ "confidenceThreshold": "Soglia di confidenza: {value}%", "thresholdIgnored": "(ignorato in modalità Solo incorporato)", "destinationLibrary": "Biblioteca di destinazione", - "selectLibrary": "Seleziona una libreria...", + "selectLibrary": "Seleziona una biblioteca...", "metadataMode": "Modalità metadati", "metadataModeSafeMerge": "Unione sicura (consigliata)", "metadataModeFetchedOnly": "Solo recuperato", @@ -2833,7 +2947,7 @@ "autoFetchDisabled": "Recupero automatico disabilitato", "autoFinalizeEnabled": "Finalizzazione automatica abilitata", "autoFinalizeDisabled": "Finalizzazione automatica disabilitata", - "destinationLibraryUpdated": "Libreria di destinazione aggiornata", + "destinationLibraryUpdated": "Biblioteca di destinazione aggiornata", "destinationFolderUpdated": "Cartella di destinazione aggiornata", "confidenceThresholdUpdated": "Soglia di confidenza aggiornata", "metadataModeUpdated": "Modalità metadati aggiornata" @@ -2945,7 +3059,7 @@ }, "howItWorks": { "title": "Come viene scelto un percorso.", - "summary": "Una libreria con un proprio schema ha la precedenza. Tutte le altre seguono l’impostazione globale per l’organizzazione. Modificare uno schema non sposta i libri già presenti sul disco; la modifica si applica ai nuovi caricamenti." + "summary": "Una biblioteca con un proprio schema ha la precedenza. Tutte le altre seguono l’impostazione globale per l’organizzazione. Modificare uno schema non sposta i libri già presenti sul disco; la modifica si applica ai nuovi caricamenti." }, "filterRules": "Regole di filtro", "librariesGroup": "Biblioteche", @@ -2953,7 +3067,7 @@ "noRuleMatches": "Nessuna regola corrisponde \"{query}\".", "unsavedMarker": "Modifiche non salvate", "backToRules": "Torna alle regole di denominazione", - "appliesToLibraries": "{count, plural, =0 {Nessuna libreria usa questo predefinito} one {Applica a # libreria} other {Applica a # librerie}}", + "appliesToLibraries": "{count, plural, =0 {Nessuna biblioteca usa questo predefinito} one {Applica a # biblioteca} other {Applica a # librerie}}", "downloadScope": "Scarica ed esporta ZIP", "badgeInherits": "Eredita predefinito", "badgeUnsaved": "Non salvato", @@ -2962,12 +3076,12 @@ "useGlobalDefault": "Usa il valore predefinito globale", "resetToShipped": "Ripristina le impostazioni predefinite", "addOverride": "Aggiungi una override", - "inheritsNotice": "Questa libreria segue {base}. Aggiungi un override per dargli uno schema proprio.", - "libraryRuleHint": "Sostituisce {base} solo per questa libreria.", + "inheritsNotice": "Questa biblioteca segue {base}. Aggiungi un override per dargli uno schema proprio.", + "libraryRuleHint": "Sostituisce {base} solo per questa biblioteca.", "scopeLibrary": "Si applica solo per caricare in {name}.", "scopeDownload": "Si applica a ogni singolo file di download e a ogni file all'interno di un ZIP di esportazione.", - "scopeGlobal": "{count, plural, one {Si applica a # libreria che non ha uno schema proprio.} other {Si applica a # librerie che non hanno uno schema proprio.}}", - "scopeGlobalNone": "Nessuna libreria utilizza questo valore predefinito in questo momento; ogni libreria in questa modalità ha un suo modello.", + "scopeGlobal": "{count, plural, one {Si applica a # binlioteca che non ha uno schema proprio.} other {Si applica a # biblioteche che non hanno uno schema proprio.}}", + "scopeGlobalNone": "Nessuna biblioteca utilizza questo valore predefinito in questo momento; ogni biblioteca in questa modalità ha un suo modello.", "unbalancedOptional": "Un gruppo opzionale manca della relativa parentesi angolare di chiusura", "unbalancedToken": "Un token manca della sua parentesi di chiusura", "structure": "Struttura", @@ -3038,7 +3152,7 @@ }, "unknownModifier": "Modificatore sconosciuto \"{modifier}\". Sarà ignorato, lasciando invariato il valore.", "rulesNav": "Regole di denominazione", - "railFoot": "Una libreria senza un proprio modello segue il valore predefinito sottostante.", + "railFoot": "Una biblioteca senza un proprio modello segue il valore predefinito sottostante.", "usedBy": "Usato da {libraries}", "followsBase": "Segue la {base}.", "copyPattern": "Copia modello", @@ -3091,7 +3205,7 @@ }, "kobo": { "title": "Kobo Sincronizza", - "subtitle": "Accoppia il tuo dispositivo Kobo per sincronizzare la tua libreria.", + "subtitle": "Accoppia il tuo dispositivo Kobo per sincronizzare la tua biblioteca.", "copy": "Copia", "never": "Mai", "justNow": "Proprio adesso", @@ -3129,7 +3243,7 @@ "syncHighlights": "Sincronizza i momenti salienti di BookOrbit su Kobo", "syncHighlightsHint": "Invia i momenti salienti realizzati in BookOrbit o KOReader al tuo Kobo. I momenti salienti di Kobo vengono importati in BookOrbit anche quando è disattivato. Le annotazioni collegate sincronizzano le modifiche e le eliminazioni in entrambi i modi. Richiede la consegna KEPUB; il libro su Kobo deve essere il KEPUB scaricato da BookOrbit.", "storeSync": "Includi i titoli del negozio Kobo", - "storeSyncHint": "Consegna anche libri dal tuo account Kobo, incluso Kobo Plus e acquisti, accanto alla tua libreria BookOrbit. Senza questo, solo i libri BookOrbit raggiungono il dispositivo. I titoli del negozio vengono scaricati direttamente da Kobo e non vengono aggiunti alla tua libreria BookOrbit.", + "storeSyncHint": "Consegna anche libri dal tuo account Kobo, incluso Kobo Plus e acquisti, accanto alla tua biblioteca BookOrbit. Senza questo, solo i libri BookOrbit raggiungono il dispositivo. I titoli del negozio vengono scaricati direttamente da Kobo e non vengono aggiunti alla tua biblioteca BookOrbit.", "fullSizeCovers": "Copertine a grandezza naturale", "fullSizeCoversHint": "Invia ogni copertina alla risoluzione dello schermo del tuo Kobo, così le immagini in standby e le copertine a schermo intero rimangono nitide. Disattiva questa opzione per inviare copertine più piccole e velocizzare la sincronizzazione. Una copertina già presente sul Kobo viene aggiornata solo quando cambia quella del libro.", "convertKepub": "Converti in KEPUB", @@ -3165,7 +3279,7 @@ "noFailedActivity": "Nessuna attività Kobo non riuscita nella cronologia recente.", "noActivityYet": "Nessuna attività Kobo ancora.", "event": { - "librarySync": "La libreria ha controllato gli aggiornamenti", + "librarySync": "La biblioteca ha controllato gli aggiornamenti", "bookDownload": "Libro scaricato", "progressUpdate": "Posizione di lettura aggiornata", "annotationsPull": "Evidenziazioni inviate a Kobo", @@ -3183,7 +3297,7 @@ "imported": "Importato" }, "failure": { - "librarySync": "Il controllo della libreria non è stato completato", + "librarySync": "Il controllo della biblioteca non è stato completato", "bookDownload": "Il download non è stato completato", "progressUpdate": "La posizione di lettura non è stata aggiornata", "annotationsPull": "I punti salienti non sono stati inviati", @@ -3210,8 +3324,8 @@ "twoWaySyncEnabled": "Sincronizzazione bidirezionale abilitata", "deviceProgressSaved": "Avanzamento del dispositivo salvato", "summary": { - "noLibraryUpdatesPending": "Nessun aggiornamento della libreria in sospeso per questo dispositivo", - "libraryUpdatesPrepared": "{count, plural, one {# aggiornamento della libreria preparato per il dispositivo} other {# aggiornamenti della libreria preparati per il dispositivo} many {# aggiornamenti della libreria preparati per il dispositivo}}", + "noLibraryUpdatesPending": "Nessun aggiornamento della biblioteca in sospeso per questo dispositivo", + "libraryUpdatesPrepared": "{count, plural, one {# aggiornamento della biblioteca preparato per il dispositivo} other {# aggiornamenti della biblioteca preparati per il dispositivo} many {# aggiornamenti della biblioteca preparati per il dispositivo}}", "bookDownloadedBy": "{title} è stato scaricato da {device}", "booksDownloaded": "{count, plural, one {# libro scaricato} other {# libri scaricati} many {# libri scaricati}}", "progressUpdatesSyncedFor": "{count, plural, one {# aggiornamento sullo stato di avanzamento sincronizzato per {title}} other {# aggiornamenti sui progressi sincronizzati per {title}} many {# aggiornamenti sui progressi sincronizzati per {title}}}", @@ -3406,6 +3520,12 @@ "syncEnabled": "KOReader sincronizzazione abilitata", "syncDisabled": "KOReader sincronizzazione disabilitata", "toggleSyncFailed": "Impossibile attivare/disattivare la sincronizzazione", + "pluginLibrary": "Libreria Plugin", + "hideAudioOnlyBooks": "Nascondi libri solo audiolibro", + "hideAudioOnlyBooksHint": "KOReader non può riprodurre l'audio, quindi i libri con solo file audio rimangono fuori dalle liste del plugin, ricerca e download, così come una biblioteca contenente nient'altro. I libri che hanno anche un ebook sono ancora visualizzati.", + "audioOnlyBooksHidden": "Libri solo-audio nascosti nel plugin", + "audioOnlyBooksShown": "Libri solo-audio mostrati nel plugin", + "toggleAudioOnlyBooksFailed": "Aggiornamento dell'impostazione della libreria del plugin non riuscito", "syncUrlCopied": "Sincronizza URL copiato negli appunti", "syncUrlCopyFailed": "Impossibile copiare la sincronizzazione URL", "statusRefreshed": "Stato di sincronizzazione aggiornato", @@ -3456,13 +3576,16 @@ "reviewDismissed": "Libro ritirato dalla recensione", "reviewDismissFailed": "Impossibile aggiornare i libri da rivedere", "reviewAllDismissed": "{count, plural, =0 {Non ha cancellato nessun libro dalla recensione} one {Eliminato # libro dalla recensione} other {Eliminato # libri dalla recensione}}", - "reviewDismissAllFailed": "Impossibile eliminare tutti i libri dalla recensione" + "reviewDismissAllFailed": "Impossibile eliminare tutti i libri dalla recensione", + "suggestedLinked": "{count, plural, one {Collegato # libro suggerito} other {Collegati # libri suggeriti}}", + "suggestedPartlyLinked": "{linked, plural, one {Collegato # libro suggerito.} other {Collegati # libri suggeriti.}} {failed, plural, one {# non può essere collegato e rimane nella lista.} other {# non possono essere collegati e rimangono nella lista.}}", + "suggestedLinkFailed": "Impossibile collegare i libri suggeriti" }, "modal": { "linkTitle": "Collega il libro KOReader", "changeTitle": "Modifica il collegamento KOReader", "bookOrbitBook": "BookOrbit libro", - "searchPlaceholder": "Cerca nella tua libreria BookOrbit", + "searchPlaceholder": "Cerca nella tua biblioteca BookOrbit", "minChars": "Inserisci almeno 2 caratteri.", "searching": "Ricerca...", "noBooksFound": "Nessun libro trovato.", @@ -3495,7 +3618,7 @@ "changeLinkTitle": "Modifica il collegamento KOReader", "linkBookTitle": "Collega il libro KOReader", "bookOrbitBook": "BookOrbit libro", - "searchLibraryPlaceholder": "Cerca nella tua libreria BookOrbit", + "searchLibraryPlaceholder": "Cerca nella tua biblioteca BookOrbit", "enterMinChars": "Inserisci almeno 2 caratteri.", "searching": "Ricerca...", "noBooksFound": "Nessun libro trovato.", @@ -3517,7 +3640,21 @@ "manualUnlinkConfirmBody": "Rimuovere il link manuale a {title} e restituire questo libro alla lista delle recensioni. Le future sincronizzazioni utilizzeranno una corrispondenza automatica se esiste. Le statistiche già sincronizzate rimarranno sul loro attuale libro BookOrbit.", "reviewDismissConfirmBody": "Questo lo rimuove dai tuoi libri per recensire. La corrispondenza automatica e i dati di sincronizzazione esistenti sono mantenuti. Se un dispositivo segnala nuovamente l'hash senza una corrispondenza, può riapparire.", "reviewDismissAllConfirmTitle": "{count, plural, =0 {Nessun libro da recensire} one {Ignora tutto # libro da recensire?} other {Ignora tutti i # libri da recensire?}}", - "reviewDismissAllConfirmBody": "Questo cancella tutti i tuoi libri per rivedere la lista, incluse le voci su altre pagine. La corrispondenza automatica e i dati di sincronizzazione esistenti sono mantenuti. Se un dispositivo segnala un hash di nuovo senza una corrispondenza, può riapparire." + "reviewDismissAllConfirmBody": "Questo cancella tutti i tuoi libri per rivedere la lista, incluse le voci su altre pagine. La corrispondenza automatica e i dati di sincronizzazione esistenti sono mantenuti. Se un dispositivo segnala un hash di nuovo senza una corrispondenza, può riapparire.", + "copyNote": "Questa copia di KOReader è un file diverso da quello presente in BookOrbit. Lo stato di lettura, la valutazione, il tempo di lettura e l'avanzamento (in percentuale) verranno sincronizzati. Le evidenziazioni e i segnalibri non verranno sincronizzati. Per sincronizzare tutto, scarica il libro su KOReader da BookOrbit.", + "differentCopyHint": "File diverso da quello in BookOrbit: sincronizzazione dei progressi in percentuale, evidenziazioni e segnalibri non sincronizzati.", + "suggestedMatch": "Corrispondenza suggerita", + "possibleMatches": "{count, plural, one {# corrispondenza possibile} other {# corrispondenze possibili}}", + "morePossibleMatches": "{count, plural, one {Più di # corrispondenza possibile} other {Più di # corrispondenze possibili}}", + "possibleMatchesHint": "Libri nella tua biblioteca con lo stesso titolo e gli stessi autori. Verifica l'edizione prima di effettuare il collegamento.", + "reviewMatch": "Controlla la corrispondenza", + "chooseMatch": "Scegli la corrispondenza", + "linkSuggested": "Link suggeriti ({count})", + "bulkLinkTitle": "{count, plural, one {Collegare # libro suggerito?} other {Collegare # libri suggeriti?}}", + "bulkLinkDescription": "Ogni libro di KOReader qui sotto ha lo stesso titolo e lo stesso autore di un libro nella tua biblioteca. Controlla la lista prima di collegare.", + "bulkLinkConfirm": "{count, plural, one {Collega # libro} other {Collega # libri}}", + "bulkLinkListLabel": "Collegamenti suggeriti", + "openCandidate": "Apri {title} in una nuova scheda" }, "remove": "Rimuovi", "removing": "Rimozione...", @@ -3544,7 +3681,7 @@ }, "opds": { "title": "OPDS", - "subtitle": "Collega app di lettura compatibili con OPDS come KOReader o Thorium Reader alla tua libreria.", + "subtitle": "Collega app di lettura compatibili con OPDS come KOReader o Thorium Reader alla tua biblioteca.", "copy": "Copia", "loadFailed": "Impossibile caricare", "server": "Server", @@ -3961,7 +4098,7 @@ "credential": "Credenziale", "credentialRequired": "Obbligatorio", "credentialNone": "Nessuno", - "trustWarning": "Un plugin viene eseguito all'interno di BookOrbit con accesso al database, file di libreria e chiave di crittografia. Installane uno solo da una fonte affidabile e leggi prima di tutto.", + "trustWarning": "Un plugin viene eseguito all'interno di BookOrbit con accesso al database, file di biblioteca e chiave di crittografia. Installane uno solo da una fonte affidabile e leggi prima di tutto.", "sectionTitle": "Plugin", "removeUnusedWarning": "Il plugin verrà eliminato definitivamente dal server." }, @@ -4024,7 +4161,7 @@ }, "automation": { "title": "Automazioni", - "pipeline": "Al termine del download, il file passa attraverso il Book Dock, dove vengono rilevati titolo e autore per assegnargli il nome corretto e archiviarlo in modo appropriato. Viene quindi spostato automaticamente nella libreria di destinazione della richiesta. Il tuo intervento è necessario solo se il controllo dell’importazione è attivo e il file non corrisponde a quanto richiesto.", + "pipeline": "Al termine del download, il file passa attraverso il Book Dock, dove vengono rilevati titolo e autore per assegnargli il nome corretto e archiviarlo in modo appropriato. Viene quindi spostato automaticamente nella biblioteca di destinazione della richiesta. Il tuo intervento è necessario solo se il controllo dell’importazione è attivo e il file non corrisponde a quanto richiesto.", "groupDownloads": "Download automatici", "groupImports": "Controlli all'importazione", "stateOn": "Attivo", @@ -4070,7 +4207,7 @@ "autoSearchMaxAgeUnit": "giorni", "verify": "Controllare le importazioni in relazione alla domanda", "verifyOnHint": "Ogni file scaricato viene confrontato con il libro che è stato richiesto prima di essere archiviato. Tutto ciò che non ha una corrispondenza sufficiente attende nel Book Dock che qualcuno lo controlli.", - "verifyOffHint": "Nulla è trattenuto per la revisione. Ogni download viene archiviato non appena ne vengono letti il ​​titolo e l'autore, quindi una versione etichettata erroneamente arriva nella tua libreria senza preavviso.", + "verifyOffHint": "Nulla è trattenuto per la revisione. Ogni download viene archiviato non appena ne vengono letti il ​​titolo e l'autore, quindi una versione etichettata erroneamente arriva nella tua biblioteca senza preavviso.", "verificationEnabled": "Il controllo dell'importazione è attivo", "verificationDisabled": "Il controllo dell'importazione è disattivato. I download verranno archiviati senza revisione", "verification": "Soglia di verifica", @@ -4078,7 +4215,7 @@ "destinations": "Destinazioni predefinite", "destinationsHint": "Dove viene archiviato un libro quando nessuno ha scelto una biblioteca per esso. Esiste un valore predefinito per mezzo, perché il mezzo viene selezionato prima che venga eseguita la ricerca ed è l'unica cosa nota del file così presto. Prima di queste viene utilizzata una destinazione bloccata dal richiedente o una destinazione scelta al momento dell'approvazione.", "destinationUnset": "Nessun predefinito", - "destinationHiddenLibrary": "Una libreria che non puoi vedere", + "destinationHiddenLibrary": "Una biblioteca che non puoi vedere", "destinationHiddenFolder": "Una cartella che non puoi vedere", "selectFolder": "Scegli una cartella", "destinationLibraryFor": "Libreria predefinita per richieste di {medium}", @@ -4187,8 +4324,8 @@ "appearanceTheme": "Tema, colore principale, sfondo e raggio dell'angolo.", "appearanceBookCovers": "Ombre della copertina, effetti sul dorso e immagini segnaposto.", "appearanceIcons": "Scegli lo stile dell'icona utilizzato nell'app.", - "appearanceLayout": "Visualizzazione, densità e spaziatura predefinite della libreria.", - "appearanceBehavior": "Come reagisce la libreria mentre navighi e ordini.", + "appearanceLayout": "Visualizzazione, densità e spaziatura predefinite della biblioteca.", + "appearanceBehavior": "Come reagisce la biblioteca mentre navighi e ordini.", "appearanceLanguage": "Lingua dell'interfaccia e formati regionali.", "readerEbook": "Caratteri, spaziatura e comportamento della pagina per gli eBook.", "readerPdf": "Rendering, zoom e adattamento della pagina per i PDF.", @@ -4218,13 +4355,13 @@ "readerTts": "Predefiniti voce, velocità e narrazione ad alta voce.", "adminTts": "Motori di pronuncia disponibili per ogni lettore su questo server." }, - "backToApp": "Ritorno alla libreria", + "backToApp": "Ritorno alla biblioteca", "pageDescriptions": { "profile": "Il tuo nome, foto, fuso orario e monitoraggio dei risultati, oltre alla tua password e ai provider di accesso collegati a questo account.", - "appearance-theme": "Scegli dove salvare le impostazioni dell'aspetto, quindi imposta lo stile, lo schema di colori, l'accento, gli angoli, la luminosità della superficie e il motivo dietro la tua libreria.", + "appearance-theme": "Scegli dove salvare le impostazioni dell'aspetto, quindi imposta lo stile, lo schema di colori, l'accento, gli angoli, la luminosità della superficie e il motivo dietro la tua biblioteca.", "appearance-book-covers": "Come copre guardare attraverso l'app: segnaposto arte per libri senza uno, come le coperture si adattano alle loro slot, agli effetti della colonna vertebrale e della lucentezza e alla tinta di copertina sulle pagine dei libri.", "appearance-icons": "Carica le tue icone da usare insieme al set integrato per librerie, scopi intelligenti e collezioni.", - "appearance-layout": "Dimensioni della copertina e spaziatura per la griglia della libreria, la copertina mostrata per una serie collassata e come la griglia dell'autore è disposta.", + "appearance-layout": "Dimensioni della copertina e spaziatura per la griglia della biblioteca, la copertina mostrata per una serie collassata e come la griglia dell'autore è disposta.", "appearance-behavior": "Che cosa apre un libro da una griglia o una lista fa, se le serie crollano in una carta, e se le richieste di libro appaiono in questo account.", "appearance-language": "La lingua BookOrbit usa per menu, etichette e messaggi e i formati regionali per date e numeri.", "reader-ebook": "Predefiniti per il lettore di eBook: se i nuovi libri iniziano con le impostazioni, il flusso di pagine e le colonne, il tema e la tipografia come il carattere, la dimensione e la spaziatura.", @@ -4237,12 +4374,12 @@ "notifications": "Scegli quali eventi ti notificano, dalle scansioni finite e dai metadati recupera i nomi dei file, le importazioni e i risultati del Dock del libro.", "privacy": "Decidere quanto degli amministratori delle attività di lettura possono vedere, visualizzare in anteprima il profilo condiviso e controllare chi lo ha visualizzato.", "restrictions": "Limiti di contenuto impostati su questo account, come i voti per età e i contenuti nascosti, e ciò che tengono fuori dalle tue librerie.", - "libraries": "Ogni libreria a colpo d'occhio: le sue cartelle, ciò che contiene, come viene scansionata e quando è stata eseguita. Aggiungere, modificare o ridisegnare le librerie qui.", - "metadata-providers": "Attivare o disattivare le fonti dei metadati, aggiungere chiavi API o cookie dove una fonte ne ha bisogno, e testare le credenziali contro il servizio live.", + "libraries": "Ogni biblioteca a colpo d'occhio: le sue cartelle, ciò che contiene, come viene scansionata e quando è stata eseguita. Aggiungere, modificare o ridisegnare le librerie qui.", + "metadata-providers": "Attivare o disattivare le fonti dei metadati, aggiungere chiavi API o cookie se richiesto dalla fonte, e testare le credenziali per il servizio.", "metadata-field-rules": "Scegli quali provider riempiono ogni campo di metadati e in quale ordine, come vengono uniti i valori e come vengono raccolti generi e ID provider.", "metadata-custom-fields": "Creare i propri campi di metadati, scegliere il loro tipo e le librerie che li utilizzano, e riordinare o archiviare.", "metadata-score": "Decidere quanto conta ogni campo metadati verso il punteggio di completezza mostrato in ogni libro.", - "metadata-auto-fetch": "Recupera automaticamente i metadati del libro quando i libri vengono importati o mancano i dettagli, con override per ogni libreria.", + "metadata-auto-fetch": "Recupera automaticamente i metadati del libro quando i libri vengono importati o mancano i dettagli, con override per ogni biblioteca.", "metadata-authors": "Recuperare biografie e foto dell'autore automaticamente, scegliere le fonti dell'ordine sono provati, e decidere quali autori si qualificano.", "metadata-search-cache": "Mantenere le risposte del provider in modo da ripetere le ricerche sono veloci e funzionano ancora quando un provider è giù, e controllare quanto tempo e quanto viene mantenuto.", "metadata-genre-blocklist": "I valori di genere elencati qui sono cancellati dai risultati del provider prima che i metadati siano scritti, quindi le etichette come Audiolook rimangono fuori dai libri.", @@ -4380,7 +4517,7 @@ "pagesRead": "Pagine lette", "hoursRead": "Ore lette", "longestBook": "Libro più lungo finito", - "librarySize": "Dimensione libreria", + "librarySize": "Dimensione biblioteca", "annotations": "Annotazioni", "booksRated": "Libri valutati", "genresFinished": "Generi finiti", @@ -4646,7 +4783,7 @@ "access": "accesso", "restrictions": "restrizioni" }, - "sharedAccount": "Conto condiviso", + "sharedAccount": "Account condiviso", "sharedAccountHint": "Nessuna password. L'accesso è consentito solo tramite collegamenti magici.", "sharedAccountManageHint": "Gestisci i collegamenti di accesso da Impostazioni - Collegamenti magici.", "username": "Nome utente", @@ -4654,7 +4791,7 @@ "email": "E-mail", "optional": "(facoltativo)", "libraryAccess": "Accesso alla biblioteca", - "noLibrariesSelected": "Nessuna libreria selezionata. L'utente non può visualizzare alcun libro.", + "noLibrariesSelected": "Nessuna biblioteca selezionata. L'utente non può visualizzare alcun libro.", "permissions": "Autorizzazioni", "presetStandard": "Norma", "presetAdmin": "Ammin", @@ -4670,9 +4807,9 @@ "bookRequests": "Richieste di libri", "bookDock": "Book Dock", "devices": "Dispositivi", - "readingIntegrations": "Lettura delle integrazioni", + "readingIntegrations": "Integrazioni di lettura", "emailNotifications": "E-mail e Notifiche", - "libraryConfiguration": "Configurazione della libreria", + "libraryConfiguration": "Configurazione della biblioteca", "usersSecurity": "Utenti e sicurezza", "system": "Sistema" }, @@ -4722,7 +4859,7 @@ "errors": { "updateUser": "Impossibile aggiornare l'utente", "updatePermissions": "Impossibile aggiornare le autorizzazioni", - "updateLibraryAccess": "Impossibile aggiornare l'accesso alla libreria", + "updateLibraryAccess": "Impossibile aggiornare l'accesso alla biblioteca", "updateContentFilters": "Impossibile aggiornare i filtri dei contenuti", "emailRequired": "L'e-mail è obbligatoria", "createSharedAccount": "Impossibile creare un account condiviso", @@ -4767,6 +4904,10 @@ "clearAll": "Cancella", "permissionsHint": "Cosa è consentito fare a questo account. {granted} di {total} concessi.", "groupLegend": "{group}: {granted} di {total} concesso", + "permissionNotes": { + "editMetadataNowhere": "Non ancora attivo: richiede anche il ruolo di Editor o Proprietario su una biblioteca, impostabile in Impostazioni > Librerie > Accesso.", + "editMetadataExcept": "Non in {libraries}, dove questo account è un Visualizzatore. Imposta Editor o Proprietario in Impostazioni > Librerie > Accesso." + }, "presets": { "label": "Autorizzazione preimpostata", "none": "Nessuno", @@ -4834,18 +4975,18 @@ "subtitle": "Controlla se i visitatori possono creare i propri account.", "label": "Consenti l'autoregistrazione", "hint": "Se abilitato, la pagina di accesso mostra un collegamento per creare un account.", - "enabledNotice": "I nuovi account iniziano con l'accesso predefinito alla libreria riportato di seguito e senza altre autorizzazioni. Concedere le autorizzazioni prima che possano utilizzare le funzionalità protette.", + "enabledNotice": "I nuovi account iniziano con l'accesso predefinito alla biblioteca riportato di seguito e senza altre autorizzazioni. Concedere le autorizzazioni prima che possano utilizzare le funzionalità protette.", "loadError": "Impossibile caricare l'impostazione di autoregistrazione", "saveError": "Impossibile aggiornare l'impostazione di autoregistrazione" }, "defaultLibraryAccess": { - "title": "Accesso alla libreria predefinito", + "title": "Accesso predefinito alla biblioteca", "subtitle": "Accesso visualizzatore concesso agli utenti autoregistrati e con provisioning OIDC.", "description": "Seleziona le biblioteche assegnate automaticamente ai nuovi utenti.", - "noLibraries": "Nessuna libreria disponibile.", + "noLibraries": "Nessuna biblioteca disponibile.", "save": "Salva le impostazioni predefinite", "saving": "Salvataggio...", - "saveError": "Impossibile salvare l'accesso predefinito alla libreria" + "saveError": "Impossibile salvare l'accesso predefinito alla biblioteca" }, "filters": { "search": "Cerca utenti", @@ -5030,7 +5171,7 @@ "hub": { "title": "Annotazioni", "totalCount": "{count} totale", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "noteCount": "{count, plural, =0 {nessuna nota} one {# nota} other {# note} many {# note}}", "export": "Esportazione", "exportMarkdown": "Markdown", @@ -5046,16 +5187,16 @@ "trash": "Cestino" }, "empty": { - "noMatch": "Nessun punto in evidenza corrisponde ai tuoi filtri.", + "noMatch": "Nessuna evidenziazione corrisponde ai tuoi filtri.", "resetFilters": "Reimposta i filtri", "trashEmpty": "Il cestino è vuoto", - "noAnnotations": "Nessuna annotazione ancora. I momenti salienti che crei sul Web o sul tuo e-reader vengono visualizzati qui.", + "noAnnotations": "Nessuna annotazione. Le evidenziazioni che crei sul web o sul tuo e-reader compariranno qui.", "noMatchHint": "Prova una frase più breve oppure cancella i filtri del colore e del libro.", - "noAnnotationsBody": "Tutto ciò che contrassegni, in qualsiasi libro e su qualsiasi dispositivo, viene raccolto qui.", + "noAnnotationsBody": "Tutto ciò che evidenzi, in qualsiasi libro e su qualsiasi dispositivo, viene raccolto qui.", "readHere": "Leggi qui", "readHereBody": "Seleziona il testo nel lettore e scegli un colore.", "syncKobo": "Sincronizza un Kobo", - "syncKoboBody": "I contrassegni effettuati sul dispositivo arrivano alla successiva sincronizzazione.", + "syncKoboBody": "Le evidenziazioni create sul dispositivo appariranno alla prossima sincronizzazione.", "syncKoreader": "Sincronizza KOReader", "syncKoreaderBody": "Il plugin carica le annotazioni con le loro posizioni.", "goToLibrary": "Vai alla biblioteca" @@ -5069,7 +5210,8 @@ "bulkRestored": "{count, plural, =0 {Restaurato senza annotazioni} one {Restaurato # annotazione} other {Restaurato # annotazioni} many {Restaurato # annotazioni}}", "bulkRecolored": "{count, plural, =0 {Ricolorata senza annotazioni} one {Ricolorato # annotazione} other {Ricolorato # annotazioni} many {Ricolorato # annotazioni}}", "bulkRestyled": "{count, plural, =0 {Restyling senza annotazioni} one {Rinnovato # annotazione} other {Rinnovato # annotazioni} many {Rinnovato # annotazioni}}", - "noteSaved": "Nota salvata" + "noteSaved": "Nota salvata", + "purgePendingDeviceSync": "Un dispositivo sincronizzato deve ancora rimuovere questa annotazione. Sincronizza quel dispositivo, quindi eliminala definitivamente." }, "railTitle": "{marks} voti · {books} libri", "lastTwelveMonths": "Ultimi 12 mesi", @@ -5080,8 +5222,8 @@ "allBooks": "Tutti i {count} libri", "behindCount": "{count, plural, one {# dietro} many {# dietro} other {# dietro}}", "busiestWeek": "Settimana più impegnativa", - "longestQuiet": "Il tratto tranquillo più lungo", - "mostMarked": "Il più marcato", + "longestQuiet": "Intervallo di inattività più lungo", + "mostMarked": "Più evidenziati", "weekCount": "{count, plural, one {# settimana} many {# settimane} other {# settimane}}", "anchorsUnplaced": "{count, plural, one {#} many {# ancore} other {# ancore}}", "reviewThem": "Controllali", @@ -5114,10 +5256,16 @@ }, "activitySummary": "{count, plural, one {# evidenzia tra {from} e {to}} many {# momenti salienti tra {from} e {to}} other {# momenti salienti tra {from} e {to}}}", "book": "Libro", - "needsReview": "Da revisionare" + "needsReview": "Da revisionare", + "trashToggle": "{count, plural, one {Elimina # annotazione} other {Elimina # annotazioni}}", + "purgeDialog": { + "title": "Eliminare definitivamente?", + "description": "Questa annotazione e la relativa nota verranno rimosse definitivamente. Non potranno essere ripristinate dal cestino." + } }, "sources": { "web": "Rete", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -5256,6 +5404,7 @@ "BookRequest": "Richiesta di libro", "DownloadClient": "Scarica il client", "RequestIndexer": "Indicizzatore", + "MetadataHttpProvider": "Fornitori di metadati", "Author": "Autore", "AppSettings": "Impostazioni dell'applicazione", "Genre": "Genere", @@ -5303,17 +5452,18 @@ "UserUnlock": "Sblocca l'account", "ReadingInsightsSharingUpdate": "Aggiorna la condivisione degli insight", "ReadingInsightsProfileView": "Visualizza approfondimenti condivisi", - "LibraryCreate": "Crea libreria", - "LibraryUpdate": "Aggiorna libreria", - "LibraryDelete": "Elimina libreria", - "LibraryFolderAdd": "Aggiungi la cartella della libreria", - "LibraryFolderRemove": "Rimuovi la cartella della libreria", + "LibraryCreate": "Crea biblioteca", + "LibraryUpdate": "Aggiorna biblioteca", + "LibraryDelete": "Elimina biblioteca", + "LibraryFolderAdd": "Aggiungi la cartella della biblioteca", + "LibraryFolderRemove": "Rimuovi la cartella della biblioteca", "LibraryAccessGrant": "Concedere l'accesso alla biblioteca", - "LibraryAccessUpdate": "Aggiorna l'accesso alla libreria", + "LibraryAccessUpdate": "Aggiorna l'accesso alla biblioteca", "LibraryAccessRevoke": "Revocare l'accesso alla biblioteca", "LibraryWriteMetadataToFiles": "Scrivere metadati su file", - "LibraryBulkRename": "Rinominare i file della libreria", + "LibraryBulkRename": "Rinominare i file della biblioteca", "LibraryRecomputeAddedAt": "Data di ricalcolo aggiunta", + "LibraryReapplyRegexMetadata": "Applica le regole del percorso ai libri esistenti", "BookUpload": "Carica libro", "BookMetadataUpdate": "Aggiorna i metadati del libro", "BookMetadataLocksUpdate": "Aggiorna i blocchi dei metadati", @@ -5327,7 +5477,7 @@ "BookBulkUpdateTags": "Aggiorna i tag del libro", "BookBulkSetMetadataLock": "Imposta i blocchi dei metadati", "BookBulkEditMetadata": "Modifica i metadati del libro", - "BookBulkMoveLibrary": "Sposta i libri in un'altra libreria", + "BookBulkMoveLibrary": "Sposta i libri in un'altra biblioteca", "BookReadingStateReset": "Ripristina lo stato di lettura", "BookWriteAndRename": "Scrivi metadati e rinomina il file", "CollectionCreate": "Crea raccolta", @@ -5357,6 +5507,9 @@ "RequestIndexerPluginInspect": "Plugin indicizzatore ispezionato", "RequestIndexerPluginInstall": "Plugin indicizzatore installato", "RequestIndexerPluginRemove": "Plugin indicizzatore eliminato", + "MetadataHttpProviderCreate": "Fornitore di metadati aggiunto", + "MetadataHttpProviderUpdate": "Fornitore di metadati aggiornato", + "MetadataHttpProviderDelete": "Fornitore di metadati rimosso", "AuthorUpdate": "Aggiorna autore", "AuthorDelete": "Elimina autore", "AuthorMerge": "Unisci gli autori", @@ -5602,7 +5755,7 @@ "resetPasswordAction": "Reimposta password", "noAccount": "Non hai un account?", "signUp": "Iscriviti", - "registeredNotice": "Account creato. Accedi per continuare. Un amministratore deve concedere le autorizzazioni prima di poter accedere alla libreria.", + "registeredNotice": "Account creato. Accedi per continuare. Un amministratore deve concedere le autorizzazioni prima di poter accedere alla biblioteca.", "resetNotice": "Password aggiornata. Accedi con la tua nuova password.", "errors": { "invalidCredentials": "Nome utente o password non validi", @@ -5699,6 +5852,12 @@ "errors": { "noToken": "Nessun token fornito" } + }, + "reconnect": { + "heading": "In attesa del server", + "description": "Al momento BookOrbit non riesce a raggiungere il suo server. Questa pagina riprenderà automaticamente non appena il server risponderà.", + "retry": "Riprova ora", + "retrying": "Tentativo in corso..." } }, "author": { @@ -5739,7 +5898,10 @@ "died": "Deceduto/a il", "website": "Sito web", "genres": "Generi", - "influences": "Influenze" + "influences": "Influenze", + "findMatch": "Trova l'autore corretto", + "source": "Fonte", + "pinned": "Fissato" }, "list": { "title": "Autori", @@ -5763,7 +5925,7 @@ }, "empty": { "title": "Nessun autore trovato", - "hint": "Prova a modificare il testo di ricerca, l'ordinamento o il filtro della libreria." + "hint": "Prova a modificare il testo di ricerca, l'ordinamento o il filtro della biblioteca." }, "deleteDialog": { "titleOne": "Eliminare l'autore?", @@ -5811,12 +5973,22 @@ "removing": "Rimozione...", "removeImage": "Rimuovi l'immagine", "imageHint": "PNG/JPEG/WEBP/GIF/BMP fino a {size} MB", - "saving": "Salvataggio..." + "saving": "Salvataggio...", + "website": "Sito web", + "websitePlaceholder": "https://esempio.it", + "websiteInvalid": "Inserisci un indirizzo web come esempio.it.", + "born": "Nato/a il", + "died": "Deceduto/a il", + "lifeDatePlaceholder": "1965 o 1965-03-14", + "lifeDateHint": "Anno di nascita e di morte, oppure una data completa nel formato anno-mese-giorno.", + "lifeDateInvalid": "Inserisci un anno o una data completa nel formato anno-mese-giorno.", + "genres": "Generi", + "influences": "Influenze" }, "merge": { "searchPlaceholder": "Cerca autori da unire a questo autore", "searching": "Ricerca...", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "selectedSummary": "Autori {count} selezionati, ca. {books} libri interessati.", "merging": "Unione...", "mergeSelected": "Unisci selezionati", @@ -5847,7 +6019,7 @@ }, "empty": { "title": "Nessun libro trovato per questo autore", - "hint": "Prova a modificare l'ordinamento/ordine o a selezionare un'altra libreria." + "hint": "Prova a modificare l'ordinamento/ordine o a selezionare un'altra biblioteca." } }, "toast": { @@ -5871,11 +6043,61 @@ "fromTheirBook": "Copertina di uno dei loro libri; nessun ritratto in archivio" }, "index": { - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "rowLabel": "{name}, {count, plural, =0 {nessun libro} one {# libro} many {# libri} other {# libri}}", "actionsFor": "Azioni per {name}", "refreshing": "Aggiornamento dei metadati per {name}", "deleting": "Eliminazione di {name}" + }, + "match": { + "title": "Trova l'autore corretto", + "description": "Seleziona la persona associata a {name}, tramite una ricerca per nome o incollando un link di Goodreads o Audible.", + "search": { + "label": "Nome", + "submit": "Cerca" + }, + "reference": { + "label": "Link o Id di Goodreads o Audible", + "placeholder": "goodreads.com/author/show/12345", + "submit": "Trova", + "unrecognised": "Incolla un link all'autore di Goodreads o Audible, un ID Goodreads o un ASIN Audible.", + "notFound": "Nessun autore ha quell'Id.", + "failed": "Ricerca fallita. Riprova tra un momento." + }, + "results": { + "label": "Corrispondenze", + "count": "{count, plural, =0 {Nessuna corrispondenza} one {# corrispondenza} other {# corrispondenze}}", + "searching": "Ricerca in corso...", + "empty": "Nessun autore trovato. Prova a scriverlo diversamente o incolla un link.", + "failed": "Ricerca fallita. Riprova tra un momento.", + "current": "Attuale", + "born": "Nato/a nel {year}", + "lifeSpan": "{born}–{died}" + }, + "detail": { + "empty": "Scegli una corrispondenza per vedere chi è.", + "loading": "Caricamento dei dettagli in corso...", + "noBio": "Nessuna biografia.", + "viewOn": "Visualizza su {provider}", + "back": "Torna alle corrispondenze", + "use": "Utilizza questo autore", + "unpin": "Sblocca", + "pinnedHint": "Fissato: gli aggiornamenti cercano questo autore tramite Id anziché tramite nome.", + "currentHint": "L'autore è ora associato a questa persona. Usa questa opzione per fissare l'associazione." + }, + "confirm": { + "title": "Usare questo autore di {provider}?", + "description": "La biografia, la foto, le date, il sito web, i generi e le influenze verranno sostituiti con quelli di questo autore e i successivi aggiornamenti rimarranno collegati a questa persona.", + "confirm": "Utilizza questo autore" + }, + "toast": { + "pinned": "Ora associato a {name} su {provider}", + "unpinned": "Sbloccato. Gli aggiornamenti cercheranno di nuovo per nome.", + "notFound": "{provider} non ha più alcun autore con questo Id.", + "providerDown": "Impossibile raggiungere {provider}. Riprova tra un attimo.", + "failed": "Impossibile utilizzare questo autore.", + "unpinFailed": "Impossibile sbloccare la corrispondenza." + } } }, "book": { @@ -5896,7 +6118,7 @@ "unknownFormat": "sconosciuto", "collapsedSeries": { "label": "Serie", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "readCount": "{count} leggi" }, "card": { @@ -6083,6 +6305,7 @@ "before": "prima", "after": "dopo", "withinLast": "entro l'ultimo", + "moreThanAgo": "più di", "isMissing": "manca", "isPresent": "è presente", "isUnread": "non è letto", @@ -6099,12 +6322,13 @@ "anyProvider": "Qualsiasi fornitore", "communityRatingProvider": "Fornitore di valutazioni della comunità", "loadingLibraries": "Caricamento librerie...", - "noLibrariesAvailable": "Nessuna libreria disponibile", - "selectLibrary": "Seleziona libreria...", + "noLibrariesAvailable": "Nessuna biblioteca disponibile", + "selectLibrary": "Seleziona biblioteca...", "selectStatus": "Seleziona lo stato...", "withinLastPlaceholder": "ad es. 7", "unit": { "days": "giorni", + "daysAgo": "giorni fa", "weeks": "settimane", "months": "mesi", "megabytes": "MB" @@ -6129,7 +6353,8 @@ }, "deleteDialog": { "title": "Eliminare il libro?", - "description": "Ciò eliminerà definitivamente il libro e tutti i suoi metadati, file, progressi di lettura e segnalibri. Questa operazione non può essere annullata." + "description": "Ciò eliminerà definitivamente il libro e tutti i suoi metadati, file, progressi di lettura e segnalibri. Questa operazione non può essere annullata.", + "keepsHistory": "Le letture completate rimangono nella cronologia di ciascun lettore, sotto il titolo e l'autore del libro." }, "bulkEdit": { "title": "{count, plural, =0 {Modifica metadati - # libro} one {Modifica metadati - # libro} other {Modifica metadati - # libri} many {Modifica metadati - # libri}}", @@ -6290,6 +6515,7 @@ "details": "Dettagli", "editMetadata": "Modifica metadati", "files": "File", + "chapters": "Capitoli", "readingLog": "Registro di lettura", "highlights": "Punti salienti" }, @@ -6311,9 +6537,9 @@ "renamedTo": "Rinominato in {name}", "fileRenamed": "File rinominato", "renameFailed": "Rinomina non riuscita", - "autoWriteAndRenameDisabled": "La scrittura automatica e la ridenominazione sono disabilitate nelle impostazioni della libreria. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", - "autoWriteDisabled": "La scrittura automatica è disabilitata nelle impostazioni della libreria. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", - "autoRenameDisabled": "La ridenominazione automatica è disabilitata nelle impostazioni della libreria. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", + "autoWriteAndRenameDisabled": "La scrittura automatica e la ridenominazione sono disabilitate nelle impostazioni della biblioteca. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", + "autoWriteDisabled": "La scrittura automatica è disabilitata nelle impostazioni della biblioteca. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", + "autoRenameDisabled": "La ridenominazione automatica è disabilitata nelle impostazioni della biblioteca. Le modifiche non verranno sincronizzate automaticamente nei salvataggi futuri.", "writeLabel": "Scrivi:", "renameLabel": "Rinomina:" }, @@ -6431,6 +6657,20 @@ }, "editCover": "Modifica copertina", "viewCover": "Visualizza la copertina ingrandita", + "coverStack": { + "show": { + "ebook": "Mostra la copertina del libro", + "audio": "Mostra la copertina dell'audiolibro" + }, + "front": { + "ebook": "Visualizzazione della copertina del libro in corso", + "audio": "Visualizzazione della copertina dell'audiolibro in corso" + } + }, + "readAloudInvite": { + "chip": "Lettura vocale", + "title": "Crea una lettura vocale dall'EPUB e dall'audiolibro di questo libro" + }, "finished": "Finito", "resetFileProgress": "Reimposta l'avanzamento del file", "resetEditionProgress": "Reimposta i progressi per {format}", @@ -6448,6 +6688,14 @@ "unavailable": "Non disponibile", "epubCopiesOnly": "EPUB solo copie" }, + "chip": { + "enabled": "Sincronizzato", + "partial": "Parzialmente sincronizzato", + "disabled": "Sincronizzazione disattivata", + "unavailable": "Problema di sincronizzazione" + }, + "chipAria": "Sincronizzazione lettura vocale: {status}", + "noneYet": "Non ci sono ancora EPUB con lettura vocale. Creane uno per sincronizzare le posizioni tra l'audiolibro e il testo.", "enabledDescription": "Le posizioni di audiolibri, web reader, Kobo e KOReader rimangono sincronizzate.", "disabledDescription": "Ciascun formato mantiene la propria posizione di lettura.", "epubCopiesDescription": "Le posizioni del lettore web, di Kobo e di KOReader rimangono sincronizzate tra le copie EPUB. Aggiungi i file dell'audiolibro corrispondenti per sincronizzare anche l'audiolibro.", @@ -6546,7 +6794,7 @@ "fileExceedsSizeLimit": "Questo file supera il limite di dimensione del writeback", "writing": "Scrivere...", "saveInProgress": "Salvataggio in corso", - "writeManualLibraryDisabled": "Scrivi i metadati su file e rinominali su disco; il writeback automatico è disabilitato per questa libreria", + "writeManualLibraryDisabled": "Scrivi i metadati su file e rinominali su disco; il writeback automatico è disabilitato per questa biblioteca", "writeManualTooltip": "Scrivi {fields} in {target} e rinomina su disco", "applyResult": "{skipped}, {updated}", "skippedLockedFields": "{count, plural, =0 {Nessun campo bloccato saltato} one {Saltato un campo bloccato} other {Saltato # campi bloccati} many {Saltato # campi bloccati}}", @@ -6609,6 +6857,8 @@ "durationLabel": "Durata (s)", "abridgedLabel": "Ridotto", "providerIds": "ID fornitore", + "externalProviderUnavailable": "{provider} non è più registrato, quindi questo id è mantenuto ma non utilizzato", + "clearExternalProviderId": "Cancella l'Id di {provider}", "comicDetails": "Dettagli comici", "comicIssueNumberLabel": "Numero di emissione", "comicVolumeLabel": "Volume", @@ -6968,6 +7218,241 @@ }, "files": { "title": "File di libri", + "readAloud": { + "action": "Crea lettura vocale", + "loadFailed": "La disponibilità della lettura vocale non può essere verificata.", + "loadFailedAgain": "{count, plural, one {La disponibilità della lettura vocale non può ancora essere verificata dopo # tentativo.} other {La disponibilità della lettura vocalee non può ancora essere verificata dopo # tentativi.}}", + "checkAgain": "Ricontrolla", + "checking": "Controllo in corso…", + "reasons": { + "worker_unavailable": "Il servizio di lettura vocale non è attivo in questo momento.", + "worker_incompatible": "Il servizio di lettura vocale richiede un aggiornamento per funzionare con questo server.", + "book_missing": "Ripristina i file mancanti di questo libro per creare una lettura vocale.", + "no_epub": "Aggiungi un file EPUB semplice a questo libro per creare una lettura vocale.", + "no_epub_existing": "Questo libro ha già una lettura vocale e nessun EPUB semplice da cui rigenerarla.", + "too_many_audio_files": "Questo audiolibro è suddiviso in un numero di file superiore a quello consentito per creare una lettura vocale.", + "epub_not_allowed": "Questa biblioteca non accetta i file EPUB, quindi non è possibile aggiungere una lettura vocale.", + "library_not_mounted": "Il servizio di lettura vocale non riesce ad accedere alla cartella di questa biblioteca.", + "job_active": "Per questo libro è già stata creata una lettura vocale.", + "unknown": "Al momento non è possibile creare una lettura vocale per questo libro." + }, + "dialog": { + "title": "Crea lettura vocale", + "description": "Sincronizza la narrazione con il testo dell'ebook e aggiunge un EPUB che si evidenzia in sincronia con l'audio.", + "sources": "Fonti", + "ebook": "Ebook", + "ebookHint": "Seleziona l'EPUB standard che corrisponde alla narrazione.", + "existing": { + "title": "{count, plural, one {Questo libro ha già una lettura vocale} other {Questi libri hanno già # letture vocali}}", + "replace": "Sostituisci {filename}", + "keep": "{count, plural, one {Mantieni entrambi} other {Mantieni tutti}}", + "keepHint": "La nuova lettura vocale viene aggiunta come file separato.", + "replaceHint": "Il vecchio file viene sostituito solo dopo che quello nuovo supera i controlli, e le posizioni di lettura vengono mantenute.", + "replaceNotPermitted": "La sostituzione di una lettura vocale richiede l'autorizzazione a eliminare i libri, quindi il nuovo viene aggiunto come ulteriore file.", + "generated": "Realizzato da BookOrbit", + "imported": "Importato" + }, + "audio": "Audiolibro", + "audioSummary": "{count, plural, one {# traccia} other {# tracce}}, {order, select, book {in base all'ordine del libro} other {nell'ordine scelto da te}}", + "audioSummaryWithDuration": "{count, plural, one {# traccia} other {# tracce}}, {duration}, {order, select, book {in base all'ordine del libro} other {nell'ordine scelto da te}}", + "audioSkipped": "{count, plural, one {# traccia saltata} other {# tracce saltate}}", + "changeOrder": "Modifica ordine", + "restoreOrder": "Ripristina l'ordine del libro", + "trackList": "Tracce in ordine di ascolto", + "trackLabel": "Traccia {position} di {total}: {name}", + "moveUp": "Sposta {name} su", + "moveDown": "Sposta {name} giù", + "moved": "{name} spostato nella posizione {position} di {total}", + "skipped": "Saltato", + "noTracks": "Seleziona almeno una traccia.", + "language": "Lingua della narrazione", + "chooseLanguage": "Scegli una lingua", + "languageUnsupported": "{language} non è supportato dal modello vocale.", + "languageFromBook": "Dai dettagli di questo libro.", + "languageIsDefault": "La tua lingua predefinita.", + "languageSavedAsDefault": "Salvato come lingua predefinita.", + "setDefaultLanguage": "Imposta come predefinita", + "defaultLanguageFailed": "Impossibile salvare la lingua predefinita. Riprova.", + "granularity": "Evidenziazione", + "sentence": "Frase", + "sentenceHint": "Evidenzia una frase alla volta. Consigliato.", + "word": "Parola", + "wordHint": "Evidenzia ogni parola. Richiede più tempo e crea un file più grande.", + "experimental": "Sperimentale", + "model": "Modello vocale: {model}", + "estimatedSize": "Dimensione stimata: {size}", + "lowDiskLabel": "Spazio su disco in esaurimento.", + "lowDisk": "Sono necessari circa {needed} di spazio di archiviazione sul worker, che ha {free} disponibili.", + "processingNote": "Viene eseguito in background. Gli audiolibri lunghi possono richiedere diverse ore, e al primo utilizzo per una determinata lingua verrà scaricato il modello corrispondente.", + "start": "Inizia", + "starting": "Avvio in corso…" + }, + "devices": { + "cpu": "Esecuzione su CPU", + "mlx": "Esecuzione su Apple Silicon (MLX)", + "cuda": "Esecuzione su una GPU NVIDIA (CUDA)", + "webgpu": "Esecuzione sulla GPU (WebGPU)", + "other": "Esecuzione su {device}" + }, + "job": { + "heading": "Lettura vocale", + "startedBy": "Iniziato da {name}", + "startedByUnknown": "Iniziato da un altro utente", + "dismiss": "Scarta", + "details": "Dettagli", + "queuedTitle": "In attesa di iniziare", + "queueAhead": "{count, plural, =0 {In coda} one {# processo prima} other {# processi prima}}", + "elapsed": "In esecuzione per {duration}", + "justStarted": "Appena iniziato", + "firstRunForLanguage": "Primo avvio per questa lingua", + "stoppingTitle": "Arresto in corso...", + "stoppingDescription": "Completamento della fase attuale, poi l'operazione si interromperà. Non verrà aggiunto nulla a questo libro.", + "reviewTitle": "Pronto per la revisione", + "reviewDescription": "Il {percent} del testo corrisponde alla narrazione. Controlla i capitoli prima di aggiungerla.", + "reviewDescriptionPlain": "Controlla i capitoli prima di aggiungerla a questo libro.", + "reviewExpires": "Verrà scartata automaticamente {when} a meno che non la rivedi.", + "completeTitle": "Lettura vocale pronta", + "completeWarningsTitle": "Pronto per la lettura ad alta voce, con avvisi", + "completeAdded": "Aggiunta a questo libro come un nuovo EPUB.", + "completeReplaced": "Sostituita la lettura vocale precedente. Le posizioni di lettura rimangono invariate.", + "matchedSentences": "{matched} di {total} {count, plural, one {frase corrisponde} other {frasi corrispondono}} alla narrazione", + "audioUsed": "{percent} dell'audio utilizzato", + "outsideNarration": "Non presenti nella narrazione, quindi lasciati senza audio: {chapters}.", + "outsideMore": "{count, plural, one {# altro capitolo} other {# altri capitoli}}", + "chaptersHeading": "Capitoli", + "activityHeading": "Attività", + "failedTitle": "Lettura vocale non riuscita", + "retryUntil": "Il tentativo prosegue dall'ultima fase completata fino al {date}.", + "cancelledTitle": "Generazione annullata", + "discardedTitle": "Output scartato", + "nothingAdded": "Non è stato aggiunto nulla a questo libro.", + "expiredDescription": "Non è stato revisionato entro 14 giorni, quindi non è stato aggiunto nulla a questo libro.", + "progress": "Avanzamento della lettura vocale", + "steps": "Passaggi", + "stepDone": "{step} fatto", + "stepCurrent": "{step}, in corso", + "stepUpcoming": "{step}, non avviato", + "openReadAlong": "Apri lettura vocale", + "showFile": "Mostra il file", + "retry": "Riprova", + "startOver": "Ricomincia", + "cancel": "Annulla generazione", + "cancelPrompt": "Annullare la generazione?", + "keepRunning": "Continua esecuzione", + "warnings": "Avvisi", + "live": "Lettura vocale: {status}" + }, + "stageDetail": { + "file": "File {current} di {total}", + "track": "Traccia {current} di {total}", + "chapter": "Capitolo {current} di {total}", + "step": "Passaggio {current} di {total}" + }, + "stages": { + "queued": "In attesa di iniziare", + "preparing_audio": "Preparazione dell'audio", + "downloading_model": "Download del modello vocale in corso", + "generating_emissions": "Ascolto della narrazione in corso", + "marking_up_ebook": "Marcatura il testo dell'ebook", + "aligning": "Abbinamento del testo alla narrazione in corso", + "validating": "Controllo del risultato in corso", + "awaiting_review": "In attesa di revisione", + "publishing": "Aggiunta della lettura vocale al libro", + "completed": "Fatto", + "working": "Elaborazione in corso" + }, + "steps": { + "audio": "Audio", + "speech": "Parlato", + "text": "Testo", + "align": "Allineamento", + "check": "Controlla", + "publish": "Pubblica" + }, + "review": { + "heading": "Capitoli", + "summary": "{count, plural, one {# capitolo} other {# capitoli}}: {attention, plural, =0 {nessun controllo necessario} one {# da controllare} other {# da controllare}}", + "chapter": "Capitolo", + "part": "Parte", + "statusLabel": "Stato", + "status": { + "aligned": "Allineato", + "notFound": "Non trovato nell'audio", + "tooShort": "Troppo breve per abbinare", + "excluded": "Escluso", + "audioOnly": "Solo audio", + "outside": "Non presente nella narrazione", + "unknown": "Sconosciuto" + }, + "matched": "Abbinato", + "matchedValue": "{percent} corrispondenze", + "zones": { + "front": "Prefazione", + "body": "Corpo del testo", + "back": "Postfazione" + }, + "include": "Includi {title}", + "showText": "Mostra testo da {title}", + "hideText": "Nascondi testo da {title}", + "preview": "Anteprima", + "firstMatch": "Prima corrispondenza", + "lastMatch": "Ultima corrispondenza", + "noText": "Nessun testo da mostrare per questo capitolo.", + "noReport": "Non è stato salvato alcun report di capitolo per questo lavoro. Eseguilo di nuovo per visualizzarne uno.", + "loading": "Caricamento dei capitoli…", + "loadFailed": "Il report di capitolo non può essere caricato.", + "tryAgain": "Riprova", + "pending": "{count, plural, one {# modifica non ancora applicata.} other {# modifiche non ancora applicate.}} La risincronizzazione riesegue solo il passaggio corrispondente.", + "resync": "Risincronizza", + "publishAnyway": "Pubblica comunque", + "discard": "Scarta", + "discardPrompt": "Scartare questo output?", + "keep": "Conservalo" + }, + "log": { + "heading": "Attività", + "empty": "Ancora nessuna attività.", + "loading": "Caricamento attività in corso…", + "loadFailed": "Impossibile caricare il registro delle attività.", + "tryAgain": "Riprova", + "warn": "Attenzione", + "error": "Errore", + "other": "Attività del worker", + "events": { + "job_created": "Job creato", + "claimed": "Inviato al worker", + "job_accepted": "Il worker ha accettato il lavoro", + "disk_checked": "Spazio libero sufficiente sul worker", + "disk_check_failed": "Spazio libero insufficiente sul worker", + "stage_started": "Avviato", + "stage_finished": "Terminato in {duration}", + "stage_finished_plain": "Terminato", + "stage_skipped": "Attività precedente riutilizzata", + "stage_failed": "Questo passaggio non è riuscito", + "model_download_started": "Download del modello vocale per questa lingua in corso", + "model_download_finished": "Modello vocale scaricato", + "emissions_cached": "Analisi vocale riutilizzata da una precedente esecuzione", + "audio_reencoded_cbr": "Convertito in MP3 a bitrate variabile per una sincronizzazione temporale accurata", + "stalign_warning": "Il worker di allineamento ha segnalato un avviso", + "waiting_for_worker": "In attesa che il worker risponda", + "worker_reachable_again": "Il worker è tornato a rispondere", + "worker_lost_job": "Il worker è stato riavviato; riprendo dal lavoro precedente", + "requeued": "Nuovo tentativo a breve", + "recovered": "Ripresa dopo un riavvio del server", + "output_validated": "Risultato verificato", + "needs_review": "Richiede revisione: parte del testo non corrisponde all'audio", + "publish_requested": "Aggiunta al libro in corso", + "published": "Aggiunto al libro", + "file_added": "Salvato come nuovo file", + "file_replaced": "Sostituito la lettura vocale esistente", + "file_already_attached": "Il libro aveva già questo file", + "replace_target_missing": "La lettura vocale da sostituire non era più presente, quindi è stato aggiunto un nuovo file", + "replace_not_permitted": "La sostituzione della lettura vocale non è più consentita, quindi è stato aggiunto un nuovo file", + "job_completed": "Il worker ha finito", + "cancel_requested": "Annullamento richiesto" + } + } + }, "stats": { "files": "File", "total": "Totale", @@ -7048,7 +7533,7 @@ "folderAria": "Percorso cartella", "folderContents": "Contenuti cartella", "inspectorAria": "File selezionato", - "libraryRoot": "radice della libreria", + "libraryRoot": "radice della biblioteca", "onDisk": "Su disco", "missing": "Mancante", "backToFolder": "Torna alla cartella", @@ -7138,6 +7623,200 @@ "indexedMany": "{count} {format} file indicizzati" } }, + "chapters": { + "protected": "Protetto", + "unprotected": "Non protetto", + "protectedHint": "Scansioni e aggiornamenti metadati ignorano questi capitoli.", + "unprotectedHint": "Scansioni e aggiornamenti metadati possono sostituire questi capitoli.", + "stats": { + "chapters": "Capitoli", + "runtime": "Durata", + "average": "Media" + }, + "source": { + "embedded": "Leggi dai file audio", + "tracks": "Un capitolo per file audio, non salvato", + "provider": "Dai metadati recuperati", + "migration": "Importato da Audiobookshelf", + "manual": "Modificato in BookOrbit", + "manualBy": "Modificato da {name} {when}", + "none": "Non è stato ancora aggiunto alcun capitolo" + }, + "youAreHere": "Ti trovi qui", + "playFrom": "Ascolta {title}", + "selectRow": "Seleziona il capitolo {index}", + "selectedCount": "{count, plural, one {# selezionato} many {# selezionati} other {# selezionati}}", + "selectAll": "Seleziona tutto", + "selectNone": "Deseleziona tutto", + "removeSelected": "Rimuovi i selezionati", + "startOf": "Inizio del capitolo {index}", + "titleOf": "Titolo del capitolo {index}", + "titlePlaceholder": "Titolo del capitolo", + "retryOperation": "Riprova operazione sul capitolo", + "operationProgress": "Operazione sul capitolo in corso: {done} dei file {total} elaborati.", + "createFirst": "Aggiungi primo capitolo", + "newChapter": "Nuovo capitolo", + "undo": "Annulla", + "redo": "Ripristina", + "find": "Trova capitoli", + "toolsMenu": "Strumenti", + "export": "Esporta", + "saved": "Capitoli salvati", + "reload": "Ricarica", + "retry": "Riprova", + "nudge": { + "backSecond": "Sposta l'inizio indietro di un secondo", + "backTenth": "Sposta l'inizio indietro di un decimo di secondo", + "forwardTenth": "Sposta l'inizio avanti di un decimo di secondo", + "forwardSecond": "Sposta l'inizio in avanti di un secondo" + }, + "issues": { + "emptyTitle": "Questo capitolo necessita di un titolo.", + "firstNotZero": "Il primo capitolo deve iniziare a 0:00.", + "notAscending": "Questo capitolo inizia nello stesso momento del precedente.", + "pastEnd": "Questo capitolo inizia dopo la fine dell'audiolibro.", + "tooShort": "Questo capitolo dura meno di un secondo." + }, + "player": { + "scrubber": "Anteprima posizione", + "play": "Avvia anteprima", + "pause": "Pausa anteprima", + "back": "Indietro di 15 secondi", + "forward": "Avanti di 15 secondi" + }, + "apply": { + "titles": "Solo titoli", + "titlesHint": "Mantieni i tempi di inizio e prendi i titoli delle righe corrispondenti.", + "times": "Solo orari di inizio", + "timesHint": "Mantieni i titoli e prendi gli orari di inizio delle righe corrispondenti." + }, + "sources": { + "description": "Confrontali con l'elenco che stai modificando, quindi scegli cosa prendere.", + "loading": "Lettura capitoli in corso...", + "counts": "{incoming, plural, one {# capitolo in arrivo} other {# capitoli in arrivo}}, {current, plural, one {# nell'editor} other {# nell'editor}}", + "pastEnd": "{count, plural, one {# capitolo inizia dopo la fine dell'audiolibro.} other {# capitoli iniziano dopo la fine dell'audiolibro.}}", + "currentColumn": "Nell'editor", + "incomingColumn": "In arrivo", + "deltaColumn": "Maiusc (s)", + "applied": "Applicato all'editor. Salva per mantenerlo.", + "empty": "Nessun capitolo trovato qui.", + "files": { + "menu": "Dai file audio", + "title": "Capitoli nei file audio" + }, + "tracks": { + "menu": "Uno per ogni file audio", + "title": "Un capitolo per ogni file audio" + }, + "lookup": { + "menu": "Da Audible...", + "title": "Capitoli da Audible", + "asin": "ASIN", + "region": "Salva", + "action": "Cerca", + "hint": "Capitoli di Audible per quell'edizione. I loro tempi provengono dalla registrazione originale di Audible, quindi potrebbero richiedere un offset o un adattamento per allinearsi ai tuoi file." + }, + "toc": { + "menu": "Dal contenuto dell'ebook", + "title": "Titoli dall'ebook" + }, + "readAlong": { + "menu": "Dall'EPUB con lettura vocale", + "title": "Capitoli dalla lettura vocale" + }, + "import": { + "menu": "Importa...", + "title": "Importa capitoli", + "pasteLabel": "Incolla capitoli", + "placeholder": "00:00:00 Crediti iniziali\n00:00:14 Dedica\n00:00:23 Capitolo 1", + "formats": "Legge file CUE, metadati FFmpeg, etichette di Audacity, file JSON di Audiobookshelf, righe con timestamp o un semplice elenco di titoli.", + "read": "Leggi capitoli", + "chooseFile": "Scegli un file", + "unreadable": "Non è stato possibile leggere alcun capitolo da lì.", + "tooLarge": "Quel file è troppo grande per essere un elenco di capitoli.", + "skipped": "{count, plural, one {# riga saltata} other {# righe saltate}}", + "truncated": "Sono stati letti solo i primi {count} capitoli." + }, + "version": { + "title": "Versione salvata", + "detail": "Salvato {when}", + "detailBy": "Salvato {when} da {name}" + } + }, + "review": { + "adjust": "Allinea i tempi", + "runtimes": "Durata sorgente {theirs}, questo audiolibro {ours} ({difference} s)", + "accurate": "Audible segna questi tempi come esatti", + "offset": "Scostamento (s)", + "suggestIntro": "Salta introduzione di Audible ({seconds} s)", + "suggestMatch": "Abbina i primi capitoli ({seconds} s)", + "fitPauses": "Adatta alle pause", + "fitPausesResult": "Adatta alla pausa ({seconds} s, {hits} di {total})", + "fitPausesNone": "Nessun singolo scostamento riesce ad allineare questi capitoli con le pause nel tuo audio." + }, + "snap": { + "description": "Sposta l'inizio dei capitoli sulla pausa più vicina nell'audio, dove il narratore si ferma tra un capitolo e l'altro.", + "radius": "Cerca una pausa", + "radiusOption": "Entro {seconds} s da ciascun lato", + "placement": "Posiziona ogni inizio", + "placementEnd": "Appena prima che il narratore parli di nuovo", + "placementMiddle": "Nel mezzo della pausa", + "progressive": "Propaga ogni correzione", + "progressiveHint": "Per i tempi che si disallineano progressivamente man mano che il libro prosegue: ogni spostamento sposta anche il punto in cui viene cercato l'inizio successivo.", + "run": "Cerca le pause", + "running": "Ascolto delle pause: {done} di {total}", + "progressLabel": "Progresso della ricerca delle pause", + "stop": "Arresta", + "back": "Cambia opzioni", + "moved": "{count, plural, one {# capitolo spostato, di {average} s} other {# capitoli spostati, in media di {average} s e al massimo di {largest} s}}", + "nothing": "Nessun capitolo ha bisogno di essere spostato.", + "notFound": "{count, plural, one {# non ha trovato alcuna pausa vicina} other {# non hanno trovato alcuna pausa vicina}}", + "blocked": "{count, plural, one {# rimane invariato per mantenere i capitoli in ordine} other {# rimangono invariati per mantenere i capitoli in ordine}}", + "failed": "{count, plural, one {# non riproducibile: impossibile decodificare l'audio} other {# non riproducibili: impossibile decodificare l'audio}}", + "movedOne": "Spostato sulla pausa a {time} ({delta} s).", + "notFoundOne": "Nessuna pausa entro {seconds} s da questo inizio.", + "blockedOne": "La pausa più vicina metterebbe fuori ordine questo capitolo.", + "alreadyThere": "Questo inizio si trova già in corrispondenza di una pausa." + }, + "waveform": { + "label": "Inizio del capitolo nell'audio", + "loading": "Caricamento dell'audio attorno a questo inizio in corso...", + "failed": "Impossibile rappresentare l'audio qui." + }, + "errors": { + "operation": "Impossibile completare l'operazione sul capitolo. Riprova a connetterti o controllane lo stato.", + "load": "Impossibile caricare i capitoli.", + "save": "Impossibile salvare i capitoli.", + "revert": "Impossibile ripristinare i capitoli.", + "readFiles": "Impossibile leggere i file audio.", + "lookup": "Impossibile ottenere i capitoli da Audible.", + "readEbook": "Impossibile leggere l'ebook.", + "analyze": "Impossibile analizzare l'audio.", + "writeFiles": "Impossibile salvare i capitoli nei file.", + "versions": "Impossibile caricare la cronologia dei capitoli.", + "preview": "Impossibile avviare l'anteprima.", + "stale": "Qualcuno ha cambiato questi capitoli. Ricarica per vedere la sua versione; le tue modifiche sono mantenute finché non lo fai." + }, + "addCutTooClose": "Prima sposta l'indicatore di riproduzione ad almeno un secondo di distanza da un taglio.", + "columns": { + "chapter": "Capitolo", + "inBook": "Nel libro", + "starts": "Inizia", + "length": "Lunghezza", + "start": "Inizia", + "title": "Titolo" + }, + "listen": { + "resume": "Riprendi", + "start": "Ascolta", + "progress": "{left} rimasti nel capitolo · {percent} del libro", + "notStarted": "Non avviato", + "left": "{time} al termine" + }, + "timeline": { + "label": "Capitoli in tutto il libro" + } + }, "highlights": { "note": { "placeholder": "Aggiungi una nota...", @@ -7367,7 +8046,7 @@ "cancelDeleteAria": "Annulla l'eliminazione di questo tentativo", "confirmDeleteAria": "Conferma l'eliminazione di questo tentativo", "empty": "Nessun tentativo registrato", - "emptyHint": "Inizia una rilettura o aggiungi un tentativo che hai completato prima che esistesse questa libreria." + "emptyHint": "Inizia una rilettura o aggiungi un tentativo che hai completato prima che esistesse questa biblioteca." }, "records": { "title": "Registri", @@ -7665,7 +8344,7 @@ }, "series": { "seriesRow": "Riga della serie", - "bookCount": "{count, plural, =0 {(niente libri)} one {(# libro)} other {(# libri)} many {(# libri)}}", + "bookCount": "{count, plural, =0 {(nessun libro)} one {(# libro)} other {(# libri)} many {(# libri)}}", "readOfCount": "{read} di {total} letto" }, "text": { @@ -7674,14 +8353,14 @@ }, "move": { "title": "{count, plural, one {Move # book} many {Move # books} other {Move # books}}", - "subtitle": "I file vengono spostati sul disco nella libreria di destinazione. Ciò può cambiare chi può vedere questi libri.", + "subtitle": "I file vengono spostati sul disco nella biblioteca di destinazione. Ciò può cambiare chi può vedere questi libri.", "searchPlaceholder": "Cerca nelle biblioteche", "currentLibrary": "Attuale", "folderCount": "{count, plural, one {# folder} many {# folders} other {# folders}}", "continue": "Continua", "back": "Indietro", "confirm": "{count, plural, one {Move # book} many {Move # books} other {Move # books}}", - "action": "Sposta nella libreria", + "action": "Sposta nella biblioteca", "review": { "ready": "{count} pronto", "collisions": "{count, plural, one {# name conflict} many {# name conflicts} other {# name conflicts}}", @@ -7700,16 +8379,16 @@ "collision": { "folder_path": "Un libro utilizza già questo nome di cartella", "file_path": "Un file utilizza già questo percorso", - "hash_duplicate": "Una copia identica è già presente in questa libreria" + "hash_duplicate": "Una copia identica è già presente in questa biblioteca" }, "ineligible": { "book_not_present": "I file di questo libro mancano", "no_content_file": "Questo libro non ha file leggibili", "multi_file_target_per_file": "La destinazione memorizza un file per libro e questo libro contiene {detail} file", - "no_source_access": "Non puoi modificare la libreria in cui si trova questo libro", - "pattern_unresolved": "La libreria di destinazione non ha uno schema di denominazione utilizzabile", + "no_source_access": "Non puoi modificare la biblioteca in cui si trova questo libro", + "pattern_unresolved": "La biblioteca di destinazione non ha uno schema di denominazione utilizzabile", "path_too_long": "Il percorso di destinazione sarebbe troppo lungo", - "path_outside_target_root": "Il percorso di destinazione non rientra nella cartella della libreria" + "path_outside_target_root": "Il percorso di destinazione non rientra nella cartella della biblioteca" }, "warning": { "accessLoss": "{user} non vedrà più {count} di questi libri", @@ -7928,7 +8607,7 @@ "resultTitle": "Finalizzare i risultati", "needDestination": "{count, plural, =0 {Senza destinazione: {without} su # file selezionati} one {Senza destinazione: {without} su # file selezionato} other {Senza destinazione: {without} su # file selezionati} many {Senza destinazione: {without} su # file selezionati}}", "allHaveDestination": "Tutti i file selezionati hanno già la destinazione impostata", - "defaultDestinationLibrary": "Libreria di destinazione predefinita", + "defaultDestinationLibrary": "Biblioteca di destinazione predefinita", "defaultDestinationFolder": "Cartella di destinazione predefinita", "renamePreview": "Anteprima cambiamento nome file", "moreFiles": "+{count} altri file", @@ -7940,7 +8619,7 @@ "conflictCount": "{count, plural, =0 {nessun conflitto di nomi di file} one {# conflitto di nomi di file} other {# conflitti di nomi di file} many {# conflitti di nomi di file}}", "missingDestinationCount": "{count, plural, =0 {nessuna destinazione mancante} one {# destinazione mancante} other {# destinazioni mancanti} many {# destinazioni mancanti}}", "blockedCount": "{count, plural, =0 {nessun file bloccato} one {# file bloccato} other {# file bloccati} many {# file bloccati}}", - "moreDuplicates": "+{count} altri già nella libreria", + "moreDuplicates": "+{count} altri già nella biblioteca", "discardDuplicates": "Scarta i duplicati", "failedCount": "{count, plural, =0 {nessun file ha avuto esito negativo} one {# file non riuscito} other {# file non riusciti} many {# file non riusciti}}", "failedWithDuplicates": "{count, plural, =0 {{failed} non riusciti (# duplicati)} one {{failed} non riusciti (# duplicato)} other {{failed} non riusciti (# duplicati)} many {{failed} non riusciti (# duplicati)}}", @@ -8060,10 +8739,10 @@ "authorLabel": "Autore", "authorPlaceholder": "Nome dell'autore", "mediaKindLabel": "Formato", - "libraryLabel": "Aggiungi alla libreria", + "libraryLabel": "Aggiungi alla biblioteca", "libraryAny": "Lascia che sia l'approvatore a decidere", "libraryDefault": "Predefinito ({library})", - "libraryChoose": "Scegli una libreria", + "libraryChoose": "Scegli una biblioteca", "libraryRequired": "Le tue richieste vengono approvate non appena le fai, quindi scegli la biblioteca in cui dovrebbe arrivare il libro.", "fulfillmentLabel": "Adempimento", "fulfillmentAutomatic": "Automatico", @@ -8129,7 +8808,7 @@ "submitted": "Richiesta inviata", "joinedExisting": "Ti ha aggiunto alla richiesta esistente", "submitFailed": "Impossibile inviare la richiesta", - "alreadyInLibrary": "Già nella tua libreria", + "alreadyInLibrary": "Già nella tua biblioteca", "alreadyRequested": "Già richiesto da qualcun altro", "alreadyRequestedByYou": "Hai già richiesto questo", "preferredFormatsLabel": "Formati preferiti", @@ -8143,8 +8822,8 @@ "pair": { "choice": "Entrambi", "choiceHint": "Chiedi l'e-book e l'audiolibro insieme", - "ebookLibraryLabel": "Libreria e-book", - "audiobookLibraryLabel": "Libreria audiolibro", + "ebookLibraryLabel": "Biblioteca e-book", + "audiobookLibraryLabel": "Biblioteca audiolibri", "audiobookFolderLabel": "Cartella audiolibro", "landsTogether": "Entrambi i formati arrivano come un libro in {library}.", "landsSeparately": "{library} mantiene un libro per file, quindi ogni formato arriva come un libro proprio.", @@ -8171,7 +8850,7 @@ "requestedBoth": "Richiesto", "submitted": "Richiesto l'e-book e l'audiolibro", "submittedPartlyJoined": "Richiesto entrambi. Uno era già in cammino, quindi sei stato aggiunto a quella richiesta", - "submittedJoinsBook": "Richiesto. Si unirà alla copia già nella tua libreria" + "submittedJoinsBook": "Richiesto. Si unirà alla copia già nella tua biblioteca" } }, "card": { @@ -8202,11 +8881,11 @@ "decisionNoteLabel": "Nota (opzionale)", "decisionNotePlaceholder": "Spiega la decisione", "destinationLibraryLabel": "Biblioteca di destinazione", - "destinationLibraryPlaceholder": "Scegli una libreria", + "destinationLibraryPlaceholder": "Scegli una biblioteca", "destinationFolderLabel": "Cartella di destinazione", "languageLabel": "Lingua richiesta", "languageAny": "Qualsiasi lingua", - "destinationRequired": "L'approvazione archivia il libro in una libreria, quindi scegline uno prima di approvare.", + "destinationRequired": "L'approvazione archivia il libro in una biblioteca, quindi scegline uno prima di approvare.", "fulfilTitle": "Chiudi questa richiesta", "fulfilHint": "Punta la richiesta al libro che hai aggiunto, oppure al file Book Dock in attesa di essere archiviato.", "bookIdLabel": "ID libro", @@ -8222,7 +8901,7 @@ "fulfilFromLibrary": "Un libro nella biblioteca", "fulfilFromDock": "Un file Dock del libro", "fulfilSearchLabel": "Cerca il file che chiude questa richiesta", - "fulfilSearchBooks": "Cerca nella tua libreria per titolo o autore", + "fulfilSearchBooks": "Cerca nella tua biblioteca per titolo o autore", "fulfilSearchDock": "Cerca nel Book Dock per nome file", "fulfilSearching": "Ricerca...", "fulfilNoResults": "Niente corrispondente. Prova una ricerca diversa.", @@ -8375,9 +9054,9 @@ "queued": "In coda per il download", "downloading": "Download in corso", "completed": "Download terminato", - "importing": "Importazione nella tua libreria", + "importing": "Importazione nella tua biblioteca", "needs_review": "In attesa di revisione nel Book Dock", - "imported": "Aggiunto alla tua libreria", + "imported": "Aggiunto alla tua biblioteca", "failed": "Download non riuscito" } }, @@ -8631,11 +9310,11 @@ "ofGoal": "{value} di {goal}", "deleteFiles": "Elimina anche i file scaricati", "remove": "Rimuovi dal Client", - "removeHint": "BookOrbit non ferma mai un seed da solo. Il libro importato rimane in ogni caso nella tua libreria.", + "removeHint": "BookOrbit non ferma mai un seed da solo. Il libro importato rimane in ogni caso nella tua biblioteca.", "confirm": { "title": "Rimuovere questo torrent?", "description": "Il torrent interrompe il seeding. I file scaricati rimangono sul disco.", - "descriptionWithFiles": "Il torrent interrompe il seeding e i file scaricati vengono eliminati. Il libro importato rimane nella tua libreria." + "descriptionWithFiles": "Il torrent interrompe il seeding e i file scaricati vengono eliminati. Il libro importato rimane nella tua biblioteca." } }, "pipeline": { @@ -8650,7 +9329,7 @@ "summary": { "waiting": "In attesa alle: {step}", "progress": "In corso alle: {step}", - "done": "Archiviato nella tua libreria", + "done": "Archiviato nella tua biblioteca", "failed": "Arrestato da un errore in: {step}", "stopped": "Fermato a: {step}" } @@ -8720,7 +9399,7 @@ }, "handback": { "AUTOMATION_DISABLED": "La cattura automatica è disattivata, quindi per questo è necessario un rilascio raccolto a mano", - "NO_DESTINATION": "Questa richiesta non ha una libreria di destinazione, quindi non c'è nessun posto dove archiviare il libro", + "NO_DESTINATION": "Questa richiesta non ha una biblioteca di destinazione, quindi non c'è nessun posto dove archiviare il libro", "ATTEMPT_LIMIT": "Evasione automatica interrotta dopo {attempts} tentativi", "SEARCH_FAILED": "Impossibile cercare una versione: {detail}", "NO_SOURCES_CONFIGURED": "Nessuna fonte di ricerca impostata, quindi non è stato cercato nulla per questa richiesta", @@ -8735,10 +9414,10 @@ "submitError": { "SUBMIT_TITLE_REQUIRED": "Dai un titolo al libro prima di richiederlo", "SUBMIT_SELF_FULFIL_FORBIDDEN": "Non sei autorizzato a soddisfare le tue richieste", - "SUBMIT_LIBRARY_FORBIDDEN": "Non hai accesso a quella libreria", - "SUBMIT_FOLDER_NEEDS_LIBRARY": "Scegli una libreria di destinazione prima di scegliere una cartella", - "SUBMIT_FOLDER_NOT_IN_LIBRARY": "Quella cartella non fa parte della libreria di destinazione", - "SUBMIT_DEFAULT_LIBRARY_UNREACHABLE": "Scegli una libreria di destinazione che puoi raggiungere: l'impostazione predefinita di questa istanza non è una delle tue", + "SUBMIT_LIBRARY_FORBIDDEN": "Non hai accesso a quella biblioteca", + "SUBMIT_FOLDER_NEEDS_LIBRARY": "Scegli una biblioteca di destinazione prima di scegliere una cartella", + "SUBMIT_FOLDER_NOT_IN_LIBRARY": "Quella cartella non fa parte della biblioteca di destinazione", + "SUBMIT_DEFAULT_LIBRARY_UNREACHABLE": "Scegli una biblioteca di destinazione che puoi raggiungere: l'impostazione predefinita di questa istanza non è una delle tue", "SUBMIT_DESTINATION_REQUIRED": "Le tue richieste vengono approvate non appena le fai, quindi scegli la biblioteca in cui dovrebbe arrivare il libro", "SUBMIT_SELF_SERVE_LIMIT": "Completa o annulla prima alcuni download: puoi avere {limit} in volo contemporaneamente", "SUBMIT_ON_BEHALF_FORBIDDEN": "Non è consentito richiedere libri per altre persone", @@ -8749,7 +9428,7 @@ "actionError": { "BOOK_REQUEST_NOT_PENDING": "Solo una richiesta in sospeso supporta questa azione; questa richiesta è attualmente {status}", "BOOK_REQUEST_NOT_CANCELLABLE": "Una richiesta che è {status} non può più essere annullata", - "BOOK_REQUEST_DESTINATION_REQUIRED": "Scegli una libreria di destinazione prima di approvare questa richiesta", + "BOOK_REQUEST_DESTINATION_REQUIRED": "Scegli una biblioteca di destinazione prima di approvare questa richiesta", "BOOK_REQUEST_ACTION_FORBIDDEN": "Non sei autorizzato a {action} questa richiesta", "BOOK_REQUEST_STALE_TRANSITION": "Questa richiesta è cambiata durante l'applicazione dell'azione. Ora è {status}." }, @@ -8802,6 +9481,14 @@ "imported": "Importato", "absent": "Né la richiesta né il file ne hanno uno.", "notSet": "Non impostato", + "edition": { + "length": "Lunghezza", + "version": "Versione", + "chapters": "Capitoli" + }, + "abridged": "Ridotto", + "unabridged": "Integrale", + "importedCover": "Copertina trovata nel file importato", "filesTitle": "Cosa è atterrato", "fileCount": "{count, plural, one {# file} other {# file}}", "role": { @@ -8810,12 +9497,14 @@ "supplement": "Extra" }, "fileAnyway": "Archivialo comunque", - "fileAnywayHint": "Archivia questo nella libreria di destinazione e contrassegna la richiesta come disponibile, esattamente come farebbe un punteggio minimo.", - "noDestination": "Questa richiesta non ha una libreria di destinazione con una cartella al suo interno, quindi non c'è ancora nessun posto dove archiviare il libro.", + "fileAnywayHint": "Archivia questo nella biblioteca di destinazione e contrassegna la richiesta come disponibile, esattamente come farebbe un punteggio minimo.", + "fileIt": "Registralo", + "fileItHint": "Inserisci questo elemento nella biblioteca di destinazione e contrassegna la richiesta come disponibile.", + "noDestination": "Questa richiesta non ha una biblioteca di destinazione con una cartella al suo interno, quindi non c'è ancora nessun posto dove archiviare il libro.", "openDock": "Apri il Dock dei libri", "missingEntry": "Il file su cui è stata trattenuta questa richiesta non è più nel Book Dock. È stato archiviato o scartato a mano, quindi qui non è rimasto nulla da rivedere.", "missingEntryNext": "Se il libro è già nella tua biblioteca, chiudi questa richiesta di seguito. In caso contrario, annullare la richiesta e cercare un'altra versione.", - "filed": "Archiviato nella tua libreria.", + "filed": "Archiviato nella tua biblioteca.", "fileFailed": "Impossibile archiviare questa importazione", "discard": "Elimina questa importazione", "discardHint": "Usalo quando si scopre che la pubblicazione era il libro sbagliato. I file vengono rimossi dal Book Dock e la richiesta viene contrassegnata come non riuscita." @@ -8889,7 +9578,7 @@ "inCollection": "In questa raccolta", "allInCollection": "Tutti i {total} in questa raccolta", "partialInCollection": "{partial} di {total} in questa raccolta", - "bookCount": "{count, plural, =0 {niente libri} one {un libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {un libro} other {# libri} many {# libri}}", "loadFailed": "Impossibile caricare le raccolte", "createdAndAdded": "{count, plural, =0 {Creata \"{name}\" senza aggiungere libri} one {Creata \"{name}\" e aggiunto un libro} other {Creata \"{name}\" e aggiunti # libri} many {Creata \"{name}\" e aggiunti # libri}}", "createdButAddFailed": "Creata \"{name}\", ma non è stato possibile aggiungere i libri", @@ -8909,7 +9598,7 @@ "loadingMore": "Caricamento di più...", "loadMore": "Carica altro ({loaded}/{total})", "allMatchesShown": "{count, plural, =0 {Mostrata 1 corrispondenza} one {Mostrata 1 corrispondenza} other {Mostrate tutte le # corrispondenze} many {Mostrate tutte le # corrispondenze}}", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "fileCount": "{count, plural, =0 {nessun file} one {# file} other {# file} many {# file}}", "uploadedToast": "Caricato {uploaded}", "uploadFailedToast": "Caricamento non riuscito per {failed}", @@ -8940,12 +9629,13 @@ "signOut": "Esci", "githubStar": { "title": "Ti piace BookOrbit?", - "body": "Se BookOrbit ti sta aiutando con la tua libreria, considera di rendere protagonista il progetto su GitHub. Aiuta più persone a scoprire l'app e supporta lo sviluppo continuo.", + "body": "Se BookOrbit ti sta aiutando con la tua biblioteca, considera di rendere protagonista il progetto su GitHub. Aiuta più persone a scoprire l'app e supporta lo sviluppo continuo.", "cta": "Speciale BookOrbit su GitHub" }, "surfaceOpacity": "Opacità della superficie", "surfaceOpacityValue": "{value}%", - "surfaceBrightnessValue": "{value}%" + "surfaceBrightnessValue": "{value}%", + "readingHistory": "Cronologia" }, "sidebar": { "dashboard": "Cruscotto", @@ -9007,6 +9697,19 @@ "dropped": "{name} rilasciato alla posizione {position} di {total}", "cancelled": "Riordino annullato. {name} è tornato alla posizione {position} di {total}.", "filteredHint": "Cancella il filtro per riordinare" + }, + "customize": { + "open": "Personalizza barra laterale", + "title": "Personalizza barra laterale", + "hint": "Trascina per riordinare. Le pagine nascoste rimangono nella ricerca.", + "reset": "Ripristina predefiniti", + "done": "Fatto", + "resetDone": "Barra laterale reimpostata ai valori predefiniti", + "showInSidebar": "Mostra {name} nella barra laterale", + "show": "Mostra", + "hide": "Nascondi", + "alwaysShown": "{name} è sempre visualizzato", + "returnsWithWork": "Mostra quando ci sono attività in attesa" } }, "selectionActionBar": { @@ -9080,13 +9783,13 @@ }, "viewModes": { "grid": "Vista a griglia", - "list": "Visualizzazione elenco", + "list": "Vista a elenco", "table": "Vista tabellare" } }, "browseHeader": { "eyebrow": { - "library": "Libreria", + "library": "Biblioteca", "smartScope": "Ambito intelligente", "collection": "Collezione", "browse": "Sfoglia" @@ -9096,7 +9799,7 @@ "booksOf": "{matching} di {total, plural, one {# libro} other {# libri}}", "authors": "{count, plural, one {# autore} other {# autori}}", "series": "{count, plural, one {# serie} other {# serie}}", - "scanned": "{time} Scansionato", + "scanned": "Scansionato {time}", "scanningProgress": "Scansione {processed} / {total}", "syncsToKobo": "Sincronizza con Kobo" }, @@ -9127,7 +9830,7 @@ "format": "Formato", "rules": "Regole", "show": "Mostra", - "library": "Libreria", + "library": "Biblioteca", "status": "Stato", "ruleCount": "{count, plural, one {# regola} other {# regole}}" }, @@ -9273,7 +9976,7 @@ }, "customIcons": { "dialogTitle": "Carica icone personalizzate", - "dialogDescription": "Controlla i nomi prima di aggiungerli alla tua libreria.", + "dialogDescription": "Controlla i nomi prima di aggiungerli alla tua biblioteca.", "readingFiles": "Lettura dei file...", "dropPrompt": "Rilascia i file SVG o fai clic per sfogliare", "fileLimit": "Fino a {max} file, 128 KB ciascuno", @@ -9309,7 +10012,7 @@ }, "libraryLoad": { "errorTitle": "Impossibile caricare le tue librerie", - "errorDescription": "BookOrbit non è riuscito a recuperare le tue librerie. I dati della tua libreria non sono stati rimossi." + "errorDescription": "BookOrbit non è riuscito a recuperare le tue librerie. I dati della tua biblioteca non sono stati rimossi." }, "scroller": { "failedToLoad": "Impossibile caricare.", @@ -9318,7 +10021,7 @@ "continueListening": "Nessun audiolibro in corso ancora. Inizia ad ascoltarne uno per vederlo qui.", "wantToRead": "Nessun libro contrassegnato come da leggere ancora.", "upNextInSeries": "Nessuna scelta per il prossimo episodio della serie. Termina un volume per far emergere quello successivo.", - "recentlyAdded": "Nessun libro ancora nella tua libreria.", + "recentlyAdded": "Nessun libro ancora nella tua biblioteca.", "smartScope": "Nessun libro corrisponde a questo smartScope.", "default": "Nessun libro trovato." } @@ -9370,9 +10073,9 @@ "title": "Librerie dashboard", "description": "Scegli quali biblioteche contribuiscono con libri e dati di lettura a questa dashboard.", "allLibraries": "Tutte le biblioteche accessibili", - "summaryNone": "Nessuna libreria selezionata", - "summaryCount": "{count, plural, one {# libreria in più} other {# librerie in più}}", - "required": "Seleziona almeno una libreria." + "summaryNone": "Nessuna biblioteca selezionata", + "summaryCount": "{count, plural, one {# biblioteca in più} other {# biblioteche in più}}", + "required": "Seleziona almeno una biblioteca." }, "shelfRows": { "label": "File di libri", @@ -9387,11 +10090,11 @@ "resetToDefaults": "Ripristina le impostazioni predefinite" }, "welcome": { - "emptyTitle": "La tua libreria è vuota", - "noLibrariesTitle": "Nessuna libreria ancora", - "emptyDescription": "Crea una libreria per iniziare a organizzare e leggere i tuoi libri. Puntalo su una cartella e farà il resto.", - "noLibrariesDescription": "Il tuo amministratore non ha ancora configurato alcuna libreria. Contattali per iniziare.", - "createFirstLibrary": "Crea la tua prima libreria" + "emptyTitle": "La tua biblioteca è vuota", + "noLibrariesTitle": "Ancora nessuna biblioteca", + "emptyDescription": "Crea una biblioteca per iniziare a organizzare e leggere i tuoi libri. Puntalo su una cartella e farà il resto.", + "noLibrariesDescription": "Il tuo amministratore non ha ancora configurato alcuna biblioteca. Contattali per iniziare.", + "createFirstLibrary": "Crea la tua prima biblioteca" }, "widgets": { "currentlyReading": { @@ -9416,7 +10119,7 @@ }, "libraryOverview": { "title": "Panoramica della biblioteca", - "empty": "La tua libreria è vuota. Aggiungi alcuni libri per iniziare.", + "empty": "La tua biblioteca è vuota. Aggiungi alcuni libri per iniziare.", "addedThisYear": "+{count} aggiunto quest'anno", "stats": { "books": "Libri", @@ -9665,7 +10368,7 @@ }, "send": { "title": "Invia tramite e-mail", - "bookCount": "{count, plural, =0 {niente libri} one {un libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {un libro} other {# libri} many {# libri}}", "recipients": "Destinatari", "noRecipients": "Nessun destinatario configurato. Aggiungine uno nelle Impostazioni email.", "groups": "Gruppi", @@ -9984,7 +10687,22 @@ } }, "errors": { - "network": "Could not reach BookOrbit. Check your connection, then try again." + "network": "Could not reach BookOrbit. Check your connection, then try again.", + "codes": { + "CHAPTERS_STALE": "Qualcuno ha cambiato questi capitoli. Ricarica per vedere la sua versione.", + "CHAPTERS_EMPTY_TITLE": "Ogni capitolo deve avere un titolo.", + "CHAPTERS_FIRST_NOT_ZERO": "Il primo capitolo deve iniziare a 0:00.", + "CHAPTERS_NOT_ASCENDING": "I capitoli devono iniziare in ordine, ciascuno dopo quello precedente.", + "CHAPTERS_PAST_END": "Questo capitolo inizia dopo la fine dell'audiolibro.", + "CHAPTERS_FILES_UNREADABLE": "Impossibile leggere un file audio, quindi i suoi capitoli sono sconosciuti.", + "CHAPTERS_LOOKUP_NOT_FOUND": "Audible non dispone di capitoli per questo ASIN in questo store.", + "CHAPTERS_LOOKUP_UNAVAILABLE": "Audible non ha risposto. Riprova tra un attimo.", + "CHAPTERS_EBOOK_UNAVAILABLE": "Quell'ebook non ha un elenco di capitoli da leggere.", + "CHAPTERS_ANALYSIS_TOO_LARGE": "Audio troppo lungo da analizzare in un'unica soluzione.", + "CHAPTERS_ANALYSIS_UNAVAILABLE": "La ricerca delle pause richiede ffmpeg sul server.", + "CHAPTERS_WRITE_UNAVAILABLE": "Impossibile salvare i capitoli in questi file.", + "CHAPTERS_NOTHING_TO_WRITE": "Non ci sono capitoli salvati da scrivere." + } }, "hardcover": { "settings": { @@ -10209,15 +10927,15 @@ }, "library": { "creator": { - "createTitle": "Crea libreria", + "createTitle": "Crea biblioteca", "editTitle": "Modifica: {name}", "stepOf": "Passaggio {current} di {total}", "unsaved": "Non salvato", "required": "Obbligatorio", - "closeAria": "Chiudi il creatore della libreria", - "progressAria": "Avanzamento della configurazione della libreria", - "sectionsAria": "Sezioni delle impostazioni della libreria", - "loadingAria": "Caricamento delle impostazioni della libreria", + "closeAria": "Chiudi il creatore della biblioteca", + "progressAria": "Avanzamento della configurazione della biblioteca", + "sectionsAria": "Sezioni delle impostazioni della biblioteca", + "loadingAria": "Caricamento delle impostazioni della biblioteca", "sections": { "details": "Dettagli", "folders": "Cartelle", @@ -10232,17 +10950,17 @@ "saving": "Salvataggio…", "saveChanges": "Salva modifiche", "creating": "Creazione…", - "createLibrary": "Crea libreria" + "createLibrary": "Crea biblioteca" }, "details": { - "libraryName": "Nome della libreria", + "libraryName": "Nome della biblioteca", "namePlaceholder": "La mia biblioteca", "coverStyle": { "title": "Stile di copertina", "portrait": "Ritratto", "square": "Quadrato", "hint": "Ritratto per ebook o biblioteche miste. Square per le librerie di soli audiolibri.", - "hintSlots": "Ritratto per biblioteche di ebook o miste, quadrato per biblioteche di soli audiolibri. Un libro che contiene sia un ebook che un audiolibro mostra la copertina del libro in una libreria di ritratti e la copertina dell'audiolibro in una quadrata." + "hintSlots": "Verticale per le librerie di eBook o miste, quadrato per quelle di soli audiolibri. Un libro che dispone sia di un eBook che di un audiolibrò mostra la copertina del libro in una biblioteca verticale e quella dell'audiolibro in una quadrata." }, "icon": { "label": "Icona", @@ -10294,7 +11012,7 @@ "bookCount": "{count, plural, one {# libro} other {# libri} many {# libri}}", "checkAll": "Controlla di nuovo le cartelle", "checkAgain": "Controlla di nuovo {folder}", - "checkHint": "Ogni cartella viene controllata non appena la aggiungi. Una cartella già letta da un'altra libreria viene contrassegnata perché entrambe le librerie importerebbero gli stessi file.", + "checkHint": "Ogni cartella viene controllata non appena la aggiungi. Una cartella già letta da un'altra biblioteca viene contrassegnata perché entrambe le librerie importerebbero gli stessi file.", "emptyHint": "Incolla il percorso del server qui sotto o cercane uno.", "pastePlaceholder": "Incolla un percorso del server, ad es. /libri/Fantascienza", "browse": "Sfoglia...", @@ -10303,7 +11021,7 @@ "failed": "Controllo fallito", "notAccessible": "Non accessibile", "overlap": "Anche in {library}", - "overlapTitle": "La libreria \"{library}\" legge già questa cartella.", + "overlapTitle": "La biblioteca \"{library}\" legge già questa cartella.", "files": "{count, plural, one {# file} other {# file}}" }, "errors": { @@ -10317,7 +11035,7 @@ "scanMode": { "title": "Modalità di scansione", "lockedAria": "La modalità organizzazione è bloccata", - "lockTooltip": "La modalità di organizzazione viene corretta dopo la creazione della libreria perché la modifica può creare voci di libro duplicate o mancanti. Per utilizzare una modalità diversa, creare una nuova libreria ed eseguire nuovamente la scansione.", + "lockTooltip": "La modalità di organizzazione viene corretta dopo la creazione della biblioteca perché la modifica può creare voci di libro duplicate o mancanti. Per utilizzare una modalità diversa, creare una nuova biblioteca ed eseguire nuovamente la scansione.", "recommended": "Consigliato", "folderAsBook": { "title": "Cartella come libro", @@ -10326,6 +11044,10 @@ "fileAsBook": { "title": "File come libro", "hint": "Tratta ogni file come un singolo libro. Ideale per le biblioteche con un formato per titolo. Evita se i tuoi audiolibri occupano più file." + }, + "seriesFolders": { + "title": "Cartelle delle serie", + "uses": "Utilizza il file come libro" } }, "addedAt": { @@ -10359,7 +11081,7 @@ }, "errors": { "sourceImported": "Salva l'origine del timestamp del file prima di ricalcolare le date.", - "alreadyRunning": "È già in esecuzione un ricalcolo per questa libreria.", + "alreadyRunning": "È già in esecuzione un ricalcolo per questa biblioteca.", "busy": "Altri ricalcoli sono in esecuzione. Riprova a breve.", "requestFailed": "Impossibile raggiungere il servizio di ricalcolo. Chiudi e riapri questo editor per verificarne lo stato.", "interrupted": "Lo stato del lavoro non è più disponibile. Potrebbe essere stato interrotto dal riavvio del server. Puoi tranquillamente eseguire di nuovo il ricalcolo." @@ -10367,7 +11089,7 @@ "failureSample": "Libro {bookId}: {reason}", "failureReasons": { "file_unavailable": "Impossibile leggere un file di contenuto.", - "unsafe_path": "Un file di contenuto si trova all'esterno della cartella della libreria consentita.", + "unsafe_path": "Un file di contenuto si trova all'esterno della cartella della biblioteca consentita.", "database_error": "L'aggiornamento del database non è riuscito." } }, @@ -10376,7 +11098,7 @@ "allowAll": "Consenti tutto", "allAllowed": "Sono ammessi tutti i formati.", "onlySelected": "Verranno importati solo i formati selezionati.", - "warning": "I libri in altri formati già presenti nella libreria verranno contrassegnati come mancanti alla scansione successiva." + "warning": "I libri in altri formati già presenti nella biblioteca verranno contrassegnati come mancanti alla scansione successiva." }, "excludePatterns": { "title": "Escludi modelli", @@ -10391,8 +11113,11 @@ "cannotChange": "Questa è l'impostazione che non puoi modificare in seguito.", "folderHint": "Ogni cartella è un libro. Ideale quando un titolo tiene insieme diversi formati o un audiolibro comprende molti file.", "fileHint": "Ogni file è il suo libro. Ideale per cartelle piatte con un formato per titolo.", + "fileHintSeries": "Ogni file è un libro a sé stante. Ideale per fumetti e manga conservati in una cartella per serie, o in una cartella semplice con un solo formato per titolo.", "folderResult": "Un libro con due formati", - "fileResult": "Tre libri, uno per file" + "fileResult": "Tre libri, uno per file", + "seriesHint": "Ogni file è un libro a sé stante e la cartella in cui si trova è la sua serie, il layout utilizzato da Komga e Kavita. Ideale per fumetti e manga.", + "seriesResult": "Due serie, un libro per file" }, "import": { "title": "Importa", @@ -10409,11 +11134,20 @@ "skip": { "title": "Salta la corrispondenza dei file", "count": "{count, plural, one {# modello} other {# modelli}}", - "hint": "Modelli glob, confrontati con percorsi all'interno delle cartelle della libreria.", + "hint": "Modelli glob, confrontati con percorsi all'interno delle cartelle della biblioteca.", "inputLabel": "Modello da saltare", "placeholder": "Digita un pattern come **/samples/** e premi Invio", "placeholderMore": "Aggiungi un altro motivo", "remove": "Rimuovi motivo {pattern}" + }, + "series": { + "title": "Serie", + "toggle": "Le cartelle identificano le serie", + "hintOn": "Ogni cartella diventa una serie, e il numero in ogni nome file determina la posizione del libro in essa, come fanno Komga e Kavita. Una serie diversa specificata all'interno di un file ha comunque la precedenza.", + "hintOff": "Attiva questa opzione per fumetti e manga conservati in una cartella per serie, in modo che ciascuna cartella assegni il nome alla serie dei file contenuti al suo interno.", + "replacesCustom": "L'attivazione sostituisce le regole di percorso impostate in Metadati. Disattivandola prima di salvare, le regole verranno ripristinate.", + "existingBooks": "I libri già presenti in questa biblioteca ricevono queste serie quando applichi le regole corrispondenti nella sezione Metadati.", + "previewSeries": "Serie" } }, "metadata": { @@ -10433,7 +11167,7 @@ "reset": "Reimposta ordine", "first": "Prima scelta", "notImported": "Non importato", - "notHeld": "{count, plural, one {# che questa libreria non contiene mantiene la sua posizione predefinita dopo questi.} many {# non supportati da questa libreria mantengono l'ordine predefinito dopo questi.} other {# non supportati da questa libreria mantengono l'ordine predefinito dopo questi.}}", + "notHeld": "{count, plural, one {# formato non presente in questa biblioteca mantiene la sua posizione predefinita dopo questi.} other {# formati non presenti in questa biblioteca mantengono la loro posizione predefinita dopo questi.}}", "moreBelow": "{count, plural, one {# altro formato segue in questo ordine.} many {# altri formati seguono in questo ordine.} other {# altri formati seguono in questo ordine.}}", "showingAll": "Mostra tutti i formati.", "showAll": "Mostra tutto {count}", @@ -10451,7 +11185,7 @@ "regex": { "title": "Configura metadati regex", "sourceTitle": "Regex", - "description": "Estrae i metadati dal percorso del file primario rispetto alla cartella della libreria. L'estensione del file viene rimossa prima di corrispondere. Vince la prima regola con i campi utilizzabili.", + "description": "Estrae i metadati dal percorso del file principale rispetto alla cartella della biblioteca. L'estensione del file viene rimossa prima della ricerca di corrispondenze. Ha la precedenza la prima regola con campi utilizzabili.", "enable": "Abilita metadati regex", "primaryFileHint": "Per un libro fatto di diversi file, come tracce audiolibri, le regole leggono il percorso del file primario.", "groups": "Gruppi con nome:", @@ -10461,7 +11195,7 @@ "moveUp": "Sposta in alto la regola", "moveDown": "Sposta regola in basso", "remove": "Rimuovi regola", - "basePath": "Cartella libreria", + "basePath": "Cartella biblioteca", "extensionHint": "L'estensione del file viene ignorata automaticamente. L'ancora finale corrisponde al nome del file senza la sua estensione.", "flags": "Bandiere", "add": "Aggiungi regola", @@ -10481,7 +11215,7 @@ "matched": "Corrispondenza con la regola {number}", "noMatch": "Nessuna corrispondenza utilizzabile. Verranno utilizzati i metadati del file.", "scanHint": "Le modifiche si applicano all'estrazione di metadati futuri per i file nuovi o cambiati. Il salvataggio non avvia una scansione o aggiorna libri invariati.", - "apply": "Applica al modulo libreria", + "apply": "Applica al modulo biblioteca", "configure": "Configura", "enabledHint": "Estrae i campi da percorsi relativi senza estensioni di file.", "disabledHint": "Disabilitato. Configura le regole da abilitare.", @@ -10508,6 +11242,15 @@ "seriesIndex": "Numero della serie", "publishedYear": "Anno pubblicato", "publishedDate": "Data pubblicazione" + }, + "preset": { + "title": "Le cartelle identificano le serie", + "hint": "Regole per una cartella per ogni serie e un file per ogni volume, capitolo o numero, come si aspettano Komga e Kavita. Sostituiscono le regole sottostanti.", + "apply": "Utilizza queste regole" + }, + "reapply": { + "action": "Applica regole ai libri esistenti", + "applying": "Applicazione delle regole in corso..." } } }, @@ -10516,7 +11259,7 @@ "formatLimits": "Limiti di formato", "rename": { "title": "Rinominare i file dopo la modifica dei metadati", - "hint": "Rinomina i file fisici quando cambia titolo, autore, serie o anno, utilizzando il modello di denominazione della libreria." + "hint": "Rinomina i file fisici quando cambia titolo, autore, serie o anno, utilizzando il modello di denominazione della biblioteca." }, "write": { "title": "Scrivere metadati su file", @@ -10608,7 +11351,7 @@ "cronFormat": "Formato: minuto ora giorno mese giorno feriale", "watchFolders": { "title": "Guarda le cartelle", - "hint": "Rileva automaticamente i nuovi file aggiunti alle cartelle della libreria." + "hint": "Rileva automaticamente i nuovi file aggiunti alle cartelle della biblioteca." }, "presets": { "never": "Mai", @@ -10633,7 +11376,7 @@ "access": { "title": "Controllo degli accessi", "description": "I superutenti hanno sempre pieno accesso. Concedi l'accesso ad altri utenti di seguito.", - "notYetCreated": "L'accesso può essere configurato dopo la creazione della libreria.", + "notYetCreated": "L'accesso può essere configurato dopo la creazione della biblioteca.", "selectUser": "Seleziona un utente...", "grant": "Concedi", "empty": "A nessun utente è stato ancora concesso l'accesso.", @@ -10653,12 +11396,12 @@ "grant": "Impossibile concedere l'accesso", "updateLevel": "Impossibile aggiornare il livello di accesso", "revoke": "Impossibile revocare l'accesso", - "load": "Impossibile caricare le impostazioni di accesso alla libreria." + "load": "Impossibile caricare le impostazioni di accesso alla biblioteca." }, "peopleTitle": "Persone con accesso", "peopleCount": "{count, plural, one {# persona} many {# persone} other {# persone}}", "add": "Aggiungi", - "emptyCreate": "Nessun altro ancora. Le persone che aggiungi qui ottengono l'accesso non appena la libreria esiste.", + "emptyCreate": "Ancora nessun altro utente. Le persone aggiunte qui otterranno l'accesso non appena la biblioteca verrà creata.", "superusers": "I superutenti hanno sempre accesso completo.", "levelsHint": "Gli utenti possono sfogliare e leggere. Gli editor e i proprietari possono anche modificare i metadati quando il loro account ha il permesso Modifica i metadati.", "levelFor": "Livello di accesso per {name}", @@ -10668,7 +11411,7 @@ "keep": "Mantieni", "failed": { "title": "{count, plural, one {# persona} many {# persone} other {# persone}}", - "body": "La libreria è stata creata. Prova ad aggiungere di nuovo {names} o aggiungili in seguito da questa sezione." + "body": "La biblioteca è stata creata. Prova ad aggiungere di nuovo {names} o aggiungili in seguito da questa sezione." } }, "optional": "Facoltativo", @@ -10682,20 +11425,20 @@ "fileWrite": "Aggiornamenti file", "access": "Accesso", "descriptions": { - "details": "Come si chiama la libreria e come appaiono le sue copertine.", - "folders": "Le cartelle del server da cui legge questa libreria.", + "details": "Come si chiama la biblioteca e come appaiono le sue copertine.", + "folders": "Le cartelle del server da cui legge questa biblioteca.", "scanner": "Come i file vengono raggruppati in libri e quali file vengono saltati.", "metadata": "Quale file conduce quando un libro ne ha diversi e da dove provengono i suoi dettagli.", "reading": "Quando un libro passa da non letto a letto a letto.", - "schedule": "Mantieni aggiornata la libreria senza premere Scansione.", + "schedule": "Mantieni aggiornata la biblioteca senza premere Scansiona.", "fileWrite": "Modifiche facoltative che BookOrbit possono apportare ai file su disco.", - "access": "Chi altro può vedere e lavorare con questa libreria." + "access": "Chi altro può vedere e lavorare con questa biblioteca." } }, "sheet": { - "createTitle": "Nuova libreria", + "createTitle": "Nuova biblioteca", "createHint": "Assegnagli un nome e indirizzalo verso una cartella. Tutto il resto inizia con un default sensato.", - "editFallbackTitle": "Impostazioni della libreria", + "editFallbackTitle": "Impostazioni della biblioteca", "editSubtitle": "{books, plural, one {# libro} many {# libri} other {# libri}} · {folders, plural, one {# cartella} many {# cartelle} other {# cartelle}} · {mode}", "editSubtitleNoBooks": "{folders, plural, one {# cartella} many {# cartelle} other {# cartelle}} · {mode}", "readyHint": "Pronto per creare. Il resto può aspettare.", @@ -10705,7 +11448,7 @@ "keepEditing": "Continua a modificare", "done": "Fatto", "loading": "Caricamento impostazioni...", - "staleWarning": "Impossibile caricare le ultime impostazioni della libreria. Puoi comunque modificare le impostazioni memorizzate nella cache mostrate qui.", + "staleWarning": "Impossibile caricare le ultime impostazioni della biblioteca. Puoi comunque modificare le impostazioni memorizzate nella cache mostrate qui.", "scanNow": "Scansiona ora" }, "summary": { @@ -10736,20 +11479,20 @@ "accessPeople": "{count, plural, =0 {Solo superutenti} one {# persona} many {# persone} other {# persone}}" }, "errors": { - "nameRequired": "Inserisci un nome per la libreria.", + "nameRequired": "Inserisci un nome per la biblioteca.", "iconRequired": "Scegli un'icona.", "folderRequired": "Aggiungi almeno una cartella.", "cronInvalid": "Inserisci un'espressione cron valida a 5 campi.", "readingStartRange": "L'inizio della lettura deve essere compreso tra 0,05% e 5%.", "fileSizeRange": "I limiti delle dimensioni dei file devono essere numeri interi compresi tra 1 e 10.000 MB.", - "saveFailed": "Impossibile salvare la libreria.", + "saveFailed": "Impossibile salvare la biblioteca.", "connection": "Impossibile connettersi al server. Controlla la connessione e riprova." }, "copyName": "{name} copia" }, "folderPicker": { "title": "Sfoglia le cartelle del server", - "description": "Seleziona una o più cartelle per questa libreria.", + "description": "Seleziona una o più cartelle per questa biblioteca.", "closeAria": "Chiudi il browser delle cartelle", "currentFolderAria": "Cartella corrente", "parentFolder": "Vai alla cartella principale", @@ -10776,16 +11519,76 @@ "createFolder": "Impossibile creare la cartella" } }, + "folderBrowser": { + "view": { + "showEmpty": "Cartelle senza libri", + "showSystem": "Cartelle di sistema" + }, + "newFolder": { + "button": "Nuova cartella", + "label": "Nuova cartella in {name}", + "placeholder": "Nuova cartella in {name}", + "inputLabel": "Nuovo nome della cartella", + "hint": "{enter} crea {escape} annulla", + "create": "Crea", + "errors": { + "empty": "Inserisci un nome della cartella.", + "invalid": "Utilizza un solo nome di cartella, senza slash o un punto iniziale.", + "exists": "{name} esiste già qui.", + "denied": "BookOrbit non può scrivere qui.", + "failed": "Impossibile creare la cartella." + } + }, + "tree": { + "label": "Cartelle del server", + "expand": "Espandi {name}", + "collapse": "Comprimi {name}", + "select": "Seleziona {name}", + "readsThis": "{name} legge questa cartella", + "thisLibrary": "Questa biblioteca", + "librariesInside": "{names} {count, plural, one {legge una cartella} other {leggono cartelle}} all'interno", + "inside": "{count} all'interno", + "appData": "Dati di BookOrbit", + "noAccess": "Nessun accesso", + "loading": "Caricamento cartelle in corso", + "systemHidden": "{count, plural, one {# cartella di sistema} other {# cartelle di sistema}} nascoste in {path}", + "moreFolders": "Sono elencate solo le prime {count} cartelle. Cerca per nome o digita un percorso per trovare il resto.", + "unreadable": "BookOrbit non riesce a leggere {path}.", + "placesFailed": "BookOrbit non è riuscito a caricare le cartelle del server.", + "retry": "Riprova" + }, + "count": { + "books": "{count, plural, one {# libro} other {# libri}}", + "atLeast": "{count}+", + "more": "Altri +{count}" + }, + "plan": { + "label": "Cosa leggerà questa biblioteca", + "willRead": "{name} leggerà", + "newFolders": "{count, plural, one {# nuova cartella} other {# nuove cartelle}}", + "already": "già · {books}", + "emptyTitle": "Nessun elemento selezionato", + "emptyHint": "Seleziona le cartelle nell'albero. Selezionando una cartella si include tutto ciò che si trova al suo interno.", + "rowSize": "{books} · {size}", + "show": "Visualizza {name} nell'albero", + "showTitle": "Mostra nell'albero", + "remove": "Rimuovi {name}", + "fit": { + "folder": "Ciascuna cartella contiene un libro.", + "file": "Ciascun file è un libro." + } + } + }, "destination": { "loadFailed": "Impossibile caricare le librerie di destinazione. Chiudere e riaprire per riprovare.", - "noLibraries": "Non sono disponibili librerie di libreria. Crea una libreria o chiedi a un amministratore di accedere.", - "noFolders": "Questa libreria non ha cartelle di destinazione. Aggiungi una cartella nelle impostazioni della libreria.", - "unavailable": "La libreria selezionata non è più disponibile.", + "noLibraries": "Non sono disponibili librerie di biblioteca. Crea una biblioteca o chiedi a un amministratore di accedere.", + "noFolders": "Questa biblioteca non ha cartelle di destinazione. Aggiungi una cartella nelle impostazioni della biblioteca.", + "unavailable": "La biblioteca selezionata non è più disponibile.", "selectFolder": "Seleziona una cartella..." }, "upload": { "library": "Biblioteca", - "selectLibrary": "Seleziona una libreria...", + "selectLibrary": "Seleziona una biblioteca...", "targetFolder": "Cartella di destinazione", "addMoreFiles": "Aggiungi più file", "clearAll": "Cancella tutto", @@ -10793,7 +11596,7 @@ "retry": "Riprova", "upload": "Carica", "uploadWithCount": "Carica ({count})", - "viewInLibrary": "Visualizza nella libreria", + "viewInLibrary": "Visualizza nella biblioteca", "fileCount": "{count, plural, =0 {nessun file} one {# file} other {# file} many {# file}}", "booksAdded": "{count, plural, =0 {nessun libro aggiunto} one {# libro aggiunto} other {# libri aggiunti} many {# libri aggiunti}}", "uploadedFailed": "{done} caricato, {failed} non riuscito", @@ -10814,7 +11617,7 @@ "title": "Promemoria mancanti", "navDescription": "Scegli quali campi di metadati mancanti vuoi vedere", "personal": "Le tue preferenze", - "description": "Scegli quali campi mancanti appaiono nei promemoria dei libri. Queste preferenze si applicano nella tua libreria e non cambiano i punteggi dei metadati.", + "description": "Scegli quali campi mancanti appaiono nei promemoria dei libri. Queste preferenze si applicano nella tua biblioteca e non cambiano i punteggi dei metadati.", "sheetDescription": "Scegli i campi che ti interessano senza lasciare questo libro.", "fieldsHeading": "Campi da controllare", "autoSave": "Modifiche salvate automaticamente sul tuo account.", @@ -10894,7 +11697,7 @@ }, "migration": { "sidebarTitle": "Importazione di libri", - "importTitle": "Importazione della libreria", + "importTitle": "Importazione della biblioteca", "status": { "done": "Fatto", "saved": "Salvato", @@ -10911,7 +11714,7 @@ "short": "Connessione alla sorgente", "title": "Connessione alla sorgente", "subtitle": "Configura la connessione al database all'istanza Booklore di origine.", - "genericSubtitle": "Configura la connessione alla tua applicazione di libreria sorgente." + "genericSubtitle": "Configura la connessione alla tua applicazione di biblioteca sorgente." }, "mappings": { "short": "Mappatura utenti e percorsi", @@ -10962,7 +11765,7 @@ "fields": { "type": "Tipo di origine", "name": "Nome della fonte", - "namePlaceholder": "Importazione della libreria", + "namePlaceholder": "Importazione della biblioteca", "host": "Host", "port": "Porta", "user": "Utente", @@ -11006,7 +11809,7 @@ "snapshotTitle": "Modalità istantanea interrotta", "stoppedWarning": "Interrompi Calibre-Web Automatizzato prima di copiare entrambi i database. BookOrbit non può verificare che le due istantanee siano state copiate esattamente nello stesso istante.", "importRootGuidance": "Entrambi i file di snapshot devono essere percorsi server leggibili sotto la directory MIGRATION_IMPORT_ROOT configurata.", - "logicalRootGuidance": "La mappatura del percorso del libro utilizza la radice logica della libreria Calibre archiviata in app.db, non la cartella host contenente questi snapshot del database.", + "logicalRootGuidance": "La mappatura del percorso del libro utilizza la radice logica della biblioteca Calibre archiviata in app.db, non la cartella host contenente questi snapshot del database.", "compatibilityNote": "Il comportamento dello schema è verificato rispetto a Calibre-Web Automated v4.0.6. I suoi database non espongono una versione di rilascio dell'applicazione affidabile." }, "mediaPath": { @@ -11149,10 +11952,10 @@ }, "unresolvedReason": { "noTitleAuthorMatch": "Nessun libro corrispondente trovato per titolo o autore", - "noFilePathMatch": "Il percorso del file non corrisponde ad alcun libro in questa libreria", - "noFileHashMatch": "L'hash del file non corrisponde ad alcun libro in questa libreria", - "noIsbnMatch": "ISBN non corrisponde ad alcun libro in questa libreria", - "noAsinMatch": "L'ASIN non corrisponde ad alcun libro in questa libreria", + "noFilePathMatch": "Il percorso del file non corrisponde ad alcun libro in questa biblioteca", + "noFileHashMatch": "L'hash del file non corrisponde ad alcun libro in questa biblioteca", + "noIsbnMatch": "ISBN non corrisponde ad alcun libro in questa biblioteca", + "noAsinMatch": "L'ASIN non corrisponde ad alcun libro in questa biblioteca", "insufficientSourceData": "Metadati insufficienti per tentare la corrispondenza", "ambiguousIsbnMatch": "Più libri corrispondevano allo stesso ISBN", "ambiguousAsinMatch": "Più libri corrispondevano allo stesso ASIN", @@ -11184,7 +11987,7 @@ "initFailed": "Impossibile inizializzare le impostazioni di migrazione", "loadSupportedTypesFailed": "Impossibile caricare i tipi di origine della migrazione supportati", "loadTargetUsersFailed": "Impossibile caricare gli utenti di destinazione", - "loadTargetFoldersFailed": "Impossibile caricare le cartelle della libreria di destinazione", + "loadTargetFoldersFailed": "Impossibile caricare le cartelle della biblioteca di destinazione", "noSourceUsers": "Non è stato restituito alcun utente di origine", "suggestionsLoaded": "Suggerimenti per la mappatura degli utenti caricati", "loadSuggestionsFailed": "Impossibile caricare i suggerimenti per la mappatura degli utenti", @@ -11788,7 +12591,7 @@ "pageTitleNamed": "Serie · {name}", "pageTitleWithId": "Serie n.{id}", "entityName": "Serie", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "byAuthors": "di {authors}", "moreAuthors": "+{count} altri", "preparingEditor": "Redazione in preparazione...", @@ -11808,7 +12611,7 @@ "allLibraries": "Tutte le biblioteche", "groupByMedia": "Raggruppa per supporto", "noBooksFound": "Nessun libro trovato in questa serie", - "trySelectingLibrary": "Prova a selezionare un'altra libreria.", + "trySelectingLibrary": "Prova a selezionare un'altra biblioteca.", "allBooksLoaded": "Tutti i {count} libri caricati", "leadBookLoadError": "Impossibile caricare i dettagli del libro principale", "noBooksToEdit": "Questa serie non ha libri da modificare.", @@ -11913,7 +12716,7 @@ "untitled": "SmartScope senza titolo", "subtitle": "Configurare le impostazioni dell'ambito intelligente", "counting": "contare...", - "bookCount": "{count, plural, =0 {niente libri} one {un libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {un libro} other {# libri} many {# libri}}", "identity": "Identità", "filters": "Filtri", "noFilters": "Nessun filtro impostato. Tutti i libri accessibili saranno inclusi in questo ambito intelligente.", @@ -12014,7 +12817,7 @@ "title": "Integrità della biblioteca" }, "libraryMetadataCompleteness": { - "title": "Completezza dei metadati della libreria" + "title": "Completezza dei metadati della biblioteca" }, "metadataCompleteness": { "title": "Completezza dei metadati" @@ -12138,8 +12941,8 @@ }, "bulkRename": { "library": "Biblioteca", - "selectLibraryPlaceholder": "Seleziona una libreria...", - "noEligibleLibraries": "Nessuna libreria ha la ridenominazione dei file abilitata. Abilitalo nelle Impostazioni della Libreria.", + "selectLibraryPlaceholder": "Seleziona una biblioteca...", + "noEligibleLibraries": "Nessuna biblioteca ha la ridenominazione dei file abilitata. Abilitalo nelle Impostazioni della Biblioteca.", "refresh": "Aggiorna", "previewFailed": "Impossibile caricare l'anteprima", "executionFailed": "La ridenominazione collettiva non è riuscita", @@ -12215,8 +13018,8 @@ "onDisk": "Su disco", "today": "Oggi", "afterRename": "Dopo la ridenominazione", - "showLibraryFolders": "Mostra le cartelle della libreria", - "hideLibraryFolders": "Nascondi le cartelle della libreria", + "showLibraryFolders": "Mostra le cartelle della biblioteca", + "hideLibraryFolders": "Nascondi le cartelle della biblioteca", "currentPath": "Percorso corrente", "whyItMoves": "Perché si muove", "levelTop": "Cartella principale", @@ -12232,9 +13035,9 @@ "siblingsMore": "+{count} altro" }, "empty": { - "title": "Scegli una libreria per iniziare", - "description": "Seleziona una libreria qui sopra per visualizzare in anteprima le modifiche di ridenominazione, filtrare per stato e applicare l'esecuzione di ridenominazione in blocco.", - "chooseLibrary": "Scegli Libreria", + "title": "Scegli una biblioteca per iniziare", + "description": "Seleziona una biblioteca qui sopra per visualizzare in anteprima le modifiche di ridenominazione, filtrare per stato e applicare l'esecuzione di ridenominazione in blocco.", + "chooseLibrary": "Scegli biblioteca", "noneTitle": "Niente da rivedere", "noneDescription": "Nessun libro corrisponde al filtro corrente. Cancella la ricerca o passa a Tutti.", "noMatch": "Nessun libro corrisponde alla tua ricerca." @@ -12313,7 +13116,7 @@ }, "initial": { "title": "Trova libri duplicati", - "description": "Scegli l'ambito della libreria e il livello di somiglianza, quindi esegui una scansione. Nessun libro verrà modificato finché non confermi esplicitamente l'eliminazione." + "description": "Scegli l'ambito della biblioteca e il livello di somiglianza, quindi esegui una scansione. Nessun libro verrà modificato finché non confermi esplicitamente l'eliminazione." }, "empty": { "title": "Nessun gruppo duplicato trovato", @@ -12428,7 +13231,7 @@ }, "entityManager": { "unknown": "Sconosciuto", - "bookCount": "{count, plural, =0 {niente libri} one {# libro} other {# libri} many {# libri}}", + "bookCount": "{count, plural, =0 {nessun libro} one {# libro} other {# libri} many {# libri}}", "sortPrefix": "· ordina: {sortName}", "selectTargetToKeep": "Seleziona l'obiettivo da mantenere", "writeToFiles": "Scrivere su file", @@ -12679,7 +13482,7 @@ "collapseLockedWhileSelecting": "Le serie rimangono espanse durante la selezione", "expanded": "Espanso", "exportMetadata": "Esporta metadati", - "showControlsAria": "Mostra i controlli della libreria", + "showControlsAria": "Mostra i controlli della biblioteca", "export": "Esportazione", "searchPlaceholder": "Cerca titolo, autore, serie, narratore...", "allBooksLoaded": "Tutti i {count} libri caricati" @@ -12752,13 +13555,13 @@ "noSearchMatch": "Nessun libro corrisponde a questa ricerca", "noSearchMatchHint": "Prova un termine di ricerca diverso o cancella la ricerca.", "noBooks": "Nessun libro in questa raccolta", - "noBooksHint": "Seleziona i libri dalla tua libreria e aggiungili qui." + "noBooksHint": "Seleziona i libri dalla tua biblioteca e aggiungili qui." } }, "library": { "title": "Biblioteca", "pageTitle": "Biblioteca · {name}", - "pageTitleWithId": "Libreria n.{id}", + "pageTitleWithId": "Biblioteca #{id}", "filterRules": "Regole di filtro", "saveAsSmartScope": "Salva come Smart Scope", "saveScope": "Salva ambito", @@ -12766,16 +13569,16 @@ "saved": "Salvato", "saveFilter": "Salva filtro", "filterSaved": "Filtro salvato", - "saveFilterTooltip": "Salva filtro per questa libreria", + "saveFilterTooltip": "Salva filtro per questa biblioteca", "removeSavedFilter": "Rimuovi il filtro salvato", "empty": { "noFilterMatch": "Nessun libro corrisponde ai tuoi filtri", "noFilterMatchHint": "Prova a modificare o cancellare i filtri per vedere più libri.", "clearFilters": "Cancella filtri", - "scanning": "Scansione della tua libreria...", + "scanning": "Scansione della tua biblioteca...", "scanningHint": "I libri appariranno qui man mano che vengono scoperti.", - "emptyLibrary": "La tua libreria è vuota", - "emptyLibraryHint": "Una volta aggiunti i libri a questa libreria, verranno visualizzati qui." + "emptyLibrary": "La tua biblioteca è vuota", + "emptyLibraryHint": "Una volta aggiunti i libri a questa biblioteca, verranno visualizzati qui." }, "querySelection": { "loadedSelected": "{selected} di {total} libri caricati selezionati.", @@ -12883,7 +13686,7 @@ "book-covers": "Copertine di libri", "icons": "Icone", "layout": "Disposizione dello schermo", - "behavior": "Comportamento della libreria", + "behavior": "Comportamento della biblioteca", "language": "Lingua" }, "reader": { @@ -13039,7 +13842,7 @@ "offer": "Ho rimosso solo la copia del dispositivo; offrire la sostituzione", "confirm": "Ho installato la sostituzione", "cancel": "Annulla sostituzione", - "replacementHint": "Preparare e rivedere prima. Rimuovere una copia di un dispositivo non elimina il libro della libreria. Esegui il backup delle note locali del dispositivo da solo. BookOrbit preserva i progressi canonici e le annotazioni del server. Gli eventi ritardati possono limitare la sincronizzazione precisa.", + "replacementHint": "Preparare e rivedere prima. Rimuovere una copia di un dispositivo non elimina il libro della biblioteca. Esegui il backup delle note locali del dispositivo da solo. BookOrbit preserva i progressi canonici e le annotazioni del server. Gli eventi ritardati possono limitare la sincronizzazione precisa.", "prepared": "Sostituzione preparata: {format}, {size}. Rimuovere questo libro solo dal dispositivo selezionato, quindi offrire la sostituzione preparata e sincronizzare.", "offered": "Sostituzione offerta. Sincronizza e scarica sul dispositivo, quindi conferma l'installazione. Un trasferimento HTTP completato non dimostra l'installazione.", "cancelled": "Sostituzione annullata. La cancellazione non ripristina una copia del dispositivo rimossa o parzialmente sostituita. Selezionare lo stesso libro per preparare un download di recupero.", @@ -13084,7 +13887,7 @@ "kinds": { "author": "Autore", "series": "Serie", - "library": "Libreria", + "library": "Biblioteca", "smartScope": "Ambito intelligente", "collection": "Collezione", "page": "Pagina", diff --git a/client/src/locales/pl.json b/client/src/locales/pl.json index ac23566b3..14b0fe852 100644 --- a/client/src/locales/pl.json +++ b/client/src/locales/pl.json @@ -117,6 +117,11 @@ "label": "Schemat kolorów", "hint": "Jasny lub ciemny interfejs" }, + "surfacePalette": { + "palettes": { + "onyx": "Onyx" + } + }, "topGlow": { "value": "{value}%" }, diff --git a/client/src/locales/pt.json b/client/src/locales/pt.json index a94912e77..57349d796 100644 --- a/client/src/locales/pt.json +++ b/client/src/locales/pt.json @@ -109,7 +109,7 @@ "title": "Tema", "style": { "label": "Estilo", - "hint": "A aparência geral do app. Modo, cantos e plano de fundo mantêm suas configurações.", + "hint": "A aparência geral da aplicação. Modo, cantos e plano de fundo mantêm suas configurações.", "bookorbit": { "label": "BookOrbit", "description": "Superfícies coloridas, painéis de vidro e cabeçalhos de serifa." @@ -1954,6 +1954,11 @@ } }, "providers": { + "tabs": { + "builtIn": "Integrado", + "external": "Externo", + "attention": "Precisa de atenção" + }, "availableSources": "Fontes Disponíveis", "saveChanges": "Salvar Alterações", "discard": "Descartar", @@ -2025,6 +2030,115 @@ "aladin": "O Aladin requer uma Chave TTB antes de poder ser ativado" } }, + "providerDirectory": { + "title": "Disponível para instalar", + "hint": "Cada um é executado como um container ao lado de BookOrbit. Copie seu serviço de Compor no arquivo que executa BookOrbit, inicie-o com o docker-compose e então escolha Adicionar.", + "updated": "Atualizado há {time}", + "bundled": "Lista incluída com esta versão", + "loadFailed": "A lista de provedores prontos não pôde ser carregada. Você ainda pode adicionar qualquer provedor pelo seu endereço.", + "copy": "Copiar Composição", + "copyLabel": "Copiar o serviço Compose para {name}", + "copied": "{name} copiado. Cole nos serviços: no seu arquivo de composição, e então execute docker compose up -d.", + "copyFailed": "Não foi possível copiar para a área de transferência. Os documentos do provedor possuem o mesmo trecho.", + "add": "Adicionar", + "addLabel": "Adicionar {name}", + "alreadyAdded": "Já adicionado: {names}", + "allAdded": "Você adicionou todos os provedores nesta lista.", + "wasBuiltIn": "Foi construído em", + "docs": "Docs", + "docsLabel": "Documentação {name}, abre em uma nova aba", + "media": { + "book": "Livros", + "audiobook": "Audiobook", + "comic": "Quadrinhos" + } + }, + "buildYourOwn": { + "title": "Crie o seu próprio", + "body": "Falta uma fonte? Um provedor é um pequeno serviço da web que responde a três solicitações JSON, então qualquer idioma serve. Comece pelo Rust ou vá começar, analise com o verificador de conformidade, e então adicione-o aqui como qualquer outro.", + "links": { + "guide": "Guia de construção", + "starters": "Iniciais", + "checker": "Verificador de Conformidade", + "suggest": "Sugira uma fonte" + } + }, + "movedProviders": { + "title": "Algumas fontes não estão mais construídas em", + "description": "Regras do campo que listam essas fontes por enquanto. Os ids e links já existentes nos seus livros são mantidos.", + "run": "{name} agora é executado como seu próprio provedor: execute {image}, depois adicione-o em provedores externos.", + "closed": "{name} fechou o serviço do BookOrbit utilizado, então ele não pode ser adicionado de volta. Remova de suas regras de campo." + }, + "externalProviders": { + "title": "Provedores externos", + "description": "Serviços de metadados que são executados fora do BookOrbit, como um container ao lado dele ou um serviço hospedado. Adicione um por seu endereço; uma vez habilitado, ele aparece nas regras de pesquisa, Livro Dock e campo como qualquer outra fonte.", + "yourProviders": "Seus provedores", + "emptyWithDirectory": "Nada adicionado ainda. Escolha um provedor pronto abaixo, ou adicione um usando seu endereço.", + "add": "Adicionar provedor", + "empty": "Nenhum provedor externo ainda. Qualquer serviço que tenha a especificação do provedor de livros pode ser adicionado aqui.", + "edit": "Editar {name}", + "toggle": "Ativar {name}", + "row": "{host} · versão {version}", + "useInFieldRules": "Utilizar em regras de campo", + "fieldRulesAdded": "{name} adicionado a {count, plural, =0 {sem novas regras de campo; já está em todas as regras que pode preencher} one {# regra de campo} other {# regras de campo}}.", + "added": "{name} adicionado. Permanece desativado até você habilitá-lo.", + "saved": "{name} salvo.", + "removed": "{name} removido. Suas ids e classificações armazenadas foram mantidas.", + "purged": "{name} removido com seus ids e avaliações armazenadas.", + "status": { + "active": "Ativo", + "ready": "Pronto", + "stale": "Última verificação falhou", + "unreachable": "Inacessível", + "key_changed": "Chave alterada", + "incompatible": "Incompatível", + "authorizationUnreadable": "Cabeçalho ilegível" + }, + "authorizationUnreadableHint": "O cabeçalho de autorização salvo não pôde ser descriptografado, portanto esse provedor não está pesquisado. Digite o cabeçalho novamente.", + "sheet": { + "createTitle": "Adicionar provedor externo", + "description": "Um serviço HTTP que tem as especificações do provedor de livros. BookOrbit pede-lhe metadados; ele nunca executa o código do provedor.", + "identity": "Chave {key} · versão {version}", + "test": "Testar", + "testing": "Testando...", + "remove": "Remover provedor", + "removeConfirm": "Remover {name}?", + "removeConsequence": "Suas ids, classificações e entradas de regras de campo permanecem, então adicioná-las novamente as restaura.", + "purge": "Remover e excluir seus dados", + "purgeConfirm": "Remover {name} e excluir seus dados?", + "purgeConsequence": "Exclui todas as identificações e avaliações armazenadas. Isso não pode ser desfeito." + }, + "fields": { + "baseUrl": "Endereço", + "baseUrlHint": "A URL base do provedor, como http://provider:8080 para um contêiner na mesma rede Docker.", + "authorization": "Cabeçalho de autorização", + "authorizationHint": "Opcional. Enviado exatamente como inserido, \"Portador abc123\". Será armazenado criptografado e nunca mais exibido novamente.", + "authorizationSaved": "Um cabeçalho foi salvo. Insira um novo para substituí-lo.", + "clearAuthorization": "Remover o cabeçalho salvo", + "allowPrivate": "Permitir endereço privado", + "allowPrivateHint": "Necessário para um provedor na sua própria rede ou em um container ao lado do BookOrbit. Deixe-o desligado para um provedor na internet.", + "timeout": "Tempo limite (segundos)", + "timeoutHint": "Entre {min} e {max} segundos.", + "privacy": "O provedor recebe os títulos, autores e ISBNs dos livros sobre os quais é perguntado." + }, + "test": { + "ok": "{name} respondeu em {latency} ms com {count, plural, one {# resultado} other {# resultados}}.", + "sample": "Primeiro resultado: {title}", + "failed": "Teste falhou: {error}" + }, + "errors": { + "privateAddress": "Esse endereço está em uma rede privada. Ative a opção Permitir que o endereço privado para entrar em contato com o provedor.", + "unreachable": "BookOrbit não pôde acessar um provedor nesse endereço.", + "unauthorized": "O provedor recusou o cabeçalho de autorização.", + "invalidInfo": "Esse endereço respondeu, mas não com informações do provedor utilizável.", + "invalidUrl": "Digite o endereço de provedor como uma URL http completa ou https, sem credenciais nele.", + "keyTaken": "Um provedor com a mesma chave já está registrado.", + "keyChanged": "Esse endereço serve a um provedor diferente. Adicione-o como um novo provedor.", + "notReady": "Execute um teste com sucesso antes de habilitar este provedor.", + "authorizationUnreadable": "O cabeçalho de autorização salvo não pôde ser descriptografado. Introduza novamente antes de ativar este provedor.", + "generic": "A solicitação ao provedor falhou." + } + }, "fieldRules": { "clearAllProviders": "Limpar Todos os Provedores", "clearAll": "Limpar Tudo", @@ -2473,7 +2587,7 @@ "example": "42" }, "date": { - "label": "Encontro", + "label": "Data", "hint": "Um dia do calendário", "example": "2024-03-09" }, @@ -3406,6 +3520,12 @@ "syncEnabled": "Sincronização KOReader ativada", "syncDisabled": "Sincronização KOReader desativada", "toggleSyncFailed": "Falha ao alternar a sincronização", + "pluginLibrary": "Biblioteca de Plugins", + "hideAudioOnlyBooks": "Ocultar livros com somente audiobook", + "hideAudioOnlyBooksHint": "KOReader não pode reproduzir áudio, então livros com apenas arquivos de áudio permanecem fora das listas do plugin, pesquisa e downloads, assim como uma biblioteca que não mantém nada mais. Livros que também têm um ebook ainda são exibidos.", + "audioOnlyBooksHidden": "Livros somente do Audiobook ocultos no plugin", + "audioOnlyBooksShown": "Livros somente do Audiobook exibidos no plugin", + "toggleAudioOnlyBooksFailed": "Falha ao atualizar a configuração da biblioteca de plugins", "syncUrlCopied": "URL de sincronização copiada para a área de transferência", "syncUrlCopyFailed": "Falha ao copiar a URL de sincronização", "statusRefreshed": "Status de sincronização atualizado", @@ -3456,7 +3576,10 @@ "reviewDismissed": "Livro dispensado da revisão", "reviewDismissFailed": "Falha ao descartar o livro da revisão", "reviewAllDismissed": "{count, plural, =0 {Não ignorou nenhum livro da revisão} one {Ignorou # livros da revisão} other {Dispensou # livros da avaliação}}", - "reviewDismissAllFailed": "Falha ao descartar todos os livros da revisão" + "reviewDismissAllFailed": "Falha ao descartar todos os livros da revisão", + "suggestedLinked": "{count, plural, one {Vinculado # livro sugerido} other {Vinculados # livros sugeridos}}", + "suggestedPartlyLinked": "{linked, plural, one {# Livro sugerido vinculado.} other {# Livros sugeridos vinculados.}} {failed, plural, one {# não pôde ser vinculado e permanece na lista.} other {# não puderam ser vinculados e permanecem na lista.}}", + "suggestedLinkFailed": "Não foi possível vincular os livros sugeridos" }, "modal": { "linkTitle": "Vincular livro do KOReader", @@ -3517,7 +3640,21 @@ "manualUnlinkConfirmBody": "Remover o link manual para {title} e devolver este livro à lista de revisões. Futuras sincronizações usarão uma correspondência automática, se existir. As estatísticas já sincronizadas permanecerão em seu livro atual do BookOrbit.", "reviewDismissConfirmBody": "Isto o remove dos seus livros para revisar. Correspondências automáticas e dados de sincronização existentes são mantidos. Se um dispositivo reportar o hash novamente sem uma correspondência, ele poderá reaparecer.", "reviewDismissAllConfirmTitle": "{count, plural, =0 {Não há livros para revisar} one {Descartar todos os # livros para revisar?} other {Descartar todos os # livros para avaliar?}}", - "reviewDismissAllConfirmBody": "Isto limpa todos os seus livros para revisar a lista, incluindo as entradas em outras páginas. Dados de correspondência automática e de sincronização existentes são mantidos. Se o dispositivo reportar um hash novamente sem uma correspondência, ele poderá reaparecer." + "reviewDismissAllConfirmBody": "Isto limpa todos os seus livros para revisar a lista, incluindo as entradas em outras páginas. Dados de correspondência automática e de sincronização existentes são mantidos. Se o dispositivo reportar um hash novamente sem uma correspondência, ele poderá reaparecer.", + "copyNote": "Esta cópia no KOReader é um arquivo diferente do que está no BookOrbit. O status de leitura, avaliação, tempo de leitura e progresso (em porcentagem) serão sincronizados. Destaques e marcadores, não. Para sincronizar tudo, baixe o livro do BookOrbit para o KOReader.", + "differentCopyHint": "Arquivo diferente daquele que está no BookOrbit: o progresso é sincronizado como uma porcentagem e os destaques e favoritos não são sincronizam.", + "suggestedMatch": "Correspondência sugerida", + "possibleMatches": "{count, plural, one {# possível correspondência} other {# possíveis correspondências}}", + "morePossibleMatches": "{count, plural, one {Mais de # correspondência possível} other {Mais de # correspondências possíveis}}", + "possibleMatchesHint": "Livros na sua biblioteca com o mesmo título e autores. Verifique a edição antes do link.", + "reviewMatch": "Revisar a correspondência", + "chooseMatch": "Escolha a correspondência", + "linkSuggested": "Link sugerido ({count})", + "bulkLinkTitle": "{count, plural, one {Link # livro sugerido?} other {Link # livros sugeridos?}}", + "bulkLinkDescription": "Cada livro do KOReader abaixo tem o mesmo título e autores de um livro na sua biblioteca. Verifique a lista antes de vincular.", + "bulkLinkConfirm": "{count, plural, one {Link # livro} other {Link # livros}}", + "bulkLinkListLabel": "Links sugeridos", + "openCandidate": "Abrir {title} em uma nova aba" }, "remove": "Remover", "removing": "Removendo...", @@ -4390,7 +4527,7 @@ "units": { "books": { "progress": "{current} / {threshold} para ", - "toGo": "{count, plural, one {# reservas para ir} other {# livros para ir}}" + "toGo": "{count, plural, one {# livro restante} other {# livros restantes}}" }, "pages": { "progress": "{current} / {threshold} páginas", @@ -4767,6 +4904,10 @@ "clearAll": "Limpar", "permissionsHint": "O que esta conta pode fazer. {granted} de {total} concedidos.", "groupLegend": "{group}: {granted} de {total} concedido", + "permissionNotes": { + "editMetadataNowhere": "Sem efeito ainda: ele também precisa do papel do editor ou do proprietário na biblioteca, definida em Configurações > Bibliotecas > Acesso.", + "editMetadataExcept": "Não está em {libraries}, onde esta conta é um Visualizador. Defina o Editor ou Proprietário em Configurações > Bibliotecas > Acesso." + }, "presets": { "label": "Predefinição de permissão", "none": "Nenhum", @@ -5069,7 +5210,8 @@ "bulkRestored": "{count, plural, =0 {Nenhuma anotação restaurada} one {Restaurada # anotação} many {Restauradas # anotações} other {Restauradas # anotações}}", "bulkRecolored": "{count, plural, =0 {Nenhuma anotação recolorida} one {Recolorida # anotação} many {Recoloridas # anotações} other {Recoloridas # anotações}}", "bulkRestyled": "{count, plural, =0 {Estilo não alterado} one {Alterado o estilo de # anotação} many {Alterado o estilo de # anotações} other {Alterado o estilo de # anotações}}", - "noteSaved": "Nota salva" + "noteSaved": "Nota salva", + "purgePendingDeviceSync": "Um dispositivo sincronizado ainda precisa remover esta anotação. Sincronize o dispositivo e/ou apague-o para sempre." }, "railTitle": "{marks} marcas · {books} livros", "lastTwelveMonths": "Últimos 12 meses", @@ -5114,10 +5256,16 @@ }, "activitySummary": "{count, plural, one {# destaque entre {from} e {to}} other {# destaques entre {from} e {to}}}", "book": "Livro", - "needsReview": "Requer revisão" + "needsReview": "Requer revisão", + "trashToggle": "{count, plural, one {Lixo, # anotações} other {Lixo, # anotações}}", + "purgeDialog": { + "title": "Excluir permanentemente?", + "description": "Esta anotação e sua nota foram removidas. Ela não pode ser restaurada da lixeira." + } }, "sources": { "web": "Web", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -5256,6 +5404,7 @@ "BookRequest": "Pedido de livro", "DownloadClient": "Cliente de download", "RequestIndexer": "Indexador", + "MetadataHttpProvider": "Provedor de metadados", "Author": "Autor", "AppSettings": "Configurações da aplicação", "Genre": "Gênero", @@ -5314,6 +5463,7 @@ "LibraryWriteMetadataToFiles": "Gravar metadados nos arquivos", "LibraryBulkRename": "Renomear arquivos da biblioteca", "LibraryRecomputeAddedAt": "Recalcular data de adição", + "LibraryReapplyRegexMetadata": "Aplicar regras de caminho aos livros existentes", "BookUpload": "Upload de livros", "BookMetadataUpdate": "Atualizar metadados do livro", "BookMetadataLocksUpdate": "Atualizar bloqueios de metadados", @@ -5357,6 +5507,9 @@ "RequestIndexerPluginInspect": "Plugin de indexador inspecionado", "RequestIndexerPluginInstall": "Plugin Indexador instalado", "RequestIndexerPluginRemove": "Plugin Indexador excluído", + "MetadataHttpProviderCreate": "Provedor de metadados adicionado", + "MetadataHttpProviderUpdate": "Provedor de metadados atualizado", + "MetadataHttpProviderDelete": "Provedor de metadados removido", "AuthorUpdate": "Atualizar autor", "AuthorDelete": "Excluir autor", "AuthorMerge": "Mesclar Autores", @@ -5424,7 +5577,7 @@ }, "filterMenu": { "button": "Filtros", - "category": "categoria", + "category": "Categoria", "person": "Pessoa", "findPerson": "Encontrar uma pessoa", "noPeople": "Nenhuma pessoa correspondente", @@ -5699,6 +5852,12 @@ "errors": { "noToken": "Nenhum token fornecido" } + }, + "reconnect": { + "heading": "Aguardando o servidor", + "description": "O BookOrbit não pode acessar o seu servidor no momento. Esta página continua por conta própria assim que o servidor responder.", + "retry": "Tentar novamente agora", + "retrying": "Tentando novamente..." } }, "author": { @@ -5739,7 +5898,10 @@ "died": "Falecido em", "website": "Site", "genres": "Gênero", - "influences": "Influências" + "influences": "Influências", + "findMatch": "Encontre o Autor Correto", + "source": "Fonte", + "pinned": "Fixado" }, "list": { "title": "Autores", @@ -5811,7 +5973,17 @@ "removing": "Removendo...", "removeImage": "Remover imagem", "imageHint": "PNG/JPEG/WEBP/GIF/BMP de até {size} MB", - "saving": "Salvando..." + "saving": "Salvando...", + "website": "Website", + "websitePlaceholder": "https://example.com", + "websiteInvalid": "Insira um endereço web como example.com.", + "born": "Nascido em", + "died": "Falecido em", + "lifeDatePlaceholder": "1965 ou 1965-03-14", + "lifeDateHint": "Data de nascimento e falecimento recebem um ano ou um dia, mês e ano.", + "lifeDateInvalid": "Insira um ano ou uma data real como dia, mês e ano.", + "genres": "Gêneros", + "influences": "Influências" }, "merge": { "searchPlaceholder": "Busque autores para mesclar a este autor", @@ -5876,6 +6048,56 @@ "actionsFor": "Ações para {name}", "refreshing": "Atualizando metadados do {name}", "deleting": "Excluindo {name}" + }, + "match": { + "title": "Encontre o autor correto", + "description": "Escolha a pessoa por trás de {name}, a partir de uma busca de nome ou de um trazido de Goodreads ou link audível.", + "search": { + "label": "Nome", + "submit": "Buscar" + }, + "reference": { + "label": "Link ou ID do Goodread ou Audible", + "placeholder": "goodreads.com/author/show/12345", + "submit": "Consultar", + "unrecognised": "Cole um link do autor no Goodreads ou Audible, um ID dos Goodreads ou um ASIN.", + "notFound": "Nenhum autor tem esse ID.", + "failed": "A pesquisa falhou. Tente novamente dentro de instantes." + }, + "results": { + "label": "Correspondências", + "count": "{count, plural, =0 {Sem resultados} one {# correspondente} other {# correspondentes}}", + "searching": "Buscando...", + "empty": "Nenhum autor encontrado. Tente outra ortografia ou cole um link.", + "failed": "A pesquisa falhou. Tente novamente dentro de instantes.", + "current": "Atual", + "born": "Nascido em {year}", + "lifeSpan": "{born}–{died}" + }, + "detail": { + "empty": "Escolha uma combinação para ver quem é.", + "loading": "Carregando detalhes...", + "noBio": "Sem biografia.", + "viewOn": "Ver em {provider}", + "back": "Voltar às correspondências", + "use": "Usar este autor", + "unpin": "Desafixar", + "pinnedHint": "Fixo: atualiza esse autor por ID ao invés de procurar pelo nome.", + "currentHint": "O autor é o correspondente a esta pessoa agora. Use-o para fixar a correspondência." + }, + "confirm": { + "title": "Usar este autor {provider}?", + "description": "O bio, foto, datas, website, gêneros e influências são substituídos pelo deste autor e depois é atualizada a lista para esta pessoa.", + "confirm": "Usar este autor" + }, + "toast": { + "pinned": "Correspondência de {name} em {provider}", + "unpinned": "Desafixado. Atualiza busca pelo nome novamente.", + "notFound": "{provider} não tem mais autor com esse ID.", + "providerDown": "Não foi possível encontrar o {provider}. Tente novamente daqui a pouco.", + "failed": "Não foi possível utilizar este autor.", + "unpinFailed": "Não foi possível desfixar a correspondência." + } } }, "book": { @@ -6079,20 +6301,21 @@ "between": "entre", "includesAny": "inclui qualquer um dos", "includesAll": "inclui todos os", - "excludesAll": "inclui todos os", + "excludesAll": "exclui todos os", "before": "antes", "after": "depois", "withinLast": "dentro do último", + "moreThanAgo": "mais do que", "isMissing": "está faltando", "isPresent": "está presente", - "isUnread": "não é lido", + "isUnread": "não está lido", "isInProgress": "está em andamento", "isFinished": "está finalizado", "isLocked": "está bloqueado", "isUnlocked": "está desbloqueado", "isUpNext": "é a próxima", "isTrue": "é sim", - "isFalse": "não é" + "isFalse": "é não" }, "customFieldsGroup": "Campos personalizados", "customFieldFallback": "Campo personalizado", @@ -6105,6 +6328,7 @@ "withinLastPlaceholder": "ex: 7", "unit": { "days": "dias", + "daysAgo": "dias atrás", "weeks": "semanas", "months": "meses", "megabytes": "MB" @@ -6129,7 +6353,8 @@ }, "deleteDialog": { "title": "Excluir livro?", - "description": "Isso excluirá permanentemente o livro e todos os seus metadados, arquivos, progresso de leitura e marcadores. Isso não pode ser desfeito." + "description": "Isso excluirá permanentemente o livro e todos os seus metadados, arquivos, progresso de leitura e marcadores. Isso não pode ser desfeito.", + "keepsHistory": "Leituras concluídas permanecem no histórico de cada leitor, sob o título e autor do livro." }, "bulkEdit": { "title": "{count, plural, =0 {Editar metadados - # livro} one {Editar metadados - # livro} many {Editar metadados - # livros} other {Editar metadados - # livros}}", @@ -6290,6 +6515,7 @@ "details": "Detalhes", "editMetadata": "Editar Metadados", "files": "Arquivos", + "chapters": "Capítulos", "readingLog": "Registro de Leitura", "highlights": "Destaques" }, @@ -6431,6 +6657,20 @@ }, "editCover": "Editar capa", "viewCover": "Ver capa maior", + "coverStack": { + "show": { + "ebook": "Mostrar a capa do livro", + "audio": "Mostrar a capa de audiolivro" + }, + "front": { + "ebook": "Mostrando a capa do livro", + "audio": "Mostrando a capa do audiolivro" + } + }, + "readAloudInvite": { + "chip": "Leitura em voz alta", + "title": "Criar uma leitura em voz alta do EPUB e do audioobook deste livro" + }, "finished": "Concluído", "resetFileProgress": "Redefinir progresso do arquivo", "resetEditionProgress": "Redefinir progresso para {format}", @@ -6448,6 +6688,14 @@ "unavailable": "Indisponível", "epubCopiesOnly": "Somente cópias EPUB" }, + "chip": { + "enabled": "Sincronizado", + "partial": "Parcialmente sincronizado", + "disabled": "Sincronização desativada", + "unavailable": "Problema de sincronização" + }, + "chipAria": "Sincronização de progresso da leitura em voz alta: {status}", + "noneYet": "Nenhum EPUB lido em voz alta ainda. Crie um para sincronizar as posições entre o audiobook e o texto.", "enabledDescription": "As posições em Audiobook, leitor web, Kobo e KOReader permanecem em sincronia.", "disabledDescription": "Cada formato mantém a sua própria posição de leitura.", "epubCopiesDescription": "O progresso de leitura no Web reader, Kobo e KOReader permanece sincronizado entre as cópias em EPUB. Adicione os arquivos de audiolivro correspondentes para sincronizar o audiolivro também.", @@ -6609,6 +6857,8 @@ "durationLabel": "Duração (s)", "abridgedLabel": "Resumido", "providerIds": "IDs do Provedor", + "externalProviderUnavailable": "{provider} não está mais registrado, portanto esse id é mantido mas não é utilizado", + "clearExternalProviderId": "Limpar o id do {provider}", "comicDetails": "Detalhes do Quadrinho", "comicIssueNumberLabel": "Número da Edição", "comicVolumeLabel": "Volume", @@ -6968,6 +7218,292 @@ }, "files": { "title": "Arquivos do livro", + "readAloud": { + "action": "Criar leitura em voz alta", + "loadFailed": "A disponibilidade da leitura não pôde ser verificada.", + "loadFailedAgain": "{count, plural, one {Não foi possível verificar a disponibilidade da leitura em voz alta após # tentativa.} other {Não foi possível verificar a disponibilidade da leitura em voz alta após # tentativas.}}", + "checkAgain": "Verificar novamente", + "checking": "Verificando…", + "reasons": { + "worker_unavailable": "O serviço de leitura em voz alta está offline no momento.", + "worker_incompatible": "O serviço de leitura em voz alta precisa de uma atualização para trabalhar com este servidor.", + "book_missing": "Restaurar os arquivos ausentes deste livro para criar uma leitura em voz alta.", + "no_epub": "Adicionar um EPUB simples a este livro para criar uma leitura em voz alta.", + "no_epub_existing": "Este livro já tem uma leitura em voz alta e não um EPUB simples para reconstruí-lo.", + "too_many_audio_files": "Este audiolivro está dividido em mais arquivos do que uma leitura em alto pode ser feita.", + "epub_not_allowed": "Essa biblioteca não aceita arquivos EPUB, então uma leitura em voz alta não pode ser adicionada.", + "library_not_mounted": "O serviço de leitura em voz alta não pode acessar a pasta desta biblioteca.", + "job_active": "Uma leitura em voz alta já está sendo criada para este livro.", + "unknown": "Não é possível criar uma leitura em voz alta para este livro no momento." + }, + "dialog": { + "title": "Criar uma leitura em voz alta", + "description": "Corresponde à narração no texto do ebook e adiciona um EPUB que destaca junto com o áudio.", + "sources": "Fontes", + "ebook": "Ebook", + "ebookHint": "Escolha o EPUB simples que corresponde à narração.", + "existing": { + "title": "{count, plural, one {Este livro já tem uma leitura em voz alta} other {Estes livros já tem # leituras em voz alta}}", + "replace": "Substituir {filename}", + "keep": "{count, plural, one {Mantenha ambos} other {Mantenha todos}}", + "keepHint": "A nova leitura em voz alta é adicionada como outro arquivo.", + "replaceHint": "O arquivo antigo é substituído apenas depois que o novo passa as verificações e as posições de leitura são mantidas.", + "replaceNotPermitted": "Substituir uma leitura em voz alta precisa de permissão para excluir livros, então o novo é adicionado como outro arquivo.", + "generated": "Feito por BookOrbit", + "imported": "Importado" + }, + "audio": "Audiobook", + "audioSummary": "{count, plural, one {# faixa} other {# faixas}} {order, select, book {no livro ordene} other {no seu pedido}}", + "audioSummaryWithDuration": "{count, plural, one {# faixa} other {# faixas}}, {duration}, {order, select, book {no livro ordenou} other {no pedido}}", + "audioSkipped": "{count, plural, one {# faixa ignorada} other {# faixas foram ignoradas}}", + "changeOrder": "Alterar ordem", + "restoreOrder": "Restaurar ordem dos livros", + "trackList": "Acompanhamentos em ordem de escuta", + "trackLabel": "Faixa {position} de {total}: {name}", + "moveUp": "Mover {name} para cima", + "moveDown": "Mover {name} para baixo", + "moved": "{name} movido para a posição {position} de {total}", + "skipped": "Ignorado", + "noTracks": "Selecione pelo menos uma trilha.", + "language": "Idioma da natação", + "chooseLanguage": "Escolha um idioma", + "languageUnsupported": "{language} não é suportado pelo modelo de fala.", + "languageFromBook": "A partir dos detalhes deste livro.", + "languageIsDefault": "Seu idioma padrão.", + "languageSavedAsDefault": "Salvo como o seu idioma padrão.", + "setDefaultLanguage": "Definir como padrão", + "defaultLanguageFailed": "Não foi possível salvar seu idioma padrão. Tente novamente.", + "granularity": "Destacando", + "sentence": "Frase", + "sentenceHint": "Destaca uma frase de cada vez. Recomendado.", + "word": "Palavra", + "wordHint": "Destaca cada palavra. Leva mais tempo e cria um arquivo maior.", + "experimental": "Experimental", + "model": "Modelo de fala: {model}", + "estimatedSize": "Tamanho estimado: {size}", + "lowDiskLabel": "Pouco espaço no disco.", + "lowDisk": "Esta é a necessidade {needed} de espaço de trabalho no serviço, que tem {free} gratuito.", + "processingNote": "Executa em segundo plano. Os audiolivros longos podem levar horas, e a primeira execução faz o download do idioma seu modelo.", + "start": "Iniciar", + "starting": "Iniciando…" + }, + "devices": { + "cpu": "Executa na CPU", + "mlx": "Executa no Apple Silicon (MLX)", + "cuda": "Executa com uma GPU NVIDIA (CUDA)", + "webgpu": "Executa na GPU (WebGPU)", + "other": "Executa em {device}" + }, + "job": { + "heading": "Leitura em voz alta", + "startedBy": "Iniciado por {name}", + "startedByUnknown": "Iniciado por outro usuário", + "dismiss": "Dispensar", + "details": "Detalhes", + "queuedTitle": "Esperando para começar", + "queueAhead": "{count, plural, =0 {Na próxima linha} one {# trabalho adiante} other {# trabalhos adiante}}", + "elapsed": "Executando por {duration}", + "justStarted": "Iniciado recentemente", + "firstRunForLanguage": "Primeira execução para este idioma", + "stoppingTitle": "Parando…", + "stoppingDescription": "Concluindo a etapa atual, depois ela para. Nada será adicionado a este livro.", + "reviewTitle": "Pronto para revisão", + "reviewDescription": "{percent} do texto corresponde à narração. Verifique os capítulos antes de adicioná-lo.", + "reviewDescriptionPlain": "Verifique os capítulos antes de adicioná-lo a este livro.", + "reviewExpires": "Descartado automaticamente {when} a menos que você o revise.", + "completeTitle": "Ler em voz alta pronta", + "completeWarningsTitle": "Leitura em voz alta, com avisos", + "completeAdded": "Adicionado a este livro como um novo EPUB.", + "completeReplaced": "Substituímos a leitura anterior. As posições de leitura são transferidas.", + "matchedSentences": "{matched} de {total} {count, plural, one {frase} other {frases}} correspondam à narração", + "audioUsed": "{percent} do áudio usado", + "outsideNarration": "Não está na narração, então ficou sem áudio: {chapters}.", + "outsideMore": "{count, plural, one {# mais capítulo} other {Mais # capítulos}}", + "chaptersHeading": "Capítulos", + "activityHeading": "Atividade", + "failedTitle": "Falha na leitura em voz alta", + "retryUntil": "Tente novamente continuar do último passo concluído até {date}.", + "cancelledTitle": "Geração cancelada", + "discardedTitle": "Saída descartada", + "nothingAdded": "Nada foi adicionado a este livro.", + "expiredDescription": "Ele não foi revisado dentro de 14 dias, então nada foi adicionado a este livro.", + "progress": "Sincronização de progresso em voz alta", + "steps": "Passos", + "stepDone": "{step} concluídos", + "stepCurrent": "{step}, em andamento", + "stepUpcoming": "{step}, não iniciado", + "openReadAlong": "Abrir leitura em voz alta", + "showFile": "Mostrar arquivo", + "retry": "Tentar novamente", + "startOver": "Recomeçar", + "cancel": "Cancelar geração", + "cancelPrompt": "Cancelar geração?", + "keepRunning": "Continuar executando", + "warnings": "Avisos", + "live": "Leitura em voz alta: {status}" + }, + "stageDetail": { + "file": "Arquivo {current} da {total}", + "track": "Faixa {current} de {total}", + "chapter": "Capítulo {current} de {total}", + "step": "Passo {current} de {total}" + }, + "stages": { + "queued": "Esperando para começar", + "preparing_audio": "Preparando o áudio", + "downloading_model": "Baixando o modelo de fala", + "generating_emissions": "Ouvindo a narração", + "marking_up_ebook": "Marcando o texto do ebook", + "aligning": "Combinando o texto com a narração", + "validating": "Conferindo o resultado", + "awaiting_review": "Aguardando revisão", + "publishing": "Adicionando a leitura em voz alta para este livro", + "completed": "Concluído", + "working": "Trabalhando" + }, + "steps": { + "audio": "Áudio", + "speech": "Fala", + "text": "Texto", + "align": "Alinhar", + "check": "Verificar", + "publish": "Publicar" + }, + "review": { + "heading": "Capítulos", + "summary": "{count, plural, one {# capítulo} other {# capítulos}} {attention, plural, =0 {nada precisa de revisão} one {# precisa de revisão} other {# precisam de revisão}}", + "chapter": "Capítulo", + "part": "Parte", + "statusLabel": "Status", + "status": { + "aligned": "Alinhado", + "notFound": "Não encontrado no áudio", + "tooShort": "Muito curto para combinar", + "excluded": "Excluído", + "audioOnly": "Apenas áudio", + "outside": "Não está na narração", + "unknown": "Desconhecido" + }, + "matched": "Correspondente", + "matchedValue": "{percent}% de correspondência", + "zones": { + "front": "Material inicial", + "body": "Corpo", + "back": "Texto de volta" + }, + "include": "Incluir {title}", + "showText": "Mostrar texto de {title}", + "hideText": "Ocultar texto de {title}", + "preview": "Pré-visualizar", + "firstMatch": "Primeira correspondência", + "lastMatch": "Última correspondência", + "noText": "Nenhum texto para exibir neste capítulo.", + "noReport": "Nenhum relatório de capítulo foi mantido para este trabalho. Execute ele novamente para ver um.", + "loading": "Carregando capítulos…", + "loadFailed": "Não foi possível carregar o relatório de capítulo.", + "tryAgain": "Tentar novamente", + "pending": "{count, plural, one {# alteração ainda não foi aplicada.} other {# alterações não foram aplicadas.}} A ressincronização executa novamente apenas a etapa correspondente.", + "resync": "Ressincronizar", + "publishAnyway": "Publicar mesmo assim", + "discard": "Descartar", + "discardPrompt": "Descartar esta saída?", + "keep": "Manter" + }, + "log": { + "heading": "Atividade", + "empty": "Ainda sem atividade.", + "loading": "Carregando atividade…", + "loadFailed": "Não foi possível carregar o log de atividades.", + "tryAgain": "Tentar novamente", + "warn": "Atenção", + "error": "Erro", + "other": "Atividade do serviço", + "events": { + "job_created": "Trabalho criado", + "claimed": "Enviado ao serviço", + "job_accepted": "O serviço aceitou o trabalho", + "disk_checked": "Espaço livre suficiente no serviço", + "disk_check_failed": "Não há espaço livre suficiente no serviço", + "stage_started": "Iniciado", + "stage_finished": "Concluído em {duration}", + "stage_finished_plain": "Concluído", + "stage_skipped": "Reutilizado trabalho anterior", + "stage_failed": "Esta etapa falhou", + "model_download_started": "Baixando o modelo de fala para este idioma", + "model_download_finished": "Modelo de fala transferido", + "emissions_cached": "Análise de fala reutilizada de uma execução anterior", + "audio_reencoded_cbr": "MP3 de taxa variável convertida para tempo exato", + "stalign_warning": "O alinhador reportou um alerta", + "waiting_for_worker": "Aguardando resposta do serviço", + "worker_reachable_again": "O serviço está respondendo de novo", + "worker_lost_job": "O serviço reiniciou; retomado do trabalho anterior", + "requeued": "Tentaremos novamente em breve", + "recovered": "Retomando após reiniciar o servidor", + "output_validated": "Verificado o resultado", + "needs_review": "Precisa de revisão: parte do texto não corresponde ao áudio", + "publish_requested": "Adicionando ao livro", + "published": "Adicionado ao livro", + "file_added": "Salvo como um novo arquivo", + "file_replaced": "Substituído a leitura existente em voz alta", + "file_already_attached": "O livro já tinha este arquivo", + "replace_target_missing": "A substituição em voz alta foi eliminada, então um novo arquivo foi adicionado", + "replace_not_permitted": "Substituir a leitura em voz alta não foi permitido, por isso um novo arquivo foi adicionado", + "job_completed": "O serviço terminou", + "cancel_requested": "Cancelamento solicitado", + "runner_killed": "Parou o processo de trabalho", + "job_cancelled": "O serviço parou", + "cancelled": "Cancelado", + "discarded": "Descartado na revisão", + "job_failed": "O serviço relatou uma falha", + "retry_requested": "Repetir solicitado", + "resync_requested": "Re-sincronização solicitada", + "review_reminder_sent": "Lembrete enviado: a revisão expira em breve", + "review_expired": "Descartado após 14 dias sem revisão" + } + }, + "warnings": { + "unaligned_tracks": "Uma ou mais faixas de áudio não puderam ser alinhadas.", + "unmatched_text": "Uma quantidade perceptível de texto do ebook não correspondeu a narração.", + "interpolated_text": "Algum tempo de texto foi estimado entre os parágrafos.", + "dropped_text": "Algum texto do ebook foi omitido da sequência sincronizada." + }, + "errors": { + "create": "Não foi possível iniciar a leitura em voz alta. Tente novamente.", + "createInvalid": "Alguns arquivos selecionados não estão mais neste livro. Verifique a seleção e tente novamente.", + "createConflict": "Outra leitura em voz alta já está sendo criada para este livro.", + "createUnavailable": "O serviço de voz alta está desconectado. Tente novamente mais tarde.", + "forbidden": "Você não tem permissão para fazer isso.", + "gone": "Esta tarefa não existe mais.", + "conflict": "Este trabalho já tinha evoluído. Agora mostra onde ele está.", + "cancel": "O trabalho não pôde ser cancelado. Tente novamente.", + "publish": "Não foi possível adicionar a leitura em voz alta a este livro. Tente novamente.", + "retry": "O trabalho não pôde ser repetido. Tente novamente.", + "resync": "Não foi possível iniciar a re-sincronização. Tente novamente.", + "dismiss": "Não foi possível ignorar o cartão. Tente novamente.", + "job": { + "worker_unavailable": "Não foi possível acessar o serviço de leitura.", + "worker_incompatible": "O serviço de leitura em voz alta precisa de uma atualização para trabalhar com este servidor.", + "worker_crashed": "O serviço em voz alta parou inesperadamente.", + "library_not_mounted": "O serviço de leitura em voz alta não pode acessar a pasta desta biblioteca.", + "source_missing": "Um arquivo selecionado não está mais disponível.", + "source_changed": "Um arquivo selecionado foi alterado após o início do trabalho.", + "invalid_source": "O EPUB selecionado ou audioobook não pôde ser lido.", + "unsupported_language": "O modelo de fala não suporta o idioma selecionado.", + "insufficient_storage": "Não há espaço em disco livre suficiente para terminar.", + "audio_processing_failed": "O audiolivro não pôde ser preparado.", + "model_download_failed": "Não foi possível baixar o modelo de voz.", + "inference_failed": "Reconhecimento de fala falhou ao ouvir a narração.", + "markup_failed": "O texto do ebook não pôde ser preparado para corresponder.", + "alignment_failed": "O texto não pôde ser combinado com a narração.", + "invalid_output": "O EPUB gerado falhou nas verificações.", + "publication_failed": "O EPUB gerado não pôde ser adicionado a este livro.", + "review_expired": "Não foi revisado dentro de 14 dias.", + "discarded": "A leitura em voz alta foi descartada na revisão.", + "cancelled": "O trabalho foi cancelado.", + "unknown": "Algo deu errado ao criar a leitura em voz alta." + } + } + }, "stats": { "files": "Arquivos", "total": "Total", @@ -7061,7 +7597,7 @@ "formatNotSupported": "Não gravado: formato não suportado", "formatDisabled": "Não gravado: formato desligado", "fileExceedsSizeLimit": "Não gravado: acima do limite de tamanho", - "notContentFile": "Não gravado: conteúdo não reservado" + "notContentFile": "Não gravado: não tem conteúdo de livro" }, "enabled": "Ativado", "disabled": "Desligado", @@ -7138,6 +7674,365 @@ "indexedMany": "Arquivos {count} {format} indexados" } }, + "chapters": { + "heading": "Capítulos", + "untitled": "Livro sem título", + "untitledChapter": "Capítulo sem título", + "edit": "Editar capítulos", + "done": "Concluído", + "protected": "Protegido", + "unprotected": "Sem proteção", + "protectedHint": "As reescaneamentos e atualizações de metadados deixam estes capítulos isolados.", + "unprotectedHint": "Uma revisão ou atualização de metadados pode substituir esses capítulos.", + "stats": { + "chapters": "Capítulos", + "runtime": "Tempo de execução", + "average": "Média" + }, + "source": { + "embedded": "Ler a partir dos arquivos de áudio", + "tracks": "Um capítulo por arquivo de áudio, não salvo", + "provider": "De metadados buscados", + "migration": "Importado do Audiobookshelf", + "manual": "Editado no BookOrbit", + "manualBy": "Editado por {name} {when}", + "none": "Ainda sem capítulos" + }, + "youAreHere": "Você está aqui", + "playFrom": "Ouvir de {title}", + "selectRow": "Selecione capítulo {index}", + "selectedCount": "{count, plural, one {# selecionado} other {# selecionados}}", + "selectAll": "Selecionar tudo", + "selectNone": "Desmarcar tudo", + "removeSelected": "Remover selecionados", + "startOf": "Início do capítulo {index}", + "titleOf": "Título do capítulo {index}", + "titlePlaceholder": "Título do Capítulo", + "retryOperation": "Repetir operação de capítulo", + "operationProgress": "Operação de capítulo em andamento: {done} dos arquivos {total} processados.", + "createFirst": "Adicionar primeiro capítulo", + "newChapter": "Novo capítulo", + "undo": "Desfazer", + "redo": "Refazer", + "find": "Encontrar capítulos", + "toolsMenu": "Ferramentas", + "export": "Exportar", + "saved": "Capítulos salvos", + "reload": "Recarregar", + "retry": "Tentar novamente", + "nudge": { + "backSecond": "Mover o início para trás um segundo", + "backTenth": "Mova o início para trás um décimo de um segundo", + "forwardTenth": "Mova o início para a frente um décimo de um segundo", + "forwardSecond": "Mover o início para frente um segundo" + }, + "issues": { + "emptyTitle": "Este capítulo precisa de um título.", + "firstNotZero": "O primeiro capítulo tem que começar às 0:00.", + "notAscending": "Este capítulo começa ao mesmo tempo que o anterior.", + "pastEnd": "Este capítulo começa depois que o audiolivro termina.", + "tooShort": "Este capítulo tem menos de um segundo." + }, + "player": { + "scrubber": "Posição de visualização", + "play": "Reproduzir pré-visualização", + "pause": "Pausar pré-visualização", + "back": "Voltar 15 segundos", + "forward": "Avançar 15 segundos" + }, + "history": { + "heading": "Histórico", + "empty": "Versões salvas aparecem aqui.", + "by": "{source} por {name}", + "facts": "{when}: {count, plural, one {# Capítulo} other {# Capítulos}}", + "source": { + "embedded": "Dos arquivos de áudio", + "tracks": "Um por arquivo de áudio", + "provider": "De metadados buscados", + "migration": "Do Audiobookshelf", + "manual": "Editado" + } + }, + "revert": { + "action": "Reverter para os capítulos dos arquivos", + "title": "Reverter para os capítulos dos arquivos?", + "description": "BookOrbit lê os capítulos embutidos novamente nos arquivos de áudio e pára de protegê-los contra reescaneamentos. Edições não salvas estão perdidas. A lista atual permanece no histórico.", + "confirm": "Desfazer", + "done": "Capítulos revertidos para os arquivos de áudio" + }, + "discardDialog": { + "title": "Descartar edição de capítulo?", + "description": "Suas alterações nos capítulos não foram salvas.", + "confirm": "Descartar" + }, + "save": { + "action": "Salvar capítulos", + "discard": "Descartar", + "lock": "Proteger contra reescaneamentos", + "lockHint": "Mantenha esses capítulos quando os arquivos forem verificados novamente ou os metadados forem atualizados.", + "unsaved": "Alterações não salvas", + "unsavedWithWarnings": "{count, plural, one {Alterações não salvas, # aviso} other {Alterações não salvas, # avisos}}", + "blocked": "{count, plural, one {Corrija # problema para salvar} other {Corrija # problemas para salvar}}", + "upToDate": "Todas as alterações salvas", + "short": "Salvar" + }, + "writeFiles": { + "more": "Mais opções de salvamento", + "saveAndWrite": "Salvar e escrever em arquivos", + "writeSaved": "Escrever capítulos salvos em arquivos", + "writing": "Escrevendo capítulos nos arquivos de áudio...", + "confirmTitle": "Escrever capítulos nos arquivos de áudio?", + "confirmDescription": "{count, plural, one {Isto reescreve o arquivo de áudio do livro com estes capítulos.} other {Isto reescreve os arquivos de áudio # do livro com estes capítulos.}} O áudio em si não foi copiado. Qualquer um que esteja transmitindo pode precisar reiniciá-lo, e os audios que já o baixaram mantêm sua cópia até que seja baixado novamente.", + "confirm": "Gravar nos arquivos", + "done": "{count, plural, one {Capítulos escritos no arquivo de áudio.} other {Capítulos escritos em todos os # arquivos de áudio.}}", + "partial": "Capítulos foram escritos em {written} dos {total} arquivos. Os restantes ficaram como estavam.", + "reasons": { + "libraryDisabled": "Escrever em arquivos está desativado para esta biblioteca. Ative-o nas configurações da biblioteca.", + "noFiles": "Este livro não tem arquivos de áudio para escrever.", + "formatNotSupported": "Estes arquivos de áudio não podem conter capítulos. Somente M4B, M4A e MP3 podem.", + "formatDisabled": "A escrita em arquivos de áudio está desativada para esta biblioteca.", + "tooLarge": "Um arquivo é maior do que o limite desta biblioteca para escrita em arquivos." + } + }, + "formats": { + "cue": "Planilha CUE", + "ffmetadata": "Metadados do FFmpeg", + "audacity": "Rótulos de audiência", + "timestamps": "Texto com tempo", + "titles": "Lista de títulos", + "json": "JSON" + }, + "apply": { + "label": "Como usar estes capítulos", + "action": "Aplicar ao editor", + "replace": "Substituir tudo", + "replaceHint": "Use estes capítulos, títulos e horários.", + "titles": "Sómente o Título", + "titlesHint": "Mantenha seus horários de início e pegue os títulos das linhas correspondentes.", + "times": "Somente horas inicial", + "timesHint": "Mantenha seus títulos e tire as horas iniciais das linhas correspondentes." + }, + "sources": { + "description": "Compare-os com a lista que você está editando, e escolha o que receber.", + "loading": "Lendo capítulos...", + "counts": "{incoming, plural, one {# chegando capítulo} other {# Chegando capítulos}}, {current, plural, one {# no editor} other {# no editor}}", + "pastEnd": "{count, plural, one {# O capítulo começa após o audiobook terminar.} other {# capítulos começam após o audioobook terminar.}}", + "currentColumn": "No editor", + "incomingColumn": "Entrada", + "deltaColumn": "Deslocamento (s)", + "applied": "Aplicado ao editor. Salve para mantê-lo.", + "empty": "Nenhum capítulo foi encontrado aqui.", + "files": { + "menu": "Dos arquivos de áudio", + "title": "Capítulos nos arquivos de áudio" + }, + "tracks": { + "menu": "Um por arquivo de áudio", + "title": "Um capítulo por arquivo de áudio" + }, + "lookup": { + "menu": "Do Áudio...", + "title": "Capítulos de Áudio", + "asin": "ASIN", + "region": "Armazenar", + "action": "Consultar", + "hint": "Capítulos de Audible para esta edição. Seus horários vêm da gravação do Audible, então eles podem precisar de um deslocamento ou um alongamento para alinhar com seus arquivos." + }, + "toc": { + "menu": "Do conteúdo do ebook", + "title": "Títulos do ebook" + }, + "readAlong": { + "menu": "Da leitura ao longo do EPUB", + "title": "Capítulos a partir da leitura em voz alta" + }, + "import": { + "menu": "Importar...", + "title": "Importar capítulos", + "pasteLabel": "Colar capítulos", + "placeholder": "00:00:00 Créditos de Abertura\n00:00:14 Dedicatória\n00:00:23 Capítulo 1", + "formats": "Lê folhas CUE, metadados da FFmpeg, rótulos da Audacidade, JSON, linhas temporárias ou uma lista simples de títulos.", + "read": "Capítulos lidos", + "chooseFile": "Escolha um arquivo", + "unreadable": "Não foi possível ler quaisquer capítulos a partir disso.", + "tooLarge": "Esse arquivo é muito grande para ser uma lista de capítulos.", + "skipped": "{count, plural, one {# faixa ignorada} other {# faixas foram ignoradas}}", + "truncated": "Apenas os primeiros capítulos {count} foram lidos." + }, + "version": { + "title": "Versão salva", + "detail": "Salvo {when}", + "detailBy": "Salvo {when} por {name}" + } + }, + "review": { + "adjust": "Coloque uma linha nos tempos", + "runtimes": "Tempo de execução {theirs}, este audioobook {ours} ({difference} s)", + "accurate": "O Audible marca esses momentos como exatos", + "offset": "Deslocamento (s)", + "suggestIntro": "Pular introdução de Audible ({seconds} s)", + "suggestMatch": "Associar os primeiros capítulos ({seconds} s)", + "fitPauses": "Ajustar as pausas", + "fitPausesResult": "Ajustar a pausas ({seconds} s, {hits} de {total})", + "fitPausesNone": "Sem linhas de deslocamento destes capítulos com pausas em seu áudio.", + "resetOffset": "Redefinir", + "stretch": "Esticar para caber neste audiolivro", + "stretchHint": "Escala cada horário de início por {factor}, o que move o último capítulo por {seconds} s.", + "parts": "Cabeçalhos da peça", + "partsOwn": "Manter como capítulos", + "partsPrefix": "Adicionar ao título do capítulo", + "partsDrop": "Sair da sessão", + "match": "Corresponder linhas", + "matchTime": "Por horário de início", + "matchPosition": "Em ordem", + "matched": "{count, plural, one {# linha correspondeu} other {# linhas corresponderam}}", + "include": "Incluir", + "includeRow": "Incluir {title}", + "willReplace": "{count, plural, one {Substitui a lista com # capítulo} other {Substitui as listas por # capítulos}}", + "willChange": "{count, plural, =0 {Nada mudaria} one {# O capítulo muda} other {# capítulos mudam}}" + }, + "tools": { + "apply": "Aplicar", + "changes": "{count, plural, =0 {Nada mudaria.} one {# capítulo mudará.} other {# capítulos mudarão.}}", + "scope": { + "label": "Aplicar a", + "all": "{count, plural, one {O # capítulo} other {Todos os # capítulos}}", + "selected": "{count, plural, one {O # selecionou capítulo} other {Os # capítulos selecionados}}", + "fromActive": "Capítulo {index} até o final" + }, + "shift": { + "title": "Tempos de movimento", + "description": "Mover capítulo começa antes ou depois do mesmo valor. Um capítulo às 0:00 permanece lá.", + "amount": "Segundos", + "hint": "Move os capítulos negativos anteriormente. Use isso quando uma versão tem uma introdução mais longa ou menor.", + "invalid": "Digite um número de segundos, como 4.04 ou -2." + }, + "renumber": { + "title": "Renomear títulos", + "description": "Dê capítulos de títulos numerados em ordem.", + "pattern": "Padrão de título", + "hint": "{'{n}'} foi substituído pelo número.", + "defaultPattern": "Capítulo {'{n}'}", + "start": "Número inicial", + "invalid": "Digite um número inicial inteiro não-negativo e um espaçamento de 0 a 4.", + "padding": "Dígitos" + }, + "replace": { + "title": "Localizar e substituir", + "description": "Alterar o texto nos títulos dos capítulos.", + "find": "Procurar", + "with": "Substituir por", + "regex": "Expressão regular", + "caseSensitive": "Diferenciar maiúsculas de minúsculas", + "invalidPattern": "Essa expressão regular não é válida." + }, + "mergeShort": { + "title": "Mesclar capítulos curtos", + "description": "Dobre capítulos com menos de um comprimento para o capítulo anterior.", + "threshold": "Menor que (segundos)", + "invalid": "Insira um número de segundos acima de 0." + }, + "clean": { + "title": "Limpeza de títulos", + "nothing": "Títulos já estão limpos.", + "done": "{count, plural, one {Limpou o título #} other {Limpou os títulos #}}" + } + }, + "snap": { + "menu": "Ajustar às pausas...", + "title": "Ajustar a pausa", + "description": "Mover capítulo começa com a pausa mais próxima no áudio, onde o narrador pára entre os capítulos.", + "radius": "Procurar por uma pausa", + "radiusOption": "Dentro de {seconds} s em cada lado", + "placement": "Coloque cada início", + "placementEnd": "Pouco antes do narrador falar novamente", + "placementMiddle": "No meio da pausa", + "progressive": "Carregue cada correção para frente", + "progressiveHint": "No que se refere aos prazos, à medida que o livro prossegue: cada movimento também se desloca onde procura o próximo começo.", + "run": "Encontrar pausas", + "running": "Ouvindo por pausas: {done} de {total}", + "progressLabel": "Pausar progresso da busca", + "stop": "Parar", + "back": "Alterar opções", + "moved": "{count, plural, one {# capítulo movido, por {average} s} other {# capitulos movidos, por {average} s em média e {largest} s no máximo}}", + "nothing": "Nenhum capítulo precisa ser movido.", + "notFound": "{count, plural, one {# não encontrou uma pausa nas proximidades} other {# não encontraram uma pausa nas proximidades}}", + "blocked": "{count, plural, one {# fique colocado para manter os capítulos em ordem} other {# fiquem colocados para manter os capítulos em ordem}}", + "failed": "{count, plural, one {# não pôde ser ouvido: seu áudio não decodificou} other {# não puderam ser ouvidos: o áudio deles não decodificou}}", + "movedOne": "Mudado para a pausa {time} ({delta} s).", + "notFoundOne": "Sem pausa em {seconds} s deste início.", + "blockedOne": "A pausa mais próxima colocaria este capítulo fora de ordem.", + "alreadyThere": "Este início já se encontra em uma pausa." + }, + "waveform": { + "label": "Capítulo começa no áudio", + "loading": "Carregando o áudio ao longo deste começo...", + "failed": "O áudio aqui não pôde ser desenhado." + }, + "errors": { + "operation": "A operação de capítulo não pôde ser concluída. Tente reconectar ou verifique o status.", + "load": "Capítulos não puderam ser carregados.", + "save": "Capítulos não puderam ser salvos.", + "revert": "Não foi possível reverter os capítulos.", + "readFiles": "Os arquivos de áudio não puderam ser lidos.", + "lookup": "Não foi possível pedir capítulos para áudio.", + "readEbook": "O ebook não pôde ser lido.", + "analyze": "O áudio não pôde ser analisado.", + "writeFiles": "Os capítulos não puderam ser escritos nos arquivos.", + "versions": "Não foi possível carregar o histórico do capítulo.", + "preview": "A pré-visualização não pôde ser iniciada.", + "stale": "Alguém alterou estes capítulos. Recarregue para ver a versão deles; suas edições são mantidas até que você o faça." + }, + "addCutTooClose": "Mova o playhead ao menos um segundo de um corte primeiro.", + "columns": { + "chapter": "Capítulo", + "inBook": "No livro", + "starts": "Início", + "length": "Duração", + "start": "Iniciar", + "title": "Título" + }, + "listen": { + "resume": "Retomar", + "start": "Ouvir", + "progress": "{left} deixou no capítulo · {percent} do livro", + "notStarted": "Não iniciado", + "left": "{time} restante" + }, + "timeline": { + "label": "Capítulos através do livro", + "listened": "{percent} do livro ouvido" + }, + "cut": { + "heading": "Cortar", + "label": "Corte entre {previous} e {next}", + "firstHeading": "Início do livro", + "count": "{index} de {total}", + "previous": "Corte anterior", + "next": "Próximo corte", + "ends": "Termina", + "starts": "Início", + "saved": "salvo", + "backToCut": "De volta ao corte", + "move": "Mover o corte", + "playCut": "Reproduzir através do corte", + "playCutHint": "Toque alguns segundos em cada lado do corte (P)", + "stop": "Parar", + "stopHint": "Parar reprodução (P)", + "snap": "Ajustar para pausar", + "onPause": "Em pausa", + "noPause": "{seconds, plural, one {Não há uma pausa dentro de # segundos} other {Nenhuma pausa em # segundos}}", + "remove": "Remover corte", + "removeHint": "{title} juntou-se a {previous}", + "first": "O primeiro capítulo sempre começa às 0:00, então não tem corte para mover. Escolha qualquer outro capítulo para ajustar onde começa.", + "announce": "Cortar em {time}", + "moveHere": "Mover corte aqui", + "moveHereHint": "Mover este corte para {time} (M)", + "moveHereOutside": "Coloque a playhead dentro de {previous} ou {title} para mover este corte para lá.", + "newChapterHere": "Novo capítulo aqui", + "newChapterHereHint": "Inicie um novo capítulo em {time}" + } + }, "highlights": { "note": { "placeholder": "Adicionar uma nota...", @@ -8083,6 +8978,10 @@ "noResultsHint": "Tente um título ou autor diferente.", "noResultsIndexerHint": "Tente um título ou autor diferente, ou pesquise os índices por \"{title}\" e escolha um lançamento por si mesmo.", "freeTextAction": "Procurar indexadores", + "noResultsRequestHint": "Tente um título ou autor diferente, ou solicite \"{title}\" conforme digitado. Uma nota para o aprovador em Mais opções ajuda eles a encontrar o livro certo.", + "noResultsRequestAutoHint": "Tente um título ou autor diferente, ou solicite \"{title}\" conforme digitado.", + "requestAnywayAction": "Solicitar mesmo assim", + "searchAuthor": "Mostrar livros por {author}", "manualSearchAction": "Pesquisar indexadores manualmente", "yearUnknown": "Ano desconhecido", "sourceCount": "{count, plural, one {# fonte} other {# fontes}}", @@ -8463,7 +9362,18 @@ "clientRefused": "Seu cliente de download recusou um lançamento anterior", "clientUnavailable": "Seu cliente de download não respondeu a um lançamento anterior" }, + "clientProblem": { + "unavailable": "{client} não está respondendo", + "unavailableUnnamed": "Seu cliente de download não está respondendo", + "unavailableHint": "Versões que o usam não podem ser enviadas até suas respostas. Verifique se está sendo executado e então tente novamente.", + "refused": "{client} recusou a versão", + "refusedUnnamed": "Seu cliente de download recusou a versão", + "refusedHint": "Versões que o usam não podem ser enviadas até que isso seja corrigido.", + "retry": "Tentar novamente" + }, "singleFileNote": "O lançamento pode ser um livro em vários formatos, um audioobook em partes, ou um arquivo com todos eles e são importados como um único livro. Um lançamento contendo vários livros separados, você deve escolher qual manter.", + "holdForReview": "Revisar o download antes de ser arquivado", + "releasePageLabel": "{title}, página de lançamento em {indexer}", "searching": "Procurando indexadores...", "refresh": "Buscar novamente", "cached": "Mostrando a última busca. Procure novamente por novos resultados.", @@ -8781,6 +9691,7 @@ "scoreShort": "O arquivo importado marcou {score} em relação a esta solicitação, abaixo do {threshold} necessário para arquivar automaticamente.", "scoreClears": "O arquivo importado marcou {score}, que limpa o {threshold} necessário para arquivá-lo automaticamente.", "verificationOff": "Verificação de importação está desligada, então este arquivo nunca foi avaliado como solicitação.", + "heldOnRequest": "Esta versão foi enviada para ser verificada antes de ser arquivada, por isso está aguardando por você.", "reason": { "isbn_match": "O ISBN é um que foi solicitado.", "above_threshold": "Parece que o livro que foi solicitado.", @@ -8800,8 +9711,24 @@ }, "requested": "Pedido", "imported": "Importado", + "releasePage": "Abra a página de lançamento", "absent": "Nem o pedido nem o arquivo tem um.", "notSet": "Não definido", + "editionTitle": "O que o arquivo diz é", + "edition": { + "publisher": "Editora", + "published": "Publicado", + "language": "Idioma", + "pages": "Páginas", + "isbn10": "ISBN-10", + "narrators": "Narrado por", + "length": "Duração", + "version": "Versão", + "chapters": "Capítulos" + }, + "abridged": "Resumido", + "unabridged": "Integral", + "importedCover": "Capa encontrada no arquivo importado", "filesTitle": "O que chegou", "fileCount": "{count, plural, one {# arquivo} other {# arquivos}}", "role": { @@ -8811,6 +9738,8 @@ }, "fileAnyway": "Arquivo mesmo assim", "fileAnywayHint": "Registra isso na biblioteca de destino e marca a solicitação disponível, exatamente como uma pontuação para aprovação teria.", + "fileIt": "Arquivar isto", + "fileItHint": "Arquiva isso na biblioteca de destino e marca a solicitação como disponível.", "noDestination": "Esta requisição não tem nenhuma biblioteca de destino com uma pasta nela, portanto ainda não há onde arquivar o livro.", "openDock": "Abra a Dock de Livro", "missingEntry": "O arquivo associado a esta solicitação não está mais no Book Dock. Ele foi importado ou descartado manualmente, portanto não há nada restante para revisão aqui.", @@ -8945,7 +9874,8 @@ }, "surfaceOpacity": "Opacidade da superfície", "surfaceOpacityValue": "{value}%", - "surfaceBrightnessValue": "{value} %" + "surfaceBrightnessValue": "{value} %", + "readingHistory": "Histórico" }, "sidebar": { "dashboard": "Painel", @@ -9007,6 +9937,19 @@ "dropped": "{name} caiu na posição {position} de {total}", "cancelled": "Reordenação cancelada. {name} retornou à posição {position} de {total}.", "filteredHint": "Limpar o filtro para reordenar" + }, + "customize": { + "open": "Personalizar barra lateral", + "title": "Personalizar barra lateral", + "hint": "Arraste para reordenar. Páginas ocultas permanecem em Pesquisa.", + "reset": "Restaurar padrão", + "done": "Concluído", + "resetDone": "Barra lateral redefinida para o padrão", + "showInSidebar": "Exibir {name} na barra lateral", + "show": "Mostrar", + "hide": "Ocultar", + "alwaysShown": "{name} é sempre mostrado", + "returnsWithWork": "Mostra quando o trabalho está em espera" } }, "selectionActionBar": { @@ -9781,7 +10724,7 @@ "all": "TODOS", "attention": "Precisa de atenção", "active": "Em Execução", - "book": "Reservar", + "book": "Livro", "sentTo": "Enviado para", "file": "Arquivo", "status": "SItuação", @@ -9948,7 +10891,7 @@ "name": "Nome", "subject": "Cargo", "message": "mensagem", - "groupBook": "Reservar", + "groupBook": "Livro", "groupFile": "Arquivo", "groupOther": "Outros", "insertHint": "Entra com o cursor, no assunto ou na mensagem. Valores vazios não imprimem nada.", @@ -9984,7 +10927,22 @@ } }, "errors": { - "network": "Não foi possível acessar o BookOrbit. Verifique sua conexão, e tente novamente." + "network": "Não foi possível acessar o BookOrbit. Verifique sua conexão, e tente novamente.", + "codes": { + "CHAPTERS_STALE": "Alguém alterou estes capítulos. Recarregue para ver a versão deles.", + "CHAPTERS_EMPTY_TITLE": "Cada capítulo precisa de um título.", + "CHAPTERS_FIRST_NOT_ZERO": "O primeiro capítulo tem que começar às 0:00.", + "CHAPTERS_NOT_ASCENDING": "Capítulos têm de começar em ordem, cada um depois do anterior.", + "CHAPTERS_PAST_END": "Um capítulo começa depois que o audiolivro termina.", + "CHAPTERS_FILES_UNREADABLE": "Um arquivo de áudio não pôde ser lido, portanto seus capítulos são desconhecidos.", + "CHAPTERS_LOOKUP_NOT_FOUND": "Audible não tem capítulos para essa ASIN nesta loja.", + "CHAPTERS_LOOKUP_UNAVAILABLE": "Audible não respondeu. Tente novamente daqui a pouco.", + "CHAPTERS_EBOOK_UNAVAILABLE": "Esse ebook não tem lista de capítulos para ler.", + "CHAPTERS_ANALYSIS_TOO_LARGE": "Esse áudio é muito grande para ser analisado de uma vez.", + "CHAPTERS_ANALYSIS_UNAVAILABLE": "Encontrar pausas precisa de ffmpeg no servidor.", + "CHAPTERS_WRITE_UNAVAILABLE": "Capítulos não podem ser escritos nestes arquivos.", + "CHAPTERS_NOTHING_TO_WRITE": "Não há capítulos salvos para escrever." + } }, "hardcover": { "settings": { @@ -10326,6 +11284,10 @@ "fileAsBook": { "title": "Arquivo como Livro", "hint": "Trata cada arquivo como um livro individual. Mais adequado para bibliotecas com um formato por título. Evite se seus audiolivros abrangerem vários arquivos." + }, + "seriesFolders": { + "title": "Pastas da série", + "uses": "Usa Arquivo como Livro" } }, "addedAt": { @@ -10391,8 +11353,11 @@ "cannotChange": "Esta é a configuração que você não pode mudar mais tarde.", "folderHint": "Cada pasta é um livro. Melhor quando um título mantém vários formatos juntos, ou um audiobook abrange muitos arquivos.", "fileHint": "Cada arquivo é seu próprio livro. O melhor para pastas planas com um formato por título.", + "fileHintSeries": "Cada arquivo é seu próprio livro. Melhor para quadrinhos e manga mantidos em uma pasta por série, ou uma pasta plana com um formato por título.", "folderResult": "Um livro com dois formatos", - "fileResult": "Três livros, um por arquivo" + "fileResult": "Três livros, um por arquivo", + "seriesHint": "Cada arquivo é seu próprio livro, e a pasta em que fica sentada é sua série, o layout do Komga e o uso do Kavita. Melhor para quadrinhos e mangá.", + "seriesResult": "Duas séries, um livro por arquivo" }, "import": { "title": "Importar", @@ -10414,6 +11379,15 @@ "placeholder": "Digite um padrão como **/samples/** e pressione Enter", "placeholderMore": "Adicionar outra pasta", "remove": "Remover filtro: {pattern}" + }, + "series": { + "title": "Séries", + "toggle": "Pastas são séries", + "hintOn": "Cada pasta se torna uma série e o número do nome de cada arquivo define o lugar do livro nela, conforme Komga e Kavita faz. Uma série diferente com o nome de um arquivo ainda vem primeiro.", + "hintOff": "Ative isso para quadrinhos e manga mantidos em uma pasta por série, então cada pasta nomeia a série dos arquivos dentro dela.", + "replacesCustom": "Ligando isto, substitui as regras de caminho definidas sob os metadados. Desligar de novo antes de salvar as trazem de volta.", + "existingBooks": "Livros já nessa biblioteca terão essa série quando você aplicar as regras a eles sob Metadados.", + "previewSeries": "Séries" } }, "metadata": { @@ -10508,6 +11482,38 @@ "seriesIndex": "Número da série", "publishedYear": "Ano publicado", "publishedDate": "Data de publicação" + }, + "preset": { + "title": "Pastas são séries", + "hint": "Regras para uma pasta por série e um arquivo por volume, capítulo ou problema, como Komga e Kavita esperam. Eles substituem as regras abaixo.", + "apply": "Usar estas regras" + }, + "reapply": { + "action": "Aplicar regras aos livros existentes", + "applying": "Aplicando regras...", + "hint": "Atualiza livros já nesta biblioteca com os campos que estas regras decidem. Nada mais muda e campos bloqueados são mantidos.", + "saveFirst": "Salve as alterações primeiro e aplique as regras aos livros existentes.", + "confirm": "Aplicar as regras salvas para cada livro nesta biblioteca? Isto é executado em segundo plano e você pode fechar este editor. Apenas os campos que as regras decidem são escritos; campos bloqueados e metadados que os próprios arquivos fornecem são mantidos.", + "progressSummary": "Processado {processed} de {total}: {updated} atualizado, {unchanged} inalterado, {skipped} ignorado, {failed} falhou.", + "jobStatus": { + "running": "Aplicando regras em segundo plano.", + "completed": "Regras aplicadas aos livros existentes.", + "failed": "A aplicação foi interrompida antes de finalizar. As alterações já feitas foram mantidas. Você pode executá-la novamente com segurança." + }, + "errors": { + "notConfigured": "Salve as regras de caminho para esta biblioteca antes de aplicá-las.", + "alreadyRunning": "As regras já estão sendo aplicadas para esta biblioteca.", + "busy": "Outras bibliotecas estão aplicando regras. Tente novamente em breve.", + "requestFailed": "Não foi possível alcançar o servidor. Feche e reabra este editor para verificar o status.", + "interrupted": "A situação da tarefa não está mais disponível. Ela pode ter sido interrompida por uma reinicialização do servidor. Você pode executá-la com segurança novamente." + }, + "failureSample": "Livro {bookId}: {reason}", + "failureReasons": { + "rules_unavailable": "As regras não puderam ser avaliadas a tempo.", + "rules_invalid": "As regras salvas não puderam ser executadas. Abra o Configura, verifique-as e salve novamente.", + "file_unavailable": "O arquivo do livro não pôde ser lido, então nada foi alterado. Verifique se a pasta da biblioteca está disponível.", + "metadata_failed": "Os metadados do Livro não puderam ser salvos." + } } } }, @@ -10776,6 +11782,173 @@ "createFolder": "Não foi possível criar a pasta" } }, + "folderBrowser": { + "title": "Escolher pastas", + "subtitle": "Para {name} · {mode}", + "unnamedLibrary": "a nova biblioteca", + "close": "Fechar", + "mode": { + "folder": "Pasta como Livro", + "file": "Arquivo como Livro" + }, + "field": { + "placeholder": "Encontre uma pasta ou cole um caminho", + "label": "Encontre uma pasta ou digite um caminho", + "clear": "Limpar", + "mounted": "Montado", + "libraries": "Bibliotecas", + "recent": "Recente", + "thisLibrary": "{name} (esta biblioteca)", + "jumpHint": "Digite para encontrar uma pasta por nome, ou comece com {key} para digitar um caminho", + "inFolder": "Em {path}", + "completeHint": "{tab} completar {enter} mostrar na árvore", + "noCompletion": "Nenhuma pasta no {path} começa com isso. {key} tenta o caminho como digitado.", + "pathMissing": "{path} não existe no servidor.", + "pathMissingSuggest": "{path} não existe no servidor. Você quis dizer {suggestion}?", + "pathBlocked": "O BookOrbit nunca abre {path}: é uma pasta do sistema.", + "findSummary": "{count, plural, one {# pasta corresponte} other {# pastas correspondem}} “{query}”, exibido com as pastas ao redor {count, plural, one {it} other {them}}.", + "findEnter": "{key} vai para o primeiro.", + "findTruncated": "Mostrando as primeiras {count} correspondências.", + "findNone": "Nenhuma pasta no servidor corresponde. Tente menos letras." + }, + "view": { + "button": "Ver", + "label": "Ver opções", + "sort": "Ordenar", + "sortName": "Nome", + "sortBooks": "A maioria dos livros primeiro", + "show": "Mostrar", + "showEmpty": "Pastas sem livros", + "showSystem": "Pastas do sistema" + }, + "newFolder": { + "button": "Nova pasta", + "label": "Nova pasta no {name}", + "placeholder": "Nova pasta no {name}", + "inputLabel": "Nome da nova pasta", + "hint": "Criar {enter} {escape} cancelar", + "create": "Criar", + "errors": { + "empty": "Insira o nome da pasta.", + "invalid": "Use um nome de pasta, sem barras ou um ponto principal.", + "exists": "{name} já existe aqui.", + "denied": "BookOrbit não pode escrever aqui.", + "failed": "Não foi possível criar a pasta." + } + }, + "tree": { + "label": "Pasta do servidor", + "expand": "Expandir {name}", + "collapse": "Recolher {name}", + "select": "Selecionar {name}", + "readsThis": "O {name} lê esta pasta", + "thisLibrary": "Esta biblioteca", + "librariesInside": "{names} {count, plural, one {lido como pasta} other {lidos como pastas}} dentro", + "inside": "{count} dentro", + "appData": "Dados do BookOrbit", + "noAccess": "Sem acesso", + "loading": "Carregando pastas", + "systemHidden": "{count, plural, one {# pasta de sistema} other {# pastas de sistema}} oculta no {path}", + "moreFolders": "Apenas as primeiras pastas {count} aqui são listadas. Encontre por nome ou digite um caminho para chegar ao resto.", + "unreadable": "BookOrbit não pode ler {path}.", + "placesFailed": "BookOrbit não pôde carregar as pastas do servidor.", + "retry": "Tentar novamente" + }, + "count": { + "books": "{count, plural, one {# livro} other {# livros}}", + "atLeast": "{count}+", + "more": "+{count} a mais" + }, + "plan": { + "label": "O que esta biblioteca lerá", + "willRead": "{name} vai ler", + "newFolders": "{count, plural, one {# nova pasta} other {# novas pastas}}", + "already": "já · {books}", + "emptyTitle": "Nada foi escolhido ainda", + "emptyHint": "Marque pastas na árvore. Uma pasta marcada insere tudo dentro dela.", + "rowSize": "{books} · {size}", + "show": "Mostrar {name} na árvore", + "showTitle": "Mostrar na árvore", + "remove": "Remover {name}", + "fit": { + "folder": "Cada pasta mantém um livro.", + "file": "Cada arquivo tem um livro.", + "empty": "Vazio por enquanto." + }, + "attention": { + "containsOne": "Contém {folder}, que {library} lê. Esses livros estariam em duas bibliotecas.", + "containsMany": "Contém pastas que {libraries} lê. Esses livros seriam em duas bibliotecas.", + "overlapExact": "{library} já lê esta pasta. Ambas as bibliotecas importariam o mesmo {count, plural, one {# livro} other {# livros}}.", + "overlapInside": "Esta pasta está dentro da pasta do {library}, portanto seus livros estariam em ambas as bibliotecas.", + "merge": "{count, plural, one {# pasta aqui segura} other {# pastas aqui seguras}} vários livros: como pasta como livro cada uma se torna 1 livro.", + "split": "{count, plural, one {# audioobook está aqui} other {# audiolivros estão aqui}} em partes: como arquivo, à medida que cada parte, cada parte se torna seu próprio livro.", + "locked": "Organização é fixada uma vez que exista uma biblioteca.", + "leaveOutOne": "Sair do {folder}", + "leaveOutMany": "Deixe-os de fora", + "remove": "Remover", + "useFile": "Usar Arquivo como Livro", + "useFolder": "Usar a pasta como livro" + }, + "suggestions": "Ainda não está em nenhuma biblioteca", + "suggestionsMeta": "nenhuma biblioteca lê", + "add": "Adicionar", + "preview": { + "label": "Olhando para", + "ticks": "{key} ticou isso", + "wouldAdd": "Adicionar {books} · {size}", + "empty": "Vazio por enquanto", + "merge": "Vários livros compartilham uma pasta aqui: pois pasta como livro cada pasta é 1 livro.", + "split": "Audiobooks em partes: como arquivo de cada parte é seu próprio livro." + }, + "totals": { + "books": "{count, plural, one {livro} other {livros}} · {size}", + "booksOnly": "{count, plural, one {livro} other {livros}}", + "shared": "{count} também em outras bibliotecas", + "organize": "Organizar como", + "organizeLabel": "Organização", + "segmentBooks": "{count, plural, one {# livro} other {# livros}}", + "folderTitle": "Cada pasta que mantém livros é um livro", + "fileTitle": "Cada arquivo tem um livro", + "locked": "{mode}, corrigido desde a criação de {name}" + } + }, + "reason": { + "denied": "BookOrbit não pode ler esta pasta. Dê ao usuário BookOrbit permissão de leitura e depois reabra-a.", + "appData": "O BookOrbit mantém capas, caches e plugins aqui. Escolha a pasta que segura seus livros.", + "own": "O {name} já está nesta biblioteca.", + "ownCovered": "Esta biblioteca já lê {path}, que inclui esta pasta.", + "included": "Incluído porque você selecionou {path}." + }, + "notice": { + "folded": "{path} inclui {count, plural, one {{name}} other {# pastas que você selecionou}}, por isso {count, plural, one {ela foi} other {elas foram}} incorporadas a ele.", + "range": "Ticket {count, plural, one {# pasta} other {# pastas}}{from} para {to}.", + "removed": "Removido {name}", + "leftOut": "{name} tornou-se {count, plural, one {# pasta} other {# pastas}} ao lado das outras bibliotecas", + "modeFile": "Alternado para arquivo como livro; as configurações de verificação da biblioteca seguem", + "modeFolder": "Alternado para pasta como livro; as configurações de verificação da biblioteca seguem", + "created": "Fez {path} e marcou.", + "createdOnly": "Feito {path}.", + "undo": "Desfazer" + }, + "keys": { + "space": "Espaço", + "tab": "Tabulação", + "escape": "Esc" + }, + "footer": { + "hints": "{move} mova {fold} dobre o tick {tick} {range} clique para encontrar um alcance {find}", + "add": "Adicionar pastas", + "addCount": "Adicione {count, plural, one {# pasta} other {# pastas}}", + "addShort": "Adicionar", + "addShortCount": "Adicionar {count}", + "nothingPicked": "Nada foi escolhido ainda", + "seePlan": "Veja o plano" + }, + "divider": { + "label": "Redimensionar o plano", + "title": "Arraste para redimensionar. Clique duplo para redefinir." + } + }, "destination": { "loadFailed": "Não foi possível carregar bibliotecas de destino. Feche e reabra para tentar novamente.", "noLibraries": "Nenhuma biblioteca de livros está disponível. Crie uma biblioteca ou peça a um administrador para acessá-la.", @@ -11244,6 +12417,15 @@ "dismiss": "Descartar a notificação", "occurrences": "Aconteceu em {count} vez", "occurrencesShort": "x{count}", + "readAloud": { + "readyTitle": "Leitura em voz alta: {title}", + "needsReviewTitle": "Read-aloud precisa de revisão: {title}", + "needsReviewMessage": "Parte do texto não pôde ser combinada ao áudio. Revisite-o antes de adicioná-lo ao livro.", + "failedTitle": "Read-aloud falhou: {title}", + "reviewExpiringTitle": "Revisão em voz alta expira em breve: {title}", + "reviewExpiringMessage": "A leitura gerada em voz alta será descartada em alguns dias, a menos que você a revise.", + "untitledBook": "Livro sem título" + }, "preferences": { "title": "Notificações", "subtitle": "Escolha quais categorias de notificação você quer receber.", @@ -11301,6 +12483,10 @@ "label": "Renomear em massa", "description": "Quando uma massiva renomear vários livros ou falhar." }, + "readAloud": { + "label": "Geração de leitura em voz alta", + "description": "Quando uma leitura em voz alta que você começou estiver pronta, precisa da sua revisão ou falhará." + }, "migration": { "label": "Migração de dados", "description": "Quando uma importação de outra ferramenta da biblioteca completa ou falha." @@ -11423,7 +12609,21 @@ }, "toast": { "linkedHighlightError": "Não foi possível abrir a posição vinculada ao destaque", - "resumed": "Retomado em {pct}% - {label}" + "resumed": "Retomado em {pct}% - {label}", + "newerPositionError": "Não foi possível abrir seu novo lugar", + "highlightSaveFailed": "Não foi possível salvar o destaque", + "noteSaveFailed": "Não foi possível salvar a nota", + "highlightDeleteFailed": "Não foi possível excluir o destaque", + "bookmarkSaveFailed": "Não foi possível adicionar o marcador", + "bookmarkDeleteFailed": "Não foi possível remover o marcador", + "bookmarkUpdateFailed": "Não foi possível salvar o marcador", + "marksLoadFailed": "Não foi possível carregar seus destaques e favoritos" + }, + "newerPositionDialog": { + "title": "Continuar de outro dispositivo?", + "description": "Este livro foi lido em {remote} um outro dispositivo enquanto estava aberto aqui em {local}.", + "follow": "Ir para {pct}", + "stay": "Ficar em {pct}" }, "header": { "goBack": "Voltar", @@ -11565,6 +12765,7 @@ "allChapters": "Todos os capítulos", "notesOnly": "Apenas anotações", "deleteBookmark": "Excluir marcador", + "editBookmark": "Editar favorito", "deleteHighlight": "Excluir destaque", "approximatePosition": "Sincronizado a partir do dispositivo; a posição exata não está disponível, pula para o capítulo", "sort": { @@ -11580,6 +12781,7 @@ "translate": "Traduzir", "define": "Definir", "deleteAnnotation": "Excluir anotação", + "readFromHere": "Ler a partir daqui", "apply": "Aplicar", "color": "Cor de destaque: {color}", "style": "Estilo do destaque: {style}", @@ -11730,6 +12932,254 @@ "hideControls": "Ocultar controles", "stop": "Parar narração", "error": "Erro de reprodução de Narração" + }, + "bookmarkEdit": { + "title": "Editar favorito", + "titleLabel": "Título", + "noteLabel": "Nota", + "notePlaceholder": "Nota opcional" + } + }, + "readingHistory": { + "title": "Histórico", + "listLabel": "Leituras concluídas, {period}", + "error": "Seu histórico de leituras não pôde ser carregado.", + "retry": "Tentar novamente", + "actions": { + "share": "Compartilhar Imagem", + "export": "Exportar" + }, + "period": { + "year": "Ano", + "allTime": "Todo o período", + "newerYears": "Mostrar anos mais novos", + "olderYears": "Mostrar anos mais velhos", + "quarterGroup": "Trimestre", + "quarter": "Q{quarter}", + "quarterYear": "Q{quarter} {year}" + }, + "toolbar": { + "search": "Pesquisar livros", + "searchLabel": "Pesquisar títulos e autores", + "clearSearch": "Limpar busca", + "outcomes": "Resultado", + "outcome": { + "completed": "Concluído", + "skimmed": "Folheado", + "abandoned": "Abandonado" + }, + "order": "Ordem", + "newest": "Mais recente primeiro", + "oldest": "Mais antigos primeiro", + "view": "Ver", + "list": "Lista", + "covers": "Capas", + "listView": "Exibição em lista", + "coversView": "Visualização das capas", + "oneBook": "Um livro", + "clearBook": "Mostrar todos os livros, não apenas {title}" + }, + "month": { + "undated": "Sem data de término", + "reads": "{count, plural, one {# leia} other {# lê}}", + "rereads": "{count, plural, one {# reler} other {# reler}}", + "hours": "{hours}h" + }, + "duration": { + "underMinute": "<1min", + "minutes": "{minutes}m", + "hoursMinutes": "{hours}h {minutes}m" + }, + "row": { + "untitled": "Sem título", + "noDate": "Sem dados", + "readNumber": "{n, selectordinal, other {#th leia}}", + "readNumberTitle": "{count, plural, one {Terminou uma vez em todos} other {Terminou # vezes em todos}}", + "abandoned": "Abandonado", + "abandonedAt": "Abandonado em {percent}", + "skimmed": "Folheado", + "removed": "Remover da biblioteca", + "removedShort": "Removido", + "removedTitle": "Excluído da biblioteca em {date}. Esta leitura permanece no seu histórico.", + "sameDay": "Mesmo dia", + "startedSpan": "Iniciou {date} · {count, plural, one {# dia} other {# dias}}", + "finishOnly": "Somente data final", + "noDates": "Nenhuma data registrada", + "sessions": "{count, plural, one {# sessão} other {# sessões}}", + "sessionsTime": "{sessions} · {time}", + "sourcesMore": "{names} +{count}", + "highlights": "{count, plural, one {destaque} other {destaques}}", + "journal": "{count, plural, one {# biblioteca} other {# bibliotecas}}", + "notesAndRating": "Notas e avaliação" + }, + "tile": { + "label": "{title}, finalizado em {date}", + "readNumber": "{n, selectordinal, one {#º} two {#º} few {#º} other {#º}}" + }, + "notes": { + "loading": "Carregando notas desta leitura", + "failed": "As notas desta leitura não puderam ser carregadas.", + "note": "Nota", + "journal": "Diário", + "thisRead": "Esta leitura", + "allHighlights": "{count, plural, one {O destaque desta leitura} other {Todos # destacam esta leitura}}", + "readingLog": "Lendo o log" + }, + "rating": { + "group": "Avalie esta leitura", + "rate": "{count, plural, one {Avalie # como estrela} other {Avalie # com estrelas}}", + "clear": "Limpar a nota desta leitura", + "ofFive": "{rating} de 5 estrelas", + "notRated": "Não avaliado", + "failed": "A avaliação não pôde ser salva." + }, + "panel": { + "label": "Leitura de {title}", + "close": "Fechar", + "firstRead": "Primeira Leitura", + "readOf": "{n, selectordinal, one {#º} two {#º} few {#º} other {#º}} lido de {count}", + "finished": "Concluído", + "started": "Iniciado", + "took": "Duração", + "timeRead": "Tempo lido", + "timeReadValue": "{time} acima de {count, plural, one {# sessão} other {# sessões}}", + "where": "Local", + "notRecorded": "Não registrado" + }, + "rail": { + "label": "{period} em números", + "inNumbers": "{period} em números", + "totals": "Totais", + "reads": "Leituras", + "books": "Livros", + "rereads": "Relendo", + "pagesLabel": "Páginas", + "pages": "{count, plural, one {página #} other {# páginas}}", + "hours": "{hours}h", + "daysRead": "{count, plural, one {# dia lido} other {Por # dias lidos}}", + "rated": "{count, plural, one {# avaliado} other {# avaliados}}", + "averageRating": "{rating}★", + "notCounted": "{count} mais fino ou abandonado, não contado.", + "byMonth": "Por mês", + "best": "Melhor: {month} · {count}", + "monthBar": "{month}: {count, plural, one {# leia} other {# leia}}", + "firstReads": "Primeira Leitura", + "quarters": "Trimestres", + "goal": "Leitura de objetivo {year}", + "goalProgress": "{reached} de {target} livros.", + "goalMet": "Encontrado em {date}.", + "goalRereads": "Os releituras contam para isso.", + "records": "Registos", + "fastest": "Mais rápido", + "pagesPerDay": "{count, plural, one {# página por dia} other {# páginas por dia}}", + "longestBook": "Livro mais longo", + "mostReread": "Mais relidas", + "times": "{count, plural, one {# vez} other {# vezes}}", + "longestRead": "Leitura mais longa", + "days": "{count, plural, one {# dia} other {# dias}}", + "formats": "Formatos", + "whereYouRead": "Onde você lê", + "undated": "{count, plural, one {# leitura concluída não tem data} other {# leituras concluídas não têm data}}", + "showUndated": "Mostrar em Todos os tempos" + }, + "empty": { + "title": "Nenhuma leitura finalizada ainda", + "body": "Os livros chegam aqui enquanto você os finaliza, em qualquer leitor ou aplicativo. Marque um livro lido e ele também apareça.", + "filteredTitle": "Nenhuma leitura corresponde", + "filteredBody": "Tente outro período, ligue outro resultado, ou limpe a busca." + }, + "export": { + "title": "Exportar {period}", + "description": "{count, plural, one {# leia} other {# lê}}, já que a lista os mostra agora.", + "close": "Fechar", + "format": "Formato", + "formats": { + "md": { + "name": "Markdown", + "hint": "Para apps de notas como Obsidiana. Uma linha por leitura, agrupada por mês." + }, + "csv": { + "name": "CSV", + "hint": "Para planilhas. Uma linha por leitura com datas, páginas, tempo e classificação." + }, + "json": { + "name": "JSON", + "hint": "Cada campo, para scripts e backups." + } + }, + "includes": "Incluí", + "includesOthers": "Leituras acabadas e as leituras abandonadas e superficiais que a lista mostra.", + "finishedOnly": "Somente leitura finalizada. Ative Ignotado ou Abandonado na lista para adicioná-los.", + "preview": "Visualização de {file}", + "previewFailed": "A visualização não pode ser carregada. O download ainda funciona.", + "moreLines": "{count, plural, one {mais # linha} other {mais # linhas}}", + "download": "Download", + "preparing": "Preparando {done} de {total}", + "saved": "{count, plural, one {O # exportado leu} other {# exportado leram}}", + "failed": "A exportação não pôde ser preparada.", + "fileHeading": "Lendo história, {period}" + }, + "share": { + "title": "Compartilhar Imagem", + "description": "Uma foto da sua leitura para publicar ou enviar. Nada sai da BookOrbit até que você a salve ou copie.", + "close": "Fechar", + "loading": "Reunindo suas capas", + "loadFailed": "A imagem não pôde ser feita. Feche e tente novamente.", + "period": "Período", + "periods": { + "quarter": "Trimestre", + "month": "Mês" + }, + "periodSummary": "{period} · {count, plural, one {# leia} other {# leia}}", + "monthYear": "{month} {year}", + "shape": "Forma", + "shapes": { + "square": { + "name": "Quadrado", + "hint": "1080 × 1080, para publicações" + }, + "story": { + "name": "Narrativa", + "hint": "1080 × 1920, para histórias" + }, + "wide": { + "name": "Largo", + "hint": "1600 × 900, para conversas e blogs" + } + }, + "look": "Olhar", + "looks": { + "dark": "Escuro", + "light": "Claro" + }, + "show": "Mostrar", + "titles": "Títulos sobre capas", + "rereads": "Contagem de leituras", + "rereadsHint": "Um livro lido três vezes mostra uma vez, marcado ×3.", + "ratings": "Suas avaliações", + "fileHint": "{shape} · PNG · {width} × {height}", + "copy": "Copiar imagem", + "save": "Salvar PNG", + "copied": "Imagem copiada", + "copyFailed": "A imagem não pôde ser copiada. Salvá-la em vez disso.", + "saved": "Imagem salva", + "saveFailed": "A imagem não pode ser salva.", + "previewLabel": "Compartilhe imagem de {period}: {count, plural, one {# leia} other {# lê}}", + "poster": { + "eyebrowYear": "{name} ano de leitura", + "eyebrowPeriod": "{name} de {period} na leitura", + "reads": "{count, plural, one {leia} other {leia}}", + "books": "{count, plural, one {livro} other {livros}}", + "hours": "{count, plural, one {hora} other {horas}}", + "pages": "{count, plural, one {pagina} other {paginas}}", + "busiestMonth": "Mês mais ocupado", + "more": "+{count}" + } + }, + "links": { + "goalReads": "Veja {count, plural, one {a # leitura} other {todas # leituras}}", + "bookReads": "Ver todas as leituras no Histórico", + "chartHint": "Selecione um mês para ver suas leituras no histórico" } }, "scanner": { @@ -12125,7 +13575,8 @@ "entityManager": "Gerenciador de Entidades", "bulkRename": "Renomeação em Massa", "duplicateBooks": "Livros duplicados", - "missingResources": "Recursos faltando" + "missingResources": "Recursos faltando", + "chapterHealth": "Saúde do Capítulo" }, "entityTypes": { "authors": "Autores", @@ -12653,6 +14104,68 @@ "list": "Não foi possível carregar estas entradas.", "clean": "Falha na limpeza." } + }, + "chapterHealth": { + "accessDenied": "Você precisa de permissão para editar os metadados para usar esta ferramenta.", + "untitled": "Livro sem título", + "categoriesLabel": "Problemas no capítulo", + "categories": { + "no_chapters": "Sem capítulos", + "one_per_file": "Um por arquivo", + "numbered_tracks": "Faixas numeradas", + "needs_review": "Requer revisão", + "edited": "Editado" + }, + "hints": { + "no_chapters": "Audiobooks em um único arquivo com apenas um capítulo ou nenhum.", + "one_per_file": "Audiobooks em vários arquivos sem capítulos próprios, então cada arquivo funciona como um capítulo.", + "numbered_tracks": "Capítulos nomeados como arquivos ou faixas, como \"001\" ou \"Faixa 03\", ao invés de capítulos.", + "needs_review": "Pesquisas no Audible que não atenderam com seus arquivos o suficiente para aplicar por conta própria. Revise abre os capítulos do livro com a pesquisa pronta.", + "edited": "Capítulo lista uma pessoa editada, mostrado para referência." + }, + "library": "Biblioteca", + "allLibraries": "Todas as bibliotecas", + "found": "{count, plural, =0 {Não há livros aqui} one {# livro} other {# livros}}", + "emptyTitle": "Nada para exibir", + "clearSelection": "Limpar seleção", + "row": { + "select": "Selecionar {title}", + "facts": "{files, plural, one {# arquivo} other {# arquivos}}; {chapters, plural, =0 {sem capítulos} one {# capítulo} other {# capítulo}}; {library}", + "files": "{count, plural, one {# arquivo} other {# arquivos}}", + "chapters": "{count, plural, =0 {sem capítulos} one {# capítulo} other {# capítulos}}", + "noAsin": "Sem ISBN", + "review": "Revisão", + "dismiss": "Dispensar" + }, + "reasons": { + "runtime_mismatch": "O tempo de execução de Audible difere dos seus arquivos por {seconds} s.", + "runtime_mismatch_long": "O tempo de execução de Audible difere de seus arquivos por {duration}, portanto é provavelmente uma edição diferente.", + "runtime_unknown": "Audible não lista um tempo de execução para este livro, então seus tempos não puderam ser verificados contra seus arquivos.", + "not_exact": "Audible não marca estes momentos como exatos.", + "implausible": "A lista de Audible não se parece com capítulos para este livro.", + "unknown_length": "A duração deste livro é desconhecida.", + "locked": "Os capítulos deste livro estão protegidos, por isso nada foi substituído." + }, + "lookup": { + "title": "Encontrar capítulos no áudio", + "description": "Parece cada livro que tem um ISBN Audible. Quando o Audible marca seu tempo exato e seu tempo de execução corresponde aos seus arquivos, os capítulos estão aplicados e protegidos, e a lista antiga permanece na história do livro. Tudo o resto espera sob a revisão necessária.", + "lookUpCategory": "{count, plural, =0 {Nenhum livro aqui possui um ISBN} one {Pesquise # livro usando o ISBN} other {Pesquise # livros usando o ISBN}}", + "lookUpSelected": "{count, plural, one {Olhe para # livro selecionado} other {Olhe para # livros selecionados}}", + "waiting": "{count, plural, =0 {Terminando} one {# livro esperando} other {# livros esperando por}}", + "current": "Pesquisando {title}", + "idle": "Nenhuma pesquisa aguardando.", + "finished": "Terminado: {applied} aplicado, {review} para revisão, {notFound} não encontrado, {failed} falhou", + "stop": "Parar", + "clear": "Limpar", + "queued": "{count, plural, =0 {Nenhum livro foi enfileirado} one {# livro foi colocado na fila} other {# livros foram filados}}", + "queuedWithSkipped": "{count, plural, =0 {Nenhum livro foi colocado na fila} one {# livro na fila} other {# livros na fila}}; {skipped, plural, one {# não tinha ISBN} other {# não tinham ISBN}}" + }, + "errors": { + "load": "Saúde do capítulo não pode ser carregada.", + "enqueue": "As pesquisas não puderam ser enfileiradas.", + "cancel": "As pesquisas não puderam ser alteradas.", + "dismiss": "A revisão não pôde ser descartada." + } } }, "views": { @@ -12708,6 +14221,7 @@ "editMetadata": "Editar Metadados · {base}", "edit": "Editar · {base}", "files": "Arquivos · {base}", + "chapters": "Capítulos · {base}", "readingLog": "Registro de Leitura · {base}", "highlights": "Destaques · {base}" } @@ -12940,7 +14454,9 @@ "bookRequests": "Solicitações", "bookRequestDetail": "Pedido", "bookRequestReleases": "Escolha uma versão", - "tts": "Texto-para-voz" + "tts": "Texto-para-voz", + "chapterHealth": "Saúde do Capítulo", + "readingHistory": "Histórico de leituras" }, "tts": { "readerControls": { @@ -13109,5 +14625,394 @@ "tab": "tab" }, "resultCount": "{count, plural, =0 {Sem resultados} one {# resultado} other {# resultados}}" + }, + "serverText": { + "achievements": { + "books_finished_1": { + "name": "Iniciação de tinta", + "description": "Termine o seu primeiro livro" + }, + "books_finished_2": { + "name": "Escoteiro", + "description": "Termine 10 livros" + }, + "books_finished_3": { + "name": "Firme na História", + "description": "Termine 35 livros" + }, + "books_finished_4": { + "name": "Grande Arquivista", + "description": "Termine 100 livros" + }, + "pages_read_1": { + "name": "Primeiras folhas", + "description": "Ler 500 páginas" + }, + "pages_read_2": { + "name": "Tecelão de Capítulos", + "description": "Ler 5.000 páginas" + }, + "pages_read_3": { + "name": "Taça do Tomo", + "description": "Ler 25.000 páginas" + }, + "pages_read_4": { + "name": "Léxico Grande", + "description": "Leia 100.000 páginas" + }, + "hours_read_1": { + "name": "Iniciar hora", + "description": "Leia por 10 horas" + }, + "hours_read_2": { + "name": "Leitor de Cronograma", + "description": "Leia por 100 horas" + }, + "hours_read_3": { + "name": "Veterano Crônico", + "description": "Leia por 500 horas" + }, + "hours_read_4": { + "name": "Estudioso Sem Tempo", + "description": "Leia por 1.000 horas" + }, + "marathoner": { + "name": "Maratonista", + "description": "Conclua uma sessão de leitura de 90 minutos ou mais" + }, + "all_nighter": { + "name": "Tudo à noite", + "description": "Leia entre 1 e 4" + }, + "early_bird": { + "name": "Alvorada", + "description": "Inicie uma sessão de leitura entre 5am e 7am" + }, + "long_book_1": { + "name": "Alongamento da história", + "description": "Termine um livro com 300 ou mais páginas" + }, + "page_turner": { + "name": "Descobridor de Página", + "description": "Termine um livro com 500 ou mais páginas" + }, + "long_book_3": { + "name": "Viajante Épico", + "description": "Termine um livro com 750 ou mais páginas" + }, + "tome_tamer": { + "name": "Tomo Soberano", + "description": "Termine um livro com 1.000 ou mais páginas" + }, + "sprint": { + "name": "Corrida", + "description": "Termine um livro em um único dia" + }, + "binge_reader": { + "name": "Leitor Bilíngue", + "description": "Termine 3 ou mais livros em uma única semana" + }, + "library_builder_1": { + "name": "Semente de prateleira", + "description": "Tenha 50 livros na sua biblioteca" + }, + "library_builder_2": { + "name": "Arquiteto de Coleção", + "description": "Tenha 250 livros na sua biblioteca" + }, + "library_builder_3": { + "name": "Pilha Soberana", + "description": "Tenha 1.000 livros na sua biblioteca" + }, + "library_builder_4": { + "name": "Biblioteca de Alexandria", + "description": "Tenha 5.000 livros na sua biblioteca" + }, + "annotator_1": { + "name": "Bloco de Notas", + "description": "Crie 10 anotações" + }, + "annotator_2": { + "name": "Escritor Ativo", + "description": "Crie 50 anotações" + }, + "annotator_3": { + "name": "Escritor prolífico", + "description": "Crie 200 anotações" + }, + "annotator_4": { + "name": "Escritor Master", + "description": "Crie 500 anotações" + }, + "multi_format": { + "name": "Multi-Formato", + "description": "Possui livros em 3 formatos diferentes" + }, + "curator": { + "name": "Museólogo", + "description": "Crie 10 ou mais coleções" + }, + "genre_explorer_1": { + "name": "Gênero Curioso", + "description": "Termine livros em 5 gêneros diferentes" + }, + "genre_explorer_2": { + "name": "Aventureiro do Gênero", + "description": "Termine livros em 10 gêneros diferentes" + }, + "genre_explorer_3": { + "name": "Gerente de Gênero", + "description": "Termine livros em 15 gêneros diferentes" + }, + "genre_explorer_4": { + "name": "Mestre do Gênero", + "description": "Termine livros em 20 gêneros diferentes" + }, + "polyglot_1": { + "name": "Bilingue", + "description": "Termine livros em 2 idiomas diferentes" + }, + "polyglot_2": { + "name": "Trilíngue", + "description": "Termine livros em 3 idiomas diferentes" + }, + "polyglot_3": { + "name": "Multilíngue", + "description": "Termine livros em 5 idiomas diferentes" + }, + "polyglot_4": { + "name": "Polígono", + "description": "Termine livros em 7 idiomas diferentes" + }, + "old_soul": { + "name": "Alma Velha", + "description": "Termine um livro publicado antes de 1900" + }, + "new_release": { + "name": "Novo lançamento", + "description": "Terminar um livro publicado no ano atual" + }, + "century_span": { + "name": "Através do século", + "description": "Termine livros de 3 ou mais séculos diferentes" + }, + "author_deep_dive": { + "name": "Autor do mergulho profundo", + "description": "Leia 5 ou mais livros pelo mesmo autor" + }, + "streak_1": { + "name": "Primeiros passos", + "description": "Mantenha uma sequência de leitura de 7 dias" + }, + "streak_2": { + "name": "Habitual", + "description": "Mantenha uma sequência de leitura de 30 dias" + }, + "streak_3": { + "name": "Imparável", + "description": "Mantenha uma sequência de leitura de 100 dias" + }, + "streak_4": { + "name": "Chama Longa", + "description": "Mantenha uma sequência de leitura de 365 dias" + }, + "year_round_reader": { + "name": "Leitor Anual", + "description": "Ler em todos os 12 meses de um ano de calendário" + }, + "reborn": { + "name": "Renascer", + "description": "Termine um livro que havia abandonado por mais de 6 meses" + }, + "comeback_kid": { + "name": "Menino das Viradas", + "description": "Retomar leitura após uma pausa de 30 dias" + }, + "bookmarked": { + "name": "Favoritos", + "description": "Crie sua primeira anotação ou destaque" + }, + "new_year_reader": { + "name": "Leitor de Ano Novo", + "description": "Concluir uma sessão de leitura no dia 1 de janeiro" + }, + "monthly_reader_2": { + "name": "Máquina Mensal", + "description": "Termine 10 livros em um único mês do calendário" + }, + "slow_burn": { + "name": "Queima Lenta", + "description": "Tomar mais de 90 dias do início até o fim de um livro" + }, + "one_sitting": { + "name": "Uma sessão", + "description": "Cubra 90% ou mais de um livro em uma única sessão de leitura" + }, + "decade_sampler": { + "name": "Amostra de Década", + "description": "Termine livros publicados em 5 décadas diferentes" + }, + "short_story_fan": { + "name": "Ventilador da história", + "description": "Termine 5 livros com menos de 100 páginas" + }, + "thick_and_thin": { + "name": "Grosso e Fino", + "description": "Termine pelo menos um livro com menos de 100 páginas e uma com mais de 800 páginas" + }, + "trilogy_master": { + "name": "Mestre da Trilogia", + "description": "Termine uma série completa de 3 livros" + }, + "genre_devotee": { + "name": "Devoto do Gênero", + "description": "Termine 10 livros no mesmo gênero" + }, + "seasonal_reader": { + "name": "Quatro Estações", + "description": "Leia em todas as 4 estações dentro de um único ano" + }, + "perfect_month": { + "name": "Mês Perfeito", + "description": "Ler todos os dias de um mês do calendário" + }, + "consistent_reader": { + "name": "Consistência é chave", + "description": "Ler pelo menos 30 minutos por dia durante 14 dias consecutivos" + }, + "weekend_rhythm": { + "name": "Ritmo Semanal", + "description": "Ler em 8 fins de semana consecutivos" + }, + "weekend_warrior": { + "name": "Guerreiro da semana", + "description": "Leia por 5 ou mais horas em um único fim de semana" + }, + "yearly_finisher_12": { + "name": "Perto Anual", + "description": "Termine 12 livros em um único ano de calendário" + }, + "note_keeper": { + "name": "Guardião de Notas", + "description": "Crie 25 anotações que incluam uma nota" + }, + "deep_dive_session": { + "name": "Mergulho Profundo", + "description": "Crie 10 anotações em um único dia" + }, + "first_series": { + "name": "Arma de Série", + "description": "Termine seu primeiro livro que pertence a uma série nomeada" + }, + "category_sweeper": { + "name": "Varredor da Categoria", + "description": "Ganhe pelo menos uma conquista em todas as 4 categorias" + }, + "power_hour": { + "name": "Hora do poder", + "description": "Leia 75 ou mais páginas em uma única sessão de leitura" + }, + "speed_reader": { + "name": "Leitor de Velocidade", + "description": "Leia 100 ou mais páginas em um único dia" + }, + "old_friend": { + "name": "Velho Amigo", + "description": "Termine um livro que você estava relendo" + }, + "dnf_self_aware": { + "name": "Não é Você, sou eu", + "description": "Marcar um livro como abandonado" + }, + "first_verdict": { + "name": "Primeiro veredicto", + "description": "Avalie o seu primeiro livro" + }, + "critic_1": { + "name": "Crítico Filhote", + "description": "Avalie 10 livros" + }, + "critic_2": { + "name": "Crítico Sazado", + "description": "Avalie 50 livros" + }, + "critic_3": { + "name": "Cítico Estimado", + "description": "Avalie 200 livros" + }, + "critic_4": { + "name": "Cítico Definitivo", + "description": "Avalie 500 livros" + }, + "standing_ovation": { + "name": "Óvação Permanente", + "description": "Dar um livro uma classificação 5 estrelas" + }, + "across_the_board": { + "name": "Todo o tabuleiro", + "description": "Usar todas as cinco estrelas pelo menos uma vez" + }, + "tough_crowd": { + "name": "Coroa Resistente", + "description": "Dê a 10 livros uma classificação de 2 estrelas ou menos" + }, + "wordsmith": { + "name": "Ferreiro", + "description": "Escreva uma nota com mais de 280 caracteres" + }, + "box_of_crayons": { + "name": "Caixa de Crânios", + "description": "Usar todas as 5 cores destacadas" + }, + "synced_up": { + "name": "Sincronizado", + "description": "Sincronizar o progresso da leitura de um dispositivo Kobo ou KOReader pela primeira vez" + }, + "full_orbit": { + "name": "Órbita Completa", + "description": "Log de leitura de três fontes diferentes" + }, + "two_worlds": { + "name": "Dois Mundos", + "description": "Leia o mesmo livro de duas ou mais fontes diferentes" + } + }, + "achievementCategories": { + "reading": "Lendo", + "library": "Biblioteca", + "exploration": "Exploração", + "dedication": "Dedicação", + "devices": "Dispositivos" + }, + "achievementSecret": { + "name": "Conquista Secreta", + "description": "Continue lendo para revelar esta conquista." + }, + "monthlyChallenge": { + "short-read": { + "title": "Leitura rápida", + "description": "Termine um livro com menos de 200 páginas este mês" + }, + "genre-explorer": { + "title": "Explorador de gênero", + "description": "Leia um livro em um gênero novo para você este mês" + }, + "finish-oldest": { + "title": "Limpar o backlog", + "description": "Termine seu antigo livro em progresso" + }, + "streak-builder": { + "title": "Construtor de Sequência", + "description": "Ler por 5 dias consecutivos este mês" + }, + "new-author": { + "title": "Nova voz", + "description": "Leia um livro por um autor novo para você este mês" + }, + "page-milestone": { + "title": "Vira-Páginas", + "description": "Leia 500 páginas este mês" + } + } } } diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index 5e23857e9..10f8c858e 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -1,10 +1,10 @@ { "common": { - "resetSortAria": "Сбросить сортировку по умолчанию", + "resetSortAria": "Восстановить сортировку по умолчанию", "save": "Сохранить", "cancel": "Отмена", "delete": "Удалить", - "edit": "Редактирование", + "edit": "Редактировать", "close": "Закрыть", "confirm": "Подтвердить", "loading": "Загрузка...", @@ -51,34 +51,34 @@ "completion": "Агрегированные книги запущены и завершены", "formats": "Распределение форматов", "genres": "Широкое распределение жанра", - "trend": "Агрегированное чтение тренда", - "books": "Текущие, недавние и самые читаемые названия книг", + "trend": "Агрегированные тренды чтения", + "books": "Текущие, недавние и самые читаемые книги", "authors": "Топ авторов", - "series": "Топ серии", - "narrators": "Топ повествований" + "series": "Топ серий", + "narrators": "Топ рассказчиков" }, "confirm": { "shareTitle": "Включить {level}?", "shareDescription": "Администраторы с правами доступа смогут увидеть следующую информацию.", - "stopTitle": "Прекратить обмен соображениями чтения?", + "stopTitle": "Прекратить делиться мыслями о прочитанном?", "stopDescription": "Доступ администратора будет заблокирован немедленно. Существующие записи доступа остаются в вашей истории.", "recordedNotice": "Каждый профиль администратора записан и отображается в истории доступа." }, "preview": { "title": "Предпросмотр вашего общего профиля", - "description": "Смотрите информацию, доступную в настоящее время авторизованным администраторам.", + "description": "Посмотреть информацию, доступную сейчас авторизованным администраторам.", "action": "Загрузить предпросмотр", "readingTime": "Время чтения", "activeDays": "Активные дни", - "started": "Книги начались", - "completed": "Книги завершены", - "topBooks": "Лучшие книги" + "started": "Книг начато", + "completed": "Книг завершено", + "topBooks": "Топ книг" }, "history": { "title": "История доступа к профилю", - "description": "Недавние администраторы в вашем профиле общего чтения.", - "empty": "Ни один из администраторов не просмотрел ваш профиль общего чтения.", - "paginationLabel": "Страница истории доступа к профилю" + "description": "Недавние просмотры вашего общего профиля чтения администраторами.", + "empty": "Ни один из администраторов не смотрел ваш общий профиль чтения.", + "paginationLabel": "Страницы истории доступа к профилю" }, "durationMinutes": "{count, plural, one {# минута} few {# минут} many {# минут} other {# минут}}", "durationHours": "{count, plural, one {# час} few {# часов} many {# часов} other {# часов}}", @@ -93,184 +93,184 @@ "language": { "title": "Язык", "description": "Выберите язык, используемый в интерфейсе.", - "label": "Язык интерфейса", + "label": "Язык", "loadError": "Не удалось загрузить выбранный язык", "saveError": "Не удалось сохранить настройки языка" }, "pageTitle": "Отображение", - "pageSubtitle": "Контролируйте темы, обложки, макет и как отображается ваша библиотека.", + "pageSubtitle": "Управление темами, обложками, макетами и тем как выглядит ваша библиотека.", "mobileSummary": "Тема: {theme} • Действие: {accent} • фон: {background}", "themeMode": { "light": "Светлая", "dark": "Тёмная", - "system": "Система" + "system": "Системная" }, "theme": { "title": "Тема", "style": { "label": "Стиль", - "hint": "Общий внешний вид приложения, режим, акцент, углы и фон сохраняют свои настройки.", + "hint": "Общий внешний вид приложения. Режим, акцент, углы и фон сохраняют свои настройки.", "bookorbit": { "label": "BookOrbit", "description": "Тонкие поверхности, стеклянные панели и засечки." }, "nostalgia": { - "label": "Nostalgia", - "description": "Нейтральные земли, тип системы, плоские панели и верхний свет." + "label": "Ностальгия", + "description": "Нейтральные тона, системные типы, плоские панели и свечение сверху." } }, "colorScheme": { "label": "Цветовая схема", - "hint": "Легкий или темный интерфейс" + "hint": "Светлый или темный интерфейс" }, "surfacePalette": { "label": "Поверхность", - "hint": "Нейтральная земля за панелями и картами.", + "hint": "Нейтральная область за панелями и картами.", "palettes": { "onyx": "Оникс", "carbon": "Карбон", "neutral": "Нейтральный", "zinc": "Цинк", - "iron": "Железный", - "steel": "Стальной", - "ash": "Пепельный", - "smoke": "Дымчатый", - "charcoal": "Угольный", - "slate": "Спустя", + "iron": "Железо", + "steel": "Сталь", + "ash": "Пепел", + "smoke": "Дым", + "charcoal": "Уголь", + "slate": "Сланец", "midnight-blue": "Полночно-Синий", - "ocean": "Морской", + "ocean": "Океан", "pine": "Сосна", - "olive": "Оливковый", + "olive": "Оливки", "stone": "Камень", "sepia": "Сепия", - "crimson": "Багровый", - "plum": "Сливовый" + "crimson": "Багрянец", + "plum": "Слива" } }, "topGlow": { "label": "Верхнее свечение", - "hint": "Как далеко свечение акцента достигает низа страницы. Сдвиньте влево, чтобы выключить его.", + "hint": "Насколько далеко по странице распространяется свечение акцента. Сдвиньте влево до упора, чтобы отключить его.", "value": "{value}%", - "off": "Откл." + "off": "Выкл" }, "accents": { "grey": "Серый", - "scarlet": "Scarlet", - "vermilion": "Vermilion", + "scarlet": "Скарлет", + "vermilion": "Киноварь", "rose": "Роза", "copper": "Медь", - "orange": "Оранжевый", - "chartreuse": "Chartreuse", + "orange": "Апельсин", + "chartreuse": "Шартрез", "marigold": "Королева", - "wasabi": "Wasabi", - "amber": "Янтарный", + "wasabi": "Васаби", + "amber": "Янтарь", "malachite": "Малахит", "yellow": "Жёлтый", - "viridian": "Viridian", - "turquoise": "Turquoise", - "lime": "Лаймовый", - "green": "Зелёный", - "acid-green": "Кисло-зеленый", + "viridian": "Виридиан", + "turquoise": "Бирюза", + "lime": "Лайм", + "green": "Зелень", + "acid-green": "Кислотная зелень", "emerald": "Изумруд", "teal": "Бирюзовый", "electric-blue": "Электрический синий", - "cyan": "Бирюзовый", - "jade": "Jade", - "ultramarine": "Ultramarine", + "cyan": "Циан", + "jade": "Нефрит", + "ultramarine": "Ультрамарин", "iris": "Ирис", - "purple": "Фиолетовый", + "purple": "Пурпур", "blue": "Синий", - "indigo": "Indigo", - "violet": "Фиолетовая", - "amethyst": "Amethyst", - "fuchsia": "Fuchsia", + "indigo": "Индиго", + "violet": "Фиолетовый", + "amethyst": "Аметист", + "fuchsia": "Фуксия", "raspberry": "Малина", "pink": "Розовый", "white": "Белый", - "rosewater": "Rosewater", + "rosewater": "Розовая вода", "salmon": "Лосось", - "coral": "Корал", + "coral": "Коралл", "sand": "Песок", "peach": "Персик", "pear": "Груша", - "flax": "Влех", - "sprout": "Sprout", + "flax": "Лён", + "sprout": "Побег", "butter": "Масло", "aloe": "Алоэ", "lemon": "Лимон", "foam": "Пена", - "aqua": "Акваа", - "celadon": "Celadon", - "sage": "Мудрец", - "pistachio": "Pistachio", + "aqua": "Аква", + "celadon": "Селадон", + "sage": "Шалфей", + "pistachio": "Фисташка", "mint": "Мята", - "seafoam": "Морской", + "seafoam": "Морская пена", "baby-blue": "Детский синий", - "powder": "Порошок", + "powder": "Пудра", "sea-glass": "Морское Стекло", - "bluebell": "Черный колокол", - "cornflower": "Кукуруза", - "thistle": "Тонкий", - "periwinkle": "Periwinkle", - "wisteria": "Wisteria", - "lavender": "Lavender", - "mauve": "Mauve", - "orchid": "Orchid", + "bluebell": "Колокольчик", + "cornflower": "Василек", + "thistle": "Чертополох", + "periwinkle": "Барвинок", + "wisteria": "Глициния", + "lavender": "Лаванда", + "mauve": "Мальва", + "orchid": "Орхидея", "rose-quartz": "Розовый кварц", - "blush": "Смешать" + "blush": "Румянец" }, "accentColor": { "label": "Цвет акцента", "hint": "Основные элементы управления и интерактивные элементы" }, "cornerRadius": { - "label": "Corner radius", - "hint": "Округление карт и элементов интерфейса", + "label": "Радиус углов", + "hint": "Скругление карточек и элементов интерфейса", "options": { "sharp": "Острый", - "default": "Стандартный", - "rounded": "Скруглённый", - "pill": "Pill" + "default": "По умолчанию", + "rounded": "Круглый", + "pill": "Овальный" } }, "surfaceBrightness": { "label": "Яркость поверхности", - "hint": "Светлые темные поверхности", - "reset": "Reset" + "hint": "Осветлить поверхности в темном режиме", + "reset": "Сброс" }, "libraryBackground": { "title": "Фон библиотеки", "pattern": { "label": "Шаблон фона", - "hint": "Шаблон показан за книжной сеткой" + "hint": "Шаблон, отображаемый за книжной полкой" } }, "backgroundGroups": { - "fundamental": "Основополагающий", + "fundamental": "Основа", "structural": "Структура", - "ambient": "Окружающий", - "refractive": "Рефракция" + "ambient": "Окружение", + "refractive": "Преломление" }, "syncSaveFailed": "Не удалось сохранить настройки темы" }, "storage": { "title": "Где сохранить настройки внешнего вида", - "active": "Активный", + "active": "Активно", "notAvailable": "Недоступно", "device": { "title": "Только это устройство", - "description": "Настройки останутся в вашем браузере. Лучше всего, если вы хотите другой вид на различные устройства." + "description": "Настройки останутся в вашем браузере. Лучший выбор, если вы хотите разные варианты вида на разных устройствах." }, "account": { "title": "Мой аккаунт", - "description": "Настройки сохранены в вашей учетной записи. Лучше, если вы хотите один и тот же внешний вид на каждом устройстве." + "description": "Настройки сохранены в вашей учетной записи. Лучший выбор, если вы хотите, чтобы на разных устройствах все выглядело одинаково." }, "toasts": { "synced": "Настройки будут синхронизированы", "local": "Настройки останутся на этом устройстве" }, "errors": { - "demoRestricted": "Не удалось изменить режим хранилища тем для демо-аккаунта", + "demoRestricted": "В демонстрационном аккаунте нельзя менять режим хранения тем", "update": "Не удалось обновить режим хранения", "generic": "Произошла ошибка при обновлении режима хранения" } @@ -278,35 +278,35 @@ "bookCovers": { "title": "Обложки книг", "coverSearch": { - "label": "Поставщик поиска по умолчанию для обложки", - "hint": "Выберите источник, выбранный при открытии обложки онлайн. Сохранено в вашей учетной записи, так что это применимо на каждом устройстве", - "loadError": "Не удалось загрузить поставщик поиска обложки по умолчанию", - "saveError": "Не удалось сохранить поставщик поиска обложки по умолчанию" + "label": "Провайдер обложек по умолчанию", + "hint": "Выберите источник, по умолчанию для поиска обложек онлайн. Он будет сохранен в вашей учетной записи, и применится на каждом устройстве", + "loadError": "Не удалось загрузить провайдера обложек по умолчанию", + "saveError": "Не удалось сохранить провайдера обложек по умолчанию" }, "placeholderStyle": { - "title": "Стиль заполнителя", + "title": "Стиль плейсхолдера", "hint": "Книги без обложки рисуются в этом стиле.", "options": { - "bauhaus": "Bauhaus", + "bauhaus": "Баухаус", "constructivist": "Конструктивист", - "memphis": "Memphis", - "clothbound": "Привязанность к одежде", + "memphis": "Мемфис", + "clothbound": "Тканевый переплет", "poster": "Плакат", - "aurora": "Aurora", + "aurora": "Аврора", "vista": "Виста", - "marbled": "Чудо", - "paperback": "Отзыв" + "marbled": "Мрамор", + "paperback": "Мягкая обложка" } }, "displayMode": { "title": "Режим отображения обложки", - "hint": "Управляет тем, насколько настоящие крышки помещаются внутри ячейки книги, когда соотношения сторон различаются", + "hint": "Определяет, как настоящие обложки помещаются в ячейки книг при разных соотношениях сторон", "blurredFit": { - "label": "Размытая подставка", + "label": "Вписать с размытостью", "hint": "Показать полную обложку с размытой заливкой позади" }, "fillCrop": { - "label": "Заполнить карту", + "label": "Заполнить карточку", "hint": "Заполнять всю ячейку, обрезая края, когда соотношения сторон различаются" }, "naturalBottom": { @@ -315,56 +315,56 @@ } }, "spine": { - "title": "Наложение позвоночника", - "hint": "Добавляет стилизованный позвонок и глосс эффект для покрытия карт", + "title": "Наложение на корешок книги", + "hint": "Добавляет стилизованный корешок и эффект глянца на карточки", "off": { "label": "Выкл", - "hint": "Нет эффекта позвоночника/глосс на крышках" + "hint": "Нет эффекта корешка/глянца на обложках" }, "subtle": { - "label": "Тяжелая", - "hint": "Светлый позвоночник, ближе к внешнему виду по умолчанию" + "label": "Легкий", + "hint": "Лёгкий корешок и глянец, ближе к стандартному виду" }, "strong": { - "label": "Крепкий", - "hint": "Более выраженное лечение позвоночника и глосса" + "label": "Сильный", + "hint": "Более выраженный корешок и глянец" } }, "showSpineOnComics": { - "label": "Показать позвоночник на комиксах", - "hint": "Применить эффект позвоночника и глосса к обложкам комиксов (cbz, cbr, cb7)" + "label": "Отображать корешок на комиксах", + "hint": "Применять эффект корешка и глянца на обложках комиксов (cbz, cbr, cb7)" }, "detailCoverTint": { - "title": "Цвет обложки для деталей книги", - "hint": "Цвет фона, взятый из обложки и заголовка на странице с подробностями книги", + "title": "Оттенок обложки для сведений о книге", + "hint": "Создаёт мягкое затухание цвета, взятого с обложки, позади иллюстрации и названия на странице сведений о книге", "off": { - "label": "Откл.", - "hint": "Простой фон карты" + "label": "Выкл", + "hint": "Просто фон карточки" }, "single": { - "label": "Одноцветный", - "hint": "Только доминирующий цвет обложки" + "label": "Один цвет", + "hint": "Только основной цвет обложки" }, "duotone": { - "label": "Двухцветные", - "hint": "Добавляет акцентный цвет обложки, когда она имеет выраженный" + "label": "Два цвета", + "hint": "Добавляет акцентный цвет обложки, если у неё есть основной" } }, "shadow": { - "title": "Сила тени обложки", - "hint": "Регулирует глубину в обложках между сетками, списками, таблицами и панелями инструментов", + "title": "Глубина тени обложки", + "hint": "Управляет глубиной тени под обложками в сетке, списке, таблице и на миниатюрах панели", "default": { "label": "По умолчанию", "hint": "Текущая высота и глубина" }, "strong": { - "label": "Крепкий", - "hint": "Тень с темной, похожей на полку, под крышками" + "label": "Глубокая", + "hint": "Более тяжёлая тень под обложками, похожая на полку" } }, "overlays": { - "title": "Наслоения карт", - "hint": "Выберите метаданные, показанные непосредственно на карточках книг", + "title": "Информация на карточках", + "hint": "Выберите метаданные, отображаемые на самих карточках книг", "progressBar": { "label": "Индикатор прогресса", "hint": "Тонкая цветная линия вдоль нижнего края" @@ -375,7 +375,7 @@ }, "rating": { "label": "Рейтинг", - "hint": "Индикатор звезды в левом нижнем углу" + "hint": "Индикатор рейтинга в виде звезд в левом нижнем углу" }, "readStatus": { "label": "Статус чтения", @@ -383,115 +383,115 @@ }, "seriesPosition": { "label": "Номер серии", - "hint": "Значок, показывающий позицию книги в линейке справа вверху (напр., #3, #1.5)" + "hint": "Значок, показывающий номер книги в серии справа вверху (например, #3, #1.5)" }, "lockStatus": { - "label": "Заблокировать статус", - "hint": "Значок блокировки метаданных вверху справа - оранжевый при блокировке, зеленый при разблокировке" + "label": "Статус блокировки", + "hint": "Значок блокировки метаданных вверху справа - оранжевый при блокировке, зелёный при отсутствии блокировки" } } }, "layout": { "coverSize": "Размер обложки", - "gridSpacing": "Интервал сетки", + "gridSpacing": "Шаг сетки", "gridLayout": { - "title": "Разметка сетки библиотеки" + "title": "Макет сетки библиотеки" }, "coverSizeBehavior": { - "label": "Поведение размера обложки", - "hint": "Управление размерами портрета/квадратов и интервалом в сетке являются общими для всех видов или для каждого вида", - "perViewHint": "Режим для просмотра: настраивайте размер обложки и интервал в каждой панели отображения.", - "syncAll": "Синхронизировать все виды", - "perView": "Размеры для просмотра" + "label": "Поведение размера обложек", + "hint": "Определяет, общие ли размеры портретных/квадратных обложек и интервалы сетки для всех представлений или индивидуальные для каждого", + "perViewHint": "Режим отдельных представлений: размер обложек и интервалы настраиваются в панели отображения каждого представления.", + "syncAll": "Синхронизировать все представления", + "perView": "Размеры на каждое представление" }, "portraitCoverSize": { "label": "Размер портретной обложки", - "hint": "Используется для портретных библиотек и просмотров" + "hint": "Используется для портретных библиотек и представлений" }, "squareCoverSize": { - "label": "Размер квадратного обложки", - "hint": "Используется для квадратных библиотек и просмотров" + "label": "Размер квадратной обложки", + "hint": "Используется для квадратных библиотек и представлений" }, "portraitGridSpacing": { - "label": "Портретный интервал в сетке", - "hint": "Разрыв между портретными крышками" + "label": "Шаг портретной сетки", + "hint": "Зазор между портретными обложками" }, "squareGridSpacing": { - "label": "Интервал квадратной сетки", - "hint": "Разрыв между квадратными крышками" + "label": "Шаг квадратной сетки", + "hint": "Зазор между квадратными обложками" }, "cardInfoMode": { - "label": "Режим информации о карте", - "hint": "Где показывать название книги и автора на карточках сетки", + "label": "Режим отображения информации на карточке", + "hint": "Где отображать название книги и автора на карточках сетки", "onHover": "При наведении мыши", "belowCover": "Ниже обложки", "off": "Выкл" }, "primaryCardLabel": { - "label": "Метка основной карты", - "hint": "Текст, показанный под обложкой каждой книги (первая строка)" + "label": "Основной текст карточки", + "hint": "Текст, отображаемый под обложкой каждой книги (первая строка)" }, "secondaryCardLabel": { - "label": "Метка вторичной карты", - "hint": "Дополнительный текст под основной меткой (вторая строка)" + "label": "Дополнительный текст карточки", + "hint": "Дополнительный текст под основным (вторая строка)" }, "labelField": { - "hidden": "Hidden", + "hidden": "Скрыто", "bookTitle": "Название книги", "seriesTitle": "Название серии", - "seriesTitlePosition": "Название серии + позиция", + "seriesTitlePosition": "Название серии + номер", "author": "Автор" }, "seriesDisplay": { "title": "Отображение серии", "collapsedCover": { - "label": "Обложка серии свернута", - "hint": "Выберите, какая обложка будет показана, когда ряды свернуты в сетку книги" + "label": "Обложка свернутой серии", + "hint": "Выбор обложки, отображаемой при сворачивании серии в сетке книг" }, "stack": "Стек", "mosaic": "Мозаика", - "first": "Первое", - "latest": "Последние", - "firstUnread": "Первый непрочитанный" + "first": "Первая", + "latest": "Последняя", + "firstUnread": "Первая непрочитанная" }, "authorGrid": { - "title": "Автор сетки", + "title": "Сетка авторов", "coverSize": { "label": "Размер обложки", - "hint": "Ширина обложек автора в сетке" + "hint": "Ширина обложек в сетке авторов" }, "coverShape": { "label": "Форма обложки", - "hint": "Форма авторских обложек в сетке" + "hint": "Форма обложек в сетке авторов" }, "circle": "Круг", "square": "Квадрат" }, "listTableViews": { - "title": "Список и Просмотры таблиц" + "title": "Представления списка и таблицы" }, "zebraStriping": { - "label": "Резьба из зебры", - "hint": "Альтернативные цвета для более легкого сканирования" + "label": "Чередование цветов", + "hint": "Альтернативные цвета строк для более легкого восприятия" } }, "behavior": { - "title": "Действие библиотеки", + "title": "Поведение библиотеки", "thumbnailClicks": { - "label": "Thumbnail clicks", - "hint": "Выберите, что происходит при открытии книги из сетки и списка", - "readFirst": "Сначала прочитать", - "readFirstHint": "Открыть считыватель при наличии файла для чтения", + "label": "Клики по значкам", + "hint": "Выберите действие, выполняемое при открытии книги из сетки и списка", + "readFirst": "Прочитать", + "readFirstHint": "Открыть читалку при наличии файла для чтения", "openDetails": "Открыть детали", - "openDetailsHint": "Перейти на страницу деталей книги из сетки и списка эскизов" + "openDetailsHint": "Перейти на страницу деталей книги из сетки и списка значков" }, "filterPreview": { "label": "Показывать предварительный просмотр фильтра по умолчанию", - "hint": "Развернуть активный фильтр и сводку сортировки при открытии smartScope" + "hint": "Развернуть активный фильтр и сводку сортировки при открытии умного списка" }, "collapseSeries": { - "label": "Свернуть по умолчанию", - "hint": "Группируйте книги одной и той же серии в одну карту в библиотеке и коллекциях" + "label": "Сворачивать серии по умолчанию", + "hint": "Группировать книги одной и той же серии в одну карточку в библиотеке и коллекциях" }, "bookRequests": { "label": "Показать запросы на книгу", @@ -502,46 +502,46 @@ "icons": { "title": "Пользовательские иконки", "uploadIcons": "Загрузить иконки", - "uploadedCount": "{count, plural, =0 {иконки не загружены} one {# иконка загружена} few {# иконки загружены} many {# иконки загружены} other {# иконки загружены}}", - "searchPlaceholder": "Искать значки", + "uploadedCount": "{count, plural, =0 {нет загруженных иконок} one {# иконка загружена} few {# иконки загружены} many {# иконок загружено} other {# иконок загружено}}", + "searchPlaceholder": "Поиск иконок", "sort": { - "newest": "Новейшие", - "name": "Наименование" + "newest": "По новизне", + "name": "По имени" }, - "selectedCount": "{count, plural, one {# выбрано} few {# выбрано} many {# выбрано} other {# выбрано}}", + "selectedCount": "{count, plural, one {# выбрана} few {# выбраны} many {# выбрано} other {# выбрано}}", "clear": "Очистить", "deleteSelected": "Удалить выбранные", "loading": "Загрузка иконок...", - "emptySearch": "Нет значков, соответствующих вашему запросу.", + "emptySearch": "Нет иконок, соответствующих вашему запросу.", "emptyNoIcons": "Пользовательские иконки еще не загружены.", - "namePlaceholder": "Наименование", + "namePlaceholder": "Имя", "checkingUsage": "Проверка использования...", "usedBy": "Используется {count}", "notUsedYet": "Пока не используется", "rename": "Переименовать", "replace": "Заменить", "usage": { - "libraries": "{count, plural, =0 {нет библиотек} one {# библиотека} few {# библиотеки} many {# библиотеки} other {# библиотеки}}", - "collections": "{count, plural, =0 {нет коллекций} one {# коллекция} few {# коллекций} many {# коллекций} other {# коллекций}}", - "smartScopes": "{count, plural, =0 {нет умных списков} one {# умный список} few {# умных списков} many {# умных списков} other {# умные списки}}" + "libraries": "{count, plural, =0 {нет библиотек} one {# библиотека} few {# библиотеки} many {# библиотек} other {# библиотек}}", + "collections": "{count, plural, =0 {нет коллекций} one {# коллекция} few {# коллекции} many {# коллекций} other {# коллекций}}", + "smartScopes": "{count, plural, =0 {нет умных списков} one {# умный список} few {# умных списка} many {# умных списков} other {# умных списков}}" }, "confirm": { - "deleteOne": "Удалить \"{name}\"? Существующие приложения вернутся к значку по умолчанию.", - "deleteMany": "{count, plural, =0 {Удалите без значков?} one {Удалите # значок? Существующие приложения вернется к значку по умолчанию.} few {Удалить # значков? Существующие приложения вернутся к значку по умолчанию.} many {Удалить # значков? Существующие приложения вернутся к значку по умолчанию.} other {Удалить # значков? Существующие приложения вернутся к значку по умолчанию.}}" + "deleteOne": "Удалить \"{name}\"? В местах использования вернется иконка по умолчанию.", + "deleteMany": "{count, plural, =0 {Не удалять иконки?} one {Удалить # иконку? В местах использования вернется иконка по умолчанию.} few {Удалить # иконки? В местах использования вернется иконка по умолчанию.} many {Удалить # иконок? В местах использования вернется иконка по умолчанию.} other {Удалить # иконок? В местах использования вернется иконка по умолчанию.}}" }, "toasts": { - "saved": "Значок сохранен", - "updated": "Значок обновлен", - "deleted": "Значок удален", - "bulkDeleted": "{count, plural, =0 {Удалено никаких иконок} one {Удалена # иконка} few {Удалено # иконок} many {Удалено # иконок} other {Удалено # иконок}}", - "bulkDeletePartial": "Удаление {deleted}, {failed} не удалось" + "saved": "Иконка сохранена", + "updated": "Иконка обновлена", + "deleted": "Иконка удалена", + "bulkDeleted": "{count, plural, =0 {Иконки не удалены} one {Удалена # иконка} few {Удалены # иконки} many {Удалено # иконок} other {Удалено # иконок}}", + "bulkDeletePartial": "{deleted} удалено, {failed} не удалось удалить" }, "errors": { "load": "Не удалось загрузить иконки", - "save": "Не удалось сохранить значок", - "replace": "Не удалось заменить значок", - "delete": "Не удалось удалить значок", - "bulkDelete": "Не удалось удалить значки" + "save": "Не удалось сохранить иконку", + "replace": "Не удалось заменить иконку", + "delete": "Не удалось удалить иконку", + "bulkDelete": "Не удалось удалить иконки" } }, "tabs": { @@ -554,7 +554,7 @@ } }, "account": { - "title": "Аккаунт", + "title": "Учетная запись", "subtitle": "Управление настройками личного профиля.", "subtitleAll": "Управление настройками профиля и уведомлений.", "tabs": { @@ -564,12 +564,12 @@ "restrictions": "Ограничения" }, "demoRestricted": { - "cannotEdit": "Не удалось изменить настройки учетной записи Demo-restricted", - "notice": "Доступ к демо-аккаунту: редактирование профиля, пароля, аватара и связанных идентификаторов отключен." + "cannotEdit": "Демо-аккаунту нельзя редактировать настройки аккаунта", + "notice": "Демо-аккаунт: редактирование профиля, пароля, аватара и связанных идентификаторов отключено." }, "feedback": { "unsavedChanges": "Несохраненные изменения", - "discard": "Сбросить" + "discard": "Отклонить" }, "profile": { "securityHeading": "Профиль и безопасность", @@ -580,28 +580,28 @@ "save": "Сохранить профиль", "saving": "Сохранение...", "changePassword": "Изменить пароль", - "accountType": "Тип счета:", + "accountType": "Тип учетной записи:", "accountTypeOidc": "OIDC / ССО", - "accountTypeShared": "Общий доступ", - "accountTypeLocal": "Локальный", - "nameRequired": "Требуется имя", + "accountTypeShared": "Общая", + "accountTypeLocal": "Локальная", + "nameRequired": "Имя должно быть указано", "updateFailed": "Не удалось обновить профиль", "updated": "Профиль обновлен", "usernameHint": "Ваше имя пользователя не может быть изменено.", - "passwordHint": "Измените пароль, который вы используете для входа.", + "passwordHint": "Изменение пароля, который вы используете для входа.", "passwordHintOidc": "Ваш пароль управляется вашим провайдером идентификации.", - "passwordHintShared": "Доступ к аккаунтам осуществляется через волшебную ссылку и не имеет пароля." + "passwordHintShared": "Общие учетные записи входят через волшебную ссылку и не имеют пароля." }, "readingPreferences": { "title": "Настройки чтения", - "timezoneHint": "Часовой пояс используется для достижения с учетом времени таких ранних птиц и всех ночей.", - "timezone": "Timezone", + "timezoneHint": "Часовой пояс используется для получения времязависимых достижений, наподобие \"Ранней пташки\" или \"Ночной совы\".", + "timezone": "Часовой пояс", "save": "Сохранить настройки", "enableAchievements": "Включить достижения", - "enableAchievementsHint": "Отслеживайте прогресс достижений и показывайте интерфейс, связанный с достижениями. Управляйте уведомлениями отдельно в уведомлениях.", + "enableAchievementsHint": "Отслеживать прогресс достижений и отображать интерфейс, связанный с достижениями. Управление уведомлениями о достижениях выполняется отдельно, в настройках уведомлений.", "achievementsEnabled": "Достижения включены", "achievementsDisabled": "Достижения отключены", - "achievementsSaveFailed": "Не удалось обновить предпочтение достижения" + "achievementsSaveFailed": "Не удалось обновить настройку достижений" }, "preferences": { "saveFailed": "Не удалось сохранить настройки", @@ -610,9 +610,9 @@ "avatar": { "title": "Изображение профиля", "unknownUser": "Неизвестный пользователь", - "formatHint": "PNG/JPEG/WEBP до {size} МБ", + "formatHint": "PNG/JPEG/WEBP не более {size} МБ", "upload": "Загрузить изображение", - "replace": "Заменить картинку", + "replace": "Заменить изображение", "uploading": "Загрузка...", "remove": "Удалить изображение", "removing": "Удаление...", @@ -621,58 +621,58 @@ "removed": "Изображение профиля удалено", "removeFailed": "Не удалось удалить изображение профиля", "removeConfirm": { - "title": "Удалить аватару?", + "title": "Удалить изображение профиля?", "description": "Ваш аватар будет удален и заменен инициалами.", "confirm": "Удалить" } }, "connectedAccounts": { "title": "Подключенные аккаунты", - "unlink": "Отвязать", + "unlink": "Отсоединить", "unlinking": "Отсоединение...", - "linkAdditional": "Связать дополнительных провайдеров:", - "linkProvider": "Ссылка {provider}", + "linkAdditional": "Привязать дополнительных провайдеров:", + "linkProvider": "Привязать {provider}", "redirecting": "Перенаправление...", - "noneConfigured": "Не настроены OIDC провайдеры. Попросите администратора настроить SSO.", - "linkStateFailed": "Не удалось сгенерировать состояние ссылки", - "startLinkFailed": "Не удалось запустить OIDC ссылку", - "unlinkFailed": "Не удалось отвязать", - "unlinked": "Личность удалена", - "unlinkIdentityFailed": "Не удалось отвязать личность", + "noneConfigured": "OIDC провайдеры не настроены. Попросите администратора настроить SSO.", + "linkStateFailed": "Не удалось создать состояние привязки", + "startLinkFailed": "Не удалось запустить привязку OIDC", + "unlinkFailed": "Не удалось отсоединить", + "unlinked": "Идентификация удалена", + "unlinkIdentityFailed": "Не удалось отвязать идентификацию", "unlinkDialog": { - "title": "Отменить привязку {provider}?", - "description": "Введите пароль для подтверждения. Вы больше не сможете войти с этим провайдером.", + "title": "Отвязать идентификацию {provider}?", + "description": "Введите пароль для подтверждения. Вы больше не сможете войти через этого провайдера.", "currentPassword": "Текущий пароль" }, - "description": "Войти через внешнего поставщика идентификации, связанного с этой учетной записью.", - "unlinkAria": "Отменить привязку {provider}" + "description": "Вход через внешнего идентификационного провайдера, связанного с этой учетной записью.", + "unlinkAria": "Отсоединить {provider}" }, "tour": { "title": "Тур с гидом", - "description": "Повторите прогулку, которая освещает основные особенности приложения.", + "description": "Повторить тур, который подсвечивает основные особенности приложения.", "action": "Пройти тур снова" }, "restrictions": { "none": { "title": "Нет ограничений по контенту", - "description": "Ваш аккаунт имеет полный доступ ко всему контенту в назначенных вами библиотеках." + "description": "Ваша учетная запись имеет полный доступ ко всему содержимому в назначенных вами библиотеках." }, - "banner": "У вашей учетной записи есть ограничения на содержание, применяемые администратором. Некоторые книги могут не быть видны вам.", + "banner": "У вашей учетной записи есть ограничения на содержимое, наложенные администратором. Некоторые книги могут быть не видны.", "allowedTags": { "title": "Разрешенные теги", - "description": "Вам показаны только книги, в которых есть хотя бы один из этих тегов." + "description": "Вам видны только те книги, в которых есть хотя бы один из этих тегов." }, "blockedTags": { - "title": "Блокированные теги", + "title": "Заблокированные теги", "description": "Книги с этими тегами скрыты от вас." }, "allowedGenres": { "title": "Разрешенные жанры", - "description": "Вам показаны только книги, в которых есть хотя бы один из этих жанров." + "description": "Вам видны только те книги, которые относятся хотя бы к одному из этих жанров." }, "blockedGenres": { "title": "Заблокированные жанры", - "description": "Книги с этими жанрами скрыты от вас." + "description": "Книги в этих жанрах скрыты от вас." } }, "groups": { @@ -683,128 +683,128 @@ }, "magicLinks": { "title": "Волшебные ссылки", - "subtitle": "Создать общие ссылки для общих аккаунтов.", + "subtitle": "Создание ссылок для входа для общих аккаунтов.", "createLink": "Создать ссылку", - "noSharedAccounts": "Не найдено общих аккаунтов", - "noSharedAccountsHint": "Создайте общий аккаунт из {usersPage} для генерации ссылок.", + "noSharedAccounts": "Общие аккаунты не найдены", + "noSharedAccountsHint": "Сперва создайте общий аккаунт из {usersPage} для создания волшебных ссылок.", "activeLinks": "Активные ссылки", "inactiveLinks": "Неактивные ссылки", - "paused": "Пауза", + "paused": "Приостановлена", "deletedUser": "Удаленный пользователь", - "expiredPrefix": "Истёк ", - "never": "Нет записей активности", + "expiredPrefix": "Истекла ", + "never": "Нет записей об активности", "noExpiry": "Нет срока действия", - "expired": "Истёк", + "expired": "Истекла", "expiresOn": "Истекает {date}", "revokedOn": "Отменена {date}", - "expiredOn": "Истек срок действия {date}", - "usesCount": "{count, plural, =0 {Не использует} one {Один из них используется} few {# использует} many {# использует} other {# использует}}", + "expiredOn": "Истекла {date}", + "usesCount": "{count, plural, =0 {не используется} one {одно использование} few {# использования} many {# использований} other {# использований}}", "copied": "Скопировано!", - "copyLink": "Копировать ссылку", - "pause": "Пауза", + "copyLink": "Скопировать ссылку", + "pause": "Приостановить", "resume": "Возобновить", - "revoke": "Revoke", - "revoking": "Отмена...", - "emptyState": "Пока нет никаких магических ссылок. Нажмите \"{action}\", чтобы создать URL-адрес для совместного входа.", + "revoke": "Отозвать", + "revoking": "Отзыв ссылки...", + "emptyState": "Волшебные ссылки пока не созданы. Нажмите \"{action}\", чтобы создать ссылку для общего входа.", "columns": { - "label": "Метка", - "account": "Аккаунт", - "createdBy": "Создано", + "label": "Название", + "account": "Учетная запись", + "createdBy": "Создана", "expires": "Истекает", - "uses": "Использовано", - "created": "Создано", + "uses": "Использований", + "created": "Создана", "status": "Статус", - "totalUses": "Всего применений", + "totalUses": "Всего использований", "actions": "Действия" }, "createDialog": { - "title": "Создать магическую ссылку", - "description": "Генерировать URL-адрес общего логина для общей учетной записи.", + "title": "Создать волшебную ссылку", + "description": "Создать адрес для общего входа в систему для общей учетной записи.", "sharedAccount": "Общий аккаунт", "selectAccount": "Выберите общий аккаунт", - "label": "Метка", - "labelPlaceholder": "напр. Demo link для конференции", + "label": "Название", + "labelPlaceholder": "например, Демонстрационная ссылка для конференции", "expiresAt": "Истекает в", "optional": "(опционально)", "create": "Создать", "creating": "Создание..." }, "revokeDialog": { - "title": "Отозвать магическую ссылку?", - "description": "Это немедленно удалит ссылку и прекратит все активные сессии привязанной учетной записи." + "title": "Отозвать волшебную ссылку?", + "description": "Это незамедлительно деактивирует ссылку и завершит все активные сессии привязанной учетной записи." }, "errors": { "create": "Не удалось создать", - "copy": "Не удалось скопировать ссылку", - "update": "Не удалось обновить магическую ссылку", + "copy": "Не удалось скопировать волшебную ссылку", + "update": "Не удалось обновить волшебную ссылку", "revoke": "Не удалось отозвать" }, "usersPage": "Страница пользователей", - "emptyTitle": "Пока нет никаких магических ссылок", - "emptyHint": "Нажмите \"{action}\", чтобы создать URL-адрес для совместного входа.", - "noActiveTitle": "Нет активных магических ссылок", - "noActiveHint": "Все сгенерированные магические ссылки для этой страницы истекли или были отозваны.", + "emptyTitle": "Волшебные ссылки пока не созданы", + "emptyHint": "Нажмите \"{action}\", чтобы создать адрес для совместного входа.", + "noActiveTitle": "Нет активных волшебных ссылок", + "noActiveHint": "Все сгенерированные волшебные ссылки для этой страницы истекли или были отозваны.", "copyLinkAria": "Скопировать ссылку для {label}", - "pauseAria": "Пауза {label}", + "pauseAria": "Приостановить {label}", "resumeAria": "Возобновить {label}", - "revokeAria": "Revoke {label}", - "lastUsedLabel": "Последнее использованное {date}" + "revokeAria": "Отозвать {label}", + "lastUsedLabel": "Последний раз использовалась {date}" }, "oidc": { "title": "OIDC / ССО", - "subtitle": "Управление поставщиками OpenID Connect для единого входа.", - "providers": "Поставщики", - "addProvider": "Добавить поставщика", + "subtitle": "Управление провайдерами OpenID Connect для единого входа.", + "providers": "Провайдеры", + "addProvider": "Добавить провайдера", "editProvider": "Изменить провайдера", "configureNew": "Настроить нового OIDC провайдера.", "editing": "Редактирование {slug}", - "enabled": "Включено", - "disabled": "Отключено", + "enabled": "Включен", + "disabled": "Отключен", "empty": { - "title": "Пока нет поставщиков", - "description": "Добавьте OIDC провайдера, чтобы включить одиночный вход для ваших пользователей." + "title": "Провайдеров еще нет", + "description": "Добавьте OIDC провайдера, чтобы включить единый вход для ваших пользователей." }, "form": { "status": "Статус", - "enableProvider": "Включить провайдер", - "enableProviderHint": "Показать этого провайдера на странице входа.", + "enableProvider": "Включить провайдера", + "enableProviderHint": "Отображать этого провайдера на странице входа.", "identity": "Идентификатор провайдера", - "slug": "Слаг", - "slugHint": "Уникальный идентификатор (строчные буквы, дефисы). Позже изменить невозможно.", - "displayName": "Показать имя", + "slug": "Slug", + "slugHint": "Уникальный идентификатор (строчные буквы, дефисы). Не моет быть изменен после создания.", + "displayName": "Отображать название", "displayNameHint": "Отображается на кнопке входа.", - "iconUrl": "URL значка", + "iconUrl": "Адрес иконки", "iconUrlHint": "Необязательный логотип, отображаемый рядом с кнопкой входа.", - "iconPreviewAlt": "предпросмотр значка", + "iconPreviewAlt": "предварительный просмотр иконки", "connection": "Подключение", "issuerUri": "URI эмитента", - "issuerUriHint": "Базовый URL-адрес провайдера.", - "test": "Тест", + "issuerUriHint": "Базовый адрес провайдера.", + "test": "Проверка", "testing": "Тестирование...", "clientId": "ID клиента", "clientSecret": "Секрет клиента", "clientSecretPlaceholder": "Оставьте пустым, чтобы сохранить существующий", - "scopes": "Области", - "claimMapping": "Привязка требований", - "previewClaims": "Предварительный просмотр претензий", + "scopes": "Scopes", + "claimMapping": "Claim Mapping", + "previewClaims": "Предварительный просмотр claims", "redirecting": "Перенаправление...", - "mappedClaims": "Сопоставленные претензии", - "rawClaims": "Необработанные претензии", - "usernameClaim": "Имя пользователя", - "nameClaim": "Имя владения", - "emailClaim": "Электронная почта", - "groupsClaim": "Захват групп", - "autoProvisioning": "Автонастройка", - "autoProvisionUsers": "Автопредоставление пользователей", - "autoProvisionUsersHint": "Создание учетных записей при первом входе в OIDC, если пользователь не существует.", - "allowLocalLinking": "Разрешить привязку локального аккаунта", - "allowLocalLinkingHint": "Привязать идентификатор OIDC к существующему локальному аккаунту по совпадению имени пользователя.", + "mappedClaims": "Сопоставленные claims", + "rawClaims": "Необработанные claims", + "usernameClaim": "Username claim", + "nameClaim": "Name claim", + "emailClaim": "Email claim", + "groupsClaim": "Groups claim", + "autoProvisioning": "Автоматическое создание", + "autoProvisionUsers": "Автоматическое создание пользователей", + "autoProvisionUsersHint": "Создавать учетные записи при первом входе в OIDC, если пользователь не существует.", + "allowLocalLinking": "Разрешить привязку локальной учетной записи", + "allowLocalLinkingHint": "Привязать идентификатор OIDC к существующей локальной учетной записи по совпадению имени пользователя.", "defaultPermissions": "Разрешения по умолчанию", "defaultPermissionsHint": "Разрешения для новых пользователей при первом входе в OIDC.", "createProvider": "Создать провайдера", "saveChanges": "Сохранить изменения", "saving": "Сохранение...", - "deleteProvider": "Удалить поставщика", + "deleteProvider": "Удалить провайдера", "deleting": "Удаление..." }, "test": { @@ -818,19 +818,19 @@ "notSupported": "не поддерживается" }, "groupMappings": { - "title": "Сопоставления групп", + "title": "Group Mappings", "description": "Группа OIDC карты претендует на разрешение BookOrbit. Синхронизируется при каждом входе.", "noPermission": "Нет разрешения", - "empty": "Привязки групп не настроены.", + "empty": "Сопоставления групп не настроены.", "addMapping": "Добавить сопоставление", - "claimPlaceholder": "Претензии группы OIDC (например, администраторы)", + "claimPlaceholder": "OIDC group claim (например, admins)", "add": "Добавить", "adding": "Добавление..." }, "toasts": { - "providerCreated": "Поставщик создан", - "providerSaved": "Поставщик сохранен", - "providerDeleted": "Поставщик удален", + "providerCreated": "Провайдер создан", + "providerSaved": "Провайдер сохранен", + "providerDeleted": "Провайдер удален", "mappingAdded": "Сопоставление групп добавлено", "mappingRemoved": "Сопоставление групп удалено" }, @@ -840,192 +840,192 @@ "save": "Не удалось сохранить", "delete": "Не удалось удалить", "deleteProvider": "Не удалось удалить провайдера", - "requestFailed": "Запрос не удался", - "previewState": "Не удалось сгенерировать состояние предварительного просмотра", - "startPreview": "Не удалось запустить предпросмотр", + "requestFailed": "Ошибка при запросе", + "previewState": "Не удалось сгенерировать предварительный просмотр", + "startPreview": "Не удалось запустить предварительный просмотр", "addMapping": "Не удалось добавить сопоставление", - "removeMapping": "Не удалось удалить групповое сопоставление" + "removeMapping": "Не удалось удалить сопоставление группы" } }, "admin": { - "title": "Админ", + "title": "Администрирование", "subtitle": "Управление пользователями и настройками аутентификации.", "system": { "title": "Система", - "subtitle": "Файловая организация, проход и технические настройки." + "subtitle": "Настройки организации, импорта и обслуживания файлов." }, "maintenance": { - "title": "Техническое обслуживание", + "title": "Обслуживание", "subtitle": "Управление фоновыми задачами, системными индексами и операциями по обслуживанию.", "importGroup": "Импорт", "recommendationsGroup": "Рекомендации", "achievementsGroup": "Достижения", "updatesGroup": "Обновления", "importFromBooklore": "Импорт из Booklore", - "bookloreImportConfigured": "Буккорный импорт настроен", + "bookloreImportConfigured": "Импорт из Booklore настроен", "importLibraryData": "Импорт данных библиотеки", - "migrationConfigured": "Сконфигурирован источник миграции", + "migrationConfigured": "Источник миграции настроен", "migrationRunning": "Миграция запущена", "migrationCompleted": "Миграция завершена", "migrationFailed": "Сбой миграции", - "importDescription": "Единоразовый импорт книг, метаданных и прогресс чтения из предыдущей установки Booklore.", - "migrationDescription": "Единоразовый импорт книг, метаданных и прогресс чтения из другого библиотечного приложения.", - "configuredDescription": "Источник: {name}. Переход пока не запущен - продолжайте установку для импорта.", + "importDescription": "Единоразовый импорт книг, метаданных и прогресса чтения из предыдущей установки Booklore.", + "migrationDescription": "Единоразовый импорт книг, метаданных и прогресса чтения из другого библиотечного приложения.", + "configuredDescription": "Источник: {name}. Миграция пока не запущена, продолжайте настройку для запуска импорта.", "runningDescription": "Этап: {stage} - начато {started}", - "completedDescription": "От {name} - завершено {date}", - "migrationErrorGeneric": "Произошла ошибка во время миграции.", + "completedDescription": "Из {name} - завершено {date}", + "migrationErrorGeneric": "Во время миграции произошла ошибка.", "stageInitializing": "инициализация", "recently": "недавно", "getStarted": "Начать работу", - "continueSetup": "Продолжить установку", - "viewDetails": "Детали", + "continueSetup": "Продолжить настройку", + "viewDetails": "Посмотреть детали", "refreshRecommendationIndex": "Обновить индекс рекомендаций", - "refreshRecommendationHint": "Обновите движок рекомендаций с последними изменениями в библиотеке. Этот процесс выполняется в фоновом режиме.", - "booksQueuedForProcessing": "{count, plural, =0 {нет книг в очереди на обработку} one {# в очереди на обработку} few {# книг в очереди на обработку} many {# книг в очереди на обработку} other {# книг в очереди на обработку}}", + "refreshRecommendationHint": "Обновить рекомендации с учетом последних изменений в библиотеке. Этот процесс выполняется в фоновом режиме.", + "booksQueuedForProcessing": "{count, plural, =0 {нет книг в очереди на обработку} one {# книга в очереди на обработку} few {# книги в очереди на обработку} many {# книг в очереди на обработку} other {# книг в очереди на обработку}}", "run": "Запустить", "running": "Выполняется...", - "backfillAchievements": "Достижения на заднем плане", - "backfillAchievementsHint": "Переоценка достижений для всех пользователей.", - "backfillResult": "Пользователи {users} обработаны и награждены наградами {awards}.", - "runBackfill": "Запуск бэкэнда", + "backfillAchievements": "Дозаполнить достижения", + "backfillAchievementsHint": "Пересчитать достижения для всех пользователей.", + "backfillResult": "Обработано {users} пользователей, выдано {awards} наград.", + "runBackfill": "Запустить дозаполнение", "checkForUpdates": "Проверить обновления", "checkForUpdatesHint": "Автоматически проверять GitHub на наличие нового релиза при запуске, и показывать уведомление в боковой панели, когда оно доступно.", "updateChecksEnabled": "Проверка обновлений включена", "updateChecksDisabled": "Проверка обновлений отключена", "updateSettingFailed": "Не удалось обновить настройки", - "booksQueuedForEmbedding": "{count, plural, =0 {нет книг в очереди на вставку} one {# книга в очереди на вложение} few {# книг в очереди на вложение} many {# книг в очереди на вложение} other {# книг в очереди на вложение}}", - "failed": "Неудачный", + "booksQueuedForEmbedding": "{count, plural, =0 {нет книг в очереди на встраивание} one {# книга в очереди на встраивание} few {# книги в очереди на встраивание} many {# книг в очереди на встраивание} other {# книг в очереди на встраивание}}", + "failed": "Неудачно", "unknownError": "Неизвестная ошибка", - "rebuildEmbeddingsFailed": "Не удалось перестроить встраивание: {error}", - "achievementBackfillConfirm": "Запуск достижений для всех пользователей? Это может занять некоторое время.", - "achievementBackfillComplete": "Достижение завершено: присуждено наград {count}", - "backfillRunFailed": "Не удалось запустить backfill", - "achievementBackfillFailed": "Не удалось запустить резервную копию: {error}", + "rebuildEmbeddingsFailed": "Не удалось пересоздать встраивания: {error}", + "achievementBackfillConfirm": "Запустить дозаполнение достижений для всех пользователей? Это может занять некоторое время.", + "achievementBackfillComplete": "Дозаполнение завершено: {count} наград выдано", + "backfillRunFailed": "Не удалось запустить дозаполнение", + "achievementBackfillFailed": "Не удалось запустить дозаполнение достижений: {error}", "uploadsGroup": "Загрузки", "maxUploadSize": "Максимальный размер загружаемого файла", "maxUploadSizeHint": "Настройте максимальный размер для загрузки файлов по всей системе.", "save": "Сохранить", - "uploadSizeInvalid": "Максимальный размер загрузки должен быть больше 0", - "uploadSizeUpdated": "Лимит загрузки обновлен" + "uploadSizeInvalid": "Максимальный размер файла для загрузки должен быть больше 0", + "uploadSizeUpdated": "Максимальный размер файла для загрузки обновлен" }, "migration": { "title": "Миграция", - "subtitle": "Единоразовый Booklore импорт: подключить источник, сопоставить пользователей, сухой запуск, начать миграцию и экспортировать отчет.", - "genericSubtitle": "Единоразовый импорт библиотеки: соединить источник, карту пользователей, запустить сухой пробег, начать миграцию и экспортировать отчет.", + "subtitle": "Единоразовый импорт из Booklore: подключение источника, сопоставление пользователей, тестовый прогон, запуск миграции и экспорт отчета.", + "genericSubtitle": "Единоразовый импорт из внешней библиотеки: подключение источника, сопоставление пользователей, тестовый прогон, запуск миграции и экспорт отчета.", "progress": "Прогресс", - "stepSourceConnection": "Подключение к источнику", - "stepUserPathMapping": "Сопоставление пользователя и пути", - "stepDryRun": "Дрёх-бег", - "stepDryRunTitle": "Сухой бег", - "stepRunMigration": "Запустить миграцию", + "stepSourceConnection": "Подключение источника", + "stepUserPathMapping": "Сопоставление пользователей и путей", + "stepDryRun": "Тестовый прогон", + "stepDryRunTitle": "Тестовый прогон", + "stepRunMigration": "Запуск миграции", "stepReport": "Отчет", "stepReportTitle": "Отчет о миграции", - "subtitleSource": "Настройте подключение к базе данных к исходному экземпляру Booklor.", - "genericSubtitleSource": "Настройте подключение к источнику исходной библиотеки.", - "subtitleMappings": "Сопоставление пользователей с исходными кодами целевым пользователям и перевод файлов.", - "subtitleDryRun": "Предпросмотр того, что будет импортировано до выполнения миграции в реальном времени.", - "subtitleRun": "Начните импорт в реальном времени и отслеживайте его прогресс.", - "subtitleReport": "Проверьте, что было импортировано и экспортирует подробный отчет.", - "continueToMappings": "Перейти к картам", - "continueToDryRun": "Продолжить сухий бег", - "continueToMigration": "Продолжить миграцию", + "subtitleSource": "Настройка подключения базы данных к исходному экземпляру Booklore.", + "genericSubtitleSource": "Настройка подключения к исходной библиотеке.", + "subtitleMappings": "Сопоставление исходных пользователей с целевыми пользователями и трансляция путей к файлам.", + "subtitleDryRun": "Предпросмотр того, что будет импортировано, до реального выполнения миграции.", + "subtitleRun": "Начало импорта и отслеживание его прогресса в реальном времени.", + "subtitleReport": "Просмотр импортированных данных и формирование подробного отчета.", + "continueToMappings": "Перейти к сопоставлениям", + "continueToDryRun": "Перейти к тестовому прогону", + "continueToMigration": "Перейти к миграции", "viewReport": "Просмотр отчета", "badgeValidated": "Проверено", "badgeSaved": "Сохранено", "badgeUpToDate": "Актуально", "badgeCompleted": "Выполнено", "badgeRunning": "Выполняется", - "badgeFailed": "Неудачный", + "badgeFailed": "Неудачно", "mediaPathRequired": "Требуется для миграции обложек книг.", "mediaPathAbsolute": "Используйте абсолютный путь (например: /books). Относительные пути не поддерживаются.", - "mediaPathConfigured": "Путь импорта был настроен. Используйте Тестовое Соединение для проверки доступа и структуры папок Booklore изображений.", - "issueSaveSource": "Сохранить настройки соединения с источниками", - "issueValidateSource": "Проверка соединения с источниками", - "issueSaveMappings": "Сохранить соотвествия пользователя и пути", - "issueSavePathMappings": "Сохраните сопоставления пути, чтобы проверить их", - "issueFreshDryRun": "Запустите новый хит-бег", - "issueResolveDuplicates": "Определить совпадения дубликатов целевой книги в хит-запуске", + "mediaPathConfigured": "Путь импорта обложек настроен. Используйте Проверку подключения для проверки доступа и структуры папок с изображениями Booklore.", + "issueSaveSource": "Сохранить настройки подключения источника", + "issueValidateSource": "Проверка подключения к источнику", + "issueSaveMappings": "Сохранить сопоставления пользователей и путей", + "issueSavePathMappings": "Сохранить сопоставления путей, чтобы проверить их", + "issueFreshDryRun": "Запустить новый тестовый прогон", + "issueResolveDuplicates": "Обработать дубликаты книг, обнаруженные в процессе тестового прогона", "issueWaitActiveRun": "Дождитесь завершения активного запуска", - "sourceRecordId": "Исходная запись ID #{id}", + "sourceRecordId": "ID исходной записи: #{id}", "byAuthorWithId": "по {author} (ID: {id})", "filePathWithId": "{path} (ID: {id})", - "bookloreSourceId": "Источник буклора: {id}", - "libraryBookNum": "Библиотечная книга #{id}", + "bookloreSourceId": "Идентификатор из Booklore: {id}", + "libraryBookNum": "Идентификатор книги в библиотеке: #{id}", "errorInitialize": "Не удалось инициализировать настройки миграции", "errorLoadSourceTypes": "Не удалось загрузить поддерживаемые типы источников миграции", "errorLoadTargetUsers": "Не удалось загрузить целевых пользователей", "errorLoadLibraryFolders": "Не удалось загрузить целевые папки библиотеки", - "noSourceUsersReturned": "Не было возвращено ни одного пользователя источника", - "userMappingSuggestionsLoaded": "Сопоставление пользовательских предложений загружено", - "errorLoadSuggestions": "Не удалось загрузить пользовательское сопоставление предложений", - "requiredFields": "Требуется имя хоста, пользователя, базы данных и хоста", - "connectionTestPassedWithWarnings": "Проверка соединения пройдена с предупреждениями", - "connectionTestPassedWithCount": "Тест подключения прошел с предупреждением {count}. Первая: {first}", - "connectionTestPassed": "Проверка соединения пройдена", - "connectionOkMissingTables": "Соединение установлено, но не хватает {count} таблиц(ми)", - "cannotTestMediaPathActiveRun": "Невозможно протестировать путь к медиафайлу, пока запуск активен", - "mediaRootPathRequiredCover": "Для импортирования необходим корневой путь к файлу.", + "noSourceUsersReturned": "Не было получено ни одного пользователя источника", + "userMappingSuggestionsLoaded": "Предложения сопоставление пользователей загружены", + "errorLoadSuggestions": "Не удалось загрузить предложения сопоставления пользователей", + "requiredFields": "Имена хоста, пользователя, базы данных и источника обязательны", + "connectionTestPassedWithWarnings": "Проверка подключения пройдена с предупреждениями", + "connectionTestPassedWithCount": "Проверка подключения прошла с {count} предупреждением(ями). Первое: {first}", + "connectionTestPassed": "Проверка подключения пройдена", + "connectionOkMissingTables": "Соединение установлено, но не хватает {count} необходимой(ых) таблиц", + "cannotTestMediaPathActiveRun": "Невозможно проверить пути к медиафайлам, пока продолжается запуск", + "mediaRootPathRequiredCover": "Для импорта обложек необходимо указать корневой путь к медиафайлам.", "useAbsolutePath": "Используйте абсолютный путь (например: /books).", - "mediaPathVerified": "Путь к носителю подтвержден.", - "mediaPathValidReadable": "Путь к файлу является допустимым и доступен для чтения", - "mediaPathValidationFailed": "Ошибка проверки пути к файлу.", - "connectionFailedBeforeMediaPath": "Проверка соединения не удалась, прежде чем проверка пути к медиафайлу будет завершена.", - "cannotModifySourceActiveRun": "Невозможно изменить источник, пока запуск активен", - "sourceSavedValidatedWarnings": "Источник сохранен и проверен с {count} предупреждением(ми)", + "mediaPathVerified": "Путь к медиафайлам проверен.", + "mediaPathValidReadable": "Путь к медиафайлам является допустимым и доступен для чтения", + "mediaPathValidationFailed": "Ошибка проверки пути к медиафайлам.", + "connectionFailedBeforeMediaPath": "Не удалось проверить соединение: проверка пути к медиафайлам не была завершена.", + "cannotModifySourceActiveRun": "Невозможно изменить источник, пока продолжается запуск", + "sourceSavedValidatedWarnings": "Источник сохранен и проверен с {count} предупреждением(ями)", "sourceSavedValidated": "Источник сохранен и проверен", "errorSaveValidateSource": "Не удалось сохранить или проверить источник", - "cannotSaveMappingsActiveRun": "Невозможно сохранить сопоставления, пока запуск активен", - "saveSourceFirst": "Сначала сохранить источник", - "mapAtLeastOneUser": "Сопоставьте хотя бы одного пользователя с исходным кодом", - "mapEveryUser": "Карта каждого пользователя перед сохранением", - "pathValidationFailedProfileSaved": "Ошибка проверки пути, но профиль все еще будет сохранен", + "cannotSaveMappingsActiveRun": "Невозможно сохранить сопоставления, пока продолжается запуск", + "saveSourceFirst": "Сперва сохраните источник", + "mapAtLeastOneUser": "Сопоставьте хотя бы одного исходного пользователя с целевым", + "mapEveryUser": "Сопоставлять каждого исходного пользователя перед сохранением", + "pathValidationFailedProfileSaved": "Проверка пути провалена, но профиль все еще может быть сохранен", "mappingsSaved": "Сопоставления сохранены", "errorSaveMappings": "Не удалось сохранить сопоставления", - "cannotRunDryRunActiveRun": "Не удается запустить dry-run, пока запуск активен", - "saveMappingsFirst": "Сначала сохранить сопоставления", - "dryRunCompleted": "Выполнено дрожи: {matched} совпадает, {unresolved} не разрешено", - "dryRunFailed": "Не удалось выполнить сухие", + "cannotRunDryRunActiveRun": "Не удается запустить тестовый прогон, пока продолжается запуск", + "saveMappingsFirst": "Сперва сохраните сопоставления", + "dryRunCompleted": "Тестовый прогон завершен: {matched} совпадений, {unresolved} требует вмешательства", + "dryRunFailed": "Не удалось выполнить тестовый прогон", "selectSourceForAllGroups": "Выберите исходную книгу для всех {count} дубликатов групп", - "duplicatesResolved": "Дублирующиеся совпадения решены", - "errorResolveDuplicates": "Не удалось разрешить дубликаты", - "preflightNotReady": "Предполет миграции не готов", - "runDryRunFirst": "Запустить сначала", - "runStarted": "Начало миграции запущено", + "duplicatesResolved": "Дублирующиеся совпадения обработаны", + "errorResolveDuplicates": "Не удалось обработать дубликаты", + "preflightNotReady": "Предварительная проверка миграции не готова", + "runDryRunFirst": "Сперва запустите тестовый прогон", + "runStarted": "Начат запуск миграции", "errorStartMigration": "Не удалось начать миграцию", "runCancelled": "Миграция отменена", "errorCancelMigration": "Не удалось отменить миграцию", - "runRetried": "Переход перезапущен - возобновляется с последнего завершения этапа", + "runRetried": "Запуск миграции перезапущен - возобновление с последнего завершенного этапа", "errorRetryMigration": "Не удалось повторить попытку миграции", "errorLoadRunProgress": "Не удалось загрузить прогресс запуска", - "startMigrationFirst": "Сначала начать миграцию", - "reportRefreshed": "Отчет обновлен", + "startMigrationFirst": "Сперва начните миграцию", + "reportRefreshed": "Отчет о запуске обновлен", "errorLoadReport": "Не удалось загрузить отчет о запуске", - "reportExported": "Сообщить об экспорте как {format}", + "reportExported": "Отчет экспортирован как {format}", "errorExportReport": "Не удалось экспортировать отчет о миграции", "reasonNoTitleAuthorMatch": "Соответствующая книга по названию или автору не найдена", "reasonNoFilePathMatch": "Путь к файлу не соответствует ни одной книге в этой библиотеке", - "reasonNoFileHashMatch": "Файл с хэшем не совпадает ни с одной книгой в этой библиотеке", + "reasonNoFileHashMatch": "Контрольная сумма файла не совпадает ни с одной книгой в этой библиотеке", "reasonNoIsbnMatch": "ISBN не совпадает ни с одной книгой в этой библиотеке", "reasonNoAsinMatch": "ASIN не совпадает ни с одной книгой в этой библиотеке", "reasonInsufficientSourceData": "Недостаточно метаданных для поиска", - "reasonAmbiguousIsbnMatch": "Несколько книг совпало с ISBN", - "reasonAmbiguousAsinMatch": "Несколько книг совпадает с одним и тем же ASIN", - "reasonAmbiguousFileHashMatch": "Несколько книг соответствует одному и тому же хешу файла", - "reasonAmbiguousFilePathMatch": "Несколько книг соответствует тому же пути к файлу", - "reasonAmbiguousTitleAuthorMatch": "Несколько книг совпало с одним и тем же названием и автором", + "reasonAmbiguousIsbnMatch": "Несколько книг совпали с одинаковым ISBN", + "reasonAmbiguousAsinMatch": "Несколько книг совпали с одинаковым ASIN", + "reasonAmbiguousFileHashMatch": "Несколько книг совпали по одинаковой контрольной сумме файла", + "reasonAmbiguousFilePathMatch": "Несколько книг совпали по одинаковому пути к файлу", + "reasonAmbiguousTitleAuthorMatch": "Несколько книг совпали с одинаковыми названием и автором", "reasonUnknown": "Не удалось определить причину", - "strategyIsbn": "Соответствует ISBN", - "strategyAsin": "Совпало с ASIN", - "strategyFileHash": "Совпадает с хэшем файла", - "strategyPathMapping": "Соответствует указанному пути файла", - "strategyTitleAuthor": "Соответствует названию и автору", - "strategyUnavailable": "Стратегия матча недоступна", - "userPreviewCounts": "{statuses} статусов, Прогресс {progress} записей, {bookmarks} закладок, {annotations} аннотаций, {collections} коллекционных записей", + "strategyIsbn": "Совпадает по ISBN", + "strategyAsin": "Совпадает по ASIN", + "strategyFileHash": "Совпадает по контрольной сумме файла", + "strategyPathMapping": "Совпадает по сопоставленному пути файла", + "strategyTitleAuthor": "Совпадает по названию и автору", + "strategyUnavailable": "Стратегия поиска совпадений недоступна", + "userPreviewCounts": "{statuses} статусов, {progress} записей прогресса, {bookmarks} закладок, {annotations} аннотаций, {collections} коллекций", "connErrorUnreachable": "Не удалось подключиться к серверу базы данных. Проверьте хост и порт.", "connErrorAuth": "Ошибка аутентификации. Проверьте имя пользователя и пароль.", "connErrorUnknownDatabase": "База данных не найдена. Проверьте имя базы данных.", "connErrorTimeout": "Время ожидания соединения истекло. Проверьте настройки хоста и брандмауэра.", - "connErrorGeneric": "Проверка соединения не удалась", + "connErrorGeneric": "Проверка подключения не удалась", "sourceType": "Тип источника", "sourceName": "Имя источника", "host": "Хост", @@ -1035,31 +1035,31 @@ "passwordSavedPlaceholder": "Сохранено - оставить без изменений", "passwordEmptyPlaceholder": "Пароль не установлен", "database": "База данных", - "mediaRootPath": "Корневой путь к файлу", - "pathOk": "Путь ОК", - "pathIssue": "Проблема пути", - "testPath": "Тестовый путь", + "mediaRootPath": "Корневой путь к медиафайлам", + "pathOk": "Путь в порядке", + "pathIssue": "Проблема с путем", + "testPath": "Проверить путь", "useTls": "Использовать TLS/SSL", "testConnection": "Проверить соединение", "saveAndValidate": "Сохранить и проверить", "sourceValidatedWithWarnings": "Источник проверен с предупреждениями", - "lastValidationSnapshot": "Последний снимок проверки", + "lastValidationSnapshot": "Последнее состояние проверки", "sourceVersion": "Исходная версия: {version}", - "unknown": "Неизвестен", + "unknown": "Неизвестно", "missingRequiredTables": "Отсутствуют необходимые таблицы: {tables}", - "suggestionsAutoLoad": "Пользовательские предложения загружаются автоматически после проверки исходного кода.", + "suggestionsAutoLoad": "Предложения пользователей загружаются автоматически после проверки источника.", "refresh": "Обновить", "sourceUser": "Исходный пользователь", "targetUser": "Целевой пользователь", "doNotImport": "Не импортировать этого пользователя", "noSourceUsersLoaded": "Исходные пользователи еще не загружены.", "noActiveTargetUsers": "Не найдено активных пользователей. Создайте или повторно включите пользователя BookOrbit перед сопоставлением.", - "pathPrefixMappings": "Сопоставление префиксов", + "pathPrefixMappings": "Сопоставление префиксов путей", "addMapping": "Добавить сопоставление", - "pathMappingsHelp1": "Привязки путей переводить пути к исходным файлам на целевые пути, чтобы книги могли совпадать с расположением файла. Например, если ваша библиотека Booklore хранит файлы под", - "pathMappingsHelp2": "и те же файлы в настоящее время живут в", - "pathMappingsHelp3": ", добавьте это сопоставление здесь. Также подходят книги по ISBN, хэшу файлов, и название/автор, независимо от соответствия пути - сопоставление путей является одной из четырех стратегий и не ограничивает то, какие исходные книги включены в миграцию.", - "noPrefixesFound": "Префиксы не найдены - сначала проверить источник", + "pathMappingsHelp1": "Сопоставления путей переводят пути исходных файлов в целевые, чтобы книги можно было сопоставлять по местоположению файлов. Например, если ваша библиотека Booklore хранила файлы по пути", + "pathMappingsHelp2": "и те же файлы сейчас находятся в", + "pathMappingsHelp3": ", добавьте это сопоставление здесь. Книги также сравниваются по ISBN, контрольной сумме файлов, и названию/автору, независимо от соответствия пути. Сопоставление путей является одной из четырех стратегий и не ограничивает то, какие исходные книги будут включены в миграцию.", + "noPrefixesFound": "Префиксы не найдены - сперва проверьте источник", "selectSourcePrefix": "Выберите префикс источника...", "selectTargetFolder": "Select target folder...", "remove": "Удалить", @@ -3406,6 +3406,12 @@ "syncEnabled": "Синхронизация с KOReader включена", "syncDisabled": "Синхронизация с KOReader отключена", "toggleSyncFailed": "Не удалось переключить синхронизацию", + "pluginLibrary": "Библиотека плагинов", + "hideAudioOnlyBooks": "Скрыть только аудиокниги", + "hideAudioOnlyBooksHint": "KOReader не может воспроизводить звук, поэтому книги только с аудио файлами не отображаются для загрузки и при поиске. Книги, которые имеют еще и файл с текстом будут показаны.", + "audioOnlyBooksHidden": "Аудиокниги скрыты в плагине", + "audioOnlyBooksShown": "Аудиокниги показаны в плагине", + "toggleAudioOnlyBooksFailed": "Не удалось обновить настройки библиотеки плагинов", "syncUrlCopied": "Синхронизация URL скопирована в буфер обмена", "syncUrlCopyFailed": "Не удалось скопировать URL синхронизации", "statusRefreshed": "Состояние синхронизации обновлено", @@ -4185,7 +4191,7 @@ "descriptions": { "profile": "Ваше имя, email, пароль и активные сеансы.", "appearanceTheme": "Тема, цвет акцента, фон, радиус углов.", - "appearanceBookCovers": "Тени обложки, позвоночные эффекты и плейсхолдерское искусство.", + "appearanceBookCovers": "Тени на обложке, эффекты на корешке и изображения-заполнители.", "appearanceIcons": "Выберите стиль значка, используемый в приложении.", "appearanceLayout": "Представление библиотек по умолчанию, плотность и интервал.", "appearanceBehavior": "Как библиотека реагирует при просмотре и сортировке.", @@ -5069,7 +5075,8 @@ "bulkRestored": "{count, plural, =0 {Восстановлено не заметок} one {Восстановлено # аннотация} few {Восстановлено # аннотаций} many {Восстановлено # аннотаций} other {Восстановлено # аннотаций}}", "bulkRecolored": "{count, plural, =0 {Переписано не заметок} one {Переписано # аннотация} few {Переписано # аннотации} many {Переписано # аннотации} other {Переписано # аннотации}}", "bulkRestyled": "{count, plural, =0 {Не написано никаких аннотаций} one {Переставлено # аннотации} few {Переставлено # аннотаций} many {Переставлено # аннотаций} other {Переставлено # аннотаций}}", - "noteSaved": "Примечание сохранено" + "noteSaved": "Примечание сохранено", + "purgePendingDeviceSync": "Синхронизированное устройство все еще должно удалить эту аннотацию. Синхронизируйте это устройство, а затем удалите навсегда." }, "railTitle": "{marks} метки · {books} книги", "lastTwelveMonths": "Последние 12 месяцев", @@ -5114,10 +5121,15 @@ }, "activitySummary": "{count, plural, one {# выделение между {from} и {to}} other {# выделяется между {from} и {to}} few {# выделяется между {from} и {to}} many {# выделяется между {from} и {to}}}", "book": "Книга", - "needsReview": "Нужна проверка" + "needsReview": "Нужна проверка", + "purgeDialog": { + "title": "Удалить навсегда?", + "description": "Это примечание и его заметки удалены. Оно не может быть восстановлено из корзины." + } }, "sources": { "web": "Веб", + "bookorbit": "BookOrbit", "koreader": "KOReader", "kobo": "Kobo" }, @@ -5699,6 +5711,12 @@ "errors": { "noToken": "Маркер не предоставлен" } + }, + "reconnect": { + "heading": "Ожидание ответа сервера", + "description": "Сервер BookOrbit недоступен в данный момент. Эта страница начнёт загружаться самостоятельно, как только сервер ответит.", + "retry": "Попробовать снова", + "retrying": "Пробую еще раз..." } }, "author": { @@ -5739,7 +5757,10 @@ "died": "Погиб", "website": "Сайт", "genres": "Genres", - "influences": "Влияние" + "influences": "Влияние", + "findMatch": "Найти верного автора", + "source": "Источник", + "pinned": "Закреплено" }, "list": { "title": "Авторы", @@ -5811,7 +5832,17 @@ "removing": "Удаление...", "removeImage": "Remove image", "imageHint": "PNG/JPEG/WEBP/GIF/BMP до {size} МБ", - "saving": "Сохранение..." + "saving": "Сохранение...", + "website": "Веб-сайт", + "websitePlaceholder": "https://example.com", + "websiteInvalid": "Введите веб-адрес, например, example.com.", + "born": "Дата рождения", + "died": "Дата Смерти", + "lifeDatePlaceholder": "1965 или 1965-03-14", + "lifeDateHint": "Дата рождения и Дата Смерти должны быть: год либо полная дата год-месяц-день.", + "lifeDateInvalid": "Введите год или полную дату вида год-месяц-день.", + "genres": "Жанры", + "influences": "Влияние" }, "merge": { "searchPlaceholder": "Поиск авторов для слияния с автором", @@ -5876,6 +5907,20 @@ "actionsFor": "Действия для {name}", "refreshing": "Обновление метаданных для {name}", "deleting": "Удаление {name}" + }, + "match": { + "title": "Найти верного автора", + "search": { + "label": "Имя", + "submit": "Поиск" + }, + "reference": { + "submit": "Искать" + }, + "results": { + "label": "Совпадения", + "searching": "Идёт поиск..." + } } }, "book": { diff --git a/client/src/locales/uk.json b/client/src/locales/uk.json index 9e3bfc356..4e9583df1 100644 --- a/client/src/locales/uk.json +++ b/client/src/locales/uk.json @@ -7257,7 +7257,7 @@ }, "emptyStage": { "title": "Ще немає виділень в {title}", - "body": "Відмітини приходять з трьох місць, а ця сторінка збирає їх усіх за один хрест.", + "body": "Найцікавіші моменти надходять з трьох місць, і ця сторінка зібрала їх усі на одному корінці.", "openReader": "Відкрити читач", "web": { "title": "Прочитайте його тут",