{
  "settings": {
    "title": "Configuración",
    "realtimeHint": "Todos los cambios se aplican en tiempo real",
    "general": "General",
    "reading": "Lectura",
    "fonts": "Fuentes",
    "ai": "IA",
    "translationTab": "Traducción",
    "externalAi": "Acceso de IA externa",
    "tts": "TTS",
    "about": "Acerca de",
    "other": "Más",
    "aboutDesc": "Lee cualquier cosa, comprende más",
    "version": "Versión",
    "techStack": "Tecnologías",
    "techStackTauri": "Framework de escritorio multiplataforma",
    "techStackReact": "Librería de componentes UI",
    "techStackTypeScript": "Seguridad de tipos",
    "techStackFoliate": "Motor de renderizado de eBooks",
    "feedback": "Comentarios",
    "supportCenter": "Centro de soporte",
    "license": "Código abierto bajo licencia GPL v3",
    "checkUpdate": "Buscar actualizaciones",
    "updateChecking": "Buscando...",
    "updateAvailable": "Actualización disponible",
    "updateDownloading": "Descargando",
    "updateReady": "Actualización lista",
    "updateError": "Actualización fallida",
    "downloadUpdate": "Descargar actualización",
    "downloading": "Descargando",
    "updateReadyMessage": "Actualización descargada, reinicia la app para completar la instalación",
    "updateErrorMessage": "La actualización falló, intenta de nuevo más tarde",
    "upToDate": "Estás al día",
    "relaunch": "Reiniciar app",
    "dismiss": "Descartar",
    "newVersionAvailable": "Nueva versión {{version}} disponible. ¿Descargar ahora?",
    "later": "Después",
    "ok": "OK",
    "skills": "Habilidades",
    "language": "Idioma",
    "general_title": "General",
    "general_desc": "Apariencia y comportamiento de la app",
    "theme": "Tema",
    "themeDesc": "Elige tu tema preferido",
    "system": "Sistema",
    "light": "Claro",
    "dark": "Oscuro",
    "sepia": "Sepia",
    "autoSave": "Intervalo de autoguardado",
    "autoSaveDesc": "Con qué frecuencia guardar el progreso de lectura",
    "languageDesc": "Elige el idioma de la interfaz",
    "appearance": "Apariencia e idioma",
    "updaterNetworkError": "No se puede conectar al servidor de actualizaciones, verifica la red",
    "updaterNoUpdate": "No hay actualizaciones disponibles o el servicio no está disponible temporalmente",
    "updaterCheckFailed": "Error al buscar actualizaciones",
    "updaterNoAvailable": "No hay actualizaciones disponibles",
    "updaterDownloadFailed": "Error al descargar la actualización",
    "updaterRelaunchFailed": "Error al reiniciar la app. Ábrela manualmente para terminar de instalar la actualización",
    "relaunching": "Reiniciando...",
    "reading_title": "Lectura",
    "reading_desc": "Personaliza tu experiencia de lectura",
    "readingNotice": "Los ajustes de fuente y diseño solo aplican a EPUB y otros formatos de flujo, no a PDF.",
    "fontSize": "Tamaño de fuente: {{size}}px",
    "lineHeight": "Altura de línea: {{height}}",
    "fontTheme": "Tema de fuente",
    "paragraphSpacing": "Espaciado entre párrafos",
    "showTopTitleProgress": "Título y progreso superior",
    "showBottomTimeBattery": "Hora y batería inferior",
    "volumeButtonsPageTurn": "Botones de volumen cambian página",
    "volumeButtonsPageTurnDesc": "Durante la lectura, los botones de volumen pasan página",
    "followSystemFontScale": "Seguir escala de fuente del sistema",
    "followSystemFontScaleDesc": "Escalar automáticamente según el tamaño de fuente de accesibilidad del SO",
    "fixedLayoutNotice": "PDF es un formato de diseño fijo. Los ajustes de fuente y diseño no están disponibles.",
    "notAvailableForPdf": "No disponible para PDF",
    "sansSerif": "Sans-serif",
    "serif": "Serif",
    "monospace": "Monoespaciada",
    "viewMode": "Modo de vista",
    "paginated": "Paginado",
    "scroll": "Desplazamiento",
    "paginatedLayout": "Diseño de página",
    "singlePage": "Página simple",
    "doublePage": "Doble página",
    "ai_title": "Configuración de IA",
    "ai_desc": "Configura endpoints y ajustes del modelo de IA",
    "ai_endpoints": "Endpoints",
    "ai_addEndpoint": "Agregar endpoint",
    "ai_provider": "Proveedor",
    "ai_provider_openai": "Compatible con OpenAI",
    "ai_provider_anthropic": "Anthropic Claude",
    "ai_provider_google": "Google Gemini",
    "ai_provider_deepseek": "DeepSeek",
    "ai_endpointName": "Nombre",
    "ai_endpointNamePlaceholder": "ej. OpenAI, Ollama, Claude...",
    "ai_apiKey": "Clave API",
    "ai_baseUrl": "URL base",
    "ai_baseUrlPlaceholder": "https://api.openai.com/v1",
    "ai_baseUrlOptional": "URL base (opcional)",
    "ai_fetchModels": "Obtener modelos",
    "ai_testConnection": "Probar conexión",
    "ai_testingConnection": "Probando...",
    "ai_testSuccess": "Conexión exitosa",
    "ai_testSuccessWithModels": "Conexión exitosa, {{count}} modelo(s) disponible(s)",
    "ai_testSuccessWithModel": "Conexión exitosa, probado con el modelo {{model}}",
    "ai_testFailed": "Conexión fallida",
    "ai_requestUrlPreview": "URL de solicitud final",
    "ai_baseUrlHint": "Los endpoints compatibles con OpenAI agregan /v1 por defecto. Habilita el modo de URL exacta si deseas usar la URL tal como la ingresaste.",
    "ai_ollamaCorsHint": "¿No puedes conectar con Ollama? Configura la variable de entorno OLLAMA_ORIGINS=* y reinicia Ollama.",
    "ai_exactRequestUrl": "Usar URL de solicitud exacta",
    "ai_exactRequestUrlLabel": "URL de solicitud exacta",
    "ai_exactRequestUrlDesc": "Usa la URL exactamente como la ingresaste, sin agregar automáticamente /v1, /chat/completions ni /models.",
    "ai_exactRequestUrlFetchHint": "El modo de URL exacta no puede inferir la lista de modelos automáticamente. Agrega un modelo manualmente antes de probar.",
    "ai_testModel": "Modelo de prueba",
    "ai_testModelAuto": "Seleccionar automáticamente el primer modelo disponible",
    "ai_fetchingModels": "Obteniendo...",
    "ai_modelsLoaded": "{{count}} modelos cargados",
    "ai_noModels": "Sin modelos — obtén desde la API o agrega manualmente",
    "ai_addModel": "Agregar",
    "ai_addModelPlaceholder": "Ingresa nombre del modelo, ej. gpt-4o",
    "ai_removeModel": "Eliminar modelo",
    "ai_modelsList": "Modelos",
    "ai_removeEndpoint": "Eliminar",
    "ai_activeEndpoint": "Endpoint activo",
    "ai_activeModel": "Modelo",
    "ai_selectModel": "Selecciona un modelo",
    "ai_selectEndpoint": "Selecciona un endpoint",
    "ai_noEndpoints": "No hay endpoints configurados",
    "ai_setDefault": "Establecer como predeterminado",
    "ai_name": "Nombre",
    "webdavUrl": "URL del servidor WebDAV",
    "webdavUsername": "Nombre de usuario",
    "webdavPassword": "Contraseña de app",
    "testConnection": "Probar conexión",
    "ai_providerLabel": "Proveedor",
    "ai_deleteEndpoint": "Eliminar endpoint",
    "ai_globalParams": "Parámetros globales",
    "ai_contextWindow": "Ventana de contexto",
    "ai_slidingWindow": "Ventana deslizante",
    "ai_contextWindowUnit": "mensajes",
    "ai_addManualModelPlaceholder": "Agregar modelo manualmente...",
    "ai_newEndpoint": "Nuevo endpoint",
    "model": "Modelo",
    "apiKey": "Clave API",
    "baseUrl": "URL base (opcional)",
    "parameters": "Parámetros",
    "temperature": "Temperatura: {{value}}",
    "maxTokens": "Tokens máximos: {{value}}",
    "slidingWindowSize": "Longitud de contexto: {{value}} rondas",
    "translation_title": "Ajustes de traducción",
    "translation_desc": "Configura opciones de traducción",
    "enableTranslation": "Habilitar traducción",
    "enableTranslationDesc": "Mostrar traducción del texto seleccionado",
    "targetLanguage": "Idioma destino",
    "showOriginal": "Mostrar original",
    "showOriginalDesc": "Mostrar texto original junto a la traducción",
    "autoTranslate": "Traducción automática",
    "autoTranslateDesc": "Traducir la página automáticamente",
    "skills_title": "Habilidades",
    "skills_desc": "Administra extensiones de herramientas de IA",
    "addSkill": "Agregar habilidad",
    "noSkills": "Aún no hay habilidades personalizadas. Las habilidades integradas están disponibles automáticamente.",
    "builtIn": "Integrada",
    "enabled": "Habilitada",
    "disabled": "Deshabilitada",
    "viewSkill": "Ver habilidad",
    "editSkill": "Editar habilidad",
    "skillName": "Nombre de la habilidad",
    "skillNamePlaceholder": "ej. Generar mapa mental",
    "skillDescription": "Descripción de la habilidad",
    "skillDescriptionPlaceholder": "Descripción breve de lo que hace esta habilidad",
    "skillPrompt": "Prompt de la habilidad",
    "skillPromptPlaceholder": "Describe el comportamiento y requisitos de salida de la habilidad en detalle",
    "builtinNameReadOnly": "Los nombres de habilidades integradas no se pueden modificar",
    "skillUsage": "Instrucciones de uso de habilidades",
    "skillUsageSummary": "Resumen",
    "skillUsageSummaryDesc": "Escribe 'resume este capítulo' o 'resumen del libro' en el chat",
    "skillUsageCharacter": "Personajes",
    "skillUsageCharacterDesc": "Pregunta 'quiénes son los personajes' o 'analiza al protagonista'",
    "skillUsageQuote": "Citas",
    "skillUsageQuoteDesc": "Solicita 'buscar citas' o 'párrafos destacados'",
    "skillUsageAnalysis": "Análisis",
    "skillUsageAnalysisDesc": "Pregunta 'cuál es el argumento del autor' o 'analiza la lógica'",
    "vectorModel": "Modelo vectorial",
    "vm_title": "Modelo vectorial",
    "vm_desc": "Configura el modelo de embeddings para búsqueda semántica y recuperación RAG",
    "vm_modeTitle": "Fuente del modelo",
    "vm_modeBuiltin": "Modelo local integrado",
    "vm_modeBuiltinDesc": "Descarga el modelo para ejecutar localmente, no requiere API",
    "vm_modeRemote": "API remota",
    "vm_modeRemoteDesc": "Usa un servicio externo de API de embeddings",
    "vm_builtinModels": "Modelos integrados",
    "vm_builtinDesc": "Descarga modelos ligeros para ejecutar localmente dentro de la app. La primera descarga se almacena en caché automáticamente.",
    "vm_download": "Descargar",
    "vm_loaded": "Cargado",
    "vm_clearCache": "Limpiar",
    "vm_clearing": "Limpiando...",
    "vm_clearSuccess": "Caché limpiado",
    "vm_recommended": "Recomendado",
    "vm_loadError": "Error al cargar: {{error}}",
    "vm_remoteModels": "Modelos remotos",
    "vm_remoteDesc": "Conéctate a un servicio externo de API de embeddings",
    "vm_noRemoteModels": "Aún no hay configuraciones de modelos remotos. Agrega una para usar API de embeddings externa.",
    "vm_models": "Lista de modelos",
    "vm_addModel": "Agregar modelo",
    "vm_addModelTitle": "Agregar nuevo modelo",
    "vm_editModel": "Editar modelo",
    "vm_noModels": "No hay modelos vectoriales configurados. Agrega uno para habilitar la búsqueda semántica.",
    "vm_name": "Nombre",
    "vm_modelId": "ID del modelo",
    "vm_url": "Endpoint de API",
    "vm_urlHint": "Ingresa la raíz de la API, una base /v1 o la URL completa /embeddings. Guardar y probar la normalizan automáticamente.",
    "vm_apiKey": "Clave API",
    "vm_description": "Descripción",
    "vm_descriptionPlaceholder": "Descripción opcional del modelo",
    "vm_dimension": "Dimensión: {{dim}}",
    "vm_test": "Probar",
    "vm_testing": "Probando...",
    "vm_testSuccess": "✓ Conexión exitosa | Dimensión: {{dimension}}",
    "vm_testFailed": "✗ Conexión fallida: {{error}}",
    "vm_testFailedWithUrl": "✗ Conexión fallida: {{error}} (URL probada: {{url}})",
    "vm_model_desc_miniLM": "Rápido y ligero, buena calidad general",
    "vm_model_desc_bgeEn": "Embeddings de alta calidad en inglés",
    "vm_model_desc_bgeZh": "Embeddings de alta calidad en chino",
    "vm_model_desc_e5": "Soporte multilingüe, buen rendimiento general",
    "vm_lang_en": "Inglés",
    "vm_lang_zh": "Chino",
    "vm_lang_multi": "100+ idiomas",
    "sync": "Sincronización",
    "syncTitle": "Sincronización WebDAV",
    "syncDesc": "Sincroniza datos de lectura entre dispositivos mediante WebDAV",
    "syncLayoutMigrationNotice": "Diseño remoto actualizado — actualiza todos los dispositivos sincronizados a esta versión",
    "syncConnection": "Configuración de conexión",
    "syncUrl": "URL del servidor",
    "syncUrlPlaceholder": "https://dav.example.com",
    "syncUsername": "Nombre de usuario",
    "syncPassword": "Contraseña",
    "syncRemoteRoot": "Carpeta remota",
    "syncRemoteRootPlaceholder": "readany",
    "syncRemoteRootDesc": "Elige la carpeta remota reservada para la sincronización de ReadAny. Se admiten rutas anidadas y se crearán automáticamente durante la prueba o la primera sincronización. ReadAny no escanea los libros que ya hayas colocado allí; importa una biblioteca WebDAV existente con \"Conectar otro WebDAV\".",
    "syncTestConnection": "Probar conexión",
    "syncTesting": "Probando...",
    "syncTestSuccess": "Conexión exitosa",
    "syncTestFailed": "Conexión fallida: {{error}}",
    "syncSave": "Guardar configuración",
    "syncSaved": "Configuración guardada",
    "syncStatus": "Estado de sincronización",
    "syncNow": "Sincronizar ahora",
    "syncSyncing": "Sincronizando...",
    "syncLastSync": "Última sincronización",
    "syncNever": "Nunca sincronizado",
    "syncSuccess": "Sincronización completada",
    "syncFailed": "Sincronización fallida: {{error}}",
    "syncRecordsUp": "{{count}} registros subidos",
    "syncRecordsDown": "{{count}} registros descargados",
    "syncFilesUp": "{{count}} archivos subidos",
    "syncFilesDown": "{{count}} archivos descargados",
    "syncFilesPartialFailed": "⚠️ Algunos archivos no se sincronizaron ({{uploadFailed}} errores de subida, {{downloadFailed}} errores de descarga). Causas probables: el servidor rechazó crear una carpeta, problema de red o permiso denegado. La próxima sincronización reintentará automáticamente.",
    "syncAutoSync": "Sincronización automática",
    "syncAutoSyncDesc": "Sincronizar datos automáticamente en segundo plano",
    "syncInterval": "Intervalo de sincronización",
    "syncIntervalDesc": "Cuando la sincronización automática está habilitada, buscar actualizaciones cada N minutos",
    "syncIntervalMinutes": "{{count}} min",
    "syncAllowInsecure": "Permitir conexión insegura",
    "syncAllowInsecureDesc": "Omitir verificación de certificado TLS (para certificados autofirmados)",
    "syncAllowInsecureDescMobile": "Usar HTTP en lugar de HTTPS para servidores con certificados autofirmados",
    "syncWebdavAuthFailed": "Autenticación de WebDAV fallida. Verifica el nombre de usuario y la contraseña de app.",
    "syncWebdavForbidden": "Acceso WebDAV denegado. Verifica los permisos de la cuenta para esta ruta.",
    "syncWebdavNotFound": "La dirección o ruta de WebDAV no se encontró. Verifica la URL del servidor y la ruta raíz.",
    "syncWebdavMethodNotAllowed": "El servidor no respondió correctamente a una solicitud WebDAV. Asegúrate de que WebDAV esté habilitado.",
    "syncWebdavTimeout": "La conexión WebDAV expiró después de {{seconds}} segundos. Verifica la URL del servidor, el puerto y la red.",
    "syncWebdavNetworkError": "No se pudo alcanzar el servidor WebDAV. Verifica la red, URL, puerto o configuración de certificado.",
    "syncWebdavDesktopScopeError": "Esta versión de escritorio aún no ha permitido esa dirección WebDAV. Actualiza a la última versión, reinicia la app e intenta de nuevo.",
    "syncWebdavTlsError": "Validación de certificado TLS de WebDAV fallida. Verifica el certificado, o permite conexiones inseguras e intenta de nuevo.",
    "syncWebdavServerError": "Error del servidor WebDAV ({{status}}).",
    "syncWebdavHttpError": "Solicitud WebDAV fallida ({{status}}).",
    "syncWebdavUnknownError": "Solicitud WebDAV fallida: {{message}}",
    "syncNotConfigured": "No configurado",
    "syncAdvanced": "Opciones avanzadas",
    "syncForceUpload": "Subida completa",
    "syncForceUploadDesc": "Sobrescribir la base de datos, libros y portadas remotas con los datos actuales de este dispositivo.",
    "syncForceUploadConfirm": "¿Iniciar una subida completa? La base de datos remota se sobrescribirá y los libros y portadas coincidentes se volverán a subir.",
    "syncForceDownload": "Descarga completa",
    "syncForceDownloadDesc": "Sobrescribir la base de datos, libros y portadas de este dispositivo con la copia remota.",
    "syncForceDownloadConfirm": "¿Iniciar una descarga completa? La base de datos de este dispositivo se sobrescribirá y los libros y portadas remotos se descargarán de nuevo.",
    "syncDeviceId": "ID del dispositivo",
    "syncReset": "Restablecer datos de sincronización",
    "syncResetDesc": "Borrar todos los metadatos de sincronización. Usa esto si la sincronización tiene problemas.",
    "syncResetConfirm": "¿Estás seguro de que deseas restablecer? Esto borrará todo el estado de sincronización y realizará una resincronización completa la próxima vez.",
    "syncResetDone": "Los datos de sincronización han sido restablecidos",
    "syncDisconnect": "Desconectar",
    "syncDisconnectConfirm": "¿Estás seguro de que deseas desconectar? Los datos en este dispositivo no se eliminarán.",
    "syncChecking": "Verificando...",
    "syncUploading": "Subiendo base de datos...",
    "syncDownloading": "Descargando base de datos...",
    "syncSyncingFiles": "Sincronizando archivos...",
    "syncError": "Error de sincronización",
    "syncDirection": "Dirección: {{direction}}",
    "syncDuration": "Duración: {{ms}}ms",
    "syncConflictTitle": "Conflicto de sincronización",
    "syncConflictDesc": "Tanto los datos locales como los remotos tienen cambios. Elige qué versión conservar.",
    "syncConflictUpload": "Subir local",
    "syncConflictDownload": "Descargar remoto",
    "syncProgressDatabase": "{{operation}} en progreso...",
    "syncProgressFiles": "{{operation}} archivos {{completed}}/{{total}}",
    "syncBackendType": "Método de sincronización",
    "syncWebdavDesc": "Sincronizar mediante servicio WebDAV",
    "syncS3Desc": "Sincronizar mediante almacenamiento compatible con S3",
    "syncLANDesc": "Transferencia rápida por LAN",
    "syncWebDavConfig": "Configuración WebDAV",
    "syncS3Config": "Configuración S3",
    "syncS3Endpoint": "Endpoint del servicio",
    "syncS3Region": "Región",
    "syncS3Bucket": "Bucket",
    "syncS3RemoteRoot": "Carpeta de sincronización",
    "syncS3RemoteRootDesc": "Elige el prefijo de carpeta dentro de este bucket. Se admiten rutas anidadas, por ejemplo apps/readany.",
    "syncS3AccessKeyId": "Access Key ID",
    "syncS3SecretAccessKey": "Secret Access Key",
    "syncS3PathStyle": "Usar URL con estilo de ruta",
    "syncLANConfig": "Transferencia LAN",
    "syncLANDescFull": "Importa datos incrementalmente desde otro dispositivo en la misma LAN, fusionando cambios de biblioteca y descargando libros y portadas faltantes.",
    "syncLANServer": "Enviar este dispositivo",
    "syncLANServerDesc": "Comparte los datos de este dispositivo para que otro los importe",
    "syncLANClient": "Importar desde dispositivo",
    "syncLANClientDesc": "Importa rápidamente datos de biblioteca desde otro dispositivo",
    "syncLANServerTitle": "Enviar datos de este dispositivo",
    "syncLANClientTitle": "Importar datos del dispositivo",
    "syncLANServerStatus": {
      "idle": "No iniciado",
      "starting": "Preparando...",
      "running": "Esperando importación",
      "stopping": "Deteniendo...",
      "error": "Error"
    },
    "syncLANQRPlaceholder": "El código QR aparecerá aquí",
    "syncLANPairCode": "Código de emparejamiento",
    "syncLANServerHint": "Abre ReadAny en otro dispositivo y escanea este código QR o ingresa el código de emparejamiento para importar los datos de este dispositivo allí",
    "syncLANServerStart": "Iniciar servidor",
    "syncLANServerStarting": "Iniciando...",
    "syncLANServerStop": "Detener servidor",
    "syncLANScanQR": "Escanear código QR",
    "syncLANScannerPlaceholder": "Área de vista previa de cámara",
    "syncLANManualConnect": "Importación manual",
    "syncLANIP": "Dirección IP",
    "syncLANPort": "Puerto",
    "syncLANPairCodeLabel": "Código de emparejamiento",
    "syncLANInvalidQR": "Código QR inválido",
    "syncLANFillAll": "Completa todos los campos",
    "syncLANConnectionFailed": "Conexión fallida, verifica que el código de emparejamiento sea correcto",
    "syncLANConnecting": "Conectando...",
    "syncLANConnect": "Conectar e importar",
    "syncLANManual": "O ingreso manual",
    "syncLANScanHint": "Alinea el escáner con el código QR de escritorio",
    "syncLANImportWarningTitle": "Aviso de importación LAN",
    "syncLANImportWarning": "Conectar importará incrementalmente los cambios de base de datos del dispositivo servidor y descargará libros y portadas faltantes en lugar de reemplazar este dispositivo por completo. Si el servidor tiene eliminaciones explícitas, esas eliminaciones también se sincronizarán.",
    "syncLANImportBanner": "Esta importación LAN ahora fusiona cambios y descarga archivos faltantes en lugar de reemplazar toda la biblioteca.",
    "syncLANImportStatus": "Estado de importación",
    "syncLANLastImport": "Última importación",
    "syncLANPreparingImport": "Preparando importación",
    "syncLANImporting": "Importando",
    "syncLANImportingFiles": "Importando archivos",
    "syncLANImportProgressDatabase": "Importando base de datos...",
    "syncLANImportProgressFiles": "Importando archivos {{completed}}/{{total}}",
    "syncLANImportComplete": "Importación completada",
    "syncLANImportedFiles": "{{count}} archivos importados",
    "syncLANExpoGoUnsupported": "Expo Go no soporta el emisor LAN porque requiere módulos TCP nativos. Usa un Dev Client personalizado (expo run) o la app de escritorio.",
    "syncAndroidExpoGoHttpUnsupported": "Android Expo Go no soporta probar este endpoint WebDAV HTTP plano. Usa HTTPS, o prueba de nuevo en un Dev Client personalizado / build de producción.",
    "cameraPermission": "Permiso de cámara",
    "cameraPermissionDesc": "La función de sincronización necesita permiso de cámara para escanear códigos QR",
    "syncClose": "Cerrar",
    "syncLANManualIPHint": "No se puede detectar la dirección IP automáticamente. Ingresa la IP de tu LAN local manualmente.",
    "syncLANTauriRequired": "El emisor LAN solo funciona dentro de la app de escritorio Tauri. Parece que estás ejecutando la página de desarrollo del navegador, así que inicia el shell de escritorio en su lugar.",
    "syncLANAddress": "Dirección",
    "translationProvider": "Motor de traducción",
    "selectModel": "Seleccionar modelo",
    "noModelsFetched": "Obtén la lista de modelos en los ajustes de IA primero",
    "apiKeyPlaceholder": "Ingresa la clave API",
    "deeplKeyHint": "Clave API de DeepL",
    "translationModel": "Modelo de traducción",
    "selectEngine": "Seleccionar motor",
    "username": "Nombre de usuario",
    "password": "Contraseña de app",
    "autoSync": "Sincronización automática",
    "autoSyncDesc": "Sincronizar datos automáticamente en segundo plano",
    "appearanceLanguage": "Apariencia e idioma",
    "storageLocation": "Ubicación de almacenamiento de la biblioteca",
    "storageLocationDesc": "Los libros, portadas y archivos de base de datos de escritorio se almacenan aquí. Cambiar el directorio los migra juntos para evitar llenar el disco del sistema.",
    "storageCurrentPath": "Directorio actual",
    "storageTargetPath": "Directorio destino",
    "storageChooseFolder": "Elegir carpeta",
    "storageMigrate": "Migrar a este directorio",
    "storageMigrating": "Migrando...",
    "storageResetDefault": "Restaurar directorio predeterminado",
    "storageMigrationNote": "La migración mueve libros importados, portadas y archivos de base de datos juntos. Después de la migración, la app se reinicia automáticamente y las futuras importaciones y descargas de sincronización también usan el nuevo directorio.",
    "storageMigrationSuccess": "{{count}} archivos migrados. La app se reiniciará en breve.",
    "storageMigrationFailed": "Migración fallida: {{error}}",
    "storageChooseFolderFirst": "Elige una carpeta destino primero",
    "storageNoChange": "Este directorio ya está en uso",
    "storageAlreadyDefault": "Ya estás usando el directorio predeterminado",
    "aiConfig": "Configuración de IA",
    "aiProvider": "Proveedor",
    "ai_models": "modelos",
    "ai_namePlaceholder": "ej. Mi OpenAI",
    "configImported": "Configuración importada",
    "copiedToClipboard": "Token copiado al portapapeles",
    "copyToken": "Copia el token de abajo e impórtalo en otro dispositivo",
    "english": "Inglés",
    "exportConfig": "Exportar",
    "exportFailed": "Error en la exportación",
    "importConfig": "Importar",
    "importFailed": "Error en la importación",
    "invalidConfig": "Formato de configuración inválido",
    "pasteConfig": "Pega el token de configuración...",
    "simplifiedChinese": "Chino simplificado",
    "syncConfig": "Configuración de sincronización",
    "transferConfig": "Transferir configuración",
    "vectorConfig": "Configuración vectorial",
    "webdavAllowInsecure": "Permitir conexiones inseguras",
    "ai_provider_zhipu": "Zhipu GLM",
    "ai_provider_aliyun": "Alibaba Cloud Tongyi",
    "ai_provider_custom": "Personalizado (Compatible OpenAI)",
    "ai_currentLabel": "Actual:",
    "ai_searchModels": "Buscar modelo...",
    "ai_noMatchingResults": "Sin resultados",
    "ai_totalModels": "{{count}} modelos en total",
    "externalAiSettings": {
      "overview": {
        "title": "Acceso de IA externa Beta",
        "description": "Comprueba la CLI, Skill, carpetas de descubrimiento de clientes y configuración MCP. La reparación usa el profile seleccionado.",
        "mcpConfigHint": "MCP config significa que ReadAny aparece en archivos de configuración comunes. Reinicia o abre una nueva sesión para confirmar que las herramientas se cargaron."
      },
      "cli": {
        "title": "ReadAny CLI",
        "description": "La app de escritorio solo ejecuta comprobaciones CLI aprobadas, no comandos shell arbitrarios.",
        "notInstalledOrPath": "No instalado o no disponible en PATH",
        "runtimeEvidence": "Evidencia de runtime / paquete"
      },
      "agent": {
        "title": "Inicialización de agente",
        "description": "Copia este comando a una IA externa. Instala ReadAny CLI y Skill, y devuelve un fragmento de configuración MCP.",
        "clientDiscoveryStatus": "Estado de descubrimiento de clientes",
        "clientDiscoveryEmpty": "Ejecuta diagnóstico para mostrar el estado de descubrimiento de Skill.",
        "mcpConfigStatus": "Estado de configuración MCP",
        "mcpConfigEmpty": "Ejecuta diagnóstico para mostrar resultados de configuración MCP.",
        "profileRiskWarning": "Este profile permite escrituras draft o exportaciones. Confirma el interruptor de riesgo antes de copiar o ejecutar la inicialización.",
        "latestInstallResult": "Último resultado de instalación con un clic"
      },
      "skill": {
        "title": "Instalar asistente IA",
        "description": "Copia una instrucción a un asistente IA y deja que instale Skill y MCP.",
        "copyToCurrentAssistant": "Copiar al asistente IA actual",
        "copyHint": "Instalará directamente usando el profile seleccionado.",
        "allClients": "Todos los clientes",
        "skillInstalled": "Skill instalada",
        "pending": "Pendiente"
      },
      "mcp": {
        "title": "Perfil de acceso MCP",
        "description": "Elige el nivel de acceso MCP. editor / publisher requieren confirmación explícita; instalar CLI o Skill no concede escritura por sí solo.",
        "currentTemplate": "{{description}} Copiando la plantilla {{client}}.",
        "riskConfirmation": "Permitir a la IA externa usar herramientas de escritura/exportación",
        "currentTools": "Herramientas MCP actuales"
      },
      "profileDescriptions": {
        "readonly": "Acceso de solo lectura: biblioteca, capítulos, notas, resaltados, RAG y lecturas de diagnóstico.",
        "editor": "Acceso editor: incluye readonly y permite crear drafts EPUB y editar su contenido.",
        "publisher": "Acceso publisher: incluye editor y permite validate / export / notes export / knowledge export."
      },
      "clients": {
        "generic": "JSON genérico",
        "genericShort": "Genérico",
        "codex": "Codex TOML",
        "agents": "Agents genérico"
      },
      "output": {
        "notRun": "Aún no se ejecutó.",
        "success": "Comando completado correctamente.",
        "exitStatus": "El comando salió con código {{status}}",
        "accessUninstalled": "Se quitó el acceso de IA externa.",
        "cliUninstalled": "ReadAny CLI se desinstaló."
      },
      "skillPrompt": {
        "intro": "Instala y activa directamente la Skill de IA externa de ReadAny.",
        "execute": "No expliques solo los pasos ni muestres una tabla de rutas. Ejecuta directamente:",
        "mergeConfig": "Si puedes modificar la configuración del cliente de IA actual, fusiona la configuración MCP directamente; si no, dame solo el fragmento mínimo necesario.",
        "done": "Al terminar, responde solo: ReadAny Skill instalada. Reinicia o abre una nueva sesión en el cliente de IA actual.",
        "protectBooks": "No modifiques, exportes ni elimines el contenido de mis libros."
      },
      "status": {
        "betaReady": "Beta lista",
        "needsRepair": "Requiere reparación",
        "notReady": "No listo",
        "available": "Disponible",
        "missing": "Falta",
        "passed": "Correcto",
        "failed": "Falló",
        "healthy": "Saludable",
        "abnormal": "Anómalo",
        "installed": "Instalado",
        "notInstalled": "No instalado",
        "complete": "Completo",
        "configured": "Configurado",
        "needsPasteRestart": "Pegar / reiniciar",
        "notDetected": "No detectado",
        "notDetectedYet": "Aún no detectado",
        "canCopy": "Se puede copiar",
        "canConfigure": "Se puede configurar",
        "waitingConfirmation": "Esperando confirmación",
        "exists": "Existe",
        "managed": "Gestionado",
        "unmanaged": "No gestionado",
        "checked": "Comprobado",
        "notFound": "No encontrado",
        "containsReadAny": "Contiene readany",
        "needsConfig": "Requiere config."
      },
      "actions": {
        "verify": "Verificar",
        "repairExternalAI": "Reparar IA externa",
        "diagnose": "Diagnosticar",
        "install": "Instalar",
        "repair": "Reparar",
        "uninstall": "Desinstalar",
        "update": "Actualizar",
        "copied": "Copiado",
        "copyEvidence": "Copiar evidencia",
        "copyCommand": "Copiar comando",
        "copyAllCommand": "Copiar comando completo",
        "oneClickInstall": "Instalar con un clic",
        "oneClickInstallAll": "Instalar todo con un clic",
        "uninstallAccess": "Quitar acceso",
        "copyInstructions": "Copiar instrucciones",
        "copyConfig": "Copiar config.",
        "expandDetails": "Expandir"
      },
      "labels": {
        "cli": "CLI",
        "doctor": "Diagnóstico",
        "runtime": "Entorno de ejecución",
        "skill": "Habilidad",
        "clientLinks": "Enlaces de clientes",
        "mcpConfig": "Configuración MCP",
        "version": "Versión",
        "profile": "Permiso",
        "tools": "Herramientas",
        "commandSource": "Origen del comando",
        "client": "Cliente",
        "skillTarget": "Destino de habilidad",
        "returnedCommand": "Comando devuelto",
        "removedCliShim": "CLI shim eliminado",
        "removedSkill": "Habilidad eliminada",
        "distribution": "Distribución",
        "builtBundle": "Bundle construido",
        "desktopResource": "Recurso desktop",
        "nativeBinary": "Binario nativo",
        "usesNodeRuntime": "Usa runtime Node",
        "node": "Node",
        "nativeSqlite": "SQLite nativo",
        "bundleRoot": "Raíz del bundle",
        "entrypoint": "Punto de entrada",
        "nodeExecutable": "Ejecutable Node",
        "cliShim": "CLI shim",
        "mcpFormat": "Formato MCP"
      },
      "empty": {
        "runDiagnostics": "Ejecuta diagnóstico para mostrar resultados."
      },
      "doctorChecks": {
        "nodeRuntime": {
          "name": "Runtime Node",
          "message": "Runtime Node disponible en {{executable}} ({{version}})."
        },
        "nativeSqlite": {
          "name": "SQLite nativo",
          "ok": "better-sqlite3 está disponible para comandos de biblioteca y datos MCP.",
          "fail": "better-sqlite3 no está disponible; los comandos de biblioteca y datos MCP pueden fallar."
        },
        "readanyHome": {
          "name": "Directorio ReadAny",
          "ok": "El directorio ReadAny tiene permiso de escritura.",
          "fail": "El directorio ReadAny no tiene permiso de escritura."
        },
        "skill": {
          "name": "Habilidad",
          "ok": "ReadAny Skill está instalada en {{path}}.",
          "fail": "ReadAny Skill no está instalada en {{path}}."
        }
      }
    }
  }
}
