worldhopper/lib/l10n/app_es.arb
Felipe M. bb579719f9
All checks were successful
ci/woodpecker/pr/pr Pipeline was successful
fix: prevent double-save on exit, surface KOReader sync auth failures
- Add guard flag to prevent both onPopInvokedWithResult and dispose()
  from saving progress (double DB writes + double sync pushes)
- Capture ref-dependent values synchronously in _saveProgress before
  any await to prevent accessing disposed ref after super.dispose()
- Guard ref.invalidate() calls with mounted check for dispose safety
- Add KoreaderSyncAuthException so 401 errors in getProgress and
  updateProgress propagate instead of being silently swallowed
- Show a warning snackbar (once per session) when auth fails so the
  user knows sync credentials need updating

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 00:12:06 +01:00

277 lines
14 KiB
Text

{
"@@locale": "es",
"appName": "Worldhopper",
"navLibrary": "Biblioteca",
"navServers": "Servidores",
"navSettings": "Ajustes",
"settingsTitle": "Ajustes",
"settingsAppearance": "Apariencia",
"settingsAppearanceSubtitle": "Opciones de visualización",
"settingsLanguage": "Idioma",
"settingsLanguageSubtitle": "Idioma de la aplicación",
"settingsReaders": "Lectores",
"settingsReadersSubtitle": "Opciones de lectura",
"settingsAdvanced": "Avanzado",
"settingsAdvancedSubtitle": "Desarrollo y depuración",
"settingsAbout": "Acerca de",
"settingsAboutSubtitle": "Worldhopper",
"appearanceTitle": "Apariencia",
"appearanceTheme": "Tema",
"themeLight": "Claro",
"themeDark": "Oscuro",
"themeSystem": "Sistema",
"themeSystemSubtitle": "Seguir el tema del dispositivo",
"languageTitle": "Idioma",
"languageSystem": "Predeterminado del sistema",
"languageSystemSubtitle": "Usar el idioma del dispositivo",
"readersTitle": "Lectores",
"readersGeneralSection": "General",
"readersEinkMode": "Modo e-ink",
"readersEinkModeSubtitle": "Desactivar animaciones para pantallas e-ink",
"readersImageReaderSection": "Lector de imágenes",
"readersReadingDirection": "Dirección de lectura",
"readersFilterQuality": "Calidad de filtro",
"readersPrecachePages": "Precarga de páginas",
"readersTwoPageSpread": "Doble página",
"readersTwoPageSpreadSubtitle": "Mostrar dos páginas lado a lado en pantallas anchas",
"readersFirstPageIsCover": "La primera página es portada",
"readersFirstPageIsCoverSubtitle": "Mostrar la primera página sola en doble página",
"readingDirectionTitle": "Dirección de lectura",
"readingModeLtr": "Izquierda a derecha",
"readingModeLtrDescription": "Orden de lectura occidental estándar",
"readingModeRtl": "Derecha a izquierda",
"readingModeRtlDescription": "Orden de lectura estilo manga",
"readingModeVertical": "Desplazamiento vertical",
"readingModeVerticalDescription": "Desplazamiento continuo estilo webtoon",
"readingDirectionHelp": "Controla la dirección de lectura del lector de imágenes. Izquierda a derecha es el estándar para cómics occidentales, derecha a izquierda para manga, y desplazamiento vertical para webtoons.",
"readingModeShortLtr": "IaD",
"readingModeShortRtl": "DaI",
"readingModeShortVertical": "Vertical",
"filterQualityTitle": "Calidad de filtro",
"filterQualityNone": "Ninguna",
"filterQualityNoneDescription": "Más rápido, puede verse pixelado",
"filterQualityLow": "Baja",
"filterQualityLowDescription": "Interpolación bilineal",
"filterQualityMedium": "Media",
"filterQualityMediumDescription": "Bilineal con mipmaps, buen equilibrio",
"filterQualityHigh": "Alta",
"filterQualityHighDescription": "Interpolación bicúbica, mejor calidad",
"filterQualityHelp": "Controla cómo se escalan las imágenes cuando una página se reduce para ajustarse a la pantalla. Mayor calidad hace que el texto y los detalles finos sean más nítidos, pero usa más recursos de GPU. Se recomienda Media para la mayoría de dispositivos.",
"precachePagesTitle": "Precarga de páginas",
"precachePagesOff": "Desactivada",
"precachePagesOffDescription": "Las páginas se cargan bajo demanda",
"precachePages1": "1 página",
"precachePages1Description": "Precarga mínima",
"precachePages2": "2 páginas",
"precachePages2Description": "Precarga ligera",
"precachePages3": "3 páginas",
"precachePages3Description": "Equilibrada, recomendada",
"precachePages4": "4 páginas",
"precachePages4Description": "Precarga agresiva",
"precachePages5": "5 páginas",
"precachePages5Description": "Precarga máxima, usa más ancho de banda",
"precachePagesHelp": "Controla cuántas páginas siguientes se precargan en segundo plano mientras lees. Valores más altos hacen que pasar página sea más fluido, pero usan más ancho de banda y memoria.",
"advancedTitle": "Avanzado",
"advancedDeveloperMode": "Modo desarrollador",
"advancedDeveloperModeSubtitle": "Activar herramientas de depuración",
"advancedTests": "Pruebas",
"advancedTestsSubtitle": "Previsualizar componentes de interfaz",
"advancedDebuggingInfo": "Información de depuración",
"advancedVersion": "Versión",
"advancedBuildNumber": "Número de compilación",
"advancedPackageName": "Nombre del paquete",
"advancedDatabaseVersion": "Versión de la base de datos",
"advancedPlatform": "Plataforma",
"advancedCopyToClipboard": "Copiar al portapapeles",
"advancedCopyToClipboardSubtitle": "Copiar toda la información de depuración para informes de errores",
"advancedDebugInfoCopied": "Información de depuración copiada al portapapeles",
"advancedFailedToLoadInfo": "Error al cargar la información",
"aboutTitle": "Acerca de",
"aboutVersion": "Versión",
"aboutVersionUnknown": "desconocida",
"aboutSourceCode": "Código fuente",
"aboutReportIssue": "Reportar un problema",
"aboutReportIssueSubtitle": "Abrir un informe en el repositorio",
"devTestsTitle": "Pruebas de desarrollo",
"devTestsSnackBars": "Barras de notificación",
"devTestsSuccess": "Éxito",
"devTestsError": "Error",
"devTestsWarning": "Advertencia",
"devTestsInfo": "Información",
"devTestsSuccessMessage": "Este es un mensaje de éxito",
"devTestsErrorMessage": "Este es un mensaje de error",
"devTestsWarningMessage": "Este es un mensaje de advertencia",
"devTestsInfoMessage": "Este es un mensaje informativo",
"serverListTitle": "Mis servidores",
"serverListEmpty": "Sin servidores",
"serverListEmptySubtitle": "Añade tu primer servidor OPDS para empezar a explorar y leer",
"serverListOffline": "No hay conexión. Conéctate a internet para explorar servidores.",
"serverListErrorLoading": "Error al cargar servidores: {error}",
"serverListRetry": "Reintentar",
"serverListAddServer": "Añadir servidor",
"serverDeleteTitle": "Eliminar servidor",
"serverDeleteConfirmation": "¿Seguro que quieres eliminar \"{name}\"?",
"serverDeleted": "{name} eliminado",
"addServerTitle": "Añadir servidor",
"addServerNameLabel": "Nombre del servidor",
"addServerNameHint": "Mi biblioteca",
"addServerUrlLabel": "URL del servidor",
"addServerUrlHint": "https://ejemplo.com/opds",
"addServerRequiresAuth": "Requiere autenticación",
"addServerRequiresAuthSubtitle": "Activar si el servidor requiere inicio de sesión",
"addServerUsername": "Usuario",
"addServerPassword": "Contraseña",
"addServerValidationNameRequired": "Introduce un nombre de servidor",
"addServerValidationUrlRequired": "Introduce una URL de servidor",
"addServerValidationUrlInvalid": "Introduce una URL válida",
"addServerValidationUrlScheme": "La URL debe empezar con http:// o https://",
"addServerValidationUsernameRequired": "Introduce un nombre de usuario",
"addServerValidationPasswordRequired": "Introduce una contraseña",
"addServerHelp": "Introduce la URL raíz de tu servidor OPDS. Las credenciales se almacenarán de forma segura en tu dispositivo.",
"addServerButton": "Añadir servidor",
"addServerDuplicate": "Ya existe un servidor con esta URL",
"addServerSuccess": "{name} añadido correctamente",
"addServerError": "Error al añadir servidor: {error}",
"koreaderSyncToggle": "Sincronización KOReader API",
"koreaderSyncToggleSubtitle": "Sincronizar el progreso de lectura EPUB con un servidor compatible con KOReader",
"koreaderSyncUrl": "URL del servidor de sincronización",
"koreaderSyncUrlHint": "https://sync.ejemplo.com",
"koreaderSyncUsername": "Usuario de sincronización",
"koreaderSyncPassword": "Contraseña de sincronización",
"koreaderSyncTestConnection": "Probar conexión",
"koreaderSyncTestSuccess": "¡Conexión exitosa! Autenticado como {username}.",
"koreaderSyncTestFailed": "Error de conexión: {error}",
"koreaderSyncValidationUrlRequired": "La URL del servidor de sincronización es obligatoria cuando la sincronización KOReader está activada",
"koreaderSyncValidationUrlInvalid": "Introduce una URL válida",
"koreaderSyncValidationUsernameRequired": "El usuario de sincronización es obligatorio",
"koreaderSyncValidationPasswordRequired": "La contraseña de sincronización es obligatoria",
"koreaderSyncAuthFailed": "Sincronización KOReader: error de autenticación. Revisa las credenciales del servidor.",
"koreaderSyncHelp": "Conéctate a un servidor de sincronización compatible con KOReader para sincronizar las posiciones de lectura EPUB entre dispositivos.",
"koreaderSyncResumeInfo": "La sincronización KOReader está activada. Tu posición de lectura se restaurará automáticamente desde el servidor de sincronización al abrir este libro.",
"editServerTitle": "Editar servidor",
"editServerNotFound": "Servidor no encontrado",
"editServerInfo": "Información del servidor",
"editServerAdded": "Añadido",
"editServerLastSynced": "Última sincronización",
"editServerSaveButton": "Guardar cambios",
"editServerSuccess": "{name} actualizado correctamente",
"editServerError": "Error al actualizar servidor: {error}",
"editServerErrorLoading": "Error al cargar servidor: {error}",
"readerError": "Error",
"readerNoStreamLink": "Esta publicación no se puede leer (sin enlace de transmisión)",
"readerServerNotFound": "Servidor no encontrado",
"readerErrorLoadingServer": "Error al cargar servidor: {error}",
"readerReadingDirectionWithMode": "Dirección de lectura ({mode})",
"readerPageOf": "Página {current} de {total}",
"readerPagesOf": "Páginas {start}-{end} de {total}",
"epubPreparing": "Preparando...",
"epubLoadingFromCache": "Cargando desde caché...",
"epubDownloading": "Descargando... {percent}%",
"epubProcessing": "Procesando EPUB...",
"epubOpeningReader": "Abriendo lector...",
"epubErrorLoading": "Error al cargar EPUB: {error}",
"epubGoBack": "Volver",
"epubSearch": "Buscar",
"epubSearchHint": "Introduce un término de búsqueda...",
"epubNoResults": "No se encontraron resultados",
"epubSearchResults": "{count} resultados para \"{query}\"",
"epubSearchFailed": "Error en la búsqueda: {error}",
"epubChapters": "Capítulos",
"epubBack": "Atrás",
"libraryTitle": "Biblioteca",
"libraryRecentlyRead": "Leídos recientemente",
"libraryNoServers": "Sin servidores configurados",
"libraryNoServersSubtitle": "Añade un servidor OPDS para empezar a leer libros",
"libraryAddServer": "Añadir servidor",
"libraryNoHistory": "Sin historial de lectura",
"libraryNoHistorySubtitle": "Empieza a leer un libro para verlo aquí",
"libraryBrowseServers": "Explorar servidores",
"libraryErrorLoading": "Error al cargar la biblioteca",
"browserLoading": "Cargando...",
"browserLibrary": "Biblioteca",
"browserNoContent": "Sin contenido disponible",
"browserLibraryEmpty": "Esta biblioteca parece estar vacía",
"browserCollectionEmpty": "Esta colección parece estar vacía",
"browserFailedToLoadLibrary": "Error al cargar la biblioteca",
"browserFailedToLoadFeed": "Error al cargar el feed",
"browserRetry": "Reintentar",
"browserFailedToLoadMore": "Error al cargar más: {error}",
"browserOfflineEpubNotCached": "Este EPUB no está en caché. Es posible que no puedas leerlo sin conexión.",
"browserOfflinePagesWarning": "No hay conexión. Las páginas podrían no cargarse correctamente.",
"publicationPages": "{count} páginas",
"publicationReadingProgress": "Progreso de lectura",
"publicationPageOfTotal": "Página {current} de {total}",
"publicationLastRead": "Última lectura: {time}",
"publicationCannotRead": "Esta publicación no se puede leer en la aplicación",
"publicationContinueFromPage": "Continuar leyendo desde la página {page}",
"publicationStartReading": "Empezar a leer",
"publicationContinueReading": "Continuar leyendo",
"publicationReadAgain": "Leer de nuevo",
"publicationStartFromBeginning": "Empezar desde el principio",
"publicationCollection": "Colección",
"recentlyReadPublicationNotFound": "Publicación no encontrada",
"recentlyReadErrorLoading": "Error al cargar la publicación",
"recentlyReadViewRawData": "Ver datos sin procesar",
"recentlyReadRemove": "Eliminar de leídos recientes",
"recentlyReadRemoveTitle": "Eliminar de leídos recientes",
"recentlyReadRemoveConfirmation": "¿Eliminar \"{title}\" de tu historial de lectura?\n\nEsto no eliminará el libro de tu biblioteca.",
"recentlyReadRemoved": "Eliminado de leídos recientes",
"recentlyReadRemoveFailed": "Error al eliminar: {error}",
"recentlyReadRawData": "Datos sin procesar",
"recentlyReadOfflineEpubNotCached": "Este EPUB no está en caché. Conéctate a internet para descargarlo.",
"recentlyReadOfflinePagesWarning": "No hay conexión. Las páginas podrían no cargarse.",
"recentlyReadUnsupportedFormat": "Formato no compatible",
"serverCardEdit": "Editar",
"serverCardDelete": "Eliminar",
"serverCardAuthenticated": "Autenticado",
"serverCardLastSynced": "Última sincronización: {time}",
"offlineSemanticLabel": "Sin conexión",
"nextInSeriesNext": "Siguiente",
"nextInSeriesFinished": "Terminado",
"nextInSeriesBackToDetails": "Volver a detalles",
"nextInSeriesBackToLibrary": "Volver a la biblioteca",
"routeNotFound": "Página no encontrada: {uri}",
"commonCancel": "Cancelar",
"commonDelete": "Eliminar",
"commonRemove": "Eliminar",
"timeJustNow": "ahora mismo",
"timeMinutesAgo": "hace {minutes} min",
"timeHoursAgo": "hace {hours} h",
"timeDaysAgo": "hace {days} d",
"timeWeeksAgo": "hace {weeks} sem",
"timeMonthsAgo": "hace {months} mes(es)",
"timeYearsAgo": "hace {years} año(s)",
"timeToday": "Hoy",
"timeYesterday": "Ayer",
"timeMinAgo": "hace {minutes} min",
"timeHoursAgoLong": "hace {count} {count, plural, =1{hora} other{horas}}",
"timeDaysAgoLong": "hace {days} días"
}