diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index f7413404..428ae6eb 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -196,6 +196,7 @@ export default { requestBatchQuickEmbed() { const payload = { message: this.$strings.MessageConfirmQuickEmbed, + allowHtml: true, callback: (confirmed) => { if (confirmed) { this.$axios diff --git a/client/components/modals/collections/AddCreateModal.vue b/client/components/modals/collections/AddCreateModal.vue index 24e8695d..f0d43c14 100644 --- a/client/components/modals/collections/AddCreateModal.vue +++ b/client/components/modals/collections/AddCreateModal.vue @@ -227,7 +227,7 @@ export default { .catch((error) => { console.error('Failed to create collection', error) var errMsg = error.response ? error.response.data || '' : '' - this.$toast.error(this.$strings.ToastCollectionCreateFailed + ': ' + errMsg) + this.$toast.error(errMsg) this.processing = false }) } diff --git a/client/components/modals/item/tabs/Tools.vue b/client/components/modals/item/tabs/Tools.vue index d9655088..8e40ca3c 100644 --- a/client/components/modals/item/tabs/Tools.vue +++ b/client/components/modals/item/tabs/Tools.vue @@ -107,6 +107,7 @@ export default { quickEmbed() { const payload = { message: this.$strings.MessageConfirmQuickEmbed, + allowHtml: true, callback: (confirmed) => { if (confirmed) { this.$axios diff --git a/client/components/prompt/Confirm.vue b/client/components/prompt/Confirm.vue index 361765e2..d0828c7d 100644 --- a/client/components/prompt/Confirm.vue +++ b/client/components/prompt/Confirm.vue @@ -3,7 +3,8 @@
{{ message }}
')
+ .replace(/<\/code>/gi, '')
+ },
callback() {
return this.confirmPromptOptions.callback
},
@@ -103,6 +115,14 @@ export default {
if (this.callback) this.callback(true, this.checkboxValue)
this.show = false
},
+ escapeHtml(value) {
+ return String(value)
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''')
+ },
setShow() {
this.checkboxValue = this.checkboxDefaultValue
this.$eventBus.$emit('showing-prompt', true)
diff --git a/client/package-lock.json b/client/package-lock.json
index 299741bd..71bcf26a 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "audiobookshelf-client",
- "version": "2.33.0",
+ "version": "2.33.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "audiobookshelf-client",
- "version": "2.33.0",
+ "version": "2.33.1",
"license": "ISC",
"dependencies": {
"@nuxtjs/axios": "^5.13.6",
diff --git a/client/package.json b/client/package.json
index a1503a50..782f411b 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,6 +1,6 @@
{
"name": "audiobookshelf-client",
- "version": "2.33.0",
+ "version": "2.33.1",
"buildNumber": 1,
"description": "Self-hosted audiobook and podcast client",
"main": "index.js",
diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue
index b8cf3cff..7fb84d46 100644
--- a/client/pages/config/index.vue
+++ b/client/pages/config/index.vue
@@ -390,8 +390,8 @@ export default {
},
purgeItemsCache() {
const payload = {
- // message: `This will delete the entire folder at /metadata/cache/items./metadata/items і /metadata/authors. Рэзервовыя копіі не ўключаюць файлы, якія захоўваюцца ў папках бібліятэкі.",
"MessageBackupsLocationEditNote": "Заўвага: Абнаўленне месцазнаходжання рэзервовых копій не перамяшчае і не змяняе існуючыя рэзервовыя копіі",
- "MessageBackupsLocationNoEditNote": "Заўвага: Месцазнаходжанне рэзервовых копій задаецца праз зменную асяроддзя і не можа быць зменена тут.",
+ "MessageBackupsLocationNoEditNote": "Заўвага: Размяшчэнне рэзервовых копій задаецца праз зменную асяроддзя і не можа быць зменена тут.",
"MessageBackupsLocationPathEmpty": "Шлях да месцазнаходжання рэзервовых копій не можа быць пустым",
"MessageBatchEditPopulateMapDetailsAllHelp": "Запоўніце ўключаныя палі данымі з усіх элементаў. Палі з некалькімі значэннямі будуць аб'яднаны",
"MessageBatchEditPopulateMapDetailsItemHelp": "Запоўніце ўключаныя палі падрабязнасцей карты данымі з гэтага элемента",
@@ -968,7 +968,7 @@
"StatsBooksAdditional": "Некаторыя дапаўненні ўключаюць…",
"StatsBooksFinished": "завершана кніг",
"StatsBooksFinishedThisYear": "Некаторыя кнігі завершаны ў гэтым годзе…",
- "StatsBooksListenedTo": "кнігі, якія былі праслуханы",
+ "StatsBooksListenedTo": "кніг праслухана",
"StatsCollectionGrewTo": "Ваша калекцыя кніг павялічылася да…",
"StatsSessions": "сеансаў",
"StatsSpentListening": "праслухана",
@@ -1147,7 +1147,7 @@
"ToastUnlinkOpenIdFailed": "Не ўдалося адвязаць карыстальніка ад OpenID",
"ToastUnlinkOpenIdSuccess": "Карыстальнік адвязаны ад OpenID",
"ToastUploaderFilepathExistsError": "Файл \"{0}\" ужо існуе на серверы",
- "ToastUploaderItemExistsInSubdirectoryError": "Элемент \"{0}\" выкарыстоўвае падкаталог шляху загрузкі.",
+ "ToastUploaderItemExistsInSubdirectoryError": "Элемент \"{0}\" выкарыстоўвае падкаталог шляху запампоўкі.",
"ToastUserDeleteFailed": "Не ўдалося выдаліць карыстальніка",
"ToastUserDeleteSuccess": "Карыстальнік выдалены",
"ToastUserPasswordChangeSuccess": "Пароль паспяхова зменены",
diff --git a/client/strings/de.json b/client/strings/de.json
index 27634865..ed0cae52 100644
--- a/client/strings/de.json
+++ b/client/strings/de.json
@@ -331,7 +331,7 @@
"LabelEmail": "E-Mail",
"LabelEmailSettingsFromAddress": "Sender",
"LabelEmailSettingsRejectUnauthorized": "Nicht autorisierte Zertifikate ablehnen",
- "LabelEmailSettingsRejectUnauthorizedHelp": "Durch das Deaktivieren der SSL-Zertifikatsüberprüfung kann deine Verbindung Sicherheitsrisiken wie Man-in-the-Middle-Angriffen ausgesetzt sein. Deaktiviere diese Option nur, wenn due die Auswirkungen verstehst und dem E-Mail-Server vertraust, mit dem eine Verbindung hergestellt wird.",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Durch das Deaktivieren der SSL-Zertifikatsüberprüfung kann deine Verbindung Sicherheitsrisiken wie Man-in-the-Middle-Angriffen ausgesetzt sein. Deaktiviere diese Option nur, wenn du die Auswirkungen verstehst und dem E-Mail-Server vertraust, mit dem eine Verbindung hergestellt wird.",
"LabelEmailSettingsSecure": "Sicher",
"LabelEmailSettingsSecureHelp": "Wenn an, verwendet die Verbindung TLS, wenn du eine Verbindung zum Server herstellst. Bei „aus“ wird TLS verwendet, wenn der Server die STARTTLS-Erweiterung unterstützt. In den meisten Fällen solltest du diesen Wert auf „an“ schalten, wenn du eine Verbindung zu Port 465 herstellst. Für Port 587 oder 25 behalte den Wert „aus“ bei. (von nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Test-Adresse",
diff --git a/client/strings/es.json b/client/strings/es.json
index 73ec1cd2..eae32bd9 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -20,10 +20,10 @@
"ButtonCheckAndDownloadNewEpisodes": "Comprobar y descargar episodios nuevos",
"ButtonChooseAFolder": "Elegir una carpeta",
"ButtonChooseFiles": "Elegir archivos",
- "ButtonClearFilter": "Quitar filtros",
+ "ButtonClearFilter": "Vaciar filtro",
"ButtonClose": "Cerrar",
"ButtonCloseFeed": "Cerrar suministro",
- "ButtonCloseSession": "Cerrar la sesión abierta",
+ "ButtonCloseSession": "Cerrar sesión abierta",
"ButtonCollections": "Colecciones",
"ButtonConfigureScanner": "Configurar Escáner",
"ButtonCreate": "Crear",
@@ -33,27 +33,27 @@
"ButtonEdit": "Editar",
"ButtonEditChapters": "Editar capítulos",
"ButtonEditPodcast": "Editar pódcast",
- "ButtonEnable": "Permitir",
+ "ButtonEnable": "Habilitar",
"ButtonFireAndFail": "Ejecutado y fallido",
"ButtonFireOnTest": "Activar evento de prueba",
"ButtonForceReScan": "Forzar Re-Escaneo",
"ButtonFullPath": "Ruta completa",
"ButtonHide": "Ocultar",
"ButtonHome": "Inicio",
- "ButtonIssues": "Problemas",
+ "ButtonIssues": "Cuestiones",
"ButtonJumpBackward": "Retroceder",
"ButtonJumpForward": "Adelantar",
"ButtonLatest": "Más recientes",
"ButtonLibrary": "Biblioteca",
- "ButtonLogout": "Salir",
- "ButtonLookup": "Buscar",
+ "ButtonLogout": "Cerrar Sesión",
+ "ButtonLookup": "Averiguar",
"ButtonManageTracks": "Gestionar pistas",
"ButtonMapChapterTitles": "Asignar Títulos a Capítulos",
"ButtonMatchAllAuthors": "Encontrar Todos los Autores",
- "ButtonMatchBooks": "Encontrar Libros",
+ "ButtonMatchBooks": "Cotejar Libros",
"ButtonNevermind": "Olvidar",
"ButtonNext": "Siguiente",
- "ButtonNextChapter": "Siguiente Capítulo",
+ "ButtonNextChapter": "Siguiente capítulo",
"ButtonNextItemInQueue": "El siguiente elemento en cola",
"ButtonOk": "Aceptar",
"ButtonOpenFeed": "Abrir suministro",
@@ -64,26 +64,26 @@
"ButtonPlaying": "Reproduciendo",
"ButtonPlaylists": "Listas de reproducción",
"ButtonPrevious": "Anterior",
- "ButtonPreviousChapter": "Capítulo Anterior",
- "ButtonProbeAudioFile": "Examinar archivo de audio",
- "ButtonPurgeAllCache": "Purgar toda la antememoria",
- "ButtonPurgeItemsCache": "Purgar antememoria de elementos",
- "ButtonQueueAddItem": "Añadir a la cola",
- "ButtonQueueRemoveItem": "Quitar de la cola",
+ "ButtonPreviousChapter": "Capítulo anterior",
+ "ButtonProbeAudioFile": "Sonda del archivo de audio",
+ "ButtonPurgeAllCache": "Purgar toda la caché",
+ "ButtonPurgeItemsCache": "Purgar caché de elementos",
+ "ButtonQueueAddItem": "Añadir a cola",
+ "ButtonQueueRemoveItem": "Quitar de cola",
"ButtonQuickEmbed": "Inserción rápida",
- "ButtonQuickEmbedMetadata": "Agregue metadatos rápidamente",
- "ButtonQuickMatch": "Encontrar Rápido",
+ "ButtonQuickEmbedMetadata": "Empotrar metadatos rápidamente",
+ "ButtonQuickMatch": "Cotejo Rápido",
"ButtonReScan": "Re-Escanear",
"ButtonRead": "Leer",
"ButtonReadLess": "Leer menos",
"ButtonReadMore": "Leer más",
- "ButtonRefresh": "Actualizar",
+ "ButtonRefresh": "Recargar",
"ButtonRemove": "Quitar",
"ButtonRemoveAll": "Quitar todo",
"ButtonRemoveAllLibraryItems": "Quitar todos los elementos de la biblioteca",
- "ButtonRemoveFromContinueListening": "Quitar de Continuar escuchando",
- "ButtonRemoveFromContinueReading": "Quitar de Continuar leyendo",
- "ButtonRemoveSeriesFromContinueSeries": "Quitar serie de Continuar serie",
+ "ButtonRemoveFromContinueListening": "Quitar desde Escucha Continua",
+ "ButtonRemoveFromContinueReading": "Quitar desde Continuar Leyendo",
+ "ButtonRemoveSeriesFromContinueSeries": "Quitar Series desde Series Continuas",
"ButtonReset": "Restablecer",
"ButtonResetToDefault": "Restaurar valores predeterminados",
"ButtonRestore": "Restaurar",
@@ -92,47 +92,47 @@
"ButtonSaveTracklist": "Guardar lista de pistas",
"ButtonScan": "Escanear",
"ButtonScanLibrary": "Escanear biblioteca",
- "ButtonScrollLeft": "Desplazarse hacia la izquierda",
- "ButtonScrollRight": "Desplazarse hacia la derecha",
+ "ButtonScrollLeft": "Desplazarse a la izquierda",
+ "ButtonScrollRight": "Desplazarse a la derecha",
"ButtonSearch": "Buscar",
"ButtonSelectFolderPath": "Seleccionar ruta de carpeta",
"ButtonSeries": "Series",
- "ButtonSetChaptersFromTracks": "Seleccionar Capítulos Según las Pistas",
+ "ButtonSetChaptersFromTracks": "Establecer capítulos según las pistas",
"ButtonShare": "Compartir",
- "ButtonShiftTimes": "Desplazar Tiempos",
+ "ButtonShiftTimes": "Veces de Desplazo",
"ButtonShow": "Mostrar",
"ButtonStartM4BEncode": "Iniciar Codificación M4B",
- "ButtonStartMetadataEmbed": "Iniciar la Inserción de Metadata",
+ "ButtonStartMetadataEmbed": "Iniciar Inserción de Metadatos",
"ButtonStats": "Estadísticas",
- "ButtonSubmit": "Enviar",
+ "ButtonSubmit": "Entregar",
"ButtonTest": "Prueba",
- "ButtonUnlinkOpenId": "Desvincular OpenID",
- "ButtonUpload": "Cargar",
- "ButtonUploadBackup": "Cargar respaldo",
- "ButtonUploadCover": "Cargar cubierta",
- "ButtonUploadOPMLFile": "Cargar archivo OPML",
+ "ButtonUnlinkOpenId": "Desenlazar OpenID",
+ "ButtonUpload": "Subir",
+ "ButtonUploadBackup": "Subir Respaldo",
+ "ButtonUploadCover": "Subir Cubierta",
+ "ButtonUploadOPMLFile": "Subir archivo OPML",
"ButtonUserDelete": "Eliminar usuario {0}",
"ButtonUserEdit": "Editar usuario {0}",
"ButtonViewAll": "Ver todo",
"ButtonYes": "Sí",
"ErrorUploadFetchMetadataAPI": "Error al recuperar los metadatos",
- "ErrorUploadFetchMetadataNoResults": "No se pudieron recuperar los metadatos; pruebe a actualizar el título o autor",
- "ErrorUploadLacksTitle": "Debe tener título",
+ "ErrorUploadFetchMetadataNoResults": "No se pudieron recuperar los metadatos; pruebe a actualizar el título y/o autor",
+ "ErrorUploadLacksTitle": "Debe tener un título",
"HeaderAccount": "Cuenta",
"HeaderAddCustomMetadataProvider": "Añadir proveedor de metadatos personalizado",
"HeaderAdvanced": "Avanzado",
"HeaderApiKeys": "Claves API",
- "HeaderAppriseNotificationSettings": "Configuración de notificaciones de Apprise",
- "HeaderAudioTracks": "Pistas de audio",
+ "HeaderAppriseNotificationSettings": "Ajustes de notificaciones de Apprise",
+ "HeaderAudioTracks": "Pistas de Audio",
"HeaderAudiobookTools": "Herramientas de Gestión de Archivos de Audiolibro",
"HeaderAuthentication": "Autenticación",
"HeaderBackups": "Respaldos",
"HeaderBulkChapterModal": "Añadir Múltiples Capítulos",
- "HeaderChangePassword": "Cambiar contraseña",
+ "HeaderChangePassword": "Cambiar Contraseña",
"HeaderChapters": "Capítulos",
"HeaderChooseAFolder": "Escoger una Carpeta",
"HeaderCollection": "Colección",
- "HeaderCollectionItems": "Elementos en la colección",
+ "HeaderCollectionItems": "Elementos de colección",
"HeaderCover": "Cubierta",
"HeaderCurrentDownloads": "Descargas actuales",
"HeaderCustomMessageOnLogin": "Mensaje personalizado al acceder",
@@ -140,49 +140,49 @@
"HeaderDetails": "Detalles",
"HeaderDownloadQueue": "Cola de descargas",
"HeaderEbookFiles": "Archivos de libros digitales",
- "HeaderEmail": "Correo electrónico",
- "HeaderEmailSettings": "Configuración de correo electrónico",
+ "HeaderEmail": "Correo-e",
+ "HeaderEmailSettings": "Ajustes de correo-e",
"HeaderEpisodes": "Episodios",
- "HeaderEreaderDevices": "Dispositivos Ereader",
- "HeaderEreaderSettings": "Configuración del lector",
+ "HeaderEreaderDevices": "Dispositivos Lector-e",
+ "HeaderEreaderSettings": "Ajustes del Lector-e",
"HeaderFiles": "Archivos",
"HeaderFindChapters": "Buscar capítulos",
"HeaderIgnoredFiles": "Archivos ignorados",
- "HeaderItemFiles": "Archivos de elementos",
- "HeaderItemMetadataUtils": "Utilidades de metadatos de elementos",
+ "HeaderItemFiles": "Archivos del elemento",
+ "HeaderItemMetadataUtils": "Utilidades de metadatos del elemento",
"HeaderLastListeningSession": "Última sesión de escucha",
"HeaderLatestEpisodes": "Episodios más recientes",
"HeaderLibraries": "Bibliotecas",
"HeaderLibraryFiles": "Archivos de biblioteca",
"HeaderLibraryStats": "Estadísticas de biblioteca",
- "HeaderListeningSessions": "Sesión",
+ "HeaderListeningSessions": "Sesiones Listadas",
"HeaderListeningStats": "Estadísticas de Tiempo Escuchado",
- "HeaderLogin": "Acceder",
- "HeaderLogs": "Registros",
+ "HeaderLogin": "Inicio de Sesión",
+ "HeaderLogs": "Bitácoras",
"HeaderManageGenres": "Gestionar géneros",
"HeaderManageTags": "Gestionar etiquetas",
"HeaderMapDetails": "Asignar Detalles",
- "HeaderMatch": "Encontrar",
+ "HeaderMatch": "Coincidir",
"HeaderMetadataOrderOfPrecedence": "Orden de precedencia de metadatos",
- "HeaderMetadataToEmbed": "Metadatos para Insertar",
- "HeaderNewAccount": "Cuenta nueva",
+ "HeaderMetadataToEmbed": "Metadatos para empotrar",
+ "HeaderNewAccount": "Crear Cuenta",
"HeaderNewApiKey": "Nueva clave API",
"HeaderNewLibrary": "Biblioteca nueva",
- "HeaderNotificationCreate": "Crear notificación",
- "HeaderNotificationUpdate": "Notificación de actualización",
+ "HeaderNotificationCreate": "Crear Notificación",
+ "HeaderNotificationUpdate": "Notificación de Actualización",
"HeaderNotifications": "Notificaciones",
"HeaderOpenIDConnectAuthentication": "Autenticación OpenID Connect",
- "HeaderOpenListeningSessions": "Sesiones públicas de escucha",
+ "HeaderOpenListeningSessions": "Abrir escucha de sesiones",
"HeaderOpenRSSFeed": "Abrir suministro RSS",
"HeaderOtherFiles": "Otros archivos",
"HeaderPasswordAuthentication": "Autenticación por contraseña",
"HeaderPermissions": "Permisos",
"HeaderPlayerQueue": "Cola del reproductor",
- "HeaderPlayerSettings": "Configuración del reproductor",
+ "HeaderPlayerSettings": "Ajustes del reproductor",
"HeaderPlaylist": "Lista de reproducción",
"HeaderPlaylistItems": "Elementos de lista de reproducción",
"HeaderPodcastsToAdd": "Pódcast para añadir",
- "HeaderPresets": "Preconfiguraciones",
+ "HeaderPresets": "Preajustes",
"HeaderPreviewCover": "Previsualizar cubierta",
"HeaderRSSFeedGeneral": "Detalles de RSS",
"HeaderRSSFeedIsOpen": "El suministro RSS está abierto",
@@ -191,18 +191,18 @@
"HeaderRemoveEpisodes": "Quitar {0} episodios",
"HeaderSavedMediaProgress": "Guardar Progreso de Multimedia",
"HeaderSchedule": "Horario",
- "HeaderScheduleEpisodeDownloads": "Programar descargas automáticas de episodios",
- "HeaderScheduleLibraryScans": "Programar Escaneo Automático de Biblioteca",
+ "HeaderScheduleEpisodeDownloads": "Planificador de auto‐descargas de episodios",
+ "HeaderScheduleLibraryScans": "Planificar Auto‐Escaneo de Biblioteca",
"HeaderSession": "Sesión",
- "HeaderSetBackupSchedule": "Programar Respaldo",
- "HeaderSettings": "Configuración",
+ "HeaderSetBackupSchedule": "Establecer Planificación de Respaldo",
+ "HeaderSettings": "Ajustes",
"HeaderSettingsDisplay": "Interfaz",
- "HeaderSettingsExperimental": "Funcionalidades experimentales",
+ "HeaderSettingsExperimental": "Características experimentales",
"HeaderSettingsGeneral": "Generales",
"HeaderSettingsScanner": "Escáner",
"HeaderSettingsSecurity": "Seguridad",
"HeaderSettingsWebClient": "Cliente web",
- "HeaderSleepTimer": "Temporizador de apagado",
+ "HeaderSleepTimer": "Cronómetro de dormida",
"HeaderStatsLargestItems": "Elementos más grandes",
"HeaderStatsLongestItems": "Elementos más extensos (h)",
"HeaderStatsMinutesListeningChart": "Minutos escuchando (últimos 7 días)",
@@ -233,29 +233,29 @@
"LabelAddToCollectionBatch": "Añadir {0} libros a colección",
"LabelAddToPlaylist": "Añadir a lista de reproducción",
"LabelAddToPlaylistBatch": "Añadir {0} elementos a lista de reproducción",
- "LabelAddedAt": "Añadido",
- "LabelAddedDate": "{0} Añadido",
+ "LabelAddedAt": "Añadido en",
+ "LabelAddedDate": "Añadido {0}",
"LabelAdminUsersOnly": "Solamente usuarios administradores",
"LabelAll": "Todos",
"LabelAllEpisodesDownloaded": "Todos los episodios descargados",
"LabelAllUsers": "Todos los usuarios",
"LabelAllUsersExcludingGuests": "Todos los usuarios excepto invitados",
"LabelAllUsersIncludingGuests": "Todos los usuarios e invitados",
- "LabelAlreadyInYourLibrary": "Ya existe en la Biblioteca",
- "LabelApiKeyCreated": "La clave de API “{0}” se ha creado con éxito.",
+ "LabelAlreadyInYourLibrary": "Ya dentro de tu biblioteca",
+ "LabelApiKeyCreated": "La clave de API “{0}” se ha creado correctamente.",
"LabelApiKeyCreatedDescription": "Asegúrate de copiar la clave de API ahora, no la volverás a ver otra vez.",
"LabelApiKeyUser": "Actuar en nombre del usuario",
"LabelApiKeyUserDescription": "Esta clave de API tendrá los mismos permisos que el usuario al que representa. En los registros se verá como si la solicitud la hubiera hecho el usuario directamente.",
- "LabelApiToken": "Token de la API",
+ "LabelApiToken": "Vale del API",
"LabelAppend": "Adjuntar",
- "LabelAudioBitrate": "Tasa de bits del audio (por ejemplo, 128k)",
+ "LabelAudioBitrate": "Tasa de bit del audio (p.ej., 128k)",
"LabelAudioChannels": "Canales de audio (1 o 2)",
"LabelAudioCodec": "Códec de audio",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (Nombre Apellido)",
"LabelAuthorLastFirst": "Autor (Apellido, Nombre)",
"LabelAuthors": "Autores",
- "LabelAutoDownloadEpisodes": "Descargar episodios automáticamente",
+ "LabelAutoDownloadEpisodes": "Auto‐Descargar episodios",
"LabelAutoFetchMetadata": "Recuperar metadatos automáticamente",
"LabelAutoFetchMetadataHelp": "Obtiene metadatos de título, autor y serie para agilizar la carga. Es posible que haya que cotejar metadatos adicionales después de la carga.",
"LabelAutoLaunch": "Lanzamiento automático",
@@ -275,7 +275,7 @@
"LabelBonus": "Bonus",
"LabelBooks": "Libros",
"LabelButtonText": "Texto del botón",
- "LabelByAuthor": "por",
+ "LabelByAuthor": "por {0}",
"LabelChangePassword": "Cambiar contraseña",
"LabelChannels": "Canales",
"LabelChapterCount": "{0} capítulos",
@@ -286,13 +286,13 @@
"LabelClickToUseCurrentValue": "Pulse para utilizar el valor actual",
"LabelClosePlayer": "Cerrar reproductor",
"LabelCodec": "Codec",
- "LabelCollapseSeries": "Colapsar serie",
+ "LabelCollapseSeries": "Colapsar Series",
"LabelCollapseSubSeries": "Contraer la subserie",
"LabelCollection": "Colección",
"LabelCollections": "Colecciones",
"LabelComplete": "Completo",
"LabelConfirmPassword": "Confirmar contraseña",
- "LabelContinueListening": "Seguir escuchando",
+ "LabelContinueListening": "Seguir Escuchando",
"LabelContinueReading": "Continuar leyendo",
"LabelContinueSeries": "Continuar series",
"LabelCorsAllowed": "Orígenes CORS Permitidos",
@@ -325,14 +325,14 @@
"LabelDurationComparisonLonger": "({0} más largo)",
"LabelDurationComparisonShorter": "({0} más corto)",
"LabelDurationFound": "Duración Comprobada:",
- "LabelEbook": "Libro electrónico",
- "LabelEbooks": "Libros electrónicos",
+ "LabelEbook": "Libro-e",
+ "LabelEbooks": "Libros-e",
"LabelEdit": "Editar",
"LabelEmail": "Correo electrónico",
"LabelEmailSettingsFromAddress": "Remitente",
"LabelEmailSettingsRejectUnauthorized": "Rechazar certificados no autorizados",
"LabelEmailSettingsRejectUnauthorizedHelp": "Desactivar la validación de certificados SSL puede exponer su conexión a riesgos de seguridad, como los ataques por intermediario. Desactive esta opción solo si conoce las implicaciones y confía en el servidor de correo al que se conecta.",
- "LabelEmailSettingsSecure": "Seguridad",
+ "LabelEmailSettingsSecure": "Seguro",
"LabelEmailSettingsSecureHelp": "Si está activado, se usará TLS para conectarse al servidor. Si está apagado, se usará TLS si su servidor tiene soporte para la extensión STARTTLS. En la mayoría de los casos, puede dejar esta opción activada si se está conectando al puerto 465. Apáguela en el caso de usar los puertos 587 o 25. (de nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Probar dirección",
"LabelEmbeddedCover": "Cubierta incrustada",
@@ -377,11 +377,12 @@
"LabelFilename": "Nombre del archivo",
"LabelFilterByUser": "Filtrar por Usuario",
"LabelFindEpisodes": "Buscar Episodio",
- "LabelFinished": "Terminado",
+ "LabelFinished": "Finalizado",
+ "LabelFinishedDate": "Finalizado {0}",
"LabelFolder": "Carpeta",
"LabelFolders": "Carpetas",
"LabelFontBold": "Negrilla",
- "LabelFontBoldness": "Peso tipográfico",
+ "LabelFontBoldness": "Tipográfico sin Negrita",
"LabelFontFamily": "Familia tipográfica",
"LabelFontItalic": "Itálica",
"LabelFontScale": "Escala de letra",
@@ -391,8 +392,8 @@
"LabelGenre": "Género",
"LabelGenres": "Géneros",
"LabelHardDeleteFile": "Eliminar Definitivamente",
- "LabelHasEbook": "Tiene un libro",
- "LabelHasSupplementaryEbook": "Tiene un libro complementario",
+ "LabelHasEbook": "Tiene libro-e",
+ "LabelHasSupplementaryEbook": "Tiene un libro-e suplementario",
"LabelHideSubtitles": "Ocultar subtítulos",
"LabelHighestPriority": "Mayor prioridad",
"LabelHost": "Anfitrión",
@@ -422,6 +423,7 @@
"LabelLanguages": "Idiomas",
"LabelLastBookAdded": "Último libro añadido",
"LabelLastBookUpdated": "Último libro actualizado",
+ "LabelLastProgressDate": "Último progreso: {0}",
"LabelLastSeen": "Última Vez Visto",
"LabelLastTime": "Última Vez",
"LabelLastUpdate": "Última Actualización",
@@ -434,6 +436,9 @@
"LabelLibraryFilterSublistEmpty": "Sin {0}",
"LabelLibraryItem": "Elemento de Biblioteca",
"LabelLibraryName": "Nombre de Biblioteca",
+ "LabelLibrarySortByProgress": "Progreso: Último actualizado",
+ "LabelLibrarySortByProgressFinished": "Progreso: Finalizado",
+ "LabelLibrarySortByProgressStarted": "Progreso: Iniciado",
"LabelLimit": "Limites",
"LabelLineSpacing": "Interlineado",
"LabelListenAgain": "Volver a escuchar",
@@ -442,6 +447,7 @@
"LabelLogLevelWarn": "Advertencia",
"LabelLookForNewEpisodesAfterDate": "Buscar Nuevos Episodios a partir de esta Fecha",
"LabelLowestPriority": "Menor prioridad",
+ "LabelMatchConfidence": "Confidencia",
"LabelMatchExistingUsersBy": "Emparejar a los usuarios existentes por",
"LabelMatchExistingUsersByDescription": "Se utiliza para conectar usuarios existentes. Una vez conectados, los usuarios serán emparejados por un identificador único de su proveedor de SSO",
"LabelMaxEpisodesToDownload": "Número máximo # de episodios para descargar. Usa 0 para descargar una cantidad ilimitada.",
@@ -460,7 +466,7 @@
"LabelMissingEbook": "No tiene libro electrónico",
"LabelMissingSupplementaryEbook": "No tiene libro electrónico suplementario",
"LabelMobileRedirectURIs": "URIs de redirección a móviles permitidos",
- "LabelMobileRedirectURIsDescription": "Esta es una lista blanca de URI de redireccionamiento válidos para aplicaciones móviles. El predeterminado es audiobookshelf , que puede eliminar o complementar con URI adicionales para la integración de aplicaciones de terceros. Usando un asterisco ( * ) como única entrada que permite cualquier URI.",
+ "LabelMobileRedirectURIsDescription": "Esta es una lista en blanco de las URI de re‐direccionamiento válidos para aplicaciones móviles. El predeterminado es audiobookshelf , que puede retirar o sustituir con las URI adicionales para la integración de aplicaciones de terceros. Usando un asterisco (* ) como única entrada que permite cualquier URI.",
"LabelMore": "Más",
"LabelMoreInfo": "Más información",
"LabelName": "Nombre",
@@ -473,9 +479,10 @@
"LabelNextBackupDate": "Fecha del siguiente respaldo",
"LabelNextChapters": "Los próximos capítulos serán:",
"LabelNextScheduledRun": "Próxima ejecución programada",
+ "LabelNoApiKeys": "Sin claves API",
"LabelNoCustomMetadataProviders": "Sin proveedores de metadatos personalizados",
"LabelNoEpisodesSelected": "Ningún Episodio Seleccionado",
- "LabelNotFinished": "No terminado",
+ "LabelNotFinished": "No finalizado",
"LabelNotStarted": "Sin iniciar",
"LabelNotes": "Notas",
"LabelNotificationAppriseURL": "URL(s) de Apprise",
@@ -489,7 +496,7 @@
"LabelNotificationsMaxQueueSizeHelp": "Las notificaciones están limitadas a 1 por segundo. Las notificaciones serán ignoradas si llegan al numero máximo de cola para prevenir spam de eventos.",
"LabelNumberOfBooks": "Número de libros",
"LabelNumberOfChapters": "Número de capítulos:",
- "LabelNumberOfEpisodes": "N.º de episodios",
+ "LabelNumberOfEpisodes": "Nº de episodios",
"LabelOpenIDAdvancedPermsClaimDescription": "Nombre de la notificación de OpenID que contiene permisos avanzados para acciones de usuario dentro de la aplicación que se aplicarán a roles que no sean de administrador (si están configurados). Si el reclamo no aparece en la respuesta, se denegará el acceso a ABS. Si falta una sola opción, se tratará como falsa. Asegúrese de que la notificación del proveedor de identidades coincida con la estructura esperada:",
"LabelOpenIDClaims": "Deje las siguientes opciones vacías para desactivar la asignación avanzada de grupos y permisos, lo que asignaría de manera automática al grupo «Usuario».",
"LabelOpenIDGroupClaimDescription": "Nombre de la declaración OpenID que contiene una lista de grupos del usuario. Comúnmente conocidos como grupos. Si se configura, la aplicación asignará automáticamente roles en función de la pertenencia a grupos del usuario, siempre que estos grupos se denominen \"admin\", \"user\" o \"guest\" en la notificación. La solicitud debe contener una lista, y si un usuario pertenece a varios grupos, la aplicación asignará el rol correspondiente al mayor nivel de acceso. Si ningún grupo coincide, se denegará el acceso.",
@@ -519,7 +526,7 @@
"LabelPodcasts": "Pódcast",
"LabelPort": "Puerto",
"LabelPrefixesToIgnore": "Prefijos para ignorar (no distingue entre mayúsculas y minúsculas)",
- "LabelPreventIndexing": "Evite que los directorios de pódcast de iTunes y Google indicen su suministro",
+ "LabelPreventIndexing": "Evite que los directorios de pódcast de iTunes y Google indexen su suministro",
"LabelPrimaryEbook": "Libro electrónico principal",
"LabelProgress": "Progreso",
"LabelProvider": "Proveedor",
@@ -531,11 +538,11 @@
"LabelPublishedDecades": "Décadas publicadas",
"LabelPublisher": "Editor",
"LabelPublishers": "Editores",
- "LabelRSSFeedCustomOwnerEmail": "Correo electrónico de dueño personalizado",
- "LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado",
+ "LabelRSSFeedCustomOwnerEmail": "Correo-e de propietario personalizado",
+ "LabelRSSFeedCustomOwnerName": "Nombre de propietario personalizado",
"LabelRSSFeedOpen": "Fuente RSS Abierta",
"LabelRSSFeedPreventIndexing": "Evitar indización",
- "LabelRSSFeedSlug": "«Slug» de suministro RSS",
+ "LabelRSSFeedSlug": "Ficha de suministro RSS",
"LabelRSSFeedURL": "URL de suministro RSS",
"LabelRandomly": "Aleatorio",
"LabelReAddSeriesToContinueListening": "Volver a agregar la serie para continuar escuchándola",
@@ -563,11 +570,12 @@
"LabelSelectAll": "Seleccionar todo",
"LabelSelectAllEpisodes": "Seleccionar todos los episodios",
"LabelSelectEpisodesShowing": "Seleccionar los {0} episodios visibles",
+ "LabelSelectUser": "Seleccionar usuario",
"LabelSelectUsers": "Seleccionar usuarios",
"LabelSendEbookToDevice": "Enviar libro electrónico a...",
"LabelSequence": "Secuencia",
"LabelSerial": "En serie",
- "LabelSeries": "Serie",
+ "LabelSeries": "Series",
"LabelSeriesName": "Nombre de la serie",
"LabelSeriesProgress": "Progreso de la serie",
"LabelServerLogLevel": "Nivel de registro del servidor",
@@ -580,8 +588,8 @@
"LabelSettingsBookshelfViewHelp": "Diseño Esqueuomorfo con Estantes de Madera",
"LabelSettingsChromecastSupport": "Compatibilidad con Chromecast",
"LabelSettingsDateFormat": "Formato de Fecha",
- "LabelSettingsEnableWatcher": "Buscar cambios automáticamente en las bibliotecas",
- "LabelSettingsEnableWatcherForLibrary": "Buscar cambios automáticamente en la biblioteca",
+ "LabelSettingsEnableWatcher": "Vigilar automáticamente los cambios en bibliotecas",
+ "LabelSettingsEnableWatcherForLibrary": "Vigilar automáticamente los cambios de biblioteca",
"LabelSettingsEnableWatcherHelp": "Permite agregar/actualizar elementos automáticamente cuando se detectan cambios en los archivos. *Requiere reiniciar el servidor",
"LabelSettingsEpubsAllowScriptedContent": "Permitir scripts en epubs",
"LabelSettingsEpubsAllowScriptedContentHelp": "Permitir que los archivos epub ejecuten scripts. Se recomienda mantener esta opción desactivada a menos que confíe en el origen de los archivos epub.",
@@ -614,14 +622,14 @@
"LabelSettingsStoreMetadataWithItemHelp": "Por defecto, los archivos de metadatos se almacenan en /metadata/items. Si habilita esta opción, los archivos de metadatos se guardarán en la carpeta de elementos de su biblioteca",
"LabelSettingsTimeFormat": "Formato de Tiempo",
"LabelShare": "Compartir",
- "LabelShareDownloadableHelp": "Permite a quienes posean el enlace de compartición descargar un archivo ZIP del elemento de la biblioteca.",
+ "LabelShareDownloadableHelp": "Permite a quienes posean el enlace de compartición descargar un archivo zip del elemento de la biblioteca.",
"LabelShareOpen": "abrir un recurso compartido",
"LabelShareURL": "Compartir la URL",
"LabelShowAll": "Mostrar todo",
"LabelShowSeconds": "Mostrar segundos",
"LabelShowSubtitles": "Mostrar subtítulos",
"LabelSize": "Tamaño",
- "LabelSleepTimer": "Temporizador de apagado",
+ "LabelSleepTimer": "Temporizador de dormida",
"LabelSlug": "Slug",
"LabelSortAscending": "Ascendente",
"LabelSortDescending": "Descendente",
@@ -630,6 +638,7 @@
"LabelStartTime": "Tiempo de Inicio",
"LabelStarted": "Iniciado",
"LabelStartedAt": "Iniciado En",
+ "LabelStartedDate": "Iniciado {0}",
"LabelStatsAudioTracks": "Pistas de Audio",
"LabelStatsAuthors": "Autores",
"LabelStatsBestDay": "Mejor día",
@@ -659,6 +668,7 @@
"LabelTheme": "Tema",
"LabelThemeDark": "Oscuro",
"LabelThemeLight": "Claro",
+ "LabelThemeSepia": "Sepia",
"LabelTimeBase": "Tiempo Base",
"LabelTimeDurationXHours": "{0} horas",
"LabelTimeDurationXMinutes": "{0} minutos",
@@ -727,8 +737,10 @@
"MessageAddToPlayerQueue": "Agregar a fila del Reproductor",
"MessageAppriseDescription": "Para usar esta función deberás tener la API de Apprise corriendo o una API que maneje los mismos resultados. http://192.168.1.1:8337 entonces pondría http://192.168.1.1:8337/notify.",
"MessageAsinCheck": "Cerciórese de usar el ASIN de la región correcta de Audible, no de Amazon.",
+ "MessageAuthenticationLegacyTokenWarning": "Los vales de API heredados serán retirados en el futuro. Utilice las claves de API en su lugar.",
"MessageAuthenticationOIDCChangesRestart": "Reinicie el servidor tras el guardado para aplicar los cambios de OIDC.",
- "MessageBackupsDescription": "Los respaldos incluyen: usuarios, el progreso del los usuarios, los detalles de los elementos de la biblioteca, la configuración del servidor y las imágenes en /metadata/items y /metadata/authors. Los Respaldos NO incluyen ningún archivo guardado en la carpeta de tu biblioteca.",
+ "MessageAuthenticationSecurityMessage": "La autenticación ha sido mejorada para seguridad. Todos los usuarios requieren reiniciar sesión.",
+ "MessageBackupsDescription": "Los respaldos incluyen: usuarios, el progreso del los usuarios, los detalles de los elementos de la biblioteca, la configuración del servidor y las imágenes en /metadata/items y /metadata/authors. Los Respaldos no incluyen ningún archivo guardado en la carpeta de tu biblioteca.",
"MessageBackupsLocationEditNote": "Nota: actualizar la ubicación de la copia de respaldo no moverá ni modificará los respaldos existentes",
"MessageBackupsLocationNoEditNote": "Nota: la ubicación de la copia de respaldo se establece a través de una variable de entorno y no se puede cambiar aquí.",
"MessageBackupsLocationPathEmpty": "La ruta de la copia de seguridad no puede estar vacía",
@@ -750,6 +762,7 @@
"MessageChaptersNotFound": "Capítulos no encontrados",
"MessageCheckingCron": "Revisando cron...",
"MessageConfirmCloseFeed": "¿Confirma que quiere cerrar este suministro?",
+ "MessageConfirmDeleteApiKey": "¿Está seguro que desea eliminar la clave API «{0}»?",
"MessageConfirmDeleteBackup": "¿Confirma que quiere eliminar el respaldo de {0}?",
"MessageConfirmDeleteDevice": "¿Confirma que quiere eliminar el lector electrónico «{0}»?",
"MessageConfirmDeleteFile": "Esto eliminará el archivo del sistema de archivos. ¿Quiere continuar?",
@@ -768,8 +781,8 @@
"MessageConfirmMarkSeriesFinished": "¿Confirma que quiere marcar todos los libros de esta serie como terminados?",
"MessageConfirmMarkSeriesNotFinished": "¿Confirma que quiere marcar todos los libros de esta serie como no terminados?",
"MessageConfirmNotificationTestTrigger": "¿Activar esta notificación con datos de prueba?",
- "MessageConfirmPurgeCache": "Purgar la antememoria eliminará el directorio completo ubicado en /metadata/cache. /metadata/cache/items./metadata/cache. /metadata/cache/items.