{
  "product": "YSK Server",
  "tagline": "AI-centric, security-first Linux server management platform",
  "company": "YSK Limited",
  "agents": {
    "title": "Tiempos de ejecución del agente de IA",
    "body": "Instalación y supervisión de OpenClaw / Hermes / IonClaw; todas las llamadas a herramientas pasan por la lista permitida y la aprobación.",
    "status": {
      "running": "Correr",
      "activating": "A partir de",
      "stuck": "Empezar atascado",
      "connected": "En línea",
      "registered": "Sólo registrado",
      "stale": "Duro",
      "disconnected": "Desconectado",
      "not_installed": "No instalado",
      "failed": "Fallido",
      "error": "Error",
      "unknown": "No investigado",
      "fallback": "Desconocido"
    },
    "cmdStatus": {
      "queued": "En cola",
      "acked": "Accionado",
      "done": "Hecho",
      "error": "Error"
    },
    "activatingStuckHint": "Activación durante más de 5 minutos: tratada como fallida. Consultar diario.",
    "noOnlineAgents": "No hay agentes en línea",
    "journal": "diario",
    "writeUnit": "escribir unidad",
    "writeUnitConfirm": "Escriba la unidad systemd para {{kind}} en /etc/systemd. El servicio no está iniciado ni habilitado.",
    "liveN": "{{count}} en línea",
    "registeredOnly": "Sólo registrado",
    "awaitProbe": "En espera de investigación",
    "runtimes": "Tiempos de ejecución",
    "running": "Correr",
    "liveAgents": "Agentes en línea",
    "fleet": "Flota",
    "aiTasks": "Tareas de IA",
    "expBanner": "Experimental.",
    "expBody": "Registro ≠ en línea. Las operaciones reales utilizan CLI:",
    "expDocs": "Documentos: repositorio",
    "expEdge": "En un borde:",
    "expPayload": "; recomendación de carga útil del comando",
    "fleetCan": "Qué puede hacer la flota",
    "fleetCanDesc": "No es una lista vacía: capacidades reales del plano de control para nodos de borde",
    "capRegister": "Registro",
    "capRegisterD": "Escribe la lista del plano de control (estado \"solo registrado\"): es posible que el proceso no se esté ejecutando",
    "capCommand": "Dominio",
    "capCommandD": "Ajustes preestablecidos de CLI (preparación/host/proyectos…) o personalizados; Edge tira, ejecuta ysk-server y confirma",
    "capHistory": "Historial de comandos",
    "capHistoryD": "en cola/hecho/error, código de salida, bonito resultado JSON",
    "capDelete": "Borrar",
    "capDeleteD": "Elimina la sesión y los mensajes relacionados.",
    "capStatus": "Estado",
    "capStatusD": "Solo registrado → en línea (latido) → obsoleto (>60 sin latido)",
    "statusFlowTitle": "Flujo de estado",
    "statusFlow": "Solo registrado → en línea → obsoleto (>60 s) → fuera de línea (desconectado). El filtro \"Sin conexión\" está desconectado.",
    "colSession": "UUID de sesión",
    "copySession": "Copiar UUID de sesión para clúster/CLI --session",
    "staleFor": "Invisible {{age}}",
    "commandTitle": "Poner en cola un comando para esta sesión",
    "historyTitleShort": "Abrir historial de comandos (solo lectura)",
    "fleetTitle": "Flota ({{count}})",
    "fleetDesc": "Registro del plano de control · registrado ≠ nodo en línea",
    "registerPlus": "+ Registrar agente",
    "colId": "ID",
    "colStatus": "Estado",
    "colGroup": "Grupo",
    "colLastSeen": "visto por última vez",
    "command": "Dominio",
    "history": "Historia",
    "emptyAgents": "No hay agentes registrados",
    "emptyAgentsDesc": "Regístrese desde la lista o espere a que los procesos perimetrales se registren automáticamente",
    "historyTitle": "Historial de comandos · {{id}}",
    "historyDesc": "en cola hasta que el nodo se retira;",
    "refreshHistory": "Actualizar historial",
    "colTime": "Tiempo",
    "finishedAt": "Terminado {{at}}",
    "colCommand": "Dominio",
    "colResult": "Resumen de resultados",
    "colExit": "Salida",
    "hasResult": "tiene resultado",
    "emptyCmds": "Aún no hay comandos",
    "emptyCmdsDesc": "Cola con “Comando”; permanece en cola hasta que el agente perimetral esté en línea",
    "edgeOnlineTitle": "Cómo se conectan los agentes de borde",
    "edgeOnlineDesc": "Después del registro del panel, el nodo debe ejecutar el bucle de salida para ejecutar comandos de latido/extracción.",
    "controlPlaneApi": "API del plano de control:",
    "controlPlaneHint": "(debe ser accesible; utilice la dirección del panel real en producción)",
    "queueNote": "Sin un proceso perimetral, el “Comando” todavía funciona: hace cola hasta que el agente se conecta.",
    "runtimeTitle": "Tiempos de ejecución de IA",
    "runtimeDesc": "Rutas y unidades de sonda;",
    "emptyRuntime": "Aún no hay resultados de la sonda",
    "emptyRuntimeDesc": "Actualice para cargar tiempos de ejecución o analice individualmente",
    "pathExists": "existe",
    "pathMissing": "No instalado",
    "unitUnknown": "{{unit}} · desconocido",
    "unitFallback": "unidad",
    "path": "Camino",
    "probe": "Sonda",
    "install": "Instalar",
    "recentOps": "Operaciones recientes",
    "registerTitle": "Agente de registro",
    "registerDesc": "Escribe únicamente la lista del plano de control; no significa que el nodo esté en línea",
    "register": "Registro",
    "agentId": "ID del agente",
    "agentIdHint": "ID único, p.e. Edge-1 o puerta de enlace de oficina",
    "group": "Grupo",
    "groupHint": "Para filtros de zonificación/lista",
    "registerNote": "El estado muestra \"solo registrado\" hasta que el nodo ejecuta el agente saliente y los latidos.",
    "cmdTitle": "Comando · {{id}}",
    "cmdTitlePlain": "Dominio",
    "cmdDesc": "En cola; El agente perimetral extrae, ejecuta y confirma (permanece en cola mientras está desconectado)",
    "enqueue": "poner en cola",
    "cmdPreset": "Comando (CLI primero)",
    "cmdTypeAria": "Tipo de comando",
    "customCli": "CLI personalizada",
    "cliArgs": "Argumentos CLI",
    "cliArgsHint": "No incluya el servidor ysk; p.ej. diario de registros --unidad nginx.service",
    "cmdNote": "La ejecución del agente Edge ysk-server ejecuta CLI JSON localmente (agrega --json). Los cambios de host aún necesitan YSK_EXECUTE=1 en el borde. Ver código de salida y JSON en Historial.",
    "resultTitle": "Resultado del comando · salir {{code}}",
    "resultTitlePlain": "Resultado del comando",
    "codeComment": "# Concepto: registro → bucle de latidos → extracción de comandos → reconocimiento\n# Biblioteca: ysk-server-core runOutboundAgent / agentCycle",
    "resultOuter": "Exterior: reconocimiento de borde (código de salida/stderr). Resultado interno:",
    "deleteTitle": "¿Eliminar {{id}}?",
    "deleteTitlePlain": "¿Eliminar agente?",
    "deleteDesc": "También se eliminará el historial de comandos relacionado.",
    "fact": {
      "kind": "Tipo",
      "name": "Nombre",
      "status": "Estado",
      "unitActive": "Servicio",
      "unitName": "Unidad",
      "pathExists": "El camino existe",
      "installPath": "Ruta de instalación"
    },
    "installBlocked": "No se puede completar la instalación en el panel de administración",
    "registeredMsg": "Registrado {{id}} (solo plano de control; el nodo debe ejecutar el agente de salida y el latido para conectarse)",
    "registerFailed": "Registro fallido",
    "removedFleet": "Se eliminó el registro de flota",
    "enqueuedMsg": "Comando en cola {{id}}… (se ejecuta después de extraer el nodo)",
    "enqueueFailed": "Error al poner en cola",
    "loadCommandsFailed": "No se pudieron cargar los comandos",
    "probedMsg": "Sondeado {{kind}}",
    "probeFailed": "Sonda fallida",
    "wroteUnitMsg": "Escribió {{kind}} configuración de la unidad",
    "writeFailed": "Error de escritura",
    "installedMsg": "Instalado {{kind}}",
    "installIncomplete": "Instalación incompleta",
    "badgeDryRun": "ejecución en seco",
    "badgeBlocked": "obstruido",
    "labelStderr": "stderr",
    "labelAckCli": "reconocimiento + CLI JSON",
    "labelStdoutBody": "Cuerpo de salida estándar CLI",
    "resultOuterHint": "El resultado externo es CLI --json stdout.",
    "noteAllowlist": "Las llamadas a la herramienta del agente deben pasar la lista de permitidos.",
    "noteRbacCap": "La función del agente tiene un límite de escritura baja."
  },
  "ai": {
    "status": {
      "completed": "Terminado",
      "done": "Hecho",
      "executed": "Ejecutado",
      "failed": "Fallido",
      "error": "Error",
      "rejected": "Rechazado",
      "pending": "Pendiente",
      "planned": "Planificado",
      "approved": "Aprobado",
      "running": "Correr",
      "cancelled": "Cancelado"
    },
    "activeCount": "{{count}} activo",
    "taskCount": "{{count}} tareas",
    "tasks": "Tareas",
    "active": "Activo",
    "tasksTab": "Tareas ({{count}})",
    "playbooksTab": "Libros de jugadas ({{count}})",
    "queueTitle": "cola de tareas",
    "queueSub": "Seleccione para ver el plan y los pasos · sin acciones adicionales en el estado terminal",
    "createTaskPlus": "+ Crear tarea",
    "emptyTasks": "Aún no hay tareas",
    "emptyTasksDesc": "Cree una tarea de la lista o ejecute un libro de estrategias",
    "browsePlaybooks": "Explorar manuales",
    "noPrompt": "(sin aviso)",
    "stepsOf": "Pasos {{done}}/{{total}}",
    "noPlanSummary": "(sin resumen del plan)",
    "pipelineAria": "Fases de la tarea",
    "phase": {
      "plan": "Plan",
      "approve": "Revisar",
      "run": "Ejecutar",
      "done": "Hecho"
    },
    "approveRun": "Aprobar y ejecutar",
    "cancelTask": "Cancelar tarea",
    "terminalHint": "Tarea finalizada: cree una nueva tarea o ejecute un libro de estrategias",
    "stepsTitle": "Pasos ({{count}})",
    "noSteps": "Aún no hay pasos",
    "needsApproval": "Necesita aprobación",
    "noApproval": "Sin aprobación",
    "reject": "Rechazar",
    "selectTask": "Seleccione una tarea",
    "selectTaskDesc": "Elija una tarea a la izquierda para ver el plan y los pasos",
    "playbooksTitle": "Libros de jugadas",
    "playbooksSub": "Operaciones preestablecidas · la ejecución crea una tarea y cambia a Tareas",
    "countItems": "{{count}}",
    "searchPh": "Nombre / descripción",
    "noPlaybooks": "No hay manuales que coincidan",
    "noPlaybooksDesc": "Cambiar palabras clave o borrar búsqueda",
    "run": "Correr",
    "createTitle": "Crear tarea de IA",
    "createDesc": "Planificación ≠ ejecutada. Las herramientas permanecen en la lista de permitidos.",
    "generatePlan": "generar plan",
    "promptLabel": "Instrucción en lenguaje natural",
    "promptHint": "p.ej. comprobar la carga del host; o estado de nginx",
    "promptPh": "Describe lo que quieres...",
    "createHint": "Siguiente: Apruebe y ejecute en el detalle de la tarea o rechace pasos individuales."
  },
  "apache": {
    "pageDesc": "Sitios Apache (proyectos PHP + independientes)",
    "pillSites": "{{count}} sitios",
    "pillSitesSplit": "{{n}} sitios · {{leftover}} sobrantes",
    "listTitle": "Sitios ({{count}})",
    "emptyTitle": "Sin sitios",
    "createSite": "+ Crear sitio",
    "createTitle": "Crear sitio",
    "editTitle": "Editar sitio",
    "deleteTitle": "¿Eliminar sitio?",
    "deleteDesc": "¿Eliminar este sitio Apache?",
    "stopSites": "{{n}} los sitios dejarán de responder HTTP.",
    "colServerName": "Nombre del servidor",
    "colSource": "Fuente",
    "colKind": "Tipo",
    "colTarget": "Objetivo",
    "colStatus": "Estado",
    "filterSource": "Filtro de fuente",
    "sourceAll": "Todo",
    "sourceProject": "Proyecto",
    "sourceStandalone": "Autónomo",
    "sourceArtifact": "En disco",
    "sourceOrphan": "Sobrante",
    "orphanSite": "Proyecto desaparecido",
    "openProject": "Abrir proyecto",
    "kindLabel": "Tipo",
    "kindProxy": "Apoderado",
    "kindStatic": "Estático",
    "kindPhp": "PHP",
    "upstreamLabel": "Río arriba",
    "rootLabel": "Raíz del documento",
    "sslLabel": "SSL",
    "sslTerminatedUpstream": "TLS termina al frente de Nginx",
    "apply": "Aplicar",
    "notInstalled": "apache no instalado",
    "globalSettings": "Configuraciones globales",
    "siteSettings": "Configuración del sitio",
    "saveApply": "Guardar y aplicar",
    "settingsSaved": "Guardado",
    "setGzip": "zip",
    "setShowVersion": "Mostrar versión",
    "setHttp2": "HTTP/2",
    "setBody": "cuerpo máximo",
    "setKeepalive": "Mantener vivo",
    "setAccessLog": "Registro de acceso",
    "logOn": "En",
    "logOff": "Apagado",
    "setForceHttps": "Forzar HTTPS",
    "setHsts": "HSTS",
    "setIndexes": "listado de directorio",
    "bodyInherit": "Global",
    "conflict": "Conflicto de nombres",
    "conflictHint": "El mismo nombre de servidor tiene varias fuentes. Mantenga la fila del proyecto/independiente y elimine los discos huérfanos.",
    "removeArtifact": "Eliminar residuos",
    "removeArtifactTitle": "¿Eliminar configuración residual?",
    "removeArtifactDesc": "Elimine esta configuración de Apache no reclamada del directorio de datos del panel y desactive el sistema gemelo cuando sea posible. No elimina el proyecto.",
    "removeArtifactHint": "Borra solo este conf residual en disco. No elimina el proyecto.",
    "previewConf": "Vista previa de configuración",
    "cleanupConflicts": "Limpiar los residuos del conflicto",
    "cleanupConflictsTitle": "¿Limpiar todos los residuos del conflicto?",
    "cleanupConflictsDesc": "Elimine todas las configuraciones de artefactos en el disco que entren en conflicto con un proyecto o un nombre de servidor independiente. Se mantienen las filas del proyecto.",
    "artifactRemovedOk": "Configuración residual eliminada"
  },
  "applyStatus": {
    "draft": "Borrador",
    "written": "Escrito (datos del panel)",
    "planned": "En curso",
    "applied": "Aplicado en el host",
    "failed": "Fallido",
    "pendingExecute": "Necesita ejecución del host",
    "uploaded": "subido",
    "issued": "Emitido",
    "missing": "Falta el archivo"
  },
  "audit": {
    "recent": "Auditoría reciente",
    "lastN": "Último {{n}}",
    "actions": {
      "protection.change": "La configuración de protección cambió",
      "auth.locale": "El idioma de la interfaz de usuario cambió",
      "auth.login": "Iniciado sesión",
      "auth.logout": "Cerrado sesión",
      "system.firewall.allow_port": "El firewall permite el puerto",
      "system.firewall.deny": "El firewall niega IP",
      "system.firewall.apply": "Aplicar firewall",
      "project.deploy": "Implementación del proyecto",
      "project.create": "Proyecto creado",
      "project.delete": "Proyecto eliminado",
      "ssl.request": "Solicitud SSL",
      "ssl.upload": "Carga SSL",
      "system.firewall.enable": "Activar/desactivar firewall",
      "system.firewall.delete_rule": "Eliminar regla de firewall",
      "system.firewall.delete_deny": "Eliminar IP denegada permanentemente",
      "db.adminer.apply": "proyecto de navegador de base de datos",
      "project.goLive": "Proyecto en marcha",
      "project.publish": "Publicar Nginx",
      "project.suspend": "Suspender proyecto",
      "software.install": "instalar software",
      "software.update": "Actualizar software",
      "backup.restore": "Restauración de copia de seguridad",
      "backup.run": "Ejecución de copia de seguridad",
      "backup.delete": "Copia de seguridad eliminada"
    }
  },
  "backups": {
    "settingsSaved": "Configuración de copia de seguridad guardada",
    "saveFailed": "Error al guardar",
    "downloadStarted": "Descarga iniciada: {{name}}",
    "nothingToDo": "Nada que hacer",
    "tarOkSideFail": "tar OK / los escalones laterales tuvieron problemas",
    "success": "Éxito",
    "hasFailures": "Tiene fallas",
    "notYet": "Aún no",
    "enabled": "Activado",
    "needPassword": "Contraseña faltante",
    "off": "Apagado",
    "lastRun": "Último {{label}}",
    "backupFiles": "Archivos de copia de seguridad",
    "projects": "Proyectos",
    "lastAll": "último todo",
    "latestFile": "Último archivo",
    "remote": "Remoto",
    "withBackups": "Proyectos con copias de seguridad",
    "ops": "Comportamiento",
    "remoteExclude": "Remoto / excluir",
    "about": "Acerca de",
    "noBackups": "Aún no hay copias de seguridad",
    "noBackupsDesc": "Ejecute \"Copia de seguridad de todos los proyectos\" o Copia de seguridad en un detalle del proyecto",
    "goOps": "Ir a acciones",
    "projectShort": "Proyecto",
    "download": "Descargar",
    "preview": "Avance",
    "restoreWeb": "Restaurar web",
    "restoreFull": "restauración completa",
    "restoreFullTitle": "Sobrescriba los archivos del proyecto y las bases de datos de este archivo: escriba el nombre del archivo para confirmar",
    "restoreWebTitle": "Restaurar archivos del sitio web solo desde este archivo",
    "previewTitle": "Vista previa de restauración sin escribir",
    "partialSkipped": "Parcial: algunos proyectos se omitieron",
    "delete": "Borrar",
    "opsTitle": "Comportamiento",
    "opsHint": "0 proyectos o todos omitidos = éxito;",
    "noProjects": "(sin proyectos)",
    "successRatio": "· {{ok}}/{{total}} vale",
    "summary": "Resumen{{extra}}",
    "backupFailed": "Error en la copia de seguridad",
    "backupDone": "Copia de seguridad completa",
    "backupAll": "Copia de seguridad de todos los proyectos",
    "controlPlane": "Plano de control de respaldo",
    "controlPlaneDone": "Copia de seguridad del plano de control completa",
    "cronCmd": "Comando: copia de seguridad del servidor ysk todo --data-dir…",
    "cronHint": "Programe la POST con install=true carga el crontab del host cuando EJECUTAR está activado;",
    "dailyCronRegistered": "Registrado diariamente horario 03:00",
    "registerDailyCron": "Registrar horario diario (+ instalar)",
    "resticNeedConfig": "Habilite restic y establezca la contraseña en Remoto/excluir primero",
    "resticFailed": "restic falló",
    "resticDone": "incremental restico completo",
    "resticOnly": "Ejecutar solo restic",
    "listSnapshots": "Listar instantáneas restic",
    "lastAllDetail": "Detalle de la última copia de seguridad completa",
    "time": "Tiempo",
    "result": "Resultado",
    "nothingZero": "Nada que hacer (0 proyectos)",
    "notes": "Notas",
    "status": "Estado",
    "skipped": "Saltado",
    "failed": "Fallido",
    "lastNoProjects": "Ningún proyecto necesitó respaldo la última vez.",
    "noPerProject": "No hay resultados por proyecto.",
    "remoteSide": "Escalones laterales remotos / restringidos",
    "step": "Paso",
    "remoteStep": "Remoto",
    "restoreProjectId": "Restaurar projectId (vacío = enumerar todo)",
    "needProjectOrTag": "Complete el ID del proyecto o la instantánea debe tener proyecto: etiqueta",
    "dryRunDone": "ejecución en seco completa (sin escritura)",
    "allSuccess": "Todo tuvo éxito",
    "failOrSkip": "Fallos/saltos",
    "noteN": "Nota {{n}}",
    "enableRemote": "Habilitar empuje remoto",
    "targetKind": "Tipo de objetivo",
    "remoteKindAria": "Tipo de objetivo remoto",
    "localPath": "Ruta local",
    "host": "Anfitrión",
    "port": "Puerto",
    "username": "Nombre de usuario",
    "password": "Contraseña",
    "passwordSshHint": "Vacío para usar la clave SSH del host",
    "savedLeaveEmpty": "Dejar vacío si ya está guardado",
    "s3Bucket": "Camino del cubo",
    "region": "Región",
    "endpointOptional": "Punto final (opcional)",
    "localMirror": "Ruta del espejo local",
    "remotePath": "Ruta remota",
    "remotePathHint": "Relativo a la casa del usuario remoto (o chroot SFTP). “.” es ese hogar.",
    "resticTitle": "incremental restrictivo",
    "resticDesc": "Opcional; restic en RUTA. Se requiere contraseña cuando está habilitada (no predeterminada)",
    "enableRestic": "Habilitar restic",
    "repoPath": "Ruta de repositorio",
    "repoPassword": "Contraseña del repositorio",
    "repoPassSaved": "Salvado; vacío = mantener. Requerido cuando está habilitado.",
    "repoPassRequired": "Requerido cuando restic está habilitado (sin contraseña predeterminada)",
    "savedPlaceholder": "Guardado (vacío = conservar)",
    "required": "Requerido",
    "s3RepoUrl": "O URL del repositorio de S3",
    "excludeTitle": "Excluir reglas",
    "excludeSub": "tar excluye rutas, un pegote por línea",
    "excludeList": "Lista de exclusión",
    "saveAll": "Guardar todas las configuraciones",
    "restoreFailed": "Restauración fallida",
    "previewDone": "Vista previa completa",
    "restoreDone": "Restauración completa",
    "previewQ": "¿Vista previa del contenido de la copia de seguridad?",
    "restoreWebQ": "¿Restauración selectiva (web)?",
    "restoreFullQ": "¿Restauración completa?",
    "previewDesc": "Lista {{name}} únicamente: sin cambios de archivos.",
    "restoreWebDesc": "Extraiga {{name}} al inicio del proyecto (más seguro).",
    "restoreFullDesc": "Restauración completa de alquitrán de {{name}}; puede sobrescribir archivos existentes.",
    "restore": "Restaurar",
    "cancel": "Cancelar",
    "deleteFailed": "Error al eliminar",
    "deleted": "Eliminado",
    "deleteTitle": "¿Eliminar el archivo de copia de seguridad?",
    "deleteDesc": "Eliminar permanentemente {{name}}",
    "tabTrash": "papelera de reciclaje",
    "trashTitle": "Papelera de reciclaje ({{count}})",
    "trashSub": "Los archivos eliminados permanecen aquí durante 7 días y luego se eliminan permanentemente.",
    "trashEmpty": "La papelera de reciclaje está vacía.",
    "trashEmptyDesc": "Los archivos de copia de seguridad eliminados aparecen aquí durante 7 días.",
    "trashRestore": "Restaurar",
    "trashPurge": "Eliminar para siempre",
    "trashEmptyAll": "Papelera de reciclaje vacía",
    "trashExpires": "Caduca {{at}}",
    "trashPurgeTitle": "¿Eliminar permanentemente esta copia de seguridad?",
    "trashPurgeDesc": "Eliminar permanentemente {{name}}. Esto no se puede deshacer.",
    "trashEmptyTitle": "¿Papelera de reciclaje vacía?",
    "trashEmptyDescConfirm": "Eliminar permanentemente {{count}} archivo(s). Escriba el recuento para confirmar.",
    "trashRestored": "Restaurado desde la papelera de reciclaje",
    "trashPurged": "Eliminado permanentemente",
    "trashedOk": "Movido a la papelera de reciclaje",
    "resticSafeTitle": "¿Restauración restic a un directorio seguro?",
    "resticSafeDesc": "Restaurar {{snapshot}} al proyecto {{project}} directorio .restic-restore-*",
    "resticRestoreDone": "restauración restic completa",
    "overwriteTitle": "Peligro: sobrescribir inicio",
    "overwriteDesc": "Sobrescribirá el inicio del proyecto {{project}}. Escriba SOBREESCRIBIR para confirmar.",
    "confirmString": "Confirmar cadena",
    "overwriteHome": "sobrescribir inicio",
    "resticOverwriteDone": "inicio de sobrescritura restic completa",
    "opsResult": "resultado de operaciones",
    "filesTitle": "Archivos de copia de seguridad ({{count}})",
    "filesSub": "Management-dir tar · descargar necesita iniciar sesión · restaurar: ejecución en seco / web / completo",
    "backupAllBtn": "Copia de seguridad de todo",
    "yes": "Sí",
    "no": "No",
    "safeDir": "directorio seguro",
    "remotePushTitle": "Objetivo de empuje remoto",
    "remotePushSub": "Después de que el tar local tenga éxito, envíelo a SFTP, ruta local o S3.",
    "accessKey": "Clave de acceso",
    "secretKey": "clave secreta",
    "overwriteConfirmHint": "Escriba OVERWRITE para confirmar la sobrescritura.",
    "testRemote": "Probar destino",
    "testRemoteHint": "Se conecta al host remoto y escribe un pequeño archivo de sonda. No de solo lectura.",
    "testRemoteDone": "Sonda remota finalizada",
    "testRemoteFailed": "Sonda remota fallida",
    "resticRepoPh": "Directorio de datos del panel / restic-repo",
    "testDisabledHint": "Active la pulsación remota antes de realizar la prueba.",
    "identityId": "Identidad SSH saliente",
    "identityHint": "Privilegiado. Misma bóveda que /security SSH. La contraseña necesita sshpass.",
    "identityNone": "Ninguno: contraseña o clave predeterminada",
    "skippedListHint": "Estos proyectos se omitieron:",
    "skippedPendingOs": "Omitido: usuario del sistema operativo/casa no aprovisionada",
    "goLogs": "Abrir registros",
    "goAbout": "Notas de respaldo",
    "previewListingTitle": "Contenidos del archivo",
    "restoreNamedDesc": "Restaurar {{name}} en el proyecto {{project}}.",
    "overwriteNamedDesc": "Sobrescriba los archivos del proyecto {{project}} desde la instantánea {{snapshot}}.",
    "resticSafeNamed": "Restaure la instantánea {{snapshot}} del proyecto {{project}} en un directorio seguro."
  },
  "btTracker": {
    "title": "Rastreador BT",
    "sub": "Self-hosted BitTorrent / WebTorrent tracker for file shares",
    "pageDesc": "Seed panel file shares over BitTorrent. Start the tracker, set a public announce host, then create BT shares in Files.",
    "status": "Estado",
    "running": "Correr",
    "stopped": "Interrumpido",
    "installed": "Installed (bundled)",
    "start": "Start tracker",
    "stop": "Stop tracker",
    "stopTitle": "Detenga el rastreador: la inicialización y las descargas se interrumpirán",
    "stopDesc": "Los torrents en ejecución dejan de anunciarse. Los pares se desconectan hasta que inicies el rastreador nuevamente.",
    "fillPublicHost": "Utilice {{host}}",
    "fillPublicHostTitle": "Complete el nombre de host del panel actual como host de anuncio público",
    "refresh": "Refrescar",
    "settings": "Ajustes",
    "httpPort": "HTTP / WebSocket port",
    "udpPort": "UDP port (0 = off)",
    "listenHost": "Listen host",
    "listenHostHint": "0.0.0.0 escucha en cada dirección. Prefiera 127.0.0.1 a menos que los pares deban comunicarse con este host.",
    "listenAllWarn": "Tracker está vinculado a todas las direcciones. Con el firewall desactivado, esto es público. Vincule 127.0.0.1 solo para local o restrinja el puerto en el firewall.",
    "bindLoopback": "127.0.0.1 solamente",
    "bindAll": "0.0.0.0 (todos)",
    "wsEnabled": "WebSocket tracker (browser WebTorrent)",
    "wsEnabledHint": "Required for browser WebTorrent clients",
    "autostart": "Autostart with panel",
    "autostartHint": "Start tracker when ysk-server serve boots",
    "publicAnnounceHost": "Public announce host",
    "publicAnnounceHostHint": "Host or host:port used in magnet announce URLs. Empty = 127.0.0.1 until you set a public hostname.",
    "maxSeeds": "Max concurrent seeds",
    "seederPorts": "Seeder peer ports",
    "seederPortMin": "Inicio del puerto de pares",
    "seederPortMax": "Extremo del puerto par",
    "seederPortsHint": "Local peer listen range for the in-process seeder",
    "saveSettings": "Save settings",
    "applyHint": "Saving ports does not open the firewall — use network exposure or Start after EXECUTE.",
    "torrents": "Tracked torrents",
    "torrentsEmpty": "No announce traffic yet",
    "torrentsEmptyHint": "Create a file share with BitTorrent mode in Files. This table fills as peers announce and the server seeds.",
    "torrentsDesc": "Live swarm from the tracker, plus local seeder status for panel shares.",
    "colName": "Nombre",
    "colHash": "Info hash",
    "colSeeds": "Semillas",
    "colLeechers": "sanguijuelas",
    "colStatus": "Estado",
    "announceUrls": "Announce URLs",
    "announceDesc": "Put these trackers in clients, or rely on magnets generated by the panel.",
    "copy": "Copiar",
    "copied": "copiado",
    "statsTorrents": "Torrentes",
    "statsLibrary": "Biblioteca",
    "statsLibraryHint": "Torrents en la biblioteca del panel/archivos compartidos",
    "statsTrackerLeftover": "Tracker leftover",
    "statsTrackerLeftoverHint": "Tracker announce hashes that are not library rows",
    "leftoverHashesTitle": "Hashes sobrantes del rastreador",
    "publicHostMissingLive": "El rastreador está escuchando pero el host de anuncio público no está configurado. Los pares fuera del host no pueden encontrar esta semilla.",
    "leftoverHashesHint": "Sólo lectura. Estos anuncios no son bibliotecas ni filas compartidas.",
    "statsPeers": "Colegas",
    "statsAnnounces": "anuncia",
    "statsAnnouncesHint": "Anunciar solicitudes vistas por el proceso de seguimiento.",
    "statsJobs": "Active jobs",
    "openShares": "File shares",
    "needExecute": "Enable system-change permission (YSK_EXECUTE) to open ports and run production seeds.",
    "guideTitle": "What is this?",
    "guideBody": "When you create a BT file share, YSK builds a .torrent, seeds it, and announces peers via this tracker. Open the port if downloaders are off-host.",
    "restoreSeeds": "Re-seed BT shares",
    "restoreSeedsHint": "Start tracker if needed and re-seed shares that still have a .torrent on disk.",
    "bundledNote": "Bundled with YSK Server (Node). No apt install/uninstall — Start/Stop manages the process.",
    "stackTitle": "Software",
    "jobs": "Torrent jobs",
    "jobsEmpty": "No background torrent jobs",
    "jobsEmptyHint": "Large shares (≥128 MiB) build .torrent files in the background so the Files dialog stays responsive.",
    "jobsDesc": "Background create-torrent queue for large file or folder shares.",
    "colJob": "Trabajo",
    "colShare": "Compartir",
    "colJobStatus": "Job status",
    "colEnqueued": "Enqueued",
    "refreshJobs": "Refresh jobs",
    "tabOverview": "Descripción general",
    "tabTorrents": "Torrentes",
    "tabJobs": "Empleos",
    "tabSettings": "Ajustes",
    "tabAbout": "Acerca de",
    "heroRunning": "Tracker is live",
    "heroStopped": "Tracker is stopped",
    "heroRunningSub": "Peers can announce and discover seeds for panel shares.",
    "heroStoppedSub": "Start the tracker before sharing large files over BitTorrent.",
    "live": "Vivir",
    "liveOff": "Inactivo",
    "quickStart": "Quick start",
    "quickStartDesc": "Three steps to share files over BitTorrent.",
    "step1Title": "Set public announce host",
    "step1Hint": "Hostname clients use in magnets (Settings).",
    "step2Title": "Start the tracker",
    "step2Hint": "Open port exposure if peers are off this host.",
    "step3Title": "Create a BT share",
    "step3Hint": "In Files → Share, choose BitTorrent or both.",
    "stepDone": "Hecho",
    "stepTodo": "Hacer",
    "networkCard": "Red",
    "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
    "seederCard": "Sembradora",
    "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
    "lifecycleCard": "Ciclo vital",
    "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
    "pid": "PID",
    "port": "Puerto",
    "announceHost": "Announce host",
    "goSettings": "Open settings",
    "searchTorrents": "Search name or hash…",
    "filterAll": "Todo",
    "filterSeeding": "siembra",
    "filterOther": "Otro",
    "noMatch": "No torrents match your filter",
    "seedStatusSeeding": "siembra",
    "seedStatusPending": "Pendiente",
    "seedStatusError": "Error",
    "seedStatusStopped": "Interrumpido",
    "seedStatusNone": "Ninguno",
    "notesTitle": "Service notes",
    "exposureTitle": "Network access",
    "protoHttp": "HTTP",
    "protoWs": "WS",
    "protoUdp": "UDP",
    "saveOk": "Settings saved",
    "saveOkRestart": "Guardado: reinicie el rastreador para aplicar puertos",
    "startedOk": "Tracker started",
    "stoppedOk": "Tracker stopped",
    "restoredOk": "Re-seed finished",
    "restoredCount": "Resembrado {{seeded}} de {{attempted}} torrents",
    "portInvalid": "Ingrese un puerto del 1 al 65535.",
    "extraTrackerRequired": "Ingrese una URL de anuncio.",
    "stopPort": "El puerto de seguimiento {{port}} dejará de escuchar.",
    "stopPid": "El proceso PID {{pid}} saldrá.",
    "swarmLeftoverUnlisted": "{{count}} los anuncios sobrantes adicionales no tienen hash en esta lista.",
    "httpPortHint": "Default 8000 (YSK catalog / firewall chip). Open TCP if peers are off-host.",
    "udpPortHint": "Optional classic UDP announce. 0 = off (browser WebTorrent uses HTTP/WS). Prefer 6969 or the same port as HTTP if you open UDP on the firewall.",
    "udpPortOff": "0 · Off",
    "udpPortSameHttp": "Same as HTTP ({{port}})",
    "udpPortClassic": "6969 · Classic",
    "portSuggest8000": "8000 · Recommended",
    "announceHostUnset": "No definido",
    "tabTrackers": "Rastreadores",
    "addTorrent": "Agregar torrente",
    "addTorrentTitle": "Agregar torrente",
    "addTorrentHint": "Sube un .torrent o pega un imán. Elija una carpeta de Archivos. WebTorrent descarga los archivos y las semillas que faltan cuando se completa.",
    "dropTorrent": "Suelta un .torrent aquí",
    "chooseFile": "o elige un archivo",
    "magnetLabel": "Imán",
    "magnetPlaceholder": "imán:?xt=urna:btih:…",
    "inspect": "Leer",
    "extraTrackersPreview": "También anunciará a {{n}} rastreadores adicionales",
    "saveLocation": "Guardar ubicación",
    "saveRootPublic": "Archivos públicos",
    "newFolder": "Nueva carpeta",
    "destPreview": "escribirá a",
    "startDownload": "Iniciar descarga",
    "filterDownloading": "Descargando",
    "filterPaused": "En pausa",
    "filterError": "Error",
    "emptyDrop": "Suelta un .torrent aquí o elige un archivo",
    "emptyHint": "Los archivos van en la carpeta que elijas. Si ya están completos, este hospeda las semillas. Motor: WebTorrent: no se requiere descarga de software adicional.",
    "pause": "Pausa",
    "resume": "Reanudar",
    "openFolder": "Abrir carpeta",
    "remove": "Eliminar",
    "removeKeep": "Eliminar, conservar archivos",
    "removeDelete": "Quitar y eliminar archivos",
    "removeConfirm": "¿Eliminar este torrent de la biblioteca?",
    "kindShare": "Compartir",
    "filesInTorrent": "archivos",
    "extraTrackersDesc": "URL de anuncio adicionales. Las semillas de descarga/semilla de biblioteca y de archivos compartidos las utilizan además de la lista .torrent. Esto no abre el rastreador local a enjambres arbitrarios.",
    "extraTrackersEmpty": "Sin rastreadores adicionales. Agregue URL de anuncio HTTP(S), UDP o WS(S) para que este host pueda encontrar pares.",
    "extraTrackerAdd": "Agregar",
    "extraTrackerUrl": "Anunciar URL",
    "extraTrackerApply": "Aplicar a las semillas actuales.",
    "extraTrackerApplyOk": "Rastreadores adicionales aplicados",
    "extraEnabled": "En",
    "extraTrackerBad": "La URL debe comenzar con http://, https://, udp://, ws:// o wss://.",
    "extraTrackerDup": "Ya listado",
    "extraTrackerLimit": "Máximo 32 rastreadores adicionales",
    "addOk": "Agregado a la biblioteca",
    "savedTo": "Ahorrar",
    "folderEmpty": "Sin subcarpetas",
    "needTorrentFile": "Elija un archivo .torrent",
    "torrentTooBig": ".torrent de más de 8 MiB",
    "seedStatusDownloading": "Descargando",
    "seedStatusChecking": "De cheques",
    "seedStatusPaused": "En pausa",
    "seedStatusQueued": "En cola",
    "swarmLeftover": "El Tracker tiene {{count}} anuncio(s) que no están en la biblioteca (origen distinto de la lista de torrents)",
    "addSourceSection": "Origen",
    "addSourceFile": "Archivo",
    "addSourceMagnet": "Imán",
    "previewSection": "Vista previa",
    "saveRoot": "Raíz",
    "clearFile": "Quitar archivo",
    "extraTrackersTitle": "Announce extra",
    "extraTrackersEmptyTitle": "Aún no hay trackers",
    "extraEnabledCount": "{{count}} activos",
    "extraApplyHint": "Active al menos uno para aplicar a las semillas actuales",
    "destMode": "Uso de esta carpeta",
    "seedExisting": "Sembrar archivos existentes",
    "downloadNewFolder": "Descargar en una carpeta nueva",
    "destFileConflict": "Ya existe el archivo {{name}}. Elija otra carpeta o siembre el archivo existente si coincide.",
    "waitingPeers": "Esperando pares. Si los archivos ya están en este host, vuelva a añadir y elija sembrar existentes."
  },
  "catalog": {
    "sw": {
      "vsftpd": "vsftpd (FTPS)",
      "db_util": "db-util (base de datos de usuario FTP)",
      "nginx": "Nginx",
      "certbot": "Certbot (Let's Encrypt)",
      "mysql_client": "Cliente MySQL/MariaDB",
      "mysql_server": "servidor mysql",
      "mariadb_server": "servidor mariadb",
      "postgresql_client": "Cliente PostgreSQL",
      "postgresql": "Servidor PostgreSQL",
      "redis_tools": "Cliente Redis",
      "redis_server": "servidor redis",
      "ufw": "cortafuegos UFW",
      "fail2ban": "fail2ban",
      "postfix": "Postfix",
      "dovecot": "Dovecot",
      "opendkim": "OpenDKIM",
      "pdns_server": "PowerDNS",
      "git": "git",
      "node": "Node.js",
      "php": "PHP",
      "python": "Python",
      "go": "Go",
      "rust": "Rust",
      "chromium": "Chromium / Chrome"
    },
    "php": {
      "session": "Sesión",
      "opcache": "OPcache"
    }
  },
  "cdn": {
    "fromProjectOk": "Sitio CDN creado a partir del proyecto: aplicar bordes/DNS",
    "fromProjectUpdated": "Sitio CDN actualizado vinculado al proyecto",
    "fromProjectFailed": "Error del proyecto",
    "nodeUpdated": "Nodo actualizado",
    "nodeCreated": "Nodo creado",
    "saveFailed": "Error al guardar",
    "geoMapInvalid": "JSON de geoMap no válido, p. {\"hkg\":[\"id-nodo\"]}",
    "siteUpdated": "Sitio actualizado",
    "siteCreated": "Sitio creado",
    "probeOnline": "Sonda OK (en línea)",
    "probeOffline": "La sonda falló (fuera de línea)",
    "probeFailed": "Sonda fallida",
    "batchProbeOk": "Todos los nodos sondeados",
    "batchProbePartial": "Algunos/todos los nodos no están en buen estado",
    "batchProbeFailed": "Error en la sonda por lotes",
    "drainingSet": "Establecer para drenar",
    "drainCleared": "Drenaje despejado",
    "confirmDeleteNode": "¿Eliminar este nodo CDN?",
    "nodeDeleted": "Nodo eliminado",
    "deleteFailed": "Error al eliminar",
    "confirmDeleteSite": "¿Eliminar este sitio CDN?",
    "siteDeleted": "Sitio eliminado",
    "blocked": "Bloqueado (necesita permiso de cambio de sistema)",
    "previewRender": "Vista previa de renderizado ({{status}}) hash={{hash}}",
    "fanoutDone": "Distribución realizada ({{status}})",
    "purgeDone": "Purga realizada ({{status}})",
    "dnsSyncDone": "Sincronización de DNS realizada ({{status}})",
    "sslDone": "SSL hecho ({{status}})",
    "confWritten": "Conf escrito ({{status}})",
    "partialFail": "No fue completamente exitoso ({{status}}) — ver notas",
    "statNodes": "Nodos",
    "hitNoStats": "Aún no hay estadísticas de borde",
    "loopbackOriginBlocked": "No se aplicará el origin de bucle {{url}} a un borde remoto. Ponga un origin alcanzable.",
    "applyFailedHint": "Fallo al aplicar — vea las notas abajo",
    "applyFailedNoNote": "No hay motivo almacenado. Vuelva a aplicar para capturar el error.",
    "applyStatus": {
      "draft": "Borrador",
      "planned": "Planificado",
      "applying": "Aplicando",
      "applied": "Aplicado",
      "failed": "Fallido",
      "partial": "Parcial"
    },
    "statSites": "Sitios",
    "statSitesCount": "{{n}} sitios",
    "cacheMethod": {
      "none": "Sin estimación",
      "access_log": "Registro de acceso",
      "cache_dir": "Directorio de caché",
      "log_format": "Necesita formato de registro"
    },
    "geoMapLabel": "Mapa geográfico (JSON)",
    "statApplyFailed": "No se pudo aplicar",
    "pillNodesSites": "{{n}} nodos · {{s}} sitios",
    "statOnline": "En línea",
    "statHit": "Tasa de aciertos",
    "hitUnknown": "Desconocido",
    "lastHealthHint": "Última sonda {{at}} · {{ok}}",
    "lastHealthNever": "Aún no sondeado: ejecute Sondeo",
    "lastHealthFail": "sonda fallida",
    "healthLoopNeedSites": "Agrega un sitio primero",
    "nodeStatus": {
      "online": "en línea",
      "offline": "desconectado",
      "draining": "drenaje",
      "unknown": "desconocido"
    },
    "recentNotes": "Notas recientes",
    "previewOnlyNote": "Solo vista previa: no se escribió nada en los bordes.",
    "statByRegion": "Región:",
    "statByApply": "Estado de la solicitud:",
    "col": {
      "origin": "Origen",
      "edges": "Bordes",
      "apply": "Aplicar",
      "dns": "DNS",
      "edgesOnline": "Bordes en línea / aplicados",
      "dnsRr": "Registros DNS CDN"
    },
    "mode": {
      "origin_pull": "atracción de origen",
      "reverse_proxy": "proxy inverso",
      "static_edge": "Borde estático"
    },
    "dnsStrategy": {
      "multi_a": "Múltiples registros A",
      "cname": "CNAME",
      "geo": "Geo"
    },
    "edgesOnlineApplied": "{{online}}/{{total}} en línea · {{applied}} aplicado",
    "hitMiss": "Aciertos {{hits}} / fallos {{misses}}",
    "cacheBytes": "Caché ≈ {{n}} B",
    "hitRateUnknown": "No hay registro de acceso con estado de caché ni directorio de caché, por lo que no se puede estimar la tasa de aciertos.",
    "edgeConfPreview": "Vista previa de configuración de borde de Nginx",
    "tabs": {
      "nodes": "Nodos",
      "sites": "Sitios",
      "dashboard": "Panel",
      "about": "Acerca de"
    },
    "nodesTitle": "Nodos CDN ({{count}})",
    "nodesDesc": "Control de registro / origen / borde / dns. Estado de las actualizaciones de la sonda.",
    "offlineHint": "Sin conexión: la sonda falló. Retire el nodo si sobra.",
    "colName": "Nombre",
    "colRole": "Role",
    "colStatus": "Estado",
    "clearDrain": "Drenaje claro",
    "drain": "Drenar",
    "drainTitle": "Dejar de enviar nuevo tráfico CDN a este borde",
    "drainDesc": "¿Drenar “{{name}}”? Las conexiones existentes permanecen hasta que finalizan.",
    "drainLastTitle": "Este es el último borde: el drenaje dejará todos los sitios sin borde.",
    "drainLastDesc": "“{{name}}” es la única ventaja. Drenelo y todos los sitios no tendrán ventaja.",
    "clearDrainTitle": "Aceptar nuevo tráfico en este borde nuevamente",
    "clearDrainDesc": "¿Drenaje limpio en “{{name}}”?",
    "deleteNodeTitle": "Eliminar este borde CDN",
    "deleteLastNodeTitle": "Elimine el último borde: todos los sitios no tendrán borde",
    "purge": "Purga",
    "previewTitle": "Vista previa de la configuración de nginx (sin escritura)",
    "writeConfTitle": "Escribir archivos de configuración de Edge Nginx",
    "applyEdgesTitle": "Aplicar este sitio a los bordes (escribe nginx)",
    "purgeTitle": "Purgar caché en los bordes",
    "dnsSyncTitle": "Escribir registros DNS CDN",
    "probeDnsTitle": "Bordes de sonda y DNS (solo lectura)",
    "distSslTitle": "Copie materiales TLS a los bordes",
    "leIssueTitle": "Emitir un certificado Let's Encrypt y distribuirlo",
    "deleteSiteTitle": "Eliminar este sitio CDN",
    "siteOpConfirmGeneric": "¿Ejecutar esta acción en “{{name}}”?",
    "siteOpConfirmDesc": "Sitio “{{name}}” · {{action}}. Esto puede cambiar nginx, DNS o certificados.",
    "siteOpConfirm": {
      "apply": "¿Aplicar este sitio a los bordes?",
      "render": "¿Escribir configuración de nginx para este sitio?",
      "purge": "¿Borrar caché de este sitio?",
      "dns-sync": "¿Sincronizar DNS para este sitio?",
      "dist": "¿Distribuir TLS a los bordes?",
      "issue": "Problema ¿Vamos a cifrar y distribuir?"
    },
    "emptyNodesTitle": "Aún no hay nodos CDN",
    "emptyNodesDesc": "Utilice “+ Agregar nodo” para registrar una ventaja y luego cree sitios.",
    "sitesTitle": "Sitios CDN ({{count}})",
    "sitesDesc": "Dominio + origen + bordes + caché + DNS multi-A. Aplicar bordes/sincronización DNS/purgar.",
    "healthLoopOk": "Ciclo de salud finalizado para todos los sitios",
    "healthLoopPartial": "El circuito de salud falló parcialmente",
    "healthLoopFailed": "error en el circuito de salud",
    "colDomain": "Dominio",
    "colMode": "Modo",
    "emptySitesTitle": "Aún no hay sitios CDN",
    "emptySitesDesc": "Utilice \"+ Agregar sitio\" en la barra de herramientas de la tabla.",
    "emptySitesNoEdge": "Aún no hay bordes: primero registre los nodos en la pestaña Nodos y luego cree un sitio.",
    "dashboardTitle": "Panel de CDN",
    "updatedAt": "Actualizado {{at}}",
    "dashboardEmpty": "Panel no cargado",
    "siteStatus": "Estado del sitio",
    "cacheHitEstimate": "Tasa de aciertos de caché (estimación)",
    "dashboardNotes": "Notas del tablero",
    "editNode": "Editar nodo CDN",
    "addNode": "Agregar nodo CDN",
    "nodeAddrHint": "Complete al menos uno de IPv4/IPv6/healthUrl/baseUrl",
    "sshHostHint": "Vacío = usar IPv4; 127.0.0.1 = aplicación local",
    "sshHostPlaceholder": "Dejar vacío para IPv4 público",
    "sshUser": "Usuario SSH",
    "fleetHint": "Solo flota (sin SSH): colas de distribución para el agente;",
    "fleetPlaceholder": "UUID de sesión de página de agentes",
    "editSite": "Editar sitio CDN",
    "addSite": "Agregar sitio CDN",
    "originHint": "Origen como URL por ahora; enlace del proyecto más tarde",
    "commaSeparated": "Separados por comas",
    "originUrl": "URL de origen de borde",
    "edgeNodes": "Nodos de borde",
    "cache": "Cache",
    "dnsPolicy": "política de DNS",
    "dnsPolicyHint": "multi_a = múltiples IP; conmutación por error = solo lo más saludable",
    "zoneOptional": "Vacío = zona de coincidencia automática por dominio",
    "sslMode": "modo SSL",
    "sslModeHint": "subir = certificado en la página SSL; le_http01 = borde ACME",
    "leEmailOptional": "Correo electrónico LE (opcional)",
    "leEmailHint": "Precarga para emisión",
    "shieldHint": "Origen de los bordes sin escudo a través de este nodo",
    "geoMapHint": "Para estrategia = geo, p. {\"hkg\":[\"id1\"],\"nrt\":[\"id2\"]}",
    "geoSubdomain": "Subdominio geográfico",
    "addNodeBtn": "+ Agregar nodo",
    "addSiteBtn": "+ Agregar sitio",
    "probeAll": "Sondear todo",
    "healthLoop": "Bucle de salud",
    "setDraining": "Establecer drenaje",
    "fromProjectUpdatedAlt": "Sitio CDN actualizado vinculado al proyecto",
    "refresh": "Refrescar",
    "closePreview": "Cerrar vista previa",
    "probe": "Sonda",
    "preview": "Avance",
    "writeConf": "Escribir configuración",
    "applyEdges": "Aplicar bordes",
    "dnsSync": "sincronización DNS",
    "probeDns": "Sonda+DNS",
    "distSsl": "Distribuir SSL",
    "leIssue": "problema LE",
    "reaggregate": "Actualizar agregado",
    "createEdgeFirst": "Primero crea un nodo de borde",
    "enableProxyCache": "Habilitar proxy_cache",
    "autoMatch": "(coincidencia automática)",
    "none": "(ninguno)",
    "writeRegionDns": "Escribe el subdominio de región A/AAAA (por ejemplo, hkg)",
    "workflowHint": "Flujo: escribir conf → aplicar bordes → sonda+DNS → SSL",
    "healthLoopAll": "Bucle de salud en todos los sitios",
    "deleteNodeDesc": "Elimina el nodo CDN \"{{name}}\".",
    "deleteSiteDesc": "Elimina el sitio CDN \"{{name}}\".",
    "deleteSiteC1": "Política del sitio y asociaciones perimetrales",
    "deleteSiteC2": "Las configuraciones de nginx aplicadas pueden necesitar una limpieza por separado o volver a aplicarse",
    "statOnlineOf": "En línea {{n}}/{{total}}",
    "colRegion": "Región",
    "statDraining": "Drenaje {{n}}",
    "statOffline": "Sin conexión {{n}}",
    "localTest": "local / prueba",
    "statHitRate": "Tasa de aciertos {{v}}"
  },
  "cli": {
    "unknownCommand": "Comando desconocido: {{command}}\nEjecute `{{cli}} ayuda`",
    "usagePrefix": "Uso:",
    "security": {
      "help": "Uso: estado de seguridad del servidor ysk\n       Lista de sesiones de seguridad del servidor ysk|revocar|revocar-otros [--usuario U]\n       Lista de claves de API de seguridad del servidor ysk|crear|eliminar…",
      "sessionsHelp": "Uso: lista de sesiones de seguridad del servidor ysk [--usuario U]\n       revocar sesiones de seguridad del servidor ysk --id PREFIJO [--usuario U]\n       sesiones de seguridad del servidor ysk revocar-otros [--usuario U] [--keep-token T]",
      "apiKeysHelp": "Uso: lista de claves de API de seguridad del servidor ysk\n       claves de API de seguridad del servidor ysk crear --nombre N [--usuario U] [--alcance completo|leer]\n       Eliminación de claves de API de seguridad del servidor ysk --id KEY_ID",
      "noUser": "No se encontró ningún usuario. Primero cree administrador o pase --user <nombre|id>",
      "tokenOnce": "token mostrado una vez: almacenar de forma segura",
      "sessionRevokeUsage": "Uso: revocar sesiones de seguridad del servidor ysk --id <sessionIdPrefix> [--user U]",
      "apiKeyDeleteUsage": "Uso: eliminar claves de API de seguridad del servidor ysk --id KEY_ID"
    },
    "help": {
      "blurb": "CLI del plano de control: prefiera --json para agentes de IA.\nDocumentos: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json",
      "main": "{{product}} ({{cli}}) v{{version}}\n\nCLI del plano de control: prefiera --json para agentes de IA.\nDocumentos: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\nUso:\n  {{cli}} <comando> [opciones]\n\nComandos:\n  configurar Init dataDir + admin\n  actualizar Autoactualización verificar/aplicar\n  servir HTTP API + interfaz de usuario web\n  instalación de unidad del sistema Instalar ysk-server.service [--enable]\n  herramientas Lista de herramientas; ejecución de herramientas --tool <nombre> [--ejecución en seco]\n  preguntar NL → plan AI [--ejecutar]\n  lista de proyectos|obtener|crear|implementar|detener|salud|copia de seguridad|plantilla\n  hacer copia de seguridad de todo|lista|estado|restaurar|eliminar|programar|plano de control|configuración|restic\n  plantillas plantillas de aplicaciones\n  hosting nginx|dns|db|ayudantes de firewall\n  zona dns|zonas (alias AI → hosting dns-*)\n  fuentes de registros|consulta|revista|descripción general\n  descripción general del host|métricas (solo lectura)\n  estado de nginx|lista|prueba|sincronización\n  lista ssl|obtener (certificados)\n  lista de clústeres de base de datos|obtener|crear|plan (primero el plan HA)\n  lista de claves ssh|crear|importar|público|exportar|instalar|eliminar (bóveda de identidad SSH)\n  lista ssh-2fa|inscribirse|confirmar|instalar|pam|retirar (iniciar sesión SSH TOTP ≠ panel 2FA)\n  servicios Matriz de servicios de host (sonda systemctl)\n  defensa | estado de protección|prohibición|desbancar|lista blanca\n  estado de seguridad|sesiones|claves API (indicadores 2FA · revocación de sesión · claves API)\n  nodos cdn|sitios|renderizar|aplicar|purgar|sonda|panel de control|bucle de salud|desde-proyecto\n  tiempos de ejecución de agentes|lista de flota|comandos|registro (panel + borde)\n  ejecución del agente Sondeador de flota saliente (experimental)\n  estado de la tienda|exportar|importar|migrar (json|sqlite|backends de documentos postgres)\n  lista de archivos|leer|escribir|mkdir|rm|stat|rename|copiar|mover|chmod|trash|shares (sandbox)\n  lista cron|crear|eliminar|habilitar|deshabilitar|ejecutar|instalar|estado\n  dominios de correo electrónico|buzones de correo|capacidad de entrega|bootstrap|dns (paridad de panel)\n  salud Instantánea del modo local o --url http://host:puerto/salud\n  preparación | doctor Preparación para la producción (honesto)\n  migrar inventario|host|post|status|resume (migración de host completo)\n  versión | ayuda\n\nMundiales:\n  --json Salida estándar JSON (AI)\n  --data-dir RUTA\n  --config RUTA\n  --ayuda | --versión\n\nSalir: 0 ok · 1 error · 2 validación · 3 bloqueado · 4 no encontrado · 5 error de host\n\nSeguridad:\n  Las operaciones peligrosas se ejecutan de forma predeterminada en seco (solo plan).\n  Pase --execute (alias --apply) + env YSK_EXECUTE=1 para mutar el host.\n\nEjemplos:\n  {{cli}} preparación --json\n  {{cli}} anfitrión --json\n  {{cli}} estado de nginx --json\n  {{cli}} lista ssl --json\n  {{cli}} los proyectos obtienen --id UUID --json\n  {{cli}} prohibición de defensa --ip 1.2.3.4 --json # plan de ejecución en seco\n  {{cli}} lista de proyectos --json\n  {{cli}} consulta de registros --diario fuente: --lines 100 --json\n  {{cli}} herramientas --json"
    },
    "usage": {
      "tools": {
        "run": {
          "--tool": {
            "name": {
              "--arg": {
                "cd327c": "Uso: ejecución de herramientas de ysk-server --tool <nombre> [--arg key=val] [--dry-run]"
              }
            }
          }
        }
      },
      "email": {
        "domains": {
          "list": {
            "create": {
              "get": {
                "b94a62": "Uso: lista de dominios de correo electrónico del servidor ysk|crear|obtener…"
              }
            }
          },
          "create": {
            "--domain": {
              "example": {
                "bd4036": "Uso: creación de dominios de correo electrónico del servidor ysk --dominio ejemplo.com --ip A.B.C.D"
              }
            }
          }
        },
        "mailboxes": {
          "list": {
            "create": {
              "42b26c": "Uso: lista de buzones de correo electrónico del servidor ysk | crear…"
            }
          },
          "create": {
            "--domain": {
              "example": {
                "7227f3": "Uso: crear buzones de correo electrónico del servidor ysk --dominio ejemplo.com --usuario local [--contraseña P]"
              }
            }
          }
        },
        "dns": {
          "--domain": {
            "example": {
              "com": {
                "26b806": "Uso: dns de correo electrónico del servidor ysk --dominio ejemplo.com"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "73dad0": "Uso: correo electrónico del servidor ysk <sub> [--data-dir PATH] [--json]\n  lista de dominios|crear|obtener [--q TEXTO]\n    crear --dominio ejemplo.com --ip A.B.C.D\n    obtener --dominio ejemplo.com | --id UUID\n  lista de buzones de correo|crear [--dominio D | --id IdDominio]\n    crear --dominio D --usuario local [--contraseña P]\n  capacidad de entrega --dominio D | --id UUID\n  descripción general de la capacidad de entrega\n  bootstrap --dominio D --ip A.B.C.D [--instalar]\n  dns --dominio D | --id UUID # Paquete DNS para panel\nTambién: hosting email-apply|email-mailbox|email-deliverability (alias)"
              }
            }
          }
        },
        "deliverability": {
          "--domain": {
            "example": {
              "com": {
                "b0dff0": "Uso: capacidad de entrega de correo electrónico del servidor ysk --dominio ejemplo.com"
              }
            }
          }
        },
        "bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "affc8d": "Uso: arranque de correo electrónico del servidor ysk --domain example.com --ip 1.2.3.4 [--install]"
              }
            }
          }
        }
      },
      "cron": {
        "delete": {
          "--id": {
            "job": {
              "id": {
                "f6aafe": "Uso: eliminación cron del servidor ysk --id JOB_ID"
              }
            }
          }
        },
        "sub": {
          "--id": {
            "job": {
              "id": {
                "99cfdf": "Uso: cron del servidor ysk {{sub}} --id JOB_ID"
              }
            }
          },
          "--data-dir": {
            "path": {
              "--json": {
                "0349e6": "Uso: ysk-server cron <sub> [--data-dir PATH] [--json]\n  list [--project-id ID] [--q TEXT]\n  create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]\n  update --id JOB_ID [--schedule S] [--command CMD] [--user USER] [--project-id ID] [--enable|--disable]\n  delete --id JOB_ID\n  enable|disable --id JOB_ID\n  run --id JOB_ID              # run-now (needs YSK_EXECUTE=1)\n  install                     # load managed crontab (needs EXECUTE)\n  status                      # probe managed file vs host crontab\n  host [list] [--user USER] [--jobs-only]\n  host edit --user USER --old-schedule S --old-command C --schedule S --command C --execute\n  host disable|enable|delete|adopt --user USER --old-schedule S --old-command C --execute\n  host run --user USER --command C --execute\nHonestidad: install / host write blocked without YSK_EXECUTE=1.\n"
              }
            }
          }
        },
        "run": {
          "--id": {
            "job": {
              "id": {
                "a0a97f": "Uso: ejecución cron del servidor ysk --id JOB_ID"
              }
            }
          }
        },
        "create": {
          "--schedule": {
            "0": {
              "3": {
                "9a8328": "Uso: ysk-server cron create --schedule \"0 3 * * *\" --command CMD [--ID de proyecto] [--usuario USUARIO]"
              }
            }
          }
        }
      },
      "files": {
        "stat": {
          "--path": {
            "rel": {
              "17c8f2": "Uso: estadísticas de archivos del servidor ysk --path REL"
            }
          }
        },
        "read": {
          "--path": {
            "rel": {
              "e35f8d": "Uso: lectura de archivos del servidor ysk --path REL"
            }
          }
        },
        "mkdir": {
          "--path": {
            "rel": {
              "ae0438": "Uso: archivos del servidor ysk mkdir --path REL"
            }
          }
        },
        "rm": {
          "--path": {
            "rel": {
              "--permanent": {
                "fe2051": "Uso: archivos del servidor ysk rm --path REL [--permanente]"
              }
            }
          }
        },
        "rename": {
          "--from": {
            "rel": {
              "--to": {
                "35a260": "Uso: cambiar el nombre de los archivos del servidor ysk --de REL --a REL"
              }
            }
          }
        },
        "copy": {
          "--from": {
            "rel": {
              "--to": {
                "5337f4": "Uso: copia de archivos del servidor ysk --de REL --a REL"
              }
            }
          }
        },
        "move": {
          "--from": {
            "rel": {
              "--to": {
                "75cf5d": "Uso: los archivos del servidor ysk se mueven --de REL --a REL"
              }
            }
          }
        },
        "chmod": {
          "--path": {
            "rel": {
              "--mode": {
                "39f983": "Uso: archivos del servidor ysk chmod --path REL --mode 644"
              }
            }
          }
        },
        "trash": {
          "restore": {
            "--id": {
              "trash": {
                "c89ce9": "Uso: restauración de papelera de archivos del servidor ysk --id TRASH_ID"
              }
            }
          },
          "list": {
            "restore": {
              "purge": {
                "ef063d": "Uso: lista de basura de archivos del servidor ysk|restaurar|purgar"
              }
            }
          }
        },
        "shares": {
          "list": {
            "ac342c": "Uso: lista de archivos compartidos del servidor ysk"
          }
        },
        "webdav": {
          "status": {
            "token": {
              "disable": {
                "f8e94b": "Uso: archivos del servidor ysk estado webdav|token|deshabilitar"
              }
            }
          }
        },
        "sub": {
          "--root": {
            "public": {
              "project": {
                "42ebd4": "Uso: archivos del servidor ysk <sub> [--root public|proyecto:ID] [--data-dir PATH] [--json]\n  lista [--ruta DIR] [--q TEXTO] [--ordenar nombre|tamaño|mtime] [--orden asc|desc]\n  estadística --ruta REL\n  leer --ruta REL\n  escribir --path REL --content TEXTO | --archivo LOCAL\n  mkdir --ruta REL\n  rm --path REL [--permanente]\n  renombrar --de REL --a REL\n  copiar --de REL --a REL\n  mover --de REL --a REL\n  chmod --ruta REL --modo 644\n  lista de basura|restaurar|purgar [--id TRASH_ID]\n  lista de acciones\n  lista de favoritos\n  cargar --dir REL --file LOCAL [--file LOCAL2…]\n  estado de webdav|token|deshabilitar\nSandbox: solo archivos públicos raíz o inicio del proyecto (ruta restringida)."
              }
            }
          }
        },
        "write": {
          "--path": {
            "rel": {
              "--content": {
                "0addb1": "Uso: escritura de archivos del servidor ysk --path REL --content TEXT | --archivo LOCAL"
              }
            }
          }
        },
        "upload": {
          "--dir": {
            "rel": {
              "--file": {
                "f8c3bf": "Uso: carga de archivos del servidor ysk --dir REL --file LOCAL [--file LOCAL2…]"
              }
            }
          }
        }
      },
      "store": {
        "import": {
          "--in": {
            "file": {
              "json": {
                "5b6fdd": "Uso: importación de tienda del servidor ysk --en FILE.json"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "d580e4": "Uso: almacén ysk-server <sub> [--data-dir PATH] [--json]\n  estado Mostrar tipo de backend + recuentos\n  exportar --out FILE.json Volcar instantánea del documento\n  importar --en FILE.json Sobrescribir instantánea del archivo\n  migrar --a sqlite|json [--fuera RUTA]\n    Copie la tienda actual en otro archivo backend\nEnv: YSK_STORE=json|sqlite|postgres YSK_DATABASE_URL=postgres://…\nHonestidad: backends de blobs de documentos (aún no hay un esquema relacional completo)."
              }
            }
          }
        },
        "migrate": {
          "--to": {
            "json": {
              "sqlite": {
                "1c52a3": "Uso: migración del almacén ysk-server --a json|sqlite [--out PATH]\n  (postgres: exporta JSON y luego importa en YSK_DATABASE_URL)"
              }
            }
          }
        }
      },
      "cdn": {
        "nodes": {
          "delete": {
            "--id": {
              "node": {
                "0c6a1e": "Uso: eliminar nodos cdn del servidor ysk --id NODE_ID"
              }
            }
          },
          "drain": {
            "--id": {
              "node": {
                "a8aa81": "Uso: drenaje de nodos cdn del servidor ysk --id NODE_ID [--off]"
              }
            }
          },
          "list": {
            "upsert": {
              "delete": {
                "52549e": "Uso: lista de nodos cdn del servidor ysk|upsert|delete|sonda|drain…"
              }
            }
          },
          "upsert": {
            "--name": {
              "name": {
                "8f6f39": "Uso: ysk-server cdn nodes upsert --name NOMBRE [--id ID] [--base-url U] [--fleet-agent-id S] [--ssh-host H] [--region R]"
              }
            }
          }
        },
        "sites": {
          "get": {
            "--id": {
              "site": {
                "3c3c35": "Uso: los sitios cdn del servidor ysk obtienen --id SITE_ID"
              }
            }
          },
          "delete": {
            "--id": {
              "site": {
                "51ef8f": "Uso: los sitios cdn del servidor ysk eliminan --id SITE_ID"
              }
            }
          },
          "list": {
            "get": {
              "upsert": {
                "609da6": "Uso: lista de sitios cdn del servidor ysk|obtener|upsert|eliminar…"
              }
            }
          },
          "upsert": {
            "--name": {
              "n": {
                "6ebb75": "Uso: ysk-server cdn sites upsert --name N --domains a.com,b.com [--edge-id ID]… [--origin-url U] [--origin-project ID]"
              }
            }
          }
        },
        "render": {
          "--site-id": {
            "id": {
              "--dry-run": {
                "2149eb": "Uso: ysk-server cdn render --site-id ID [--dry-run]"
              }
            }
          }
        },
        "apply": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "a527b3": "Uso: ysk-server cdn apply --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "purge": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "bc08ec": "Uso: ysk-server cdn purge --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "dns-sync": {
          "--site-id": {
            "id": {
              "--apply-zone": {
                "343068": "Uso: ysk-server cdn dns-sync --site-id ID [--apply-zone]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "092842": "Uso: ysk-server cdn <sub> [--data-dir PATH] [--json]\n  lista de nodos|insertar|eliminar|sonda|drenar\n  lista de sitios|upsert|eliminar|obtener\n  renderizar --site-id ID [--ejecución en seco]\n  aplicar --site-id ID [--edge-id ID] # distribución en abanico (la cola de la flota está bien sin EJECUTAR)\n  purgar --ID de sitio-ID [--ID de borde-ID]\n  dns-sync --identificador de ID del sitio [--apply-zone]\n  sonda | tablero | bucle de salud [--apply-zone]\n  desde-proyecto --ID de id-proyecto [--ID de id-edge…]\nHonestidad: apply_status escrito/en cola ≠ edge nginx aplicado hasta que el agente reconozca/EJECUTE la recarga."
              }
            }
          }
        },
        "from-project": {
          "--project-id": {
            "id": {
              "--edge-id": {
                "a96f42": "Uso: ysk-server cdn from-project --project-id ID [--edge-id ID]…"
              }
            }
          }
        }
      },
      "agents": {
        "fleet": {
          "remove": {
            "--session": {
              "session": {
                "1827fe": "Uso: eliminación de flota de agentes de ysk-server --session SESSION_ID"
              }
            }
          },
          "register": {
            "--id": {
              "agent": {
                "209b2d": "Uso: registro de flota de agentes del servidor ysk --id AGENT_ID [--group g] [--edge]"
              }
            }
          },
          "commands": {
            "--session": {
              "session": {
                "f8067c": "Uso: comandos de flota de agentes de ysk-server --session SESSION_ID"
              }
            }
          }
        },
        "register": {
          "--id": {
            "agent": {
              "id": {
                "3c4477": "Uso: registro de agentes del servidor ysk --id AGENT_ID [--grupo g]"
              }
            }
          }
        },
        "commands": {
          "--session": {
            "session": {
              "id": {
                "e620d2": "Uso: comandos de los agentes ysk-server --session SESSION_ID"
              }
            }
          }
        },
        "runtimes": {
          "probe": {
            "fleet": {
              "list": {
                "261fa4": "Uso: agentes de servidor ysk [tiempos de ejecución|sonda|lista de flota|registro de flota|comandos de flota|registro|comandos]"
              }
            }
          }
        }
      },
      "agent": {
        "run": {
          "--control-plane": {
            "url": {
              "--id": {
                "cfefbe": "Uso: ejecución del agente ysk-server --control-plane URL --id AGENT_ID [--group g]"
              }
            }
          }
        }
      },
      "ask": {
        "check": {
          "system": {
            "info": {
              "b0c781": "Uso: ysk-server pregunta \"verificar información del sistema\""
            }
          }
        }
      },
      "backup": {
        "delete": {
          "--project-id": {
            "id": {
              "--name": {
                "d66c29": "Uso: eliminación de copia de seguridad del servidor ysk --id-proyecto ID --nombre ARCHIVO"
              }
            }
          }
        },
        "restic": {
          "list": {
            "run": {
              "restore": {
                "10402b": "Uso: lista restic de copia de seguridad del servidor ysk|ejecutar|restaurar…"
              }
            }
          },
          "restore": {
            "--project-id": {
              "id": {
                "a8f133": "Uso: restauración restic de copia de seguridad del servidor ysk --ID de proyecto --snapshot SNAP [--ejecución en seco] [--overwrite-home --confirm FRASE]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "777243": "Uso: copia de seguridad del servidor ysk <sub> [--data-dir PATH] [--json]\n  Todos Copia de seguridad de todas las casas del proyecto (+ lado remoto/restico cuando está configurado)\n  lista [--id-proyecto ID] [--q TEXTO]\n  estado Última ejecución + sondeo programado\n  restaurar --project-id ID --name ARCHIVO [--mode full|web|dry-run]\n  eliminar --project-id ID --name ARCHIVO\n  programar [--cron \"0 3 * * *\"] [--install]\n  Instantánea del plano de control ysk.json + config.json\n  control-plane-restore --name ARCHIVO [--mode ejecución en seco|completo] [--confirm RESTORE-CONTROL-PLANE]\n  configuración [get|set] Remoto / exclusiones / restringido\n    establecer --remote-kind local|sftp|s3 --remote-path P [--remote-host H] …\n    establecer --excluir a,b,c | --exclusiones-archivo ARCHIVO\n    establecer --restic-enable --restic-contraseña P [--restic-repo RUTA]\n    set --from-json ARCHIVO # parche completo {¿remoto?,¿exclusiones?,¿restic?}\n  lista restic|ejecutar|restore Ayudantes restic incrementales"
              }
            }
          }
        },
        "control-plane-restore": {
          "--name": {
            "archive": {
              "--mode": {
                "316a76": "Uso: ysk-server backup control-plane-restore --name ARCHIVO [--mode dry-run|full] [--confirm RESTORE-CONTROL-PLANE]"
              }
            }
          }
        },
        "restore": {
          "--project-id": {
            "id": {
              "--name": {
                "bc7041": "Uso: restauración de copia de seguridad del servidor ysk --project-id ID --name ARCHIVO [--mode full|web|dry-run]"
              }
            }
          }
        }
      },
      "packages": {
        "list": {
          "--q": {
            "text": {
              "b8e16b": "Uso: lista de paquetes del servidor ysk [--q texto]"
            }
          }
        }
      },
      "projects": {
        "stop": {
          "--id": {
            "projectid": {
              "b15409": "Uso: los proyectos del servidor ysk se detienen --id <projectId>"
            }
          }
        },
        "backup": {
          "--id": {
            "projectid": {
              "e62846": "Uso: copia de seguridad de proyectos de ysk-server --id <projectId>"
            }
          }
        },
        "health": {
          "--id": {
            "projectid": {
              "e816ec": "Uso: estado del proyecto ysk-server --id <projectId>"
            }
          }
        },
        "isolation": {
          "provision": {
            "--id": {
              "projectid": {
                "5aff44": "Uso: provisión de aislamiento de proyectos de ysk-server --id <projectId>\n       provisión de aislamiento de proyectos de servidor ysk-todo [--límite 20]"
              }
            }
          },
          "backfill-owners": {
            "--owner-user-id": {
              "id": {
                "8691da": "Uso: aislamiento de proyectos de servidor ysk backfill-owners --owner-user-id <id>"
              }
            }
          },
          "list": {
            "provision": {
              "provision-all": {
                "8e9da3": "Uso: lista de aislamiento de proyectos del servidor ysk|aprovisionamiento|aprovisionamiento-todos|propietarios de relleno"
              }
            }
          }
        },
        "get": {
          "--id": {
            "projectid": {
              "name": {
                "b0d532": "Uso: los proyectos de ysk-server obtienen --id <projectId|name> [--json]"
              }
            }
          }
        },
        "create": {
          "--name": {
            "name": {
              "--domain": {
                "66e857": "Uso: proyectos de servidor ysk crean --name <nombre> [--domain d] [--runtime node|php|static|python|go|rust] [--template id]"
              }
            }
          }
        },
        "deploy": {
          "--id": {
            "projectid": {
              "--entry": {
                "339111": "Uso: implementación de proyectos de servidor ysk --id <projectId> [--entry f] [--port N] [--fpm|--builtin] [--reload]"
              }
            }
          }
        },
        "git-deploy": {
          "--id": {
            "id": {
              "--git-url": {
                "a513f5": "Uso: proyectos de servidor ysk git-deploy --id ID [--git-url URL] [--branch main] [--no-redeploy] [--profundidad 1] [--entry f]"
              }
            }
          }
        },
        "template": {
          "--id": {
            "projectid": {
              "--template": {
                "591ce4": "Uso: plantilla de proyectos de servidor ysk --id <projectId> --template <id> [--force]"
              }
            }
          }
        },
        "list": {
          "get": {
            "create": {
              "deploy": {
                "253b48": "Uso: lista de proyectos del servidor ysk|obtener|crear|implementar|git-deploy|stop|backup|template|health [opciones]\n  implementar --id UUID [--entry f] [--port N] [--fpm|--builtin] [--reload]\n  git-deploy --id UUID [--git-url URL] [--branch B] [--no-redeploy]"
              }
            }
          }
        }
      },
      "cli": {
        "name": {
          "db-cluster": {
            "get": {
              "--id": {
                "00f803": "Uso: {{CLI_NAME}} db-cluster get --id UUID [--json]"
              }
            },
            "plan": {
              "--id": {
                "483f52": "Uso: {{CLI_NAME}} plan de clúster de base de datos --id UUID [--json]"
              }
            },
            "artifacts": {
              "--id": {
                "6b33c4": "Uso: {{CLI_NAME}} artefactos de db-cluster --id UUID [--json]"
              }
            },
            "bundle": {
              "--id": {
                "94ed27": "Uso: {{CLI_NAME}} paquete db-cluster --id UUID [--json]"
              }
            },
            "delete": {
              "--id": {
                "3de0e4": "Uso: {{CLI_NAME}} eliminación de db-cluster --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "e3b733": "Uso: {{CLI_NAME}} db-cluster create --name N --engine mariadb --kind mariadb-galera --member HOST=role[:access] ..."
              }
            },
            "apply": {
              "--id": {
                "4cddb8": "Uso: {{CLI_NAME}} db-cluster apply --id UUID [--execute] [--bootstrap] [--json]"
              }
            },
            "probe": {
              "--id": {
                "22870c": "Uso: {{CLI_NAME}} sonda db-cluster --id UUID [--peers] [--json]"
              }
            },
            "install-peers": {
              "--id": {
                "600b02": "Uso: {{CLI_NAME}} db-cluster install-peers --id UUID [--execute] [--no-restart] [--identity ID] [--json]"
              }
            },
            "push": {
              "--id": {
                "697080": "Uso: {{CLI_NAME}} db-cluster push --id UUID [--ID de miembro] [--ID de identidad] [--ejecutar] [--json]"
              }
            },
            "fleet": {
              "--id": {
                "239462": "Uso: {{CLI_NAME}} flota de db-cluster --id UUID [--op apply|probe|plan] [--execute] [--edge-execute] [--json]"
              }
            },
            "list": {
              "get": {
                "3b9cfa": "Uso: {{CLI_NAME}} lista de clústeres de base de datos|obtener|crear|plan|aplicar|probe|install-peers|artifacts|bundle|push|fleet|overview|delete [--peers] [--execute] [--json]"
              }
            }
          },
          "ssh-key": {
            "get": {
              "--id": {
                "292716": "Uso: {{CLI_NAME}} ssh-key get --id UUID [--json]"
              }
            },
            "public": {
              "--id": {
                "525d7d": "Uso: {{CLI_NAME}} ssh-key public --id UUID"
              }
            },
            "export": {
              "--id": {
                "0a6d81": "Uso: {{CLI_NAME}} exportación de clave ssh --id UUID [--out PATH] [--json]"
              }
            },
            "delete": {
              "--id": {
                "a6e2f2": "Uso: {{CLI_NAME}} eliminación de clave ssh --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "8b1d79": "Uso: {{CLI_NAME}} ssh-key create --name N [--algo ed25519|rsa-4096] [--user de propósito|panel|unbound] [--ID de proyecto] [--user U] [--home PATH] [--reveal] [--json]"
              }
            },
            "import": {
              "--name": {
                "6eb800": "Uso: {{CLI_NAME}} importación de clave ssh --nombre N --file RUTA [--panel de propósito|usuario] [--json]"
              }
            },
            "install": {
              "--id": {
                "b99c56": "Uso: {{CLI_NAME}} instalación de clave ssh --id UUID [--execute] [--json]"
              }
            },
            "test": {
              "--id": {
                "e1aed3": "Uso: {{CLI_NAME}} prueba de clave ssh --id UUID --usuario objetivo@host[:puerto] [--ejecutar] [--json]"
              }
            },
            "rotate": {
              "--id": {
                "9c3224": "Uso: {{CLI_NAME}} rotación de clave ssh --id UUID [--reveal] [--json]"
              }
            },
            "authorize-self": {
              "--id": {
                "b7ea2e": "Uso: {{CLI_NAME}} ssh-key Authorize-self --id UUID [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "afcba0": "Uso: {{CLI_NAME}} desinstalación de clave ssh --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "get": {
                "2c92c6": "Uso: {{CLI_NAME}} lista de claves ssh|obtener|crear|importar|público|exportar|instalar|prueba|rotar|autorizar-autorizar|desinstalar|eliminar [--json]"
              }
            }
          },
          "ssh-2fa": {
            "reveal": {
              "--id": {
                "a6c27f": "Uso: {{CLI_NAME}} ssh-2fa revelación --id UUID [--json]"
              }
            },
            "retire": {
              "--id": {
                "6e1fa3": "Uso: {{CLI_NAME}} ssh-2fa retirar --id UUID [--json]"
              }
            },
            "enroll": {
              "--user": {
                "081432": "Uso: {{CLI_NAME}} inscripción ssh-2fa --user LINUX|--ID del proyecto [--home PATH] [--from-panel] [--json]"
              }
            },
            "confirm": {
              "--id": {
                "9ee8a2": "Uso: {{CLI_NAME}} confirmación ssh-2fa --id UUID --code 123456 [--json]"
              }
            },
            "install": {
              "--id": {
                "dace06": "Uso: {{CLI_NAME}} ssh-2fa install --id UUID [--execute] [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "0bb464": "Uso: {{CLI_NAME}} desinstalación ssh-2fa --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "enroll": {
                "802ed0": "Uso: {{CLI_NAME}} lista ssh-2fa|inscribirse|confirmar|instalar|desinstalar|pam|revelar|retirar [--json]"
              }
            }
          },
          "ssl": {
            "list": {
              "get": {
                "79c232": "Uso: {{CLI_NAME}} lista ssl|get --domain X [--json]"
              }
            },
            "get": {
              "--domain": {
                "91c444": "Uso: {{CLI_NAME}} ssl get --dominio ejemplo.com [--json]"
              }
            }
          },
          "dns": {
            "zone": {
              "--zone": {
                "ad30fa": "Uso: {{CLI_NAME}} zona dns --zone ejemplo.com --ip A.B.C.D [--ipv6 X:X::X] [--validar] [--recargar]"
              }
            },
            "zones": {
              "zone": {
                "5b8bda": "Uso: {{CLI_NAME}} zonas dns|zona --zona X --ip A.B.C.D [--ipv6…] [--json]"
              }
            }
          },
          "nginx": {
            "status": {
              "list": {
                "d67a16": "Uso: {{CLI_NAME}} estado de nginx|lista|prueba|sincronización [--ejecutar] [--json]"
              }
            }
          },
          "host": {
            "overview": {
              "metrics": {
                "93c828": "Uso: {{CLI_NAME}} descripción general del host|métricas|red [--path /] [--json]"
              }
            }
          },
          "logs": {
            "sources": {
              "overview": {
                "79058c": "Uso: {{CLI_NAME}} fuentes de registros|descripción general|unidades|diario|consulta [--id de fuente] [--json]"
              }
            }
          },
          "services": {
            "sub": {
              "--unit": {
                "4fe3fa": "Uso: {{CLI_NAME}} servicios {{sub}} --unit <systemd-unit> [--execute] [--json]"
              }
            },
            "matrix": {
              "start": {
                "4f3a35": "Uso: {{CLI_NAME}} matriz de servicios|iniciar|detener|reiniciar|recargar --nombre de la unidad [--ejecutar] [--json]"
              }
            }
          },
          "defense": {
            "ban": {
              "--ip": {
                "cc22de": "Uso: {{CLI_NAME}} prohibición de defensa --ip <ip> [--method fail2ban|ufw|both] [--reason t] [--execute]"
              }
            },
            "unban": {
              "--ip": {
                "46aa23": "Uso: {{CLI_NAME}} defensa unban --ip <ip> [--method fail2ban|ufw|both] [--execute]"
              }
            },
            "whitelist": {
              "--action": {
                "c1cbdf": "Uso: {{CLI_NAME}} lista blanca de defensa --lista de acciones|agregar|eliminar [--ip IP]"
              }
            },
            "status": {
              "bans": {
                "a8d96b": "Uso: {{CLI_NAME}} estado de defensa|prohibiciones|sospechosos|prohibición|unban|lista blanca|stack-apply|fail2ban|firewall|timeline|presets [--json]\n prohibiciones [--q texto] [--source fail2ban|panel|ufw|auto]\n sospechosos [--q texto]\nstack-apply [--execute] # UFW + fail2ban + valor preestablecido actual\nfail2ban | firewall # sondas profundas (honestas)\n línea de tiempo [--limit N] [--q texto]\n presets # lista + activePreset"
              }
            }
          }
        }
      },
      "system": {
        "unit-install": {
          "--enable": {
            "--data-dir": {
              "path": {
                "33daa1": "Uso: instalación de unidad del sistema ysk-server [--enable] [--data-dir PATH]"
              }
            }
          }
        }
      },
      "users": {
        "create": {
          "--username": {
            "u": {
              "--password": {
                "7145c7": "Uso: los usuarios del servidor ysk crean --nombre de usuario <u> --contraseña <p> [--operador de rol|visor|admin] [--id de paquete]"
              }
            }
          }
        },
        "list": {
          "--q": {
            "text": {
              "--role": {
                "544685": "Uso: lista de usuarios del servidor ysk [--q texto] [--role admin|operator|viewer]\n       Los usuarios del servidor ysk crean --nombre de usuario u --contraseña p [--operador de rol]"
              }
            }
          }
        }
      },
      "rbac": {
        "list": {
          "policies": {
            "330ade": "Uso: lista rbac del servidor ysk|políticas\n       ysk-server rbac show --operador de rol\n       ysk-server rbac audit # ruta→cap matriz de muestra"
          }
        }
      },
      "hosting": {
        "postgres-provision": {
          "--db": {
            "name": {
              "--user": {
                "2c8889": "Uso: servidor ysk hosting postgres-provision --db NOMBRE --usuario U --contraseña P(min8) [--ejecutar]\n  Ejecución en seco predeterminada (sin cambio de host). Pase --execute + YSK_EXECUTE=1 para aplicar."
              }
            }
          }
        },
        "mysql-provision": {
          "--db": {
            "name": {
              "--user": {
                "fc25aa": "Uso: servidor ysk que aloja mysql-provision --db NOMBRE --usuario U --contraseña P(min8) [--ejecutar]\n  Ejecución en seco predeterminada (sin cambio de host). Pase --execute + YSK_EXECUTE=1 para aplicar."
              }
            }
          }
        },
        "dns-zone": {
          "--zone": {
            "example": {
              "com": {
                "bdaa0d": "Uso: ysk-server hosting dns-zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]"
              }
            }
          }
        },
        "powerdns-load": {
          "--zone": {
            "example": {
              "com": {
                "dba49c": "Uso: ysk-server hosting powerdns-load --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--load|--execute]"
              }
            }
          }
        },
        "email-apply": {
          "--domain": {
            "example": {
              "com": {
                "37d350": "Uso: ysk-server hosting email-apply --domain example.com [--install|--execute]"
              }
            }
          }
        },
        "email-mailbox": {
          "--domain": {
            "x": {
              "--local": {
                "3d9be3": "Uso: servidor ysk que aloja buzón de correo electrónico --dominio X --usuario local [--contraseña P] [--ip A.B.C.D]"
              }
            }
          }
        },
        "ftps-apply": {
          "--domain": {
            "files": {
              "example": {
                "284a7c": "Uso: ysk-server hosting ftps-apply --domain files.example.com [--install|--execute]"
              }
            }
          }
        },
        "webmail-apply": {
          "--domain": {
            "webmail": {
              "example": {
                "2ad5b5": "Uso: servidor ysk hosting webmail-apply --dominio webmail.ejemplo.com [--descargar]"
              }
            }
          }
        },
        "public-files": {
          "--domain": {
            "files": {
              "example": {
                "0e9013": "Uso: servidor ysk que aloja archivos públicos --archivos de dominio.ejemplo.com [--recargar]"
              }
            }
          }
        },
        "email-deliverability": {
          "--domain": {
            "example": {
              "com": {
                "8774a4": "Uso: servidor ysk hosting capacidad de entrega de correo electrónico --dominio ejemplo.com\n       servidor ysk hosting capacidad de entrega de correo electrónico --id <domainId>"
              }
            }
          }
        },
        "email-bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "796da5": "Uso: ysk-server hosting email-bootstrap --dominio ejemplo.com --ip 1.2.3.4 [--admin postmaster] [--contraseña P] [--instalar]"
              }
            }
          }
        }
      },
      "migrate": {
        "post": {
          "--job": {
            "id": {
              "--data-dir": {
                "6a73cd": "Uso: ysk-server migrar publicación --job <id> --data-dir PATH --execute"
              }
            }
          }
        },
        "host": {
          "--target": {
            "root": {
              "new": {
                "3e94a2": "Uso: ysk-server migrar host --target root@NEW_IP [--identity-file PATH|--identity-id ID] [--contraseña] --execute --data-dir PATH"
              }
            }
          }
        }
      },
      "x": {
        "972912": "Uso:\n  ysk-server migra inventario [--data-dir PATH] --json\n  ysk-server migrar host --target root@IP [--identity-file PATH|--identity-id ID|--contraseña PW] --execute [--maintenance] [--force-wipe-target]\n  ysk-server migrar publicación --ID de trabajo --data-dir RUTA --ejecutar # en el objetivo\n  Estado de migración del servidor ysk [--ID de trabajo]\n  ysk-server migrar currículum --ID de trabajo --ejecutar\n  ysk-server migrate orphan-homes [--data-dir PATH] --json\n  ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
      },
      "hostingHelp": "Uso: alojamiento del servidor ysk <sub>\n  Operaciones peligrosas en seco por defecto; agregue --execute (+ YSK_EXECUTE=1) para aplicar\n  nginx | nginx-sync [--ejecutar]\n  redis-provisión | provisión-postgres | mysql-provision [--ejecutar]\n  dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validar] [--recargar]\n  zonas-dns | estado-powerdns | instalación-powerdns [--instalar|--ejecutar]\n  powerdns-load --zone X --ip A.B.C.D [--carga|--ejecutar]\n  aplicar correo electrónico --dominio X [--instalar|--ejecutar]\n  buzón de correo electrónico --dominio X --usuario local [--contraseña P] [--ip A.B.C.D] [--sistema]\n  ftps-apply --dominio X [--instalar|--ejecutar]\n  tiempos de ejecución | instalación en tiempo de ejecución --kind node|php|python|go|rust --versión V [--install|--execute]\n  dovecot-passdb --dominio X | --todos\n  aplicación de correo web --dominio webmail.ejemplo.com [--descargar]\n  archivos-públicos --archivos de dominio.ejemplo.com [--recargar]\n  email-bootstrap --dominio ejemplo.com --ip A.B.C.D [--instalar|--ejecutar]\n  capacidad de entrega de correo electrónico --dominio ejemplo.com # PTR/DNSBL/paquete de preparación (honesto)\n  aplicar firewall [--smtp] [--ejecutar]",
      "logsQuery": "Uso: {{CLI_NAME}} consulta de registros --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n  ejemplos de fuentes: diario: diario:nginx.service archivo:syslog proyecto:<uuid>\n  {{CLI_NAME}} fuentes de registros --json\n  {{CLI_NAME}} diario de registros [--unit nginx.service] --json"
    },
    "msg": {
      "domain": {
        "missing": {
          "pass": {
            "5be09b": "Falta el dominio: pase --ip para crear el dominio primero"
          }
        }
      },
      "--root": {
        "must": {
          "be": {
            "a84834": "--root debe ser público o proyecto:<id>"
          }
        }
      },
      "need": {
        "--content": {
          "or": {
            "4d7001": "Necesita --content o --file"
          }
        },
        "at": {
          "least": {
            "7d311a": "Necesita al menos un --member HOST[=role][:access]"
          }
        }
      },
      "action": {
        "must": {
          "be": {
            "ba14c1": "la acción debe ser listar|añadir|eliminar"
          }
        }
      },
      "use": {
        "ysk-server": {
          "backup": {
            "ca67f4": "Uso: ysk-server backup control-plane-restore --name ARCHIVO (no restaurar --project-id control-plane)"
          }
        }
      },
      "new": {
        "domain": {
          "requires": {
            "986b78": "El nuevo dominio requiere --ip A.B.C.D (sin valores predeterminados de marcador de posición)"
          }
        }
      },
      "import-sync": {
        "prefers": {
          "fleet": {
            "4d7590": "import-sync prefiere la carga útil de clusterSync de flota; o --archivo snapshot.json"
          }
        }
      },
      "security": {
        "control": {
          "plane": {
            "f59a63": "SEGURIDAD: plano de control vinculado públicamente (0.0.0.0/::). Prefiere 127.0.0.1 + proxy inverso/UFW."
          }
        }
      }
    },
    "err": {
      "unknown": {
        "email": {
          "sub": {
            "sub": {
              "e37257": "Sub-correo electrónico desconocido: {{sub}}\nEjecutar: ayuda por correo electrónico del servidor ysk"
            }
          }
        },
        "cron": {
          "sub": {
            "sub": {
              "e1a9ed": "Sub cron desconocido: {{sub}}\nEjecutar: ayuda cron del servidor ysk"
            }
          }
        },
        "files": {
          "sub": {
            "sub": {
              "07ad7e": "Sub archivos desconocidos: {{sub}}\nEjecutar: ayuda con archivos del servidor ysk"
            }
          }
        },
        "store": {
          "sub": {
            "sub": {
              "b7a083": "Sub tienda desconocida: {{sub}}\nEjecutar: ayuda de la tienda ysk-server"
            }
          }
        },
        "cdn": {
          "subcommand": {
            "sub": {
              "76664f": "Subcomando cdn desconocido: {{sub}}\nEjecutar: ayuda cdn del servidor ysk"
            }
          }
        },
        "backup": {
          "subcommand": {
            "sub": {
              "4092ad": "Subcomando de copia de seguridad desconocido: {{sub}}\nEjecutar: ayuda de copia de seguridad del servidor ysk"
            }
          }
        }
      }
    },
    "setup": {
      "dryRunOk": "{{product}} configurar el funcionamiento en seco OK",
      "dryRunNext": "Vuelva a ejecutar sin --dry-run para escribir la configuración e inicializar la base de datos",
      "weakPassword": "La contraseña de administrador es débil o predeterminada. Pase una contraseña de administrador segura (mínimo 8, no \"admin\"/valores predeterminados comunes) o establezca YSK_ALLOW_INSECURE_DEFAULTS=1 solo para desarrolladores locales.",
      "weakPasswordShort": "Contraseña de administrador débil o predeterminada rechazada",
      "nextStart": "Inicio (API + UI web): {{cli}} server --config {{configPath}}",
      "nextOpen": "Abra http://{{host}}:{{port}}/ e inicie sesión como {{user}}",
      "nextUnit": "Plantilla de unidad Systemd: {{unitPath}}",
      "nextInstall": "Unidad de instalación (raíz + YSK_EXECUTE): {{cli}} instalación de unidad del sistema --enable --data-dir {{dataDir}}",
      "nextExecute": "Las mutaciones del host de producción requieren YSK_EXECUTE=1 y raíz",
      "nextGolive": "Puesta en marcha: docs/deploy/go-live.md + preparación del servidor ysk --json",
      "secPassword": "SEGURIDAD: cambie la contraseña de administrador inmediatamente (bootstrap usó una contraseña débil/predeterminada)",
      "sec2fa": "SEGURIDAD: habilite admin 2FA en Seguridad → Cuenta",
      "secListen": "SEGURIDAD: escuchar en todas las interfaces: colocar detrás de un firewall/proxy inverso; prefiera 127.0.0.1 + túnel SSH para administrador",
      "ok": "{{product}} configuración completada (base de datos inicializada)",
      "okInsecure": "{{product}} configuración completada (base de datos inicializada) [INSECURE BOOTSTRAP - cambiar contraseña]"
    }
  },
  "common": {
    "all": "Todo",
    "cancel": "Cancelar",
    "confirm": "Confirmar",
    "refresh": "Refrescar",
    "loading": "Cargando…",
    "save": "Ahorrar",
    "apply": "Aplicar",
    "close": "Cerca",
    "copy": "Copiar",
    "copied": "copiado",
    "expandAll": "Expandir todo",
    "collapseAll": "Contraer todo",
    "empty": "Vacío",
    "back": "Atrás",
    "showTechnical": "Mostrar detalles técnicos",
    "hideTechnical": "Ocultar detalles técnicos",
    "needExecute": "Necesita YSK_EXECUTE",
    "needRoot": "Necesita raíz",
    "needExecuteRoot": "Necesita YSK_EXECUTE y root",
    "writtenOnly": "Escrito en datos de panel; no aplicado en el host",
    "applyToLive": "Aplicar para que surta efecto",
    "saveDraft": "Guardar borrador",
    "languageName": "Inglés",
    "languageNative": "Inglés",
    "language": "Idioma",
    "switchLanguage": "Cambiar idioma",
    "showPassword": "Espectáculo",
    "hidePassword": "Esconder",
    "searchGlobal": "Buscar…",
    "menu": "Menú",
    "processing": "Laboral…",
    "unavailable": "No disponible en este momento",
    "retry": "Rever",
    "success": "Éxito",
    "ok": "OK",
    "failed": "Fallido",
    "blocked": "no se puede ejecutar",
    "status": "Estado",
    "port": "Puerto",
    "url": "URL",
    "actions": "Comportamiento",
    "noData": "Sin datos",
    "input": "Aporte",
    "pleaseEnter": "Ingrese {{value}}",
    "pleaseFill": "Por favor complete este campo",
    "required": "Obligatorio",
    "about": "Acerca de",
    "more": "Más",
    "operation": "Comportamiento",
    "delete": "Borrar",
    "edit": "Editar",
    "create": "Crear",
    "install": "Instalar",
    "installing": "Instalando…",
    "reprobe": "Vuelva a comprobar",
    "search": "Buscar",
    "yes": "Sí",
    "no": "No",
    "on": "En",
    "off": "Apagado",
    "open": "Abierto",
    "enabled": "Activado",
    "disabled": "Desactivado",
    "installed": "Instalado",
    "notInstalled": "No instalado",
    "running": "Correr",
    "stopped": "Interrumpido",
    "ready": "Listo",
    "unknown": "Desconocido",
    "normal": "OK",
    "degraded": "Degradado",
    "missing": "Desaparecido",
    "available": "Disponible",
    "applied": "Aplicado",
    "notApplied": "No aplicado",
    "completed": "Terminado",
    "incomplete": "Incompleto",
    "probed": "sondeado",
    "notProbed": "No investigado",
    "probe": "Sonda",
    "name": "Nombre",
    "username": "Nombre de usuario",
    "password": "Contraseña",
    "domain": "Dominio",
    "host": "Anfitrión",
    "version": "Versión",
    "type": "Tipo",
    "mode": "Modo",
    "notes": "Notas",
    "time": "Tiempo",
    "steps": "Pasos",
    "target": "Objetivo",
    "package": "Paquete",
    "panel": "Panel",
    "system": "Sistema",
    "user": "Usuario",
    "project": "Proyecto",
    "database": "Base de datos",
    "mail": "Correo",
    "files": "Archivos",
    "memory": "Memoria",
    "custom": "Costumbre",
    "static": "Estático",
    "lifecycle": "Ciclo vital",
    "loadFailed": "No se pudo cargar",
    "saveFailed": "No se pudo guardar",
    "opFailed": "Operación fallida",
    "installFailed": "La instalación falló",
    "createFailed": "Error al crear",
    "deleteFailed": "Error al eliminar",
    "applyFailed": "No se pudo aplicar",
    "startFailed": "Inicio fallido",
    "statusLoadFailed": "No se pudo cargar el estado",
    "downloadFailed": "Descarga fallida",
    "uploadDone": "Subido {{count}} archivo(s)",
    "downloadStarted": "Descarga iniciada: {{name}}",
    "savedOk": "Guardado",
    "noneSelectedShort": "—",
    "unknownError": "Error desconocido",
    "writtenSettings": "Configuraciones escritas",
    "panelBlocked": "No se puede completar esta acción en el panel de administración",
    "partialSuccess": "La operación no tuvo éxito",
    "createdOk": "Creado",
    "updatedOk": "Actualizado",
    "deletedOk": "Eliminado",
    "applyDone": "Aplicar completado",
    "applyIncomplete": "Aplicar incompleto",
    "checking": "De cheques…",
    "dismiss": "Cerca",
    "hide": "Esconder",
    "show": "Espectáculo",
    "done": "Hecho",
    "next": "Próximo",
    "previous": "Anterior",
    "redirectedTo": "Se abrió {{to}} (antes {{from}})"
  },
  "cron": {
    "presetCdTrue": "aplicación de CD + verdadero (prueba)",
    "presetCleanTmp": "Temperatura de limpieza (muestra)",
    "presetNpmCron": "npm ejecuta cron (si corresponde)",
    "presetAppBin": "Ejecutar aplicación binaria",
    "presetRsync": "Sincronización estática (rsync de muestra)",
    "noLinuxUser": "(no usuario de Linux) · {{name}}",
    "projectUser": "Usuario del proyecto",
    "panelUser": "ysk · panel / sistema",
    "system": "Sistema",
    "rootCareful": "sistema raíz (cuidado)",
    "customUser": "{{user}} · personalizado",
    "success": "Éxito",
    "failed": "Fallido",
    "noProjects": "Aún no hay proyectos",
    "noProjectsHint": "Cree un proyecto (y preferiblemente un usuario del sistema) antes de registrar cron",
    "userSuffix": "· usuario",
    "mon": "Lun",
    "tue": "Mar",
    "wed": "Casarse",
    "thu": "Jue",
    "fri": "Vie",
    "sat": "Se sentó",
    "sun": "Sol",
    "everyNMin": "Cada N minutos",
    "fixedInterval": "Intervalo fijo",
    "hourly": "Cada hora",
    "atMinute": "al minuto",
    "daily": "A diario",
    "atTime": "en el momento",
    "weekly": "Semanalmente",
    "weekdayTime": "Día laborable + hora",
    "monthly": "Mensual",
    "dayTime": "Día + hora",
    "advanced": "Avanzado",
    "customExpr": "Expresión personalizada",
    "everyMinute": "cada minuto",
    "everyMinutes": "Cada {{n}} minutos",
    "hourlyAt": "Cada hora al minuto {{n}}",
    "dailyAt": "Diario {{time}}",
    "weeklyNone": "Semanal (sin días) {{time}}",
    "weeklyAt": "Semanal {{days}} {{time}}",
    "monthlyAt": "Día mensual {{day}} {{time}}",
    "customAt": "Personalizado: {{expr}}",
    "frequency": "Frecuencia de programación",
    "interval": "Intervalo",
    "fromHour": "Desde el principio de la hora",
    "intervalMinutes": "Minutos de intervalo",
    "min1": "1 minuto",
    "minN": "{{n}} minutos",
    "minuteOfHour": "Minuto de cada hora",
    "minPad": "{{n}} minutos",
    "hour": "Hora",
    "minute": "Minuto",
    "pickWeekdays": "Elige entre semana",
    "dayOfMonth": "Día del mes",
    "dayOfMonthHint": "Saltado si el mes no tiene ese día",
    "cronExpr": "expresión crontab",
    "cronExprHint": "Cinco campos: hora mínima día mes día laborable (0=domingo)",
    "cronExprPh": "expresión crontab",
    "needLinuxUser": "El proyecto seleccionado no tiene ningún usuario de Linux: primero cree uno en Recursos del proyecto",
    "boundProject": "Atado al proyecto; ejecutar como {{user}} (aislamiento de usuario de ejecución)",
    "systemJob": "Trabajo del sistema; ejecutar como {{user}}",
    "writtenManage": "Escrito en crontab administrado (aún no instalado en el host)",
    "needInstall": "Presione Instalar en el crontab del sistema para que surta efecto",
    "createdManageOnly": "Creado (solo administración)",
    "installedSystem": "Instalado en el sistema",
    "hostSynced": "Host sincronizado",
    "hostNotInstalled": "No en el anfitrión",
    "statusUnknown": "Estado desconocido",
    "systemCrontab": "crontab del sistema",
    "synced": "Sincronizado",
    "managedLines": "Líneas gestionadas",
    "jobsOnlyManage": "Los trabajos son sólo de gestión. crontab del sistema",
    "hostHasYsk": "incluye entradas YSK",
    "hostNoYsk": "no instalado o sin entradas YSK",
    "pressInstall": "Los trabajos registrados aún no están en el crontab del sistema; haga clic en Instalar en el sistema.",
    "jobsTab": "Empleos ({{count}})",
    "jobsTabPending": "Trabajos ({{count}}) · pendientes {{pending}}",
    "registeredJobs": "Empleos registrados ({{count}})",
    "jobsSub": "Entradas de gestión · Instalar en el sistema después de los cambios",
    "addJob": "+ Agregar trabajo",
    "noCron": "Aún no hay cron",
    "noCronDesc": "Agregue un trabajo (arriba a la derecha de la lista), luego instálelo en el crontab del sistema",
    "onceInstalled": "Instalado antes",
    "manageOnly": "Administrar solo",
    "projectLabel": "Proyecto",
    "systemLevel": "Sistema",
    "runOnce": "Corre ahora",
    "runOnceOk": "Corrió una vez",
    "updatedManage": "Gestión actualizada; reinstalar en el crontab del sistema",
    "updatedManageShort": "Gestión actualizada",
    "deletedManage": "Eliminado de la gestión; reinstalar para sincronizar el host",
    "installStatus": "Estado de instalación",
    "manageVsHost": "Gestión vs anfitrión",
    "hostYsk": "Anfitrión YSK",
    "lastInstall": "Última instalación",
    "installToSystem": "Instalar en el crontab del sistema",
    "installHint": "Instalar crontab del host de fusiones: mantiene las líneas que no son YSK y actualiza solo los trabajos administrados por el panel",
    "hostPreview": "Vista previa del crontab del host",
    "cannotRead": "No se puede leer o no está instalado (necesita privilegios)",
    "addJobTitle": "Agregar trabajo",
    "addJobDesc": "Gestión de escrituras; Instalar en el sistema para que se ejecute crontab",
    "createManageOnly": "Crear (solo administración)",
    "whenRun": "cuando correr",
    "whenRunHint": "Elija la frecuencia a continuación; modo avanzado para crontab sin formato",
    "userPathHint": "Las rutas de usuario + comando siguen el inicio/tiempo de ejecución del proyecto",
    "pickProject": "— seleccionar proyecto —",
    "runAsUser": "Ejecutar como usuario",
    "runAsHint": "El usuario del proyecto sincroniza el proyecto anterior; usuario del sistema = cron a nivel del sistema",
    "noProjectsYet": "(aún no hay proyectos)",
    "runInHome": "Ejecutar en inicio del proyecto ({{home}}); envuelto con runuser al guardar",
    "absPath": "Prefiero la ruta absoluta",
    "commonCmds": "Comandos comunes ({{runtime}})",
    "actualPreview": "Línea crontab real (vista previa)",
    "noLinuxName": "Este proyecto no tiene un nombre de usuario de Linux; primero cree un usuario del sistema en Recursos.",
    "afterCreate": "Después de crear:",
    "projectParen": "(proyecto {{name}})",
    "systemParen": "(a nivel de sistema, sin consolidar)",
    "weekLabel": "Día laborable",
    "willRun": "correrá",
    "projectNoLinux": "(ningún usuario de Linux)",
    "createManageOnlyParen": "Crear (solo administración)",
    "runAsHintFull": "El usuario del proyecto sincroniza el proyecto anterior; usuario del sistema = cron a nivel del sistema",
    "systemParenFull": "(a nivel de sistema, sin consolidar)",
    "hostOtherLines": "Alojar líneas que no sean YSK",
    "hostOtherLinesVal": "{{other}} otro ({{total}} líneas de trabajo de host)",
    "deleteTitle": "¿Eliminar trabajo cron?",
    "deleteDesc": "Elimina \"{{name}}\". Solo plano de control hasta que se aplique al crontab del sistema.",
    "hostJobs": "Trabajos de anfitrión",
    "hostJobsTitle": "Crontabs de host ({{count}})",
    "usersScanned": "Usuarios",
    "filterUser": "Usuario",
    "filterAll": "Todos los usuarios",
    "sourceYsk": "Panel",
    "sourceHost": "Anfitrión",
    "noHostJobs": "No hay trabajos crontab en este ámbito",
    "hostPartial": "No se pudo leer el crontab de todos los usuarios (se requiere root)",
    "pendingInstall": "Instalación pendiente ({{count}})",
    "pendingStale": "No escrito en el crontab del sistema durante {{days}} día(s); no se ejecutará.",
    "willNotRun": "No escrito en el crontab del sistema: no se ejecutará.",
    "hourRange": "La hora debe ser de 0 a 23.",
    "minuteRange": "Los minutos deben ser 0–59.",
    "hoursCommon": "Horario común",
    "hoursAll": "todas las horas",
    "invalidExpr": "No es una expresión cron de 5 campos válida.",
    "needCommand": "Se requiere comando.",
    "needUser": "Elija un proyecto o un usuario del sistema.",
    "hostCounts": "Líneas de host",
    "hostCountsVal": "{{ysk}} · otro {{other}} · total {{total}}",
    "hostYskYes": "líneas del panel presentes",
    "hostYskNo": "sin líneas de paneles",
    "emptyHostCrontab": "No hay crontab para {{user}}.",
    "writtenOnHost": "Escrito",
    "registeredJobsChip": "Registrado",
    "registeredVsWritten": "Registrado en el panel versus escrito en el host crontab",
    "installPreviewTitle": "Vista previa antes de instalar en el crontab del sistema",
    "installPreviewDesc": "Esto fusiona el bloque YSK en el crontab del host. Las líneas existentes que no son YSK permanecen.",
    "installPreviewMerge": "La instalación escribe un bloque de combinación crontab del servidor YSK. No reemplaza todo el crontab.",
    "installPreviewEmpty": "No hay trabajos administrados pendientes: la instalación aún actualiza el bloque YSK.",
    "editJobTitle": "Editar trabajo",
    "editJobDesc": "Los cambios permanecen en el panel hasta que los instale en el crontab del sistema.",
    "saveJob": "Guardar (solo administración)",
    "panelLines": "Líneas de paneles",
    "otherLines": "Otras lineas",
    "totalLines": "Total",
    "writtenOnHostHint": "Líneas ya escritas en el crontab del host",
    "registeredJobsHint": "Trabajos registrados en el panel (incluidos los pendientes de instalación)",
    "pendingInstallCount": "{{n}} instalación pendiente",
    "systemJobBadge": "Ningún proyecto · usuario del sistema",
    "hostEdit": "Editar",
    "hostEditTitle": "Editar línea crontab del host",
    "hostEditDesc": "Escribe el crontab en vivo de este usuario ahora. Necesita root y YSK_EXECUTE=1. Otras líneas permanecen.",
    "hostSave": "Escribir crontab",
    "hostSaveTitle": "¿Escribir esta línea crontab?",
    "hostSaveDesc": "Replaces the live line for {{user}}. Type EDIT to confirm.\n\nCurrent:\n{{from}}\n\nNext:\n{{to}}",
    "hostDisable": "Desactivar",
    "hostDisableTitle": "¿Desactivar la línea crontab del host?",
    "hostDisableDesc": "Comenta la línea para {{user}}. Escriba DESACTIVAR para confirmar.",
    "hostEnable": "Permitir",
    "hostEnableTitle": "¿Habilitar la línea crontab del host?",
    "hostEnableDesc": "Elimina el comentario de {{user}}. Escriba HABILITAR para confirmar.",
    "hostRunTitle": "¿Ejecutar este comando de host una vez?",
    "hostRunDesc": "Se ejecuta como {{user}} ahora. No cambia crontab. Escriba RUN para confirmar.",
    "hostAdopt": "Tomar en panel",
    "hostAdoptTitle": "¿Llevar esta línea de host al panel?",
    "hostAdoptDesc": "Etiqueta la línea activa # ysk:id y la registra. La próxima instalación no lo duplicará. Escriba ADOPTAR para confirmar.",
    "hostDeleteTitle": "¿Eliminar la línea crontab del host?",
    "hostDeleteDesc": "Elimina la línea viva de {{user}}. Escriba el comando para confirmar.",
    "hostUserLocked": "Propietario de Crontab (no se puede mover entre usuarios aquí)",
    "hostLinePreview": "Línea que se escribirá",
    "disabledJob": "Desactivado",
    "confirmMismatch": "Confirmar debe coincidir con el comando.",
    "writtenHost": "Escribió el crontab del host",
    "adoptedHost": "Tomado en el panel",
    "keepDisabledHint": "Esta línea está deshabilitada. Guardar lo mantiene comentado.",
    "currentLine": "Actual",
    "nextLine": "Próximo"
  },
  "dashboard": {
    "serviceAria": "{{name}}: {{state}}",
    "sev": {
      "ok": "OK",
      "warn": "Advertencia",
      "bad": "Problema"
    },
    "title": "Panel",
    "health": "Salud",
    "protection": "Modo de protección",
    "welcome": "Bienvenido al servidor YSK",
    "audit": "Auditoría reciente",
    "needLogin": "Inicie sesión para ver eventos de auditoría",
    "features": "Características",
    "featuresHint": "Insignias: Listo = software instalado;",
    "badge": {
      "panel": "Panel",
      "notInstalled": "No instalado",
      "ready": "Listo",
      "installed": "Instalado",
      "prodReady": "Prod listo",
      "check": "Controlar",
      "needPerm": "Necesita permanente"
    },
    "status": {
      "healthy": "Saludable",
      "prodReady": "Prod listo",
      "needsCheck": "Verificación de necesidades"
    },
    "stat": {
      "backups": "Copias de seguridad",
      "notifications": "Alertas",
      "certExpiry": "Caducidad del certificado"
    },
    "tabs": {
      "overview": "Descripción general",
      "wizard": "creación rápida",
      "notifications": "Alertas",
      "features": "Características"
    },
    "serviceHealth": "Estado del servicio",
    "serviceHealthDesc": "Sonda systemctl en vivo",
    "fullServiceMatrix": "Matriz de servicio completo",
    "readinessCheck": "Preparación:",
    "prodOk": "Listo para la producción",
    "notFullyReady": "No completamente listo",
    "readinessBlocked": "{{n}} bloqueador(es)",
    "modeScore": "Modo {{mode}} · puntuación {{ready}}/{{total}}",
    "mode": {
      "degraded": "degradado",
      "production_capable": "listo para la producción",
      "blocked": "obstruido",
      "normal": "normal"
    },
    "details": "Detalles",
    "certExpiryTitle": "Caducidad del certificado:",
    "certExpired": "venció",
    "certDays": "{{days}}d",
    "securityStrip": "Estado de seguridad y aplicación",
    "securityStripDesc": "Alertas en vivo + aplicar auditoría de honestidad (escrito ≠ aplicado)",
    "notifCount": "Alertas {{count}}",
    "criticalCount": "· crítico {{count}}",
    "warnCount": "· advertir {{count}}",
    "applyAuditBadge": "Aplicar auditoría · ok {{ok}} · advertir {{warn}} · malo {{bad}}",
    "executeBadge": "EJECUTAR {{state}}",
    "executeLabel": "EXECUTE",
    "publicNo2fa": "Este panel escucha en todas las interfaces y su cuenta de administrador no tiene 2FA.",
    "go": "Abierto",
    "open": "Abierto",
    "noCriticalWarn": "Sin alertas críticas o de advertencia",
    "notifCenter": "Centro de notificaciones",
    "noHealthYet": "Estado de salud aún no disponible",
    "sysChange": "Cambios en el sistema",
    "opened": "En",
    "closed": "Apagado",
    "readinessLink": "Preparación →",
    "hostMetrics": "Métricas de host",
    "loadAvg": "Carga media (1 · 5 · 15 min)",
    "memoryDash": "Memoria -",
    "metricsLink": "Métricas →",
    "runningOf": "Corriendo {{running}}/{{total}}",
    "noProjects": "Aún no hay proyectos",
    "wizardLink": "Creación rápida →",
    "allProjects": "Todos los proyectos →",
    "recentN": "Último {{n}}",
    "runningCount": "Corriendo {{n}}",
    "securityLink": "Seguridad →",
    "wizardTitle": "creación rápida",
    "wizardDesc": "Cree un proyecto y, opcionalmente, borrador de DNS/correo/base de datos (aplicar en cada página de características)",
    "projectName": "Nombre del proyecto",
    "projectNameHint": "Nombre para mostrar; crea un directorio coincidente",
    "nameRequired": "Introduzca un nombre de proyecto",
    "domainOptional": "Dominio (opcional)",
    "domainHint": "Requerido para habilitar DNS y opciones de correo",
    "runtime": "Tiempo de ejecución",
    "runtimeHint": "Establece la versión de tiempo de ejecución predeterminada y el estilo de implementación.",
    "runtimeVersion": "Versión en tiempo de ejecución",
    "versionHint": "Se guarda como versión de entorno de ejecución del proyecto",
    "serverIpv4": "Servidor IPv4",
    "serverIpv4Hint": "DNS A/correo SPF",
    "serverIpv4Ph": "Este host público IPv4",
    "serverIpv6": "Servidor IPv6 (opcional)",
    "serverIpv6Hint": "Escribe AAAA / ip6: cuando está configurado",
    "serverIpv6Ph": "IPv6 público (opcional)",
    "needDomainFirst": "Escriba primero un dominio",
    "withDns": "Crear también zona DNS",
    "withDnsDesc": "Dominio de necesidades; solo registro: aplicar zona en la página DNS",
    "withMail": "Registrar también dominio de correo",
    "withMailDesc": "Dominio de necesidades; instalar software y DNS en la página de detalles del correo",
    "withDb": "También borrador de base de datos MySQL.",
    "withDbDesc": "Registro del plano de control; aplicar en la página del motor SQL",
    "wizardHint": "La creación rápida no se activa automáticamente",
    "wizardSubmit": "Crear",
    "wizardOk": "Creado",
    "wizardPartial": "Parcialmente fallido",
    "notifCenterTitle": "Notificaciones ({{count}})",
    "notifCenterDesc": "Crítico {{critical}} · advertir {{warn}} · información {{info}}",
    "noNotifs": "Sin notificaciones",
    "noNotifsDesc": "Las alertas del sistema y todos aparecen aquí.",
    "applyAuditTitle": "Aplicar auditoría de estado",
    "applyAuditDesc": "ok {{ok}} · advertir {{warn}} · malo {{bad}}",
    "barTitle": "{{count}} aviso(s) del host",
    "levelCritical": "Crítico",
    "levelWarn": "Aviso",
    "levelInfo": "Información",
    "colTitle": "Aviso",
    "colDetail": "Detalle",
    "colSource": "Origen",
    "notifSearch": "Alertas de búsqueda",
    "notifAll": "Todo",
    "notifDismiss": "Esconder",
    "goFix": "Arreglar"
  },
  "dataTable": {
    "empty": "Sin datos",
    "actions": "Comportamiento"
  },
  "db": {
    "serviceSettings": "Configuraciones de servicio",
    "installedOk": "{{engine}} instalado",
    "startedOk": "{{engine}} iniciado",
    "installFirst": "Instale {{engine}} primero",
    "softwareMissing": "{{engine}} el software no está instalado",
    "serviceOverview": "Descripción general del servicio",
    "readonlyStatus": "Estado de solo lectura",
    "readonlyProbe": "Sonda de solo lectura",
    "systemChange": "Cambios en el sistema",
    "opened": "Activado",
    "notOpened": "Desactivado",
    "admin": "Administración",
    "client": "Cliente",
    "hasClient": "Sí",
    "noClient": "No",
    "canProvision": "Puede crear bases de datos",
    "dumpOk": "Volcado completo",
    "dumpFailed": "Error en el volcado",
    "noDumpToImport": "No hay archivo de volcado para importar",
    "expiredTempUsersProcessed": "Usuarios temporales caducados procesados",
    "dumpFirstDb": "Volcar la primera base de datos",
    "importLatestDump": "Importar el último volcado",
    "cleanupExpiredTempUsers": "Limpiar usuarios temporales caducados",
    "adminerEntry": "proyecto de navegador de base de datos",
    "browserProjectTitle": "Crear proyecto de navegador de base de datos",
    "browserTool": "Herramienta",
    "browserNameHint": "Crea un proyecto PHP; el nombre debe ser único",
    "browserNameTaken": "El nombre del proyecto ya existe: {{name}}",
    "browserProjectCreated": "Proyecto de navegador de base de datos creado",
    "createBrowserProject": "Crear proyecto e implementar",
    "downloadPhpMyAdmin": "Descargue phpMyAdmin (necesita cambio de sistema + red)",
    "createDatabase": "Crear base de datos",
    "installBannerHint": "Utilice el banner de arriba para instalar {{engine}}.",
    "exclusiveMariaHint": "Este host ejecuta MariaDB. Utilice la página MariaDB o el interruptor de un clic (escriba SWITCH).",
    "exclusiveMysqlHint": "Este host ejecuta MySQL. Utilice la página MySQL o el interruptor de un clic (escriba SWITCH).",
    "openMaria": "MariaDB",
    "openMysql": "MySQL",
    "openMariaService": "servicio mariadb",
    "openMysqlService": "servicio mysql",
    "startService": "Iniciar servicio",
    "openServiceConsole": "Abrir consola de servicio",
    "opsResult": "resultado de operaciones",
    "tempPasswordOnce": "Contraseña temporal de sólo lectura (se muestra una vez):",
    "tabDatabases": "Bases de datos ({{count}})",
    "tabUsers": "Usuarios ({{count}})",
    "tabTemp": "Temporal de solo lectura ({{count}})",
    "tabRemote": "Hosts remotos ({{count}})",
    "dbList": "Lista de bases de datos",
    "charset": "juego de caracteres",
    "noDatabasesYet": "Aún no hay bases de datos",
    "emptyDbInstallFirst": "Instale {{engine}} a través del banner, luego Crear base de datos",
    "emptyDbCannotProvision": "No se pueden crear bases de datos en el servidor en este momento",
    "emptyDbCreateHint": "Utilice Crear base de datos y luego Aplicar",
    "emptyDbHostHasRows": "El host ya tiene bases de datos que no están en esta lista del plano de control.",
    "registeredVsHostHint": "Registrado en el panel / hallado en el anfitrión",
    "registeredCount": "Registrado",
    "hostCount": "En anfitrión",
    "registeredUsers": "Usuarios registrados",
    "registeredUsersHint": "Solo registros del panel: no todas las cuentas MySQL",
    "hostStillExists": "Todavía en el anfitrión",
    "expiresLabel": "Vence",
    "dumpNeedRegistered": "Registre primero una base de datos en el panel",
    "dumpFirstDbTitle": "Exportar la primera base registrada",
    "importNeedRegistered": "Registre primero una base de datos en el panel",
    "importLatestNeedConfirm": "Requiere confirmación — importa a la base registrada",
    "hostHasUntracked": "{{count}} las bases de datos del host no están registradas en el panel",
    "hostInventoryHint": "La tabla incluye únicamente filas del plano de control. Los nombres en vivo provienen de MOSTRAR BASES DE DATOS.",
    "userList": "Usuarios",
    "userListDesc": "Otorgar a los usuarios acceso a las bases de datos",
    "createUserBtn": "+ Crear usuario",
    "noUsersYet": "Aún no hay usuarios",
    "tempReadonlyUsers": "Usuarios temporales de solo lectura",
    "tempReadonlyDesc": "Las marcas del plano de control expiraron después de TTL;",
    "dbName": "Nombre de la base de datos",
    "ttlHours": "TTL (horas)",
    "ttlHoursHint": "Marcado como no válido después de su vencimiento",
    "createReadonlyUser": "Crear usuario de solo lectura",
    "tempUserCreated": "Usuario temporal de solo lectura creado",
    "expiresAt": "Vence",
    "revokeRegistration": "Revocar registro",
    "remoteDbHosts": "Hosts de bases de datos remotas",
    "remoteDbHostsDesc": "Registrar destinos de conexión (la contraseña no se repite)",
    "remoteTest": "Conexión de prueba",
    "remoteTestDone": "Sonda del host remoto finalizada",
    "remoteTestOk": "accesible",
    "remoteTestFail": "inalcanzable",
    "remoteNotChecked": "no probado",
    "remoteDeleteTitle": "Quitar solo este registro",
    "remoteDeleteConfirm": "¿Quitar el registro {{name}}? El servidor remoto no cambia.",
    "displayName": "Nombre para mostrar",
    "prodReplicaPlaceholder": "Réplica de producción",
    "remoteHostSaved": "Host remoto guardado",
    "createDbTitle": "Crear base de datos {{engine}}",
    "createDbDesc": "Después del registro del plano de control, solicite escribir en el servidor",
    "dbNameHint": "Alnum minúscula y guión bajo; aplicar al sistema después de crear",
    "alsoCreateUser": "Crear también usuario",
    "alsoCreateUserDesc": "Cree un inicio de sesión que pueda conectarse a esta base de datos.",
    "passwordMin8": "Al menos 8 caracteres",
    "passwordMin8chars": "Al menos 8 caracteres",
    "allowConnectHost": "Anfitrión permitido",
    "allowConnectHostHint": "A menudo % (cualquiera) o localhost",
    "allowConnectHostHintShort": "A menudo % o localhost",
    "createDbHint": "Escribe sólo en el plano de control; Aplicar ejecuta CREATE DATABASE en el servidor.",
    "createUserTitle": "Crear usuario {{engine}}",
    "createUserDesc": "Aplicar después de crear",
    "bindDatabase": "Vincular base de datos",
    "bindDatabaseHint": "Opcional; otorgar privilegios en esta base de datos",
    "noneOption": "- ninguno -",
    "importDumpTitle": "¿Importar volcado?",
    "importDumpDesc": "Importar {{dump}} a {{db}}",
    "import": "Importar",
    "importOk": "Importación completa",
    "importFailed": "Importación fallida",
    "deleteDbTitle": "¿Eliminar el registro de la base de datos?",
    "deleteDbDesc": "Elimina únicamente el registro del plano de control; no elimina la base de datos del servidor.",
    "deleteUserTitle": "¿Eliminar el registro de usuario?",
    "deleteUserDesc": "Elimina únicamente el registro del plano de control.",
    "adminerTitle": "Navegador de base de datos de administrador",
    "adminerDesc": "Descargar Adminer + escribir Nginx conf; aplicar al sistema ejecuta nginx -t + recargar",
    "adminerWritten": "Administrador escrito en archivos de gestión",
    "adminerApplied": "Administrador aplicado",
    "writeOnly": "Sólo escribir (escrito)",
    "applyToSystem": "Aplicar al sistema",
    "adminerRisk": "El administrador público es arriesgado: restrinja las IP de origen o agregue autenticación HTTP. Necesita un socket PHP-FPM (php8.2 predeterminado).",
    "vhostName": "Nombre de host virtual",
    "vhostHint": "Apunte DNS A a este host para acceso externo",
    "downloadAdminer": "Descargar Adminer PHP (necesita YSK_EXECUTE + red saliente)",
    "downloadAdminerDesc": "Desactivado = usar solo el archivo ya descargado",
    "adminerWriteHint": "Sólo escritura = gestión escrita;",
    "pgInstallBanner": "Primero instale PostgreSQL a través del banner",
    "pgEmptyCreateHint": "Después de crear, Aplicar al sistema para escribir en el servidor",
    "pgNoDbs": "Aún no hay bases de datos PostgreSQL",
    "pgCreateTitle": "Crear base de datos PostgreSQL",
    "pgCreateDesc": "Registro del plano de control; Aplicar a las ejecuciones del sistema CREAR BASE DE DATOS",
    "pgAlsoCreateRole": "También crear rol",
    "pgAlsoCreateRoleDesc": "Cree una función de inicio de sesión y otorgue esta base de datos",
    "roleName": "Nombre del rol",
    "roleHint": "Rol de PostgreSQL/usuario de inicio de sesión",
    "pgDeleteDbDesc": "Elimina el registro del plano de control (no se elimina automáticamente a menos que se ejecute una aplicación de revocación).",
    "update": "Actualizar",
    "alsoCreateRole": "También crear rol",
    "cluster": {
      "standaloneOtherEngines": "Este motor es independiente. Otros motores tienen grupos: {{names}}.",
      "roleUnassigned": "No hay rol asignado",
      "title": "Grupo",
      "description": "Planificar → escribir gestión → aplicar → sondear → distribuir entre pares / flota. Ejecución en seco predeterminada.",
      "redirectedFromCluster": "Fuiste redirigido aquí desde /cluster. Esta es la pestaña del clúster de base de datos.",
      "notApplied": "No aplicado",
      "plannedAt": "Creado {{when}}",
      "clearStalePlans": "Borrar planes obsoletos",
      "clearStalePlansTitle": "¿Eliminar clústeres planificados obsoletos?",
      "clearStalePlansDesc": "Elimina {{n}} registros planificados/borradores de más de 7 días. No aplica ni empuja. La configuración del sistema no se toca.",
      "landingTitle": "Clúster de bases de datos",
      "landingDesc": "No database engine is installed on this host. Open an engine page to install, then return here.",
      "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. /cluster does not open a MySQL tab when MySQL is missing.",
      "openEngine": "Abierto {{engine}}",
      "overviewPill": "Grupos {{n}}",
      "enginesInstalled": "motores",
      "plannedCount": "Planificado",
      "overviewList": "Clústeres ({{count}})",
      "overviewEmpty": "Aún no hay registros de clústeres.",
      "engine": "Motor",
      "kind": "Amable",
      "members": "Miembros",
      "kindGalera": "Galera Sencilla",
      "kindMysqlReplica": "MySQL primario/réplica",
      "kindPgReplica": "Réplica de transmisión de PostgreSQL",
      "kindRedisReplica": "Redis primario/réplica",
      "createGalera": "Crear Galera sencilla",
      "createMysqlReplica": "Crear primario/réplica",
      "createPgReplica": "Crear réplica de transmisión",
      "createSentinel": "Crear centinela",
      "createRedisReplica": "Crear réplica de Redis",
      "needRealIps": "Ingrese IP/nombres de host locales y de pares reales",
      "hostInvalid": "Ingrese un IPv4, IPv6 o nombre de host válido.",
      "statusNote": "Estado: {{status}} (éxito del plan ≠ estado del clúster)",
      "artifactNote": "Artefactos: {{dir}}",
      "planGenerated": "Plan generado (ejecución en seco)",
      "planUpdated": "Plan actualizado",
      "manageWritten": "Archivos de gestión escritos (ejecución en seco)",
      "bootstrapTried": "Intento de arranque",
      "applyTried": "Se intentó aplicar la configuración del sistema",
      "localOk": "Locales correctos",
      "localProbeFail": "Falló la sonda local",
      "probedWithPeers": "Probado (incluidos pares)",
      "probedLocal": "Local investigado",
      "peerTarNote": "Paquete de pares descargado (.tar.gz): extraiga e instale conf en el par",
      "downloaded": "Descargado",
      "peerPushed": "Empujado a mirar",
      "pushPlanGenerated": "Plan de empuje generado",
      "registrationDeleted": "Registro eliminado",
      "nodes": "Nodos",
      "remoteInstallPlan": "Plan de instalación remota",
      "fleetSession": "ID de sesión del agente de flota",
      "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
      "fleetSessionPh": "UUID de sesión de página de agentes",
      "fleetSessionNone": "Ninguno: use SSH",
      "fleetSessionOpenAgents": "Abrir /agentes para registrar una sesión",
      "createWizardTitle": "Abre el asistente de planes. Necesita una IP local y ≥1 par. Escribe únicamente artefactos del panel (ejecución en seco). No reinicia el motor hasta que lo aplica.",
      "bootstrap": "Oreja",
      "fleetApply": "Aplicar flota",
      "planTitle": "Regenerar el plan de clúster (sin cambio de host)",
      "writeFileTitle": "Escribir archivos de administración en el directorio de datos del panel (ejecución en seco)",
      "probeLocalTitle": "Sondear solo este host",
      "probeAllTitle": "Sondear a cada miembro registrado",
      "bootstrapTitle": "Instale el drop-in local y arranque el primer nodo",
      "remoteInstallPlanTitle": "Vista previa de la instalación remota (sin ejecución)",
      "downloadBundleTitle": "Descargar paquete de configuración de pares (.tar.gz)",
      "pushPlanTitle": "Vista previa push to peer (sin scp)",
      "fleetSyncPlanTitle": "Vista previa de sincronización de flota (sin ejecución)",
      "fleetApplyTitle": "¿Se aplica la cola a los miembros de la flota?",
      "status": {
        "healthy": "Saludable",
        "planned": "Planificado",
        "partial": "Parcial",
        "failed": "Fallido",
        "draft": "Borrador",
        "degraded": "Degradado",
        "applied": "Aplicado"
      },
      "fleetSyncPlan": "Plan de sincronización de flota",
      "standaloneTitle": "Actualmente: independiente",
      "standaloneRepl": "Ninguna réplica registrada. Configure primario/maestro + réplica para generar configuraciones y scripts.",
      "standaloneHa": "No HA registrado. Agregue nodos pares para generar un plan de configuración, luego inicie/únase.",
      "recentProbe": "Sondeo reciente (wsrep local)",
      "probeRequired": "saludable requiere una prueba de paso",
      "planPreview": "Vista previa del plan",
      "planPreviewDesc": "ejecución en seco · éxito solo significa pasos/conf generados",
      "files": "Archivos",
      "systemChangeNeed": "Requerido al aplicar",
      "planModalDesc": "Seleccionar nodos → generar plan (no cambia los sistemas pares)",
      "generatePlan": "generar plan",
      "clusterName": "Nombre del clúster",
      "localIp": "IP local/host",
      "primaryIpHint": "Host del plano de control (primario/maestro + acceso=local)",
      "localIpHint": "Host del plano de control (acceso=local)",
      "ipExample1": "p.ej. 10.0.0.1",
      "ipExample2": "p.ej. 10.0.0.2",
      "ipExample3": "p.ej. 10.0.0.3",
      "replicaIp": "Réplica de IP/host",
      "peerIp": "IP del mismo nivel/host",
      "replicaHint": "Nodo réplica",
      "peerHint": "Segundo nodo (Galera prefiere 3)",
      "thirdNode": "3er nodo (opcional)",
      "thirdNodeHint": "Recomendado para Galera/multiréplica",
      "sstMethod": "método SST",
      "forbidDemoIp": "Sin IP de demostración (203.0.113.x).",
      "fwGalera": "Abierto interno 3306 / 4567 / 4444 / 4568.",
      "fwPg": "La transmisión necesita 5432 interno; cambiar CHANGE_ME contraseñas en scripts.",
      "fwRedis": "Redis interno 6379 (centinela 26379).",
      "fwRepl": "Las réplicas necesitan puertos internos coincidentes; cambiar CHANGE_ME contraseñas.",
      "needExecuteRoot": "La aplicación de la configuración del sistema necesita YSK_EXECUTE=1 + root.",
      "topology": "Topología: {{kind}}",
      "applyLocalTitle": "¿Aplicar la configuración del sistema local?",
      "applyBootstrapDesc": "Instala Galera drop-in y bootstrap (galera_new_cluster)",
      "applyJoinDesc": "Instala Galera drop-in y systemctl reinicia mariadb",
      "confirmApply": "Confirmar aplicar",
      "deleteClusterTitle": "¿Eliminar el registro del clúster?",
      "remoteInstallTitle": "¿Par de instalación remota?",
      "pushTitle": "¿Empujar para mirar?",
      "fleetSyncTitle": "¿Sincronización de flotas?",
      "confirmOp": "Confirmar",
      "deleteClusterDesc": "La configuración del sistema no se borra automáticamente (v1).",
      "remoteInstallDesc": "Instale conf + reiniciar en el par. Necesita YSK_EXECUTE + SSH.",
      "pushDesc": "archivos scp para igualar /tmp?",
      "fleetSyncDesc": "Sincronice la instantánea del clúster con el borde de la flota y luego aplíquela.",
      "fleetApplyDesc": "La cola se aplica a los miembros de la flota.",
      "remoteInstalled": "Instalación remota",
      "fleetSynced": "Sincronización de flota en cola",
      "fleetApplyQueued": "Solicitud de flota en cola",
      "engineNotInstalled": "{{engine}} no está instalado en este host; instálelo primero o abra el motor que realmente se está ejecutando.",
      "plan": "Plan",
      "writeFile": "Escribir archivos",
      "applyLocal": "Aplicar local",
      "probeAll": "Sondear todos los nodos",
      "remoteInstall": "instalación remota",
      "downloadBundle": "Descargar paquete",
      "pushPlan": "plan de empuje",
      "pushExecute": "Empujar ejecutar",
      "fleetSync": "Sincronización de flota",
      "localConfPreview": "Vista previa de configuración local",
      "refresh": "Refrescar",
      "close": "Cerca",
      "cancel": "Cancelar",
      "delete": "Borrar",
      "probe": "Sonda",
      "name": "Nombre",
      "type": "Tipo"
    },
    "console": {
      "dataBrowse": "Explorar datos",
      "dbManage": "Administrador de base de datos",
      "realtime": "Vivir",
      "reload": "Recargar",
      "needRestart": "Reiniciar requerido",
      "affectsProjects": "Los sitios y servicios que utilicen este motor serán interrumpidos.",
      "lifecycle": "Ciclo vital",
      "overview": "Descripción general",
      "actionDone": "{{action}} hecho",
      "installDone": "Instalación completa",
      "noChanges": "Nada que aplicar",
      "settingsApplied": "Configuración aplicada",
      "notReadFromService": "No leído del servicio",
      "applyMode": "Modo de aplicación: {{mode}}",
      "dirtyNotApplied": "Modificado, no aplicado",
      "highRisk": "Entornos de alto riesgo",
      "engine": "Motor",
      "bootEnabled": "Comenzar al arrancar",
      "uptimeSec": "Tiempo de actividad (s)",
      "currentConnections": "Conexiones",
      "changes": "Cambios",
      "serviceTitle": "{{title}} servicio",
      "softwareMissing": "{{title}} el software no está instalado",
      "overviewDesc": "Información de solo lectura de la sonda (no campos de formulario)",
      "lifecycleDesc": "Instalar, iniciar, detener y habilitar en el arranque",
      "about": "Acerca de",
      "cluster": "Grupo",
      "noSettings": "No hay configuraciones en esta categoría (o no son compatibles con esta versión)",
      "applyHint": "Live puede cambiar en línea;",
      "applyCategory": "Aplicar categoría",
      "applyAll": "Aplicar todos los cambios",
      "applyCatCount": "Aplicar categoría ({{n}})",
      "applyAllCount": "Aplicar todo ({{n}})",
      "lifecycleNote": "En Configuración, Live cambia en línea; Se requiere reinicio. Necesita reiniciar el ciclo de vida después de aplicar.",
      "installEngine": "Utilice el banner de arriba para instalar {{title}}.",
      "reloadConfig": "Recargar configuración",
      "disableBoot": "Deshabilitar al arrancar",
      "disableBootConfirm": "El motor no arrancará después del reinicio hasta que lo habilite nuevamente.",
      "needRights": "Necesita derechos de cambio de sistema y administrador. Los fracasos muestran razones, nunca finjas el éxito.",
      "noneFetched": "- ninguno -"
    },
    "importEntry": "Entrada: {{url}}",
    "adminerRiskFull": "El administrador público es arriesgado: restrinja las IP de origen o agregue autenticación HTTP. Necesita un socket PHP-FPM (php8.2 predeterminado).",
    "adminerWriteHintFull": "Sólo escritura = gestión escrita;",
    "pgInstalled": "PostgreSQL instalado",
    "pgStarted": "PostgreSQL iniciado",
    "notInstalledShort": "No instalado",
    "serviceConsole": "Consola de servicio",
    "installPgFirst": "Instale PostgreSQL primero",
    "pgSoftwareMissing": "El software PostgreSQL no está instalado",
    "installPgBanner": "Utilice el banner de arriba para instalar PostgreSQL.",
    "createPlus": "+ Crear",
    "dbNameHintPg": "Alnum minúscula y guión bajo; aplicar después de crear",
    "deleteNotePg": "La eliminación del registro no elimina la base de datos del servidor; Aplicar correctamente significa que DDL se ejecutó en el host.",
    "tabDatabasesSimple": "Bases de datos ({{count}})",
    "frozenTitle": "El servicio de base de datos necesita reparación",
    "frozenBody": "Problemas detectados (modo de congelación: {{mode}};",
    "unfreezeBtn": "Diagnosticar y reparar",
    "unfreezeConfirmTitle": "¿Reparar {{engine}}?",
    "unfreezeConfirmDesc": "Ejecuta un plan de reparación genérico a partir de diagnósticos (detener, borrar congelación, desinfectar configuración, iniciar emp).",
    "unfreezeConfirmBtn": "Confirmar reparación",
    "unfreezeOk": "{{engine}} reparación completa",
    "startAfterUnfreeze": "Iniciar servicio (plan de reparación de ejecución automática en caso de falla)",
    "serviceDownTitle": "El servicio de base de datos está caído",
    "serviceDownBody": "El servicio no es saludable.",
    "adoptHostDb": "Regístrate {{name}}",
    "adoptHostDbTitle": "Solo registra el nombre en el plano de control; no cambia datos del anfitrión.",
    "cleanupExpiredTempUsersTitle": "Elimina usuarios temporales del panel que ya caducaron",
    "invalidSqlIdent": "Utilice un identificador en minúscula: comience con una letra, luego letras, dígitos o guión bajo.",
    "remoteHostRequired": "Ingrese un host remoto.",
    "remoteTestUnsaved": "Primero guarde este host y luego pruebe la conexión. O llene el host y guárdelo.",
    "serverNotInstalled": "Este motor no está instalado en el servidor.",
    "dumpNeedEngine": "Instale el motor antes de exportar una base de datos.",
    "unboundDatabase": "Registro de base de datos eliminado",
    "userGoneRefresh": "Ese usuario ya no está. La lista fue actualizada."
  },
  "dialogs": {
    "confirmDefault": "Confirmar",
    "cancelDefault": "Cancelar",
    "severity": {
      "consequencesTitle": "Esto:",
      "typeToConfirm": "Escribe \"{{text}}\" para confirmar"
    }
  },
  "dns": {
    "templates": {
      "minimal": "Mínimo: solo ápice A",
      "web": "Web — ápice + www",
      "mail": "Correo: apex + correo + MX + SPF",
      "full": "Completo: web + correo + ftp + SPF",
      "cdn": "CDN: apex + www + cdn (preparado para múltiples bordes)"
    },
    "dnssecOk": "Claves DNSSEC generadas (escritas: zona no firmada/no en el registrador)",
    "dnssecNotOk": "Claves DNSSEC no generadas (solo notas o herramientas no disponibles, sin falso éxito)",
    "dnssecFailed": "DNSSEC falló",
    "blocked": "Bloqueado (necesita permiso de cambio de sistema)",
    "clusterDone": "Hecho ({{status}})",
    "clusterPartial": "No fue completamente exitoso ({{status}}): consulte los detalles a continuación",
    "clusterFailed": "La operación del clúster falló",
    "validateFailed": "La validación del registro falló",
    "validateRequestFailed": "La solicitud de validación falló",
    "lookupFailed": "La búsqueda falló",
    "statRecords": "Archivos",
    "statSelected": "Seleccionado",
    "notInstalled": "El software DNS requerido no está instalado",
    "dsForRegistrar": "DS (para registrador; no publicado automáticamente):",
    "tabs": {
      "zones": "Zonas",
      "records": "Archivos",
      "cluster": "Grupo",
      "dnssec": "DNSSEC",
      "tools": "Herramientas",
      "ddns": "DDNS",
      "about": "Acerca de"
    },
    "recentWrite": "Resultado de escritura reciente",
    "zonesTitle": "Zonas ({{count}})",
    "zonesDesc": "Después de crear, escribir/aplicar la zona.",
    "createZone": "+ Crear zona",
    "mailZonesMissing": "Los dominios de correo electrónico no tienen zona DNS aquí: {{domains}}.",
    "createMailZone": "Crear zona de correo",
    "colZoneName": "Nombre de zona",
    "colServerIp": "IP del servidor",
    "colTemplate": "Plantilla",
    "colStatus": "Estado",
    "emptyZonesTitle": "Aún no hay zonas DNS",
    "emptyZonesDesc": "Utilice \"Crear zona\" en la barra de herramientas de la lista",
    "applyZoneTitle": "Escriba el archivo de zona y regístrese en PowerDNS llamado.conf + redescubrir (escribir ≠ buscar respuestas)",
    "applyZone": "Escribir / aplicar",
    "recordsFor": "Registros — {{zone}}",
    "recordsNeedSelect": "Registros (seleccione una zona primero)",
    "statusLabel": "Estado",
    "addRecord": "+ Agregar registro",
    "writeZoneFile": "Zona de escritura y carga",
    "healthLoaded": "Cargado",
    "stateLoaded": "Cargado",
    "healthPublicNs": "NS público",
    "statePublicNs": "NS público",
    "publicNsHere": "→ este anfitrión",
    "requestLeTitle": "Solicite Let's Encrypt para {{zone}}",
    "requestZoneSsl": "Solicitar SSL para zona",
    "soaTitle": "SOA/TTL predeterminado",
    "soaDesc": "Servidor de nombres SOA y $TTL al escribir el archivo de zona;",
    "soaBlockNs": "Servidores de nombres",
    "soaBlockTiming": "TTL y temporizadores",
    "recordsListTitle": "Registros DNS ({{count}})",
    "recordsListDesc": "Después de las ediciones, utilice \"Escribir archivo de zona\" arriba para las actualizaciones de archivos en disco denominadas así.",
    "soaNsLabel": "servidor de nombres SOA",
    "soaNsHint": "Déjelo vacío → predeterminado ns1.zone.",
    "defaultTtl": "TTL predeterminado (segundos)",
    "min1": "1 minuto",
    "min5": "5 minutos",
    "min10": "10 minutos",
    "hour1": "1 hora",
    "day1": "1 dia",
    "customSeconds": "Segundos personalizados",
    "soaSaved": "SOA guardado (plano de control): “Escribir archivo de zona” para aplicar",
    "soaSaveFailed": "No se pudo guardar SOA",
    "soaSavedAndWritten": "Archivo de zona guardado y escrito",
    "soaWriteFailed": "Error de escritura SOA",
    "failed": "Fallido",
    "colType": "Tipo",
    "colName": "Nombre",
    "colValue": "Valor",
    "emptyRecords": "Sin registros",
    "noZoneSelectedTitle": "Ninguna zona seleccionada",
    "noZoneSelectedDesc": "Elija una zona en la pestaña Zonas",
    "clusterTitle": "Clúster DNS",
    "clusterDesc": "Después del SCP de los archivos de zona, recarga remota (rndc/named/bind9/pdns)",
    "peerHost": "Anfitrión par",
    "peerHostHint": "Nombre de host NS secundario o IP (inicio de sesión con clave SSH)",
    "sshUser": "Usuario SSH",
    "sshUserHint": "Necesita escribir en la ruta de destino y permiso de recarga",
    "labelOptional": "Etiqueta (opcional)",
    "labelPlaceholder": "p.ej. ns2 / hkg-edge-dns",
    "opPerPeer": "Esta operación (por par)",
    "registeredPeers": "Compañeros registrados ({{count}})",
    "lastProbeHint": "actualizaciones de lastProbe después de sondear o presionar",
    "noPeers": "Aún no hay compañeros registrados",
    "zoneDirMissing": "· falta el directorio de zona",
    "generateKeys": "Generar claves; no se activa automáticamente",
    "selectZoneFirst": "Seleccione una zona primero",
    "lookupTitle": "Búsqueda de DNS (excavar)",
    "lookupDesc": "Consultar resolutores públicos; verificar multi-A/CDN. No inventa respuestas.",
    "lookupNamePlaceholder": "p.ej. ejemplo.com o www.ejemplo.com",
    "lookupType": "Tipo de consulta",
    "lookupResults": "Resultados ({{count}})",
    "lookupNoAnswerFail": "No hay respuestas / falló",
    "digNotInstalled": "excavar no está instalado",
    "digNotInstalledHint": "Esta pestaña necesita el binario dig (bind9-dnsutils). Eso no es NXDOMAIN. Instale bind9-dnsutils desde el administrador de paquetes del host; esta página no la instala automáticamente.",
    "method": "Método: {{method}}",
    "noAnswers": "No hay respuestas",
    "noAnswersDesc": "NXDOMAIN, vaciar RRset o resolver falla",
    "lookupOkHint": "Resultados de consultas en vivo",
    "lookupFailHint": "La búsqueda falló o está vacía. Verifique el nombre, el tipo y los solucionadores ascendentes.",
    "validateTitle": "Validación de registros",
    "validateDesc": "Crear/editar validaciones automáticas (CNAME choca, formato A/AAAA, etc.).",
    "createZoneTitle": "Crear zona DNS",
    "createZoneDesc": "Generar registros a partir de una plantilla",
    "createZoneNeedValid": "Ingrese un nombre de zona válido y una dirección IPv4",
    "zoneNameHint": "p.ej. ejemplo.com (sin punto final)",
    "invalidZone": "Nombre de zona no válido. Utilice un dominio real (por ejemplo, ejemplo.com).",
    "invalidIpv4": "IPv4 no válido. Cada octeto debe tener un valor entre 0 y 255.",
    "serverIpv4": "Servidor IPv4",
    "serverIpv4Hint": "Dirección utilizada para los registros de la plantilla A",
    "thisHostIpv4": "Este host público IPv4",
    "serverIpv6Optional": "Servidor IPv6 (opcional)",
    "serverIpv6Hint": "Escribe AAAA cuando existe v6 pública; puede dejar vacío",
    "thisHostIpv6": "Este host IPv6 público (opcional)",
    "soaNsCreateHint": "Dejar vacío para ns1.zone-name",
    "defaultTtlLabel": "TTL predeterminado",
    "defaultTtlHint": "Valor predeterminado para SOA y nuevos registros",
    "recordTemplate": "Plantilla de registro",
    "editRecord": "Editar registro",
    "addRecordTitle": "Agregar registro",
    "recordModalDesc": "Zona {{zone}} · escribir archivo de zona después de guardar",
    "recordType": "tipo de registro DNS",
    "nameHint": "@ = ápice; www = subdominio",
    "mxPlaceholder": "p.ej. 10 correo.ejemplo.com.",
    "spfPlaceholder": "p.ej. v=spf1 a mx ip4:… ip6:… ~todos",
    "needIpv6": "Introduzca una dirección IPv6",
    "needIpv4": "Introduzca una dirección IPv4",
    "valueHint": "IP, nombre de host o contenido del registro",
    "ipv6Address": "dirección IPv6",
    "ipv4Address": "dirección IPv4",
    "cacheTime": "tiempo de caché",
    "deleteZoneTitle": "¿Eliminar zona?",
    "deleteZoneDesc": "También elimina sus registros de registros DNS.",
    "deleteRecordTitle": "¿Eliminar registro?",
    "deleteRecordDesc": "Escriba el archivo de zona después de la eliminación.",
    "addPeer": "Agregar compañero",
    "probe": "Sonda",
    "pushZones": "Zonas de empuje",
    "reloadRemote": "recarga remota",
    "generateDnssec": "Generar claves DNSSEC",
    "lookup": "Buscar",
    "saveSoa": "Guardar SOA",
    "saveSoaAndWrite": "Guardar y escribir archivo de zona",
    "saveSoaSettings": "Guardar configuración SOA",
    "saveSoaAndWriteBtn": "Guardar y escribir archivo de zona",
    "goToZones": "Ir a zonas",
    "refresh": "Refrescar",
    "pushReload": "Empujar + recargar",
    "pushOnly": "Solo empujar (sin recarga)",
    "reloadOnly": "Sólo recarga remota",
    "probePeers": "Compañeros de investigación",
    "clusterDefaultHint": "Valor predeterminado: presionar y luego recargar DNS en los pares; necesita derechos de cambio de sistema.",
    "notProbed": "Aún no investigado",
    "probeHealthy": "Sonda: {{status}}",
    "pushReloadShort": "Empujar+recargar",
    "dnssecCardDesc": "Generar claves/DS;",
    "currentZone": "Zona actual:",
    "generateAndSign": "Genera claves e intenta firmar la zona.",
    "lookupName": "Nombre",
    "fillCurrentZone": "Llenar zona actual",
    "lookupToolHint": "Prefiere la excavación del anfitrión;",
    "validateExtra": "Los errores bloquean guardar; advierte (por ejemplo, CNAME de ápice) solo notifica.",
    "createAfterHint": "Después de crear, revise la pestaña Registros y escriba el archivo de zona en el disco.",
    "valueLabel": "Valor",
    "ttlHint": "tiempo de caché",
    "soaSavedControl": "SOA guardado (plano de control): escriba el archivo de zona para aplicar",
    "soaNs2Label": "NS secundaria (opcional)",
    "soaNs2Hint": "Segundo servidor de nombres FQDN, p. ns2.ejemplo.com.",
    "soaHostmaster": "Maestro de host SOA (RNAME)",
    "soaHostmasterHint": "Utilice puntos en lugar de @, p. hostmaster.ejemplo.com.",
    "soaRefresh": "Actualizar (segundos)",
    "soaRetry": "Reintentar (segundos)",
    "soaExpire": "Caducar (segundos)",
    "soaMinimum": "TTL de caché mínimo/negativo (segundos)",
    "soaTimingHint": "Parámetros de temporización SOA en segundos.",
    "healthTitle": "Estado del servicio DNS",
    "healthDesc": "Verdad del host: unidad/puerto 53/archivos de zona escritos/respuestas de excavación local (escrito ≠ recargado ≠",
    "healthPillOk": "DNS correcto",
    "healthPillBad": "Problemas de DNS",
    "healthService": "Servicio",
    "healthServiceDown": "abajo",
    "healthListen": "Puerto 53",
    "healthWritten": "Archivos de zona",
    "healthAnswering": "respuesta local",
    "healthAnsweringYes": "Sí",
    "healthAnsweringNo": "no/se negó",
    "healthRefresh": "Volver a sondear",
    "healthProbeLocal": "Sondear la salud nuevamente",
    "healthOpen53": "Abrir firewall 53 (TCP+UDP)",
    "healthOpened53": "Solicitó apertura 53 TCP+UDP",
    "healthOpen53Failed": "No se pudo abrir 53",
    "healthPortClosed": "no escuchar",
    "healthPortOpenAlready": "53 aparece abierto",
    "healthHint": "Si se rechaza la excavación, arregle PowerDNS, abra el puerto 53 y luego escriba zonas.",
    "stateService": "Servicio",
    "stateListen": "Escuchar",
    "stateWritten": "Escrito",
    "stateAnswering": "respuesta local",
    "lookupServer": "Servidor (@)",
    "lookupServerHint": "127.0.0.1 = autenticación local; pruebas de IP públicas externas; vacío = solucionador del sistema",
    "healthHealPdns": "Sanar enlace de PowerDNS",
    "healNeedInstall": "PowerDNS no está instalado: instálelo primero en la pestaña Software",
    "applyNeedService": "El servicio DNS no se está ejecutando: inícielo o instálelo antes de aplicar",
    "goStartService": "Iniciar servicio DNS",
    "startBindHint": "Si el inicio vuelve a detenerse, el puerto 53 suele estar retenido por systemd-resolved. Utilice Heal bind a continuación y luego comience de nuevo.",
    "deleteZoneNeedName": "Eliminar esta zona: escribirá el nombre de la zona para confirmar",
    "healthHealPdnsHint": "Establezca la dirección local en IP pública para evitar conflictos con systemd-resolved en 0",
    "healthHealPdnsOk": "PowerDNS vinculado a {{ip}} e intento de inicio",
    "healthHealPdnsFailed": "La curación de PowerDNS falló",
    "startProbeFailed": "No se pudo volver a verificar el estado del DNS después del inicio",
    "startNotListening": "Se devolvió el inicio de PowerDNS, pero la unidad no responde en el puerto 53",
    "aboutTitle": "Conceptos básicos de DNS",
    "aboutSub": "Primero las zonas; Los registros, el clúster y DNSSEC necesitan un dominio seleccionado.",
    "aboutZonesTitle": "Zonas y alcance",
    "aboutZonesBody": "Elija una zona en Zonas, luego administre registros, clústeres y DNSSEC para ese dominio.",
    "aboutHealthTitle": "Estado del servicio",
    "aboutHealthBody": "Utilice Herramientas para sondear PowerDNS, reparar el enlace y abrir el puerto 53.",
    "aboutStackTitle": "Software",
    "aboutStackBody": "Verifique/actualice el paquete PowerDNS en Software.",
    "aboutDdnsTitle": "DDNS",
    "aboutDdnsBody": "La pestaña DDNS actualiza los registros denominados A/AAAA cuando cambia la dirección WAN de este host. No reemplaza CRUD de zona. La verdad escrita no es lo mismo que la verdad pública.",
    "ddns": {
      "honesty": "Una escritura exitosa aún no es DNS público. Los cachés de resolución y el registrador NS aún se aplican. Las IP vacías o privadas nunca se publican.",
      "needExecute": "Las actualizaciones del proveedor necesitan root y YSK_EXECUTE=1. La detección aún se ejecuta.",
      "lastRun": "última ejecución",
      "nextRun": "Próxima ejecución",
      "wanRemembered": "IPv4 WAN recordado",
      "updateNow": "Actualizar ahora",
      "updateTitle": "¿Publicar direcciones WAN detectadas?",
      "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
      "updated": "Actualización de DDNS finalizada",
      "updateFailed": "La actualización de DDNS falló",
      "probe": "Sonda WAN",
      "probed": "Sonda WAN finalizada",
      "probeFailedUi": "Falló la sonda WAN",
      "forceHint": "La actualización ahora se vuelve a publicar incluso cuando la dirección no cambia. Probe nunca llama a un proveedor.",
      "saved": "Guardado",
      "saveFailed": "No se pudo guardar",
      "deleted": "Registro eliminado",
      "emptyTitle": "Sin registros DDNS",
      "emptyDesc": "Agregue un nombre de host a continuación. Cloudflare, RFC 2136 o la zona PowerDNS de este host (administrada por = ddns).",
      "colFqdn": "Nombre de host",
      "colProvider": "Proveedor",
      "colPublished": "Publicado",
      "colEnabled": "Estado",
      "colFrom": "De",
      "colTo": "A",
      "colWhen": "Cuando",
      "colNote": "Nota",
      "pauseRecord": "Pausa",
      "resumeRecord": "Reanudar",
      "statusCard": "estado de la WAN",
      "recordsCard": "Nombres de host",
      "addCard": "Agregar nombre de host",
      "settingsCard": "Ajustes",
      "historyTitle": "Actualizaciones recientes",
      "historyEmpty": "Aún no hay historial de DDNS",
      "paused": "Programador en pausa",
      "pausedHint": "Las actualizaciones programadas están desactivadas. La sonda y la actualización aún se ejecutan.",
      "schedulerOn": "Actualizaciones programadas",
      "schedulerOnHint": "Planificador en proceso. No crontab. Desactivado significa que no hay inserción automática.",
      "zone": "Zona",
      "zoneHint": "Leave empty to use the last two labels of the hostname",
      "zoneSelectHint": "Zonas locales en este host. Cloudflare y RFC 2136 pueden usar cualquier nombre de zona.",
      "noLocalZones": "Aún no hay zonas locales. Primero cree uno en la pestaña Zonas si usa PowerDNS local.",
      "providerLocal": "DNS de energía local",
      "proxied": "Proxy de nube",
      "proxiedHint": "Nube naranja. Deje de lado los nombres de host de VPN/WireGuard.",
      "proxiedWarnTitle": "¿Nube naranja Cloudflare?",
      "proxiedWarnDesc": "Un registro proxy oculta la IP de origen. Los nombres de host de VPN y WireGuard deben seguir siendo solo DNS. Escriba PROXY para confirmar.",
      "addRecord": "Agregar nombre de host",
      "interval": "Intervalo (segundos)",
      "intervalHint": "60–86400. Programador en proceso; no crontab.",
      "cfToken": "Token de API de Cloudflare",
      "cfTokenHint": "Sólo escritura. Env CF_API_TOKEN se utiliza si está configurado. Nunca más se muestra.",
      "tokenConfigured": "Se almacena un token de Cloudflare. Déjelo en blanco para conservarlo.",
      "tokenMissing": "No hay ningún token de Cloudflare almacenado (el env CF_API_TOKEN aún se aplica).",
      "rfcServer": "servidor RFC 2136",
      "rfcServerHint": "Los servidores remotos necesitan un archivo de clave TSIG en el directorio de datos. El bucle invertido puede no estar firmado. El secreto nunca se transmite a argv.",
      "rfcKeyFile": "Archivo de clave TSIG",
      "rfcKeyFileHint": "Relativo al directorio de datos DDNS o una ruta absoluta en el directorio de datos.",
      "rfcKeyConfigured": "Se almacena una ruta de archivo clave. Déjelo en blanco para conservarlo.",
      "primaryFqdn": "Nombre de host principal",
      "primaryFqdnHint": "Se utiliza como sugerencia de punto final de VPN. No reescribe los pares existentes.",
      "updateIdentity": "Recuerde WAN IPv4",
      "updateIdentityHint": "Almacene la última IPv4 pública en estado DDNS para este host",
      "vpnHint": "VPN Endpoint puede usar un nombre de host DDNS (no reescrito automáticamente).",
      "sslHint": "Let's Encrypt HTTP-01 necesita el nombre de host para resolverse aquí. Los certificados no se vuelven a emitir en caso de cambio de IP.",
      "deleteTitle": "¿Eliminar el nombre de host DDNS?",
      "deleteDesc": "Escriba {{fqdn}} para confirmar. Las filas locales ManagedBy=ddns no se eliminan del editor de zona.",
      "err": {
        "requiresExecute": "Necesita root y YSK_EXECUTE=1 para publicar.",
        "missingToken": "Falta el token API de Cloudflare.",
        "rfc2136NeedKey": "El RFC 2136 remoto necesita un archivo de clave TSIG en el directorio de datos.",
        "rfc2136KeyMissing": "Falta el archivo de clave TSIG o está fuera del directorio de datos.",
        "noPublicIpv4": "No se detectó ningún IPv4 público.",
        "noPublicIpv6": "No se detectó ningún IPv6 público.",
        "notPublicIpv4": "El IPv4 detectado no es público.",
        "notPublicIpv6": "El IPv6 detectado no es público.",
        "probeFailed": "La investigación de IP pública falló.",
        "localNoZone": "No hay zona DNS local para este nombre de host.",
        "localNeedsDb": "El proveedor local necesita la base de datos del plano de control.",
        "managedByClash": "Ese nombre pertenece a otra característica (no DDNS).",
        "unknownProvider": "Proveedor DDNS desconocido.",
        "nsupdateFailed": "La actualización falló.",
        "updateFailed": "Error en la actualización del proveedor.",
        "invalidFqdn": "Nombre de host no válido.",
        "invalidType": "El tipo debe ser A o AAAA.",
        "invalidProvider": "Proveedor desconocido.",
        "notFound": "Registro no encontrado.",
        "confirmMismatch": "Confirmar debe coincidir con el nombre de host.",
        "schedulerDisabled": "El DDNS programado está en pausa.",
        "provider": "El proveedor devolvió un error."
      }
    },
    "createMailZoneNow": "Zona de correo creada {{domain}}",
    "toolsFirewallTitle": "Cortafuegos (UFW)",
    "toolsFirewallHint": "Permitir o denegar el puerto 53. No inicia ni detiene PowerDNS.",
    "toolsUnitTitle": "Unidad PowerDNS",
    "toolsUnitHint": "Unidad systemd pdns: iniciar, detener, reiniciar, recargar.",
    "installConfirmTitle": "¿Instalar PowerDNS?",
    "installConfirmDesc": "Instala pdns-server y escribe la config gestionada. Requiere root y YSK_EXECUTE=1.",
    "installConfirmConsequence": "Tras instalar e iniciar, PowerDNS usará el puerto 53.",
    "installPort53Busy": "Algo ya escucha en el puerto 53. PowerDNS puede fallar al enlazar hasta detener o reparar ese proceso.",
    "installPort53BusyConsequence": "Repare el enlace o detenga el otro oyente antes de esperar respuestas en 53."
  },
  "docker": {
    "title": "Docker",
    "subtitle": "Instala y controla el motor Docker, contenedores, imágenes, proyectos Compose y disco en este host.",
    "refresh": "Actualizar",
    "notInstalled": "Docker Engine no está instalado. Instala docker.io y docker-compose-v2 desde esta página.",
    "protected": "Protegido",
    "pruneConfirm": "Escribe PRUNE para confirmar la limpieza de volume o del sistema",
    "needEngineTitle": "Instale Docker Engine primero",
    "stopEngineDesc": "Esto detiene el motor Docker y todos los contenedores {{n}} en este host.",
    "notInstalledValue": "No instalado",
    "nameHint": "Letras, dígitos, guión bajo, punto, guión (máximo 128)",
    "volPlaceholder": "mis-datos",
    "netPlaceholder": "mi-red",
    "runPorts": "Publicar puertos",
    "runPortsHint": "host:contenedor por línea, p.e. 8080:80",
    "runEnv": "Ambiente",
    "runEnvHint": "CLAVE=valor por línea",
    "runRestart": "Reiniciar política",
    "runNetwork": "Red",
    "runVolumes": "Volúmenes",
    "runVolumesHint": "volumen: destino por línea",
    "runAdvancedHint": "Para pilas de servicios múltiples, utilice nodos de validación o redacte archivos que ya estén en este host.",
    "daemonConfirmTitle": "¿Aplicar la configuración del demonio?",
    "daemonConfirmDesc": "Escribe daemon.json y reinicia docker.service. Todos los contenedores serán interrumpidos.",
    "settingsHint": "Solo un subconjunto seguro de daemon.json. Aplicar escribe el archivo y reinicia docker.service.",
    "cli": {
      "usage": "Uso: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
    },
    "tab": {
      "overview": "Resumen",
      "containers": "Contenedores",
      "images": "Imágenes",
      "compose": "Compose",
      "volumes": "Volúmenes",
      "networks": "Redes",
      "prune": "Limpiar",
      "settings": "Ajustes",
      "about": "Acerca de"
    },
    "col": {
      "engine": "Motor",
      "containers": "Contenedores",
      "version": "Versión",
      "dataRoot": "Directorio de datos",
      "disk": "Disco",
      "validators": "Pilas de validador",
      "name": "Nombre",
      "image": "Imagen",
      "status": "Estado",
      "ports": "Puertos",
      "managed": "Gestionado por el panel",
      "size": "Tamaño",
      "driver": "Controlador",
      "type": "Tipo",
      "reclaimable": "Recuperable"
    },
    "state": {
      "up": "Activo",
      "down": "Detenido",
      "running": "Correr",
      "exited": "Salido",
      "exitedCode": "Salió ({{n}})",
      "restarting": "Reiniciando",
      "restartingCount": "Reiniciando · {{n}} veces",
      "paused": "En pausa",
      "created": "Creado",
      "dead": "Muerto",
      "removing": "Eliminando",
      "unknown": "Desconocido"
    },
    "df": {
      "images": "Imágenes",
      "containers": "Contenedores",
      "volumes": "Volúmenes locales",
      "builder": "Construir caché",
      "other": "Otro"
    },
    "actions": {
      "start": "Iniciar",
      "stop": "Detener",
      "restart": "Reiniciar",
      "remove": "Eliminar",
      "logs": "Registros",
      "inspect": "Inspeccionar",
      "exec": "Exec (versión)",
      "run": "Ejecutar imagen",
      "pull": "Descargar",
      "up": "Levantar",
      "down": "Bajar",
      "createVolume": "Crear volume",
      "createNetwork": "Crear red",
      "pruneContainers": "Limpiar contenedores",
      "pruneImages": "Limpiar imágenes",
      "pruneVolumes": "Limpiar volumes",
      "pruneSystem": "Limpieza del sistema",
      "startEngine": "Iniciar motor",
      "stopEngine": "Detener motor",
      "restartEngine": "Reiniciar motor",
      "applyDaemon": "Aplicar ajustes del motor"
    },
    "empty": {
      "containers": "No hay contenedores",
      "images": "No hay imágenes",
      "compose": "No hay proyectos Compose",
      "composeDesc": "Los proyectos provienen de nodos validadores o archivos Compose que ya se encuentran en este host. Esta página no acepta cargas YAML arbitrarias.",
      "composeCta": "Abrir nodos de validación",
      "volumes": "No hay volumes",
      "networks": "No hay redes"
    },
    "logs": {
      "empty": "Aún no hay registros",
      "follow": "Seguir"
    },
    "deleteRunningWarn": "Este contenedor todavía se está ejecutando o reiniciando. Será eliminado a la fuerza.",
    "settings": {
      "logMaxSize": "Tamaño máximo de registro del contenedor",
      "liveRestore": "Restauración en vivo (mantener contenedores si el demonio se reinicia)",
      "mirrors": "Espejos de Registry (una URL por línea)",
      "insecure": "Registries sin cifrado (un host por línea)"
    },
    "about": {
      "body": "Docker es un servicio de host de primer nivel en YSK Server, como Nginx. Se instala desde el panel (Ubuntu docker.io + docker-compose-v2). Los nodos validador se ejecutan como proyectos Compose yskval-*.",
      "honesty": "Los cambios de host necesitan root y YSK_EXECUTE=1. El valor predeterminado es dry-run. Esta página no es Kubernetes.",
      "validators": "Abrir nodos validador"
    },
    "alerts": {
      "daemonTitle": "El demonio Docker está caído",
      "daemonBody": "Docker está instalado pero docker.service no está activo. Las pilas de validador no pueden arrancar."
    },
    "errors": {
      "notInstalled": "Docker no está instalado",
      "daemonDown": "El demonio Docker no está activo",
      "needCompose": "Se requiere docker compose (complemento v2)",
      "badImage": "Referencia de imagen no válida",
      "badName": "Nombre no válido",
      "badPort": "Publicación de puerto no válida",
      "badEnv": "Variable de entorno no válida",
      "badVolume": "Montaje de volumen no válido",
      "badNetwork": "Red no válida",
      "protectedNetwork": "No se puede eliminar una red Docker integrada",
      "badRestart": "Política de reinicio no válida",
      "badPrune": "Ámbito de limpieza no válido",
      "needPruneConfirm": "Limpiar volume o sistema exige confirm=PRUNE",
      "badDaemon": "Ajuste del motor no válido",
      "composeMissing": "No se encontró el archivo Compose de este proyecto",
      "logsFailed": "No se pudieron leer los registros del contenedor",
      "mutateFailed": "El comando Docker falló",
      "engineFailed": "No se pudo controlar docker.service",
      "badExec": "Exec se limita a binarios y preajustes permitidos (sin shell ni TTY)",
      "uninstallBusy": "Detén los contenedores gestionados por el panel (incluidas las pilas de validador) antes de desinstalar Docker",
      "badCommand": "Comando o punto de entrada no válido",
      "portBusy": "El puerto de host {{bind}}:{{port}} ya está en uso",
      "nameInUse": "Ya existe un contenedor llamado {{name}}. Elimínelo o elija otro nombre.",
      "unpublished": "El contenedor no se conectó a una red ni publicó puertos. No tratar esto como si comenzara."
    },
    "notes": {
      "dryMutate": "Solo dry-run. Pasa --execute y YSK_EXECUTE=1 para cambiar el host.",
      "dryPrune": "Vista previa de limpieza (no aplicada).",
      "dryEngine": "El control del motor es dry-run.",
      "dryDaemon": "Se escribiría /etc/docker/daemon.json y se reiniciaría docker.service.",
      "daemonWrote": "Se escribió daemon.json",
      "start": "Contenedor iniciado",
      "stop": "Contenedor detenido",
      "restart": "Contenedor reiniciado",
      "remove": "Contenedor eliminado",
      "ran": "Contenedor iniciado desde imagen",
      "leftoverRemoved": "Se eliminó el contenedor sobrante {{name}} después del error de vinculación",
      "pulled": "Imagen descargada",
      "exec": "Se ejecutó un exec permitido",
      "imageRemoved": "Imagen eliminada",
      "volumeCreated": "Volume creado",
      "volumeRemoved": "Volume eliminado",
      "networkCreated": "Red creada",
      "networkRemoved": "Red eliminada",
      "pruned": "Limpieza terminada",
      "compose": {
        "up": "Proyecto Compose iniciado",
        "down": "Proyecto Compose detenido",
        "restart": "Proyecto Compose reiniciado",
        "rm": "Redactar proyecto eliminado"
      },
      "engine": {
        "start": "docker.service iniciado",
        "stop": "docker.service detenido",
        "restart": "docker.service reiniciado"
      }
    },
    "ui": {
      "whatYouGet": "Qué hace esta página",
      "whatYouGetLead": "Instala primero Docker Engine. Después puedes ejecutar un contenedor, extraer imágenes y ver las pilas Compose de validador que ya están en este anfitrión.",
      "capEngine": "Motor",
      "capEngineDesc": "Instalación en un clic de docker.io y docker-compose-v2. Inicia y detén docker.service aquí.",
      "capWork": "Contenedores e imágenes",
      "capWorkDesc": "Elige una imagen habitual, extráela, ejecútala y luego lee los registros o inspecciona el contenedor.",
      "capStacks": "Pilas de validador",
      "capStacksDesc": "Las pilas de varios servicios son proyectos Compose de validador (yskval-*). Esta página no acepta YAML subido.",
      "cardEngine": "Motor",
      "cardDisk": "Disco",
      "cardWork": "En este anfitrión",
      "compose": "Compose",
      "cgroup": "grupo c",
      "used": "Usado",
      "free": "Libre",
      "running": "En ejecución",
      "images": "Imágenes",
      "volumes": "Volúmenes",
      "networks": "Redes",
      "goImages": "Imágenes",
      "goValidators": "Nodos validador",
      "imagePickHint": "Elige una imagen habitual. Usa Otra solo si necesitas otra referencia.",
      "imageCustom": "Otra",
      "driver": "Controlador",
      "driverLocalOnly": "Este panel solo crea volúmenes local.",
      "netDefaultDriver": "Las redes nuevas usan el controlador bridge predeterminado de Docker.",
      "pruneWhat": "Qué eliminar",
      "pruneAck": "Entiendo que los datos no usados se eliminarán y no se podrán restaurar",
      "pruneAckDesc": "Limpiar volúmenes o el sistema no se puede deshacer. Se eliminan contenedores detenidos e imágenes no usadas del alcance elegido.",
      "pruneNow": "Limpiar ahora",
      "useMirrors": "Usar réplicas de registro",
      "useInsecure": "Permitir registros sin cifrado",
      "publishPorts": "Publicar puertos en el anfitrión",
      "attachVolume": "Adjuntar un volumen",
      "setEnv": "Definir variables de entorno",
      "defaultNet": "Predeterminada",
      "mountPath": "Ruta de montaje",
      "restartNo": "Nunca",
      "restartUnless": "Salvo que se detenga",
      "restartAlways": "Siempre",
      "restartOnFail": "Si falla",
      "needAck": "Confirma antes de limpiar",
      "scopeContainers": "Contenedores detenidos",
      "scopeImages": "Imágenes no usadas",
      "scopeVolumes": "Volúmenes no usados",
      "scopeBuilder": "Caché de construcción",
      "scopeSystem": "Todo lo no usado",
      "noVolumesYet": "Aún no hay volúmenes: créalo primero en la pestaña Volúmenes.",
      "command": "Dominio",
      "commandHint": "Opcional. Fichas después de la imagen. Déjelo en blanco para usar la imagen CMD.",
      "entrypoint": "Punto de entrada",
      "entrypointHint": "Binario único opcional. Déjelo en blanco para utilizar la imagen PUNTO DE ENTRADA.",
      "portMap": "anfitrión: contenedor",
      "portOccupied": "Este puerto de host ya está en uso",
      "validatorImage": "Gestionado por nodos validadores",
      "newVolume": "Nuevo volumen con nombre",
      "loopbackUrl": "URL de prueba local",
      "nginxProxy": "Crear proxy inverso de Nginx",
      "intentPorts": "Solicitado (no publicado)",
      "customPort": "Otro puerto del anfitrión",
      "customPortHost": "Puerto del anfitrión",
      "customPortContainer": "Puerto del contenedor",
      "pctUsed": "{{n}}% usado",
      "customPortHint": "1–65535. Ejemplo: 9090 → 80.",
      "pickBridge": "Red de puentes"
    },
    "deleteTitle": "Eliminar {{id}}",
    "deleteDesc": "Esto no se puede deshacer.",
    "deleteC1": "El recurso se elimina de este host.",
    "deleteComposeVal": "Esta es una pila de validador; la instancia del validador también se elimina.",
    "pruneTitle": "Eliminar recursos de Docker",
    "pruneDesc": "Escriba PRUNE para confirmar. Los datos no utilizados no se pueden restaurar.",
    "pruneC1": "Se eliminan los recursos no utilizados en el ámbito seleccionado.",
    "pruneC2": "La poda de volumen y sistema elimina permanentemente los volúmenes de datos no utilizados.",
    "pruneC3": "Se eliminan los contenedores detenidos o las imágenes no utilizadas en este alcance."
  },
  "email": {
    "title": "Correo electrónico",
    "subtitle": "Dominios, DNS, buzones de correo y retransmisión",
    "externalTodos": "Tareas que debes realizar fuera del servidor",
    "ptr": "Su proveedor de VPS/nube debe configurar el DNS inverso (PTR)",
    "port25": "El puerto de salida 25 puede estar bloqueado; solicitar desbloqueo o utilizar un relé",
    "create": "Crear dominio de correo",
    "createHint": "Después de crear, revise DNS, buzones de correo y comprobaciones de estado",
    "domains": "Dominios registrados",
    "empty": "Aún no hay dominios de correo electrónico",
    "emptyHint": "Cree un dominio para obtener registros DNS y todos externos",
    "searchPlaceholder": "Buscar dominio…",
    "domain": "Dominio",
    "serverIp": "IP del servidor",
    "notFound": "Dominio de correo electrónico no encontrado",
    "backToList": "Volver a dominios de correo electrónico",
    "softwareNeeded": "El software de correo electrónico requerido no está instalado",
    "applyApplied": "Aplicado",
    "applyWritten": "Escrito",
    "applyFailed": "Fallido",
    "applyDraft": "Borrador",
    "queueMsgCount": "Cola {{count}} mensaje(s)",
    "queueLoadFailed": "No se pudo cargar la cola",
    "queueFlushRequested": "Se solicitó vaciado de cola",
    "queueFlushFailed": "La descarga falló",
    "queueDeleted": "Eliminado {{id}}",
    "queueDeleteFailed": "Error al eliminar",
    "pillDomains": "{{count}} dominio(s)",
    "pillNoDomain": "Sin dominios",
    "statDomains": "Dominios",
    "statHealthy80": "Salud ≥80",
    "statApplied": "Aplicado",
    "statDraft": "Borrador",
    "tabDomains": "Dominios",
    "tabWebmail": "correo web",
    "tabQueue": "Cola",
    "tabStack": "Software",
    "tabOps": "Roles",
    "webmailGlobalDesc": "Una aplicación de correo web para todo el panel: cada dominio de correo inicia sesión a través de la misma URL.",
    "webmailGlobalHint": "Necesita permiso de cambio de sistema (YSK_EXECUTE) y red saliente para descargar Roundcube/SnappyMail. No se crea ningún medio proyecto sin EXECUTE.",
    "webmailMovedHint": "Webmail se configura globalmente (no por dominio).",
    "openGlobalWebmailSettings": "Abrir la configuración del correo web",
    "domainsTitle": "Dominios ({{filtered}}/{{total}})",
    "domainsListDesc": "Dominios de correo registrados en este host",
    "emptyFilterHint": "Ningún dominio coincide con la búsqueda",
    "emptyCreateHint": "Utilice Crear en la barra de herramientas para registrar un dominio;",
    "queueLocalTitle": "cola de correo",
    "needExecute": "Necesita YSK_EXECUTE",
    "viewQueue": "Ver cola",
    "flushQueue": "Cola de vaciado",
    "flushQueueEmpty": "La cola está vacía.",
    "flushQueueNeedExecute": "Vaciar la cola necesita YSK_EXECUTE (permiso de ejecución del host)",
    "queueHint": "Cola Postfix local. Ver es una sonda de lectura; vaciar requiere YSK_EXECUTE.",
    "deleteThisId": "Eliminar esta identificación",
    "queueEmpty": "Sin correo diferido",
    "queueEmptyHint": "Sin mensajes diferidos",
    "mtaTitle": "software MTA",
    "mtaBody": "La sonda y la instalación con un solo clic están impulsadas por el banner de arriba",
    "mtaSmtp": "SMTP saliente/entrante",
    "mtaImap": "Buzones IMAP/POP3",
    "mtaDkim": "Firma DKIM saliente",
    "mtaMissingHint": "Cuando falta software, el banner muestra instalar/volver a probar",
    "pathTitle": "Ruta de configuración del dominio",
    "path1": "Registrar un dominio (arriba a la derecha)",
    "path2": "Abrir detalle del dominio → configuración de correo con un clic",
    "path3": "Agregue MX/SPF/DKIM/DMARC en la página DNS o en la lista de verificación externa",
    "path4": "SSL para nombres de host de correo/correo web",
    "viewDomainList": "Ver lista de dominios",
    "opsPanelTitle": "Panel vs externo",
    "opsThisPage": "Esta página: registro de dominio, vista de cola, sonda de software",
    "opsDetail": "Detalle del dominio: bootstrap, buzones de correo, alias, retransmisión, correo web",
    "opsHost": "Proveedor de host: PTR, política de salida del puerto 25",
    "opsRegistrar": "Registrador: publicar MX / SPF / DKIM / DMARC",
    "statusTitle": "Estado",
    "statusDraft": "borrador: solo panel",
    "deliverabilityChecks": "cheques",
    "statusWritten": "escrito: archivos de gestión escritos, puede que no estén activos",
    "statusApplied": "aplicado: aplicado exitosamente antes (aún verifica que el servicio esté activo)",
    "statusReputation": "La reputación de la bandeja de entrada nunca podrá automatizarse al 100%",
    "createModalDesc": "",
    "registerDomain": "Crear",
    "domainApexHint": "Sin correo. prefijo",
    "serverIpv4Hint": "MX/A/SPF",
    "serverIpv4Ph": "IPv4 público",
    "serverIpv6": "IPv6 (opcional)",
    "serverIpv6Hint": "AAAA/SPF ip6",
    "serverIpv6Ph": "Opcional",
    "registerNote": "",
    "flushConfirmTitle": "¿Vaciar toda la cola de correo?",
    "flushConfirmDesc": "Los mensajes en cola se eliminarán. No se puede deshacer.",
    "flushConfirm": "Enjuagar",
    "tabMailbox": "Buzones",
    "tabAliases": "Alias ​​/ adelante",
    "tabHealth": "Salud",
    "tabRelay": "Relé",
    "tabSieve": "Filtro/SSO",
    "tabAdvanced": "Avanzado",
    "pillApplied": "Aplicado",
    "pillManaged": "Archivos administrados",
    "pillDraft": "Borrador",
    "statHealth": "Salud",
    "statApply": "Aplicar",
    "statDomain": "Dominio",
    "pausedFlag": "En pausa (marca)",
    "normal": "Normal",
    "statMailboxes": "Buzones",
    "statDnsRecords": "Registros DNS",
    "dnsTodosTitle": "DNS",
    "copyAllRecords": "Copiar todos los registros",
    "openDnsPage": "Abrir página DNS",
    "healthScore": "Puntuación de salud",
    "healthUnchecked": "Aún no comprobado",
    "healthUncheckedHint": "Aún no se ha sondeado DNS / PTR / puerto 25.",
    "healthPartialScore": "Parcial {{n}}/100 (solo DNS)",
    "healthPartialHint": "Solo lista de verificación de DNS: lista activa y negra no investigada.",
    "deliverabilityScore": "Paquete de entregabilidad",
    "opendkimNoReload": "OpenDKIM no admite recarga — use reinicio tras cambiar claves o tablas.",
    "opendkimNoReloadTitle": "systemctl reload opendkim no está soportado en este conjunto",
    "healthChecklist": "Lista {{score}}/100",
    "healthChecklistHint": "Puntuación de lista — aún no se ha sondeado DNS / PTR / puerto 25",
    "healthLiveHint": "Puntuación de sonda en vivo",
    "suggestedRecords": "Registros sugeridos",
    "externalTodosCount": "Todos externos",
    "colType": "Tipo",
    "colName": "Nombre",
    "colValue": "Valor",
    "colNote": "Nota",
    "copy": "Copiar",
    "noDnsRecords": "Sin registros DNS",
    "externalTodosHeading": "Todos externos (el panel no puede hacer esto)",
    "externalTodosBody": "PTR, puerto 25 y DNS del registrador corren por su cuenta.",
    "copyExternalTodos": "Copiar lista de tareas pendientes externa",
    "todoDone": "Hecho",
    "todoPending": "Hacer",
    "refreshDnsHint": "Haga clic en Actualizar para cargar sugerencias de DNS",
    "mailboxListTitle": "Buzones de correo ({{count}})",
    "createMailbox": "+ Crear buzón",
    "writeDovecot": "Escribir la contraseña de Dovecot DB",
    "noMailboxes": "Aún no hay buzones de correo: haga clic en Crear buzón",
    "mailboxOpsResult": "Resultado de la operación del buzón",
    "aliasesTitle": "Alias ​​/ reenviar / comodín",
    "aliasType": "Tipo",
    "aliasTypeAria": "Tipo de alias",
    "typeForward": "Adelante",
    "typeAlias": "Alias",
    "localPart": "parte local",
    "localPartHint": "p.ej. ventas",
    "targetMailbox": "Buzón de destino",
    "targetMailboxHint": "Separados por comas para varios",
    "addAlias": "Agregar alias",
    "noAliases": "Aún no hay alias/reenvíos",
    "aliasResult": "Resultado de alias",
    "autoreplyTitle": "Responder automáticamente/suspender",
    "autoreplyDesc": "Respuesta automática",
    "autoreplyBodyHint": "Opcional aplicar al sistema.",
    "enableAutoreply": "Habilitar respuesta automática",
    "enableAutoreplyDesc": "vacaciones.tamiz; después de que el sistema aplique los soportes .dovecot.sieve",
    "applyToSystem": "Aplicar al sistema (Postfix / Dovecot)",
    "applyToSystemDesc": "Necesita YSK_EXECUTE=1 + raíz; Los fracasos no se fingen como éxitos.",
    "subject": "Sujeto",
    "body": "Cuerpo",
    "saveApplyAutoreply": "Guardar y aplicar respuesta automática",
    "saveAutoreplyWritten": "Guardar respuesta automática (escrita)",
    "suspendApply": "Suspender y aplicar RECHAZO",
    "suspendWritten": "Suspender dominio (escrito)",
    "resumeApply": "Reanudar y actualizar mapa",
    "resumeWritten": "Reanudar dominio (escrito)",
    "flagsResult": "Resultado de aplicación de banderas/sistema",
    "defaultAutoreplySubject": "Respuesta automática",
    "defaultAutoreplyBody": "Recibimos su correo electrónico y le responderemos más tarde.",
    "healthLiveTitle": "Estado de entrega (DNS en vivo/sondas de puerto)",
    "healthLiveDesc": "cheques en vivo",
    "serverIpLabel": "IP del servidor",
    "liveCheck": "cheque en vivo",
    "liveOk": "Mayormente bien",
    "liveBad": "Problemas encontrados",
    "notTested": "No probado",
    "blacklist": "Lista negra",
    "healthExternalNote": "PTR y el puerto 25 deben configurarse en el proveedor de host.",
    "runLiveCheck": "Ejecutar verificación en vivo",
    "dnsblThisIp": "DNSBL (esta IP)",
    "multiIpRbl": "RBL multiIP",
    "warmupAdvice": "Consejos de calentamiento",
    "probeMatrix": "Resultados de la sonda",
    "colItem": "Artículo",
    "colStatus": "Estado",
    "pass": "Aprobar",
    "fail": "Fallar",
    "unknown": "Desconocido",
    "colDetail": "Detalle",
    "outboundPort25": "Puerto de salida 25",
    "noProbeResults": "Aún no hay resultados de la sonda",
    "noLiveYet": "La verificación en vivo aún no se ha ejecutado",
    "noLiveYetHint": "Ejecute una verificación en vivo primero",
    "mailSslTitle": "Certificados y TLS",
    "mailSslHint": "El problema real está en la página SSL; salte a correo/webmail/nombres de host de dominio aquí",
    "openSslPage": "Abrir página SSL",
    "webmailSsoSkeleton": "Esqueleto de SSO de correo web",
    "writeRoundcubeSso": "Escribir el esqueleto SSO de Roundcube",
    "ssoSkeletonSymlink": "Esqueleto SSO + enlace simbólico del sistema",
    "rateLimitTitle": "Tarifa saliente/antispam",
    "rateLimitDesc": "Escribe las configuraciones de Postfix yunque y Rspamd (se aplica solo con YSK_EXECUTE + raíz)",
    "hourlyMsgCap": "Límite de mensajes por hora",
    "hourlyMsgCapHint": "Global utiliza el mínimo en todos los dominios",
    "enableAntispam": "Habilitar marca antispam (multimapa Rspamd)",
    "enableAntispamDesc": "Desmarca antispam de dominio desactivado",
    "writeControlOnly": "Solo panel de escritura",
    "applyToSystemBtn": "Aplicar al sistema",
    "dnsblResult": "resultado DNSBL",
    "warmupResult": "Resultado del calentamiento",
    "policyResult": "Resultado de la política",
    "relayTitle": "Retransmisión saliente SMTP",
    "relayHost": "Anfitrión de retransmisión",
    "applyRelaySystem": "Aplicar al sistema Postfix",
    "applyRelaySystemDesc": "Sistema de escritura Relé Postfix",
    "saveApplyRelay": "Guardar y aplicar al sistema",
    "saveOnly": "Guardar solo la configuración",
    "relayResult": "Resultado del relevo",
    "webmailSsoTitle": "Inicio de sesión único de correo web",
    "webmailSsoDesc": "Emitir token por única vez;",
    "mailboxPasswordOptional": "Contraseña del buzón (opcional)",
    "mailboxPasswordHint": "Opcional",
    "mailboxPasswordPh": "Con contraseña, el token puede iniciar sesión automáticamente en Roundcube",
    "ssoTokenHint": "Emitir un token de inicio de sesión de corta duración",
    "issueSsoToken": "Emitir token SSO",
    "sieveTitle": "Filtros de tamiz",
    "sieveDesc": "Filtros",
    "sieveTemplateHint": "Plantilla de filtro predeterminada",
    "writeDefaultSieve": "Escribir tamiz predeterminado",
    "listWrittenFiles": "Listar archivos escritos",
    "result": "Resultado",
    "domainSslTitle": "SSL para este dominio",
    "domainSslDesc": "SSL de host de correo",
    "requestCert": "Solicitar certificado para {{domain}}",
    "clientAutoTitle": "Configuración automática del cliente",
    "clientAutoDesc": "Configuración automática del cliente",
    "clientAutoHint": "Generar detección automática/configuración automática",
    "generateCopyXml": "Generar y copiar XML de configuración",
    "queueTitle": "cola de correo",
    "queueDesc": "cola local",
    "publicAutoconfig": "Configuración pública",
    "bootstrapTitle": "Configuración de correo con un clic",
    "bootstrapDesc": "Configuración con un clic",
    "adminPassword": "Contraseña de administrador",
    "adminPasswordHint": "Contraseña del buzón de administrador",
    "adminPasswordPh": "Al menos 8 caracteres",
    "adminPasswordRequired": "Establezca una contraseña de administrador de al menos 8 caracteres",
    "bootstrapBtn": "Configuración de correo con un clic",
    "webmailInstallDesc": "Descargar/aplicar Roundcube",
    "webmailHostname": "Nombre de host de correo web",
    "webmailHostnameHint": "vhost nombre_servidor, p.e. webmail.ejemplo.com",
    "installWebmail": "Instalar/aplicar Webmail",
    "bootstrapResult": "Resultado de Bootstrap/Webmail",
    "createMailboxTitle": "Crear buzón",
    "createMailboxDesc": "La dirección completa será {{local}}@{{domain}}",
    "createMailboxBtn": "Crear buzón",
    "localPartLabel": "parte local",
    "localPartFullHint": "La dirección completa será {{local}}@{{domain}}",
    "passwordOptionalHint8": "Opcional; hash escrito solo si tiene al menos 8 caracteres",
    "live": {
      "noMx": "sin MX",
      "mxLookupFailed": "La búsqueda de MX falló",
      "noSpf": "sin SPF TXT",
      "spfLookupFailed": "La búsqueda de SPF falló",
      "noDkim": "sin DKIM TXT",
      "dkimLookupFailed": "La búsqueda de DKIM falló",
      "noDmarc": "sin DMARC",
      "dmarcLookupFailed": "La búsqueda DMARC falló",
      "noPtr": "sin RPP",
      "ptrLookupFailed": "La búsqueda de PTR falló",
      "port25Open": "El TCP 25 saliente aparece abierto (sondee en gmail-smtp-in.l.google.com)",
      "port25Blocked": "La sonda TCP 25 saliente falló: puede estar bloqueada; solicitar desbloqueo o usar relé",
      "dnsblListed": "LISTADO: {{list}}",
      "dnsblClean": "limpiar en {{list}}"
    },
    "deliv": {
      "mx": "registro MX",
      "mxFix": "Agregue MX en el proveedor de DNS que apunta al host de correo",
      "spf": "Texto SPF",
      "spfFix": "Publicar v=spf1 incluyendo esta IP",
      "dkim": "DKIM TXT",
      "dkimFix": "Publicar selector._domainkey TXT desde el panel",
      "dmarc": "Texto DMARC",
      "dmarcFix": "Publicar política _dmarc (comience con p=none)",
      "ptr": "DNS inverso (PTR)",
      "ptrFix": "Configure PTR en VPS/consola en la nube para que coincida con el nombre de host de correo; el panel no puede configurar esto",
      "port25": "Puerto de salida 25",
      "port25Fix": "Solicite el desbloqueo del puerto 25 del proveedor de alojamiento o configure la retransmisión SMTP (envío 587)",
      "dnsbl": "Reputación DNSBL",
      "dnsblFix": "Eliminar la lista de servicios listados; dejar de enviar hasta que esté limpio",
      "relay": "Retransmisión SMTP (cuando el puerto 25 está bloqueado)",
      "relayOptional": "Sonda del puerto 25 abierta: relé opcional",
      "relayPresent": "Configuración de retransmisión presente en dataDir (la aplicación aún puede necesitar EJECUTAR)",
      "relayMissing": "No hay ningún relé configurado: se requiere si el puerto 25 permanece bloqueado",
      "relayFix": "Panel Correo electrónico → Retransmisión, o ysk-server hosting email-bootstrap con retransmisión",
      "warmup": "plan de calentamiento",
      "warmupDetail": "{{phases}} fases · día1 máximo {{day1}} mensajes",
      "warmupFix": "Siga los límites de fase; no explote listas frías desde una nueva IP",
      "honesty1": "El panel nunca garantiza la entrega de la bandeja de entrada en todo el mundo (el filtrado de Gmail/Outlook es externo).",
      "honesty2": "PTR y el puerto 25 son propiedad del VPS/proveedor de red, no del plano de control YSK.",
      "honesty3": "DNS MX/SPF/DKIM/DMARC debe publicarse en el proveedor de DNS autorizado.",
      "honestyPortBlocked": "El puerto 25 parece bloqueado: use el relé o solicite el desbloqueo antes de que el volumen sea alto.",
      "honestyPortOk": "La sonda del puerto 25 tuvo éxito; aún monitorea los rebotes y DNSBL."
    },
    "catchall": "Comodín",
    "webmailRoundcube": "correo web",
    "warmup": {
      "p1g1": "Envíe solo destinatarios transaccionales/conocidos",
      "p1g2": "Monitorear los rebotes; mantener la tasa de quejas cerca de cero",
      "p1g3": "Asegúrese de que SPF/DKIM/DMARC/PTR estén activos antes del volumen",
      "p2g1": "Expandir lentamente solo a contactos comprometidos",
      "p2g2": "Verifique DNSBL diariamente; pausar si aparece en la lista",
      "p2g3": "Prefiera el envío 587 al masivo en el puerto 25 si está restringido",
      "p3g1": "Duplicar el volumen solo si las métricas se mantienen limpias",
      "p3g2": "Listas de segmentos; eliminar rebotes fuertes inmediatamente",
      "p4g1": "Acérquese al volumen normal si no hay bloques",
      "p4g2": "Mantenga la ruta DMARC monitoreada",
      "c1": "PTR coincide con HELO/EHLO (nombre de host de correo)",
      "c2": "SPF + DKIM + DMARC publicados y alineados",
      "c3": "Limpieza de DNSBL en Spamhaus / SpamCop / Barracuda",
      "c4": "Puerto de salida 25 abierto o relé configurado",
      "c5": "No se pueden comprar rangos de IP de “correo electrónico masivo”",
      "c6": "Antigüedad/historial del dominio considerado (dominios nuevos = rampa más lenta)",
      "noteNewIp": "Trate esta IP como nueva: comience en los límites de los días 1 a 3 de la fase",
      "noteOldIp": "La IP existente todavía se beneficia de una rampa gradual después de los cambios de configuración",
      "noteProcess": "El calentamiento es un proceso del operador; YSK rastrea sugerencias + DNSBL, no volumen de ESP de marketing"
    },
    "health": {
      "dnsUnconfirmed": "Registros DNS (MX/SPF/DKIM) aún no confirmados",
      "dmarcMissing": "Falta DMARC: muy recomendable",
      "dmarcUnpublished": "DMARC se genera en el panel pero aún no se publica en el DNS público",
      "ptrBad": "Falta el DNS inverso de PTR o es incorrecto: solicitud al proveedor de VPS",
      "port25Blocked": "El puerto de salida 25 aparece bloqueado: solicite desbloquearlo o utilice la retransmisión SMTP",
      "port25Unknown": "Estado del puerto 25 desconocido: ejecute la verificación de conectividad"
    },
    "stack": {
      "tlsNote": "Certificados TLS a través de Let's Encrypt para SMTP/IMAP",
      "externalNote": "Aún se requiere DNS/PTR/Puerto 25 externo para la capacidad de entrega"
    },
    "test": {
      "defaultSubject": "Prueba de correo del servidor YSK",
      "needMta": "Requiere MTA local (Postfix) instalado y puerto 25/relé configurado",
      "checkSpam": "Verifique la carpeta de spam del destinatario y los registros de correo del servidor después del envío",
      "hintDeferred": "Si se difiere: verifique el bloqueo del puerto 25 o las credenciales de retransmisión",
      "hintSpam": "Si se acepta pero es spam: mejorar SPF/DKIM/DMARC/PTR y calentamiento",
      "hintLogs": "Inspeccione /var/log/mail.log o journalctl -u postfix"
    },
    "leMailHost": "Solicitar certificado · {{host}}",
    "leWebmailHost": "Solicitar certificado · {{host}} (webmail)",
    "leApexHost": "Solicitar certificado · {{host}} (ápice)",
    "applyMailTls": "Aplicar rutas TLS de correo",
    "applyMailTlsHint": "El certificado debe existir; escribe rutas de servicio de correo y recarga.",
    "probeMx": "MX",
    "probeSpf": "SPF",
    "probeDkim": "DKIM",
    "probeDmarc": "DMARC",
    "probePtr": "PTR",
    "probeDnsbl": "DNSBL",
    "dnsAuthRepairTitle": "La autenticación DNS necesita arreglo",
    "dnsAuthRepairHint": "Copie registros de la pestaña DNS y publíquelos.",
    "fixHintSpf": "SPF falló: publique un TXT v=spf1 en @.",
    "fixHintDkim": "DKIM falló: publicar selector._domainkey TXT.",
    "fixHintDmarc": "DMARC falló: publicar _dmarc TXT.",
    "fixHintMx": "MX falló: apunte MX al correo.<dominio>.",
    "mailTls": {
      "needRootExecute": "La aplicación de TLS de correo necesita root y YSK_EXECUTE.",
      "certMissing": "No hay archivos de certificado para {{host}} ({{path}}).",
      "getCertFirst": "Primero emita un certificado Let's Encrypt para {{host}} en la página SSL.",
      "certFound": "Certificado encontrado para {{host}}.",
      "postconfFailed": "La postconf falló: {{detail}}",
      "postfixPathsSet": "Se han establecido rutas de certificados TLS de Postfix.",
      "postfixReloaded": "Postfix recargado.",
      "postfixReloadFailed": "Falló la recarga de Postfix: {{detail}}",
      "dovecotApplied": "Escribí un fragmento de TLS de Dovecot e intenté recargarlo.",
      "dovecotSkipped": "Dovecot omitido (no instalado o doveconf no disponible).",
      "dovecotSslOmitted": "Falta el certificado de correo; escribió ssl=no para que Dovecot pueda iniciar sin los archivos LE."
    },
    "policyApplySystemHint": "Marque \"aplicar al sistema\" para escribir mapas Postfix/Rspamd y recargar;",
    "rateLimitAppliedNote": "Se aplica la tarifa saliente por hora y el indicador antispam (cuando la aplicación del sistema está activada).",
    "bootstrapHonesty": "Un clic escribe archivos del panel; se aplican a los derechos de necesidades del sistema. DNS/PTR/puerto 25 son manuales.",
    "bootstrapAfterSteps": "Siguiente: ① publicar DNS (MX/SPF/DKIM/DMARC) ② emitir SSL de correo ③ Aplicar rutas TLS de correo.",
    "bootstrapThenSsl": "Siguiente: emitir correo SSL",
    "bootstrap": {
      "mtaOk": "Configuraciones de MTA escritas ({{count}} archivos)",
      "mtaIncomplete": "MTA incompleto: {{detail}}",
      "seeNotes": "ver notas",
      "mailboxOk": "Buzón {{address}} (estado {{status}})",
      "mailboxExists": "El buzón ya existe (omitido): {{detail}}",
      "passdbOk": "Dovecot passdb escrito ({{count}} buzones de correo)",
      "webmailOk": "Plan de correo web {{mode}} para {{host}}",
      "mailTlsTodo": "Mail TLS: emita un certificado para {{mailHost}}, luego use Aplicar rutas TLS de correo en la pestaña de estado.",
      "externalDns": "Externo (propiedad del operador): establezca MX/SPF/DKIM/DMARC en DNS; PTR en VPS; Puerto 25 o retransmisión SMTP.",
      "healthScore": "Puntuación de salud {{score}}/{{max}} (DNS/PTR/Port25 no se completa automáticamente)",
      "webmailProjectOk": "Proyecto de correo web {{tool}} @ {{host}} ({{status}})",
      "dovecotApplyOk": "Se aplicó la autenticación virtual Dovecot"
    },
    "tabDeliverability": "Entrega",
    "pendingCount": "Pendiente",
    "externalTodosOneLiner": "Usted debe realizar el PTR, el puerto 25 y el DNS del registrador.",
    "runDeliverabilityPack": "Ejecutar verificación de entrega",
    "deliverabilityTitle": "cheque de entrega",
    "deliverabilityEmpty": "Aún no comprobado",
    "deliverabilityEmptyDesc": "Ejecute la verificación de entrega para DNS, PTR y el puerto 25.",
    "panelReady": "Panel comprobable",
    "gaps": "Brechas",
    "checkOk": "OK",
    "checkExternal": "Externo",
    "checkFail": "Fallar",
    "mailboxListDesc": "Escribir contraseña DB después de crear",
    "aliasesDesc": "Alias ​​y reenvíos",
    "relayDesc": "retransmisión SMTP",
    "deliverabilityDesc": "Comprobaciones PTR/DNS/puerto 25",
    "dnsTodosDesc": "Copie y luego agregue en su host DNS",
    "deliverabilityHonesty": "No puedo configurar PTR o desbloquear el puerto 25 por ti",
    "warmupSuggest": "Sugerencias de calentamiento",
    "writeSsoSkeleton": "Escribir el esqueleto SSO de Roundcube",
    "rateLimitPerHour": "Límite de mensajes por hora",
    "rateLimitGlobalHint": "El global usa el mínimo de cada dominio",
    "savePolicyWritten": "Solo se escribe en el plano de control",
    "dnsblMultiIp": "RBL de varias IP",
    "webmailTool": "software de correo web",
    "webmailToolRoundcube": "Cubo redondo (predeterminado)",
    "webmailToolSnappy": "SnappyMail (ligero)",
    "webmailProjectName": "Nombre del proyecto",
    "installWebmailProject": "Crear y publicar",
    "openWebmail": "Abrir correo web",
    "webmailRisk": "El correo web público es riesgoso: habilite HTTPS pronto.",
    "webmailForceHttps": "Forzar HTTPS (Roundcube; se requiere SSL)",
    "reinstallWebmail": "Reinstalar/actualizar",
    "installWebmailTitle": "Cree el proyecto de correo web compartido (primera instalación)",
    "reinstallWebmailTitle": "Reconstruir/actualizar el proyecto de correo web existente",
    "reinstallNeedInstall": "Instale el correo web primero",
    "webmailSsoAdvanced": "Avanzado · Complemento SSO",
    "tlsRoleMail": "correo (IMAP/SMTP)",
    "tlsRoleMailHint": "Nombre de host del servidor de correo",
    "tlsRoleWebmail": "correo web",
    "tlsRoleWebmailHint": "servidor virtual de correo web",
    "tlsRoleApex": "Dominio ápice",
    "tlsRoleApexHint": "Certificado web/apex",
    "tlsRequestLe": "Solicitar LE",
    "tlsRequestLeFor": "Solicitar LE para {{host}}",
    "advancedToolsTitle": "Cola y clientes",
    "flushQueueConfirm": "¿Vaciar la cola del MTA local? Esto no se puede deshacer.",
    "mailSslTitleShort": "Certificados y TLS",
    "deleteDomain": "Eliminar dominio",
    "deleteDomainConfirmTitle": "¿Eliminar dominio de correo electrónico?",
    "deleteDomainConfirm": "Elimina {{domain}} y sus buzones de correo, alias y datos del plano de control. Es posible que la configuración de System Postfix/Dovecot aún necesite limpieza.",
    "deleteDomainBtn": "Borrar",
    "deleteMailbox": "Eliminar buzón",
    "deleteMailboxTitle": "¿Eliminar buzón?",
    "deleteMailboxDesc": "Elimina {{address}}, datos del plano de control y Maildir local si está presente.",
    "deleteMailboxC1": "Inicio de sesión del buzón y archivos de correo",
    "deleteMailboxC2": "Reescribir el mapa virtual de dominio (plano de control)",
    "deleteMailboxC3": "Es posible que el sistema Dovecot/Postfix aún necesite limpieza",
    "deleteAliasTitle": "¿Eliminar alias/reenviar?",
    "deleteAliasDesc": "Elimina {{source}}.",
    "deleteImpact": "{{mailboxes}} buzones de correo · {{records}} registros DNS · {{aliases}} alias",
    "deleteDomainC1": "Todos los buzones y alias",
    "deleteDomainC2": "DKIM del plano de control, sugerencias de DNS e indicadores",
    "deleteDomainC3": "Directorio de datos local/directorio de correo electrónico si está presente",
    "deleteDomainC4": "Los mapas del sistema MTA pueden permanecer; limpiar por separado si es necesario",
    "deleteDialogTitle": "Eliminar permanentemente el dominio de correo",
    "deleteDialogDesc": "A punto de eliminar {{domain}}. Esto no se puede deshacer.",
    "deletePermanent": "Eliminar permanentemente",
    "deleteRemoveData": "Eliminar también los datos del correo local.",
    "deleteRemoveDataDesc": "Desmarque para eliminar solo del panel; Maildir permanece en el disco",
    "deleteTypeName": "Escribe el dominio para confirmar",
    "deleteTypeNameHint": "Debe coincidir exactamente: {{name}}",
    "deleteWillData": "Directorio de datos local/directorio de correo electrónico si está presente",
    "deleteKeepData": "Mantener datos localesDir de correo electrónico",
    "deleteSystemWarn": "Los mapas System Postfix/Dovecot no se limpian automáticamente; limpie por separado si es necesario.",
    "hostIpPick": "Anfitrión IPv4",
    "hostIpPickV6": "Anfitrión IPv6",
    "editMailboxTitle": "Editar buzón",
    "editMailboxDesc": "Cambie la contraseña o la configuración de inicio de sesión para {{address}}",
    "editMailboxSave": "Guardar cambios",
    "newPassword": "Nueva contraseña",
    "newPasswordHint": "Déjelo en blanco para conservar la contraseña actual (mínimo 8 caracteres si está configurada)",
    "confirmPassword": "Confirmar Contraseña",
    "mailboxStatus": "Estado",
    "mailboxStatusActive": "Activo (se permite iniciar sesión)",
    "mailboxStatusDisabled": "Deshabilitado (iniciar sesión bloqueado)",
    "mailboxStatusHint": "Exportaciones deshabilitadas * a Dovecot passdb, por lo que se deniega el inicio de sesión",
    "colAddress": "DIRECCIÓN",
    "colLocalPart": "parte local",
    "colPassword": "Contraseña",
    "colCreated": "Creado",
    "hasPassword": "Colocar",
    "noPassword": "No establecido",
    "mailboxPager": "páginas del buzón",
    "prevPage": "Anterior",
    "nextPage": "Próximo",
    "pageOf": "Página {{page}} / {{total}} · {{count}}",
    "mailboxEmptyTitle": "Aún no hay buzones",
    "passwordMismatch": "Las contraseñas no coinciden",
    "passwordTooShort": "La contraseña debe tener al menos 8 caracteres.",
    "mailboxUpdateNeedField": "Establecer una nueva contraseña o cambiar el estado",
    "catchallHint": "Las partes locales desconocidas van al buzón destino. Borrador hasta aplicar.",
    "queueSearchPh": "Buscar ID, remitente o destinatario…",
    "queueId": "ID de cola",
    "queueSender": "Remitente",
    "queueRecipients": "Destinatarios",
    "queueSize": "Tamaño",
    "queueReason": "Motivo",
    "queueActive": "Activo",
    "queueHeld": "Retenido",
    "queueDeferred": "Diferido",
    "deleteQueueTitle": "¿Eliminar este mensaje de la cola?",
    "deleteQueueDesc": "Quitar {{id}} de la cola MTA local. Requiere YSK_EXECUTE.",
    "openQueuePage": "Abrir cola de correo",
    "dovecotFailedHint": "Dovecot failed. Open the Software tab for status; if the mail certificate is missing, issue it on the SSL page first.",
    "dovecotFailedStatus": "El palomar es {{status}}. Abra la pestaña Software para ver el resumen de la unidad.",
    "mailCertMissing": "Sin certificado para {{hosts}}. Emítelo en la página SSL.",
    "mailCertPresent": "Ya se ha emitido un certificado de correo; este no es un problema de certificado faltante.",
    "webmailNeedCert": "Sin certificado para {{host}}: emítelo en SSL antes de forzar HTTPS.",
    "domainRequired": "Introduce un dominio",
    "domainInvalid": "Introduce un dominio válido",
    "serverIpRequired": "Ingrese una IP del servidor",
    "serverIpInvalid": "Introduzca una dirección IP válida",
    "serverIpv6Invalid": "Introduzca una dirección IPv6 válida",
    "localPartRequired": "Ingrese una parte local",
    "localPartInvalid": "La parte local sólo puede utilizar letras, dígitos, . _ + -",
    "aliasDestRequired": "Introduzca al menos una dirección de destino",
    "mailboxStatusManaged": "Administrado",
    "mailboxStatusActiveShort": "Activo",
    "mailboxStatusDisabledShort": "Desactivado",
    "mailboxStatusSystem": "Sistema aprovisionado",
    "mailboxStatusPending": "Sistema pendiente",
    "mailboxStatusFailed": "El sistema falló",
    "dnsblCleanStatus": "No listado",
    "dnsblListedStatus": "Listado",
    "deliverabilityDone": "Verificación de entrega completa ({{score}}/100)",
    "sieveEmpty": "Sin archivos de tamiz escritos",
    "sieveListed": "{{count}} archivo(s) escrito(s)",
    "webmailHostnameRequired": "Introduzca un nombre de host de correo web",
    "sieveFilesTitle": "archivos escritos"
  },
  "errors": {
    "YSK_UNAUTHORIZED": "No autorizado",
    "YSK_FORBIDDEN": "Prohibido",
    "YSK_NOT_FOUND": "Extraviado",
    "YSK_VALIDATION": "Entrada no válida",
    "YSK_ALLOWLIST_DENIED": "No en la lista de permitidos",
    "YSK_APPROVAL_REQUIRED": "Se requiere aprobación",
    "YSK_APPROVAL_PENDING": "Aprobación pendiente",
    "YSK_APPROVAL_REJECTED": "Aprobación rechazada",
    "YSK_SANDBOX_VIOLATION": "Violación de la zona de pruebas",
    "YSK_LLM_UNTRUSTED": "Salida de LLM no confiable",
    "YSK_CONFIG_INVALID": "Configuración no válida",
    "YSK_SETUP_INCOMPLETE": "Configuración incompleta",
    "YSK_UPDATE_FAILED": "La actualización falló",
    "YSK_INTERNAL": "error interno",
    "YSK_NEED_EXECUTE": "Se requiere permiso de ejecución del host",
    "YSK_NEED_ROOT": "Se requiere raíz",
    "YSK_RATE_LIMITED": "Demasiados intentos; inténtalo de nuevo más tarde",
    "YSK_TOTP_REQUIRED": "Se requiere código de autenticación",
    "auth": {
      "needCredentials": "Ingrese nombre de usuario y contraseña",
      "rateLimited": "Demasiados intentos de inicio de sesión; inténtalo de nuevo más tarde",
      "badCredentials": "Nombre de usuario o contraseña incorrectos",
      "accountSuspended": "Cuenta suspendida",
      "adminTotpStrict": "Los administradores deben habilitar 2FA (estricto). Utilice una cuenta registrada o desactive el modo estricto.",
      "totpReplay": "Código ya utilizado; espera el próximo periodo",
      "totpRequired": "Se requiere un código de autenticación válido",
      "mustEnrollTotp": "Política de administración: habilite la autenticación de dos factores ahora",
      "userNotFound": "Usuario no encontrado",
      "totpSetupNeedReauth": "Para habilitar 2FA se requiere su contraseña (o un código de actualización reciente)",
      "totpBeginFirst": "Inicie la configuración 2FA primero",
      "totpInvalid": "Código de autenticación no válido",
      "stepUpRequired": "Esta acción requiere un código de autenticación nuevo.",
      "missingCredential": "Credenciales faltantes",
      "apiKeyUserMissing": "Propietario de la clave API no encontrado",
      "apiKeyInvalid": "Clave API no válida",
      "sessionExpired": "La sesión expiró; iniciar sesión de nuevo",
      "sessionIdle": "Tiempo de inactividad; iniciar sesión de nuevo",
      "totpNotEnabled": "2FA no está habilitado",
      "totpSecretNoDataDir": "El secreto TOTP está cifrado pero el directorio de datos no está configurado",
      "mustChangePassword": "Debe establecer una contraseña nueva antes de continuar",
      "policyNeedsOwn2fa": "Active 2FA para esta cuenta y confirme con un código TOTP antes de solicitar 2FA para otras"
    },
    "http": {
      "notFoundRoute": "No encontrado: {{method}} {{path}}",
      "unauthorized": "No iniciado sesión o la sesión expiró",
      "forbidden": "No tienes permiso para esta acción.",
      "notFound": "Recurso no encontrado",
      "unprocessable": "Solicitud rechazada por el servidor",
      "requestFailed": "Solicitud fallida ({{status}})",
      "jsonInvalid": "JSON no válido",
      "internal": "error interno",
      "payloadTooLarge": "El cuerpo de la solicitud es demasiado grande"
    },
    "YSK_HOST_BROWSE_SSRF": "Navegación del host bloqueada por la política de seguridad",
    "YSK_HOST_BROWSE_SESSION": "Sesión de exploración del host no encontrada o caducada",
    "YSK_HOST_BROWSE_UPSTREAM": "Error en la búsqueda ascendente de exploración del host",
    "YSK_HOST_BROWSE_NEED_CHROME": "El motor del navegador real requiere Chrome/Chromium en el host"
  },
  "fail2ban": {
    "backToProtection": "Protección",
    "statCurrentBan": "Prohibiciones actuales",
    "statTotal": "Totalmente prohibido",
    "statBanList": "Lista de prohibiciones",
    "statBoot": "En el arranque",
    "startedOk": "fail2ban iniciado",
    "startService": "Iniciar servicio",
    "notInstalled": "fail2ban no está instalado",
    "toolHintPrefix": "Herramientas subyacentes:",
    "toolHintBody": "fail2ban = después de escanear registros,",
    "toolHintTemp": "temporario",
    "toolHintBody2": "prohibiciones · para uso en respuesta a ataques",
    "toolHintUfw": "UFW = puertos / reglas permanentes",
    "tabs": {
      "bans": "Lista de prohibiciones",
      "whitelist": "Lista blanca",
      "jails": "cárceles",
      "policy": "Política",
      "service": "Servicio",
      "about": "Acerca de"
    },
    "manualBanTitle": "Prohibición manual (temporal)",
    "ipPlaceholder": "IPv4 o IPv6",
    "banipOk": "banip hecho",
    "manualBanHint": "Bloqueo temporal;",
    "currentBans": "Actualmente prohibido",
    "bannedTableTitle": "IP prohibidas (cliente fail2ban en vivo)",
    "bannedTableDesc": "Necesita acceso de cliente; Desbanear necesita YSK_EXECUTE",
    "unbanOk": "no prohibido",
    "unban": "Desbanear",
    "addWhitelistTitle": "Agregar a la lista blanca de ignorarip",
    "whitelistAdded": "Agregado a la lista blanca",
    "addWhitelistShort": "+Lista blanca",
    "emptyBansTitle": "Sin IP prohibidas",
    "emptyBansDesc": "O no hay permiso para leer el cliente fail2ban",
    "ignoreipTitle": "ignorar la lista blanca de IP",
    "ignoreipDesc": "IP nunca prohibidas (archivo de panel + cliente fail2ban en vivo opcional)",
    "whitelistEmptyWarn": "La lista blanca está vacía y las jails pueden bloquearle. Añada su IP de inicio antes de aplicar ignoreip.",
    "suggestIgnoreLogin": "Su IP de inicio {{ip}}",
    "applyIgnoreEmptyWarn": "Aplicar con lista blanca vacía borra ignoreip",
    "applyIgnoreNeedConfirm": "Reescribe ignoreip del jail y recarga fail2ban",
    "addIp": "Agregar IP",
    "addWhitelist": "Agregar a la lista blanca",
    "applyPolicyIgnoreip": "Aplicar política (incl. ignoreip)",
    "applyIgnoreipOk": "Escribí ignoreip en jail.local y apliqué",
    "ignoreipHint": "Sin YSK_EXECUTE sólo se escribe el archivo del panel (apply_status=write);",
    "whitelistTitle": "Lista blanca ({{count}})",
    "whitelistRemoved": "Eliminado de la lista blanca",
    "remove": "Eliminar",
    "emptyWhitelistTitle": "Aún no hay IP en la lista blanca",
    "emptyWhitelistDesc": "Agregue IP de administrador para que no esté baneado",
    "activeJails": "Cárceles activas",
    "colCurrent": "Actual",
    "colTotal": "Total",
    "colDesc": "Descripción",
    "emptyJailsTitle": "Sin cárceles",
    "emptyJailsDesc": "El servicio no se ejecuta o jail.local no se aplica",
    "policyTitle": "política carcelaria",
    "policyDesc": "Escribe el panel jail.local; aplicar copias + recargas (no vía UFW)",
    "bantimeHint": "Duración de la prohibición",
    "findtimeHint": "ventana de conteo",
    "maxretryHint": "Máximos fallos en ventana",
    "customExample2h": "Personalizado, p.e. 2h",
    "customExample15m": "Personalizado, p.e. 15m",
    "customMaxretry": "Personalizado 1–50",
    "min": "{{n}} minutos",
    "hour": "{{n}}h",
    "week": "{{n}} semana",
    "enableJailsHint": "Habilitar cárceles (marque y luego aplique):",
    "writtenOnlyMsg": "Archivo de panel escrito (no aplicado en el host)",
    "writeOnly": "Escribir solo archivo de panel",
    "appliedOk": "fail2ban aplicado",
    "applyToSystem": "Aplicar al sistema",
    "systemdTitle": "control del sistema",
    "enableAndStart": "Habilitar y comenzar",
    "serviceHint": "Para uso en respuesta a ataques",
    "serviceHintSuffix": "(llama a las cárceles de esta página + límites de velocidad de Nginx;",
    "actionOk": {
      "enable": "fail2ban habilitado e iniciado",
      "start": "fail2ban iniciado",
      "reload": "fail2ban recargado",
      "restart": "fail2ban reiniciado",
      "stop": "fail2ban detenido"
    },
    "statWhitelist": "Lista blanca",
    "invalidIp": "Ingrese un IPv4, IPv6 o CIDR válido.",
    "whitelistPendingApply": "Guardado en la lista de paneles. Presione Aplicar política para escribir jail.local.",
    "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
    "jailsTabHint": "Estado de las cárceles activas. Active o desactive las cárceles en la pestaña Política.",
    "colJail": "Celda",
    "colEnabled": "En",
    "serviceStateLine": "Unidad {{unit}} · {{state}} · arranque {{boot}}",
    "jail": {
      "sshd": "fuerza bruta SSH",
      "nginxHttpAuth": "Autenticación HTTP Nginx",
      "nginxBotsearch": "Escáner Nginx / sondas bot",
      "nginxBadbots": "Nginx conoce robots malos",
      "nginxLimitReq": "Cárcel de límite de tasa de Nginx",
      "postfix": "Fuerza bruta del correo Postfix",
      "dovecot": "Inicio de sesión de correo de Dovecot",
      "recidive": "Reincidentes"
    },
    "cannotBanSelf": "Este es el host o su IP de inicio de sesión: agréguelo a ignoreip en lugar de prohibirlo.",
    "suggestIgnoreHint": "IP de administrador sugeridas (archivo de panel solo hasta que aplique la política):",
    "suggestIgnoreAdd": "Añadir {{ip}}"
  },
  "featurePage": {
    "back": "Atrás"
  },
  "files": {
    "pillFiles": "{{count}} archivos",
    "pillTrash": "{{count}} en la basura",
    "pillSpace": "{{used}} usado",
    "statFiles": "Archivos",
    "statFolders": "Carpetas",
    "statUsage": "Uso",
    "statSelected": "Seleccionado",
    "statTrash": "Basura",
    "statShares": "Acciones",
    "publicSiteSettings": "Configuración del sitio público",
    "opsResultTitle": "Resultado de la operación de archivo",
    "closeResult": "Cerrar resultado",
    "tabBrowse": "Navegar",
    "tabTrash": "Basura",
    "tabShares": "Acciones",
    "spaceLabel": "Espacio",
    "publicFiles": "Archivos públicos",
    "viewLabel": "Vista",
    "allFiles": "Todos los archivos",
    "favorites": "Favoritos",
    "upload": "Subir",
    "newFolder": "Nueva carpeta",
    "newTextFile": "Nuevo archivo de texto",
    "download": "Descargar",
    "copy": "Copiar",
    "move": "Mover",
    "zip": "Cremallera",
    "unzip": "Abrir la cremallera",
    "unzipDone": "Descomprimido {{path}}",
    "unzipFailed": "Error al descomprimir",
    "delete": "Borrar",
    "searchName": "Buscar…",
    "sortAria": "Clasificar",
    "sortNameAsc": "Nombre ↑",
    "sortNameDesc": "Nombre↓",
    "sortSizeAsc": "Pequeño ↑",
    "sortSizeDesc": "Grande↓",
    "sortMtimeDesc": "El más nuevo",
    "sortMtimeAsc": "más antiguo",
    "viewList": "Lista",
    "viewIcons": "Iconos",
    "viewAria": "Modo de visualización",
    "toolbarAria": "Acciones de archivo",
    "pathAria": "Camino",
    "rootPublic": "Público",
    "rootProject": "Proyecto",
    "emptyFavorites": "Aún no hay favoritos",
    "emptyFolder": "Esta carpeta está vacía",
    "emptyFolderHint": "Suelte archivos o carpetas aquí para cargarlos o haga clic en Cargar",
    "selectItem": "Seleccione {{name}}",
    "colName": "Nombre",
    "colSize": "Tamaño",
    "colMtime": "Modificado",
    "rename": "Rebautizar",
    "unfavorite": "No favorito",
    "favorite": "Favorito",
    "share": "Compartir",
    "versions": "Versiones",
    "selectAllAria": "Seleccionar todo",
    "selectAll": "Seleccionar todo",
    "folder": "Carpeta",
    "dirNamedLikeFile": "(carpeta residual; el nombre parece un archivo)",
    "dropToUpload": "Soltar para subir",
    "trashTitle": "Papelera ({{count}})",
    "trashDesc": "Los archivos eliminados se pueden restaurar o eliminar permanentemente",
    "emptyTrash": "Vaciar la basura",
    "emptyTrashTitle": "¿Basura vacía?",
    "emptyTrashDesc": "Todos los archivos de la papelera se eliminarán permanentemente. Esto no se puede deshacer.",
    "purgeForeverDesc": "Este archivo se eliminará permanentemente. Esto no se puede deshacer.",
    "emptyTrashDone": "Papelera vaciada",
    "colOrigPath": "camino original",
    "colDeletedAt": "Eliminado en",
    "restore": "Restaurar",
    "restored": "Restaurado",
    "purgeForever": "Eliminar para siempre",
    "purged": "Eliminado permanentemente",
    "trashEmpty": "la papelera esta vacia",
    "sharesTitle": "Enlaces para compartir públicamente ({{count}})",
    "colPath": "Camino",
    "colLink": "Enlace",
    "colDownloads": "Descargas",
    "unshare": "Dejar de compartir",
    "unshareDone": "Compartir cancelado",
    "sharesEmpty": "Aún no hay acciones",
    "sharesEmptyHint": "Haga clic en Compartir en una fila de archivo",
    "webdavTitle": "Configuración de WebDAV",
    "webdavDesc": "Monte la raíz de los archivos públicos a través de HTTP básico en Finder, Windows o rclone. El token se muestra una vez.",
    "enableIssueToken": "Habilitar y emitir token",
    "webdavReissueToken": "Reemitir token",
    "webdavReissueConfirm": "La nueva emisión invalida la contraseña anterior inmediatamente; los clientes montados se desconectarán. ¿Continuar?",
    "webdavDisableConfirm": "La desactivación rechazará todas las conexiones /webdav. ¿Continuar?",
    "tokenIssued": "Token emitido",
    "status": "Estado",
    "enabledMount": "Habilitado · {{path}}",
    "notEnabled": "No habilitado",
    "disable": "Desactivar",
    "webdavAlreadyOff": "WebDAV ya está apagado",
    "webdavDisabled": "WebDAV deshabilitado",
    "webdavEnabledNoEcho": "Habilitado (la contraseña no se mostrará nuevamente; vuelva a emitirla si es necesario)",
    "webdavDefaultOff": "Desactivado de forma predeterminada: haga clic en Habilitar y emita el token para comenzar",
    "webdavAfterEnable": "Disponible después de activar WebDAV y emitir un token.",
    "webdavOn": "Activado",
    "webdavOff": "Desactivado",
    "webdavOffNoToken": "Deshabilitado (sin token activo)",
    "webdavTokenId": "Ficha #{{id}}",
    "webdavTokenInactive": "Deshabilitado: el token #{{id}} no está activo",
    "webdavUpdated": "Actualizado {{at}}",
    "webdavTokenOnceTitle": "Copia la contraseña ahora",
    "webdavTokenOnceHint": "Esta contraseña se muestra sólo una vez; no se puede recuperar después de salir de esta página.",
    "webdavConnTitle": "Conexión",
    "webdavConnDesc": "Utilice esta URL con credenciales HTTP básicas en su cliente",
    "webdavUrl": "URL del servidor",
    "webdavUsername": "Nombre de usuario",
    "webdavPassword": "Contraseña (token)",
    "webdavPasswordHidden": "Emitido anteriormente y no vuelto a mostrar: vuelva a emitir o use una contraseña guardada",
    "webdavPasswordNone": "Aún no emitido",
    "webdavRoot": "Montar raíz",
    "webdavRootValue": "Raíz de archivos públicos del panel",
    "webdavAuth": "Autenticación",
    "webdavAuthValue": "HTTP Básico · usuario ysk · contraseña = token emitido por el panel",
    "webdavConnBundle": "detalles de conexión",
    "webdavCopyAll": "Copia todos los detalles de la conexión",
    "webdavClientsTitle": "Configuración del cliente",
    "webdavClientsDesc": "Recetas de montaje comunes (prefiera HTTPS; confíe en los certificados autofirmados en el cliente si es necesario)",
    "webdavClientFinder": "Buscador de macOS",
    "webdavClientFinderHint": "Vaya → Conectarse al servidor… (⌘K), pegue la URL, usuario ysk, contraseña = token.",
    "webdavClientWin": "ventanas",
    "webdavClientWinHint": "Esta PC → Mapear unidad de red → usa credenciales diferentes; o Cyberduck/WinSCP (WebDAV).",
    "webdavNotesTitle": "Notas",
    "webdavNote1": "WebDAV asigna sólo la raíz de los archivos públicos, no todo el sistema de archivos del host.",
    "webdavNote2": "Exponer el puerto del panel mediante proxy inverso/firewall; prefiera solo HTTPS.",
    "webdavNote3": "La reemisión invalida el token antiguo inmediatamente; desactivar rechaza todas las solicitudes /webdav.",
    "webdavNote4": "Admite OPCIONES / PROPFIND / GET / PUT; El conjunto completo de LOCK puede estar incompleto.",
    "copiedLabel": "Copiado “{{label}}”",
    "newFolderTitle": "Nueva carpeta",
    "willCreateAt": "Se creará en \"{{path}}\"",
    "nameRequired": "Introduce un nombre",
    "folderCreated": "Carpeta creada",
    "create": "Crear",
    "folderName": "Nombre de la carpeta",
    "noPathSepHint": "No debe contener separadores de ruta",
    "newTextTitle": "Nuevo archivo de texto",
    "fileNameRequired": "Introduzca un nombre de archivo",
    "textFileCreated": "Archivo de texto creado",
    "fileName": "Nombre del archivo",
    "fileNameHint": "p.ej. readme.md o notas.txt",
    "versionsTitle": "Historial de versiones",
    "versionsDesc": "",
    "noVersions": "Aún no hay historial de versiones",
    "noVersionsHint": "",
    "versionRestored": "Restaurado",
    "restoreVersionConfirm": "¿Restaurar {{version}} sobre el archivo actual {{file}}? Esto sobrescribe el archivo en el disco.",
    "renameTitle": "Rebautizar",
    "renameCurrent": "Actual: {{name}}",
    "renamed": "Renombrado",
    "newName": "Nuevo nombre",
    "newNameHint": "Sólo cambia el nombre; permanece en el mismo directorio",
    "copyTo": "Copiar a…",
    "moveTo": "Convidar a…",
    "copyMoveDesc": "{{action}} {{count}} artículo(s)",
    "actionCopy": "Copiar",
    "actionMove": "Mover",
    "copied": "Copiado",
    "moved": "Emocionado",
    "targetFolderPath": "Ruta de la carpeta de destino",
    "targetFolderHint": "En relación con la raíz, p. documentos o documentos/a; vacío = raíz",
    "shareCreateTitle": "compartir archivo",
    "shareCreateDesc": "Cree un enlace de descarga público. Contraseña opcional.",
    "createLink": "Crear enlace",
    "sharePath": "Camino:",
    "passwordOptional": "Contraseña (opcional)",
    "passwordOptionalHint": "Dejar vacío para acceso abierto",
    "passwordPlaceholder": "Opcional",
    "linkCreated": "Enlace creado:",
    "chmodTitle": "Cambiar permisos (chmod)",
    "chmodDone": "chmod {{mode}} → {{count}} elemento(s)",
    "chmodDoneShort": "chmod {{mode}} hecho",
    "chmodFailed": "chmod falló",
    "apply": "Aplicar",
    "chmodApplyHint": "Aplicar a {{count}} elementos seleccionados (octal, por ejemplo, 644/755)",
    "chmod644": "archivo 644",
    "chmod755": "755 ejecutable",
    "chmod600": "600 privado",
    "chmod700": "700 directorios privados",
    "chmod775": "775 escritura grupal",
    "chmodCustomPh": "Personalizado 0644…",
    "mode": "Modo",
    "zipTitle": "Comprimir para comprimir",
    "zipCreated": "Creado {{path}}",
    "zipDone": "Comprimido → {{path}}",
    "zipFailed": "zip falló",
    "compress": "Comprimir",
    "zipHint": "Comprima {{count}} los elementos seleccionados en la carpeta actual (necesita zip en el host)",
    "destFileName": "Nombre del archivo de destino",
    "destPathHint": "Ruta: {{path}}",
    "movedToTrash": "Movido a la basura",
    "moveToTrashTitle": "¿Mover a la basura?",
    "moveToTrashDesc": "Eliminar {{count}} elemento(s) (restaurable desde la papelera)",
    "deleteMore": "y {{n}} más",
    "unshareTitle": "¿Revocar esta acción?",
    "unshareDesc": "Revocar el enlace para {{name}} ({{url}}). El enlace deja de funcionar inmediatamente.",
    "preview": "Avance",
    "imagePreviewNeedLogin": "La vista previa de la imagen necesita iniciar sesión; usa descargar en su lugar",
    "pdfDownloadHint": "Descargue el PDF para abrirlo (necesita encabezados de autenticación)",
    "noEmbedPreview": "Este tipo no se puede incrustar; por favor descargue.",
    "uploadDone": "Subido {{count}} archivo(s)",
    "downloadFailedStatus": "Descarga fallida ({{status}})",
    "downloadFailed": "Descarga fallida",
    "uploadFolder": "Subir carpeta",
    "dropFolderOrFile": "Soltar archivos o carpetas para cargar",
    "uploadPanelTitle": "Subidas",
    "uploadPanelStats": "{{done}}/{{total}} hecho · {{err}} fallido",
    "uploadClearDone": "Acabado claro",
    "uploadInFolder": "Carpeta {{folder}}",
    "uploadStatusDone": "Hecho",
    "uploadStatusError": "Fallido",
    "uploadStatusQueued": "En cola",
    "uploadNoFile": "Sin datos de archivo",
    "uploadSomeFailed": "{{count}} elementos fallidos",
    "uploadTruncated": "Carga limitada a {{max}} elementos ({{total}} seleccionados; el resto omitido)",
    "previewFailed": "Error en la vista previa",
    "videoNotSupported": "Su navegador no puede reproducir este video.",
    "audioNotSupported": "Su navegador no puede reproducir este audio.",
    "edit": "Editar",
    "editorTitle": "Editar · {{name}}",
    "editorSave": "Ahorrar",
    "editorSavedIdle": "Guardado",
    "editorSaved": "Guardado {{name}}",
    "editorSaveFailed": "Error al guardar",
    "editorDirty": "No guardado",
    "editorClean": "Guardado",
    "editorChars": "{{count}} caracteres",
    "editorAria": "Editor para {{name}}",
    "editorDiscardConfirm": "¿Descartar los cambios no guardados?",
    "shareReadyTitle": "Enlace listo",
    "shareReadyDesc": "Copia y envía este enlace. Cualquiera que lo tenga puede descargarlo.",
    "shareReadyBadge": "Creado",
    "shareProtected": "Protegido con contraseña",
    "shareOpenAccess": "Sin contraseña",
    "shareLinkLabel": "Enlace público",
    "shareCopyHint": "Seleccione el campo o utilice Copiar.",
    "shareAgain": "Nuevo enlace",
    "shareCreatedToast": "Compartir enlace creado",
    "linkCopied": "Enlace copiado",
    "linkCopyFailed": "No se pudo copiar: seleccione y copie manualmente",
    "shareExpireLabel": "Caducidad del enlace",
    "shareExpireHint": "Pasado este tiempo el enlace deja de funcionar",
    "shareExpireNever": "Nunca",
    "shareExpire1h": "1 hora",
    "shareExpire1d": "1 dia",
    "shareExpire7d": "7 dias",
    "shareExpire30d": "30 dias",
    "shareExpireCustom": "Costumbre…",
    "shareExpireAt": "Vence en",
    "shareExpireInvalid": "Elija una fecha y hora futuras",
    "shareExpiresAt": "Caduca {{at}}",
    "colExpires": "Vence",
    "pdfInlineHint": "Si el PDF no aparece, descárguelo.",
    "publicShareTitle": "Alguien compartió un archivo contigo",
    "publicShareSub": "Descargue de forma segura desde este enlace: no se necesita cuenta",
    "publicShareChecking": "Comprobando enlace…",
    "publicShareDownloading": "Descargando…",
    "publicShareWait": "Espere por favor",
    "publicShareNeedPassword": "Este enlace requiere una contraseña para descargar.",
    "publicSharePasswordPh": "compartir contraseña",
    "publicShareDownload": "Descargar",
    "publicShareDownloadAgain": "Descargar de nuevo",
    "publicShareDone": "Descarga iniciada",
    "publicShareDoneHint": "Verifique las descargas de su navegador; toque nuevamente si no aparece nada",
    "publicShareNotFound": "Compartir no encontrado o caducado",
    "publicShareDenied": "No puedo acceder a este recurso compartido",
    "publicShareBadPassword": "Contraseña incorrecta",
    "publicShareMissing": "Enlace para compartir no válido",
    "publicShareFailed": "Descarga fallida ({{status}})",
    "publicShareFailedGeneric": "Descarga fallida",
    "publicShareDefaultName": "descargar",
    "publicSharePanelLogin": "Iniciar sesión en el panel",
    "publicShareLang": "Idioma",
    "publicShareProgress": "{{loaded}} / {{total}} ({{pct}}%)",
    "publicShareProgressIndeterminate": "Recibido {{loaded}}…",
    "publicShareCancel": "Cancelar",
    "publicShareCancelled": "Descarga cancelada",
    "publicSharePoweredBy": "Desarrollado por {{company}}",
    "publicSharePoweredPrefix": "Desarrollado por",
    "publicSharePoweredSuffix": "",
    "publicShareHasAccount": "¿Tienes una cuenta? Iniciar sesión",
    "password": "Contraseña",
    "editorLines": "{{count}} líneas",
    "editorLargeHint": "Archivo grande: la edición puede parecer lenta. Prefiere la descarga de archivos de varios MB (límite del servidor ~2 MB).",
    "editorLnCol": "Ln {{line}}, Col {{col}}",
    "editorSpaces": "Espacios: {{n}}",
    "copyLink": "Copiar enlace",
    "versionsTitleShort": "Historial de versiones",
    "versionsCount": "{{count}} / {{max}}",
    "versionN": "v{{n}}",
    "versionLatest": "El último",
    "shareModeLabel": "Método de descarga",
    "shareModeDirect": "Descarga directa",
    "shareModeBt": "BitTorrent (WebTorrent)",
    "shareModeBoth": "Directo + BitTorrent",
    "shareModeHint": "BT necesita un rastreador en ejecución (Archivos → BT Tracker). Los enlaces magnéticos pueden ser utilizados por cualquier persona que tenga el enlace.",
    "shareModeBtBlocked": "Tracker no se está ejecutando: inícielo antes de crear recursos compartidos de BT o elija Solo Directo.",
    "shareMagnet": "Enlace magnético",
    "shareTorrentFile": "Descargar .torrent",
    "shareSeedStatus": "Estado de siembra",
    "shareBtStats": "Estado de BitTorrent",
    "btSeeds": "Semillas",
    "btLeechers": "sanguijuelas",
    "btPeers": "Colegas",
    "btUploadSpeed": "Velocidad de carga",
    "btDownloadSpeed": "Velocidad de descarga",
    "btUploaded": "subido",
    "btDownloaded": "Descargado",
    "btRatio": "Relación",
    "btUpdatedAt": "Actualizado",
    "btServerStats": "Sembradora de servidor",
    "btClientStats": "tu cliente",
    "btSeeding": "siembra",
    "btPending": "Siembra pendiente",
    "btStopped": "Semilla parada",
    "btError": "error de semilla",
    "publicShareMethod": "¿Cómo quieres descargar?",
    "publicShareDirect": "Descarga directa",
    "publicShareBt": "BitTorrent",
    "openBtTracker": "Abrir BT Tracker",
    "publicShareBtInBrowser": "Descargar en el navegador (WebTorrent)",
    "publicShareBtProgress": "Descargado {{pct}}% · {{peers}} pares · ↓ {{down}} · ↑ {{up}}",
    "publicShareBtStarting": "Conectándose con sus compañeros...",
    "publicShareBtFailed": "WebTorrent falló: {{detail}}",
    "publicShareBtNeedMagnet": "No hay URI magnético para este recurso compartido",
    "publicShareBtUnsupported": "Este navegador no puede ejecutar WebTorrent; use magnet o .torrent en su lugar",
    "btNone": "—",
    "uploadStatusSkipped": "Omitido",
    "uploadStatusCancelled": "Cancelado",
    "conflict": {
      "titleFile": "Ya existe un elemento llamado “{{name}}”",
      "titleFolder": "Ya existe una carpeta llamada “{{name}}”",
      "descFile": "Elige qué hacer. No se sobrescribe nada hasta que pulses Reemplazar.",
      "descFolder": "Elige qué hacer. Combinar conserva la carpeta existente y sigue con su contenido.",
      "incoming": "Entrante",
      "existing": "Ya está aquí",
      "kindFile": "Archivo",
      "kindFolder": "Carpeta",
      "skip": "Omitir",
      "skipHint": "No añadir este elemento",
      "keepBoth": "Conservar ambos",
      "keepBothHint": "Guardar el entrante como {{name}}",
      "replace": "Reemplazar",
      "replaceHint": "Sobrescribir el archivo existente. Se guarda una instantánea de versión si es posible.",
      "replaceFolderHint": "Sobrescribe los archivos con el mismo nombre en esta carpeta. Los demás se quedan.",
      "merge": "Combinar",
      "mergeHint": "Conservar la carpeta existente y añadir los archivos entrantes dentro",
      "applyAll": "Aplicar a todos los conflictos restantes",
      "applyAllHint": "Usar esta acción para el resto de este arrastre o transferencia",
      "cancelRest": "Cancelar el resto",
      "progress": "{{current}} de {{total}}",
      "typeMismatch": "Ya hay {{destKind}} llamado “{{name}}”. Lo que llega es {{incomingKind}}.",
      "skipped": "Omitido",
      "cancelled": "Cancelado"
    },
    "webdavReissueUnchanged": "La identificación del token no cambió después de la reemisión; es posible que la escritura no haya persistido. Intentar otra vez.",
    "webdavDisableFailed": "WebDAV todavía está habilitado después de deshabilitarlo; es posible que la escritura no haya persistido. Intentar otra vez."
  },
  "firewall": {
    "profiles": {
      "web": {
        "label": "anfitrión web",
        "short": "SSH · 80 · 443"
      },
      "mail": {
        "label": "Web + correo",
        "short": "También 25/465/587/993"
      },
      "ftps": {
        "label": "Web+FTPS",
        "short": "21 + PASV 30000–30100"
      }
    },
    "appliedProfile": "Perfil aplicado: {{label}}",
    "backToProtection": "Protección",
    "statRules": "Normas",
    "statDenyIps": "IP denegadas permanentemente",
    "statAllow": "Permitir",
    "statDeny": "Denegar",
    "statDefaultIn": "Entrante predeterminado",
    "defaultNotApplied": "n/a (UFW desactivado)",
    "ufwOffHint": "La entrada predeterminada no se aplica mientras UFW está desactivado",
    "executeOn": "En",
    "executeOff": "Apagado",
    "ufwDisabled": "UFW deshabilitado",
    "ufwEnabled": "UFW habilitado",
    "disableUfw": "Desactivar UFW",
    "enableUfw": "Habilitar UFW",
    "notInstalled": "UFW no está instalado",
    "toolHintPrefix": "Herramientas subyacentes:",
    "toolHintBody": "UFW = puertos/reglas permanentes · para respuesta a ataques y uso de prohibición automática",
    "toolHintfail2ban": "fail2ban = prohibiciones temporales basadas en registros",
    "toolHintFail2ban": "fail2ban = prohibiciones temporales basadas en registros",
    "executeOffHint": "El sistema se apaga: el estado es legible;",
    "tabs": {
      "rules": "Normas",
      "ports": "Puertos abiertos",
      "deny": "Denegación permanente de IP",
      "profiles": "Perfiles",
      "about": "Acerca de",
      "services": "Servicios"
    },
    "currentRules": "Reglas actuales",
    "rulesSourceHint": "Reglas numeradas de UFW (estado de ufw numerado)",
    "colAction": "Acción",
    "colTo": "A",
    "colFrom": "De",
    "deleteShort": "Borrar",
    "denyBadge": "DENY",
    "emptyRulesTitle": "Sin reglas ni permiso para leer.",
    "emptyRulesInstalled": "UFW inactivo o necesita root para leer",
    "emptyRulesNotInstalled": "Instale UFW y luego actualice",
    "allowPortTitle": "Permitir puerto",
    "protocol": "Protocolo",
    "protoBoth": "Ambos",
    "protoBothLabel": "TCP+UDP",
    "port": "Puerto",
    "portHint": "Elija un puerto común o personalizado a continuación",
    "portHintYsk": "Todos los puertos de servicio YSK (Panel, Web, SSH, correo, FTP, DNS, DB, Redis);",
    "privatePortWarn": "{{service}} normalmente debería permanecer privado; el permiso público es arriesgado. Prefiere una IP/CIDR de origen.",
    "privatePortWarnWithFrom": "{{service}} solo permitirá la fuente dada; Vuelva a verificar la IP/CIDR.",
    "allowFrom": "IP de origen/CIDR (opcional)",
    "allowFromHint": "Vacío = en cualquier lugar; configure una IP o CIDR para permitir solo esa fuente en este puerto",
    "allowFromPlaceholder": "p.ej. 203.0.113.10 o 10.0.0.0/8",
    "customPort": "Puerto personalizado (por ejemplo, 8080 o 30000:30100)",
    "allowedPort": "Permitido {{proto}}/{{port}}",
    "allowedPortFrom": "Permitido {{proto}}/{{port}} desde {{from}}",
    "allowThisPort": "Permitir este puerto",
    "allowPortHint": "Mantenga 22/80/443 para un servidor web;",
    "denyTitle": "Denegación permanente de IP",
    "denySub": "UFW DENY · diferente de las prohibiciones temporales de fail2ban",
    "denyPlaceholder": "IPv4 o IPv6 para denegar",
    "deniedOk": "Negado permanentemente",
    "removedDeny": "DENEGAR eliminado",
    "remove": "Eliminar",
    "noDenyRules": "Sin reglas permanentes de denegación de IP",
    "oneClickProfiles": "Perfiles de un clic",
    "oneClickDesc": "Escriba el script del panel y aplique UFW (no instala fail2ban; use la página de fail2ban)",
    "customApply": "Aplicar personalizado",
    "allowSmtp": "Permitir puertos SMTP/IMAP",
    "extraTcp": "Puertos TCP adicionales",
    "extraTcpHint": "Elija un ajuste preestablecido; o comas/rangos personalizados",
    "noExtra": "Ninguno extra",
    "mailGroup": "conjunto de correo",
    "customExtraPlaceholder": "Personalizado: 8080,9000:9010",
    "appliedCustom": "Reglas personalizadas aplicadas",
    "applyToSystem": "Aplicar al sistema",
    "deletedRule": "Eliminado #{{n}}",
    "deleteRuleTitle": "¿Eliminar la regla #{{n}}?",
    "deleteRuleDesc": "Elimina ese número de regla UFW (necesita permiso de cambio de sistema).",
    "servicesTitle": "Servicios gestionados",
    "servicesHint": "Exposición de red deseada para los servicios de YSK. Al abrir un servicio se sincronizan estas reglas automáticamente.",
    "servicesUfwOff": "La UFW está cancelada. Esta lista es la exposición deseada, no las reglas que el anfitrión impone.",
    "servicesEmpty": "Aún no hay datos de exposición al servicio",
    "servicesEmptyDesc": "Inicie un servicio administrado (web, FTPS, VPN, DB…) para completar esta lista.",
    "servicesManualHint": "Los chips de puerto manuales se encuentran en la pestaña Puertos; prefiera administrar el acceso aquí para que las reglas permanezcan etiquetadas (ysk-svc).",
    "portsManualHint": "Reglas manuales avanzadas. Prefiera la pestaña Servicios para software administrado.",
    "colService": "Servicio",
    "colMode": "Modo",
    "colPorts": "Puertos",
    "colSync": "Estado",
    "synced": "Sincronizado",
    "syncNow": "Sincronizar",
    "disableConfirmTitle": "¿Desactivar UFW?",
    "disableConfirmDesc": "El cortafuegos del host dejará de filtrar el tráfico. En una red pública, SSH y el panel pueden quedar expuestos.",
    "disableConfirmConsequence": "Las reglas de permitir/denegar se conservan, pero no se aplican hasta volver a activar UFW.",
    "desiredOnlyUfwOff": "Deseado: {{mode}} · UFW desactivado (no aplicado)",
    "syncNotApplied": "UFW desactivado · no aplicado"
  },
  "ftp": {
    "title": "cuentas FTPS",
    "accountsCount": "{{count}} cuenta(s)",
    "accounts": "Cuentas",
    "applied": "Aplicado",
    "pendingApply": "Pendiente de aplicar",
    "sftpKeys": "Claves SFTP",
    "softwareMissing": "El software del servicio FTPS no está instalado",
    "ftpAccounts": "cuentas ftp",
    "sftpPubkeys": "Claves públicas SFTP",
    "homeDir": "Directorio de inicio",
    "domain": "Dominio",
    "user": "Usuario",
    "keyFingerprint": "Huella digital clave (prefijo)",
    "createHint": "Primero cree una cuenta FTP en la pestaña Cuentas y luego regrese aquí para registrar las claves.",
    "pubkeyHint": "Utilice \"+ Agregar clave pública\", elija un usuario de FTP y pegue una línea completa ssh-ed25519 o ssh-rsa.",
    "sftpKeyInvalid": "Necesita un nombre de usuario y una clave pública que comience con ssh-.",
    "quickSelect": "Cuenta de selección rápida",
    "quickSelectHint": "Haga clic en un nombre de usuario para completar el formulario de nueva clave",
    "editAccount": "Editar cuenta FTP",
    "createAccount": "Crear cuenta FTP",
    "accountModalDesc": "Elija dominio y hogar de las listas o escriba libremente. Guardar y luego Aplicar para escribir vsftpd",
    "usernameHintCreate": "Alnum, punto, guión bajo, guión; inmutable después de crear",
    "usernameHint": "Alnum, punto, guión bajo, guión",
    "newPasswordOptional": "Nueva contraseña (opcional)",
    "passwordKeepHint": "Vacío se mantiene actualizado",
    "passwordMin8": "Al menos 8 caracteres",
    "domainHint": "Sitio o dominio de correo para sugerencias de agrupación y ruta",
    "domainPh": "Primero cree el sitio/dominio de correo o escriba temporalmente",
    "homeHint": "Root después de iniciar sesión (alcance visible de chroot)",
    "addPubkey": "Agregar clave pública SFTP",
    "addPubkeyDesc": "Elija una cuenta, una nota opcional y pegue una línea de clave pública completa. Escribir el archivo no prueba que el inicio de sesión funcione.",
    "pubkeyAdded": "Clave pública agregada",
    "ftpUsername": "nombre de usuario FTP",
    "ftpUsernameHint": "Debe coincidir con una cuenta FTP registrada",
    "ftpUsernamePh": "Igual que la cuenta FTP",
    "note": "Nota",
    "noteHint": "Etiqueta del dispositivo, p. computadora portátil / oficina",
    "notePh": "Anfitrión de computadora portátil/oficina",
    "sshPubkey": "clave pública ssh",
    "sshPubkeyHint": "Generalmente desde ~/.ssh/id_ed25519.pub, pegue la línea completa",
    "deleteAccountTitle": "¿Eliminar cuenta FTP?",
    "deleteAccountNamed": "¿Eliminar cuenta FTP {{name}}?",
    "deleteAccountDesc": "Aplicar nuevamente después de quitar",
    "deleteKeyTitle": "¿Eliminar la clave pública SFTP?",
    "deleteKeyDesc": "Elimina del archivo de gestión; Es posible que sea necesario recargar las claves_autorizadas del sistema.",
    "serviceTitle": "servicio vsftpd",
    "softwareMissingService": "El software FTPS no está instalado",
    "lifecycle": "Ciclo vital",
    "overview": "Descripción general",
    "network": "Red",
    "security": "Seguridad",
    "installStart": "Instalar y comenzar",
    "listenPort": "Puerto de escucha",
    "accountCount": "Cuentas",
    "loginBanner": "Banner de inicio de sesión",
    "sslDomain": "Dominio SSL",
    "plaintextInsecure": "FTP de texto sin cifrar (sin TLS): inseguro. Habilite FTPS antes de exponer el puerto 21.",
    "plaintextPublicLive": "vsftpd está escuchando en una dirección pública sin FTPS. Las credenciales viajan con claridad. Habilite FTPS, vincúlese solo a este host o confirme TEXTO PLANO para mantener esta postura.",
    "bindAddress": "Escuchar alcance",
    "bindAddressHint": "Las nuevas instalaciones se vinculan únicamente a este host. La escucha pública sin FTPS necesita una confirmación escrita.",
    "bindLocal": "Este anfitrión sólo",
    "bindLocalHint": "127.0.0.1: bien sin TLS para pruebas locales",
    "bindPublic": "Público",
    "bindPublicHint": "Todas las interfaces: habilite FTPS o confirme TEXTO PLANO",
    "enableFtpsAndStart": "Habilite FTPS y comience",
    "publicPlainNeedConfirm": "El FTP público de texto claro necesita una confirmación de TEXTO SIMPLE",
    "plainConfirmTitle": "¿Iniciar FTP público sin FTPS?",
    "plainConfirmDesc": "El puerto 21 aceptará inicios de sesión y datos sin cifrar en la dirección pública.",
    "plainConfirmC1": "Los nombres de usuario y las contraseñas son visibles en la red.",
    "plainConfirmC2": "PASV anunciará la IP pública configurada.",
    "plainConfirmC3": "El firewall del host y el grupo de seguridad en la nube no están abiertos para usted.",
    "plainConfirmAction": "Iniciar FTP de texto sin cifrar",
    "pasvRange": "rango PASV",
    "forceTls": "Forzar TLS",
    "allowWrite": "permitir escribir",
    "networkTitle": "Configuración de red",
    "networkDesc": "Puerto de escucha y PASV;",
    "listenPortHint": "Predeterminado 21; abra el firewall si usa otro puerto",
    "customPort": "Puerto personalizado",
    "ipStack": "pila de direcciones IP",
    "ipStackHint": "La mayoría de las compilaciones de vsftpd: listening y listening_ipv6 son mutuamente excluyentes;",
    "listenConflictLive": "Live vsftpd.conf tiene listening={{v4}} y listening_ipv6={{v6}}; ambos SÍ no podrán iniciarse.",
    "listenConflictNeedFix": "Primero arregle listening/listen_ipv6 (ambos no pueden ser SÍ), luego aplique.",
    "fixListenIpv4": "Utilice solo IPv4 (escuchar=SÍ, escuchar_ipv6=NO)",
    "liveFileValue": "Presentar ahora: {{value}}",
    "startBlockedFailed": "El servicio falla: aplique una configuración válida antes de comenzar",
    "ftpsNeedCert": "Elija primero un dominio de certificado",
    "ipv4Only": "Sólo IPv4",
    "ipv6Mapped": "IPv6 (asignado correctamente)",
    "bannerHint": "Cadena de bienvenida que los clientes ven después de conectarse",
    "pasvStart": "Puerto de inicio PASV",
    "pasvStartHint": "Inicio del canal de datos pasivo",
    "customStart": "Inicio personalizado",
    "pasvEnd": "Puerto final PASV",
    "pasvEndHint": "Debe ser ≥ inicio; El firewall debe permitir el rango.",
    "openFirewallPage": "Abrir página de firewall",
    "customEnd": "Final personalizado",
    "pasvPublicIp": "IP pública PASV",
    "detectPublicIp": "Detectar IP pública",
    "detectPublicIpTitle": "Complete el primer IPv4 sin bucle invertido de este host",
    "pasvPublicIpHint": "NAT/nube: establecer IP pública; local puede dejar vacío",
    "pasvIpRequired": "Defina una IP pública PASV antes de aplicar (NAT/nube). Detecte o escriba una dirección.",
    "optionalEmpty": "(opcional)",
    "securityTitle": "Configuraciones de seguridad",
    "securityDesc": "TLS, acceso de escritura, chroot; Aplicar y reiniciar para que surta efecto.",
    "sslCertDomain": "dominio certificado SSL",
    "sslCertDomainHint": "Elija un dominio de certificado cargado/emitido",
    "enableFtps": "Habilitar FTPS (SSL/TLS)",
    "enableFtpsDesc": "TLS en el canal de control; recomendado",
    "forceTlsLogin": "Forzar inicio de sesión TLS",
    "forceTlsLoginDesc": "Rechazar FTP simple; los clientes necesitan FTPS",
    "allowWriteDesc": "Desactivado = descargar/listar únicamente",
    "chrootUsers": "usuarios de chroot",
    "chrootUsersDesc": "Cárcel a casa después de iniciar sesión",
    "writableChroot": "Permitir chroot grabable",
    "writableChrootDesc": "Mantenga chroot incluso cuando se pueda escribir en casa (necesidad común de vsftpd)",
    "settingsSaved": "Configuración guardada",
    "installIncomplete": "La instalación no se pudo completar",
    "ftpsReady": "Listo para FTPS",
    "settingsApplied": "Configuración aplicada",
    "opsResult": "resultado de operaciones",
    "saved": "Guardado",
    "accountsList": "lista de cuentas",
    "accountsListDesc": "Después de crear, Aplicar para sincronizar vsftpd. Si falta el servicio, instálelo arriba y luego",
    "startService": "comenzar.",
    "createAccountPlus": "+ Crear cuenta",
    "noFtpAccounts": "Aún no hay cuentas FTP",
    "noFtpAccountsDesc": "Crear cuenta (lista arriba a la derecha); establezca el hogar y el dominio, luego aplique.",
    "applyHint": "Nota: Aplicar sólo gestión de escrituras; La escucha necesita vsftpd activo.",
    "sshdMatchNote": "; El sistema sshd Match debe configurarse para que surta efecto.",
    "addPubkeyPlus": "+ Agregar clave pública",
    "noPubkeys": "No hay claves públicas registradas",
    "pickDomain": "- elegir dominio -",
    "currentDomain": "{{domain}} (actual)",
    "pickHome": "- elige casa -",
    "currentHome": "{{path}} (actual)",
    "fullPath": "Ruta completa:",
    "emptyHomes": "Si la lista está vacía, primero cree un proyecto o sitio para las opciones de inicio.",
    "pickAccount": "- elegir cuenta -",
    "installFtpsBanner": "Utilice el banner de arriba para instalar FTPS y luego inicie el servicio.",
    "applyRestart": "Aplicar y reiniciar",
    "afterInstall": "Después de la instalación, puede iniciar sesión con cuentas FTPS. Se necesitan derechos de administrador para instalar.",
    "saveSettings": "Guardar configuración",
    "saveApplyHint": "Guardar panel de actualizaciones únicamente; Aplicar y reiniciar escribe vsftpd.conf y recarga.",
    "installAndStart": "Instalar y comenzar",
    "manageAccounts": "Cuentas",
    "openFirewallPorts": "Abrir puertos de firewall",
    "firewallPortsApplied": "Cortafuegos permitido TCP {{ports}}",
    "sftpTabDesc": "Registre claves públicas SSH para cuentas FTP para que los clientes puedan utilizar el inicio de sesión con clave SFTP. Elija una cuenta, pegue una línea clave y luego guárdela.",
    "sftpNeedAccountTitle": "Aún no hay cuentas FTP",
    "sftpNeedAccount": "Primero cree al menos una cuenta FTP y luego registre una clave pública para ese usuario.",
    "sftpFilterLabel": "Cuenta",
    "sftpFilterAll": "Todas las cuentas",
    "sftpKeyCount": "{{count}} tecla(s)",
    "sftpEmptyFiltered": "No hay claves para esta cuenta",
    "sftpEmptyFilteredDesc": "“{{user}}” aún no tiene claves públicas SSH registradas.",
    "sftpRegister": "Clave de registro",
    "sftpAddedAt": "Añadido {{time}}",
    "sftpTechSummary": "Detalles técnicos (avanzado)",
    "sftpTechNote": "Las claves se escriben en la ruta administrada.",
    "filterProject": "Solo cuentas FTP de este proyecto",
    "clearProjectFilter": "Mostrar todas las cuentas",
    "vsftpdFailedHint": "vsftpd falló. Abra la pestaña Servicio (escuchar y escuchar_ipv6 no pueden ser ambos SÍ).",
    "vsftpdFailedGeneric": "vsftpd falló. Abra la pestaña Servicio para configuración en vivo y diario.",
    "stateFailed": "No se pudo iniciar",
    "tabService": "Servicio"
  },
  "geo": {
    "continents": {
      "AS": "Asia",
      "EU": "Europa",
      "NA": "América del norte",
      "SA": "Sudamerica",
      "AF": "África",
      "OC": "Oceanía",
      "AN": "Antártida"
    },
    "countries": {
      "CN": "Porcelana",
      "HK": "Hong Kong",
      "MO": "macao",
      "TW": "Taiwán",
      "JP": "Japón",
      "KR": "Corea del Sur",
      "KP": "Corea del Norte",
      "SG": "Singapur",
      "MY": "Malasia",
      "TH": "Tailandia",
      "VN": "Vietnam",
      "PH": "Filipinas",
      "ID": "Indonesia",
      "IN": "India",
      "AU": "Australia",
      "NZ": "Nueva Zelanda",
      "US": "Estados Unidos",
      "CA": "Canadá",
      "MX": "México",
      "BR": "Brasil",
      "AR": "Argentina",
      "GB": "Reino Unido",
      "IE": "Irlanda",
      "DE": "Alemania",
      "FR": "Francia",
      "NL": "Países Bajos",
      "BE": "Bélgica",
      "CH": "Suiza",
      "AT": "Austria",
      "SE": "Suecia",
      "NO": "Noruega",
      "DK": "Dinamarca",
      "FI": "Finlandia",
      "PL": "Polonia",
      "CZ": "Chequia",
      "ES": "España",
      "PT": "Portugal",
      "IT": "Italia",
      "RU": "Rusia",
      "UA": "Ucrania",
      "TR": "Pavo",
      "IL": "Israel",
      "AE": "UAE",
      "SA": "Arabia Saudita",
      "EG": "Egipto",
      "ZA": "Sudáfrica",
      "NG": "Nigeria",
      "PK": "Pakistán",
      "BD": "Bangladesh",
      "IR": "Irán",
      "IQ": "Irak",
      "RO": "Rumania",
      "BG": "Bulgaria",
      "HU": "Hungría",
      "GR": "Grecia",
      "LT": "Lituania",
      "LV": "Letonia",
      "EE": "Estonia",
      "BY": "Bielorrusia",
      "KZ": "Kazajstán",
      "UZ": "Uzbekistán",
      "CL": "Chile",
      "CO": "Colombia",
      "PE": "Perú",
      "VE": "Venezuela",
      "CU": "Cuba",
      "SC": "Seychelles",
      "PA": "Panamá"
    },
    "regions": {
      "CN-BJ": "Pekín",
      "CN-SH": "Llevar a la fuerza",
      "CN-TJ": "Tianjín",
      "CN-CQ": "Chongqing",
      "CN-GD": "Cantón",
      "CN-ZJ": "Zhejiang",
      "CN-JS": "Jiangsu",
      "CN-SD": "Shandong",
      "CN-HN": "Henán",
      "CN-HB": "Hubei",
      "CN-HU": "hunan",
      "CN-SC": "Sichuan",
      "CN-HE": "hebei",
      "CN-FJ": "fujián",
      "CN-AH": "Anhui",
      "CN-JX": "Jiangxi",
      "CN-LN": "Liaoning",
      "CN-JL": "Jilín",
      "CN-HL": "Heilongjiang",
      "CN-SX": "Shanxi",
      "CN-SN": "Shaanxi",
      "CN-GS": "Gansu",
      "CN-QH": "Qinghai",
      "CN-HA": "Hainan",
      "CN-YN": "Yunnan",
      "CN-GZ": "Guizhou",
      "CN-GX": "Guangxi",
      "CN-NX": "Ningxia",
      "CN-XJ": "Sinkiang",
      "CN-XZ": "Tíbet",
      "CN-NM": "Mongolia Interior",
      "TW-TPE": "Taipéi",
      "TW-TXG": "Taichung",
      "TW-KHH": "Kaohsiung",
      "HK-HK": "Hong Kong",
      "MO-MO": "macao",
      "US-CA": "CA",
      "US-NY": "NY",
      "US-TX": "TX",
      "US-FL": "FL",
      "US-WA": "WA",
      "US-IL": "IL",
      "US-VA": "VA",
      "US-OR": "OR",
      "US-GA": "GA",
      "US-NJ": "NJ",
      "US-MA": "MA",
      "US-OH": "OH",
      "US-PA": "PA",
      "US-AZ": "AZ",
      "US-CO": "CO",
      "US-NC": "NC",
      "US-MI": "MI",
      "US-NV": "NV",
      "JP-13": "Tokio",
      "JP-27": "Osaka",
      "JP-14": "Kanagawa",
      "JP-23": "Aichi",
      "KR-11": "Seúl",
      "KR-26": "Busán",
      "SG-01": "SG",
      "AU-NSW": "NSW",
      "AU-VIC": "VIC",
      "GB-ENG": "ENG",
      "DE-BE": "BE",
      "DE-BY": "BY",
      "RU-MOW": "MOW",
      "RU-SPE": "SPE"
    }
  },
  "hostBrowse": {
    "tabBrowse": "Navegar",
    "subtitle": "Navegue por Internet o LAN a través de este host. Los objetivos nunca ven la identidad de su navegador de escritorio.",
    "modeInternet": "Internet",
    "modeIntranet": "Intranet",
    "modeHint": "Internet bloquea IP privadas; La intranet permite objetivos LAN. Ambos bloquean los metadatos de la nube.",
    "urlPlaceholder": "https://ejemplo.com o 192.168.1.1",
    "go": "Ir",
    "back": "Atrás",
    "forward": "Adelante",
    "reload": "Recargar",
    "stop": "Detener",
    "clearCookies": "Borrar cookies",
    "clearCookiesConfirm": "Esto borra las cookies almacenadas en el host para esta sesión de navegación. Los sitios en los que se inició sesión deberán volver a iniciar sesión.",
    "closeSession": "Cerrar sesión",
    "copyUrl": "Copiar URL",
    "newSession": "Nueva sesión",
    "privacyOn": "Privacidad en",
    "viaHost": "a través del anfitrión",
    "emptyTitle": "Navegación mediada por el host",
    "emptyBody": "Introduzca una URL. DNS, TLS y salida utilizan este servidor, no su navegador. Las cookies permanecen en un frasco del lado del servidor.",
    "needUrl": "Escriba una URL arriba para iniciar una sesión.",
    "ssrfBlocked": "Bloqueado por política de seguridad (SSRF/modo)",
    "loadFailed": "La recuperación falló en el host",
    "sessionReady": "Sesión lista",
    "noSession": "Sin sesión",
    "statusLine": "{{status}} · {{ms}}ms · {{type}} · vía host",
    "cookies": "Galletas",
    "latency": "Estado latente",
    "locked": "HTTPS",
    "insecure": "HTTP",
    "loading": "Cargando…",
    "modeSwitchHint": "El modo de cambio abre una nueva sesión y borra las cookies.",
    "copied": "URL copiada",
    "downloadHint": "Respuesta no HTML: abra el marco de contenido o navegue nuevamente.",
    "engineLabel": "Motor",
    "engineProxy": "Apoderado",
    "engineBrowser": "navegador real",
    "engineSwitchHint": "Cambiar de motor abre una nueva sesión.",
    "needChrome": "El navegador real necesita el sistema Chrome/Chromium (o configurar YSK_HOST_BROWSE_CHROME). Usar proxy de lo contrario.",
    "engineBrowserNeedChrome": "Navegador real (Chrome no instalado)",
    "egressHint": "El sitio de destino ve la dirección de salida de este servidor ({{host}}), no su computadora portátil. Las cookies permanecen en el frasco de sesión del servidor.",
    "needChromeFallback": "Chrome no está disponible: se cambió al motor proxy.",
    "liveError": "Error en la transmisión en vivo",
    "liveWaiting": "Conectando el navegador host…",
    "tabSettings": "Ajustes",
    "softwareNeeded": "Se requiere Chromium/Chrome para el motor de navegador real",
    "softwareHint": "Con un solo clic instala la distribución Chromium a través de apt. El binario de Google Chrome también se detecta si ya está presente. Requiere raíz + YSK_EXECUTE=1.",
    "closeNoSession": "Aún no hay sesión",
    "goInstallChrome": "Abrir pestaña Software",
    "settingsIntro": "Estas configuraciones del panel anulan las variables de entorno del proceso para Host Browse.",
    "settingsEngine": "Motor predeterminado",
    "engineAuto": "Auto",
    "settingsChromePath": "Ruta de cromo/cromo",
    "settingsChromePathHint": "Vacío = detección automática. Ejemplo: /usr/bin/google-chrome",
    "settingsLoopback": "Permitir loopback en modo intranet (127.0.0.1)",
    "settingsNoSandbox": "Cromo: sin caja de arena (solo contenedores)",
    "settingsSave": "Guardar configuración",
    "settingsSaved": "Configuración de exploración del host guardada",
    "envHintsTitle": "Entorno de proceso (solo lectura; la configuración del panel tiene prioridad cuando se establece)",
    "stream": {
      "label": "Calidad",
      "smooth": "Liso",
      "balanced": "Equilibrado",
      "sharp": "Afilado"
    },
    "zoom": {
      "label": "Zoom",
      "fit": "Adaptar",
      "fill": "Llenar"
    },
    "retryNav": "Reintentar navegación",
    "retryLive": "Reconectar la transmisión",
    "tryProxy": "Cambiar al motor proxy",
    "err": {
      "LIVE_NO_FRAME": "Se agotó el tiempo de transmisión: no se recibieron fotogramas. Vuelva a conectarse o reintente la navegación.",
      "LIVE_WS_FAIL": "La conexión en vivo falló. Vuelva a conectar la transmisión.",
      "SSRF_BLOCKED": "Destino bloqueado por política de seguridad.",
      "BOT_CHALLENGE": "Target puede requerir verificación humana o automatización de bloques. Completa el desafío en pantalla si se muestra.",
      "TIMEOUT": "Se agotó el tiempo de carga. Vuelva a intentarlo.",
      "DNS_FAIL": "La resolución de DNS falló.",
      "TLS_FAIL": "Error en la conexión TLS/SSL.",
      "NAV_FAIL": "La navegación falló.",
      "CHROME_LAUNCH": "No se pudo iniciar el host Chromium. Verifique la configuración de instalación y sin zona de pruebas.",
      "SESSION_GONE": "La sesión expiró. Navega de nuevo.",
      "NEED_CHROME": "Se requiere cromo/cromo."
    },
    "home": "Hogar",
    "bookmark": "Marcador",
    "bookmarkAdd": "Agregar o eliminar marcador",
    "bookmarkList": "Lista de favoritos",
    "bookmarks": "Marcadores",
    "history": "Historia",
    "bookmarkToggled": "Marcador actualizado",
    "newTab": "Nueva pestaña",
    "fullscreen": "Pantalla completa",
    "mediaNote": "Navegador real: se transmite vídeo; el audio aún no está puenteado al panel (fase 2).",
    "isolationNote": "El navegador real crea un usuario efímero de Linux para Chrome; abandonar la página o el tiempo de inactividad destruye a ese usuario.",
    "resumeHint": "Reanudar sesión anterior ({{count}} pestañas)",
    "resumeHintDetail": "Reanudar sesión anterior ({{count}} pestañas) · {{url}} · {{when}}",
    "resumeHintOwned": "Reanudar la última búsqueda para {{user}} (pestañas {{count}}) · {{url}} · {{when}}",
    "clearSessionData": "Borrar datos de sesión",
    "clearSessionConfirm": "Esto descarta la instantánea del currículum de la sesión de exploración anterior. No puedes restaurar esas pestañas después.",
    "resume": "Reanudar",
    "resumeDismiss": "Despedir",
    "resumeDone": "Sesión reanudada",
    "settingsSafety": "Seguridad de la navegación",
    "settingsSafetyHint": "Bloqueos estrictos de hosts más riesgosos; Relajado permite objetivos de intranet más amplios. No deshabilita las protecciones SSRF para metadatos en la nube.",
    "safetyStrict": "Estricto",
    "safetyStandard": "Estándar",
    "safetyRelaxed": "Relajado",
    "settingsBlockHosts": "Sufijos de host bloqueados",
    "settingsBlockHostsHint": "Un nombre de host o sufijo por línea (por ejemplo, malware.test). Se bloquean las coincidencias exactas y de sufijos.",
    "settingsAllowDangerousDownloads": "Permitir descargas de alto riesgo (exe/scripts)",
    "settingsAudioBridge": "Puentear el audio de la página al panel.",
    "settingsAudioBridgeHint": "Transmite audio de Chrome del host a este navegador. Algunos sitios necesitan un clic para desbloquear la reproducción.",
    "downloads": "Descargas",
    "downloadsEmpty": "No hay descargas en esta sesión",
    "downloadReady": "Listo",
    "downloadBlocked": "Obstruido",
    "downloadPending": "Pendiente",
    "downloadFailed": "Fallido",
    "downloadSave": "Ahorrar",
    "audioUnlock": "Habilitar sonido",
    "audioUnlockHint": "Haga clic para desbloquear la reproducción de audio en esta pestaña",
    "audioUnlocked": "Audio desbloqueado",
    "audioPlaying": "Reproducción de audio",
    "audioNeedsUnlock": "El audio necesita desbloquearse",
    "audioBridgedHint": "El audio de la página se conecta desde el navegador del host.",
    "audioNotBridged": "Audio apagado",
    "audioNotBridgedHint": "Activa el puente de audio en Configuración para escuchar la página",
    "mediaPolicyTitle": "Medios en navegador real",
    "mediaVideoLabel": "Video",
    "mediaVideoDesc": "Renderizado en el host y transmitido como fotogramas al panel.",
    "mediaAudioLabel": "Audio",
    "mediaAudioDesc": "Puente opcional desde el host Chrome; Es posible que sea necesario hacer clic en desbloquear.",
    "mediaPolicyLabel": "Política",
    "mediaPolicyDesc": "Las descargas y la reproducción automática siguen las configuraciones de seguridad y descarga anteriores.",
    "frameBlocked": "La página no se pudo mostrar en el marco del panel.",
    "historyEmpty": "No hay antecedentes en esta sesión.",
    "bookmarksEmpty": "Aún no hay marcadores.",
    "closeSessionHint": "Borra las cookies para esta sesión de navegación. Los marcadores permanecen.",
    "envUnset": "no establecido",
    "envPanelValue": "panel: {{value}}",
    "envColVar": "Variable",
    "envColHost": "Proceso del host",
    "envColPanel": "Ajuste del panel",
    "envColEffective": "Efectivo",
    "settingsNoSandboxWarn": "Desactiva la zona de pruebas de Chromium. Úselo únicamente dentro de un contenedor confiable. Se aplica en la próxima sesión del navegador real.",
    "settingsDangerDlWarn": "Permite descargas de ejecutables y scripts a través del navegador del host. Confirma que necesitas esto.",
    "settingsDangerConfirmTitle": "¿Habilitar una configuración de navegación de alto riesgo?"
  },
  "legal": {
    "hubTitle": "Legal",
    "hubSub": "Términos de uso, política de privacidad y descargo de responsabilidad de YSK Server",
    "terms": "Términos de uso",
    "privacy": "Política de privacidad",
    "disclaimer": "Descargo de responsabilidad",
    "updated": "Última actualización {{date}}",
    "englishPrevails": "Idiomas oficiales: inglés y chino escrito de Hong Kong. Si difieren, prevalece el inglés.",
    "notOfficialLocale": "El idioma de la interfaz no es un idioma jurídico oficial. El texto vinculante es inglés salvo que lo cambie.",
    "officialLang": "Texto oficial",
    "officialEn": "Inglés",
    "officialZh": "繁體中文（香港）",
    "signIn": "Iniciar sesión",
    "mitNote": "El código fuente está bajo licencia MIT. Estas páginas son condiciones adicionales de uso.",
    "backToIndex": "Todos los documentos legales"
  },
  "listToolbar": {
    "searchPlaceholder": "Buscar…",
    "searchAria": "Lista de búsqueda",
    "clearSearch": "Borrar búsqueda",
    "clearAll": "Limpiar filtros",
    "resultCount": "{{count}} resultados",
    "showingOf": "Mostrando {{shown}} de {{total}}",
    "activeFilters": "{{count}} filtros activos",
    "noResults": "No hay coincidencias",
    "noResultsHint": "Pruebe con otra palabra clave o borre los filtros.",
    "searching": "Búsqueda…",
    "emptyChip": "No hay elementos en este filtro"
  },
  "logViewer": {
    "banIpTitle": "Prohibición {{ip}} en Protección",
    "filter": "Filtrar",
    "filterPh": "Palabra clave",
    "levels": "Niveles",
    "wrap": "Envoltura",
    "follow": "Seguir",
    "download": "Descargar",
    "nextError": "Siguiente error",
    "prevError": "Error anterior",
    "lines": "{{n}} líneas",
    "shown": "{{n}} mostrado",
    "errors": "Errar {{n}}",
    "warnings": "Advertir {{n}}",
    "all": "Todo",
    "empty": "Sin líneas de registro"
  },
  "login": {
    "title": "Iniciar sesión en YSK Server",
    "subtitle": "Consola del servidor",
    "username": "Usuario",
    "password": "Contraseña",
    "submit": "Iniciar sesión",
    "failed": "Error al iniciar sesión. Compruebe el usuario o la contraseña.",
    "footer": "Un producto de YSK Limited",
    "totpRequired": "Esta cuenta tiene 2FA. Introduzca el código de 6 dígitos.",
    "totpLabel": "Código de autenticación",
    "totpHint": "Código de 6 dígitos de su aplicación de autenticación",
    "submitting": "Iniciando sesión…",
    "sessionExpired": "La sesión caducó; inicie sesión de nuevo",
    "newPassword": "Nueva contraseña",
    "newPasswordAgain": "Confirmar nueva contraseña",
    "changePassword": "Cambiar contraseña",
    "passwordMismatch": "Las contraseñas no coinciden",
    "passwordChanged": "Contraseña actualizada"
  },
  "logs": {
    "catSystem": "Archivos del sistema",
    "catMail": "Correo",
    "catSecurity": "Seguridad",
    "catApp": "Aplicación",
    "catOther": "Otro",
    "journalService": "unidad de diario",
    "unavailable": "Indisponible",
    "compressed": "· comprimido",
    "noLogFileYet": "(aún no hay archivo de registro)",
    "afterDeploy": "Aparece después de la implementación",
    "logsLoaded": "Registros cargados",
    "sseFailed": "La SSE fracasó y volvió a las urnas",
    "sseInterrupted": "SSE interrumpido",
    "settingsSaved": "Configuración guardada",
    "exportedJsonl": "JSONL exportado",
    "exported": "Exportado",
    "bookmarkSaved": "Marcador guardado",
    "title": "Centro de registro",
    "fullAccess": "Acceso completo",
    "nonRoot": "No raíz",
    "noExecute": "Sin EJECUTAR",
    "error": "Error",
    "projectLog": "Registros de proyecto",
    "filesCount": "{{count}} archivo(s)",
    "tabExplore": "Explorar",
    "tabMaint": "Mantenimiento",
    "tabSettings": "Ajustes",
    "tabAbout": "Acerca de",
    "sources": "Fuentes de registro",
    "filterPlaceholder": "Unidad de filtrado/archivo…",
    "filterSources": "Filtrar fuentes",
    "noProjectLogs": "No hay registros de proyecto: aparecen después de la implementación",
    "noMatchSources": "No hay fuentes coincidentes",
    "projectPrefix": "Proyecto ·",
    "timeRange": "Rango de tiempo",
    "unlimited": "Ilimitado",
    "priority": "Prioridad",
    "all": "Todo",
    "keywordIp": "Palabra clave/IP…",
    "custom": "Costumbre",
    "copied": "Copiado",
    "truncated": "· truncado",
    "following": "· siguiente",
    "followingSse": "· siguiente (SSE)",
    "loadingSources": "Cargando fuentes…",
    "pickSource": "Elija una fuente a la izquierda o un acceso directo · luego Consulta",
    "noRowsInWindow": "No hay registros en esta ventana de tiempo",
    "showInactiveUnits": "Mostrar unidades inactivas",
    "sseNeedFollow": "Active Seguir primero: SSE es solo para cola en vivo",
    "maintOverview": "Resumen de mantenimiento",
    "executable": "Ejecutable",
    "restricted": "Restringido",
    "needRootExecute": "Necesita root+EJECUTAR",
    "retention": "Retención",
    "retentionHint": "p.ej. 7 días · 14 días · 30 días",
    "defaultLines": "Líneas predeterminadas",
    "followInterval": "Seguir intervalo",
    "maxBytes": "Bytes máximos",
    "maskSecrets": "Secretos de la máscara",
    "defaultVacuumDays": "Días de vacío predeterminados",
    "d7": "7 dias",
    "d14": "14 dias",
    "d30": "30 dias",
    "d90": "90 dias",
    "journalAlerts": "Alertas de diario",
    "autoVacuum": "vacío automático",
    "deleted": "Eliminado",
    "bookmarkDeleted": "Marcador eliminado",
    "opsResult": "resultado de operaciones",
    "saveBookmark": "Guardar marcador",
    "bookmarkNamePrompt": "Nombre de la consulta actual",
    "query": "Consulta",
    "follow": "Seguir",
    "export": "Exportar",
    "vacuum": "Vacío",
    "loadFailed": "No se pudo cargar",
    "projectLogsLink": "Proyecto → Registros",
    "projectLogsDesc": "— acceso directo por sitio + enlace profundo",
    "queryFollow": "Consulta y sigue",
    "queryFollowDesc": "Líneas predeterminadas, intervalo de seguimiento, límite de respuesta en Explorar",
    "retentionAlerts": "Retención y alertas",
    "retentionAlertsDesc": "valores predeterminados de vacío, alertas de disco de diario, limpieza automática de ventanas",
    "dailyNeedRoot": "Diariamente (necesita root + EJECUTAR)",
    "customAllow": "Rutas de permiso personalizadas",
    "customAllowDesc": "Sólo /var/log o /run/log · rechazar .ssh, claves, /etc",
    "pathsCount": "{{n}} ruta(s)",
    "noCustomPaths": "Aún no hay rutas personalizadas",
    "bookmarks": "Marcadores",
    "bookmarksDesc": "Filtros comunes de exploración; open cambia a Explorar y aplica la fuente",
    "noBookmarks": "Sin marcadores: consulta en Explorar y luego guarda el marcador",
    "settingsWriteNote": "Los ajustes se escriben en la base de datos del panel; El vacío automático comprueba la ventana cada 15 minutos.",
    "saveSettings": "Guardar configuración",
    "vacuumDaysQ": "¿Tiempo de vacío {{days}}?",
    "vacuumSizeQ": "¿Tamaño del vacío 500M?",
    "vacuumDesc": "Journalctl Vacuum elimina los registros antiguos de forma permanente.",
    "vacuumRequested": "Vacío solicitado",
    "vacuumSizeRequested": "Tamaño de vacío solicitado",
    "scLogs": "Observar diario/archivos/proyectos",
    "scProtection": "Respuesta a incidentes, prohibición automática (haga clic en IP)",
    "shortcuts": "Atajos",
    "projectsOnly": "Solo proyectos",
    "filesTitle": "{{n}} archivo(s)",
    "bookmarksLabel": "Marcadores",
    "filter": "Filtrar",
    "followSec": "Seguir {{sec}}s",
    "wrap": "Envoltura",
    "bookmark": "Marcador",
    "standby": "Inactivo",
    "partialFail": "Parcial/fallido",
    "lines": "{{n}} líneas",
    "followingSseDyn": "· siguiente{{sse}}",
    "ipBan": "IP → prohibición",
    "vacuumNote": "Disco systemd-journal gratuito. Sin EJECUTAR → bloqueado, sin éxito falso.",
    "vacuumTime": "tiempo de vacío",
    "vacuumNeedRetention": "Introduzca primero una ventana de retención (p. ej. 14d)",
    "vacuumNeedConfirm": "Requiere confirmación — borra journal antiguos",
    "vacuumSizeNeedConfirm": "Requiere confirmación — limita el disco de journal",
    "vacuumHint": "Mantener ≥7 días recomendados; Vuelva a sondear el disco después.",
    "logrotateStatus": "Estado de logrotate del sistema (sonda de solo lectura)",
    "logrotateMissing": "Sin archivo de estado o ilegible: verifique el paquete logrotate en la matriz de servicios",
    "relatedOps": "Operaciones relacionadas",
    "relatedOpsDesc": "Observación de registros versus respuesta a incidentes",
    "scLogsLine": "Observar diario/archivos/proyectos",
    "scProtLine": "Respuesta a incidentes, prohibición automática (haga clic en IP)",
    "journalVacuumTitle": "vacío diario",
    "journalSection": "Diario",
    "sseLabel": "SSE",
    "logrotateLabel": "logrotate",
    "srcNginx": "nginx",
    "srcSsh": "ssh",
    "srcfail2ban": "falla2ban",
    "srcFail2ban": "falla2ban",
    "srcAuthLog": "auth.log",
    "srcNginxError": "error de nginx",
    "srcLetsEncrypt": "vamos a cifrar",
    "groupJournal": "Diario",
    "groupVarLog": "/var/log",
    "prioErr": "errar+",
    "prioWarn": "advertir+",
    "prioInfo": "información+",
    "vacuumSize": "Límite a 500 MB",
    "logrotateNoStatus": "Aún no hay ningún archivo de estado de logrotate (normal si nunca se ha ejecutado).",
    "autoVacuumOff": "La limpieza automática está desactivada. El tiempo no se utiliza hasta que lo habilites.",
    "aboutAllowlist": "Explore solo puede leer unidades de diario incluidas en la lista permitida y rutas /var/log. No se ofrecen rutas de host arbitrarias.",
    "aboutCustomPath": "Agregue una ruta personalizada en Configuración (solo /var/log o /run/log). Luego ábrelo desde Explorar.",
    "vacuumSizeAlreadyBelow": "El uso actual ya está bajo el tope; normalmente no borra nada.",
    "vacuumSizeNoopDesc": "El journal ya está bajo 500 MB. Aun así ejecuta vacuum --size=500M y normalmente no borra nada.",
    "journalDiskHint": "Uso actual de systemd-journald (journal activo). No incluye rotados en /var/log.",
    "varLogDiskHint": "Estimación de /var/log, incluidos rotados.",
    "queryFirst": "Consulte primero",
    "errorsWindowHint": "Errores recientes de la última sonda de descripción general (no se actualizan en vivo cuando cambia de pestaña)",
    "sourceCount": "{{shown}} mostrado",
    "sourceUnavailable": "Esta fuente aún no ha producido un registro.",
    "sourceNoLog": "Aún no hay registro",
    "projectSourcesTitle": "{{n}} origen(es) (archivos + journal)",
    "logrotatePath": "Camino",
    "logrotateLast": "Última rotación",
    "exportJsonl": "Exportación JSONL",
    "sseLive": "(transmisión en vivo)",
    "logrotateExpand": "Mostrar {{n}} más",
    "logrotateCollapse": "Mostrar menos",
    "logrotateVersion": "Versión de estado {{v}}"
  },
  "metrics": {
    "alert": {
      "memory_high": "Memoria alta",
      "load_high": "Carga alta",
      "disk_high": "Disco alto"
    },
    "loadFailed": "No se pudieron cargar las métricas",
    "projectUsageFailed": "No se pudo cargar el uso del proyecto",
    "procListFailed": "Error en la lista de procesos",
    "streamEnded": "Transmisión finalizada ({{reason}})",
    "streamOpenFailed": "No se pudo abrir la transmisión",
    "signalFailed": "Señal fallida",
    "detailFailed": "No se pudieron cargar los detalles",
    "alertCount": "{{count}} alerta(s)",
    "attention": "necesita atencion",
    "normal": "OK",
    "disk": "Disco",
    "alerts": "Alertas",
    "auto5s": "5 automáticos",
    "hostSettings": "Configuración del anfitrión",
    "loading": "Cargando métricas…",
    "tabs": {
      "overview": "Descripción general",
      "live": "Procesos en vivo",
      "disk": "Disco",
      "projectUsage": "Uso del proyecto",
      "alerts": "Alertas"
    },
    "load": "Carga",
    "load1m": "Carga 1m",
    "uptime": "tiempo de actividad",
    "filterCpu5": "≥5 % de CPU",
    "filterMem5": "≥5% de memoria",
    "signalHint": "Seleccione un proceso, luego envíe TERM o KILL.",
    "signalFromRow": "Seleccione este proceso para TERM / KILL",
    "selectForSignal": "Seleccionar",
    "forceKillTitleNamed": "¿MATAR PID {{pid}} ({{cmd}})?",
    "sendSigTitleNamed": "¿Enviar TERM a PID {{pid}} ({{cmd}})?",
    "min1": "1 metro",
    "min5": "5m",
    "min15": "15m",
    "loadHint": "Relativo a {{cpus}} CPU; por encima de 1,0× puede hacer cola.",
    "memory": "Memoria",
    "total": "Total",
    "available": "Disponible",
    "mainDisk": "Disco raíz",
    "path": "Camino",
    "diskReadFail": "No se pudo leer el disco",
    "viewAllMounts": "Ver todos los soportes {{count}} →",
    "nAlerts": "{{count}} alertas",
    "details": "Detalles",
    "noThresholdAlerts": "Sin alertas de umbral de memoria/carga/disco",
    "projectDisk": "Disco de proyecto (real du)",
    "viewAllProjectUsage": "Ver todo el uso del proyecto →",
    "loadProjectDisk": "Cargar el uso del disco del proyecto (real du) →",
    "followSse": "Seguir (SSE)",
    "interval": "Intervalo",
    "sort": "Clasificar",
    "rows": "Filas",
    "onceQuery": "consulta de una sola vez",
    "procSearchPh": "Buscar PID / USUARIO / COMANDO",
    "procSearchAria": "Procesos de búsqueda",
    "filterAll": "Todo",
    "filterMine": "No sistema",
    "selectedN": "{{count}} seleccionado",
    "showOf": "· mostrando {{shown}}/{{total}}",
    "topLoading": "Cargando resumen superior... (/proc/stat muestra dual)",
    "topAria": "resumen superior",
    "perCore": "Por núcleo",
    "noPerCore": "Sin datos por núcleo",
    "uptimeDays": "{{d}} días, {{h}}:{{m}}",
    "used": "Usado",
    "free": "Gratis",
    "signal": "Señal",
    "kill": "Matar",
    "send": "Enviar",
    "procDetail": "Detalle del proceso",
    "refreshProc": "Actualizar procesos",
    "noProcs": "Sin procesos",
    "noProcsFilter": "Ningún proceso coincide con los filtros",
    "mounts": "monturas",
    "fs": "Sistema de archivos",
    "mount": "Montar",
    "size": "Tamaño",
    "usage": "Uso",
    "project": "Proyecto",
    "quota": "Cuota",
    "ratio": "Compartir",
    "unlimited": "Ilimitado",
    "noProjects": "Aún no hay proyectos",
    "noProjectsDesc": "Cree un proyecto para ver el uso real del hogar aquí",
    "usageNote": "Uso del du local (no estimado). La cuota es un límite flexible del plano de control; La cuota establecida rígida necesita aplicarse al host.",
    "thresholdAlerts": "Alertas de umbral",
    "alertsBuiltinOnly": "Umbrales de CPU/memoria/disco integrados únicamente. Sin correo electrónico, webhook ni canal Slack.",
    "lastEvaluated": "Última comprobación",
    "alertsOkTitle": "Todo claro",
    "alertsOkDesc": "No hay alertas de umbral de memoria/carga/disco.",
    "cpu": "CPU",
    "command": "Dominio",
    "user": "Usuario",
    "clearSelection": "Borrar selección",
    "batchSignal": "señal por lotes",
    "liveHint": "Lista de procesos en vivo (SSE o encuesta). Las señales necesitan root + YSK_EXECUTE.",
    "signalTo": "Señal {{sig}} → PID {{pid}}",
    "procAlive": "El proceso sigue vivo (kill -0 ok)",
    "procGone": "Proceso finalizado",
    "procTable": "Procesos ({{count}}{{more}})",
    "procTableDesc": "lista ps · seleccione TERM/KILL (necesita YSK_EXECUTE)",
    "selectAllAria": "Seleccionar todo filtrado",
    "selectPidAria": "Seleccione PID {{pid}}",
    "controlPlane": "Plano de control",
    "controlPlaneNoSignal": "El proceso del plano de control no se puede señalizar",
    "protectedPid": "PID 1 / init / systemd no se puede señalar desde el panel",
    "sigTermTitle": "Enviar SIGTERM (pedir al proceso que salga)",
    "sigKillTitle": "Enviar SIGKILL (muerte forzada, no se puede capturar)",
    "batchTerm": "TERM",
    "batchKill": "KILL",
    "rawTopLabel": "Tapa cruda (sin traducir)",
    "followSseLabel": "Seguir (transmisión en vivo)",
    "alertsReadOnly": "Umbrales de CPU/memoria/disco integrados únicamente. Sin correo electrónico, webhook ni canal Slack.",
    "alertsGoNotifications": "Abrir centro de notificaciones",
    "lastCheck": "último control",
    "rawTopHint": "Salida superior (1) sin traducir",
    "detailShort": "Información",
    "procUnavailable": "No se pudieron obtener los procesos",
    "noProcData": "Aún no hay datos del proceso",
    "noProcFilter": "Ningún proceso coincide con los filtros",
    "clickOnceOrFollow": "Ejecute una consulta única o habilite el seguimiento",
    "liveFootnote": "Como SSH top: /proc/stat muestra dual para %Cpu (por núcleo = top “1”), Mem/Swap, Tareas; tabla de procesos de ps. No es un PTY interactivo. Matar necesita YSK_EXECUTE; El PID 1 y el plano de control están protegidos de forma predeterminada.",
    "forceKillTitle": "Forzar la eliminación de PID {{pid}} (SIGKILL)",
    "sendSigTitle": "Enviar SIG{{sig}} a PID {{pid}}",
    "forceKillDesc": "No se puede atrapar; puede perder datos. Comando: {{cmd}}",
    "termDesc": "El proceso puede limpiarse y salir. Comando: {{cmd}}",
    "forceKillBtn": "Fuerza matar",
    "sendTermBtn": "Enviar PLAZO",
    "procPidTitle": "PID de proceso {{pid}}",
    "readingProc": "Lectura/proceso…",
    "applyRenice": "aplicar renice",
    "reniceHint": "-20 más alto · 19 más bajo (necesita EJECUTAR)",
    "noData": "Sin datos",
    "shareOfMeasured": "{{pct}}% de lo medido",
    "mountsTitle": "Montajes de disco ({{count}})",
    "mountsDesc": "Real df -P -B1 (tmpfs filtrado)",
    "noMounts": "Sin lista de montaje",
    "noMountsDesc": "df no disponible o filtrado. El disco raíz aún está en Descripción general.",
    "seeProjectUsage": "El uso del hogar del proyecto está en la pestaña Uso del proyecto (real du · {{size}})",
    "measuringDu": "Medición de viviendas de proyecto (du)…",
    "projectUsageTitle": "Uso del disco del proyecto ({{count}})",
    "projectUsageDesc": "Real du · total {{total}} · {{at}}",
    "projectUsageDescEmpty": "Ejecute du en cada proyecto home_dir",
    "remeasure": "Volver a medir",
    "usageNoteFull": "Uso del du local (no estimado). La cuota es un límite flexible del plano de control; La cuota establecida rígida necesita aplicarse al host.",
    "sseNeedLogin": "No iniciado sesión; no puedo abrir SSE",
    "sseSessionExpired": "No iniciado sesión o la sesión expiró; no puedo abrir SSE",
    "sseHttpError": "transmitir HTTP {{status}}",
    "colFilesystem": "Sistema de archivos",
    "colMount": "Montar",
    "colSize": "Tamaño",
    "colUsed": "Usado",
    "colAvail": "Disponible",
    "colUsePct": "Usado %",
    "colHome": "Hogar",
    "usageNoteLink": "Cuota flexible del plano de control. Aplique límites estrictos en la pestaña Aislamiento del proyecto.",
    "shareNoQuotaHint": "Sin cuota, la proporción no es un porcentaje. Fíjela en la pestaña Aislamiento del proyecto.",
    "setQuotaLink": "Fijar cuota",
    "unusualHome": "Ruta inusual",
    "unusualHomeHint": "No es una casa de proyecto /home/…. El aislamiento canónico es /home/ysk-server-{id}."
  },
  "migrate": {
    "tabInventory": "Inventario",
    "tabTarget": "Objetivo",
    "tabRun": "Correr",
    "tabDone": "Hecho",
    "refreshFailed": "Error al actualizar",
    "migrateIncomplete": "Migración incompleta",
    "requestFailed": "La solicitud de migración falló",
    "title": "Migración de host completo",
    "subtitle": "Plano de control de fuente → copia completa al nuevo host. Luego solo cambie la IP/DNS pública; las cuentas, los caminos y los proyectos siguen siendo los mismos.",
    "inventorying": "inventariado",
    "inventoried": "inventariado",
    "inventoriedWarn": "Inventario · {{n}} advertencias",
    "inventoriedOrphans": "Inventariado · {{n}} viviendas sobrantes",
    "inventoriedWarnAndOrphans": "Inventario · {{w}} advertencias · {{n}} sobrantes",
    "inventoryFailed": "El inventario falló",
    "pendingInventory": "Inventario pendiente",
    "projects": "Proyectos",
    "mailboxes": "Buzones",
    "users": "Usuarios",
    "software": "Software",
    "jobs": "Empleos",
    "notFound": "Extraviado",
    "wizard": "Asistente de migración",
    "jobLog": "historial laboral",
    "about": "Acerca de",
    "steps": "Pasos de migración",
    "sourceInventory": "Inventario de origen",
    "sourceInventoryDesc": "Escaneo de solo lectura del plano de control y rutas del proyecto; no modifica el sistema",
    "inventoryRunning": "Inventario de este host...",
    "host": "Anfitrión",
    "projectHome": "Proyectos / inicio",
    "needSoftware": "Software para instalar",
    "noInventory": "Aún no hay inventario",
    "noInventoryHint": "Utilice Actualizar (arriba a la derecha) para escanear el estado del host y los trabajos",
    "targetHost": "Anfitrión objetivo",
    "targetHostDesc": "Solo raíz SSH; La contraseña es solo para esta solicitud y no se almacena.",
    "sshTarget": "Objetivo SSH",
    "sshPort": "Puerto SSH",
    "targetDataDir": "Dirdatos de destino",
    "authMethod": "método de autenticación",
    "rootPassword": "Contraseña raíz",
    "notPersisted": "No persistió",
    "passwordNotStored": "La contraseña se utiliza únicamente para esta sesión SSH y no se guarda en el disco.",
    "overwriteDanger": "Sobrescribir reemplazará los datos YSK existentes en el objetivo. Esto no se puede deshacer desde el panel.",
    "outboundIdentity": "Identidad saliente en bóveda",
    "dryRun": "Comprobación previa al funcionamiento en seco",
    "startMigrate": "Iniciar la migración de host completo",
    "needSshTarget": "Introduzca el destino SSH",
    "needMaintWindow": "Verificar ventana de mantenimiento",
    "needRootPassword": "Ingrese la contraseña de root",
    "needRequired": "Complete los campos obligatorios",
    "result": "Resultado de la migración",
    "blocked": "Obstruido",
    "failed": "Fallido",
    "detail": "Detalles",
    "jobsTitle": "Trabajos de migración ({{count}})",
    "jobsDesc": "Estado en dataDir/migrate/;",
    "phase": "Fase",
    "jobPhase": "Trabajo {{id}} · {{phase}}",
    "phaseName": {
      "failed": "Fallido",
      "done": "Hecho",
      "running": "Correr",
      "queued": "En cola",
      "cancelled": "Cancelado"
    },
    "target": "Objetivo",
    "updated": "Actualizado",
    "notes": "Notas",
    "noJobs": "Aún no hay trabajos de migración",
    "noJobsHint": "Los trabajos aparecen después de una ejecución en seco o una migración completa en el asistente.",
    "confirmTitle": "Confirmar la migración de host completo",
    "confirmDesc": "Se sincronizará y arrancará {{target}}",
    "confirmStart": "Confirmar inicio",
    "cancel": "Cancelar",
    "success": "Éxito",
    "unfilledTarget": "(sin objetivo)",
    "restartApiHint": "Si acaba de implementar una nueva versión, reinicie la API (",
    "afterRestart": ") luego Actualizar.",
    "inventoryWarnings": "Advertencias de inventario ({{count}})",
    "orphanHomesHint": "Viviendas sobrantes del proyecto (no en la tienda). Elimínelos solo después de confirmar que no se usaron.",
    "orphanHomesTitle": "Viviendas sobrantes del proyecto ({{count}})",
    "orphanHomesSummary": "{{count}} la(s) ruta(s) del disco no están en la tienda. Primero haga una copia de seguridad si no está seguro, luego elimine las rutas no utilizadas.",
    "orphanColHome": "Hogar",
    "orphanColModified": "Modificado",
    "orphanColEntries": "Entradas",
    "orphanEntries": "{{n}} entradas de nivel superior en el directorio",
    "orphanKpi": "Sobrante",
    "sourceOs": "OS",
    "sourceDataDir": "directorio de datos",
    "sourceDbRedis": "Bases de datos/Redis",
    "sourceDbRedisValue": "{{db}} bases de datos · {{redis}} Redis",
    "orphanRemove": "Quitar los restos de casa",
    "orphanRemoveTitle": "¿Eliminar el proyecto sobrante en casa?",
    "orphanRemoveDesc": "Elimina permanentemente {{path}} del disco. Este no es un proyecto de tienda. Necesita YSK_EXECUTE=1.",
    "orphanRemovePhrase": "Escriba DELETE para confirmar.",
    "orphanRemoveNeedConfirm": "Requiere confirmación",
    "orphanBackupFirst": "Primero haga una copia de seguridad (abra Copias de seguridad)",
    "orphanMtime": "Última modificación {{at}}",
    "expandAllWarnings": "Mostrar todas las advertencias {{n}}",
    "collapseWarnings": "Mostrar menos",
    "moreWarnings": "…y {{n}} más",
    "authPassword": "contraseña de root (cambiar a la clave después de instalar la clave temporal)",
    "authIdentity": "ID de identidad del almacén de identidades SSH",
    "authAgent": "Agente/clave predeterminado local",
    "confirmMaint": "Confirmar ventana de mantenimiento",
    "confirmMaintDesc": "· La fuente se detiene brevemente para un volcado consistente (requerido para una migración real)",
    "allowOverwrite": "Permitir sobrescribir datos YSK existentes en el objetivo",
    "allowOverwriteDesc": "· Requerido si el objetivo ya tiene ysk.json",
    "dryRunOnly": "Sólo funcionamiento en seco",
    "dryRunOnlyDesc": "· Inventario + verificación previa solamente; sin rsync o escrituras de destino",
    "executeNote": "El host necesita YSK_EXECUTE=1 y API raíz. Después de migrar, actualice DNS A/AAAA y verifique el firewall en la nube + PTR de correo.",
    "dnsCutover": "Transferencia de DNS (manual)",
    "dnsCutoverDesc": "Punto A/AAAA para estos nombres a la nueva IP pública;"
  },
  "multiCheck": {
    "customPlaceholder": "código personalizado",
    "searchPlaceholder": "Buscar…",
    "emptyText": "No hay elementos coincidentes",
    "removeTitle": "Haga clic para eliminar",
    "noneSelected": "Nada seleccionado",
    "optionsAria": "Opciones",
    "showingCapped": "Mostrando el primero {{shown}} de {{total}}: use la búsqueda para restringir",
    "add": "Agregar",
    "bulkAria": "Selección masiva",
    "selectAll": "Seleccionar todo",
    "selectAllTitle": "Seleccionar todos los elementos {{n}}",
    "selectFiltered": "Seleccionar filtrado ({{n}})",
    "selectFilteredTitle": "Seleccionar todos los resultados de búsqueda {{n}}",
    "clearAll": "Borrar todo",
    "clearFiltered": "Limpiar filtrado",
    "selectedCount": "{{n}} / {{total}} seleccionado",
    "chipsCollapsed": "{{n}} seleccionado - expandir",
    "chipsCollapse": "Colapsar"
  },
  "nav": {
    "dashboard": "Panel",
    "ai": "Tareas de IA",
    "projects": "Proyectos",
    "security": "Seguridad de la cuenta",
    "email": "Correo electrónico",
    "files": "Archivos",
    "system": "Aplicar el sistema",
    "updates": "Actualizaciones",
    "agents": "Agentes de IA (exp.)",
    "login": "Acceso",
    "logout": "Finalizar la sesión",
    "publicFiles": "Archivos públicos",
    "ftp": "FTPS",
    "ftpService": "FTPS",
    "mysql": "MySQL",
    "mysqlService": "servicio mysql",
    "mariadb": "MariaDB",
    "mariadbService": "servicio mariadb",
    "postgres": "PostgreSQL",
    "postgresService": "Servicio PostgreSQL",
    "redis": "Redis",
    "redisService": "servicio redis",
    "cluster": "Clústeres",
    "dns": "DNS",
    "ssl": "Certificados SSL",
    "nginx": "Nginx",
    "node": "Node.js",
    "php": "PHP",
    "python": "Python",
    "go": "Go",
    "rust": "Rust",
    "protection": "Centro de defensa",
    "firewall": "Cortafuegos",
    "fail2ban": "fail2ban",
    "users": "Usuarios y paquetes",
    "services": "Servicios",
    "metrics": "Métrica",
    "network": "Red",
    "logs": "Centro de registro",
    "cron": "cron",
    "backups": "Copias de seguridad",
    "migrate": "Migración del anfitrión",
    "systemd": "systemd",
    "readiness": "Preparación",
    "systemIndex": "Herramientas del sistema",
    "sections": {
      "overview": "Descripción general",
      "sites": "Cuenta y sitios",
      "mail": "Correo electrónico",
      "files": "Archivos y FTP",
      "databases": "Bases de datos",
      "dnsSsl": "DNS y SSL",
      "runtimes": "Tiempos de ejecución",
      "security": "Seguridad",
      "system": "Sistema",
      "ai": "AI",
      "validators": "Validadores",
      "containers": "Contenedores"
    },
    "java": "Java",
    "kotlin": "Kotlin",
    "bun": "Bun",
    "software": "Software",
    "terminal": "Terminal",
    "hostBrowse": "Explorar anfitrión",
    "cdn": "CDN",
    "vpn": "VPN",
    "vnc": "VNC",
    "apache": "Apache",
    "bookmarkedProjects": "Proyectos marcados",
    "bookmarkedEmailDomains": "Dominios marcados",
    "bookmark": "Fijar a la barra lateral",
    "unbookmark": "Desanclar de la barra lateral",
    "bookmarkPinned": "Fijado",
    "bookmarkAdded": "Fijado en la barra lateral",
    "bookmarkRemoved": "Eliminado de la barra lateral",
    "btTracker": "BT Tracker",
    "support": "Apoyo",
    "noAccessTitle": "Sin acceso",
    "noAccessDesc": "Su rol no incluye esta página. Pida acceso a un administrador si la necesita.",
    "backToDashboard": "Volver al panel",
    "validators": "Validadores (Beta)",
    "docker": "Estibador"
  },
  "network": {
    "title": "Interfaces de red",
    "canMutate": "Mudable",
    "readOnlyBlocked": "Sólo lectura/bloqueado",
    "statIfaces": "Interfaces",
    "statUp": "Arriba",
    "oper": {
      "up": "Arriba",
      "down": "Abajo",
      "unknown": "Desconocido",
      "loopback": "Siempre encendido",
      "loopbackHint": "El loopback siempre está disponible y no se puede cambiar.",
      "other": "Otro"
    },
    "statGateway": "Puerta",
    "pageActions": "Acciones de página",
    "loadingSnap": "Cargando instantánea de red…",
    "mutateHint": "Los cambios se aplican en vivo; puede restablecerse al reiniciar.",
    "cannotMutate": "No se puede cambiar: necesita EXECUTE y root.",
    "tabs": {
      "ifaces": "Interfaces",
      "routes": "Rutas",
      "dns": "DNS",
      "advanced": "Avanzado",
      "about": "Acerca de",
      "realip": "IP real/CDN"
    },
    "ifaceSummary": "{{count}} interfaz(es) · {{up}} ARRIBA",
    "noIfaces": "Sin interfaces",
    "noIfacesDesc": "ip no disponible o sin permiso",
    "colName": "Nombre",
    "colStatus": "Estado",
    "ifaceOps": "{{name}} acciones",
    "routeTable": "tabla de rutas",
    "defaultGw": "Puerta de enlace predeterminada {{gw}}",
    "liveIpRoute": "Ruta IP en vivo",
    "noRoutes": "Sin rutas",
    "colDest": "Destino",
    "addRoute": "Agregar ruta",
    "persistNm": "Guardar en la conexión NetworkManager (sobrevive al reinicio)",
    "ephemeralRoute": "Solo ruta IP activa (puede desaparecer al reiniciar)",
    "destPlaceholder": "predeterminado o 10.0.0.0/8",
    "devOptional": "Desarrollador (opcional)",
    "defaultDev": "Salida predeterminada: {{dev}}",
    "saveNm": "Guardar (NetworkManager, sobrevive al reinicio)",
    "ephemeralHint": "Desmarcado = solo agregar ruta IP en vivo",
    "nmUnavailable": "NetworkManager no se está ejecutando; solo se puede agregar una ruta activa",
    "defaultRouteDownNeedName": "Esta es la ruta de salida predeterminada. Escriba el nombre de la interfaz para confirmar; el panel puede desconectarse.",
    "saveRoute": "guardar ruta",
    "dnsSettings": "Configuración de DNS",
    "dnsNmHint": "Escribe la conexión NM “{{conn}}” y se vuelve a conectar (persistente)",
    "dnsCannotApply": "No se puede aplicar: necesita conexión NM activa + EJECUTAR + raíz",
    "mode": "Modo",
    "connection": "Conexión",
    "source": "Fuente",
    "ignoreAutoDns": "Ignorar-auto-dns actual",
    "ignoreYes": "sí (ignorar DNS DHCP)",
    "ignoreNo": "no (siga DHCP)",
    "nameserverEditHint": "Agregar/eliminar servidores; aplicar escribe NetworkManager y se vuelve a conectar",
    "routerDns": "Enrutador {{dns}}",
    "current": "Actual",
    "serverList": "Lista de servidores",
    "emptyDnsTitle": "Aún no hay servidores DNS",
    "emptyDnsDesc": "Haga clic en \"Agregar servidor\" para comenzar",
    "keepOneRow": "Mantenga al menos una fila (borre y luego elimine)",
    "removeServer": "Eliminar este servidor",
    "searchDomainsPlaceholder": "Opcional, separado por espacios",
    "ignoreDhcpDns": "Ignorar DNS automático de DHCP (ipv4.ignore-auto-dns=yes)",
    "restoreDhcpHint": "“Restaurar DHCP DNS” vuelve al enrutador",
    "noNmConnection": "Sin conexión NM: no editará ciegamente /etc/resolv.conf (sin falso éxito).",
    "needExecuteRoot": "Necesita YSK_EXECUTE=1 y root para escrituras reales.",
    "resolveTest": "resolver prueba",
    "resolveTestDesc": "getent ahosts (resolución local real)",
    "hostname": "Nombre de host",
    "testFailed": "Prueba fallida",
    "stackDetect": "Detección de pila de red local",
    "available": "Disponible",
    "unavailable": "Indisponible",
    "persistNmCap": "Persistente (NM)",
    "ifaceDetail": "Interfaz {{name}}",
    "type": "Tipo",
    "addresses": "Direcciones",
    "noAddresses": "Sin direcciones",
    "ifaceAdjust": "Ajuste de interfaz",
    "addIpTitle": "Agregar IP · {{name}}",
    "saveIp": "Guardar IP",
    "add": "Agregar",
    "cidrPlaceholder": "p.ej. 10.0.0.5/24 o 2001:db8::5/64",
    "saveIpHint": "Escriba la conexión + direcciones ipv4/ipv6 y conéctese",
    "confirmIfaceName": "Escriba el nombre de la interfaz “{{name}}” para confirmar",
    "deleteRouteTitle": "¿Eliminar ruta?",
    "deleteRouteNamed": "¿Eliminar ruta {{dst}}?",
    "deleteRouteBody": "Elimine {{dst}}{{via}}{{dev}} de la tabla de enrutamiento en vivo.",
    "viaGw": "vía {{gw}}",
    "onDev": "en {{dev}}",
    "deleteDefaultWarn": "— eliminar el valor predeterminado puede afectar la conectividad.",
    "alsoRemoveNm": "También eliminar de la conexión NetworkManager (desapareció después del reinicio)",
    "loadFailed": "Error de carga",
    "loadNetworkFailed": "No se pudo cargar la red",
    "on": "En",
    "off": "Apagado",
    "addServer": "Agregar servidor",
    "applyDns": "Aplicar DNS",
    "restoreDhcpDns": "Restaurar DNS DHCP",
    "test": "Prueba",
    "refresh": "Refrescar",
    "hostSettings": "Configuración del anfitrión",
    "protection": "Protección",
    "defaultEgressBadge": "Por defecto",
    "opsAria": "{{name}} acciones",
    "details": "Detalles",
    "addIp": "Agregar IP",
    "reset": "Reiniciar",
    "ephemeralOnly": "vivir solo",
    "saveRouteHint": "Guardar escribe conexión NM + conexión activada;",
    "deleteShort": "Del",
    "resetForm": "Restablecer formulario",
    "applyDnsNotes": "Aplicar ejecuta la conexión nmcli modificar + arriba; Una breve desconexión es normal. El código auxiliar 127.0.0.53 no está escrito (resuelto localmente).",
    "testResolve": "resolución de prueba",
    "loadRaw": "Cargar salida sin procesar",
    "hideRaw": "Ocultar salida sin procesar",
    "rawLoadedAt": "Cargado {{time}}",
    "confirmDown": "Confirmar abajo",
    "linkDownTitle": "Desconecta {{name}}",
    "linkDownNeedConfirm": "Escriba el nombre de la interfaz para confirmar",
    "defaultRouteDownWarn": "Esta interfaz es la ruta de salida predeterminada; hacia abajo puede cortar el acceso al panel.",
    "deleteDefaultMayDrop": "— eliminar el valor predeterminado puede afectar la conectividad.",
    "deleteDefaultPanelWarn": "Eliminar la ruta predeterminada puede cancelar esta sesión del panel. Escriba DEFAULT para confirmar.",
    "deleteDefaultNeedConfirm": "Requiere confirmación — escriba DEFAULT (puede cortar este panel)",
    "deleteRouteNeedConfirm": "Requiere confirmación",
    "typeDefaultToConfirm": "Escriba DEFAULT para confirmar",
    "gateway": "Puerta",
    "nameservers": "Servidores de nombres",
    "searchDomains": "Buscar dominios",
    "backend": "backend",
    "cidr": "CIDR",
    "realip": {
      "title": "CDN/IP de cliente real",
      "desc": "Restaurar la IP del visitante detrás de CDN; Confíe únicamente en CIDR de borde.",
      "provider": "Proveedor predeterminado",
      "providerHint": "ninguno = origen directo; elija CDN cuando esté detrás del borde.",
      "mode": "Modo de confianza",
      "modeSingle": "Encabezado de proveedor único (recomendado)",
      "modeXff": "X-Forwarded-For + CDN CIDR fusionados",
      "customCidrs": "CIDR extra confiables",
      "customCidrsHint": "Un CIDR por línea.",
      "lastRefresh": "Última actualización de CIDR",
      "active": "Valor predeterminado activo",
      "republishHint": "Vuelva a publicar el proyecto Nginx después de guardarlo.",
      "refresh": "Actualizar listas de IP de CDN",
      "refreshOk": "Listas CIDR actualizadas",
      "providers": {
        "none": "Ninguno (origen directo)",
        "cloudflare": "Llamarada de nube",
        "fastly": "rápidamente",
        "bunny": "Conejito CDN",
        "cloudfront": "AWS CloudFront",
        "azure_frontdoor": "Puerta de entrada azul",
        "gcore": "CDN de Gcore",
        "custom": "servidores proxy personalizados"
      },
      "needProvider": "Elija un proveedor de CDN antes de obtener su lista de IP.",
      "spoofWarn": "Confiar en el CIDR incorrecto permite a los clientes falsificar los encabezados X-Forwarded-For/CDN como su IP."
    },
    "linkUp": "Arriba",
    "linkDown": "Abajo",
    "linkDownDefault": "Por la ruta predeterminada",
    "loopbackImmutable": "El bucle invertido no se puede cambiar",
    "operUnknownHint": "El kernel no informó ARRIBA/ABAJO (común para lo). La interfaz todavía es utilizable.",
    "persistNmHint": "Persistente significa que los cambios pueden sobrevivir al reinicio a través de NetworkManager."
  },
  "nginx": {
    "pillSites": "{{count}} sitio(s)",
    "statSites": "Sitios",
    "statSslFlag": "bandera SSL",
    "purgeOk": "Purgado",
    "projectSitesHint": "Los sitios de proyecto (configuración administrada) y los sitios independientes se enumeran por separado. Edite el proyecto Nginx en Proyectos → Red.",
    "purgeCache": "Purgar caché + recargar",
    "purgeCacheTitle": "¿Borrar la caché de Nginx y recargar?",
    "purgeCacheDesc": "Borra el caché en el disco y recarga Nginx. Los sitios activos permanecen activos.",
    "notInstalled": "Nginx no está instalado",
    "listTitle": "Sitios ({{count}})",
    "listDesc": "Después de crear, haga clic en Aplicar para sincronizar con el sistema.",
    "createSite": "+ Crear sitio",
    "colServerName": "Nombre del servidor",
    "colKind": "Tipo",
    "kindProxy": "proxy inverso",
    "kindStatic": "Estático",
    "kindPhp": "PHP-FPM",
    "colTarget": "Aguas arriba/raíz",
    "colStatus": "Estado",
    "emptyTitle": "Sin sitios",
    "emptyDesc": "Utilice \"Crear sitio\" en la barra de herramientas de la lista; luego aplicar",
    "applyTitle": "Escriba los datos del panel e intente sincronizar + nginx -t + recargar",
    "applyToSystem": "Sincronizar con el sistema",
    "createTitle": "Crear sitio Nginx",
    "createDesc": "Aplicar requerido después de crear",
    "editTitle": "Editar sitio Nginx",
    "editDesc": "Aplicar requerido después de guardar",
    "deleteTitle": "¿Eliminar sitio?",
    "deleteDesc": "¿Eliminar este sitio?",
    "deleteTitleNamed": "¿Eliminar sitio {{name}}?",
    "deleteDescNamed": "Retire {{name}} del panel. Los sitios aplicados también eliminarán su configuración nginx administrada.",
    "invalidServerName": "Ingrese un nombre de host válido (por ejemplo, app.example.com).",
    "needUpstream": "Se requiere upstream para sitios de proxy inverso.",
    "needRoot": "Se requiere raíz de documento para sitios estáticos y PHP.",
    "serverNameHint": "nombre_servidor, p.e. aplicación.ejemplo.com",
    "kindLabel": "Tipo de sitio",
    "upstreamLabel": "Río arriba",
    "upstreamHint": "p.ej. 127.0.0.1:3000 o http://backend:8080",
    "rootLabel": "Raíz del documento",
    "rootHintPhp": "Raíz del documento del proyecto PHP, p.e. /var/www/app/público",
    "rootHintStatic": "Ruta absoluta a archivos estáticos",
    "sslLabel": "Habilitar bloqueo SSL",
    "sslDesc": "Emite escuchar 443 ssl; vincular certificados desde la página SSL cuando esté listo",
    "saveThenApply": "Después de guardar, haga clic en Aplicar para escribir la configuración de nginx",
    "statProjectSites": "Proyectos",
    "projectListTitle": "Sitios del proyecto ({{count}})",
    "projectListDesc": "Configuración administrada por panel desde la publicación del proyecto/goLive: abra la pestaña Red del proyecto para cambiar.",
    "colProject": "Proyecto",
    "colRuntime": "Tiempo de ejecución",
    "colConf": "conferencia",
    "confWritten": "Escrito",
    "confMissing": "Sin camino",
    "projectEmptyTitle": "Ningún proyecto Nginx todavía",
    "projectEmptyDesc": "Publicar Nginx desde la pestaña Red de un proyecto después de la implementación",
    "preview": "Avance",
    "openProject": "Abrir proyecto",
    "projectPager": "Páginas del sitio del proyecto",
    "prevPage": "Anterior",
    "nextPage": "Próximo",
    "pageOf": "Página {{page}} / {{total}} · {{count}}",
    "projectConfEmpty": "(archivo de configuración vacío)",
    "projectConfReadFail": "No se pudo leer la configuración del proyecto",
    "projectPreviewPath": "{{path}}",
    "pageDesc": "Sitios Nginx",
    "filterSource": "Fuente",
    "sourceAll": "Todo",
    "sourceProject": "Proyecto",
    "sourceStandalone": "Autónomo",
    "colSource": "Fuente",
    "filterProject": "Filtrado por proyecto",
    "globalSettings": "Configuraciones globales",
    "siteSettings": "Configuración del sitio",
    "saveApply": "Guardar y aplicar",
    "settingsSaved": "Guardado",
    "setGzip": "zip",
    "setShowVersion": "Mostrar versión del servidor",
    "setShowVersionDesc": "Desactivado = tokens_servidor desactivados",
    "setHttp2": "HTTP/2 (SSL)",
    "setBody": "cuerpo máximo",
    "setKeepalive": "Mantener vivo",
    "setAccessLog": "Registro de acceso",
    "logOn": "En",
    "logBuffered": "almacenado en búfer",
    "logOff": "Apagado",
    "setForceHttps": "Forzar HTTPS",
    "setHsts": "HSTS",
    "setCfRealIp": "IP real de Cloudflare",
    "setIndexes": "listado de directorio",
    "bodyInherit": "Global",
    "stopSites": "{{n}} los sitios dejarán de responder HTTP."
  },
  "notFound": {
    "title": "Página no encontrada",
    "body": "No hay página de panel en {{path}}.",
    "hint": "Las URL desconocidas ya no te envían al panel.",
    "home": "Panel"
  },
  "notes": {
    "agents": {
      "sessionNotFound": "Sesión no encontrada: {{sessionId}}"
    },
    "notFound": "Extraviado",
    "needPath": "Especificar una ruta",
    "needName": "Introduce un nombre",
    "needHost": "Introduzca un anfitrión",
    "needDomain": "Introduce un dominio",
    "needProjectName": "Introduzca un nombre de proyecto",
    "needServerIp": "Especificar una IP de servidor",
    "passwordMin8": "La contraseña debe tener al menos 8 caracteres.",
    "invalidPath": "Ruta no válida",
    "invalidIp": "IP no válida",
    "invalidIp46": "IPv4/IPv6 no válido",
    "invalidPackageName": "Nombre de paquete no válido",
    "fileMissing": "El archivo no existe",
    "notRegularFile": "No es un archivo normal",
    "readFailed": "Error de lectura",
    "pathResolveFailed": "No se pudo resolver la ruta",
    "fieldInvalid": "Campo no válido {{field}}: {{value}}",
    "apt": {
      "updateIndex": "Actualizar el índice del paquete"
    },
    "state": {
      "closed": "Cerrado",
      "active": "Activo"
    },
    "cat": {
      "security": "Seguridad",
      "mail": "Correo",
      "database": "Base de datos",
      "runtime": "Tiempos de ejecución"
    },
    "ssh": {
      "identityNotFound": "Identidad no encontrada",
      "registrationNotFound": "Registro no encontrado",
      "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
      "keyOkSftp": "SFTP pwd tuvo éxito después de que se rechazó el shell SSH."
    },
    "cdn": {
      "siteNotFound": "Sitio CDN no encontrado",
      "nodeMissing": "El nodo no existe",
      "loopbackOriginRemote": "El origen es 127.0.0.1: es este host, no un borde remoto. Establezca una IP de origen accesible o bind_ip.",
      "originRemoteRewrite": "Los bordes remotos utilizarán el origen accesible {{url}} en lugar del bucle invertido.",
      "originRemoteUnknown": "El origen es loopback y no se conoce ninguna IP pública/LAN o bind_ip; la aplicación rechazará los bordes remotos hasta que se establezca uno.",
      "needSshOrFleet": "El borde remoto necesita una identidad SSH saliente (o nombre de usuario) o una sesión de flota /agents. La URL de salud por sí sola no se aplica al transporte.",
      "probe": {
        "timeout": "Tiempo de espera de conexión después de {{ms}}ms ({{detail}}). El par puede tener un firewall.",
        "dns": "La búsqueda de DNS falló ({{detail}}).",
        "refused": "Conexión rechazada después de {{ms}}ms ({{detail}}). Puerto cerrado o bloqueo unidireccional.",
        "tls": "La verificación TLS falló ({{detail}}).",
        "unreach": "Host inalcanzable después de {{ms}}ms ({{detail}}).",
        "http": "La sonda HTTP falló después de {{ms}}ms ({{detail}})."
      }
    },
    "backup": {
      "testUnsaved": "Prueba de valores de formulario no guardados (no escritos en la configuración).",
      "testIdentity": "ssh (identity) to {{spec}} ok",
      "sshAuthFailed": "Clave SSH o contraseña rechazada (clave pública). Elija una identidad saliente o instale sshpass.",
      "remotePathIsFile": "La ruta remota {{path}} es un archivo. Utilice un directorio.",
      "remoteMkdirFailed": "No se pudo crear el directorio remoto: {{detail}}",
      "sidecarPushed": "También se impulsó el sidecar SQL {{name}}",
      "fileNotFound": "Archivo de copia de seguridad no encontrado",
      "resticNoPassword": "restic está habilitado pero la contraseña no está establecida",
      "resticNotInPath": "restic no en RUTA",
      "dbEnvUnreadable": "No se pudo leer .db.env; volcado de SQL omitido.",
      "dbEnvNoName": ".db.env no tiene nombre de base de datos; volcado de SQL omitido.",
      "targetOutside": "El destino de la restauración debe estar dentro del inicio del proyecto o en la raíz de los archivos públicos.",
      "controlPlaneDryRun": "Solo vista previa, nada escrito. En el panel, use Restaurar y confirme la frase a escribir.",
      "controlPlaneNeedConfirm": "La restauración total del plano de control necesita la frase de confirmación RESTAURAR-PLANO-CONTROL.",
      "controlPlaneRestartAfter": "Reinicie la API después de una restauración exitosa.",
      "movedToTrash": "Movido {{name}} a la papelera de reciclaje. Eliminación permanente después de {{days}} días.",
      "restoreNameExists": "No se puede restaurar {{name}}: ya existe un archivo activo con ese nombre.",
      "restoredFromTrash": "Restaurado {{name}} de la papelera de reciclaje.",
      "trashEmptied": "Archivo(s) {{n}} eliminados permanentemente de la papelera de reciclaje.",
      "partialOk": "Éxito parcial: {{n}} proyectos omitidos"
    },
    "health": {
      "portListening": "El puerto {{port}} está escuchando",
      "portNotListening": "El puerto {{port}} no escucha",
      "httpOk": "HTTP Aceptar {{status}}",
      "httpFail": "HTTP falló: {{detail}}"
    },
    "redis": {
      "cliMissing": "redis-cli no está instalado",
      "requirepassAlreadySet": "Redis ya tiene requirepass, no sobrescrito.",
      "requirepassApplied": "requirepass aplicado en tiempo de ejecución",
      "requirepassApplyFailed": "No se pudo CONFIG SET requirepass (dependerá de reiniciar + configuración)",
      "generatedRequirepass": "Contraseña de Redis generada (se muestra una vez): {{password}}"
    },
    "nginx": {
      "reloaded": "nginx recargado",
      "configOk": "Se pasó la verificación de configuración de Nginx",
      "reloadExit": "Código de salida de recarga de Nginx = {{code}}",
      "managedDir": "Directorio de configuración administrado: {{path}}",
      "includeHint": "En nginx: incluya {{path}}/*.conf;",
      "removedOrphan": "Se eliminó la configuración de nginx huérfano {{path}}",
      "keptLiveSsl": "Se mantuvo el bloque HTTPS activo en {{path}} (la plantilla administrada no tenía escucha 443)",
      "orphanCleanupFailed": "Error de limpieza de nginx huérfano: {{detail}}",
      "settingsWritten": "Fragmento global de Nginx escrito",
      "settingsNeedExecute": "Aplicar necesita YSK_EXECUTE",
      "reloadFailed": "Error en la recarga de nginx"
    },
    "ssl": {
      "requestCert": "Solicitar certificado"
    },
    "ftp": {
      "startVsftpd": "Iniciar vsftpd",
      "writeVsftpd": "Escribir configuración vsftpd",
      "vsftpdStarted": "vsftpd iniciado",
      "openPortsStep": "Puertos de firewall (manual)",
      "openPortsReminder": "Abra los puertos TCP en el firewall del host y el grupo de seguridad de la nube: {{ports}}. La aplicación FTPS no abre puertos para usted.",
      "openPortsPasvHint": "Si el inicio de sesión funciona pero el directorio LIST se agota, el rango de datos PASV está bloqueado: abra la página completa",
      "publicPlaintextBlocked": "Negarse a iniciar FTP público sin FTPS. Vincule solo a este host, habilite FTPS con un certificado o confirme PLAINTEXT para exponer texto sin cifrar en la dirección pública."
    },
    "deploy": {
      "nodeMissingIsolated": "Falta el binario del nodo para la implementación aislada: {{path}}: instale la cadena de herramientas del Nodo {{version}} y luego vuelva a implementarlo. Negarse a escribir una unidad que sería 203/EXEC.",
      "nodeMissing": "Falta el binario del nodo: {{path}}: instale la cadena de herramientas (Nodo {{version}}) y luego vuelva a implementarlo",
      "nodeRejectedPath": "Binario de nodo rechazado para el usuario del proyecto: {{path}} - use {{planned}}",
      "unitUnhealthy": "La unidad systemd no está en buen estado ({{detail}}). journalctl -u {{unit}} — 203/EXEC a menudo significa binario no ejecutable por el usuario del proyecto",
      "skippedPanelNode": "Nodo del panel omitido en {{path}} (no ejecutable por el usuario del proyecto; causaría systemd 203/EXEC)",
      "usingFallback": "Nodo binario: usando {{path}} (planificado {{planned}} no encontrado)",
      "usingPanelExec": "Nodo binario: respaldo al panel execPath {{path}}",
      "usingPanelDegraded": "Binario de nodo: implementación degradada usando el panel {{path}} (no para usuario systemd=ysks_*)",
      "nodeNotFoundPlanned": "Nodo {{version}} binario no encontrado en el host; la unidad utilizará {{planned}}; instalar la cadena de herramientas y luego volver a implementar"
    },
    "files": {
      "needSrcDst": "Especificar rutas de origen y destino",
      "pathOutsideSandbox": "Ruta fuera del arenero: {{target}}",
      "notFoundRel": "No encontrado: {{relPath}}",
      "fileNotFoundRel": "Archivo no encontrado: {{relPath}}",
      "notFoundFrom": "No encontrado: {{fromPath}}",
      "alreadyExists": "Ya existe: {{name}}"
    },
    "dns": {
      "needZoneServerIp": "Ingrese la zona y la IP del servidor",
      "noClusterPeer": "No hay ningún par del clúster registrado",
      "planOnly": "Solo plan: configure apply=true (root + YSK_EXECUTE) para instalar en /etc/powerdns y redescubrir",
      "needRootNamed": "Necesita root + EJECUTAR para actualizar /etc/powerdns/named.conf y redescubrir zonas",
      "noManagedZonesClear": "No hay archivos de zona administrada en dataDir/dns/zones: borrará la inclusión de PowerDNS YSK",
      "bindRegistered": "PowerDNS BIND: zona(s) {{count}} registrada (lista de zonas confirmadas)",
      "listZonesIncomplete": "Named.conf/runtime zonas actualizadas pero list-zones no confirmó todas las zonas, no marcadas como cargadas (verifique los registros de pdns/bind-config)",
      "noLaunchDefaultBind": "no hay lanzamiento = encontrado: por defecto se vincula la ruta",
      "writeNotAnswerDig": "Escribir un archivo de zona por sí solo no responde a la excavación: cárguelo en PowerDNS (vincule nombrado.conf + redescubrir)",
      "bindDigFailed": "Zona listada pero la SOA de excavación falló: no se afirma que esté cargada",
      "bindLoadedOk": "Zona {{zone}} registrada a través de PowerDNS BIND name.conf + dig OK",
      "bindSyncFailed": "La sincronización de BIND name.conf falló o la excavación no responde",
      "bindSkipPdnsutil": "Saltando la ruta BIND (el backend prefiere pdnsutil)",
      "pdnsCtlNoConfirm": "pdns_control presente pero zona no confirmada; verifique /etc/powerdns/named.conf o use el backend de pdnsutil",
      "usingExistingZone": "Usando el archivo de zona existente: {{path}}",
      "healNeedRoot": "Necesita root + EJECUTAR para reescribir la dirección local de pdns",
      "pdnsUnitActive": "unidad pdns: activa",
      "pdnsUnitInactive": "unidad pdns: no activa",
      "udp53Listening": "UDP/53: escuchando",
      "udp53NotListening": "UDP/53: todavía no escucha",
      "healResyncOk": "Oyente reparado + zonas administradas resincronizadas en PowerDNS BIND",
      "healResyncPartial": "Oyente reparado pero resincronización de zona incompleta: haga clic en Escribir y cargar zona/carga de powerdns",
      "installAfterLoad": "Después de la instalación, aplique zonas DNS (escribe nombrado.conf + redescubrir) o POST powerdns/load",
      "bindFileNotEnough": "BIND backend: los archivos de zona por sí solos no responden a la excavación hasta que nombrado.conf los incluya",
      "zeroDomainsHint": "PowerDNS list-zones: 0: los archivos de zona en el disco no están cargados (llamados",
      "localAFailed": "local Una sonda falló para www/ftp/@ en {{zone}}",
      "publicNsCloudflare": "El NS público es un DNS/CDN de terceros (por ejemplo, Cloudflare). La excavación pública NO utilizará esta zona de host.",
      "publicNsOther": "El NS público no es este host: las comprobaciones mundiales ignoran el PowerDNS local hasta que el NS del registrador cambie",
      "publicNsHere": "El NS público parece servidores de nombres dentro de la zona (ns1/ns2.zone): el mundo puede consultarle",
      "firewall53Hint": "UDP/53 no escucha desde ss: abra el firewall 53 ambos (TCP+UDP) si falla la excavación externa",
      "applyDigOk": "PowerDNS BIND: listar zonas + excavar OK",
      "applyDigFail": "Zona registrada en conf pero la excavación aún está vacía/RECHAZADA: no se aplicó la marca",
      "applySyncIncomplete": "Sincronización de enlace de PowerDNS incompleta: archivo de zona solo en el disco (no aplicado). Repare los registros EXECUTE/root o pdns.",
      "writeOnlyHint": "Archivo de zona escrito únicamente: PowerDNS no responderá hasta que cargue/aplique los registros nombrados",
      "noActiveUnit": "Ninguna unidad nombrada/bind9/pdns activa",
      "pdnsUnitRestarts": "Estado de la unidad pdns/reinicios: {{detail}}",
      "port53LoopbackOnly": "El puerto 53 solo está en bucle invertido (resuelto por systemd 127.0.0.53): no es un servidor de nombres autorizado por el producto",
      "port53Closed": "El puerto 53 no escucha (UDP/TCP)",
      "udp53NotPublic": "UDP/53 no está escuchando en una dirección pública",
      "tcp53NotPublic": "TCP/53 no escucha en una dirección pública",
      "noManagedZones": "No hay archivos de zona administrados en dataDir/dns/zones",
      "pdnsListZones": "Lista de zonas de PowerDNS: {{n}}",
      "lookupIgnoredAt": "dig no está disponible: @{{server}} fue ignorado. No utilizar el solucionador del sistema como respuesta de ese servidor.",
      "digNotInstalled": "excavar no está instalado",
      "digEmpty": "cavar: no hay respuesta",
      "localAOk": "local A {{name}} → {{ip}}"
    },
    "db": {
      "needExecuteCreate": "La ejecución del host está desactivada; No se puede crear una base de datos desde el panel.",
      "dryRunMysql": "ejecución en seco: base de datos no creada. Utilice --execute con YSK_EXECUTE=1 para aprovisionar",
      "remoteNoCreds": "No se almacena ningún nombre de usuario ni contraseña: solo TCP (el registro no es un inicio de sesión).",
      "remoteReachable": "TCP {{host}}:{{port}} abierto ({{ms}}ms).",
      "remoteUnreachable": "TCP {{host}}:{{port}} cerrado o filtrado ({{ms}}ms)."
    },
    "net": {
      "invalidIface": "Nombre de interfaz no válido",
      "invalidDev": "Nombre de dispositivo no válido",
      "needNmActive": "No se puede persistir: necesita una conexión activa de NetworkManager"
    },
    "project": {
      "notFound": "Proyecto no encontrado: {{id}}",
      "docRootMustBeRelative": "La raíz del documento debe ser relativa al inicio del proyecto (no una ruta absoluta).",
      "docRootInvalid": "Raíz del documento no válida (sin caracteres o caracteres ilegales).",
      "domainInvalid": "Nombre de dominio no válido: {{domain}}",
      "domainInUse": "El dominio {{domain}} ya está utilizado por el proyecto “{{other}}”."
    },
    "email": {
      "domainNotFound": "Dominio de correo no encontrado: {{id}}",
      "wroteNginx": "Escribió la configuración de Nginx: {{nginxPath}}",
      "wrotePath": "Escribió {{path}}",
      "domainDeleted": "Dominio eliminado {{domain}} ({{mailboxes}} buzones de correo, {{aliases}} alias)",
      "domainDataDirRemoved": "Directorio de datos local eliminado {{path}}",
      "domainDataDirRemoveFailed": "No se pudo eliminar el directorio de datos {{path}}: {{detail}}",
      "domainDeleteSystemHint": "Plano de control eliminado; Vuelva a aplicar los dominios restantes o limpie los mapas MTA del sistema si es necesario.",
      "mailboxDeleted": "Buzón eliminado {{address}}",
      "mailboxNotFound": "Buzón no encontrado",
      "mailboxDataRemoved": "Ruta local eliminada {{path}}",
      "domainDeleteConfirmMismatch": "Confirmar que el nombre no coincide con el dominio; eliminar rechazado",
      "domainDataKept": "Se mantuvieron los datos de correo del directorio de datos local (removeData=false)",
      "mailboxPasswordUpdated": "Contraseña actualizada para {{address}}",
      "mailboxStatusUpdated": "Estado para {{address}} establecido en {{status}}",
      "mailboxUpdateEmpty": "No hay nada que actualizar: proporcione contraseña y/o estado",
      "mailboxStatusInvalid": "Estado de buzón no válido",
      "mailboxNoChanges": "No se aplicaron cambios",
      "dovecotApplyNeedRoot": "La aplicación de autenticación virtual de Dovecot necesita root + YSK_EXECUTE",
      "dovecotNotInstalled": "Dovecot no está instalado en este host",
      "dovecotNoPassdbSnippets": "No se encontraron fragmentos de passdb de dominio en dataDir/email",
      "dovecotApplyFailed": "Error al aplicar la autenticación virtual de Dovecot: {{detail}}",
      "dovecotApplyOk": "Autenticación virtual Dovecot instalada ({{conf}}, {{count}} fragmento(s) de dominio)",
      "dovecotPassdbWrittenNeedApply": "Archivo Passwd escrito en dataDir: ejecute aplicar (EJECUTAR+raíz) para que Dovecot lo cargue",
      "postqueueSetgidBroken": "Las herramientas de cola Postfix fallaron: setgid_group está vacío en main.cf. Establezca setgid_group=postdrop (el panel intenta solucionarlo cuando YSK_EXECUTE está activado).",
      "postqueueMailDown": "Postfix no se está ejecutando (showq no disponible). El panel intentó iniciarlo cuando YSK_EXECUTE está activado; verifique la pestaña Software/postfix de estado systemctl.",
      "postqueueSpoolMissing": "Faltan directorios de cola Postfix (por ejemplo, retención/). El panel intentó crear el árbol de spool e iniciar Postfix cuando YSK_EXECUTE está activado.",
      "invalidDomain": "Ingrese un dominio de correo válido",
      "invalidServerIp": "Ingrese una IP de servidor válida",
      "mailboxLocalPartInvalid": "La parte local del buzón solo puede utilizar letras, dígitos, . _ + -",
      "passwordTooShort": "La contraseña debe tener al menos 8 caracteres."
    },
    "software": {
      "startUnit": "Inicio {{u}}",
      "installedSpec": "Instalado {{title}}",
      "installPkg": "Instalar {{p}}",
      "npmGlobal": "instalación npm -g {{pkgs}}",
      "needNodeForNpm": "nodo/npm no encontrado: instale Node.js antes de {{title}}",
      "uninstallNoTargets": "No se ha seleccionado ningún software para desinstalar",
      "uninstallNothingInstalled": "No hay nada instalado para el alcance seleccionado",
      "uninstallProtected": "Componentes protegidos omitidos: {{ids}}",
      "uninstallConfirmMismatch": "La frase de confirmación no coincide",
      "uninstallOk": "Componentes {{n}} desinstalados",
      "uninstallPartial": "La desinstalación finalizó con errores: verifique los pasos"
    },
    "php": {
      "aptPackages": "Instalará paquetes {{count}}: {{list}}"
    },
    "runtime": {
      "plugins": "Herramientas complementarias: {{list}}",
      "pluginsOk": "Herramientas complementarias instaladas",
      "pluginsFailed": "Algunas herramientas fallaron o se omitieron: {{list}}",
      "pluginsUninstall": "Herramientas de desinstalación: {{list}}",
      "pluginsUninstallOk": "Herramientas complementarias desinstaladas",
      "pluginsUninstallFailed": "Algunas herramientas no se pudieron desinstalar o se omitieron: {{list}}",
      "pluginsNoneToUninstall": "No hay herramientas para desinstalar (ya no existen o son necesarias)"
    },
    "approval": {
      "notFound": "Aprobación no encontrada: {{id}}"
    },
    "readiness": {
      "core": "Plano de control",
      "security": "Permisos y seguridad",
      "binaries": "Binarios / paquetes",
      "hosting": "Alojamiento",
      "dns": "DNS",
      "email": "Correo electrónico",
      "isolation": "Aislamiento del proyecto",
      "ops": "Operaciones",
      "runtimesNode": "Nodo.js",
      "runtimesPhp": "PHP",
      "runtimesPython": "Pitón",
      "runtimesGo": "Go",
      "pm2": "PM2",
      "runtimesNodeFix": "Instalar Node desde /runtimes/node",
      "runtimesPhpFix": "Instalar PHP desde /runtimes/php",
      "runtimesPythonFix": "Instalar Python desde /runtimes/python",
      "runtimesGoFix": "Instalar Go desde /runtimes/go",
      "pm2Fix": "Instale PM2 desde la página de tiempo de ejecución de Node"
    },
    "needAdmin": "Se requiere permiso de administrador",
    "notInstalled": "No instalado",
    "unknown": "Desconocido",
    "failed": "Fallido",
    "running": "Correr",
    "stopped": "Interrumpido",
    "probe": "Sonda",
    "install": "Instalar",
    "port": "Puerto",
    "git": {
      "missingBin": "git no está en la RUTA",
      "auth": "La autenticación falló. Agregue una clave de implementación o un token HTTPS.",
      "hostkey": "Error en la verificación de la clave del host SSH. Confirme y fije la clave de host.",
      "dirty": "El árbol de trabajo tiene {{count}} cambios locales. La tracción está bloqueada.",
      "diverged": "No se puede avanzar rápidamente. Restablezca la referencia remota si desea descartar el historial de Git local.",
      "missingRef": "Esa rama, etiqueta o confirmación no está en el control remoto.",
      "shallow": "Este clon es superficial. Obtenga el historial completo antes de fijar una confirmación anterior.",
      "notRepo": "app/ aún no es un repositorio de Git.",
      "diffEmpty": "Sin diferencias no preparadas (se excluye el .env protegido).",
      "unrelated": "Historias no relacionadas. Vuelva a clonar solo después de confirmar: los archivos personalizados se perderán.",
      "lock": "Git index.lock está presente. Elimínelo solo si no se está ejecutando ningún proceso de git.",
      "disk": "Disco lleno o cuota excedida.",
      "timeout": "Se agotó el tiempo de espera de Git.",
      "network": "Error de red al hablar con el control remoto.",
      "lfs": "Este repositorio usa Git LFS y git-lfs no está disponible.",
      "submodule": "Error en la actualización del submódulo.",
      "unknown": "Git falló. Vea el resultado del comando.",
      "fetchOk": "Obtenido del origen.",
      "checkoutOk": "Revisado {{ref}}.",
      "resetOk": "Restablezca con fuerza a {{ref}}.",
      "envRestored": "Aplicación/.env restaurada desde el plano de control.",
      "needPinHost": "La clave de host SSH no está fijada. Escanéelo y fíjelo antes de clonarlo o recuperarlo.",
      "tokenSaved": "Token HTTPS almacenado (nunca más se muestra).",
      "tokenCleared": "Se eliminó el token HTTPS.",
      "tokenInvalid": "El token debe tener al menos 8 caracteres.",
      "deployKeyCreated": "Clave de implementación creada. Agregue la clave pública en el host de Git.",
      "deployKeyCleared": "Implementar clave separada de este proyecto.",
      "hostPinned": "Claves de host SSH fijadas para {{host}}.",
      "hostUnpinned": "Se borraron las claves de host SSH ancladas.",
      "hostScanFailed": "ssh-keyscan no devolvió claves para ese host.",
      "hookEnabled": "El gancho Git entrante está activado. Pegue la URL en GitHub, Gitea o GitLab usted mismo.",
      "hookDisabled": "El gancho Git entrante está desactivado. La URL no se sincronizará.",
      "hookSecretOnce": "Copie este secreto de gancho ahora. No se vuelve a mostrar.",
      "refsNeedUrl": "Primero ingrese una URL de Git.",
      "refsOk": "Cargado {{branches}} rama(s) y {{tags}} etiqueta(s).",
      "refsEmpty": "El control remoto no anuncia ramas ni etiquetas."
    },
    "auto": {
      "n0001": "Estado: aplicado",
      "n0002": "Usuario no encontrado",
      "n0003": "bloqueado: requiere YSK_EXECUTE=1",
      "n0004": "Recurso no encontrado",
      "n0005": "No se puede aplicar en el host: necesita YSK_EXECUTE + root",
      "n0006": "Se requiere ejecución del host",
      "n0007": "Estado: escrito",
      "n0008": "Se requieren privilegios de root para completar esto",
      "n0009": "base de datos creada",
      "n0010": "hecho",
      "n0011": "Extraviado",
      "n0012": "Estado: fallido",
      "n0013": "no corriendo",
      "n0014": "comenzar",
      "n0015": "mysql no instalado",
      "n0016": "psql no instalado",
      "n0017": "cortafuegos UFW",
      "n0018": "Tiempos de ejecución",
      "n0019": "cron no encontrado",
      "n0020": "",
      "n0021": "Política no aplicada: 0/1 administrador tiene 2FA habilitado",
      "n0022": "Autenticación de dos factores de administrador",
      "n0023": "Registro binario (replicación)",
      "n0024": "Extraviado",
      "n0025": "Cambios del sistema deshabilitados",
      "n0026": "Se disparó el disyuntor de prohibición automática",
      "n0027": "Por favor especifique el ID del agente",
      "n0028": "Proyecto no encontrado",
      "n0029": "requiere nombre",
      "n0030": "Emergencia",
      "n0031": "prohibir no habilitar",
      "n0032": "ejecución en seco: este no es el sistema",
      "n0033": "funcionamiento en seco: no sistema",
      "n0034": "1 réplica",
      "n0035": "sonda de nodo exitosa",
      "n0036": "La ejecución de serverHost no está habilitada, no se puede sincronizar",
      "n0037": "volver a aplicar los pasos claveError",
      "n0038": "no se puede iniciar: no habilitar YSK_EXECUTE",
      "n0039": "arranque Requiere YSK_EXECUTE=1",
      "n0040": "Conexiones máximas",
      "n0041": "dirección de enlace",
      "n0042": "dominio",
      "n0043": "drenaje",
      "n0044": "Nodo CDN no encontrado",
      "n0045": "(Lanzamientos de GitHub más recientes)",
      "n0046": "ejecutar (directorio del sistema YSK_EXECUTE)",
      "n0047": "ejecución en seco: agregar --ejecutar primero al sistema nginx",
      "n0048": "requiereadmin",
      "n0049": "ID del proyecto y nombre",
      "n0050": "^.*cuenta o contraseña.*$",
      "n0051": "^.*requiere verificación.*$",
      "n0052": "echo \"pdnsutil No encontrado: \" >&2",
      "n0053": ": ''}(Es posible que no persista durante el reinicio; use Guardar para persistir)",
      "n0054": "# rsa_cert_file= (no certificado)",
      "n0055": "$_GET / $_POST / $_COOKIE",
      "n0056": "--contraseña, o YSK_MIGRATE_SSH_PASSWORD",
      "n0057": "-1 desactivar; 0",
      "n0058": "/proc/meminfo puede",
      "n0059": "/proc/stat puede — CPU% no puede",
      "n0060": "0 = límites; puede 256mb",
      "n0061": "0 = usar todas las CPU",
      "n0062": "0 (apagado)",
      "n0063": "La carga de 1 minuto excede la CPU × 2",
      "n0064": "1. panelcrear base de datos MySQL",
      "n0065": "1 = más seguro; 2 = mejor rendimiento",
      "n0066": "2. WordPress a aplicación/público",
      "n0067": "3. configuración wp-config.php",
      "n0068": "4. PHP + Nginx/SSL",
      "n0069": "Un IPv4",
      "n0070": "Un IPv4",
      "n0071": "AAAAIPv6",
      "n0072": "AAAAIPv6",
      "n0073": "AOF persiste",
      "n0074": "El archivo de administrador no existe; por favor descargar: verdadero",
      "n0075": "El agente no puede escribir",
      "n0076": "Agente en ejecución",
      "n0077": "Lista de permitidos",
      "n0078": "Aksum + Tokio; cajas de construcción de carga ()",
      "n0079": "Axum: construcción de carga --liberación de cajas.io",
      "n0080": "Saltar resolución de nombre",
      "n0081": "Servidor de colación",
      "n0082": "Servidor de juego de caracteres",
      "n0083": "Nodo de arranque ()",
      "n0084": "escaneo de robots",
      "n0085": "CLI OPcaché",
      "n0086": "Las bases de datos CONFIG SET no son exitosas (se pueden reiniciar)",
      "n0087": "CPU para 1–10000",
      "n0088": "Cloudflare UA no es un éxito",
      "n0089": "Cloudflare bajo ataque por favor",
      "n0090": "Cookies seguras (HTTPS)",
      "n0091": "Índice DB para 0–15",
      "n0092": "Usuario del sistema no creado para este proyecto",
      "n0093": "ID de base de datos Usuario no encontrado: cree un usuario del sistema",
      "n0094": "DB_PASSWORD para: cree la página MySQL o WP_DB_*",
      "n0095": "DDoS",
      "n0096": "DKIM",
      "n0097": "DMARC",
      "n0098": "DNS escrito ≠ solucionador (TTL/)",
      "n0099": "Registrador DS, por favor.",
      "n0100": "Django: pip instala django/gunicorn",
      "n0101": "Confirmar nombre, etc.",
      "n0102": "EmailService dataDir — base de datos (dataDir Maildir)",
      "n0103": "Recarga de FPM fallida",
      "n0104": "FTPS requiere dominio",
      "n0105": "FastAPI + uvicornio; requisitos.txt; / y /salud",
      "n0106": "Aplicación de matraz.py; requisitos.txt; / y /salud",
      "n0107": "GTID: configuración gtid_mode=ON",
      "n0108": "Galera Soportes mariadb",
      "n0109": "URL de Git no válida",
      "n0110": "Paquete GitHub.json Versión faltante",
      "n0111": "Lanzamiento de GitHub Etiqueta faltante",
      "n0112": "Ir al tiempo de ejecución",
      "n0113": "robot certificado",
      "n0114": "Configuración HTTP con raíz web ACME (no TLS)",
      "n0115": "HTTP falló",
      "n0116": "Habilitar HTTPS",
      "n0117": "Error IMAP/POP",
      "n0118": "IP no (/enriquecer)",
      "n0119": "IP no válida",
      "n0120": "IPv4 0–32",
      "n0121": "IPv6 0–128",
      "n0122": "Registro de descarga de InnoDB en la confirmación trx",
      "n0123": "Tamaño del archivo de registro de InnoDB",
      "n0124": "Tamaño del grupo de búfer de InnoDB",
      "n0125": "Instalar y publicar a través del panel de administración (instalación de Webmail).",
      "n0126": "Inundación L7 / tráfico anormal",
      "n0127": "LLM anormal (faltante)",
      "n0128": "Let's Encrypt HTTP-01 requiere 80 latas; Token API DNS-01.",
      "n0129": "LímiteNOFILE para 64–10000000",
      "n0130": "MTU 68–65535",
      "n0131": "servidor de correo MX",
      "n0132": "MX: primer host ( 10 mail.example.com.)",
      "n0133": "servidor mariadb",
      "n0134": "Requerir que los clientes usen TLS",
      "n0135": "servidor mysql",
      "n0136": "Cliente MySQL/MariaDB",
      "n0137": "NetworkManager no está disponible, no se puede escribir DNS",
      "n0138": "Límite de velocidad más estricto de Nginx (~8 solicitudes/s)",
      "n0139": "Límite de velocidad estricto de Nginx (~3 solicitudes/s)",
      "n0140": "Límite de velocidad suave de Nginx (~20 solicitudes/s)",
      "n0141": "falla2ban",
      "n0142": "Error en la instalación del nodo",
      "n0143": "Nodo.js",
      "n0144": "caché OP (MB)",
      "n0145": "PHP docroot + wp-config ()",
      "n0146": "cortafuegos (UFW)",
      "n0147": "proceso PHP proceso startnot",
      "n0148": "PHP degradado: no con el usuario del proyecto Linux (requiere root + createsystemuser)",
      "n0149": "PID para",
      "n0150": "PID no válido",
      "n0151": "PING tuvo éxito",
      "n0152": "Error de inicio de PM2: inicio del archivo pid",
      "n0153": "sufijo",
      "n0154": "POST",
      "n0155": "Por remitente: mensajes de dominio del remitente del sobre/hora; DEFER_IF_PERMIT",
      "n0156": "Mapa de suspensión de Postfix aplicado (check_recipient_access REJECT)",
      "n0157": "Servidor PostgreSQL",
      "n0158": "Servidor PostgreSQLNo instalado",
      "n0159": "Cliente PostgreSQL",
      "n0160": "El servicio PostgreSQL no se está ejecutando",
      "n0161": "Herramientas PowerDNS",
      "n0162": "Principal: crear usuario de replicación (SQL)",
      "n0163": "PythonDjango()",
      "n0164": "servidor redis",
      "n0165": "Comportamiento de Python",
      "n0166": "regla RDB",
      "n0167": "RDB",
      "n0168": "RUSTFLAGS (compilación)",
      "n0169": "Índice de base de datos de Redis para 0–15",
      "n0170": "El volcado de Redis requiere YSK_EXECUTE=1",
      "n0171": "servidor redis",
      "n0172": "Servidor RedisNo está instalado o no se puede conectar",
      "n0173": "Redis no puede iniciarse con PING",
      "n0174": "Cliente Redis",
      "n0175": "inicio de redis",
      "n0176": "La restauración de Redis requiere YSK_EXECUTE",
      "n0177": "Renovación a través de certbot.timer (dns-01)",
      "n0178": "Construcción/ejecución de óxido",
      "n0179": "Configuración del depósito/ruta de S3 no",
      "n0180": "SFTP.ssh chown Requiere root + YSK_EXECUTE",
      "n0181": "SIGKILL confirmarKill: verdadero",
      "n0182": "SMTP /",
      "n0183": "SPF",
      "n0184": "SRV: objetivo de puerto de peso prioritario",
      "n0185": "SSH",
      "n0186": "Conexión SSH fallida",
      "n0187": "SSH requiere YSK_EXECUTE=1",
      "n0188": "Verificación SSO () · contraseña",
      "n0189": "Verificación SSO () · contraseña",
      "n0190": "SST=mariabackup: nodo mariadb-backup",
      "n0191": "Sesión",
      "n0192": "Sesión",
      "n0193": "Sesión",
      "n0194": "TCP (en uso)",
      "n0195": "Éxito del TOTP",
      "n0196": "TareasMax para 1–1000000",
      "n0197": "UFW no instalado",
      "n0198": "Error de lectura del estado de UFW",
      "n0199": "VACUUM",
      "n0200": "etc.",
      "n0201": "Web + correo",
      "n0202": "Interfaz de usuario web: no encontrada: (compila aplicaciones/web o establece YSK_WEB_ROOT)\\n",
      "n0203": "anfitrión web",
      "n0204": "interfaz web",
      "n0205": "Error de verificación de autenticación web",
      "n0206": "WebDAV no",
      "n0207": "Webmail Dominio no válido",
      "n0208": "Comodín/dns-01: certbot TXT; el panel iniciará DS/TXT DNS hecho",
      "n0209": "Wordpress (PHP)",
      "n0210": "YSK PHP OK — WordPress no instalado\\\\n",
      "n0211": "YSK_EXECUTE está activado pero el proceso no es root: algunas recargas de systemctl/nginx se bloquearán",
      "n0212": "YSK_EXECUTE habilitar",
      "n0213": "YSK_EXECUTE está desactivado: escrito ≠ aplicado",
      "n0214": "YSK_EXECUTE está desactivado: las mutaciones del host permanecen escritas/borradas hasta que establezca YSK_EXECUTE=1",
      "n0215": "registro de acceso fallido",
      "n0216": "acceso = flota requiere flotaAgentId",
      "n0217": "acción para reiniciar | apagado | Cancelar",
      "n0218": "ápice + www (borde) + cdn host",
      "n0219": "servidor CNAME de ápice/",
      "n0220": "app.py - omitido",
      "n0221": "aplicado ≠ saludable: consulte wsrep",
      "n0222": "aplicar recarga sshd; Error Match can: primer ensayo",
      "n0223": "aplicar suspensión del sistema/cambio de respuesta automática",
      "n0224": "apply_status=escrito (Éxito ≠ MTA del sistema; agregue applySystem:true firstapply)",
      "n0225": "aplicaciones/web/dist existe",
      "n0226": "lista de apt --upgradable: (se puede actualizar o apt no está listo)",
      "n0227": "La instalación adecuada falló",
      "n0228": "apt-obtener Disponible",
      "n0229": "desactivación automática del vacío",
      "n0230": "bloqueado: requiere HostExecutor + YSK_EXECUTE=1",
      "n0231": "bootstrap: Nodo fallido",
      "n0232": "arranque: apto fallido",
      "n0233": "pasos clave de arranqueError",
      "n0234": "candidatoVersión no",
      "n0235": "carga / oxidado",
      "n0236": "salida certbot 0: marque /etc/letsencrypt/live/",
      "n0237": "chown requiere YSK_EXECUTE + raíz",
      "n0238": "clon (andamio / trozo YSK)",
      "n0239": "cluster_size Desconocido o 0",
      "n0240": "comando ysk-servidor / @ysk/servidor",
      "n0241": "archivo de plano de control completo",
      "n0242": "cwd puede",
      "n0243": "directorio de datos",
      "n0244": "dataDir ysk.json — Estado completo",
      "n0245": "dataDir/correo electrónico existe",
      "n0246": "dataDir/web existe",
      "n0247": "base de datos no encontrada:",
      "n0248": "db-util (base de datos de usuarios FTP)",
      "n0249": "desplegarNode Proyecto de nodo",
      "n0250": "df Montaje disponible ( o )",
      "n0251": "excavar no disponible, nodo dns",
      "n0252": "excavar: sin respuesta (NXDOMAIN o vacío)",
      "n0253": "dns-01: panel TXT — hecho\" SSL\"",
      "n0254": "dnssec-dsfromkey no DS",
      "n0255": "RUTA dnssec-keygen (apt install bind9-dnsutils)",
      "n0256": "dnssec-keygen falló",
      "n0257": "dnssec-signzone no disponible - clave mantenida/DS",
      "n0258": "dnssec-signzone no.firmado",
      "n0259": "dominio",
      "n0260": "dominio no encontrado:",
      "n0261": "La recarga del palomar falló o el servicio no (tamiz escrito; recarga exitosa)",
      "n0262": "simulación de envío de flota (no en cola)",
      "n0263": "empuje de pares de ejecución en seco (no scp)",
      "n0264": "instalación remota en seco (no ssh)",
      "n0265": "transferencia de ejecución en seco realizada (arranque completo)",
      "n0266": "ejecución en seco: pasar aplicar/ejecutar inicio",
      "n0267": "ejecución en seco: pase aplicar/ejecutar realmente ssh",
      "n0268": "ejecución en seco: no escribir /etc.",
      "n0269": "ejecución en seco: agregar --ejecutar primero aplicar ufw",
      "n0270": "ejecución en seco: inventario + verificación previa aprobada, no paquete/transferencia",
      "n0271": "Ejecución en seco: solo sonda/plan. Pase --execute con YSK_EXECUTE=1 para aprovisionar realmente.",
      "n0272": "Ejecución en seco: escribió el archivo administrado (dataDir). Pase --execute con YSK_EXECUTE=1 como root para instalar el sistema directo.",
      "n0273": "Ejecución en seco: no prohibido. Pase --execute con YSK_EXECUTE=1 para prohibir realmente.",
      "n0274": "Ejecución en seco: no desprohibido. Pase --execute con YSK_EXECUTE=1 para desbanear realmente.",
      "n0275": "dryRun=true - cambiar API",
      "n0276": "dryRun: no escribir",
      "n0277": "dump Escribió dataDir, no transfirió",
      "n0278": "habilitar falló",
      "n0279": "ejecutar (YSK_EXECUTE=1 + raíz)",
      "n0280": "ejecutar requiere ponerse en cola",
      "n0281": "administrador de exportación",
      "n0282": "fail2ban aplicarFailed",
      "n0283": "servicio fail2ban",
      "n0284": "fail2ban no activo",
      "n0285": "fail2ban no",
      "n0286": "falla2ban",
      "n0287": "error de lectura de estado de fail2ban",
      "n0288": "fail2ban: sshd, nginx-http-auth y cárceles estándar",
      "n0289": "fd no disponible",
      "n0290": "archivos (archivo)",
      "n0291": "Purga de flota bloqueada: puesta en cola o SSH",
      "n0292": "flota por favor db-cluster flota --op sonda --ejecutar",
      "n0293": "desdeAdministrador del panel",
      "n0294": "fromPanel requiere un paso adelante: POST /api/v1/auth/totp/step-up",
      "n0295": "certificado PEM de cadena completa",
      "n0296": "puerta de enlace para IP",
      "n0297": "ápice geográfico: EDNS escribe borde geográfico multi-A (·usuario Anycast)",
      "n0298": "borde del geoMap — borde",
      "n0299": "geo: no configuración geoMap, etc. multi_a (borde). por favor dns.geoMap región→nodeIds",
      "n0300": "git binario No encontrado: en RUTA",
      "n0301": "git binario",
      "n0302": "ir binario",
      "n0303": "URL de salud http(s) URL",
      "n0304": "http-01 webroot — 80 pueden desplegarse ACME conf",
      "n0305": "identidad no usuario/proyecto de Linux: no se pueden obtener claves_autorizadas",
      "n0306": "ignorarip: dataDir/fail2ban/ignoreip.txt",
      "n0307": "index.html + CSS, raíz Nginx o",
      "n0308": "instalar conf → systemctl reiniciar mariadb (no nodo de arranque)",
      "n0309": "interfaz ip -j dirección",
      "n0310": "manifiesto de trabajo",
      "n0311": "diario; puede permiso",
      "n0312": "journalctl puede requerir root o usuario systemd-journal/adm",
      "n0313": "llave",
      "n0314": "Falta la clave o no se ha eliminado",
      "n0315": "matar -0 Éxito: puede para zombie o permiso",
      "n0316": "matar -0 falló",
      "n0317": "La aplicación falló en el host",
      "n0318": "Aplicar bloqueado en el host",
      "n0319": "directorio de caché local/",
      "n0320": "servidor local o *",
      "n0321": "DB lógico 0... N-1; Reanudar",
      "n0322": "logrotate instalado",
      "n0323": "logrotate No instalado o RUTA",
      "n0324": "main.py - omitido",
      "n0325": "administrar.py + configuración mínima/urls/wsgi; instalar django",
      "n0326": "manifiesto dumpRelPath - ¿no?",
      "n0327": "manifiesto rdbRelPath",
      "n0328": "memoriaMax 512M o 1G",
      "n0329": "migrar host --ejecutar + YSK_EXECUTE=1, o --ejecución en seco (inventario+verificación previa)",
      "n0330": "migrar publicación --ejecutar YSK_EXECUTE=1 (destino)",
      "n0331": "migrar publicación Requiere YSK_EXECUTE=1",
      "n0332": "migrar publicación Requiere YSK_EXECUTE=1 (destino)",
      "n0333": "Error de arranque mínimo",
      "n0334": "cliente mysql / mariadb",
      "n0335": "réplica-mysql Soporta mysql",
      "n0336": "nombre de bases de datos mysql",
      "n0337": "RUTA de zona de verificación con nombre: escrito, no verificado",
      "n0338": "nginx -t o la recarga falló",
      "n0339": "nginx -t no pasado, no recargar",
      "n0340": "recarga de nginx ok · Estado: aplicado",
      "n0341": "Error en la recarga de nginx",
      "n0342": "binario nginx",
      "n0343": "nginx no encontrado",
      "n0344": "servicio nginx",
      "n0345": "Binario no en RUTA; el servicio no puede estar listo",
      "n0346": "nodo puede",
      "n0347": "npm última versión faltante",
      "n0348": "npm exit 0 Binario no encontrado: el paquete no puede CLI o PATH no actualizarse",
      "n0349": "nullok no usuario",
      "n0350": "nullok:.google_authenticator usuarioClave disponible",
      "n0351": "ruta open_basedir",
      "n0352": "openssl no disponible, hash YSK-SCRYPT",
      "n0353": "binario openssl",
      "n0354": "opcionalEtc Transferencia fallida (puede apuntar al certificado)",
      "n0355": "escudo de origen: este nodo para escudo, origen",
      "n0356": "origen.tipo proyecto o URL",
      "n0357": "origin.project requiere projectId",
      "n0358": "origen.url http(s) URL",
      "n0359": "OriginShieldNodeId edgeNodeIds",
      "n0360": "volcado de paquete incompleto - transferencia",
      "n0361": "paquete fallido - transferencia",
      "n0362": "paquete Requiere YSK_EXECUTE=1",
      "n0363": "pam.d/sshd no pam_google_authenticator (no aplicar)",
      "n0364": "panel no configuración 2FA o secreto; primero \"\" TOTP",
      "n0365": "secreto TOTP del panel: primer Web 2FA o --from-panel",
      "n0366": "inicio de sesión en el panel Error de escritura puede fallar el registro de 2ban (diario o)",
      "n0367": "llave maestra",
      "n0368": "clave de acceso fallida",
      "n0369": "clave de acceso exitosa",
      "n0370": "pdnsutil No encontrado: instale las herramientas PowerDNS o ejecute el script auxiliar como root después de la instalación",
      "n0371": "Sonda SSH del mismo nivel YSK_EXECUTE=1 (local)",
      "n0372": "par No sondeado (sonda local)",
      "n0373": "peer nodeapply conf y unirse",
      "n0374": "php binario no encontrado: - instalar php-cli",
      "n0375": "binario php",
      "n0376": "php no RUTA",
      "n0377": "archivo pid con inicio de usuario (degradado)",
      "n0378": "inicio del archivo pid, no pid",
      "n0379": "pm2 RUTA (Disponible pidfile/systemd)",
      "n0380": "pm2 No encontrado: en PATH - instalar: npm i -g pm2",
      "n0381": "volver a aplicar después de la transferencia",
      "n0382": "restauración posterior a la transferencia",
      "n0383": "postconf no message_rate_limit (aplicado completo)",
      "n0384": "postgres-replica Soporta postgres",
      "n0385": "nombre de bases de datos postgres",
      "n0386": "postqueue no disponible o correo no instalado",
      "n0387": "Instale nginx en el host o utilice el software del panel/instalación en tiempo de ejecución",
      "n0388": "Instale nginx en el sistema o utilice el software del panel/instalación en tiempo de ejecución",
      "n0389": "PEM privado",
      "n0390": "producciónListo no (datacan)",
      "n0391": "PD",
      "n0392": "ps Degradado: --sort/",
      "n0393": "ps Degradado: pri/vsz/stat, etc.",
      "n0394": "cliente psql",
      "n0395": "purga fallida o objetivo",
      "n0396": "python3 binario",
      "n0397": "en cola ≠ purga de borde",
      "n0398": "en cola ≠ recarga de borde: agente y cdn.edge.apply",
      "n0399": "en cola ≠ borde: salida de agentes/JSON",
      "n0400": "camino real",
      "n0401": "camino real",
      "n0402": "volver a aplicar Requiere YSK_EXECUTE=1",
      "n0403": "clúster redis Admite redis",
      "n0404": "registro shasum no sha256 (npm sha1): con integridad npm para",
      "n0405": "recarga/reinicio fallido",
      "n0406": "publicación remota fallida: puede apuntar a la publicación migrada",
      "n0407": "restic backupdone (salida restic escrita/aplicada)",
      "n0408": "restic está habilitado pero la contraseña no está establecida: denegar contraseña (haga una copia de seguridad de la configuración)",
      "n0409": "restico no",
      "n0410": "restic not - no se pueden tomar instantáneas",
      "n0411": "restic no: primero \"/\" habilite y configure la contraseña",
      "n0412": "restic deshabilitado (solo alquitrán)",
      "n0413": "restic no (omitido)",
      "n0414": "restic No instalado (RUTA), por favor instale el sistema restic",
      "n0415": "restaurar bien; volver a aplicar/verificar",
      "n0416": "restauración hecha",
      "n0417": "restauración fallida",
      "n0418": "restaurar no éxito",
      "n0419": "restaurar Requiere YSK_EXECUTE=1",
      "n0420": "restaurar+volver a aplicar ok; verificar",
      "n0421": "Error en rsync dataDir",
      "n0422": "rsync requiere YSK_EXECUTE=1",
      "n0423": "scp Wrotecannot recargar: rndc/named/bind9/pdns",
      "n0424": "scp Éxito ≠ reinicio/unión entre pares",
      "n0425": "clave secreta disponible",
      "n0426": "llave maestra de secretos",
      "n0427": "centinela no centinela",
      "n0428": "centinela: replicación INFO; por favor maestros centinela",
      "n0429": "IP del servidor IPv4",
      "n0430": "servidor IPv6 no válido",
      "n0431": "setquota PATH - (implementar du)",
      "n0432": "ruta de shell no válida",
      "n0433": "señal para TERMINO | MATAR | HUP | USR1",
      "n0434": "ssh verdadero tuvo éxito → verificado",
      "n0435": "sshd teclado interactivo / activación de respuesta a desafío",
      "n0436": "sshd no puede KbdInteractiveAuthentication — TOTP no puede SSH",
      "n0437": "sshpass Disponible (contraseña)",
      "n0438": "Usuario de escritura de coincidencia estricta (contraseña desactivada)",
      "n0439": "ruta de enlace simbólico",
      "n0440": "directorio de registro de enlace simbólico",
      "n0441": "inicio del proyecto de enlace simbólico",
      "n0442": "sistemactl falló",
      "n0443": "Systemd falló: PM2/pidfile",
      "n0444": "systemd not: Se requiere permiso de ejecución del host y administrador",
      "n0445": "destino: usuario@host o usuario@host:puerto",
      "n0446": "simbólico",
      "n0447": "simbólico",
      "n0448": "top -b no disponible (con ps para)",
      "n0449": "transferencia: dataDir rsync falló",
      "n0450": "transferencia: no se puede crear directorio",
      "n0451": "transferencia realizada (arranque completo)",
      "n0452": "transferencia completada, restauración de destino/volver a aplicar/verificar falló",
      "n0453": "transferencia fallida",
      "n0454": "transferencia fallida",
      "n0455": "transferencia Requiere YSK_EXECUTE=1",
      "n0456": "la transferencia/arranque falló",
      "n0457": "ufw falló",
      "n0458": "unidad y acción",
      "n0459": "useradd requiere YSK_EXECUTE + raíz",
      "n0460": "valor (256 KB)",
      "n0461": "verificar apagado",
      "n0462": "verificar no aprobado - por hecho",
      "n0463": "verificar pasado - trabajo = hecho",
      "n0464": "vsftpd Error al iniciar",
      "n0465": "vsftpd no inicio exitoso",
      "n0466": "ponderado: borde",
      "n0467": "wp-config.php - omitido",
      "n0468": "escrito ≠ Dovecot Pigeonhole — ManageSieve o enlace simbólico al tamiz del usuario",
      "n0469": "escrito ≠ Roundcube - enableSystem o enlace simbólico",
      "n0470": "Escrito ≠ aplicado: sincronizar con el sistema conf.d, ejecutar nginx -t y luego recargar",
      "n0471": "escrito ≠ can — proxy inverso al panel /webdav",
      "n0472": "escrito ≠ procesorecarga",
      "n0473": "Error en la instalación de CLI de ysk-server: ¿puede npm i -g ysk-server?",
      "n0474": "ysk-web Nginx/www-data (no legible en todo el mundo)",
      "n0475": "ysk-web YSK_EXECUTE + root (Nginx no puede 750 inicio)",
      "n0476": "Huella digital ysk.json (se puede volver a aplicar) local≠fuente",
      "n0477": "huella digital ysk.json y",
      "n0478": "huella digital ysk.json y ( bind_ip )",
      "n0479": "ysk.json",
      "n0480": "Error en ysk.json",
      "n0481": "aplicación de zona bloqueada (EJECUTAR)—actualizar",
      "n0482": "rectificación de zona hecha",
      "n0483": "zona inválida",
      "n0484": "zona No encontrado:",
      "n0485": "zona fallida",
      "n0486": "formato binlog",
      "n0487": "instalar",
      "n0488": "creado uno (borrador por favor a la página \"aplicar\")",
      "n0489": "y PUBLICAR",
      "n0490": "La última copia de seguridad completa tuvo fallas",
      "n0491": ": escribir conf → aplicar bordes → DNS (y puede SSL)",
      "n0492": ": PAM /etc/pam.d/sshd (nullok)",
      "n0493": ": instalación del sistema libpam-google-authentiator + PAM ()",
      "n0494": "puede eliminar directorio",
      "n0495": "puede eliminar directorio o ruta",
      "n0496": "",
      "n0497": "esta operación",
      "n0498": "Soportes (permitir TERM / KILL / HUP / USR1)",
      "n0499": "datos",
      "n0500": "eliminar administrador",
      "n0501": "portinvalido",
      "n0502": "Aplicado al sistema",
      "n0503": "settingsWrote dataDir (aplicar a systemenablesystemchange)",
      "n0504": "El uso de la memoria del host es superior al 90%",
      "n0505": "Métricas de host",
      "n0506": "Caché de datos principal de InnoDB",
      "n0507": "El binario no está en la RUTA; el servicio no puede estar listo",
      "n0508": "Caducidad de Binlog (segundos)",
      "n0509": "Tiempo de espera interactivo",
      "n0510": ": cortafuegos, correo PTR/rDNS, mantenido",
      "n0511": "vacío",
      "n0512": "a la página Cron \"instalar en el crontab del sistema\" realmente",
      "n0513": "con raíz de Nginx o \"\" público/",
      "n0514": "Inicie el servicio ysk-server como root (systemctl/unidad de plano de control)",
      "n0515": "Inicie como root y establezca YSK_EXECUTE=1 (consulte la configuración del host/documentos de implementación)",
      "n0516": "con usuario (degradado, no usuario de Linux del proyecto)",
      "n0517": "cáscara - negar",
      "n0518": "Registro de consultas lento",
      "n0519": "servidorNo instalado (comando -v)",
      "n0520": "Tiempo de consulta largo (segundos)",
      "n0521": "servidor MySQL no instalado",
      "n0522": "servidorPostgreSQL no instalado",
      "n0523": "servidorRedis no instalado",
      "n0524": "servidorNo instalado, No se puede completar esto desde el panel de administración",
      "n0525": "servidor no habilitado YSK_EXECUTE",
      "n0526": "La ejecución de serverHost no está habilitada o falta raíz, no se puede instalar paneldone",
      "n0527": "La ejecución de serverHost no está habilitada, no se puede Redis",
      "n0528": "La ejecución de serverHost no está habilitada, no se puede instalar en panel Webmail",
      "n0529": "La ejecución de serverHost no está habilitada, no se puede aplicar",
      "n0530": "La ejecución de serverHost no está habilitada, no se puede crear una conexión SSH",
      "n0531": "La ejecución de serverHost no está habilitada, no se puede realizar el volcado.",
      "n0532": "La ejecución del host está desactivada; el panel no puede finalizar las operaciones a nivel del sistema",
      "n0533": "La ejecución de serverHost no está habilitada: se escribió el archivo administrado, no se puede nombrar la zona de verificación/recargar",
      "n0534": "Puerto TCP en el que escucha el servidor",
      "n0535": "para",
      "n0536": "",
      "n0537": "Hash YSK-SCRYPT (para hash openssl)",
      "n0538": "YSK_SECRETS_KEY",
      "n0539": "ruta baseUrl/.ysk-cdn-health (ubicación de salud de la lata C2)",
      "n0540": "versión (última anulación)",
      "n0541": "YSK_LATEST_VERSION (/)",
      "n0542": "indisponible",
      "n0543": "mysqldump: el paquete no puede ser MySQL",
      "n0544": "pg_dump — el paquete no puede ser Postgres",
      "n0545": "redis-cli: el paquete no puede Redis RDB",
      "n0546": "paso ssh",
      "n0547": "requiere rsync (no instalado)",
      "n0548": "no pasó",
      "n0549": "aprobado",
      "n0550": "128M, 256M, 512M, -1 ()",
      "n0551": "p.ej. 512MiB; dejar vacío para desarmar",
      "n0552": "900 1 300 10; desactivar",
      "n0553": ": --miembro 10.0.0.3=réplica:flota:SESSION_UUID",
      "n0554": "= ASN (sistema), no",
      "n0555": "22/80/443; no puede puerto",
      "n0556": "mantenido: 10",
      "n0557": "proceso del servidor ysk.pid",
      "n0558": "",
      "n0559": "detectar en pam_google_authenticator",
      "n0560": "La copia de seguridad tar se realizó correctamente pero el control remoto/rest tuvo problemas",
      "n0561": "administración",
      "n0562": "administrador suplantar",
      "n0563": "el administrador puede operar",
      "n0564": "ápice A",
      "n0565": "Configuraciones administradas enumeradas (no escritas en el sistema)",
      "n0566": "escribir la configuración de PM2, no iniciar",
      "n0567": "archivo administrado de escritura (no recargar)",
      "n0568": "writemanagesettings: listo y recargado",
      "n0569": "escribir (no habilitar)",
      "n0570": "(aplicar:falso); contraseña",
      "n0571": "Admite postgres + réplica de postgres",
      "n0572": "Soporta redis + redis-replica|redis-sentinel",
      "n0573": ", GOLPEAR",
      "n0574": "resolución de código auxiliar (127.0.0.53); DNS por favor resuelvactl",
      "n0575": "Advertencia, puede",
      "n0576": "para; / Estado de la caché del registro de acceso al borde de CDN",
      "n0577": "willwrite systemd Entorno / proceso env",
      "n0578": "permitir incluir URL",
      "n0579": "permitir archivo URL",
      "n0580": "permitir archivo",
      "n0581": ": + / + (enriquecer)+ ASN; política de la ciudad desactivada",
      "n0582": "abanico de borde aplicado",
      "n0583": "Error en la distribución del borde",
      "n0584": "purga de bordes exitosa",
      "n0585": "recarga del servidor de nombres del mismo nivel",
      "n0586": "Falló la recarga del par: el archivo no se puede",
      "n0587": "compañero fallido",
      "n0588": "peer: zona y recarga remota Éxito",
      "n0589": "Todo tuvo éxito",
      "n0590": "Todo omitido (sin hogar respaldable): no se trata como falla",
      "n0591": "",
      "n0592": "RDB, restaurar",
      "n0593": "Otras variables de tiempo de ejecución",
      "n0594": "",
      "n0595": "o",
      "n0596": "— aplicación manual\"\" (Nunca automática)",
      "n0597": "La puntuación es muy alta: el ajuste preestablecido de emergencia necesita confirmación manual (nunca automática)",
      "n0598": "directorio",
      "n0599": "proceso",
      "n0600": "eliminar valor predeterminado confirmDefault: verdadero",
      "n0601": "eliminar archivo o directorio",
      "n0602": "eliminar usuario del sistema - negar",
      "n0603": "eliminar: la ejecución del host no está habilitada, la ruta del directorio de datos administrado",
      "n0604": "para fail2ban aplicar y habilitar el servicio",
      "n0605": "para habilitar la página (suave/normal)",
      "n0606": "Curtido",
      "n0607": "o",
      "n0608": "Bajo ataque",
      "n0609": "21 y PASV",
      "n0610": "Escribir solo archivo de panel",
      "n0611": "Se puede aplicar al sistema",
      "n0612": "puede dataDir/clusters/<id>/",
      "n0613": "Puede ver la configuración; instalar, reiniciar y escribir la configuración del sistema necesita permiso de ejecución del host",
      "n0614": "puede \"\" o \"agregar\"",
      "n0615": "Instalar y configurar Postfix desde el correo electrónico",
      "n0616": "puede: SSL, WP-CLI,",
      "n0617": "",
      "n0618": "permitir restaurar al directorio.restic-restore-*",
      "n0619": "Iniciar, detener, reiniciar, habilitar al arrancar",
      "n0620": "proceso de inicio, no proceso",
      "n0621": "OPcache",
      "n0622": "SSL",
      "n0623": "Activo",
      "n0624": "archivo",
      "n0625": "archivo",
      "n0626": "nodo wsrep, HA ≥2 nodos",
      "n0627": "\"\"crear MySQL (o DB) y WP_DB_*",
      "n0628": "dominio: vacaciones mantenidas a nivel de dominio",
      "n0629": "Dominio no válido",
      "n0630": "Estado del dominio: activo ()",
      "n0631": "estado del dominio: suspendido (; etc. Postfix)",
      "n0632": "Puerto, dirección de enlace, límites de conexión",
      "n0633": "portcheckAnormal",
      "n0634": "Tiempo de ejecución",
      "n0635": "Requerir transporte seguro (TLS)",
      "n0636": "(.gz, etc.)",
      "n0637": "Bot",
      "n0638": "sonda",
      "n0639": "Último recurso cuando está fuera de control",
      "n0640": "paquete",
      "n0641": "packageinstallnot: Se requiere permiso de ejecución del host",
      "n0642": "la actualización del paquete requiere permiso de administrador del sistema",
      "n0643": "aplicar a vsftpd",
      "n0644": "aplicar al sistema",
      "n0645": "aplicar archivo administrado; YSK_EXECUTE=1 + raíz aplicada",
      "n0646": "",
      "n0647": "pasante (MB)",
      "n0648": "contraseña",
      "n0649": "Error, por favor aplicar",
      "n0650": "Seguridad → Mi seguridad → habilitar 2FA; la política puede establecer requireAdminTotp",
      "n0651": "y camino",
      "n0652": "instalar PAM",
      "n0653": "instalar vsftpd",
      "n0654": "La instalación falló",
      "n0655": "paquete de instalación",
      "n0656": "instalado hecho",
      "n0657": "instalar",
      "n0658": "instalar configuración del sistema",
      "n0659": "",
      "n0660": "",
      "n0661": "contraseña",
      "n0662": "contraseña SQL CHANGE_ME",
      "n0663": "Contraseña almacenada como hash de cripta (no texto sin formato)",
      "n0664": "contraseña para",
      "n0665": "contraseña requiere sshpass",
      "n0666": "contraseñarequierelocalinstall sshpass",
      "n0667": "contraseñarequiere 8",
      "n0668": "contraseña (8)—crear, no escribirhash",
      "n0669": "configuración de contraseña",
      "n0670": "etc.",
      "n0671": "y por favor",
      "n0672": "denegar",
      "n0673": "Escribe NODE_OPTIONS=--max-old-space-size=N",
      "n0674": "escribir Nginx drop-in",
      "n0675": "escribe a casa ≠ PAM",
      "n0676": "Error de escritura",
      "n0677": "escribir",
      "n0678": "escribir archivo",
      "n0679": "",
      "n0680": "Incluir en sshd_config o POST /api/v1/sftp/sshd-snippet/apply install",
      "n0681": "Aislamiento de usuarios del proyecto Linux",
      "n0682": "identificación del proyecto",
      "n0683": "ID del proyecto no válido, no puedo ir a casa",
      "n0684": "ID del proyecto, no puede usuario del sistema",
      "n0685": "proyecto internal-sftp Coincidir con el shell interactivo del usuario — TOTP SSH shell/scp",
      "n0686": "registro administrado del proyecto no válido",
      "n0687": "proyecto",
      "n0688": "proyecto o no configuración de inicio",
      "n0689": "proyectonopuedeusuariodelsistema",
      "n0690": "proyecto",
      "n0691": "proyecto (503)",
      "n0692": "proyectoCreación fallida,",
      "n0693": "dominio del proyecto: primero dominio de configuración",
      "n0694": "proyecto usuario_linux",
      "n0695": "directorio de caché nginx del host de purga del proyecto (no por zona de vhost)",
      "n0696": "proyectoFalta usuario de Linux: no se puede crear FTP",
      "n0697": "proyectoFalta linux_user",
      "n0698": "proyecto; ＝",
      "n0699": "Detalle del proyecto → Recursos → crear usuario del sistema / migrar a /home/ysk-server-{id} (necesita YSK_EXECUTE + root)",
      "n0700": "celda",
      "n0701": "Falta el directorio de inicio o no está en el diseño de aislamiento del proyecto",
      "n0702": "no GeoIP: actualice \"IP\"",
      "n0703": "no puerto, por favor primero proyecto",
      "n0704": "no al sistema Nginx (archivo administrado)",
      "n0705": "No cree el servidor Redis, redis-cli, TCP y YSK_EXECUTE=1",
      "n0706": "No se aplica al servicio vsftpd: \"aplicar\" o página de servicio vsftpd donestart",
      "n0707": "Dominio de correo no aplicado",
      "n0708": "no interfaz web - API",
      "n0709": "no GeoIP: actualice",
      "n0710": "no clave DNSSEC",
      "n0711": "no nodo CDN",
      "n0712": "no clave de acceso",
      "n0713": "no (el paquete lo hará)",
      "n0714": "no configuración conexión LLM",
      "n0715": "no zona: por favor panel",
      "n0716": "CDN",
      "n0717": "Aún no hay configuración de Nginx administrada",
      "n0718": "HIT/MISS disponible: tasa de acierto general Desconocido",
      "n0719": "Aún no hay proyectos",
      "n0720": "— por favor primero planifique",
      "n0721": "Listo",
      "n0722": "y galleta",
      "n0723": "habilitar --ahora fail2ban",
      "n0724": "galera_new_cluster (arranque)",
      "n0725": "fail2ban recargado",
      "n0726": "recargar nginx",
      "n0727": "fail2ban reiniciado",
      "n0728": "zona scp (escrito en el par ≠ llamado recargado)",
      "n0729": "scp a peer /tmp (escrito en peer ≠ servicio reiniciado)",
      "n0730": "systemctl recarga nginx",
      "n0731": "y cubo redondo",
      "n0732": "UFW deshabilitado (Advertencia: puerto host)",
      "n0733": "proyecto php.ini; aplicar FPM/",
      "n0734": "administrar configuración (no se aplica al servicio del sistema)",
      "n0735": "configuración (no aplicar sistema)",
      "n0736": "Eliminado",
      "n0737": "Clave eliminada · claves_autorizadas",
      "n0738": "Clúster eliminado; manual de configuración del sistema (v1)",
      "n0739": "Clave local eliminada",
      "n0740": "agregar dirección IP (configuración escrita, reiniciar)",
      "n0741": "aplicar bases de datos (reiniciar)",
      "n0742": "apagar/reiniciar",
      "n0743": "al sistema y recargar",
      "n0744": "comenzar",
      "n0745": "HSTS habilitado",
      "n0746": "Sincronización NTP habilitada",
      "n0747": "UFW habilitado",
      "n0748": "WebDAV habilitado · Usuario básico ysk · contraseña para token ()",
      "n0749": "Servicio systemd habilitado",
      "n0750": "detener redistribución",
      "n0751": "Directorio de caché de nginx y recarga (hostnot proxy_cache puede)",
      "n0752": "servidorhechocertificadopor favor",
      "n0753": "UFW aplicado solo para CF (CF de origen + puerto mantenido)",
      "n0754": "fail2ban aplicado",
      "n0755": "Configuración aplicada al sistema Postfix",
      "n0756": "Aplicado al sistema Nginx",
      "n0757": "Regla de firewall aplicada",
      "n0758": "Instalado y ysk-server.service",
      "n0759": "Instalado en el crontab del sistema del usuario.",
      "n0760": "Wrote.google_authenticator (5 códigos rascables)",
      "n0761": "Escribí rspamd multimap + fragmento de postfix",
      "n0762": "Escribióinstalar",
      "n0763": "Escribió; \"Aplica límites al sistema operativo\" o implementa la unidad de escritura.",
      "n0764": "Escribió administración jail.local (no aplicado al sistema)",
      "n0765": "Escrito en archivos administrados; aún no aplicado al sistema conf.d",
      "n0766": "Configuración escrita (no paquete)",
      "n0767": "Escribió; proyectoprocesará",
      "n0768": "Archivo administrado escrito, configuración del sistema no aplicada: YSK_EXECUTE=1",
      "n0769": "Archivo administrado escrito, configuración del sistema no aplicada: requiere root",
      "n0770": "bloque: versión candidata",
      "n0771": "bloquear: actualizar",
      "n0772": "bloquear: Se requiere permiso de administrador",
      "n0773": "crear directorio DNSSEC ()",
      "n0774": "de",
      "n0775": "desde (instalación en disco no; desinstalación --purge)",
      "n0776": "de; cuenta del sistema DROP USER (: no descartar)",
      "n0777": "de la conexión",
      "n0778": "denegar",
      "n0779": "negar por lista de permitidos",
      "n0780": "negar: elevar el objetivo",
      "n0781": "escanear el registro de acceso de nginx",
      "n0782": "MySQL/MariaDB crear usuario",
      "n0783": "Crear PostgreSQL",
      "n0784": "versión ()",
      "n0785": "",
      "n0786": "",
      "n0787": "comodín",
      "n0788": "DS (por favor, registrador - panelwill)",
      "n0789": "addbackup (la clave maestra de dataDir puede)",
      "n0790": "Contraseña hash SHA512-CRYPT (Dovecot)",
      "n0791": "omitió la verificación de configuración de Nginx (no está instalado o no tiene permiso de cambio del sistema)",
      "n0792": "ruta del certificado (archivo /etc/ysk-server/certs)",
      "n0793": "UA",
      "n0794": "",
      "n0795": "",
      "n0796": "Remoto",
      "n0797": "Remoto",
      "n0798": ",",
      "n0799": "versión = candidato apto, disponibleaumentar",
      "n0800": "Copiado en /etc/fail2ban/jail.local",
      "n0801": "(filenot; se puede desinstalar)",
      "n0802": "Reanudar",
      "n0803": "apagado",
      "n0804": "reiniciar postgresql",
      "n0805": "reiniciar el servidor redis",
      "n0806": "reinicie el servidor redis con applyrestart",
      "n0807": "reiniciar (recargar)",
      "n0808": "Conexión reactivada (persiste después del reinicio)",
      "n0809": "Configuración de borde TLS ()",
      "n0810": "Nginx recargado (sitio estático activo si DNS apunta aquí)",
      "n0811": "Nginx recargado",
      "n0812": "El permiso de cambio del sistema está activado (YSK_EXECUTE)",
      "n0813": "contraseña: Roundcube puede iniciar sesión",
      "n0814": "administrar; servicio FTP de permiso del sistema",
      "n0815": "cuenta (usuariomod -U)",
      "n0816": "cuenta (usermod -L)",
      "n0817": "escaneo de ruta",
      "n0818": "esta propiedad intelectual",
      "n0819": "crear usuario del sistema requiere permiso de administrador del sistema",
      "n0820": "crear dominio de correo y aplicar página",
      "n0821": "hecho",
      "n0822": "\"\"",
      "n0823": "Revisar SSH y puertos no esenciales",
      "n0824": "",
      "n0825": "1 réplica; puede configurar primaria",
      "n0826": "2 nodos ( 3); poder",
      "n0827": "Considere el modo CDN bajo ataque",
      "n0828": "habilitar la prohibición",
      "n0829": "HTTPS (HTTP→301)",
      "n0830": "Complemento de autenticación predeterminado",
      "n0831": "",
      "n0832": ": estado = activo",
      "n0833": "Ruta del registro de errores",
      "n0834": "(EM)",
      "n0835": "Registro general",
      "n0836": "certificado por favor fallido",
      "n0837": "≥ archivo",
      "n0838": "configuración mantenida copia de seguridad",
      "n0839": "El éxito significa que este destino acepta BatchMode SSH (no interactivo). No es una concesión de acceso global.",
      "n0840": "o 32767",
      "n0841": "softwareInstalado",
      "n0842": "permiso/",
      "n0843": "",
      "n0844": "Binario CLI no encontrado: systemd habilitará el marcador de posición silencioso",
      "n0845": "Zona DNS no encontrada: dns.zoneId o zona de primer dominio creada",
      "n0846": "PowerDNS no encontrado: instale pdns-server / pdns-tools",
      "n0847": "No se encontró el directorio de complementos de Roundcube - Escribió; instale Roundcube o roundcubePluginsDir",
      "n0848": "SQL no encontrado",
      "n0849": "No encontrado Tamiz",
      "n0850": "No encontrado config.inc.php — por favor: $config[\\'plugins\\'][] = \\'ysk_sso\\';",
      "n0851": "Edge.conf no encontrado: primero, por favor",
      "n0852": "No encontrado: clave",
      "n0853": "No encontrado: migrar trabajo",
      "n0854": "PM2 no encontrado: no se puede con la parada de PM2",
      "n0855": "Extraviado",
      "n0856": "Clúster no encontrado",
      "n0857": "No encontrado, puede recargar el servidor de nombres local (rndc/named/bind9/pdns)",
      "n0858": "No encontradoCertificado disponible: primera página SSL o LE",
      "n0859": "No encontradoConexión NetworkManager disponible",
      "n0860": "Extraviado",
      "n0861": "Extraviado",
      "n0862": "Registro de acceso al proyecto no encontrado: nginx access_log ruta o registro",
      "n0863": "Extraviado",
      "n0864": "Extraviado",
      "n0865": "Versión no encontrada",
      "n0866": "Nodo no encontrado",
      "n0867": "Base de datos no encontrada",
      "n0868": "denegar",
      "n0869": "negar bucle invertido",
      "n0870": "negar renice",
      "n0871": "deny systemctl enable: CLI del agente no instalado (marcador de posición en ejecución)",
      "n0872": "negar bucle invertido ()",
      "n0873": "negar eliminar bucle invertido",
      "n0874": "denegar homeDir: sobrescriba Home + confirmPhrase o targetdirectory",
      "n0875": "Denegar PID 1 (init/systemd)",
      "n0876": "negar ysk; puede forzarControlPlane",
      "n0877": "negar (servidor ysk); requiere por favor fuerce a sí mismo",
      "n0878": "denegar ruta de lectura",
      "n0879": "negar camino o no",
      "n0880": "persistir por defecto requiere puerta de enlace",
      "n0881": "Persistencia",
      "n0882": "para",
      "n0883": "Comando bloqueado: el cambio de host requiere permiso de cambio de sistema (YSK_EXECUTE)",
      "n0884": "escanear",
      "n0885": "ruta de escaneo",
      "n0886": "sonda INFORMACIÓN replicación",
      "n0887": "sonda MOSTRAR ESTADO MAESTRO / RÉPLICA",
      "n0888": "sonda pg_is_in_recovery / pg_stat_replication",
      "n0889": "sonda wsrep (MOSTRAR ESTADO COMO 'wsrep%')",
      "n0890": "El plano de control escribió la configuración pero no se aplica en el host; use Aplicar en cada página de funciones",
      "n0891": "El plano de control permanece en modo normal.",
      "n0892": "Degradación de emergencia del avión de control (operaciones locales)",
      "n0893": "Directorio de datos del plano de control",
      "n0894": "El plano de control ingresa a la sugerencia de protección DDOS",
      "n0895": "completo (parcial/fallido)",
      "n0896": "Autenticación más rápida cuando los clientes usan solo IP",
      "n0897": ": Zonas de Cloudflare + CF_API_TOKEN primera API bajo ataque",
      "n0898": "no se puede hacer",
      "n0899": "Nginx y fail2ban",
      "n0900": "Rendimiento y recursos",
      "n0901": "IP/dominio. consulte Spamhaus, etc., y.",
      "n0902": "A/AAAA (ápice y www)",
      "n0903": "Texto DMARC",
      "n0904": "DNS MX/SPF/DKIM",
      "n0905": "_dmarc TXT con y.",
      "n0906": "Método + umbrales",
      "n0907": "DNS MX, SPF (TXT) y DKIM (TXT). Cloudflare: correo desactivado por favor DNS ().",
      "n0908": "Instale las herramientas PowerDNS desde la página DNS",
      "n0909": "Instale certbot desde la página SSL",
      "n0910": "Instale fail2ban desde el Centro de defensa o el banner del software",
      "n0911": "Instale y habilite UFW desde el Centro de defensa",
      "n0912": "Instale Redis desde la página de Redis",
      "n0913": "Instale los paquetes necesarios para esta verificación",
      "n0914": "A diario",
      "n0915": "Registros",
      "n0916": "directorio de registros del proyecto logwriteproject",
      "n0917": "registro",
      "n0918": "registro",
      "n0919": "logpathallow",
      "n0920": "iniciar sesión, etc.",
      "n0921": "logpathinválido",
      "n0922": "",
      "n0923": "y",
      "n0924": "Caché abierto de tabla",
      "n0925": "versión PHP",
      "n0926": "Más cárceles de fail2ban, prohibiciones más rápidas",
      "n0927": "por favor Redis",
      "n0928": "actualizar la cárcel de fail2ban (archivo administrado)",
      "n0929": "actualizarIncompleto",
      "n0930": "Límites más estrictos de Nginx (~1 solicitud/s)",
      "n0931": "12 directorio",
      "n0932": "8 servidores de nombres",
      "n0933": "archivo",
      "n0934": "",
      "n0935": "WAL",
      "n0936": "",
      "n0937": "",
      "n0938": "Errores de conexión máximos",
      "n0939": "",
      "n0940": "Servidor HTTP (/salud)+ directorio público",
      "n0941": "",
      "n0942": "",
      "n0943": "Disponibleaumentar",
      "n0944": "Cuando aparecen escaneos/fuerza bruta",
      "n0945": "",
      "n0946": "Error en el volcado de base de datos/Redis (se transferirá)",
      "n0947": "servicio inválido",
      "n0948": "no WordPress (/)— WORDPRESS_INSTALL.txt",
      "n0949": "no con el inicio de la unidad del sistema (requiere root +): pidfile",
      "n0950": "no pam_google_authenticator - apto para instalar libpam-google-authenticator",
      "n0951": "no 2FA",
      "n0952": "Resumen del plano de control exportado únicamente (Nginx no sincronizado)",
      "n0953": "No se aplica al sistema nginx (YSK_EXECUTE + root): estado: escrito",
      "n0954": "No aplicado al sistema: YSK_EXECUTE + root",
      "n0955": "redis-cli no está instalado",
      "n0956": "no escribir archivo",
      "n0957": "el sistema no puede verificar el cambio - estará bien",
      "n0958": "no postgresql conf.d — conf dataDir; voluntad sistema aplicado",
      "n0959": "no secrets/ssh/.master.key YSK_SECRETS_KEY — targetcan no puede vault/2FA",
      "n0960": "no",
      "n0961": "No investigado",
      "n0962": "no certbot/LE cron (sistema disponible certbot.timer)",
      "n0963": "no configuración de nginx",
      "n0964": "Clave de acceso desconocida",
      "n0965": "Fuente desconocida (revista:... / archivo:... / proyecto:...)",
      "n0966": "Desconocido",
      "n0967": "software desconocido",
      "n0968": "ID de software desconocido",
      "n0969": "software desconocido",
      "n0970": "Desconocido",
      "n0971": "no, negar (volcar)",
      "n0972": "no proyectar inicio — escribir ftps/ssh; coincidencia sshd",
      "n0973": "no aplicar actualización: por favor YSK_SOURCE_ROOT directorio git, o publique el paquete npm YSK_NPM_PACKAGE",
      "n0974": "no - lo hará \"\"",
      "n0975": "no - voluntad",
      "n0976": "no City Lite — /ASN; actualizar puede DB-IP (CC BY)",
      "n0977": "no City Lite — /; por favor actualice (DB-IP)",
      "n0978": "no a /etc/nginx (no root o no EJECUTAR): configuración administrada dataDir",
      "n0979": "no configuración CF_API_TOKEN — no se puede API de Cloudflare",
      "n0980": "no configuración Token API de Cloudflare – ejecución en seco",
      "n0981": "no configuración (deshabilitar)",
      "n0982": "Hecho",
      "n0983": "no instalar en el sistema (installSystem=false)",
      "n0984": "YSK_EXECUTE no está habilitado",
      "n0985": "El cambio de sistema está desactivado (el plano de control solo puede escribir configuraciones)",
      "n0986": "no enablesystemchange: no se puede dnssec-keygen",
      "n0987": "no contraseña: verificar correo electrónico ()",
      "n0988": "no verificar/recargar: la ejecución de serverHost no está habilitada (archivo administrado de escritura)",
      "n0989": "conf, por favor primero planifica",
      "n0990": "respaldo",
      "n0991": "zona",
      "n0992": "certificado (o de no)",
      "n0993": "inválido",
      "n0994": "El límite de tasa de prohibición se alcanzó esta hora: consulte el Centro de defensa",
      "n0995": "la ip local admite -j; por favor levante iproute2 (notas)",
      "n0996": "nginx local -t OK (configuración administrada, ≠ borde aplicado)",
      "n0997": "wsrep local puede, tamaño no nodo",
      "n0998": "ysk.json local no puede leer/huella digital",
      "n0999": "El nodo local está bien; un estado completo y saludable necesita una prueba de pares (no realizada).",
      "n1000": "nginx local - conf Escribió, no recargó",
      "n1001": "Conexión NM local disponible; voluntadÉxito. puede \"\" o NetworkManager.",
      "n1002": "localAvailable ps - no puede ()",
      "n1003": "conexión NM local; voluntadÉxito. puede \"\" o NetworkManager.",
      "n1004": "puede prohibir",
      "n1005": "inválido",
      "n1006": "estado del servicio",
      "n1007": "El uso del sistema de archivos raíz supera el 90%",
      "n1008": "directorioinválido",
      "n1009": "Espacio en disco raíz",
      "n1010": "Descripción general",
      "n1011": "TcpListener (caja); carga.toml",
      "n1012": "red/http; ir.mod; / y /salud",
      "n1013": "Modo: listo para producción",
      "modeProductionCapable": "listo para la producción",
      "modeDegraded": "degradado",
      "n1014": ": no",
      "n1015": "Ejecución en seco finalizada: nada copiado ni recargado (desactive la ejecución en seco para una sincronización real)",
      "n1016": "Ejecución en seco finalizada: la sincronización real necesita root y YSK_EXECUTE",
      "n1017": "with.conf",
      "n1018": "with.sieve",
      "n1019": "Archivos",
      "n1020": "archivo y PUBLICAR",
      "n1021": "El archivo no existe o no puede",
      "n1022": "El archivo no existe o está eliminado",
      "n1023": "proceso de verificación; anfitrión",
      "n1024": "archivo de verificación",
      "n1025": "controlar ()",
      "n1026": "controlar",
      "n1027": "porque no puedo escribir",
      "n1028": "permiso para 3 o 4",
      "n1029": "permiso y",
      "n1030": "OK",
      "n1031": "Operaciones del día a día",
      "n1032": "por favor SECRET_KEY/DEBUG y configdatabase",
      "n1033": "planificador Soporta mariadb + mariadb-galera",
      "n1034": "planificador Soporta mysql + mysql-replica",
      "n1035": "estehost systemd servicemanage",
      "n1036": "este proyecto Tiempo de ejecución del nodo, por favor Nodo",
      "n1037": "este proyecto Tiempo de ejecución del nodo, por favor Nodo (o tiempo de ejecución para estático)",
      "n1038": "esta actualización (/). por favor aplique.",
      "n1039": "esto para (DNS/IP); no se puede PTR/ 25",
      "n1040": "esto se aplica al sistema",
      "n1041": "este paquete de software apto",
      "n1042": "ajustes;,, límites",
      "n1043": "proyecto con usuario de Linux/activo",
      "n1044": "Límite de prohibición automática por hora",
      "n1045": "(IPinfo Lite)",
      "n1046": "Prohibición permanente",
      "n1047": "nodo de borde: primero el borde de la página CDN",
      "n1048": "puede aplicar aumento (candidato o y versión)",
      "n1049": "proyecto puede descansar",
      "n1050": "copia de seguridad del proyecto (0): falló",
      "n1051": "puede para",
      "n1052": "registro/copia de seguridad; configuración de host",
      "n1053": "regla de firewall - negar",
      "n1054": "requiere y",
      "n1055": "crear usuario del sistema...",
      "n1056": "instalación de WP habilitada para el navegador",
      "n1057": ".zona puede",
      "n1058": "HostExecutor: seleccione el archivo",
      "n1059": "HostExecutor - chown (por favor chown)",
      "n1060": "IP escribir DNS",
      "n1061": "conexión NM;",
      "n1062": "conexión NM;",
      "n1063": "volcado de Redis",
      "n1064": "volcado de base de datos SQL",
      "n1065": "Objetivo SSH",
      "n1066": "SSH/objetivo de flota",
      "n1067": "acceder al estado de la caché de registro, directorio de caché: tasa de aciertos desconocida (por favor, log_format o primero aplique el borde)",
      "n1068": "acceso = flota flotaAgentId",
      "n1069": "acceso=ssh - por favor cree:ssh o miembros",
      "n1070": "Escrito en el plano de control; no aplicado en el host",
      "n1071": "apto-obtener",
      "n1072": "desafío de autenticación",
      "n1073": "enlazar_ip",
      "n1074": "dataDir - base de datos actualizada",
      "n1075": "dominio vacaciones.sieve: omitido por buzón",
      "n1076": "se puede aplicar borde (omitir/drenar)—conf escrito",
      "n1077": "galera_new_cluster; reiniciar mariadb",
      "n1078": "dir_inicio",
      "n1079": "instalar: estado de almacenado",
      "n1080": "linuxUsuario",
      "n1081": "clave maestra / YSK_SECRETS_KEY",
      "n1082": "servidor de nombres (no se puede configurar)",
      "n1083": "rdbRelPath",
      "n1084": "desafío de registro",
      "n1085": "par ssh",
      "n1086": "ssh par puede",
      "n1087": "sshpass (clave/agente)",
      "n1088": "vacaciones.tamiz puede",
      "n1089": "vhost requiere actualización (o servidor de configuración)",
      "n1090": "Estado de wsrep (no se puede Galera o servicenot)",
      "n1091": "cárcel activa o fail2ban no se ejecuta",
      "n1092": "registro",
      "n1093": "sistema de lata (escrito)",
      "n1094": "puede apuntar (healthUrl / baseUrl / publicIpv4)",
      "n1095": "Registro de acceso disponible ( o )",
      "n1096": "Registro de acceso disponible (Disponible/prohibido)",
      "n1097": "Registro de acceso/autenticación disponible",
      "n1098": "IP perimetral disponible: DNS (mantenido administrado)",
      "n1099": "Usuario estricto disponible (o no)",
      "n1100": "configuración no válida",
      "n1101": "ID de exportación no válido",
      "n1102": "exportación no válida",
      "n1103": "Usuario_linux no válido",
      "n1104": "Clave pública no válida",
      "n1105": "ID de instantánea no válida",
      "n1106": "Token no válido",
      "n1107": "Unidad no válida",
      "n1108": "unidad no válida",
      "n1109": "tamaño de vacío no válido (: 500M)",
      "n1110": "tiempo de vacío no válido (: 7d)",
      "n1111": "copia de seguridad no válida",
      "n1112": "copia de seguridad no válida",
      "n1113": "puerto inválido",
      "n1114": "clave inválida",
      "n1115": "ID de proyecto no válido",
      "n1116": "copia de seguridad no válida",
      "n1117": "patrón no válido",
      "n1118": "regla inválida",
      "n1119": "base de datos no válida",
      "n1120": "dominio - mapa para (systemapplywill postmap)",
      "n1121": "IP",
      "n1122": "Enriquecimiento de prohibición automática disponible",
      "n1123": "no se puede prohibir al sistema: YSK_EXECUTE; a la prohibición del panel",
      "n1124": "no se puede volcar Redis: redis-cli",
      "n1125": "no se puede volcar: la ejecución de serverHost no está habilitada",
      "n1126": "no se puede desplegar: la ejecución del host no está habilitada",
      "n1127": "no se puede importar: la ejecución de serverHost no está habilitada",
      "n1128": "no se puede enumerar: la ejecución del host no está habilitada",
      "n1129": "No se puede sondear el clúster DNS: la ejecución del host no está habilitada",
      "n1130": "no se puede sondear: la ejecución del host no está habilitada (EJECUCIÓN SSH)",
      "n1131": "no se puede purgar la caché: la ejecución del host no está habilitada (YSK_EXECUTE)",
      "n1132": "no se puede purgar: la ejecución del host no está habilitada",
      "n1133": "No se puede recargar remotamente: la ejecución del host no está habilitada",
      "n1134": "No se puede restringir: la ejecución del host no está habilitada.",
      "n1135": "no se puede restaurar: la ejecución del host no está habilitada",
      "n1136": "no se puede realizar scp: YSK_EXECUTE=1",
      "n1137": "no puedo quedarme en casa",
      "n1138": "no se puede realizar un enlace simbólico: la ejecución del host no está habilitada",
      "n1139": "no se puede desbanear: la ejecución del host no está habilitada",
      "n1140": "no se puede desbanear: YSK_EXECUTE",
      "n1141": "no puede ser administrador: la ejecución del host no está habilitada",
      "n1142": "no se puede WordPress: la ejecución de serverHost no está habilitada",
      "n1143": "no se puede PM2, localprocessmanage",
      "n1144": "no se puede: no habilitar YSK_EXECUTE",
      "n1145": "No se puede detener PM2: la ejecución de serverHost no está habilitada",
      "n1146": "no se puede SSL: la ejecución del host no está habilitada",
      "n1147": "Sincronización bloqueada: necesita YSK_EXECUTE",
      "n1148": "No se puede acceder al sistema Nginx: se requiere permiso de ejecución del host",
      "n1149": "No se puede iniciar PM2: la ejecución de serverHost no está habilitada",
      "n1150": "no se puede Apache: se requiere permiso de ejecución del host",
      "n1151": "no se puede NTP: se requiere permiso de ejecución del host y root",
      "n1152": "no se puede PHP-FPM: requiere permiso de administrador del sistema",
      "n1153": "No se puede realizar el servicio systemd (por favor, permiso)",
      "n1154": "no se puede realizar el servicio systemd: requiere permiso systemadmin",
      "n1155": "no puedo dar servicio: requiere permiso de administrador del sistema",
      "n1156": "no se puede apuntar a instalar rsync, apuntar a rsync",
      "n1157": "el sistema no puede crear una cuenta: requiere YSK_EXECUTE + root; (escrito/bloqueado)",
      "n1158": "no se puede certificar: la ejecución del host no está habilitada",
      "n1159": "no operación: Se requiere permiso de ejecución del host (YSK_EXECUTE) y root",
      "n1160": "no se puede aplicar al sistema: requiere YSK_EXECUTE + root",
      "n1161": "canonapplysystemsettings: Se requiere permiso de ejecución del host",
      "n1162": "no se puede aplicar: fallido",
      "n1163": "No se puede instalar PowerDNS: requiere permiso de administrador del sistema",
      "n1164": "No se puede instalar en /etc/ssh: requiere YSK_EXECUTE + root",
      "n1165": "no se puede instalar en el sistema: la ejecución de serverHost no está habilitada (archivo administrado de escritura)",
      "n1166": "no se puede: la ejecución del host del servidor no está habilitada o no está instalado el servicio de correo",
      "n1167": "no se puede crear una base de datos de usuarios virtuales (db_load)",
      "n1168": "no se puede crear una base de datos, puede fallar",
      "n1169": "no se puede crear un usuario de correo del sistema: requiere permiso de administrador del sistema",
      "n1170": "no se puede desde la versión npm o GitHub (no)",
      "n1171": "no puedo probar systemctl",
      "n1172": "No se puede agrupar DNS: la ejecución del host no está habilitada",
      "n1173": "no se puede: la ejecución del host no está habilitada (backupSuccess)",
      "n1174": "no se pueden medir",
      "n1175": "no se puede: la ejecución de serverHost no está habilitada",
      "n1176": "no se puede ACME: la ejecución del host no está habilitada",
      "n1177": "no se puede cifrar el hash de contraseña (requiere contraseña de openssl)",
      "n1178": "no se puede: la ejecución de serverHost no está habilitada",
      "n1179": "no se pueden realizar tareas (estado ps fallido)",
      "n1180": "no se puede dividir en zona el directorio dnssec",
      "n1181": "no se puede usar la huella digital ysk.json",
      "n1182": "no se puede /etc/resolv.conf",
      "n1183": "no puedo leer cmdline (puede o permiso)",
      "n1184": "no puedo leer la regla numerada",
      "n1185": "no puedo leer las estadísticas",
      "n1186": "no puedo leer: la ejecución de serverHost no está habilitada",
      "n1187": "no puedo leer al usuario con check 2FA",
      "n1188": "no puedo leer el objetivo",
      "n1189": "no se puede cambiar UFW: YSK_EXECUTE=1",
      "n1190": "canchangehost/: Se requiere permiso de ejecución del host y root",
      "n1191": "no se puede cambiar: se requiere permiso de ejecución del host (YSK_EXECUTE) y root",
      "n1192": "no se puede zona PowerDNS: la ejecución de serverHost no está habilitada",
      "n1193": "no se puede IPv4/IPv6",
      "n1194": "no se puede conectar 127.0.0.1:6379",
      "n1195": "no se puede conectar el objetivo",
      "n1196": "",
      "n1197": "No hay bloqueadores duros en esta sonda",
      "n1198": "directorio clave",
      "n1199": "usuario",
      "n1200": "— sistema de tamiz",
      "n1201": "creardirectorio",
      "n1202": "Cortacircuitos",
      "n1203": "Escribí dataDir/security/fail2ban (no en /etc)",
      "n1204": "; por favor recarga",
      "n1205": "Borrador de estado: vaya a la página de servicio FTP \"aplicar\" escribirá vsftpd",
      "n1206": "Estado y versión",
      "n1207": "Estado:",
      "n1208": "Estado: aplicado (yunque + política por remitente + mapas)",
      "n1209": "Estado: aplicado (enlace simbólico + complementos de configuración [] habilitados)",
      "n1210": "Estado: aplicado (directorio)",
      "n1211": "Estado: aplicado (homeDir)",
      "n1212": "Estado: aplicado (éxito del sistema)",
      "n1213": "Estado: aplicado (clave+zona; no registrador)",
      "n1214": "Estado: bloqueado - archivo administradoEscrito; no Postfix/Palomar",
      "n1215": "Estado: bloqueado (marcador de posición escrito)",
      "n1216": "Estado: bloqueado (demonio de políticas; systemapply EJECUTAR+raíz)",
      "n1217": "Estado: ejecutado ≠, a certbot hecho recarga",
      "n1218": "Estado: fallido (nginx -t o recarga fallida)",
      "n1219": "Estado: parcial — se aplicará (Éxito)",
      "n1220": "Estado: parcial: error del sistema",
      "n1221": "Estado: parcial (enlace simbólico exitoso; configuración para agregar complementos): se aplicará la finalización",
      "n1222": "Estado: solo vista previa",
      "n1223": "Estado: escrito/parcial (sistema/recarga/verificar si no es exitoso)",
      "n1224": "Estado: escrito/parcial (pasos clave fallidos - aplicado)",
      "n1225": "Estado: escrito (aplicar=falso; no aplicado al sistema)",
      "n1226": "Estado: escrito (se aplica sistema bloqueado)",
      "n1227": "Estado: escrito (conf Escrito; recarga bloqueada)",
      "n1228": "Estado: escrito ()—borde No aplicado; Distribución PR-C3 + nginx -t/reload",
      "n1229": "Estado: escrito (No se aplica al sistema Postfix/Rspamd)",
      "n1230": "Estado: escrito (no en el sistema Nginx; applySystem intentará recargar)",
      "n1231": "Estado: escrito (administrar; cliente fail2ban activo YSK_EXECUTE, o \"→aplicar al sistema\" jail.local)",
      "n1232": "Estado: escrito (clave/DS; zona no o no zona)",
      "n1233": "Estado: escrito (no SSO)",
      "n1234": "Estado: escrito (no /no)—Éxito",
      "n1235": "Estado: escrito (/archivo administrado)",
      "n1236": "Estado: Escrito y exitoso recargar el servidor de nombres",
      "n1237": "Estado: Wrotemanage zona (no para DNS, no recargar el servidor de nombres)",
      "n1238": "Estado: archivo administrado escrito (no aplicado al sistema)",
      "n1239": "Estado: datos (no )",
      "n1240": "TOTP (y operador de panel 2FA)",
      "n1241": "operador de panel 2FA",
      "n1242": "Ciclo vital",
      "n1243": "se puede apagar y recargar",
      "n1244": "por favor deshabilite",
      "n1245": "Puerta de producción: no cumplida en su totalidad; revise los elementos siguientes",
      "n1246": "Puerta de producción: aprobada (permisos, Nginx, Nodo listo)",
      "n1247": "Aislamiento de producción: abra la pestaña Recursos del proyecto para crear un usuario y un hogar de Linux",
      "n1248": "usuario 2–32 [a-z0-9._-]",
      "n1249": "por favor SSL requiere dominio y",
      "n1250": "límites; camino:",
      "n1251": "sistema; puede camino",
      "n1252": "",
      "n1253": "Saltar resolución de nombre DNS",
      "n1254": "chown omitido (no con raíz)",
      "n1255": "chown omitido (YSK_EXECUTE + raíz): filecan para el usuario",
      "n1256": "nodo de drenaje",
      "n1257": "recarga omitida: verificación de zona fallida",
      "n1258": "recarga remota (reload=false): escrita ≠ aplicada",
      "n1259": "usermod (no os_provisioned)",
      "n1260": "Aplicar zona omitida (applyZone=false): actualizar registros",
      "n1261": "Nombre de usuario no válido omitido",
      "n1262": "DDoS – Degradado activo",
      "n1263": "IP: negar",
      "n1264": ": omitido",
      "n1265": "IP/dominio y",
      "n1266": "Direcciones para vincular (0.0.0.0 = todas)",
      "n1267": "",
      "n1268": "con proceso local",
      "n1269": "con PHP",
      "n1270": "permiso para firewallStatus (no)",
      "n1271": "No ejecutarse como root; algunas configuraciones del sistema no se pueden aplicar",
      "n1272": "Error en el objetivo ysk.json",
      "n1273": "CLI de destino ysk-server: inicie o npm i -g ysk-server",
      "n1274": "apuntar a datos YSK, forceWipeTarget",
      "n1275": "objetivo rsync",
      "n1276": "para raíz",
      "n1277": "usuario objetivo",
      "n1278": "objetivo rsync (instalación de arranque)",
      "n1279": "targetrequiere sshpass (No instalado)",
      "n1280": "Objetivo fallido",
      "n1281": "objetivo no superado",
      "n1282": "objetivo superado",
      "n1283": "with.zip",
      "n1284": "realmente ejecutar + YSK_EXECUTE=1",
      "n1285": "<?",
      "n1286": "omitido: no os_provisioned",
      "n1287": "usuario invitado",
      "n1288": "80/443 puede desde hasta (LE HTTP-01)",
      "n1289": "Tiempo de ejecución PHP y preparado para FPM",
      "n1290": "Puerto 25",
      "n1291": "Disco, copias de seguridad, AOF/WAL",
      "n1292": "Poco espacio en disco",
      "n1293": "",
      "n1294": "/local, aplicar geo",
      "n1295": "",
      "n1296": "; 0 = (CLI)",
      "n1297": "; por favor",
      "n1298": "paquete",
      "n1299": "¿Cuánto tiempo se deben mantener los registros binarios?",
      "n1300": "inválido",
      "n1301": "nodo de borde",
      "n1302": "versión de host",
      "n1303": "host de nodo no válido",
      "n1304": "nodo no válido",
      "n1305": "drenaje de nodos —, drenaje de estado",
      "n1306": "aplicación del sistema YSK_EXECUTE + raíz",
      "n1307": "usuario del sistema (no provisión o)",
      "n1308": "Administrador del sistema (root)",
      "n1309": "No root: las rutas del sistema useradd/systemd/nginx están restringidas",
      "n1310": "Permiso de cambio de sistema",
      "n1311": "Carga del sistema",
      "n1312": "software del sistema",
      "n1313": "",
      "n1314": "",
      "n1315": "",
      "n1316": "(verificar puerto no puede)",
      "n1317": "no se puede conectar",
      "n1318": "Web",
      "n1319": "sincronización",
      "n1320": "ssh",
      "n1321": "ysk.json",
      "n1322": "Falta conferencia, por favor planifique primero",
      "n1323": "Falta dataDir, no se puede instalar el tiempo de ejecución",
      "n1324": "Falta linuxUser/homeDir",
      "n1325": "Prohibición temporal",
      "n1326": "clave fallida",
      "n1327": "claveLa instalación falló",
      "n1328": "VACUUM",
      "n1329": "prohibir → desactivar ()",
      "n1330": "prohibición: no habilitar el cambio del sistema (YSK_EXECUTE)",
      "n1331": "prohibición",
      "n1332": "Interruptor automático o manual",
      "n1333": "desactivado",
      "n1334": "IP: negar",
      "n1335": "",
      "n1336": ": Estado escrito, no Dovecot/Pigeonhole (ManageSieve o enlace simbólico)",
      "n1337": "escalado automáticamente",
      "n1338": "permitir ruta",
      "n1339": "objetivo",
      "n1340": "nodo de borde",
      "n1341": "requiere dominio",
      "n1342": "requierenodo",
      "n1343": "requiere (control/origen/borde/dns)",
      "n1344": "y operador de panel 2FA",
      "n1345": "claves_autorizadas remotas, actualización o autorización propia",
      "n1346": "Dominio no válido",
      "n1347": "Tamaño de la tabla de temperatura",
      "n1348": "filtro/cárcel systemctl recarga fail2ban",
      "n1349": "Jail.local falló",
      "n1350": "Ver registro de auditoría",
      "n1351": "Éxito (secreto)",
      "n1352": "límite_req",
      "n1353": "inválido",
      "n1354": "Señales de suma 0–100 → nivel de amenaza",
      "n1355": "Memoria, buffers, concurrencia.",
      "n1356": "",
      "n1357": "Uso elevado de memoria",
      "n1358": "Presión de la memoria",
      "n1359": "",
      "n1360": "Memoria y V8",
      "n1361": "Tamaño máximo de tabla de montón",
      "n1362": "puede para",
      "n1363": "",
      "n1364": "Error al iniciar sesión",
      "n1365": "",
      "n1366": "configuración DNS (PTR)",
      "n1367": "administrar configuración; configuración del sistema/permiso de reinicio",
      "n1368": "configuraciónWroteApply falló",
      "n1369": "configuraciónWroteconnectionRestart falló; por favor conecte nmcli",
      "n1370": "settingsWroteconnectionFailed, por favor establezca la conexión con nmcli",
      "n1371": "configuración del producto ysk-server",
      "n1372": "configuraciónError (para)",
      "n1373": "configuraciónDatos faltantesDir",
      "n1374": "bloquear TCP 25. por favor, o SMTP.",
      "n1375": "Puntaje",
      "n1376": ": crear, etc CDN",
      "n1377": ": el solucionador será A —; IP de borde o Anycast",
      "n1378": "por favor CIDR, 192.168.1.10/24",
      "n1379": "POR FAVOR PUBLICAR /api/v1/ssl/upload o PUBLICAR /api/v1/ssl/letsencrypt",
      "n1380": "por favor primer nodo CDN (PR-C1)",
      "n1381": "por favor primer mantenimientoAceptado",
      "n1382": "Abra operaciones de copia de seguridad y verifique los resultados laterales.",
      "n1383": "Abra la página de Copias de seguridad para obtener más detalles.",
      "n1384": "Alertas abiertas → auditoría de estado de aplicación",
      "n1385": "Abra el Centro de defensa para revisar las señales y cambiar el ajuste preestablecido de protección",
      "n1386": "instale conf y reinicie / únase",
      "n1387": "Por favor ingrese el nombre del servidor",
      "n1388": "por favor serverName y upstream",
      "n1389": "por favor nombre del servidor y directorio",
      "n1390": "por favor nombre del servidor, directorio y socket FPM",
      "n1391": "Por favor ingresa a la zona",
      "n1392": "por favor zona",
      "n1393": "por favor anfitrión",
      "n1394": "por favor agrupar (≤64)",
      "n1395": "por favor",
      "n1396": "por favor usuario, y",
      "n1397": "por favor nodo (IP no disponible)",
      "n1398": "por favor DNS A/AAAA IP; comprobar firewall y correo PTR",
      "n1399": "por favor XML al nombre de host o al host DNS",
      "n1400": "Por favor especifique IP",
      "n1401": "por favor acción o mtu",
      "n1402": "Por favor especifique dataDir",
      "n1403": "Por favor especifica escucharHost",
      "n1404": "por favor comprime la ruta",
      "n1405": "por favor haga una copia de seguridad",
      "n1406": "por favor Estado (/)",
      "n1407": "por favor",
      "n1408": "por favor",
      "n1409": "por favor ruta de configuración",
      "n1410": "Especificar una ruta y un permiso",
      "n1411": "Especificar una ruta y una versión",
      "n1412": "Especifique una ruta y",
      "n1413": "por favor DKIM",
      "n1414": "por favor Git URL (o primera configuración del proyecto)",
      "n1415": "por favor ip",
      "n1416": "por favor empaquete",
      "n1417": "por favor paquete y versión",
      "n1418": "por favor contraseña ( 8 )",
      "n1419": "por favor",
      "n1420": "por favor",
      "n1421": "por favor - Habilitado",
      "n1422": "por favor \"aplicar al sistema\" o proyecto PHP (grupo php_admin_*)",
      "n1423": "por favor /etc/default/ufw IPV6=yes",
      "n1424": "Asegúrese de que dataDir exista y que el proceso pueda escribir en él",
      "n1425": "por favor servidor de nombres, o \"restaurar DNS DHCP\"",
      "n1426": "por favor publicIpv4/publicIpv6/healthUrl/baseUrl",
      "n1427": "por favor",
      "n1428": "por favor presente",
      "n1429": "limite la autenticación IP o HTTP",
      "n1430": "Advertencia: manifiesto empaquetado en: base de datos, primero empaquete",
      "n1431": "Advertencia: unidad para CLI binario activo no encontrado (puede ser unidad de marcador de posición)",
      "n1432": "Advertencia: apunta a datos YSK",
      "n1433": "Advertencia: esta interfaz para el panel de lata inferior",
      "n1434": "Advertencia: secrets/ssh/.master.key YSK_SECRETS_KEY (vault/2FA no puede)",
      "n1435": "Advertencia: config.json (se puede configurar)",
      "n1436": "leer prohibido Error",
      "n1437": "permiso de lectura prohibido; desbanear/banear YSK_EXECUTE",
      "n1438": "leer prohibido Error (permiso o servicio)",
      "n1439": "leer prohibiciones de fail2ban fallidas",
      "n1440": "lectura fallida",
      "n1441": "error de lectura del registro",
      "n1442": "leer archivo",
      "n1443": "sistema de lectura",
      "n1444": "cambiar valor predeterminado confirmDefault: verdadero",
      "n1445": "changewillwritearchivo administrado; \"aplicar al sistema\" /etc/php/.../conf.d y recargará FPM",
      "n1446": "Carga alta",
      "n1447": "lata de datos; install/restartserviceHost requiere permiso de ejecución",
      "n1448": "base de datos puede (>7)—actualizar",
      "n1449": "base de datos no crear. por favor mysql y YSK_EXECUTE=1.",
      "n1450": "base de datos no crear. por favor psql, TCP y YSK_EXECUTE=1.",
      "n1451": "base de datos",
      "n1452": "nombre de la base de datos",
      "n1453": "base de datos",
      "n1454": "directorio de datos",
      "n1455": "Abra la pestaña Recursos del proyecto para crear el usuario del sistema.",
      "n1456": "límites",
      "n1457": "",
      "n1458": "rutapermitir",
      "n1459": "ruta permitir directorio de registro",
      "n1460": "caminodeny",
      "n1461": "",
      "n1462": "inicio: objetivo canónico completo",
      "n1463": "; setquota por favor \"aplica límites al sistema operativo\"",
      "n1464": "",
      "n1465": "datos no válidos",
      "n1466": "; puede empaquetar",
      "n1467": "para RAM 25%",
      "n1468": "Conexiones y red",
      "n1469": "(puede MATAR)",
      "n1470": "(matar -0 fallido)",
      "n1471": "Avanzado",
      "n1472": ": panel secreto (y operador 2FA -)",
      "n1473": "Operaciones",
      "n1474": "Configuración SFTP completa (host/nombre de usuario/ruta)",
      "n1475": "aplicado ≠ clúster en buen estado: investigue --peers",
      "n1476": "Error al migrar la publicación",
      "n1477": "mkdir falló",
      "n1478": "publicar ok=falso",
      "n1479": "backupnot (omitido)",
      "n1480": "instalar YSK_EXECUTE=1",
      "n1481": "No encontrado rndc / nombre activo|bind9|pdns",
      "n1482": "La inserción remota o la resticidad fallaron: es posible que el tar local haya tenido éxito; ver al ladoResultados",
      "n1483": "archivo,,",
      "n1484": "nombre activo/bind9/pdns (puede archivo scp)",
      "n1485": "nginx - conf scp (escrito en el mismo nivel)",
      "n1486": "Pasos remotos / restringidos procesados",
      "n1487": "requiere YSK_EXECUTE + raíz",
      "n1488": "restaurarnot chown (Requiere root + YSK_EXECUTE)",
      "n1489": "DNSBL no completo Admite IPv6;",
      "n1490": "aplicado por pares; escrito o fallido: recarga del clúster",
      "n1491": "recarga de pares exitosa (parcial)",
      "n1492": "Algunas o todas las copias de seguridad fallaron: vea los resultados",
      "n1493": "o No aplicado al sistema (YSK_EXECUTE)",
      "n1494": "Error: verifique la clave SSH/firewall",
      "n1495": "Error: pasos",
      "n1496": "sistema fallido",
      "n1497": "",
      "n1498": "PHP + Nginx (aplicación/público)",
      "n1499": "Se puede anular en el momento de la implementación",
      "n1500": "irá a construir -o aplicación.; hostInstalled cadena de herramientas Go",
      "n1501": "será venv + pip; ExecStart uvicorn principal: aplicación",
      "n1502": "será venv + pip; entrada app.py (no ASGI)",
      "n1503": "/aplicar grupo FPM escribir php_admin_value",
      "n1504": ": panel\"\"iniciará server.js; escrito ≠",
      "n1505": "servidor de correo A",
      "n1506": "servidor de correo AAAA (IPv6)",
      "n1507": "Directorio de configuración de administración de correo",
      "n1508": "ID inválido",
      "n1509": "inválido",
      "n1510": "para 1–1000000 MiB",
      "n1511": "1 MB",
      "n1512": "reiniciar servicio del sistema",
      "n1513": "prohibir agregar",
      "n1514": "recargar vsftpd",
      "n1515": "servicio de recarga",
      "n1516": "Error, etc.",
      "n1517": "Registro de errores, registro de consultas lento",
      "n1518": "Error y registro",
      "n1519": "Números de umbral",
      "n1520": "FILA recomendada para replicación",
      "n1521": "Tiempo de espera",
      "n1522": "Apagado",
      "n1523": "firewall (UFW no se aplica al sistema)",
      "n1524": "cortafuegos (): TCP 3306, 4567, 4444, 4568",
      "n1525": "Escrituras preestablecidas nginx limit_req",
      "n1526": "(mantener), bajar",
      "n1527": "Defensa: crítica",
      "n1528": "Defensa: preestablecido de emergencia sugerido",
      "n1529": "Defensa: posible ataque",
      "n1530": "límitesEscribió; aplicar al sistema operativo YSK_EXECUTE + raíz",
      "n1531": "Límite de tarifa",
      "n1532": "",
      "n1533": "/DB; Postfix/Rspamd por favor \"aplicar/al sistema\"",
      "n1534": ": degradado: compilar/procesar con el usuario; por favor cree un usuario del sistema",
      "n1535": ": degradado - proceso puede con el usuario; por favor rootee + YSK_EXECUTE y creesystemuser",
      "n1536": "ahorrar; Secreto TOTP. El autenticador puede.",
      "n1537": "EJECUTAR + rootear el primer vacío",
      "n1538": "DNS persistente activo de NetworkManager (será /etc/resolv.conf)",
      "n1539": "YSK_EXECUTE primero puede aplicar ufw",
      "n1540": "YSK_EXECUTE realmente prohibirá automáticamente",
      "n1541": "YSK_EXECUTE banip",
      "n1542": "Servicio YSK_EXECUTE fail2ban",
      "n1543": "YSK_EXECUTE=1 diario de vacío del primer bote",
      "n1544": "ejecutar: verdadero o dryRun: verdadero",
      "n1545": "nginx log_format $upstream_cache_status (o X-YSK-Cache)primer HIT/MISS",
      "n1546": "Requiere root + YSK_EXECUTE willreally useradd; voluntad éxito",
      "n1547": "Requiere root journalctl --vacuum",
      "n1548": "Requiere root firstcan UFW",
      "n1549": "hostInstalled cargo/rustc",
      "n1550": "alojar Python y pip",
      "n1551": "alojar Python y pip (installwillFailed)",
      "n1552": "Instale bind9-dnsutils y enablesystemchangepermission, realmente puede dnssec-keygen.",
      "n1553": "Requiere cadena de confirmación EMERGENCIA; Evite encerrarse",
      "n1554": "sistema sshd Coincidencia/Configuración de usuariorealmente",
      "n1555": "requiere --target o currículum --job",
      "n1556": "requiere permiso de administrador de MySQL/MariaDB",
      "n1557": "requiere YSK_EXECUTE",
      "n1558": "requiere administrador YSK_EXECUTE",
      "n1559": "requiere administrador",
      "n1560": "requiere aws CLI (o repositorio restic s3)",
      "n1561": "requiere identificación o todo",
      "n1562": "requiere ip",
      "n1563": "requiere ID de trabajo",
      "n1564": "requiere linuxUser o projectId",
      "n1565": "requiere nodo maestro",
      "n1566": "requiere nginx geoip2 (libnginx-mod-http-geoip2) primero será HTTP",
      "n1567": "requiere nodo primario",
      "n1568": "requiere clave privada",
      "n1569": "requiere ID de proyecto",
      "n1570": "requiere raíz",
      "n1571": "requiere fuente",
      "n1572": "requiere sshpass, clave YSK (identityId) o clave SSH local",
      "n1573": "requiere destino (root@host) o jobId con currículum",
      "n1574": "requiere objetivo o ID de trabajo de destino",
      "n1575": "requiere nombre de usuario y ssh-",
      "n1576": "requiere dominio de zona",
      "n1577": "requiere contraseña",
      "n1578": "requiere correo electrónico",
      "n1579": "requiere correo electrónico y dominio",
      "n1580": "requiere versión y versión",
      "n1581": "requiere candidataVersion (puede etc actual o)",
      "n1582": "requiere permiso de administrador del sistema hecho instalación",
      "n1583": "Se requiere root para el ciclo de vida y las escrituras del sistema.",
      "n1584": "Se requiere permiso de ejecución del host/recargar",
      "n1585": "Se requiere permiso de ejecución del host para el sistema y recarga Nginx",
      "n1586": "Se requiere permiso de ejecución del host check_policy_service",
      "n1587": "El permiso de ejecución del host requiere nginx conf y recarga",
      "n1588": "Sincronización bloqueada: necesita root",
      "n1589": "requiere nodo primario",
      "n1590": "",
      "n1591": "No root: las rutas del sistema useradd/systemd/nginx están restringidas",
      "n1592": "no seccomp requiere runAsUser",
      "n1593": "Solicitudes públicas / min",
      "n1594": "conexión de paneles; Disponible\"\" ( )",
      "n1595": "El panel no se ejecuta como root",
      "n1596": "Disponible aplicar:falso",
      "n1597": "- no escribir archivo",
      "n1598": "Trabajadores uvicornio predeterminados",
      "n1599": "con Redis DB",
      "n1600": "",
      "n1601": "archivo local",
      "n1602": "logpathinválido",
      "n1603": "error de inicio",
      "n1604": "Error, etc.",
      "n1605": "Error ()",
      "n1606": "construir lata; Notas/registro fallidos",
      "n1607": "",
      "n1608": "verificar no válido",
      "n1609": "aprobado",
      "n1610": "Índice de paquete no actualizado (YSK_EXECUTE desactivado): muestra solo la lista adecuada; habilite ejecutar para ejecutar apt-get update",
      "n1611": "UFW está inactivo: {{n}} las reglas de denegación permanente están almacenadas en user.rules pero el kernel no las aplica.",
      "n1612": "UFW está inactivo. Una regla de denegación se escribiría únicamente en user.rules: el kernel no descartaría paquetes. Habilite UFW primero. No habilitar automáticamente.",
      "t0001": "listenPort no válido: {{v0}}",
      "t0002": "restaurar versión {{v0}}",
      "t0003": "archivo (>{{v0}} bytes)",
      "t0004": ": {{v0}}",
      "t0005": "objetivo: {{v0}}",
      "t0006": "no encontrado: {{v0}}",
      "t0007": "Fallido: {{v0}}",
      "t0008": "{{v0}} → {{v1}}",
      "t0009": "no encontrado: {{v0}}",
      "t0010": "Fallido: {{v0}}",
      "t0011": "{{v0}} → {{v1}}",
      "t0012": "no puede desde el estado {{v0}} para",
      "t0013": "esta operación requiere: {{v0}}",
      "t0014": "Estado no válido: {{v0}}",
      "t0015": "{{v0}}",
      "t0016": "Desconocido: {{v0}}",
      "t0017": "{{v0}} no puede {{v1}} ( {{v2}})",
      "t0018": "{{v0}} la operación no leída requiere identificación",
      "t0019": "anfitrión: {{v0}}",
      "t0020": "permitir: {{v0}}",
      "t0021": "negar: {{v0}}",
      "t0022": "Libro de jugadas no encontrado: {{v0}}",
      "t0023": "dirección ip -j falló: {{v0}}",
      "t0024": "Error de ruta ip -j: {{v0}}",
      "t0025": "Error de escritura de nmcli: {{v0}}",
      "t0026": "{{v0}} → conexión\"{{v1}}\"",
      "t0027": "Advertencia de conexión activa: {{v0}}",
      "t0028": "Conexión reactivada (persiste después del reinicio)",
      "t0029": "{{v0}} → {{v1}} (; el reinicio puede desaparecer)",
      "t0030": "desde la conexión\"{{v0}}\" {{v1}}",
      "t0031": "Nuevo México: {{v0}}",
      "t0032": "Eliminado {{v0}} ← {{v1}}",
      "t0033": "Error en el enlace caído: {{v0}}",
      "t0034": "hizo abajo {{v0}}",
      "t0035": "el enlace falló: {{v0}}",
      "t0036": "hizo hasta {{v0}}",
      "t0037": "Error de MTU: {{v0}}",
      "t0038": "Error de escritura en la puerta de enlace de nmcli: {{v0}}",
      "t0039": "guardar la puerta de enlace predeterminada {{v0}} → conexión\"{{v1}}\" (reiniciar)",
      "t0040": "Error de escritura de rutas de nmcli: {{v0}}",
      "t0041": "guardar {{v0}} →\"{{v1}}\" (reiniciar)",
      "t0042": "Error al agregar ruta IP: {{v0}}",
      "t0043": "agregar {{v0}}${gw?",
      "t0044": ": ''}(Es posible que no persista durante el reinicio; use Guardar para persistir)",
      "t0045": "desde la conexión\"{{v0}}\" ipv4.gateway",
      "t0046": "Puerta de enlace NM: {{v0}}",
      "t0047": "de \"{{v0}}\" {{v1}}",
      "t0048": "Rutas NM: {{v0}}",
      "t0049": "ruta ip falló: {{v0}}",
      "t0050": "{{v0}}",
      "t0051": "{{v0}}",
      "t0052": "DNS no válido: {{v0}}",
      "t0053": "IP DNS: {{v0}}",
      "t0054": "Error de modificación de nmcli: {{v0}}",
      "t0055": "restaurar {{v0}} DNS DHCP (ignorar-auto-dns=no)",
      "t0056": "Error de modificación de nmcli: {{v0}}",
      "t0057": "Escribió {{v0}}: DNS {{v1}}${search.length?",
      "t0058": "Fallido: {{v0}}",
      "t0059": "{{v0}} → {{v1}}",
      "t0060": "{{v0}}",
      "t0061": "Token SSO ({{v0}})",
      "t0062": "Error en la instalación de Webmail: {{v0}}",
      "t0063": "{{v0}}",
      "t0064": "sistema fallido: {{v0}}",
      "t0065": "vacaciones al directorio {{v0}} tamiz (escrito)",
      "t0066": "tamiz +.paloma.tamiz → {{v0}}@{{v1}}",
      "t0067": "Enlace de tamiz activo deshabilitado → {{v0}}@{{v1}}",
      "t0068": "{{v0}}@{{v1}} tamiz fallido: {{v2}}",
      "t0069": "Escribió un demonio de política por remitente ({{v0}} dominios)",
      "t0070": "{{v0}} falló (salida {{v1}}): {{v2}}",
      "t0071": "Escribió el complemento {{v0}}",
      "t0072": "error del enlace simbólico: {{v0}}",
      "t0073": "hizo enlace simbólico {{v0}} → {{v1}}",
      "t0074": "Error de configuración: {{v0}}",
      "t0075": "complemento de configuración {{v0}}: {{v1}}",
      "t0076": "Escribió {{v0}}: {{v1}}",
      "t0077": "{{v0}} y www.{{v1}} a la IP del servidor. CDN (Cloudflare) puede o.",
      "t0078": "Configuración de PTR VPS/IP y HELO/EHLO ({{v0}}). por favor (AWS/GCP).",
      "t0079": "{{v0}}",
      "t0080": "postsuper falló: {{v0}}",
      "t0081": "dominio: {{v0}}",
      "t0082": ": {{v0}}",
      "t0083": "crear Maildir: {{v0}}",
      "t0084": "crear usuario del sistema {{v0}}",
      "t0085": "createsystemuserFailed: {{v0}}",
      "t0086": ": {{v0}}",
      "t0087": "Error al escribir passdb: {{v0}}",
      "t0088": ": {{v0}}",
      "t0089": "crear {{v0}}: {{v1}} → {{v2}}",
      "t0090": "Dominio de correo no encontrado: {{v0}}",
      "t0091": "Escribí vacaciones {{v0}}",
      "t0092": "Escribió {{v0}}",
      "t0093": "alias_virtual: {{v0}} ({{v1}})",
      "t0094": "Yunque Postfix: smtpd_client_message_rate_limit={{v0}} / 3600s (; tasa de dominio)",
      "t0095": "posconferencia: {{v0}}",
      "t0096": "Escribió rspamd ratelimit.conf (~{{v0}}/h)",
      "t0097": "mapa ({{v0}} dominios)",
      "t0098": "{{v0}}: bloquear (permitir LLM local)",
      "t0099": "LLM por favor Falló: {{v0}}",
      "t0100": "{{v0}}–{{v1}} No encontradoPuerto disponible",
      "t0101": "por favor confirme: {{v0}}",
      "t0102": "{{v0}}s será con 1 (apagar +N con)",
      "t0103": "reiniciar ( {{v0}} )",
      "t0104": "apagado ( {{v0}} )",
      "t0105": "Lectura fallida: {{v0}}",
      "t0106": "Fallido: {{v0}}",
      "t0107": "servicio no válido: {{v0}}",
      "t0108": "ruta permitir escritura: {{v0}}",
      "t0109": "Error de purga/recarga: {{v0}}",
      "t0110": "DB {{v0}}: tecla {{v1}}",
      "t0111": "(escriba {{v0}} — )",
      "t0112": "Escribió {{v0}}",
      "t0113": "Error de escritura: {{v0}}",
      "t0114": "Falta la clave o no se ha eliminado",
      "t0115": "casa: {{v0}}",
      "t0116": "no se pueden tomar instantáneas JSON: {{v0}}",
      "t0117": "{{v0}} restico",
      "t0118": "inicio confirmPhrase=\"{{v0}}\" ()",
      "t0119": "ejecución en seco: instantánea {{v0}} {{v1}} ruta (100)",
      "t0120": "Error en el ensayo: {{v0}}",
      "t0121": "restaurar instantánea {{v0}} → {{v1}}",
      "t0122": "restaurar salida fallida={{v0}}",
      "t0123": "Escribió administrar: {{v0}}",
      "t0124": "usuario de Linux del proyecto {{v0}} (Coincide con el usuario ysks_*,ysk_*)",
      "t0125": "por favor: cp {{v0}} /etc/ssh/sshd_config.d/ && systemctl recargar sshd",
      "t0126": "sshd -t Falló, no se recargó: {{v0}}",
      "t0127": "Instalado {{v0}} y recargar sshd",
      "t0128": "Error en la recarga instalada: {{v0}}",
      "t0129": "Escribió {{v0}} ({{v1}} bytes)",
      "t0130": "Configuraciones de Nginx administradas: {{v0}} (datos del panelDir nginx/conf.d)",
      "t0131": "Desconocido: {{v0}}",
      "t0132": "{{v0}}: {{v1}}",
      "t0133": "{{v0}} - omitido (forzar lata)",
      "t0134": "Instalación de WordPress — {{v0}}",
      "t0135": "dominio: {{v0}}",
      "t0136": "entrada {{v0}}.wsgi:aplicación (gunicorn)",
      "t0137": "cargará la compilación --release;./target/release/{{v0}}",
      "t0138": "Axum: construcción de carga --liberación de cajas.io",
      "t0139": "./target/release/{{v0}}",
      "t0140": "crear {{v0}}, {{v1}}, Error {{v2}}",
      "t0141": "{{v0}}doneproject usuario de Linux (página → createsystemuser).",
      "t0142": "inicio: /home/ysk-server-{{v0}} · usuario: {{v1}}",
      "t0143": "hizo chown {{v0}}:{{v1}} → {{v2}}",
      "t0144": "con projectuser {{v0}}",
      "t0145": "pidfile con runuser -u {{v0}} inicio",
      "t0146": "Escribió grupo de FPM: {{v0}}",
      "t0147": "Piscina habilitada: {{v0}}",
      "t0148": "/etc/php/{{v0}}/fpm no encontrado - instalar php{{v1}}-fpm",
      "t0149": "{{v0}} Instalado",
      "t0150": "instalar {{v0}}",
      "t0151": "no instalar {{v0}}",
      "t0152": "Falló la sonda SSH: {{v0}}",
      "t0153": "servidor de nombres: {{v0}}",
      "t0154": "directorio de zona ({{v0}}.zone)",
      "t0155": "directorio de zona: {{v0}}",
      "t0156": "Error en la recarga remota: {{v0}}",
      "t0157": "{{v0}}: scp falló {{v1}}",
      "t0158": "scp {{v0}} Aceptar → {{v1}}",
      "t0159": "scp /Error (ok={{v0}} falla={{v1}})",
      "t0160": "Habilitar falló: {{v0}}",
      "t0161": "deshabilitar falló: {{v0}}",
      "t0162": "UFW DENEGAR desde {{v0}} (regla, )",
      "t0163": "denegar fallido: {{v0}}",
      "t0164": "NEGAR UFW {{v0}}",
      "t0165": "error de eliminación: {{v0}}",
      "t0166": "regla #{{v0}}",
      "t0167": "#{{v0}} Error: {{v1}}",
      "t0168": "permitir {{v0}}/{{v1}}",
      "t0169": "permitir falló: {{v0}}",
      "t0170": "recarga fallida ({{v0}}): {{v1}}",
      "t0171": ": con projectuser {{v0}} activo",
      "t0172": "Nodo: {{v0}}",
      "t0173": "puerto: {{v0}}",
      "t0174": "Nodo de panel aplicado ({{v0}})",
      "t0175": "aplicarNo encontrado: {{v0}}",
      "t0176": "con unidad systemd: {{v0}}",
      "t0177": "con PM2: {{v0}}",
      "t0178": "proceso de inicio fallido: {{v0}}",
      "t0179": "iniciar pid={{v0}}, pidfile={{v1}}",
      "t0180": "Configuración de Nginx (archivo administrado): {{v0}}",
      "t0181": "crear página: {{v0}}",
      "t0182": ": {{v0}}",
      "t0183": "Configuración de Nginx: {{v0}}",
      "t0184": "directorio: {{v0}}",
      "t0185": "HTTP: {{v0}} ({{v1}})",
      "t0186": ": {{v0}}",
      "t0187": "→ {{v0}}",
      "t0188": "certificado: {{v0}}",
      "t0189": "SSL habilitado (ruta Let's Encrypt; o página SSL {{v0}} certificado)",
      "t0190": "recargar Nginx falló: {{v0}}",
      "t0191": "Escribió el anfitrión: {{v0}}",
      "t0192": "Tiempo de ejecución {{v0}} — Git, reiniciar proceso",
      "t0193": "Escribió {{v0}} ({{v1}})",
      "t0194": "Usuario del grupo PHP-FPM: {{v0}} (proyecto)",
      "t0195": "versión de tiempo de ejecución → {{v0}}",
      "t0196": "panel php.ini ({{v0}} php_admin_*)",
      "t0197": "Configuración de PHP-FPM Nginx: {{v0}}",
      "t0198": "Recarga de Nginx ={{v0}}: {{v1}}",
      "t0199": "Servidor PHP pid={{v0}} @ 127.0.0.1:{{v1}}",
      "t0200": "SIGTERM {{v0}}",
      "t0201": "SIGKILL {{v0}}",
      "t0202": "pid {{v0}}",
      "t0203": "implementarTiempo de ejecución del proceso\"{{v0}}\"",
      "t0204": ": con projectuser {{v0}} y comenzar",
      "t0205": "Tiempo de ejecución: {{v0}} · puerto {{v1}} · entrada {{v2}}",
      "t0206": ": {{v0}}",
      "t0207": "Fallido: {{v0}}",
      "t0208": "Panel aplicado {{v0}} ({{v1}})",
      "t0209": "Escribió systemd: {{v0}}",
      "t0210": "habilitar --ahora unidad de proyecto (Usuario={{v0}})",
      "t0211": "systemctl Error al iniciar: {{v0}}",
      "t0212": "Error en la unidad del sistema de escritura: {{v0}}",
      "t0213": "pidfile start pid={{v0}}${modo === 'aislado'?",
      "t0214": "Error al iniciar el archivo pid: {{v0}}",
      "t0215": "verificación no aprobada ({{v0}}ms): {{v1}}",
      "t0216": "verificación aprobada ({{v0}}ms)",
      "t0217": "Escribió Nginx: {{v0}}",
      "t0218": "{{v0}} IP prohibida",
      "t0219": "se desbaneó {{v0}} @ {{v1}}",
      "t0220": "desbanear falló: {{v0}}",
      "t0221": "gestionar: {{v0}} ({{v1}})",
      "t0222": "sshd ignoreip {{v0}} {{v1}} · Estado: aplicado",
      "t0223": "fail2ban-client ignoreip Error: {{v0}} (archivo administrado escrito; aplicado)",
      "t0224": "cárceles fail2ban: {{v0}}",
      "t0225": "Unidad escrita {{v0}}",
      "t0226": "El estado sigue siendo {{v0}} (no aplicado)",
      "t0227": "Apply_status inesperado: {{v0}}",
      "t0228": "base de datos: {{v0}} (0–{{v1}})",
      "t0229": "a {{v0}}",
      "t0230": "No se puede acceder al directorio de configuración del sistema: {{v0}}",
      "t0231": "conf falló: {{v0}}",
      "t0232": "reiniciar {{v0}}",
      "t0233": "a {{v0}} Fallido: {{v1}}",
      "t0234": "denegar directorio: {{v0}}",
      "t0235": "directorio: {{v0}}",
      "t0236": "directorio omitido (escanear): {{v0}}",
      "t0237": "{{v0}} (no)",
      "t0238": "diario php{{v0}}-fpm (registro del grupo no)",
      "t0239": "grep\"{{v0}}\": {{v1}} (escanear {{v2}} bytes)",
      "t0240": "{{v0}} (archivo {{v1}} bytes,)",
      "t0241": "{{v0}} (archivo {{v1}} bytes)",
      "t0242": "a {{v0}} iniciar sesión (no desactivar)",
      "t0243": "no puedo leer: {{v0}}",
      "t0244": "\"{{v0}}\": {{v1}}, {{v2}} ()",
      "t0245": "{{v0}} servidorNo instalado",
      "t0246": "{{v0}} el servicio no se está ejecutando",
      "t0247": "{{v0}} No instalado",
      "t0248": ": {{v0}}",
      "t0249": "servidor: {{v0}}",
      "t0250": "{{v0}} Listo",
      "t0251": "{{v0}} Instalación incompleta",
      "t0252": "{{v0}} inicio de servicio",
      "t0253": "Inicio fallido: {{v0}}",
      "t0254": "Admite Node.js {{v0}}; versiones disponibles: {{v1}}",
      "t0255": "Admite la versión PHP {{v0}}; Disponible: {{v1}}",
      "t0256": "Admite la versión de Python {{v0}}; Disponible: {{v1}}",
      "t0257": "Admite la versión Go {{v0}}; Disponible: {{v1}}",
      "t0258": "Tiempo de ejecución desconocido: {{v0}}",
      "t0259": "excavar: sin respuesta (NXDOMAIN o vacío)",
      "t0260": "{{v0}}",
      "t0261": "PostgreSQL falló: {{v0}}",
      "t0262": "MySQL falló: {{v0}}",
      "t0263": "{{v0}}: no se puede DROP - EJECUTAR+root (caducado)",
      "t0264": "{{v0}}: DROP falló {{v1}}",
      "t0265": "{{v0}}: DROP falló {{v1}}",
      "t0266": "{{v0}}: caducada (no cuenta del sistema DROP)",
      "t0267": "Usuario FTP: {{v0}}",
      "t0268": "crear FTP {{v0}}",
      "t0269": "Ruta de la cárcel: {{v0}}",
      "t0270": "Contraseña almacenada como hash de cripta (no texto sin formato)",
      "t0271": "con proyecto usuario de Linux: {{v0}} (aplicar vsftpd)",
      "t0272": "Nombre de usuario no válido omitido",
      "t0273": "{{v0}}: contraseña → hash de cripta",
      "t0274": "{{v0}} hashnot crypt (openssl no disponible): puede fallar",
      "t0275": "{{v0}} hash de contraseña, no se puede",
      "t0276": "{{v0}} proyecto linuxUser — invitado\"{{v1}}\" (por favor FTP)",
      "t0277": "Escribí {{v0}} configuración",
      "t0278": "{{v0}}",
      "t0279": "{{v0}} Aplicado, vsftpd en ejecución",
      "t0280": "chown omitido {{v0}}: usuario del sistema\"{{v1}}\" (primero cree el proyecto usuario del sistema)",
      "t0281": "chown falló {{v0}}: {{v1}}",
      "t0282": "Directorio FTP ({{v0}})",
      "t0283": "proyecto {{v0}} directorio",
      "t0284": "proyecto {{v0}} público",
      "t0285": "correo {{v0}}",
      "t0286": "no crear usuario del sistema (requiere permiso de administrador del sistema). casa: {{v0}}; directorio.",
      "t0287": "{{v0}}; casa {{v1}}",
      "t0288": "detener {{v0}}",
      "t0289": "Eliminado de casa: {{v0}}",
      "t0290": "casa no (puede): {{v0}} — {{v1}}",
      "t0291": "negar eliminar ruta de inicio: {{v0}}",
      "t0292": "no el sistema operativo principal (requiere root): {{v0}}; usuario del sistema {{v1}} puede",
      "t0293": "Error en la zona de carga de pdnsutil: {{v0}}",
      "t0294": "zona pdnsutil {{v0}}",
      "t0295": "systemctl {{v0}} fail2ban ok",
      "t0296": "{{v0}} falló: {{v1}}",
      "t0297": "prohibición de fail2ban {{v0}} @ {{v1}} (límites de tiempo de prohibición)",
      "t0298": "banip falló: {{v0}}",
      "t0299": "cárceles: {{v0}}",
      "t0300": "ignorarip: dataDir/fail2ban/ignoreip.txt",
      "t0301": "verificación de instalación: {{v0}}",
      "t0302": "proyecto {{v0}} (paquete: {{v1}})",
      "t0303": "{{v0}} (paquete: {{v1}})",
      "t0304": "base de datos {{v0}} (paquete: {{v1}})",
      "t0305": "Escribió {{v0}} (DB {{v1}}@{{v2}}; Disponible)",
      "t0306": "Falló el inicio de pm2: {{v0}}",
      "t0307": "pm2 inicio {{v0}}",
      "t0308": "{{v0}} no está instalado",
      "t0309": "{{v0}}",
      "t0310": "Aplicado {{v0}}",
      "t0311": "con puede reiniciar: {{v0}}",
      "t0312": "aplicar {{v0}}",
      "t0313": "reiniciar (por favor reinicie): {{v0}}",
      "t0314": "ALTERAR EL SISTEMA {{v0}} y recargar",
      "t0315": "reiniciar: {{v0}}",
      "t0316": "hizo {{v0}} {{v1}}",
      "t0317": "inicio: {{v0}}",
      "t0318": "/etc/php/{{v0}}/fpm — primero instale php{{v1}}-fpm",
      "t0319": "Aplica {{v0}} y recarga php{{v1}}-fpm",
      "t0320": "ini; recarga fallida: {{v0}}",
      "t0321": "Borrador de zona DNS {{v0}} (para escribir/aplicar DNS)",
      "t0322": "IPv6 {{v0}}",
      "t0323": "dominio de correo {{v0}}",
      "t0324": "Borrador de base de datos MySQL {{v0}} (para aplicar a la base de datos)",
      "t0325": "omitido: directorio {{v0}}",
      "t0326": "Proyecto(s) {{v0}}/{{v1}} respaldados",
      "t0327": "(omitido {{v0}} sin directorio de inicio)",
      "t0328": "directorio de proyectos: {{v0}}",
      "t0329": "alquitrán falló: {{v0}}",
      "t0330": "Copia de seguridad escrita {{v0}}",
      "t0331": "ejecución en seco: archivo {{v0}}+ ( {{v1}})",
      "t0332": "no puede: {{v0}}",
      "t0333": "restaurar (web) a {{v0}}",
      "t0334": "restauración webError: {{v0}}",
      "t0335": "restauración fallida: {{v0}}",
      "t0336": "desde {{v0}} restaurar al directorio de proyectos",
      "t0337": "hizo chown {{v0}}:{{v1}} → {{v2}}",
      "t0338": ": {{v0}}",
      "t0339": "administrar crontab: {{v0}}",
      "t0340": "crontab falló: {{v0}}",
      "t0341": "pg_dump falló: {{v0}}",
      "t0342": "volcado fallido: {{v0}}",
      "t0343": "psql falló: {{v0}}",
      "t0344": "importación fallida: {{v0}}",
      "t0345": "objetivo {{v0}} no git - denegar clonación con datos (.ysk-scaffold)",
      "t0346": "clonó {{v0}} → {{v1}}",
      "t0347": "extraer actualización: {{v0}}",
      "t0348": "linuxUsuario no válido: {{v0}}",
      "t0349": "Aplicado {{v0}}: {{v1}} + www-data/nginx; hogar 750, público g+rX",
      "t0350": "Error en la aplicación ysk-web: {{v0}}",
      "t0351": "camino {{v0}}",
      "t0352": "configuración de nginx: {{v0}}",
      "t0353": "Descarga fallida: {{v0}}",
      "t0354": "Administrador → {{v0}}",
      "t0355": "{{v0}}",
      "t0356": "configuración de nginx: {{v0}}",
      "t0357": "→ {{v0}}",
      "t0358": "portinválido: {{v0}}",
      "t0359": "con el usuario {{v0}} instalar crontab",
      "t0360": "tecla {{v0}}",
      "t0361": "zona → {{v0}} (recargar DNS; registrador manual DS)",
      "t0362": "no a la zona administrada ( dns/zones/{{v0}}.zone)—",
      "t0363": "{{v0}} archivo en {{v1}}",
      "t0364": "TCP {{v0}}:{{v1}} Aceptar ({{v2}}ms)",
      "t0365": "TCP {{v0}}:{{v1}} falló: {{v2}}",
      "t0366": "PING falló: {{v0}}",
      "t0367": ": {{v0}}MB > {{v1}}MB",
      "t0368": "({{v0}} / {{v1}} MiB), no puede{{v2}}",
      "t0369": "El camino a casa no está listo ({{v0}})",
      "t0370": "Usuario de Linux {{v0}} no aprovisionado",
      "t0371": "Listo {{v0}} / degradado {{v1}} / no aislado {{v2}} ({{v3}} en total)",
      "t0372": "· Pendiente: {{v0}}{{v1}}",
      "t0373": "Aislamiento del proyecto \"{{v0}}\"",
      "t0374": "a la ruta local {{v0}}",
      "t0375": "identidad {{v0}}: {{v1}}",
      "t0376": "sftp (identidad) a {{v0}} correcto",
      "t0377": "sftp (identidad) falló: {{v0}}",
      "t0378": "sftp a {{v0}} correcto",
      "t0379": "sftp falló: {{v0}}",
      "t0380": "sftp a {{v0}} correcto",
      "t0381": "sftp falló: {{v0}} (puede fijar backup remote identityId)",
      "t0382": "T3 {{v0}}",
      "t0383": "S3 falló: {{v0}}",
      "t0384": ": {{v0}}/{{v1}} administrador 2FA habilitado",
      "t0385": "Política no aplicada: {{v0}}/{{v1}} los administradores tienen 2FA habilitado",
      "t0386": "{{v0}} RUTA",
      "t0387": "{{v0}} no encontrado",
      "t0388": "Instale {{v0}} o agréguelo a PATH",
      "t0389": "Versiones disponibles: {{v0}}",
      "t0390": "{{v0}}% ({{v1}}MB)",
      "t0391": "{{v0}}% ({{v1}})",
      "t0392": "inicio de servicio {{v0}}",
      "t0393": "Modo: {{v0}}",
      "t0394": "Listo {{v0}} / Degradado {{v1}} / Faltante {{v2}} ({{v3}} en total)",
      "t0395": "No encontrado ( {{v0}})",
      "t0396": "nodo anfitrión: {{v0}}",
      "t0397": "anfitrión php: {{v0}}",
      "t0398": "Python anfitrión: {{v0}}",
      "t0399": "anfitrión ir: {{v0}}",
      "t0400": "carga anfitriona: {{v0}}",
      "t0401": "Nodo disponible: {{v0}}",
      "t0402": "PHP disponible: {{v0}}",
      "t0403": "Python disponible: {{v0}}",
      "t0404": "Ir Disponible: {{v0}}",
      "t0405": "Óxido disponible: {{v0}}",
      "t0406": "instalar Nodo {{v0}}",
      "t0407": "instalar PHP {{v0}}",
      "t0408": "instalar Python {{v0}}",
      "t0409": "instalar Vaya {{v0}} a /usr/local/ysk/go",
      "t0410": "instale Rust ({{v0}}) en /usr/local/ysk/rust",
      "t0411": "Error de instalación: {{v0}}",
      "t0412": "Script de instalación de OpenJDK {{v0}} preparado",
      "t0413": "Script de instalación de Kotlin {{v0}} preparado (necesita JDK)",
      "t0414": "Script de instalación de Bun preparado ({{v0}})",
      "t0415": "inicio del proyecto: {{v0}}",
      "t0416": "usuario objetivo {{v0}} (inicio del proyecto); please.ssh chown (la API lo hará)",
      "t0417": "hizo chown {{v0}} → {{v1}}",
      "t0418": "chown.ssh falló: {{v0}}",
      "t0419": "Clave eliminada · claves_autorizadas",
      "t0420": "Soportes: {{v0}}",
      "t0421": "TTL {{v0}} 30–604800",
      "t0422": "{{v0}} CNAME y ()",
      "t0423": "{{v0}} Objetivo CNAME",
      "t0424": "configuración fallida: {{v0}}",
      "t0425": "{{v0}} Escribí la configuración de administración",
      "t0426": "no se puede presentar: {{v0}}",
      "t0427": "{{v0}} configuración del directorio del sistema",
      "t0428": "{{v0}} inválido",
      "t0429": "casa, no camino ({{v0}})",
      "t0430": "usermod -s falló: {{v0}}",
      "t0431": "Fallido: {{v0}}",
      "t0432": "Fallido: {{v0}}",
      "t0433": "Error al configurar la propiedad: {{v0}} (implementar unidad de escritura de voluntad)",
      "t0434": "unidad {{v0}} no activa: limita la base de datos, implementa la unidad de escritura",
      "t0435": "setquota no es exitoso (el sistema de archivos no puede user_xattr/quota): {{v0}}",
      "t0436": "casa: {{v0}}",
      "t0437": "hizo chown {{v0}} → {{v1}}",
      "t0438": "Error en el encabezado superior: {{v0}}",
      "t0439": "ps completoError: {{v0}}",
      "t0440": "NI={{v0}}",
      "t0441": "PID {{v0}} (proceso.pid)",
      "t0442": "o sonda (matar -0 salir {{v0}})",
      "t0443": "kill -s {{v0}} falló: ${err ||",
      "t0444": "{{v0}} → PID {{v1}}",
      "t0445": "{{v0}} proyecto(s) suspendido(s)",
      "t0446": "{{v0}} proyecto(s) usuarios del sistema faltantes",
      "t0447": "{{v0}} aprobación(es) pendiente(s)",
      "t0448": "Certificado caducado: {{v0}}",
      "t0449": "El certificado vence en {{v0}} día(s): {{v1}}",
      "t0450": "Hora: {{v0}}",
      "t0451": "Listado DNSBL: {{v0}}",
      "t0452": "{{v0}} aplicar falla(s)/bloqueado",
      "t0453": "{{v0}} artículo(s) aún escrito(s)/borrador",
      "t0454": "Preajuste de defensa automática: {{v0}}",
      "t0455": "Operación fallida: {{v0}}",
      "t0456": "Uso alto del disco de diario: ≈{{v0}} MB",
      "t0457": "Umbral {{v0}} MB: aspirar en el centro de registro o ajustar la retención",
      "t0458": "df falló: {{v0}}",
      "t0459": "{{v0}} proyecto ( {{v1}})",
      "t0460": "versión {{v0}} → {{v1}}",
      "t0461": "subir {{v0}}",
      "t0462": "Salida fallida={{v0}}",
      "t0463": "lista apta --upgradable: {{v0}} puede aumentar",
      "t0464": "lista apta --actualizable no disponible (salida {{v0}}); política de caché apta",
      "t0465": "política dpkg+apt-cache: {{v0}} paquete",
      "t0466": "Política dpkg/apt-cache fallida o (salida {{v0}}): puede apt o permiso",
      "t0467": "Nodo {{v0}} (no apto para que el paquete nodejs pueda generarse)",
      "t0468": "puede plantear (candidato ≠ actual): {{v0}}",
      "t0469": "registro npm HTTP {{v0}}",
      "t0470": "GitHub lanza HTTP {{v0}}",
      "t0471": "Paquete GitHub.json HTTP {{v0}}",
      "t0472": "npm: {{v0}}@{{v1}}",
      "t0473": "npm {{v0}} no disponible: {{v1}}",
      "t0474": "Versiones de GitHub no disponibles: {{v0}}",
      "t0475": "Paquete GitHub.json ({{v0}}): {{v1}}",
      "t0476": "Paquete GitHub.json no disponible: {{v0}}",
      "t0477": "actualización: {{v0}} → {{v1}}",
      "t0478": "directorio {{v0}} git repo - puede YSK_SOURCE_ROOT o npm (YSK_NPM_PACKAGE)",
      "t0479": "Error en la descarga del tarball de GitHub: {{v0}}",
      "t0480": "a {{v0}} (solo prueba): no Runninginstall; por favor /git directorio hecho",
      "t0481": "Git: {{v0}}",
      "t0482": "git apply {{v0}} Falló (salida {{v1}}): {{v2}}",
      "t0483": "updatetarget {{v0}} y compilar: reinicie la versión del servidor ysk",
      "t0484": "Instalado {{v0}}",
      "t0485": "Error en la actualización de npm: {{v0}}",
      "t0486": "Instalación de YSK_NPM_PACKAGE {{v0}}",
      "t0487": "YSK_NPM_PACKAGE Error de instalación: {{v0}}",
      "t0488": "puede aumentar {{v0}} → {{v1}} (CVE CRÍTICO,)",
      "t0489": "puede aumentar {{v0}} → {{v1}} (CVE ALTO,)",
      "t0490": "puede subir {{v0}} → {{v1}} (puede, )",
      "t0491": "puede subir {{v0}} → {{v1}} ()",
      "t0492": "puede subir {{v0}} → {{v1}} (Candidato apto)",
      "t0493": "Aumento disponible, OSV {{v0}}",
      "t0494": "Estado del servicio: {{v0}}",
      "t0495": "detectar para poder: {{v0}}",
      "t0496": "Agente desconocido en ejecución: {{v0}}",
      "t0497": "Agente de soporte: {{v0}}",
      "t0498": "installFailed (willSuccess): {{v0}}",
      "t0499": "Sesión de agente no encontrada: {{v0}}",
      "t0500": "No encontrado: {{v0}}",
      "t0501": "usuario: {{v0}}",
      "t0502": "usuario: {{v0}}",
      "t0503": "usuario SFTP del proyecto (ysks_/ysk_, internal-sftp kbd-interactive): {{v0}}",
      "t0504": "de usuario estricto: {{v0}}",
      "t0505": "{{v0}} clave pública de usuario+TOTP, deshabilitar contraseña",
      "t0506": "archivo administrado: {{v0}}",
      "t0507": "Instalado {{v0}} y recargar sshd",
      "t0508": "instalación/sshd -t Error: {{v0}}",
      "t0509": "PAM será el archivo administrado: {{v0}}",
      "t0510": "Chown falló: {{v0}}",
      "t0511": "Advertencia: modo 400 (estadística: {{v0}})",
      "t0512": "PAM (archivo administrado): {{v0}}",
      "t0513": "sshd (archivo administrado): {{v0}}",
      "t0514": "scratch (esto): {{v0}} - por favor guarde",
      "t0515": "pam.d/sshd: {{v0}}",
      "t0516": "usuario {{v0}} SSH 2FA ({{v1}}). desactivar/retirar.",
      "t0517": "clave maestra de secretos: {{v0}}",
      "t0518": "Chown falló: {{v0}}",
      "t0519": "ssh falló: {{v0}}",
      "t0520": "clave maestra: {{v0}} (por favor haga una copia de seguridad)",
      "t0521": "clave maestra: {{v0}}",
      "t0522": "huella digital: {{v0}} ({{v1}})",
      "t0523": "Escribió UFW solo para CF: {{v0}}",
      "t0524": "puerto: {{v0}}",
      "t0525": "IPv4 CF: {{v0}}",
      "t0526": "IPv6 CF: {{v0}}",
      "t0527": "ufw falló: {{v0}}",
      "t0528": "IP fallida de autenticación: {{v0}}",
      "t0529": "IP superior {{v0}}",
      "t0530": "{{v0}} · {{v1}}",
      "t0531": "Preajuste de defensa con cambio automático → {{v0}}{{v1}}",
      "t0532": "Preajuste de defensa con cambio automático: {{v0}}",
      "t0533": "SSH falló×{{v0}}",
      "t0534": "autenticación fallida {{v0}} IP",
      "t0535": "por favor ×{{v0}}",
      "t0536": "escanear×{{v0}}",
      "t0537": "{{v0}}/{{v1}}",
      "t0538": "hecho {{v0}} IP: Éxito {{v1}}",
      "t0539": ": prohibición automática {{v0}}",
      "t0540": ": {{v0}}",
      "t0541": "prohibición {{v0}} IP",
      "t0542": "no se puede zona {{v0}} (HTTP {{v1}})",
      "t0543": ": {{v0}} nivel_seguridad → {{v1}}",
      "t0544": ": {{v0}} → nivel_seguridad={{v1}}",
      "t0545": "({{v0}})",
      "t0546": "{{v0}}",
      "t0547": "confirmar=\"{{v0}}\"",
      "t0548": "Escribió límites de velocidad de Nginx: {{v0}}",
      "t0549": "Marcadores de límite de velocidad inyectados en {{v0}} vhost(s)",
      "t0550": "Preajuste de defensa activa → {{v0}}",
      "t0551": "prohibir → {{v0}} ({{v1}} / {{v2}})",
      "t0552": "Preajuste de defensa aplicada: {{v0}}",
      "t0553": "fail2ban falló: {{v0}}",
      "t0554": "ufw falló: {{v0}}",
      "t0555": "{{v0}}",
      "t0556": "Error al eliminar ufw: {{v0}}",
      "t0557": "{{v0}}",
      "t0558": "{{v0}}: {{v1}}",
      "t0559": "a {{v0}} host virtual",
      "t0560": "cluster_size={{v0}} <nodo {{v1}}",
      "t0561": "{{v0}} grupo de nodos",
      "t0562": "Soportes de sonda {{v0}}",
      "t0563": "mysql/mariadb falló: {{v0}}",
      "t0564": "MOSTRAR RÉPLICA/ESCLAVO falló: {{v0}}",
      "t0565": "MOSTRAR MAESTRO falló: {{v0}}",
      "t0566": "réplica para recuperación, ={{v0}}",
      "t0567": "recuperación primaria, ={{v0}}",
      "t0568": "réplica Rol anormal={{v0}}",
      "t0569": "maestro, rol={{v0}}",
      "t0570": "{{v0}} · {{v1}}",
      "t0571": "alquitrán falló: {{v0}}",
      "t0572": "{{v0}} ({{v1}} bytes)",
      "t0573": "{{v0}} objetivo de pares",
      "t0574": "{{v0}}: identidad {{v1}} no disponible - clave",
      "t0575": "{{v0}}: ssh mkdir falló {{v1}}",
      "t0576": "{{v0}}: {{v1}}",
      "t0577": "{{v0}}/{{v1}}: scp falló {{v2}}",
      "t0578": "{{v0}} agente · op={{v1}}",
      "t0579": "{{v0}}: la puesta en cola falló {{v1}}",
      "t0580": "Desconocido {{v0}}",
      "t0581": "Configuración de galería ({{v0}})",
      "t0582": "{{v0}} instalar conf y unirse (/SSH/flota)",
      "t0583": "instalar conf → systemctl reiniciar mariadb (no nodo de arranque)",
      "t0584": "Configuración no encontrada: {{v0}}",
      "t0585": "Soportes de aplicación local {{v0}}",
      "t0586": "Acceso directo al sistema instalado: {{v0}}",
      "t0587": "Error en la configuración del sistema de escritura: {{v0}}",
      "t0588": "galera_new_cluster falló: {{v0}}",
      "t0589": "reinicio systemctl {{v0}} (de /slot/sentinel scripts/)",
      "t0590": "¿Se reinició systemctl {{v0}}?",
      "t0591": "Falló la sonda ssh: {{v0}}",
      "t0592": "Falló la sonda de réplica: {{v0}}",
      "t0593": "Falló la sonda primaria: {{v0}}",
      "t0594": "{{v0}} sonda de nodo OK · tamaño={{v1}}",
      "t0595": "{{v0}} sonda de nodo OK",
      "t0596": "instalar en {{v0}} y {{v1}}",
      "t0597": "scp falló {{v0}}",
      "t0598": "Error al instalar la configuración: {{v0}}",
      "t0599": "conf Escribió reiniciar {{v0}} Falló",
      "t0600": "Escribió {{v0}}${reiniciar?",
      "t0601": "Soportes: {{v0}}",
      "t0602": "Soporta grupo: {{v0}}",
      "t0603": "detener {{v0}} unidad de proyecto (ok-ish {{v1}})",
      "t0604": "detener, no salir ({{v0}})—volcar",
      "t0605": "y {{v0}} RDB (volcado omitido)",
      "t0606": "hecho → {{v0}}",
      "t0607": "crear usuario {{v0}} uid={{v1}}",
      "t0608": "usuario {{v0}}",
      "t0609": "error al agregar usuario: {{v0}}",
      "t0610": "chown falló: {{v0}}",
      "t0611": "casa, chown saltado: {{v0}}",
      "t0612": "volcar o: {{v0}}",
      "t0613": "RDB: {{v0}}",
      "t0614": "restaurar RDB → {{v0}}",
      "t0615": "RDB falló: {{v0}}",
      "t0616": "inicio de redis/ping: {{v0}}",
      "t0617": ": {{v0}} — volcar dataDir rsync a (dumpRelPath)",
      "t0618": "no puedo apuntar a sha256: {{v0}}",
      "t0619": "ysk.json sha256 {{v0}}...",
      "t0620": "ysk.json local={{v0}} remoto={{v1}}",
      "t0621": "directorio de datos local: {{v0}}",
      "t0622": "datosDir: {{v0}}",
      "t0623": "saltado a casa: {{v0}}",
      "t0624": "inicio dataDir, dataDir: {{v0}}",
      "t0625": "rsync inicio falló {{v0}}",
      "t0626": "transferencia: inicio rsync falló {{v0}}",
      "t0627": "omitido: {{v0}}",
      "t0628": "transferencia realizada → {{v0}}:{{v1}}",
      "t0629": "proyecto {{v0}} casa: {{v1}}",
      "t0630": "proyecto {{v0}} bind_ip={{v1}} - puede (IP)",
      "t0631": "proyecto {{v0}} casa, no ruta: {{v1}}",
      "t0632": "Casa huérfana en disco (no hay proyecto de tienda coincidente): {{v0}}",
      "t0633": "Dirección de correo: {{v0}}",
      "t0634": "{{v0}} — no se puede apuntar",
      "t0635": "no puedo sondear {{v0}}",
      "t0636": "{{v0}} · {{v1}}",
      "t0637": "proyecto {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
      "t0638": "Instalar software {{v0}} · homes {{v1}}",
      "t0639": "host de transición {{v0}}",
      "t0640": "{{v0}} advertencia(s): revisar antes de la transición.",
      "t0641": "tecla {{v0}}",
      "t0642": "no puedo clave: {{v0}}",
      "t0643": "targetnot escribir claves_autorizadas: {{v0}}",
      "t0644": "{{v0}} instalar (clave)",
      "t0645": "Eliminar clave fallida: {{v0}}",
      "t0646": "{{v0}} Disponible",
      "t0647": "datosDir: {{v0}}",
      "t0648": "~{{v0}}",
      "t0649": "Disponible {{v0}} (volcado)",
      "t0650": ": Disponible {{v0}}, ≥ {{v1}}",
      "t0651": "Advertencia {{v0}} (no)",
      "t0652": "Conexión SSH {{v0}}",
      "t0653": "usuario {{v0}} no root (MVP requiere root)",
      "t0654": "Soporta sistema operativo ({{v0}}); requiere Debian/Ubuntu",
      "t0655": "objetivoDisponible {{v0}} ≥ {{v1}}",
      "t0656": "objetivo: Disponible {{v0}}, requiere {{v1}}",
      "t0657": "objetivo {{v0}}/ysk.json - denegar (forceWipeTarget)",
      "t0658": "directorio objetivo ysk.json: {{v0}}",
      "t0659": "crear directorio de destino: {{v0}}",
      "t0660": "{{v0}}s",
      "t0661": "{{v0}}s ≥ 120s (TLS/TOTP)",
      "t0662": "proyecto {{v0}} bind_ip={{v1}} - para (interfaz)",
      "t0663": "{{v0}} proyecto.bind_ip",
      "t0664": "no se puede persistir bind_ip: {{v0}}",
      "t0665": "sincronización de nginx: {{v0}}",
      "t0666": ": {{v0}}",
      "t0667": "identidad {{v0}} no disponible",
      "t0668": "Salida fallida de SSH={{v0}}: {{v1}}",
      "t0669": "ruta: {{v0}}",
      "t0670": "Salida fallida de rsync={{v0}}: {{v1}}",
      "t0671": "Redis RDB escribió {{v0}} (--rdb)",
      "t0672": "--rdb falló: {{v0}}",
      "t0673": "BGSAVE falló: {{v0}}",
      "t0674": "Redis RDB {{v0}} → {{v1}} (BGSAVE)",
      "t0675": "no se puede Redis RDB (src={{v0}})",
      "t0676": "{{v0}} {{v1}} {{v2}}",
      "t0677": "casa, saltado: {{v0}}",
      "t0678": "casa {{v0}}",
      "t0679": "Dirección de correo: {{v0}}",
      "t0680": "dirección de correo {{v0}}",
      "t0681": "Huella digital ysk.json (se puede volver a aplicar) local≠fuente",
      "t0682": "Error de preparación: {{v0}}",
      "t0683": "Transferencia de DNS: con IP A/AAAA → {{v0}}{{v1}}",
      "t0684": "verificación fallida: {{v0}} no coincide",
      "t0685": "verificar aprobado (desajustes={{v0}})",
      "t0686": "objetivo no válido: {{v0}} (requiere root@host o host)",
      "t0687": "trabajo no encontrado {{v0}}",
      "t0688": ": destino YSK_EXECUTE=1 ysk-server migrar publicación --job {{v0}} --data-dir {{v1}}",
      "t0689": "hecho → {{v0}}",
      "t0690": "host de transición: {{v0}}",
      "t0691": "publicación hecha @ {{v0}}",
      "t0692": "Trabajo no encontrado {{v0}} (dataDir rsync)",
      "t0693": "no éxito ({{v0}})",
      "t0694": "arranque hecho → {{v0}}",
      "t0695": "no fallido: {{v0}}",
      "t0696": "Modo de soporte: {{v0}}",
      "t0697": "Nodo de borde no encontrado: {{v0}}",
      "t0698": "nodo {{v0}} borde (u origen)",
      "t0699": "Admite DNS: {{v0}}",
      "t0700": "Soporta modo SSL: {{v0}}",
      "t0701": "CDN {{v0}}",
      "t0702": "El nodo de escudo de origen no existe: {{v0}}",
      "t0703": "bordes: {{v0}}",
      "t0704": "URL de origen (desde el enlace del proyecto): {{v0}}",
      "t0705": "actualizar CDN {{v0}}",
      "t0706": "crear CDN {{v0}}",
      "t0707": "escudo de origen: escudo de borde {{v0}} → {{v1}}",
      "t0708": "origin.kind=proyecto no proyectoOriginUrl — {{v0}}",
      "t0709": "borde {{v0}} ({{v1}}): planeado (no distribuido - PR-C3)",
      "t0710": "borde {{v0}}: nodo",
      "t0711": "Escribió nginx administrado: {{v0}}",
      "t0712": "Borde escrito: {{v0}}",
      "t0713": "nginx local -t falló (proxy_cache_path puede http{}): {{v0}}",
      "t0714": "certId={{v0}} dominio={{v1}}",
      "t0715": "certId={{v0}} El archivo no existe: {{v1}}",
      "t0716": "no encontrado certId={{v0}}",
      "t0717": "certificado dataDir {{v0}}",
      "t0718": "local Vamos a cifrar {{v0}}",
      "t0719": "scp falló {{v0}}",
      "t0720": "mkdir falló {{v0}}",
      "t0721": "certbot falló: {{v0}}",
      "t0722": "originShieldNodeId={{v0}} — escudo",
      "t0723": "{{v0}}: Objetivo SSH: aplicación de SSH (flota omitida)",
      "t0724": "la flota no puede (bloqueada={{v0}}): poner en cola o SSH",
      "t0725": "flota {{v0}} borde - en cola ≠ recarga de nginx del agente; Agentes",
      "t0726": "FleetAgentId={{v0}}: requiere la puesta en cola de la flota (la API lo hará); o aplicar SSH",
      "t0727": "configuración no encontrada: {{v0}}",
      "t0728": "conf falló: {{v0}}",
      "t0729": "Error en la puesta en cola de la flota: {{v0}}",
      "t0730": "nginx -t falló: {{v0}}",
      "t0731": "Error en el mkdir SSH: {{v0}}",
      "t0732": "scp falló: {{v0}}",
      "t0733": "Error en la recarga remota: {{v0}}",
      "t0734": "FleetAgentId={{v0}} — purgar flota en cola o SSH",
      "t0735": "La puesta en cola falló: {{v0}}",
      "t0736": "Error de purga: {{v0}}",
      "t0737": "Error de purga remota: {{v0}}",
      "t0738": "purga de flota {{v0}} - en cola ≠ purga de borde",
      "t0739": "geo {{v0}}: Nodo desconocido {{v1}}",
      "t0740": "maxRr ponderado={{v0}} ({{v1}})",
      "t0741": "minHealthyEdges={{v0}} {{v1}} borde —: borde IP (fuera de línea)",
      "t0742": "borde {{v0}} - omitido",
      "t0743": "sonda {{v0}}: {{v1}}",
      "t0744": "ID de zona={{v0}} ({{v1}})",
      "t0745": "{{v0}} administración de usuarios {{v1}} — escritura CDN administradoBy=cdn (puede y; verifique la zona)",
      "t0746": "subdominio geográfico {{v0}}: IP - omitido",
      "t0747": "access_log {{v0}} ({{v1}} token de estado de caché)",
      "t0748": "leer registro {{v0}}",
      "t0749": "directorio de caché {{v0}} ≈ {{v1}} bytes (no)",
      "t0750": "caché {{v0}}/{{v1}}",
      "t0751": "IPv4 no válido: {{v0}}",
      "t0752": "IPv6 no válido: {{v0}}",
      "t0753": "Nodo CDN {{v0}}",
      "t0754": "HTTP {{v0}} (para){{v1}}",
      "t0755": "HTTP falló: {{v0}}",
      "t0756": "TCP {{v0}}:443/80 no puede conectarse",
      "t0757": "{{v0}}/{{v1}}",
      "t0758": "unidades de lista fallidas: {{v0}}",
      "t0759": "{{v0}} unidades de servicio",
      "t0760": "unidad {{v0}}",
      "t0761": "{{v0}} bytes",
      "t0762": "diarioctl · {{v0}}",
      "t0763": "hizo la aspiradora: {{v0}}",
      "t0764": "Falló el vacío: {{v0}}",
      "t0765": "filtro: {{v0}}",
      "t0766": "archivo {{v0}} · {{v1}} bytes · {{v2}}",
      "t0767": "lista de rutas permitidas: {{v0}}",
      "t0768": "Diario: ≈{{v0}} MB ({{v1}} MB)",
      "t0769": "proyecto {{v0}} · {{v1}} registro (directorio)",
      "t0770": "Exportado {{v0}} ({{v1}})",
      "t0771": "no {{v0}}",
      "t0772": "(DB-IP City Lite {{v0}}; fallido)",
      "t0773": "respaldo {{v0}}",
      "t0774": ": {{v0}} · {{v1}} · {{v2}} · {{v3}}{{v4}} · ASN {{v5}}",
      "t0775": "archivo ({{v0}} B), la descarga falló",
      "t0776": "{{v0}} respaldo (éxito)",
      "t0777": "actualizar {{v0}} ({{v1}} B)",
      "t0778": "La actualización falló {{v0}}: {{v1}}{{v2}}",
      "t0779": "Configuración no encontrada: {{v0}}",
      "t0780": "no se puede configurar: {{v0}}",
      "t0781": "Certificado no encontrado: {{v0}}",
      "t0782": "ejecución en seco: no systemctl {{v0}}. agregar --execute YSK_EXECUTE=1 + root primerorealmente",
      "t0783": "trabajo no encontrado {{v0}}",
      "t0784": "Interfaz de usuario web: no encontrada (compila aplicaciones/web o configura YSK_WEB_ROOT)\\n",
      "t0785": "Creación de zona DNS (borrador): {{v0}}",
      "t0786": "Error al crear zona DNS: {{v0}}",
      "t0787": "dominio de correo: {{v0}}",
      "t0788": "Error al crear dominio de correo: {{v0}}",
      "t0789": "a {{v0}} puede desactivar cron",
      "t0790": "restic {{v0}}/{{v1}} ok",
      "t0791": ": {{v0}} {{v1}}",
      "t0792": "configuración {{v0}}. --fuerza.",
      "t0793": "configuración {{v0}}",
      "t0794": "Interfaz no encontrada {{v0}}",
      "t0795": "nombre de host fallido: {{v0}}",
      "t0796": "bonito nombre de host falló: {{v0}}",
      "t0797": "zona horaria fallida: {{v0}}",
      "tScoreFrom": "puntuación={{score}} de={{from}}",
      "appliedTag": "(aplicado)",
      "writtenTag": "(solo escrito)",
      "selfDestMissing": "No se encuentra el directorio de instalación en ejecución (systemd ExecStart o cli.js)",
      "selfDestUnwritable": "No se puede escribir en el directorio de instalación en ejecución {{v0}}",
      "selfApplied": "Se aplicó {{v0}} en {{v1}}",
      "selfVerifyFail": "El archivo de versión no contiene {{v0}} tras aplicar",
      "selfDownloadFail": "No se puede descargar o descomprimir el paquete oficial {{v0}}: {{v1}}",
      "selfOverlayFail": "No se pudo aplicar el paquete oficial al directorio en ejecución: {{v0}}",
      "selfUpgradeHint": "Falló la aplicación del panel. Como root: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade"
    },
    "tpl": {
      "deleted": "Eliminado {{name}}",
      "removed": "Eliminado {{name}}",
      "failedDetail": "Fallido: {{detail}}",
      "failedColon": "Fallido: {{detail}}",
      "actionFailed": "{{action}} falló: {{detail}}",
      "restartFailed": "Error al reiniciar: {{detail}}",
      "chownFailed": "chown falló: {{detail}}",
      "available": "Disponible: {{detail}}",
      "supportedNotProbed": "Compatible con {{name}}: aún no probado",
      "wrote": "Escribió {{path}}",
      "wroteSettings": "Configuración escrita {{path}}",
      "wroteManaged": "Escribió archivo administrado {{path}}",
      "copyFailed": "Copia fallida: {{detail}}",
      "copyFailed2": "Copia fallida: {{detail}}",
      "reloadFailed": "Recarga fallida: {{detail}}",
      "reloadFailed2": "Recarga fallida: {{detail}}",
      "nginxReloadFailed": "Falló la recarga de nginx: {{detail}}",
      "nginxTestFailed": "nginx -t falló: {{detail}}",
      "nginxConfigFailed": "Error en la verificación de configuración de Nginx: {{detail}}",
      "psqlFailed": "psql falló: {{detail}}",
      "redisCliFailed": "redis-cli falló: {{detail}}",
      "restartFailed2": "reinicio fallido: {{detail}}",
      "missing": "Desaparecido {{name}}",
      "project": "Proyecto {{name}}",
      "logNotFound": "Registro no encontrado: {{path}}",
      "clusterNotFound": "Clúster no encontrado: {{id}}",
      "domainInvalid": "Dominio no válido: {{domain}}",
      "exported": "Exportado {{path}}",
      "reenabledLink": "Conexión reactivada {{name}}",
      "installed": "Instalado",
      "missingDataDir": "Datos faltantesDir",
      "installIncomplete": "Instalación incompleta",
      "noPackages": "Sin paquetes",
      "recentlyUpdated": "Actualizado recientemente",
      "needRootRead": "Requiere root para leer",
      "reenabledPersist": "Conexión reactivada (sobrevive al reinicio)",
      "runtimeOnlyHint": "(Es posible que no persista durante el reinicio; use Guardar para persistir)",
      "statusWrittenPartial": "Estado: escrito/parcial",
      "keyMissingOrNotDeleted": "Falta la clave o no se ha eliminado",
      "passwordCryptStored": "Contraseña almacenada como hash de cripta (no texto sin formato)",
      "skipInvalidUsername": "Nombre de usuario no válido omitido",
      "digNoAnswer": "excavar: sin respuesta (NXDOMAIN o vacío)",
      "ipAddrAddFailed": "Error al agregar dirección IP: {{detail}}",
      "ipAddrDelFailed": "dirección IP fallida: {{detail}}",
      "connUpWarn": "Advertencia de conexión activa: {{detail}}",
      "ntpEnableFailed": "Error al habilitar NTP: {{detail}}",
      "cancelFailed": "Error al cancelar: {{detail}}",
      "powerCmdFailed": "Error en el comando de encendido: {{detail}}",
      "reniceFailed": "Renice falló: {{detail}}",
      "pgIncludeHint": "Incluya este archivo en postgresql.conf o cópielo al aplicar",
      "none": "ninguno",
      "success": "Éxito",
      "on": "en",
      "off": "apagado",
      "continueOp": "continuar",
      "unavailable": "indisponible",
      "unknownError": "error desconocido",
      "noParen": "(ninguno)",
      "keepOldDb": "(mantuvo la base de datos antigua)",
      "ufwNotDetected": "UFW no detectado en este host",
      "fail2banStartHint": "Inícielo en la página fail2ban",
      "hasExecuteNotRoot": "EXECUTE está activado pero el proceso no es root",
      "notRootTarget": "No root (se bloqueará el usuario objetivo add/apt)",
      "reapplyDone": "volver a aplicar los pasos clave completados",
      "someFailed": "Algunos fallaron: ver resultados",
      "securityDesc": "Contraseñas, TLS, límites locales",
      "yskControlPlane": "plano de control YSK",
      "sslDistributeNote": "Distribución SSL: certificado en el borde ≠ cadena de confianza completa del navegador; verificar con dig / curl -vI https://",
      "autoNever": "Nunca automático",
      "autoManualEmergency": "Manual sólo EMERGENCIA",
      "probeMech": "TCP público, solicitud de panel/min, TCP en uso, fail2ban, UFW",
      "probeTunable": "Subir/bajar umbrales",
      "priorityBlockers": "Dirija primero los bloqueadores {{count}}: {{list}}",
      "readinessNotProduction": "La preparación no está lista para producción: {{list}}",
      "noRestart": "sin reinicio",
      "cityPolicyOff": "(política de la ciudad desactivada)",
      "pidStarted": "Proceso iniciado pid={{pid}} {{extra}}",
      "pidUser": "(usuario={{user}})",
      "pidDegraded": "(degradado)",
      "killFailed": "matar -s {{sig}} falló: {{detail}}",
      "routeAdded": "Ruta agregada {{dst}}{{via}}{{dev}}",
      "dnsWritten": "Escribió {{conn}}: DNS {{dns}}{{search}}",
      "peerInstalled": "Instalado en {{dest}}{{restart}}"
    },
    "installedTool": "Instalado (herramienta)",
    "cron": {
      "preserveHostLines": "Línea(s) crontab de host no YSK preservadas {{count}} (no un borrado completo).",
      "noHostLinesOrEmpty": "No hay líneas crontab de host adicionales que no sean YSK (o vacías).",
      "installReplacesYskOnly": "Instalar actualizaciones únicamente en trabajos marcados con YSK; otros trabajos de anfitrión se fusionaron y mantuvieron.",
      "hostScanNeedRoot": "Leer los crontabs de otros usuarios requiere que el plano de control sea root; sólo aparece el crontab del usuario del proceso.",
      "hostScanSkipUser": "Usuario omitido {{user}} (sin permiso)",
      "hostUserInvalid": "Usuario de crontab no válido.",
      "hostScheduleInvalid": "Programación cron del host no válida.",
      "hostLineNotJob": "Esa línea crontab no es un trabajo.",
      "hostLineMissing": "No hay una línea de crontab coincidente (es posible que el crontab del host haya cambiado).",
      "hostLineDuplicate": "Esa línea de trabajo aparece {{count}} veces; edite una línea única primero.",
      "hostReadFailed": "No se pudo leer crontab: {{detail}}",
      "hostWriteFailed": "Error de escritura en crontab: {{detail}}",
      "hostRewriteNeedExecute": "Escribir una línea crontab de host necesita root y YSK_EXECUTE=1. Solo vista previa.",
      "hostRewriteNeedRoot": "Para editar el crontab de otro usuario se necesita el plano de control como raíz.",
      "hostPreview": "Siguiente línea: {{line}}",
      "hostPreviewDelete": "Siguiente: elimine esa línea.",
      "hostRewritten": "Escribí crontab para {{user}}.",
      "hostRunNeedExecute": "La ejecución de un comando cron del host necesita YSK_EXECUTE=1.",
      "hostRan": "Ejecuté el comando cron del host como {{user}}.",
      "hostAdoptNeedExecute": "La adopción de una línea de host en el panel necesita YSK_EXECUTE=1 (de lo contrario, la instalación la duplicaría).",
      "hostAdopted": "Línea de host etiquetada con # ysk:{{id}} y registrada en el panel.",
      "hostConfirmMismatch": "Confirmar debe coincidir con el comando.",
      "hostAdoptOnlyInstallUser": "Ingrese al panel solo para las escrituras de instalación de crontab (raíz/usuario de este proceso). Otros usuarios se duplicarían durante la instalación.",
      "hostAdoptEnableFirst": "Habilite la línea del host antes de llevarla al panel.",
      "hostPercentNewline": "crontab trata el % sin escape como una nueva línea. Escriba formatos de fecha como \\%Y (o evite %)."
    },
    "dbBrowser": {
      "pmaInstalled": "phpMyAdmin instalado en {{path}}",
      "pmaConfigWritten": "Configuración de phpMyAdmin y tmp escritos (autenticación de cookies; se recomienda HTTPS)",
      "pmaExtractFailed": "Error en la descarga/extracción de phpMyAdmin: {{detail}}",
      "projectCreated": "Proyecto creado {{id}} ({{name}})"
    },
    "firewallAllow": {
      "already": "{{port}}/{{proto}}{{from}}: ya permitido",
      "partial": "Parcial: {{ok}} ok, {{fail}} falló",
      "fromLabel": "desde {{from}}"
    },
    "firewallDeleteByComment": {
      "removed": "Se eliminaron {{n}} reglas de firewall que coinciden con {{prefix}}",
      "none": "Ninguna regla de firewall coincide {{prefix}}"
    },
    "serviceExposure": {
      "needsDecision": "{{service}}: confirma si exponer este servicio en la red",
      "private": "{{service}}: se mantiene privado (no se permite ningún firewall público)",
      "restrictedEmpty": "El modo restringido necesita al menos una IP/CIDR permitida",
      "badCountry": "Código de país no válido: {{cc}}",
      "zoneDownloadFail": "La descarga de la zona del país falló para {{cc}}: {{detail}}",
      "zoneEmpty": "La zona del país para {{cc}} está vacía",
      "zoneDownloaded": "Descargado {{n}} CIDR para {{cc}}",
      "zoneMissing": "No hay archivo de zona para {{cc}}: colóquelo en geoip/country-zones o permita la descarga",
      "zoneCidrCap": "Lista CIDR de países limitada a {{n}} entradas",
      "geoNeedExecute": "La lista de países permitidos necesita YSK_EXECUTE",
      "geoNeedRoot": "La lista de países permitidos necesita raíz",
      "geoNoCidrs": "No se han cargado CIDR de país; no se puede aplicar la lista de permitidos geográficos",
      "ipsetMissing": "ipset no instalado: se omitió la lista de países permitidos",
      "ipsetApplyFail": "Error al aplicar ipset/iptables: {{detail}}",
      "ipsetApplied": "Lista de países permitidos establecida {{set}} ({{countries}}, {{n}} CIDR)",
      "ipsetCleared": "IPset del país borrado {{set}}",
      "geoBestEffort": "El filtrado de países es el mejor esfuerzo (ipset); Los grupos de seguridad en la nube están separados."
    },
    "goLive": {
      "deployIncomplete": "goLive: implementación incompleta",
      "deployFailed": "Error en la implementación de goLive: {{detail}}",
      "publishIncomplete": "goLive: publicación incompleta",
      "publishFailed": "La publicación de goLive falló: {{detail}}"
    },
    "ops": {
      "projectNameExists": "El nombre del proyecto ya existe: {{name}}",
      "sslNotReady": "SSL no está listo: no hay certificado para {{domain}}.",
      "sslNotReadyDetail": "SSL no está listo: no hay certificado para {{domain}} (panel SSL o ruta en vivo de Let's Encrypt).",
      "sslGoToPage": "Emita o cargue un certificado en SSL, luego publíquelo + SSL.",
      "sslRejectWrite": "Se negó a escribir SSL nginx conf para evitar el fallo de nginx -t.",
      "installAborted": "Instalación cancelada (cliente desconectado o cancelado)",
      "phpPackagesPartialFail": "Algunos paquetes PHP fallaron: {{list}} (es posible que la CLI principal aún funcione)",
      "pdnsBindConflict": "PowerDNS no puede vincular 0.0.0.0:53 (en uso); a menudo entra en conflicto con systemd-resolved. Vincule la IP pública (panel: Reparar PowerDNS)."
    },
    "webmail": {
      "notInstalled": "El correo web no está instalado; habilitar la descarga y volver a ejecutar",
      "needExecute": "La descarga de webmail necesita permiso de cambio de sistema (YSK_EXECUTE) y red saliente",
      "needExecuteBeforeCreate": "No creará la mitad del proyecto hasta que se habilite EXECUTE",
      "notRoundcubeTree": "La raíz del documento no es un árbol Roundcube completo (puede que aún sea php-hello)",
      "notSnappyTree": "La raíz del documento no es un árbol completo de SnappyMail",
      "installIncompleteHint": "El proyecto existe pero el correo web está incompleto: habilite EJECUTAR y luego reinstale/actualice",
      "extractFailed": "{{tool}} Error en la descarga o extracción: {{detail}}",
      "roundcubeInstalled": "Roundcube instalado {{version}} → {{path}}",
      "roundcubeReuse": "Reutilizar Roundcube instalado → {{path}}",
      "roundcubeConfigWritten": "Escribí la configuración de Roundcube (SQLite, IMAP 993, SMTP 587)",
      "snappyInstalled": "SnappyMail instalado {{version}} → {{path}}",
      "snappyReuse": "Reutilizar SnappyMail instalado → {{path}}",
      "snappyAdminHint": "Al abrir por primera vez, finalice la configuración del administrador de SnappyMail y agregue el dominio IMAP local",
      "imapSmtpHint": "IMAP {{imap}}:993 · SMTP {{smtp}}:587 (inicie sesión con la dirección completa del buzón y la contraseña)",
      "projectCreated": "Proyecto PHP creado {{name}} ({{tool}}, {{id}})",
      "domainRequired": "Se requiere el nombre de host de correo web",
      "openHint": "Inicie sesión con la dirección del buzón y la contraseña; abra la URL desde Proyectos o esta página después de la puesta en marcha",
      "sslHint": "Recomendar Let's Encrypt para {{domain}} (página SSL)",
      "bootstrapLegacyHint": "Bootstrap no tenía ningún servicio de proyecto: escribió el esqueleto dataDir; use Crear y publicar en el panel para la ruta del proyecto PHP",
      "ssoPluginInstalled": "Complemento SSO instalado → {{path}}",
      "forceHttpsOn": "Roundcube force_https habilitado (se requiere HTTPS)",
      "forceHttpsOff": "force_https desactivado: después de SSL, reinstale con force HTTPS marcado",
      "reinstallHint": "El proyecto existe: use Reinstalar/Actualizar o reinstalar: verdadero",
      "reinstalling": "Reinstalar webmail en el proyecto {{name}} ({{id}})",
      "reinstallStart": "Iniciando reinstalación/actualización (pin de versión {{version}}, proyecto {{id}})",
      "projectNotFound": "Proyecto de correo web no encontrado",
      "snappyAdminOnce": "Administrador de SnappyMail {{user}}: la contraseña se muestra una vez (ver resultado/archivo ONCE)",
      "snappyAdminPassword": "Contraseña de administrador de SnappyMail (copiar ahora): {{password}}",
      "publicHtmlStub": "La raíz del documento todavía tiene el código auxiliar del paquete SnappyMail/RainLoop. HTTP debe servir al árbol de aplicaciones public_html; reinstale webmail después de esta solución.",
      "goLiveFailed": "Se instalaron archivos de correo web, pero el estado de implementación/puesta en marcha del proyecto falló: amplíe los detalles.",
      "forceHttpsNeedsSsl": "Roundcube force_https está activado: vincule SSL para este nombre de host antes de confiar en HTTPS público, o desmarque forzar HTTPS hasta entonces.",
      "roundcubePublicHtmlDocRoot": "Raíz de documento HTTP configurada en Roundcube public_html ({{path}})",
      "docRootUpdated": "Raíz del documento del proyecto actualizada a {{path}}",
      "docRootUpdateFailed": "No se pudo actualizar la raíz del documento del proyecto: {{detail}}",
      "sqliteSchemaReady": "Esquema SQLite de Roundcube inicializado",
      "sqliteSchemaFailed": "Error al iniciar el esquema SQLite de Roundcube: {{detail}}",
      "snappyFullEmailLogin": "El inicio de sesión en el buzón debe utilizar el correo electrónico completo (usuario@dominio); la parte local corta está deshabilitada",
      "removedBogusPublicHtml": "Se eliminó el public_html sobrante (php-hello) para que el correo web no se entregue desde el árbol equivocado.",
      "snappyDocRoot": "Raíz de documento HTTP de SnappyMail: {{path}}",
      "phpHelloStillPresent": "Instale left php-hello (YSK PHP OK) como raíz del sitio; el extracto de correo web no lo reemplazó"
    },
    "vpn": {
      "needInstall": "Instalar {{engine}}",
      "openvpnComing": "La ruta completa de OpenVPN está preparada para la próxima versión.",
      "outlineComing": "Outline/Shadowsocks está preparado para un lanzamiento posterior.",
      "needExecuteServer": "La configuración del servidor VPN requiere root y YSK_EXECUTE=1.",
      "serverStopped": "{{engine}} servidor detenido.",
      "serverStopFailed": "No se pudo detener el servidor {{engine}}: {{detail}}",
      "needExecuteClient": "La conexión del cliente VPN requiere root y YSK_EXECUTE=1.",
      "keygenFailed": "Error al generar la clave WireGuard (¿está instalado wg?).",
      "serverKeysCreated": "Claves del servidor WireGuard creadas.",
      "applyFailed": "No se pudo aplicar la configuración de WireGuard: {{detail}}",
      "serverActive": "Servidor WireGuard aplicado (UDP {{port}}).",
      "serverMissing": "El servidor WireGuard no está inicializado: primero ejecute Iniciar servidor.",
      "peerCreated": "Cliente «{{name}}» creado.",
      "peerNotFound": "Cliente no encontrado.",
      "peerRemoved": "Cliente eliminado.",
      "peersSynced": "Lista de pares recargada en la interfaz WireGuard en ejecución.",
      "setEndpointHint": "Configure un punto final público (host:puerto) para que los clientes móviles puedan acceder a este servidor.",
      "invalidConf": "Conf debe incluir [Interfaz] y Clave privada.",
      "clientImported": "Perfil «{{name}}» importado.",
      "profileNotFound": "Perfil del cliente no encontrado.",
      "clientUpFailed": "Error de conexión: {{detail}}",
      "clientUp": "Conectado: {{name}}",
      "clientDown": "Desconectado: {{name}}",
      "clientDeleted": "Perfil eliminado: {{name}}",
      "autostartOn": "Inicio automático en: {{name}}",
      "autostartOff": "Inicio automático desactivado: {{name}}",
      "ovpnPkiStart": "Generando OpenVPN PKI (puede tardar un minuto para los parámetros DH)…",
      "ovpnPkiDone": "Listo para OpenVPN PKI.",
      "ovpnServerActive": "Servidor OpenVPN aplicado ({{proto}} {{port}}).",
      "invalidOvpn": "La configuración de OpenVPN debe incluir directivas de cliente/remotas.",
      "ssHonest": "Utiliza el servidor ss shadowsocks-libev, no el Administrador de esquemas completo.",
      "ssKeysCreated": "Contraseña del servidor Shadowsocks generada.",
      "ssServerActive": "Servidor Shadowsocks aplicado (puerto {{port}}).",
      "ssSharedPassword": "Todas las etiquetas ss:// comparten una contraseña de servidor (rote volviendo a asegurar el servidor).",
      "ssPackageYielded": "Se detuvo/enmascaró la unidad predeterminada Debian Shadowsocks-libev para que YSK pueda vincular el {{port}} público en este host.",
      "ssEndpointAutofilled": "Punto final público establecido en {{endpoint}}.",
      "ssClientsRewritten": "Se regeneraron los URI(s) ss:// del cliente {{n}} para el punto final/contraseña actual.",
      "ssUfwOpened": "Se abrió UFW {{port}}/tcp+udp para Shadowsocks (si ufw está instalado).",
      "endpointAutofilled": "Punto final público establecido en {{endpoint}}.",
      "ovpnClientsRewritten": "Remoto actualizado = en {{n}} Perfil(es) de cliente OpenVPN para descarga/QR.",
      "accessFullNat": "Internet completo habilitado (reenvío de IP + NAT)",
      "accessLanOnly": "Modo solo LAN (sin NAT de Internet)",
      "accessReconnectHint": "Los clientes ya conectados deben volver a conectarse para elegir nuevas rutas",
      "ovpnNatDurable": "OpenVPN NAT/forward instalado para reiniciar (systemd ExecStartPost).",
      "clientFullTunnelProtect": "Cliente de túnel completo detectado (AllowedIPs 0.0.0.0/0). Se aplicó protección de host para que las respuestas del panel/SSH permanezcan en la NIC de LAN.",
      "clientFullTunnelHint": "Consejo: solo para acceso dividido, configure las IP permitidas en CIDR de VPN/LAN (no 0.0.0.0/0) en la configuración y luego vuelva a conectarse."
    },
    "vnc": {
      "needInstall": "Instalar {{stack}}",
      "needExecute": "YSK_EXECUTE está deshabilitado: no puede instalar paquetes ni aprovisionar a usuarios de Linux.",
      "needRoot": "No se ejecuta como root: system useradd y vncserver apply están bloqueados.",
      "hostnameResolves": "El nombre de host {{hostname}} se resuelve.",
      "hostnameUnresolvable": "Este host no puede resolver su propio nombre de host ({{hostname}}). El inicio de la sesión VNC fallará hasta que se arregle /etc/hosts.",
      "hostnameAlreadyResolves": "El nombre de host {{hostname}} ya se resuelve: /etc/hosts sin cambios.",
      "hostnameWouldAppend": "Se agregaría a /etc/hosts: {{line}}",
      "hostnameAppended": "Agregado a /etc/hosts: {{line}}",
      "hostnameAppendFailed": "No se pudo escribir /etc/hosts: {{detail}}",
      "hostnameAliasPresent": "El nombre de host {{hostname}} ya es un alias exacto de /etc/hosts y no se vuelve a agregar.",
      "hostnameStillUnresolvable": "Escribí /etc/hosts pero {{hostname}} aún no se resuelve. Confirme que los hosts de nsswitch incluyan archivos.",
      "skipStartHostname": "No inició la pantalla; primero corrija la resolución del nombre de host.",
      "novncAssetsOnly": "Se encontraron activos web noVNC; El binario websockify aún falta.",
      "viewerNeedExecute": "Iniciar un escritorio VNC local para la vista del navegador necesita root + YSK_EXECUTE",
      "browserSessionReady": "Sesión VNC del navegador lista: {{name}}",
      "clientPathUserReachable": "Ruta: punto final accesible para el usuario: {{name}} → {{target}} (navegador a través del panel)",
      "clientPathServerProxy": "Ruta: servidor proxy - {{name}} → {{target}} (salida a través de este servidor)",
      "clientOpenInBrowserHint": "Utilice \"Abrir en el navegador\" en la lista de clientes para el cliente VNC integrado",
      "probeOk": "Accesibilidad OK: el plano de control puede abrir TCP a {{target}}",
      "probeRefused": "No hay nada escuchando en {{target}} (conexión rechazada). ¿Se está ejecutando VNC en ese host?",
      "probeTimeout": "Se agotó el tiempo de conexión a {{target}} desde este servidor. Verifique el firewall/enrutamiento.",
      "probeDns": "No se puede resolver el nombre de host «{{host}}».",
      "probeNet": "Red inalcanzable para {{target}} desde este servidor.",
      "probeFailed": "No se puede alcanzar {{target}}: {{detail}}",
      "probeInvalid": "Objetivo VNC no válido {{host}}:{{port}}",
      "probeHintUserReachable": "La ruta es “accesible para el usuario”: este panel aún debe abrir TCP al host público (el navegador no puede hablar solo RFB).",
      "probeHintServerProxy": "La ruta es \"servidor proxy\": se debe poder acceder al objetivo desde la red del host de este plano de control.",
      "connectHostOverride": "Proxy del servidor: muestra el host {{display}}, TCP se conecta a {{connect}}",
      "probeConnectHostHint": "Mostrar objetivo {{display}}, dirección de sonda/conexión {{connect}} (anulación de host de conexión).",
      "accountNotFound": "Cuenta VNC no encontrada",
      "accountExists": "Ya existe una cuenta VNC con este nombre o usuario de Linux",
      "accountCreated": "Cuenta VNC creada {{name}} ({{user}}, pantalla:{{display}})",
      "accountUpdated": "Cuenta VNC actualizada {{name}}",
      "accountDeleted": "Cuenta VNC eliminada {{name}}",
      "invalidName": "Nombre de cuenta no válido",
      "invalidGeometry": "Resolución no válida (use, por ejemplo, 1920x1080)",
      "displayBusy": "El número de visualización no es válido o ya está en uso",
      "displayExhausted": "No quedan números de visualización VNC libres en el rango",
      "userWrittenOnly": "Usuario de Linux {{user}} registrado solo en el plano de control (necesita root + YSK_EXECUTE para agregar usuario)",
      "userExists": "El usuario de Linux {{user}} ya existe",
      "userCreated": "Usuario de Linux creado {{user}}",
      "useraddFailed": "useradd falló para {{user}}: {{detail}}",
      "userdelBlocked": "No se puede eliminar el usuario de Linux {{user}} sin root + YSK_EXECUTE",
      "userAlreadyGone": "Usuario de Linux {{user}} ya ausente",
      "userdelFailed": "userdel falló para {{user}}: {{detail}}",
      "userdelLeftover": "Se eliminó la cuenta del panel, pero el usuario de Linux {{user}} todavía está en el host. Elimínelo de los usuarios o del host.",
      "userDeleted": "Usuario de Linux eliminado {{user}}",
      "passwordTooShort": "La contraseña de VNC debe tener al menos 6 caracteres",
      "passwordWrittenOnly": "Contraseña marcada solo en el plano de control (necesita root + YSK_EXECUTE para vncpasswd)",
      "passwordFailed": "No se pudo escribir la contraseña de VNC: {{detail}}",
      "passwordNeedTiger": "Vncpasswd no encontrado. Instale TigerVNC (tigervnc-standalone-server) antes de establecer una contraseña.",
      "passwordSet": "Contraseña VNC establecida para {{user}}",
      "passwordUpdated": "Contraseña actualizada para {{name}}",
      "passwordMetaOnly": "Contraseña almacenada como meta solo hasta que se aplique el sistema",
      "xstartupWrittenOnly": "xstartup no está escrito en inicio (necesita root + YSK_EXECUTE)",
      "xstartupWriteFailed": "No se pudo escribir ~/.vnc/xstartup ({{detail}}). Necesita raíz + YSK_EXECUTE.",
      "xstartupFailed": "VNC xstartup/desktop falló en la pantalla: {{display}} ({{detail}}). Prefiere el perfil XFCE o instala un terminal.",
      "xstartupWritten": "Escribió {{path}}",
      "sessionStartBlocked": "No se puede iniciar la sesión VNC sin root + YSK_EXECUTE",
      "sessionStartFailed": "No se pudo iniciar la visualización :{{display}}: {{detail}}",
      "sessionStartHostname": "No se pudo iniciar la visualización :{{display}}: este host no puede resolver su propio nombre de host. Agregue el nombre de host a /etc/hosts (o corrija DNS) y luego inicie la sesión nuevamente.",
      "sessionStarted": "VNC iniciado para {{user}} en: {{display}} (puerto {{port}})",
      "sessionStartUnverified": "El comando de inicio devolvió OK pero el puerto RFB aún no escucha",
      "sessionAlreadyRunning": "VNC ya se está ejecutando para {{user}} en: {{display}} (puerto {{port}})",
      "vncserverMissing": "El contenedor del servidor TigerVNC (tigervncserver/vncserver) no está instalado: use la pestaña Instalar",
      "vncserverWrapperMissing": "Encontrado {{found}} pero no hay Tigervncserver/vncserver wrapper: reinstale Tigervnc-standalone-server",
      "vncPackageWithoutBin": "El paquete Tigervnc-standalone-server está instalado pero falta el script de inicio: reinstale el paquete",
      "needPasswordBeforeStart": "Establezca una contraseña VNC (≥6 caracteres) antes de comenzar",
      "displayPortBusy": "Pantalla :{{display}} → puerto {{port}} ya está en uso: detenga la otra sesión o elija otra pantalla",
      "sessionStartPermission": "Permiso denegado al iniciar la visualización :{{display}}",
      "staleLockCleared": "Se borró el bloqueo obsoleto de la pantalla: {{display}}, reintentando",
      "sessionStopBlocked": "No se puede detener la sesión VNC sin root + YSK_EXECUTE",
      "sessionStopped": "VNC detenido para la visualización {{user}}: {{display}}",
      "linuxUserKept": "Se mantuvo el usuario de Linux {{user}} en el sistema",
      "novncStartBlocked": "No se puede iniciar noVNC sin root + YSK_EXECUTE",
      "novncAlreadyRunning": "noVNC ya se está ejecutando en el puerto {{port}}",
      "novncStartFailed": "No se pudo iniciar websockify: {{detail}}",
      "novncStarted": "noVNC escuchando en 127.0.0.1:{{httpPort}} → RFB {{rfbPort}}",
      "novncNotRunning": "noVNC no se estaba ejecutando",
      "novncStopBlocked": "No se puede detener noVNC sin root + YSK_EXECUTE",
      "novncStopped": "Se detuvo noVNC en el puerto {{httpPort}}",
      "directNeedsAllBind": "El enlace RFB es localhost: los clientes directos no pueden llegar desde el exterior sin un túnel",
      "directOpenFirewall": "Abra TCP {{port}} en el firewall para clientes directos",
      "viaServerReady": "noVNC está activo: abra la URL local o use un túnel SSH",
      "viaServerStartFirst": "Inicie noVNC para habilitar el acceso al navegador a través del servidor",
      "viewTicketIssued": "Emitió un ticket de visualización de corta duración",
      "invalidPort": "Número de puerto no válido",
      "firewallNeedExecute": "La apertura de puertos UFW requiere YSK_EXECUTE",
      "firewallNeedRoot": "Abrir puertos UFW requiere root",
      "firewallFailed": "Error al permitir ufw: {{detail}}",
      "firewallOpened": "UFW permitió TCP {{port}}",
      "clientInvalid": "El nombre del cliente y el host son obligatorios.",
      "clientNotFound": "Perfil de cliente no encontrado",
      "clientUpBlocked": "No se puede conectar el cliente VNC sin root + YSK_EXECUTE",
      "clientUpFailed": "Error de conexión del cliente: {{detail}}",
      "clientViaServerUp": "Cliente {{name}} listo para el navegador VNC a través del panel (nota websockify heredada retirada). El destino sigue siendo accesible a través de Abrir en el navegador.",
      "clientDirectUp": "El cliente {{name}} usa VNC en el navegador únicamente (se eliminó la ruta del host vncviewer). Abrir en el navegador → {{target}}.",
      "clientNeedViewer": "El vncviewer de escritorio es opcional. Utilice Abrir en el navegador para el cliente VNC integrado.",
      "clientDownBlocked": "No se puede desconectar sin root + YSK_EXECUTE",
      "clientDown": "Cliente desconectado {{name}}",
      "clientDeleted": "Perfil de cliente eliminado",
      "sessionStartCwd": "Error al iniciar VNC: el directorio de trabajo no es accesible para el usuario de la sesión (pantalla: {{display}}). Se solucionó comenzando desde CASA.",
      "desktopRestarted": "Se aplicó el perfil de escritorio y se reinició la sesión ({{desktop}}). Vuelva a conectar VNC/noVNC.",
      "desktopNeedsStart": "Perfil de escritorio {{desktop}} escrito en xstartup. Inicie la sesión para postularse.",
      "linuxUserRolledBack": "Se eliminó el usuario restante de Linux {{user}} después de que falló la contraseña de VNC.",
      "linuxUserOrphan": "No se pudo eliminar el usuario de Linux restante {{user}} después de que falló la contraseña de VNC."
    },
    "apache": {
      "needServerName": "Nombre del servidor requerido",
      "siteExists": "El sitio ya existe",
      "siteNotFound": "Sitio no encontrado",
      "wroteConf": "Escribió {{path}}",
      "needExecute": "Necesita YSK_EXECUTE",
      "settingsWritten": "Valores predeterminados de Apache escritos",
      "managedDir": "Directorio administrado {{path}}",
      "dryRun": "Ejecución en seco",
      "copyFailed": "Copia fallida: {{file}}",
      "configOk": "prueba de configuración OK",
      "configFailed": "Error en la prueba de configuración: {{detail}}",
      "reloaded": "Apache recargado",
      "reloadFailed": "Recarga fallida",
      "skippedOrphans": "Omitido {{count}} configuración(es) huérfana(s) (no propiedad)",
      "artifactInvalid": "Nombre de configuración de artefacto no válido",
      "artifactOwned": "Conf {{file}} es propiedad de un proyecto o sitio independiente",
      "artifactNotFound": "Configuración de artefacto no encontrada: {{file}}",
      "artifactRemoveFailed": "No se pudo eliminar {{file}}: {{detail}}",
      "artifactRemoved": "Se eliminó configuración huérfana {{file}}",
      "artifactSystemPending": "DataDir limpiado; El sistema Apache twin necesita YSK_EXECUTE/root para deshabilitarlo",
      "artifactSystemDisabled": "Sitio del sistema deshabilitado {{site}}",
      "artifactSystemFailed": "Error al desactivar el sistema: {{detail}}",
      "conflictProjectsOnly": "El dominio {{name}} es reclamado por varios proyectos: cambie el dominio de un proyecto",
      "cleanupNothing": "No hay configuraciones de artefactos conflictivos que eliminar",
      "conflictOwnedKeep": "Configuración de propiedad mantenida {{file}} (también Nombre de servidor {{domain}})",
      "retiredOrphan": "Configuración huérfana retirada {{file}} (el nombre del servidor choca con {{domain}})"
    },
    "btTracker": {
      "needExecute": "YSK_EXECUTE está desactivado: la instalación/inicio del rastreador y los puertos públicos necesitan permiso para cambiar el sistema.",
      "startWithoutExecute": "Iniciar el rastreador sin YSK_EXECUTE: escuchar puede funcionar; El firewall del host no se abrirá.",
      "alreadyRunning": "El rastreador BitTorrent ya se está ejecutando en este proceso.",
      "notRunning": "El rastreador BitTorrent no se está ejecutando.",
      "started": "Rastreador BitTorrent escuchando en el puerto {{port}}.",
      "startFailed": "No se pudo iniciar el rastreador: {{detail}}",
      "stopped": "El rastreador BitTorrent se detuvo.",
      "maxSeeds": "Se alcanzó el máximo de semillas concurrentes ({{n}}).",
      "seedStarted": "Participación de siembra {{id}}.",
      "seedStopped": "Se dejó de sembrar acciones.",
      "seedPending": "La siembra aún no está lista: inicie el rastreador y asegúrese de YSK_EXECUTE cuando sea necesario.",
      "notSeeding": "Esta parte no está actualmente sembrada por el plano de control.",
      "btNeedsTracker": "BT share necesita un rastreador de carrera. Abra Archivos → BT Tracker e inícielo.",
      "restoreTrackerFailed": "El rastreador BT no pudo iniciarse durante la restauración del arranque",
      "restoreDone": "Restauración de BT: sembrado {{seeded}}/{{attempted}} (fallido {{failed}})",
      "workerMissing": "Falta el guión del trabajador independiente; iniciado en proceso (muere con este proceso)",
      "startedDetached": "Se inició el trabajador independiente del rastreador BT (pid {{pid}}, puerto {{port}})",
      "runningDetached": "Rastreador ejecutándose como trabajador independiente (pid {{pid}})",
      "jobQueued": "Creación de torrents BT en cola (gran proporción)",
      "jobRunning": "Creación de torrent BT en ejecución",
      "libraryAdded": "Agregado {{name}} a la biblioteca WebTorrent",
      "libraryInspectFailed": "No se pudo leer ese .torrent o magnet",
      "libraryDup": "Ese torrent ya está en la biblioteca.",
      "libraryDestBad": "La carpeta para guardar no es una ruta de archivos válida",
      "libraryTorrentTooBig": "El archivo .torrent pesa más de 8 MiB",
      "libraryNotFound": "Elemento de biblioteca no encontrado",
      "libraryPaused": "En pausa",
      "libraryResumed": "Reanudado",
      "libraryRemoved": "Eliminado de la biblioteca",
      "libraryFilesRemoved": "Archivos descargados eliminados",
      "libraryRestoreDone": "Restauración de biblioteca: iniciada {{started}}/{{attempted}} (fallida {{failed}})",
      "applyTrackersDone": "Se aplicaron rastreadores adicionales a {{n}} espacios de anuncios en vivo",
      "libraryNeedServe": "Guardado. Abra el panel (servidor ysk-server) para que WebTorrent pueda descargar o inicializar.",
      "libraryDestIsFile": "No se puede crear una carpeta llamada {{name}}; ya existe un archivo con ese nombre.",
      "librarySeedMissing": "No hay archivos coincidentes en esa carpeta para inicializar.",
      "libraryWaitingPeers": "Esperando a sus compañeros. Si los archivos ya están en este host, agréguelos nuevamente y elija semilla existente."
    },
    "migrate": {
      "orphanConfirm": "Escriba la ruta de inicio sobrante exacta para confirmar la eliminación.",
      "orphanStillInStore": "Esa casa todavía pertenece a un proyecto en la tienda.",
      "orphanMissing": "Ruta no en el disco: {{path}}",
      "orphanNeedExecute": "Eliminaría los restos de {{path}}. Necesita YSK_EXECUTE=1.",
      "orphanRmFailed": "No se pudieron eliminar los restos de casa: {{detail}}",
      "orphanRemoved": "Se eliminó la casa sobrante del proyecto {{path}}."
    },
    "publicFiles": {
      "liveConf": "Conf Nginx en vivo: {{path}}",
      "publicRoot": "Raíz pública: {{path}}",
      "confNameStale": "El archivo {{file}} no coincide con el server_name actual {{serverName}}. Vuelva a aplicar archivos públicos para renombrarlo."
    },
    "leftover": {
      "staleCliTitle": "CLI sobrante obsoleta",
      "staleCli": "La CLI sobrante aún está presente: {{path}} (producto en ejecución {{version}}). PATH puede que lo prefiera. Eliminar con: rm -f {{path}}",
      "apacheDefaultTitle": "Sitio predeterminado sobrante de Apache",
      "apacheDefault": "Apache 000 predeterminado todavía está habilitado. Ese es el archivo del sitio de valores; no significa que Apache esté escuchando en público :80 (se espera YSK Apache en 127.0.0.1:8080). La superposición no lo desactiva. Aplicar Apache desde el panel o hosting apache apply --execute.",
      "nginxCatchAllTitle": "Falta el comodín Nginx",
      "nginxCatchAll": "ysk-000-default.conf no está en /etc/nginx/conf.d. Un SNI desconocido puede fallar. Ejecute proyectos nginx-sync --execute.",
      "vsftpdTitle": "unidad vsftpd falló",
      "vsftpd": "vsftpd falló. La superposición no reescribe listening/listen_ipv6. Aplicar FTP desde el panel.",
      "dovecotTitle": "Dovecot TLS apunta al certificado faltante",
      "dovecot": "Dovecot ssl_cert señala que falta {{path}}. La superposición no reescribe ssl=no. Aplique TLS de correo después de emitir el certificado o aplique la pila de correo electrónico.",
      "overlayDoesNotHeal": "La superposición del producto no reescribe nginx, Apache, vsftpd o Dovecot. Utilice los comandos de aplicación enumerados (root + YSK_EXECUTE=1).",
      "executeStaleCli": "Pase --execute (root + YSK_EXECUTE=1) para eliminar contenedores CLI obsoletos.",
      "executeMissingTls": "Pase --execute (root + YSK_EXECUTE=1) para deshabilitar el certificado TLS faltante para que vsftpd/Dovecot pueda iniciarse.",
      "executeGeneric": "Pase --execute (root + YSK_EXECUTE=1) para aplicar la limpieza sobrante de los hallazgos anteriores.",
      "staleCliRemoved": "Se eliminó el CLI residual {{path}}.",
      "staleCliRemoveFailed": "No se pudo eliminar el CLI residual {{path}}: {{detail}}",
      "vsftpdSslOff": "Sin certificado FTPS: se puso ssl_enable=NO en vsftpd y se reinició.",
      "dovecotSslOff": "Falta {{path}}: Dovecot con ssl=no y reinicio.",
      "readinessTitle": "Restos de host después de la superposición",
      "readinessClean": "No se ha detectado ningún valor predeterminado de Apache sobrante, falta el nginx catch-all, vsftpd fallido o CLI obsoleta.",
      "nginxRemoved": "Se eliminó la configuración de nginx sobrante {{path}}.",
      "nginxNotLeftover": "No es una configuración de archivos públicos sobrantes: rechace la eliminación.",
      "nginxUnusedKeep": "000 predeterminado no se utiliza, no sobra, no se elimina.",
      "nginxSystemCopy": "La copia del sistema aún está presente: {{path}}. Necesita YSK_EXECUTE + root para eliminarlo.",
      "nginxReloadFailed": "nginx -t o la recarga falló después de eliminar {{path}}."
    },
    "defense": {
      "panelReqLabel": "Solicitudes de paneles / min",
      "panelReqExcluded": "Tráfico del panel autenticado: se muestra aquí, no se cuenta en la puntuación de amenaza",
      "tcpOk": "TCP {{target}} accesible",
      "tcpFail": "TCP {{target}} falló",
      "dnsDegraded": "Ruta DNS degradada",
      "reqRateHigh": "Tasa de solicitud pública {{reqs}}/min ≥ {{threshold}}",
      "ddosHeuristic": "Alta tasa de solicitudes públicas más fallas en la sonda de borde"
    }
  },
  "ops": {
    "blocked": {
      "needExecute": "La ejecución del host está desactivada; esta acción no puede finalizar desde el panel",
      "needExecuteShort": "La ejecución del host no está habilitada",
      "needExecuteBlocked": "Bloqueado: la ejecución del host está desactivada",
      "needRoot": "Se requieren privilegios de root",
      "needExecuteRoot": "Requiere YSK_EXECUTE=1 y root",
      "needExecuteYsk": "Requiere YSK_EXECUTE=1",
      "writeOutsideDataDir": "Escritura bloqueada: la ejecución del host está desactivada y la ruta está fuera del directorio de datos del panel",
      "nginxReload": "No se puede recargar Nginx: se requiere ejecución del host",
      "signal": "No se puede enviar la señal: se requiere ejecución del host (YSK_EXECUTE)",
      "signalNote": "YSK_EXECUTE=1 es necesario para una muerte real",
      "renice": "No se puede renunciar: se requiere ejecución del host (YSK_EXECUTE)",
      "install": "La ejecución del host está desactivada; La instalación no puede finalizar desde el panel.",
      "update": "La ejecución del host está desactivada; la actualización no puede finalizar desde el panel",
      "panel": "No se puede completar esto desde el panel de administración"
    },
    "honesty": {
      "blockedNotOk": "Solución de honestidad: bloqueado no puede estar bien = verdadero",
      "blockedNotApplied": "Solución de honestidad: bloqueado no se puede aplicar_status=aplicado",
      "okFalseNotApplied": "Solución de honestidad: ok=false no se puede aplicar_status=aplicado"
    },
    "status": {
      "applied": "Estado: aplicado",
      "failed": "Estado: fallido",
      "written": "Estado: escrito",
      "blocked": "Estado: bloqueado"
    },
    "notes": {
      "writtenSettings": "Configuraciones escritas",
      "completed": "Terminado",
      "partialSuccess": "La operación tuvo un éxito parcial",
      "notInstalled": "No instalado",
      "running": "Correr",
      "stopped": "Interrumpido",
      "unknown": "Desconocido"
    }
  },
  "opsResult": {
    "title": "Resultado",
    "status": "Estado",
    "port": "Puerto",
    "url": "URL",
    "pid": "PID",
    "blocked": "no se puede ejecutar",
    "success": "Éxito",
    "failed": "Fallido",
    "retry": "Rever",
    "showDetails": "Detalles ({{count}})",
    "hideDetails": "Ocultar detalles",
    "stepBuildOk": "Construcción completada",
    "stepHealthOk": "Chequeo de salud pasado",
    "stepProcessStarted": "Proceso iniciado",
    "stepSystemdFallback": "La unidad Systemd no está lista: el proceso se inició mediante el archivo pid",
    "stepNginxWritten": "Configuración de Nginx escrita",
    "stepConfigsSynced": "Configuraciones sincronizadas con el sistema",
    "stepStoppedOld": "Detenido el proceso anterior",
    "stepTuningApplied": "Ajuste de tiempo de ejecución aplicado",
    "stepUnitWritten": "unidad de servicio escrita",
    "stepSystemdStartFailed": "El inicio de Systemd falló: se utilizó el proceso alternativo",
    "portListening": "El puerto {{port}} está escuchando",
    "portNotListening": "El puerto {{port}} no escucha",
    "httpOk": "HTTP Aceptar {{status}}",
    "httpFail": "HTTP falló: {{detail}}"
  },
  "pageGuide": {
    "missing": "Aún no hay contenido de ayuda disponible para esta página.",
    "missingTitle": "Sin guía",
    "eyebrow": "Acerca de",
    "canDoTitle": "que puedes hacer",
    "workflowTitle": "Flujo sugerido",
    "notesTitle": "Notas",
    "cliTitle": "Referencia rápida de CLI",
    "cliFoot": "Para obtener indicadores completos, ejecute ysk-server <command> --help o consulte los documentos.",
    "relatedTitle": "Relacionado"
  },
  "playbooks": {
    "discover-host": {
      "name": "Descubrimiento de host",
      "description": "Inventario de hosts de solo lectura"
    },
    "nginx-health": {
      "name": "Comprobación de estado de Nginx",
      "description": "Verificar el estado del servicio nginx"
    },
    "nginx-restart": {
      "name": "Reinicio de Nginx (alto riesgo)",
      "description": "Reinicie nginx después de la aprobación"
    },
    "local-llm-ops-only": {
      "name": "Solo operaciones locales de LLM",
      "description": "Descubrimiento de emergencia en modo de protección"
    },
    "disk-pressure": {
      "name": "Control de presión del disco",
      "description": "Uso de disco de solo lectura a través de df"
    },
    "mail-stack-status": {
      "name": "Estado de la pila de correo",
      "description": "Consultar unidades postfix + palomar"
    },
    "security-units": {
      "name": "Unidades de seguridad",
      "description": "fail2ban + estado sshd (solo lectura)"
    },
    "web-stack-status": {
      "name": "Estado de la pila web",
      "description": "sonda nginx + php-fpm"
    },
    "emergency-read-only": {
      "name": "Barrido de emergencia de solo lectura",
      "description": "Solo datos seguros para la protección"
    },
    "backup-health": {
      "name": "Preparación para la copia de seguridad",
      "description": "Verifique el disco + lista de procesos antes de la ventana de respaldo"
    },
    "db-stack-status": {
      "name": "Estado de la pila de base de datos",
      "description": "unidades mysql/mariadb/redis/postgres"
    },
    "ssl-nginx-check": {
      "name": "Comprobación SSL + Nginx",
      "description": "estado de nginx antes de las operaciones de certificación"
    }
  },
  "presetChips": {
    "customPlaceholder": "Costumbre…"
  },
  "projects": {
    "title": "Proyectos",
    "subtitle": "",
    "create": "Crear proyecto",
    "createHint": "Después de crear, abra los detalles para implementar, publicar y ajustar recursos",
    "empty": "Aún no hay proyectos",
    "emptyHint": "Cree su primer proyecto, luego implemente y publique Nginx",
    "emptyFilter": "No hay proyectos coincidentes",
    "emptyFilterHint": "Borrar búsqueda o cambiar el filtro de tiempo de ejecución",
    "name": "Nombre",
    "domain": "Dominio (opcional)",
    "detail": "Detalle del proyecto",
    "deploy": "Desplegar",
    "deployPhp": "Implementar PHP",
    "stop": "Detener",
    "health": "control de salud",
    "publishNginx": "Publicar Nginx",
    "publishNginxSsl": "Publicar Nginx + SSL",
    "opsResult": "resultado de operaciones",
    "runtime": "Tiempo de ejecución",
    "template": "Plantilla (opcional)",
    "templateNone": "- ninguno -",
    "searchPlaceholder": "Buscar nombre, dominio o ID…",
    "listDesc": "Administrar sitios en este host.",
    "filterAll": "Todos los tiempos de ejecución",
    "statTotal": "Total",
    "statRunning": "Correr",
    "statDegraded": "Degradado",
    "statUnhealthy": "Malsano",
    "statStopped": "Detenido/listo",
    "statStoppedOnly": "Interrumpido",
    "statReadyOnly": "Listo",
    "statPendingOs": "SO pendiente",
    "status": {
      "failed": "Fallido",
      "failedHint": "Falló la implementación o la verificación de estado: verifique los registros",
      "unhealthy": "Malsano",
      "unhealthyHint": "El proceso está activo pero la verificación de estado falló",
      "pendingOs": "Usuario del sistema operativo pendiente",
      "pendingOsHint": "Usuario del sistema no aprovisionado",
      "degraded": "Corriendo (degradado)",
      "degradedHint": "El proceso está activo pero no en modo de producción completo (por ejemplo, no raíz/archivo pid)",
      "deploying": "Implementando",
      "published": "Publicado",
      "publishedHint": "Configuración de Nginx escrita; El proceso puede ser separado.",
      "running": "Correr",
      "stopped": "Interrumpido",
      "ready": "Listo",
      "readyHint": "Creado: implementar para comenzar",
      "unknown": "Desconocido"
    },
    "checklist": {
      "title": "Ruta de lanzamiento",
      "desc": "Complete estos pasos para atender el tráfico",
      "created": "Creado",
      "os": "Usuario del sistema operativo",
      "deploy": "Desplegar",
      "nginx": "nginx",
      "health": "Salud"
    },
    "next": {
      "pendingOsTitle": "Usuario del sistema no aprovisionado",
      "provisionOsAction": "Crear usuario del sistema",
      "pendingOsBody": "Este proyecto aún no tiene ningún usuario de sistema aislado.",
      "pendingOsActions": "Aún puedes implementar; El aislamiento total necesita privilegios de administrador en el host.",
      "deployTitle": "Siguiente: Implementar",
      "deployBody": "Utilice Implementar en el encabezado o la pestaña Implementar para Git.",
      "nginxTitle": "Siguiente: Publicar Nginx",
      "nginxBody": "Abra la pestaña Red para publicar Nginx (SSL opcional)."
    },
    "healthDetail": {
      "none": "Aún no hay control de salud",
      "overall": "Resultado",
      "nginxStatus": "Estado de Nginx",
      "nginxReloaded": "recarga de nginx",
      "httpStatus": "HTTP",
      "latency": "Estado latente",
      "error": "Error",
      "at": "Comprobado en",
      "deployMode": "Modo de implementación",
      "edgeKind": "Borde",
      "goLiveOk": "Entrar en funcionamiento",
      "goLiveAt": "Entra en funcionamiento en",
      "degraded": "Degradado"
    },
    "railPhp": "PHP/sitio",
    "railStatic": "Sitio estático",
    "sectionPhpDeploy": "Implementación de PHP",
    "sectionPhpDeployDesc": "Escriba un sitio/grupo PHP y aplique cuando esté permitido",
    "sectionStaticDeploy": "Contenido estático",
    "sectionStaticDeployDesc": "Los sitios estáticos usan archivos + Nginx, sin proceso de nodo",
    "staticDeployHint": "Extraiga contenido a través de Git, luego publique Nginx en Red.",
    "noDomain": "Sin dominio",
    "lastDeploy": "Última implementación",
    "neverDeployed": "Nunca implementado",
    "created": "Creado {{name}}",
    "backToList": "Volver a proyectos",
    "openUrl": "Abrir URL",
    "openUrlNeedDomain": "Primero establezca un dominio: no abra 127.0.0.1 en su navegador",
    "needOsUser": "Primero cree el usuario del sistema en la pestaña Aislamiento.",
    "goIsolation": "Abrir pestaña Aislamiento",
    "homeMissing": "El directorio de inicio no existe",
    "homeMissingHint": "La misma sonda en vivo que migrar inventario: cree el usuario del sistema en aislamiento",
    "stopTitle": "Detener este proyecto (unidad systemd y sitio público)",
    "deployTitle": "Implementar este proyecto",
    "httpStatsHint": "Del registro de acceso de este proyecto (última muestra)",
    "httpStatsNone": "Aún no hay registro de acceso al proyecto",
    "notFound": "Proyecto no encontrado",
    "home": "Directorio de inicio",
    "env": "Ambiente",
    "backup": "Respaldo",
    "resources": "Recursos",
    "quotaUnlimited": "Sin cuota",
    "lastHealth": "Última salud",
    "tabOverview": "Descripción general",
    "tabDeploy": "Desplegar",
    "tabApp": "Aplicación",
    "tabNetwork": "Red",
    "tabResources": "Recursos",
    "tabIsolation": "Aislamiento",
    "tabLogs": "Registros",
    "tabAdvanced": "Avanzado",
    "tabMore": "Más",
    "createGoLive": "Implementar y publicar Nginx después de crear",
    "createPreferredPort": "Puerto fijo (opcional)",
    "goLiveOk": "Implementado y publicado",
    "goLivePartial": "Creado; implementar/publicar incompleto",
    "nginxLive": "Vivir",
    "nginxWritten": "Escrito",
    "nginxNeedsDeploy": "Necesita implementarse",
    "nginxFailed": "Error de publicación",
    "netEdgeStatus": "Estado del borde",
    "netUpstream": "Río arriba",
    "netPortTitle": "Puerto de proceso",
    "netCurrentPort": "Puerto actual",
    "netPublishTitle": "Publicar",
    "netConfPreview": "conferencia",
    "savePublishSsl": "Guardar y publicar + SSL",
    "retryLiveTitle": "Entrada en funcionamiento incompleta",
    "retryLiveBody": "La implementación o la publicación de Nginx no finalizó. Vuelva a intentarlo a continuación.",
    "retryDeploy": "Reintentar implementación",
    "retryPublish": "Reintentar publicar Nginx",
    "preferredPortRedeployHint": "Guarde y luego vuelva a implementar para que el proceso use este puerto.",
    "railProcess": "Proceso",
    "railNginx": "nginx",
    "railOs": "Usuario del sistema operativo",
    "railHealth": "Salud",
    "nginxPublished": "Configuración publicada",
    "nginxNone": "No publicado",
    "osProvisioned": "Usuario del sistema aprovisionado",
    "osPending": "Aislamiento del sistema operativo pendiente",
    "healthOk": "Saludable",
    "healthBad": "Fallido",
    "healthUnknown": "No comprobado",
    "sectionRuntimeDeploy": "Implementación en tiempo de ejecución",
    "sectionRuntimeDeployDesc": "Inicie el proceso para este proyecto en tiempo de ejecución (Nodo/PHP)",
    "sectionGit": "implementación de git",
    "sectionGitDesc": "Extraiga de Git y vuelva a implementar",
    "sectionEnv": "Variables ambientales",
    "sectionEnvDesc": "Escriba líneas KEY=value en el proyecto .env",
    "gitUrl": "URL de Git",
    "gitDeploy": "implementación de git",
    "envFile": "Entorno (.env)",
    "saveEnv": "Guardar entorno",
    "sectionNginx": "Nginx y SSL",
    "sectionNginxDesc": "Escribir y aplicar la configuración del sitio",
    "domainHint": "Establezca un dominio en el momento de la creación para una publicación más limpia",
    "sectionQuota": "Cuota de disco",
    "sectionQuotaDesc": "Limitar el tamaño del directorio de inicio (MiB)",
    "sectionLimits": "procesador/memoria",
    "sectionLimitsDesc": "límites del sistema; Redistribuir para aplicar la unidad.",
    "quotaMb": "Cuota (MiB)",
    "memoryMax": "Memoria máxima",
    "cpuQuota": "% de cuota de CPU",
    "setQuota": "Establecer cuota",
    "setResources": "Guardar límites de recursos",
    "sectionLogs": "Registros de aplicaciones",
    "sectionLogsDesc": "Cola de archivos de registro recientes en la página de inicio del proyecto",
    "viewLogs": "Cargar registros",
    "logsEmpty": "Aún no se han cargado registros",
    "logsNoFiles": "(aún no hay archivos de registro; implemente primero)",
    "sectionAdvanced": "Otras acciones",
    "sectionAdvancedDesc": "Copias de seguridad y contenido de plantillas",
    "downloadWp": "Descargar WordPress",
    "dangerZone": "Zona de peligro",
    "dangerZoneDesc": "Eliminar elimina los registros del proyecto y los recursos relacionados.",
    "delete": "Eliminar proyecto",
    "confirmStopTitle": "¿Detener este proyecto?",
    "confirmStopDesc": "Esto detendrá el proceso en ejecución para \"{{name}}\".",
    "confirmDeleteTitle": "¿Eliminar este proyecto?",
    "confirmDeleteDesc": "¿Eliminar “{{name}}”? Esto no se puede deshacer desde la interfaz de usuario.",
    "close": "Cerca",
    "statProjects": "{{count}} proyectos",
    "noProjectsShort": "Aún no hay proyectos",
    "runtimeStatic": "Estático",
    "logsLoadFailed": "No se pudieron cargar los registros",
    "deleteFailed": "Error al eliminar",
    "tabAbout": "Acerca de",
    "statusLabel": "Estado",
    "userLabel": "Usuario",
    "nginxValuePublished": "Publicado",
    "nginxValueNone": "No publicado",
    "osValueReady": "Listo",
    "osValuePending": "Pendiente",
    "openFiles": "Archivos",
    "enableCdn": "Habilitar CDN",
    "openLogs": "Registros",
    "osUserReadyMsg": "Usuario del sistema listo. {{detail}}",
    "osUserNeedRoot": "No se puede crear un usuario del sistema: necesita YSK_EXECUTE + root. {{detail}}",
    "osUserIncomplete": "Aprovisionamiento de usuarios del sistema incompleto",
    "saveLogDirsFailed": "No se pudieron guardar los directorios de registros",
    "createName": "Nombre del proyecto",
    "noPathSepHint": "El nombre no puede contener / o \\.",
    "createRuntime": "Tiempo de ejecución",
    "createRuntimeHint": "Puede cambiar las opciones de implementación más adelante en detalle",
    "createVersion": "Versión",
    "createVersionHint": "Almacenado como runtime_version; utilizado por implementar / FPM",
    "createVersionAria": "Versión en tiempo de ejecución",
    "createPrimaryDomain": "Dominio primario",
    "createPrimaryDomainHint": "Opcional por ahora",
    "createAliases": "Alias",
    "createAliasesHint": "Separados por coma o nueva línea",
    "createTemplate": "Plantilla",
    "createTemplateHint": "Un ¡Hola mundo! demostración por tiempo de ejecución; elegir una plantilla establece ese tiempo de ejecución",
    "createTemplateNote": "Las plantillas sólo escriben un esqueleto; implementar para construir/iniciar.",
    "createRuntimeNow": "Tiempo de ejecución actual:",
    "createTemplateFooter": ". Plantilla opcional para comenzar más rápido o dejarla vacía.",
    "createDraftResources": "También cree borradores de recursos con el dominio.",
    "createNeedDomainFirst": "Ingrese primero el dominio principal para que las opciones de borrador se apliquen juntas.",
    "createDnsZone": "Crear también zona DNS",
    "createDnsZoneDesc": "Escribe solo borradores de administración, no DNS autorizados en vivo.",
    "createMailDomain": "Registrar también dominio de correo",
    "createMailDomainDesc": "Termine los buzones y presente la solicitud en la página de correo más tarde.",
    "createServerIpv4": "Servidor IPv4",
    "createServerIpv4Hint": "Para DNS/plantillas de correo",
    "createServerIpv4Ph": "Este host público IPv4",
    "createServerIpv6": "Servidor IPv6 (opcional)",
    "createServerIpv6Ph": "IPv6 público (opcional)",
    "sshCardDesc": "Las claves de inicio de sesión deciden quién puede ingresar;",
    "sshLoginKeys": "Se permiten claves públicas de inicio de sesión",
    "sshKeyCount": "{{count}} tecla(s)",
    "sshOutbound": "Identidad saliente",
    "sshOutboundNone": "No creado",
    "sshOutboundCreated": "Identidad saliente creada (clave privada cifrada)",
    "sshCreateFailed": "Error al crear",
    "sshWriteTried": "Intenté escribir en el disco",
    "sshOutboundHint": "Después de la creación, este usuario del proyecto puede usar git/scripts salientes.",
    "sshCreateOutbound": "Crear identidad saliente",
    "sshWriteHome": "Escribir inicio/.ssh",
    "sshOpenWorkspace": "Abrir espacio de trabajo SSH",
    "sshManageLoginKeys": "Administrar claves de inicio de sesión",
    "logsSectionDesc": "Escanear registros/, log/ y directorios adicionales; buscar por nombre o palabra clave de contenido",
    "logsNameSearch": "Búsqueda de nombre de archivo",
    "logsNameSearchHint": "Coincidir con la ruta relativa, p. error, aplicación.fuera",
    "logsContentKw": "Palabra clave de contenido",
    "logsContentKwHint": "Buscar colas de archivos (no archivos completos)",
    "logsSearch": "Buscar",
    "logsRescan": "Volver a escanear",
    "logsRefreshFile": "Actualizar este archivo",
    "logsCopy": "Copiar contenido",
    "logsDownloadTail": "Descargar cola",
    "logsCenter": "Centro de registro",
    "logsHitsTitle": "{{count}} archivo(s) con resultados: haga clic para abrir la cola (con filtro de palabras clave)",
    "logsLinesHit": "{{count}} acierto(s) de línea",
    "logsFileCount": "Archivos de registro {{count}}",
    "logsNameFilter": "(el nombre contiene “{{q}}”)",
    "logsScanning": "Escaneando registros…",
    "logsNoneYet": "Aún no hay archivos de registro: aparecen después de la implementación/ejecución; Los directorios adicionales también funcionan.",
    "logsNoContent": "Aún no hay contenido",
    "logsRelated": "Fuentes relacionadas",
    "logsRelatedDesc": "diario / nginx / PHP-FPM (ver centro de registro)",
    "logsAvailable": "Disponible",
    "logsMissing": "Desaparecido",
    "logsOpenInCenter": "Abrir en el centro de registro",
    "logsExtraDirs": "Directorios de registro adicionales",
    "logsExtraDirsDesc": "Rutas relativas al inicio del proyecto (además de logs/ y log/)",
    "logsDirList": "lista de directorio",
    "logsDirListHint": "Uno por línea; solo rutas relativas al hogar",
    "logsReset": "Reiniciar",
    "logsSaveScan": "Guardar y escanear",
    "logsDefaultNote": "Siempre escanea logs/ y log/. Los directorios adicionales solo incluyen *.log/*.out/*.err.",
    "resOsTitle": "Aislamiento de usuarios del sistema",
    "resOsDesc": "Cada proyecto tiene su propio usuario de Linux;",
    "resLinuxUser": "usuario de linux",
    "resOsIsolation": "Aislamiento del sistema operativo",
    "resOsReady": "Listo",
    "resOsNotCreated": "No creado (necesita administrador)",
    "resHomeDir": "Directorio de inicio",
    "resCanonical": "Camino previsto",
    "resUserMissing": "Usuario desaparecido",
    "resShellLive": "Shell/bloqueo en vivo",
    "resLocked": "bloqueado",
    "resUnlocked": "desbloqueado",
    "resHomeMode": "modo hogar",
    "resHomeExists": "Existe · modo {{mode}}",
    "resHomeMissing": "Desaparecido",
    "resIsolationOn": "Aislado",
    "resIsolationPending": "Pendiente de aislamiento",
    "resOsHint": "Los procesos se ejecutan como usuario del proyecto.",
    "resProvisionUser": "Crear/reparar usuario del sistema",
    "resRefreshStatus": "Actualizar estado",
    "resFixHome": "Arreglar la propiedad de la vivienda",
    "resMigrateHome": "Migrar a /home/ysk-server-…",
    "resQuotaDesc": "Cuota flexible (du antes de la implementación) + aplicación estricta cuando existe setquota",
    "resQuotaHint": "p.ej. 1024 = 1 GB",
    "resSetSoftQuota": "Guardar cuota flexible",
    "resLimitsTitle": "Límites de proceso y cuenta",
    "resLimitsDesc": "systemd MemoryMax / CPUQuota / TasksMax / NOFILE + shell / bloqueo",
    "resLimitsDescSystemd": "systemd cgroup: MemoryMax / CPUQuota / TasksMax / NOFILE + shell / lock",
    "resLimitsDescPm2": "PM2: la memoria se asigna a max_memory_restart; otros límites usan systemd.",
    "resRunnerSystemd": "Administrador de procesos: systemd",
    "resRunnerPm2": "Responsable de procesos: PM2",
    "resMemMax": "Memoria máxima",
    "resMemHint": "p.ej. 512M o 1G",
    "resMemHintSystemd": "systemd MemoryMax (límite máximo de cgroup, por ejemplo, 512 M o 1 G)",
    "resMemHintPm2": "Escribe ecosistema max_memory_restart (umbral de reinicio, no eliminación de cgroup);",
    "resFieldSystemdOnly": "solo cgroup systemd; todavía guardado en la base de datos para cuando vuelvas a systemd",
    "resCpuHint": "100 = una CPU",
    "resCustomPct": "Costumbre %",
    "resTasksHint": "Tareas máximas",
    "resNofileHint": "Límite de archivos abiertos",
    "resShellHint": "No inicio de sesión predeterminado",
    "resShellBashRisk": "fiesta · riesgo",
    "resLockAccount": "Bloquear cuenta de Linux",
    "resLockDesc": "mod de usuario -L; desmarque para desbloquear",
    "resLimitsHint": "Guardar y aplicar escribe DB y prueba usermod / setquota / systemctl set-property",
    "resLimitsHintSystemd": "Guarde y aplique el estado del panel de escrituras y los límites del sistema operativo/sistema cuando esté permitido.",
    "resLimitsHintPm2": "Guarde y aplique el estado del panel de escrituras y el límite de memoria PM2.",
    "resSaveApply": "Guardar y aplicar límites al sistema operativo",
    "resSaveControlOnly": "Guarde Mem/CPU solo en el plano de control",
    "resReapply": "Vuelva a presentar la solicitud una vez (sin cambios de formulario)",
    "resMigrateDone": "Migración completa",
    "resMigrateIncomplete": "Migración incompleta",
    "resMigrateTitle": "¿Migrar el usuario del sistema a casa?",
    "resMigrateDesc": "Migra a /home/ysk-server-{id} y crea/repara el usuario del sistema",
    "resMigrate": "Emigrar",
    "resWrittenOnly": "Escrito para controlar el avión; SO no aplicado (necesita root). {{notes}}",
    "resAppliedOs": "Límites aplicados al sistema operativo. {{notes}}",
    "resSaved": "Guardado",
    "resIncomplete": "Incompleto",
    "resApplyLimitsFailed": "No se pudieron aplicar los límites",
    "resApplied": "Aplicado",
    "resApplyFailed": "No se pudo aplicar",
    "resChownOk": "chown completo",
    "resChownFailed": "chown falló",
    "netSavedPublished": "Red guardada y Nginx publicado",
    "netSavedOnly": "Configuración de red guardada (no publicada)",
    "netSaveFailed": "Error al guardar",
    "netSuspended": "Proyecto suspendido: los visitantes obtienen 503. Anular la suspensión y luego publicar.",
    "netDomainTitle": "Dominio",
    "netDomainDesc": "Dominio principal y alias; guardar también puede escribir la configuración de administración de Nginx",
    "netPrimaryDomain": "Dominio primario",
    "netPrimaryHint": "Dominio del visitante, p.e. aplicación.ejemplo.com",
    "netAliases": "Alias",
    "netAliasesHint": "Uno por línea, p.e. www o subdominio del blog",
    "netNeedPrimary": "Introduzca primero el dominio principal",
    "netHttpsTitle": "HTTPS y redireccionamiento del sitio",
    "netHttpsDesc": "Publicar Nginx después de guardar. El sitio completo 301 anula el contenido proxy/PHP/estático",
    "netForceHttps": "Forzar HTTPS",
    "netForceHttpsDesc": "HTTP → HTTPS (301); necesita certificado SSL y publicación SSL",
    "netForceHttpsOn": "HTTP redireccionará a HTTPS después de publicar el borde.",
    "netForceHttpsOff": "No se almacena ninguna redirección forzada.",
    "netBoundCert": "Certificado vinculado",
    "netBoundCertExpiry": "caduca {{at}}",
    "netNoBoundCert": "No hay certificado en disco para este nombre",
    "netForceHttpsNeedCert": "Emita un certificado en /ssl para este dominio antes de forzar HTTPS.",
    "netHttpsLiveNotForced": "Existe un archivo de borde; Es posible que HTTPS ya funcione. Este cuadro solo fuerza HTTP→HTTPS.",
    "netHsts": "Habilitar HSTS",
    "netHstsDesc": "Los navegadores se ciñen a HTTPS (recomendado después de forzar HTTPS)",
    "netHstsNeedHttps": "Primero active forzar HTTPS",
    "netRedirectUrl": "URL de redireccionamiento de sitio completo",
    "netRedirectHint": "Opcional. Sitio completo 301 a esta URL (mover / apex→www)",
    "netBasicAuthTitle": "Autenticación básica HTTP (inicio de sesión del navegador)",
    "netBasicAuthDesc": "Escribe htpasswd al publicar; nombre de usuario vacío = desactivado. Contraseña vacía = mantener almacenada",
    "netAuthUserHint": "Vacío desactiva la autenticación",
    "netAuthPassHint": "Requerido por primera vez; dejar vacío más tarde para conservar",
    "netAuthPassSet": "Establecer o actualizar contraseña",
    "netCacheNote": "Estático/PHP estático Cache-Control 7d por defecto; la purga borra el directorio de caché nginx del host (necesita YSK_EXECUTE)",
    "netPurgeOk": "Intenté purgar caché",
    "netPurgeFailed": "purga fallida",
    "netDocrootTitle": "Directorio del sitio (docroot)",
    "netDocrootDesc": "En relación con la casa del proyecto; utilizado como raíz de Nginx en la publicación (aplicación predeterminada/pública)",
    "netDocrootLabel": "Raíz del documento",
    "netDocrootFull": "Ruta completa: {{path}}",
    "netDocrootCustom": "Ruta relativa personalizada...",
    "netAdvancedTitle": "Avanzado y publicar",
    "netAdvancedDesc": "Vincular IP, publicar en el sistema Nginx",
    "netCollapseBind": "Contraer vincular IP",
    "netExpandBind": "Expandir IP de enlace",
    "netBindIp": "Vincular IP",
    "netBindHint": "Vacío = todas las interfaces",
    "netBindPh": "Vacío = todo; o vincular IP",
    "netNeedDomainSave": "Ingrese y guarde el dominio principal primero",
    "ovUsed": "Usado",
    "ovQuota": "Cuota",
    "ovQuotaUnset": "Desarmado",
    "ovQuotaStatus": "Estado de la cuota",
    "ovOverQuota": "Sobre cuota",
    "ovQuotaOk": "OK",
    "ovDocroot": "Raíz del documento",
    "ovAccessSample": "Acceder a la muestra",
    "ovLines": "{{count}} líneas",
    "ovDailyDays": "Días de estadísticas diarias.",
    "ovDailyTitle": "Estadísticas de visitas diarias (máximo 60 días)",
    "ovDailyDesc": "Pasando de muestras de registros de acceso",
    "ovQuickTitle": "Accesos directos al sitio",
    "ovQuickDesc": "Publicación y copia de seguridad (implementación principal a través del encabezado o pestaña Implementar)",
    "ovNeedNetworkDomain": "Configure el dominio en la pestaña Red primero",
    "ovPublishNginx": "Publicar Nginx",
    "ovPublishSsl": "Publicar Nginx + SSL",
    "ovBackupProject": "Copia de seguridad de este proyecto",
    "ovOpenFiles": "Abrir archivos de proyecto",
    "ovNoDomainHint": "Sin dominio: configúrelo en la pestaña Red antes de publicar.",
    "ovPublishNote": "Publicar escrituras de configuración de administración; La recarga en vivo de Nginx necesita derechos de cambio de sistema.",
    "ovStatic": "Estático",
    "ovAliases": "Alias",
    "ovForceOn": "Forzado",
    "ovForceOff": "no forzado",
    "advFtpCreated": "FTP {{user}} creado (borrador: aplicar en la página FTPS)",
    "advCreateFailed": "Error al crear",
    "advFtpFailed": "Error al crear FTP",
    "advMaintTitle": "Mantenimiento",
    "advMaintDesc": "Copia de seguridad, suspender/reanudar, herramientas opcionales",
    "advBackupProject": "Copia de seguridad de este proyecto",
    "advOneClickWp": "WordPress con un clic (descargar + configurar)",
    "advSuspendedHint": "Suspendido: proceso detenido, los visitantes obtienen 503.",
    "advSuspendHint": "Suspender detiene el proceso y muestra una página de mantenimiento 503.",
    "advFtpTitle": "Proyecto FTP (cárcel de ruta)",
    "advFtpDesc": "Cuenta encarcelada en el directorio de la aplicación del proyecto; aplicar en la página del servicio FTPS después de crear",
    "advFtpUserHint": "Opcional; el sistema puede generar",
    "advFtpPassHint": "Al menos 8 caracteres",
    "advDangerTitle": "Zona de peligro",
    "advDangerDesc": "La eliminación no se puede deshacer desde la interfaz de usuario: primero haga una copia de seguridad.",
    "advDelete": "Eliminar proyecto",
    "deployPyHint": "Predeterminado: venv + pip; ASGI vía uvicorn, Django vía gunicorn.",
    "deployGoHint": "Predeterminado: vaya a compilar -o aplicación. luego ./aplicación; omita la compilación si existe el binario.",
    "deployRustHint": "Predeterminado: cargo build --release luego target/release/{crate}; omitir compilación opcional.",
    "deployNodeHint": "Iniciar proceso de nodo (entrada predeterminada server.js); systemd recomendado en prod.",
    "deployDefaultHint": "Comience por tiempo de ejecución; externo sólo después de aplicar.",
    "deployOsStep": "Usuario de Linux aislado + /home/ysk-server-{id del proyecto} (se puede crear en la pestaña Recursos)",
    "deployPyReady": "Tiempo de ejecución de Python listo",
    "deployPipNet": "requisitos.txt necesita pip de salida",
    "deployCheckPort": "Después de implementar, verifique el puerto y /health",
    "deployPublishProxy": "Publicar proxy inverso de Nginx",
    "deployToolchainReady": "{{runtime}} cadena de herramientas lista",
    "deployFirstBuild": "Primeras compilaciones de implementación (puede tardar un poco)",
    "deployNeedBinary": "Binario sólo después de una construcción exitosa",
    "deployPhpFpmOk": "Versión PHP-FPM correcta",
    "deployPhpPool": "Implementar PHP/aplicar grupo",
    "deployNginxSsl": "Publicar Nginx + SSL opcional",
    "deployPublicContent": "Confirmar público/tiene contenido",
    "deployNetPublish": "Publicar Nginx en la pestaña Red",
    "deployConfirmToolchain": "Confirmar la cadena de herramientas instalada en la página de ejecución (o el host la tiene)",
    "deployConfirmCode": "Confirmar que la aplicación/tiene código (plantilla o Git)",
    "deployPressDeploy": "Presione Implementar; luego publique Nginx en la red",
    "deployVersionSaved": "Guardado {{runtime}} versión {{version}} (usado en la implementación)",
    "deployVersionSaveFailed": "No se pudo guardar la versión en tiempo de ejecución",
    "deployInstallingToolchain": "Instalando/confirmando la cadena de herramientas...",
    "deployToolchainIncomplete": "Instalación de la cadena de herramientas incompleta (permiso o red); prueba la página de tiempo de ejecución",
    "deployToolchainDone": "Paso de la cadena de herramientas realizado, iniciando la implementación...",
    "deployToolchainFailed": "Error en la instalación de la cadena de herramientas",
    "deployChecklistTitle": "Creado: lista de verificación de implementación",
    "deployChecklistDesc": "{{runtime}} esqueleto listo; terminar los pasos para atender el tráfico",
    "deploySectionTitle": "{{runtime}} implementar",
    "deploySectionDesc": "Iniciar proceso {{runtime}} (puerto/systemd o pidfile)",
    "deployPhpVersion": "versión PHP",
    "deployPhpVersionHint": "Versión PHP para este sitio (se debe instalar FPM correspondiente)",
    "deployRuntimeVersion": "{{runtime}} versión",
    "deployRuntimeVersionHint": "Guardado en el proyecto; utilizado en la implementación. Instalar en la página de tiempo de ejecución",
    "deployRuntimeVersionCreateHint": "Escrito en crear; referenciado en la implementación",
    "deployRuntimeVersionGeneric": "Versión en tiempo de ejecución",
    "deployEntry": "Iniciar entrada",
    "deployEntryHint": "Vacío = predeterminado ({{hint}}); sincronizado con el servidor",
    "deploySkipBuild": "Saltar construcción",
    "deploySkipBuildHint": "Si existe venv/binary; reinicio de velocidades (preferencia local)",
    "deployPort": "· puerto {{port}}",
    "deployFpmApplied": "Grupo PHP-FPM aplicado",
    "deployFpmIncomplete": "FPM incompleto",
    "deployFpmNote": "Escribe la configuración del sitio/grupo; La recarga en vivo necesita derechos de cambio de sistema.",
    "deployBuildNote": "Los errores de compilación/inicio se muestran en el resultado de las operaciones. La entrada escribe en el servidor; skip-build es una preferencia local.",
    "deployPhpIniTitle": "Anulaciones del proyecto php.ini",
    "deployPhpIniDesc": "Sólo claves para cambiar;",
    "deployPhpIniExample": "p.ej. 256 millones; vacío = global",
    "deployGlobal": "Global",
    "deployCustom": "Costumbre",
    "deployOff": "Apagado",
    "deployOnCareful": "En · cuidado",
    "deployPhpIniSaved": "Anulaciones del proyecto php.ini guardadas; implementar o aplicar FPM nuevamente",
    "deployHistory": "Historial de implementación ({{count}})",
    "deployHistoryDesc": "De auditoría; lo nuevo primero",
    "deployGitUrlHint": "URL de repositorio HTTPS o SSH; sincronizar y luego volver a implementar por tiempo de ejecución",
    "deployEnvHint": "Una CLAVE=valor por línea; # comentarios",
    "resume": "Reanudar proyecto",
    "suspend": "Suspender proyecto",
    "goFtpsApply": "Vaya a solicitar el servicio FTPS",
    "toolchainNote": "La instalación de la cadena de herramientas ≠ el proyecto está activa; Implementación exitosa ≠ Nginx público (publicar en la red).",
    "installToolchainDeploy": "Instalar la cadena de herramientas e implementar",
    "deployOnly": "Implementar solo",
    "openRuntime": "Abrir {{runtime}} tiempo de ejecución",
    "later": "Más tarde",
    "installToolchainDeployShort": "Cadena de herramientas + implementación",
    "runtimeEnv": "{{runtime}} entorno",
    "applyFpmPool": "Aplicar grupo de FPM",
    "staticNginxHint": "Los sitios estáticos dependen de Publish Nginx: use accesos directos de red o descripción general.",
    "fullIniLink": "Catálogo completo y opcache/sesión, etc. en",
    "phpIniLink": "Tiempo de ejecución de PHP → php.ini",
    "savePhpIniOverride": "Guardar anulaciones de php.ini",
    "scaffoldNote": "Si app/ es un andamio YSK (.ysk-scaffold), se borra antes de clonar; El contenido personalizado se niega a sobrescribir.",
    "saveOnly": "Guardar solo",
    "savePublishNginx": "Guardar y publicar Nginx",
    "needDomainToPublish": "Ingrese el dominio principal antes de publicar.",
    "savePublish": "Guardar y publicar",
    "saveAuth": "Guardar autenticación",
    "cacheZoneNote": "Las zonas FastCGI/proxy_cache completas necesitan key_zone en el host nginx.conf; El panel ofrece purga de mejor esfuerzo.",
    "purgeNginxCache": "Purgar caché de Nginx",
    "nginxManageFile": "Archivo de gestión de Nginx:",
    "publishRuntimeNote": "Publicar escrituras proxy/PHP-FPM/conf estática por tiempo de ejecución (autenticación, redirecciones, docroot)",
    "publishStored": "Publicar con la configuración guardada",
    "publishStoredSsl": "Publicar guardado + SSL",
    "publishNote": "Publicar escribe administración conf; sincronizar con /etc/nginx y recargar necesita derechos de cambio de sistema.",
    "hitsFiles": "{{count}} archivo(s) con resultados: haga clic para abrir la cola (filtro de palabras clave)",
    "logFilesCount": "Archivos de registro {{count}}",
    "defaultScanNote": "Siempre escanea logs/ y log/. Los directorios adicionales solo incluyen *.log/*.out/*.err.",
    "opsOk": "{{label}} completado{{url}}",
    "opsOkWithNote": "{{label}} completado: {{note}}{{url}}",
    "opsFail": "{{label}} falló: {{reason}}",
    "railPython": "proceso de pitón",
    "railGo": "Ir proceso",
    "railRust": "Proceso de oxidación",
    "railNode": "Proceso de nodo",
    "runtimeName": {
      "php": "PHP",
      "node": "Nodo.js",
      "static": "Estático",
      "python": "Pitón",
      "go": "Ir",
      "rust": "Óxido",
      "java": "Java",
      "kotlin": "Kotlin",
      "bun": "Bollo"
    },
    "netCacheTitle": "Cache",
    "logsDeepAccess": "Centro de registro · acceso",
    "logsDeepError": "Centro de registro · error",
    "logsDeepNginxUnit": "Registros de la unidad Nginx",
    "logsPresetAccess": "Filtrar acceso.log",
    "logsPresetError": "Filtrar error.log",
    "railJava": "proceso java",
    "railKotlin": "proceso de kotlin",
    "railBun": "proceso de bollo",
    "deployProcessManager": "Gerente de procesos",
    "deployProcessManagerSystemd": "sistemad (recomendado)",
    "deployProcessManagerPm2": "PM2",
    "proc_restart": "Reanudar",
    "proc_stop": "Detener",
    "proc_reload": "Recargar",
    "procControlsHint": "Controles de proceso ({{manager}})",
    "procActionOk": "{{action}} vale · {{notes}}",
    "procActionFail": "{{action}} falló · {{notes}}",
    "procActionFailShort": "La acción del proceso falló",
    "procMissingUser": "El proyecto no tiene ningún usuario de Linux: no puede apuntar a la aplicación PM2",
    "deploySystemdHint": "Valor predeterminado de producción: unidad ysk-project-*",
    "deployPm2Hint": "Comienza a través de pm2 (ecosistema",
    "deleteDialogTitle": "Eliminar proyecto permanentemente",
    "deletePermanent": "Eliminar permanentemente",
    "deleteRemoveFiles": "Eliminar disco de inicio y usuario de Linux",
    "deleteTypeName": "Escriba el nombre del proyecto para confirmar",
    "deletedOk": "Proyecto eliminado",
    "sslRequiredFirst": "Aún no hay certificado SSL para este dominio. Cree o cargue uno en Certificados SSL antes de Publicar + SSL.",
    "sslGateHint": "Acciones SSL bloqueadas: vaya a",
    "sslGateHint2": "para emitir/cargar un certificado para este dominio primero.",
    "netPublishPrimary": "Básico",
    "netPublishSsl": "HTTPS/SSL",
    "netPublishMaint": "Mantenimiento",
    "sslNeedDomain": "Establezca un dominio antes de publicar Nginx/SSL.",
    "createTemplateMissing": "{{v0}} ；「— —」。",
    "deleteDialogDesc": "「{{name}}」。。",
    "deleteWillStop": "sistemad/PM2/",
    "deleteWillWeb": "Configuración de Nginx, grupo PHP-FPM, Apache vhost ()",
    "deleteWillOs": "Inicio de Linux（）",
    "deleteKeepOs": "inicio Linux（）",
    "deleteWillDb": "…",
    "deleteRemoveFilesDesc": "Cancelar,",
    "deleteTypeNameHint": "「{{name}}」",
    "deleteDnsWarn": "Zona/dominio DNS 。",
    "manageInNginx": "Administrar en Nginx",
    "advFtpHomeApp": "Directorio app del sitio",
    "advFtpHomeRoot": "Inicio del proyecto (completo)",
    "advFtpManage": "Abrir página FTP",
    "resShell": "shell de inicio de sesión",
    "resSaveHint": "Guarde y aplique los cambios del sistema operativo en vivo. El plano de control solo almacena el formulario. Volver a aplicar utiliza los últimos valores guardados.",
    "resBashConfirmTitle": "¿Permitir bash interactivo?",
    "resBashConfirmDesc": "Esto otorga un shell de inicio de sesión interactivo al usuario del proyecto. Confirme solo si necesita SSH o PTY como ese usuario.",
    "createGitHint": "Opcional. Almacenado en el proyecto; clonar desde la pestaña Implementar (no se clona al crear).",
    "gitTokenLaterHint": "El token HTTPS y la profundidad de clonación se configuran en la pestaña Implementar del proyecto después de la creación.",
    "gitBranch": "Rama",
    "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
    "gitBranchAfterUrl": "Introduzca primero la URL de Git. Vacío usa la rama predeterminada remota.",
    "gitLastRef": "Última sincronización: {{branch}} @ {{commit}}",
    "gitConfirmTitle": "¿Clonar en este proyecto?",
    "gitConfirmBody": "Si app/ sigue siendo el marcador de posición Hola Mundo, se borrará y luego se clonará. Se rechazan los archivos personalizados que no sean un andamio de YSK.",
    "gitConfirmRemoteBody": "Esto apunta el origen a la nueva URL y extrae. Las historias no relacionadas fallan; Los archivos personalizados no se borran.",
    "runtimeActual": "Binario real {{path}}",
    "runtimeFallback": "Elegido {{version}} no está en este host. Usos del proceso {{path}}.",
    "gitSync": "Sincronizar",
    "gitFetch": "Buscar",
    "gitCheckout": "Verificar",
    "gitReset": "Restablecer a control remoto",
    "gitResetNeedConfirm": "Requiere confirmación — descarta confirmaciones locales",
    "gitDeepen": "Obtener el historial completo",
    "gitLogTitle": "Confirmaciones recientes",
    "gitDirtyTitle": "Extracción de bloques de cambios locales",
    "gitDirtyBody": "{{count}} los archivos difieren de Git (ediciones de archivos o la aplicación). Deséchelos o cancele.",
    "gitSyncBlockedDirty": "La sincronización está deshabilitada hasta que se descarten los cambios locales (Restablecer) o los archivos coincidan con Git.",
    "gitViewDiff": "Ver diferencia",
    "gitDiscard": "Descartar archivos locales",
    "gitOpenFiles": "Abrir en archivos",
    "gitNotCloned": "No clonado",
    "gitClean": "Limpio",
    "gitDirty": "Sucio",
    "gitBehind": "Detrás {{count}}",
    "gitAhead": "Adelante {{count}}",
    "gitDetached": "Fijado",
    "gitShallow": "Poco profundo",
    "gitMissing": "falta git",
    "gitResetConfirmTitle": "¿Restablecer difícilmente a control remoto?",
    "gitResetConfirmBody": "Esto descarta el historial de Git local y los archivos sin seguimiento, excepto .env, y luego restaura .env desde el plano de control.",
    "gitHeads": "Sucursales remotas",
    "gitToken": "token HTTPS",
    "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
    "gitTokenPlaceholder": "ghp_… o glpat-…",
    "gitTokenSet": "Conjunto de fichas",
    "gitSaveToken": "Guardar token",
    "gitClearToken": "Borrar token",
    "gitDeployKey": "Implementar clave pública",
    "gitDeployKeyHint": "Agregue esto como una clave de implementación de solo lectura en el host Git.",
    "gitDeployKeyOn": "Implementar clave",
    "gitMakeKey": "Crear clave de implementación",
    "gitCopyPub": "Copiar clave pública",
    "gitClearKey": "Borrar clave de implementación",
    "gitKeyCopied": "Clave pública copiada",
    "gitPinHost": "Fijar clave de host",
    "gitPinHostBody": "{{host}} no está fijado. Confirme las huellas digitales, luego fije antes del clon SSH.",
    "gitHostUnpinned": "Clave de host no fijada",
    "gitHookTitle": "Inbound hook",
    "gitHookHint": "Paste POST /api/v1/hooks/git/<id> into GitHub / Gitea / GitLab yourself (push events). Not Slack. Secret is HMAC or X-YSK-Git-Hook.",
    "gitHookOn": "Hook on",
    "gitHookOff": "Hook off",
    "gitHookEnable": "Enable hook",
    "gitHookRotate": "Rotar secreto",
    "gitHookDisable": "Disable hook",
    "gitHookSecretOnce": "Copy this secret now — it is not stored in the page after you leave.",
    "gitHookCopyUrl": "Copy URL",
    "gitHookCopySecret": "Copiar secreto",
    "gitHookCopied": "copiado",
    "gitHookSetup": "Add the webhook yourself. Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
    "gitHookGithub": "GitHub: Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com requires HTTPS.",
    "gitHookGitea": "Gitea: Settings → Webhooks → Add Webhook → Gitea. HTTP Method POST. Push events.",
    "gitHookGitlab": "GitLab: Settings → Webhooks. Trigger: Push events. Secret token = the hook secret (sent as X-Gitlab-Token).",
    "gitHookHonesty": "The host unit must have YSK_EXECUTE=1. Without it the hook answers but does not clone or deploy.",
    "gitHookSkipOther": "Pushes to other branches are ignored. Only the project ref syncs.",
    "gitAuthHttps": "token HTTPS",
    "gitAuthSsh": "Clave de implementación SSH",
    "gitLoadRefs": "Cargar ramas",
    "gitRefDefault": "Predeterminado remoto",
    "gitRefBranches": "Sucursales",
    "gitRefTags": "Etiquetas",
    "gitRefOther": "Otra ref…",
    "gitRefCustom": "cometer o ref.",
    "gitRefsNeedUrl": "Primero ingrese una URL.",
    "gitRefsNeedAuth": "Guarde un token o implemente una clave, luego cargue las ramas.",
    "gitRefsHint": "Cargado desde el control remoto. Elija uno: no escriba.",
    "gitHookSetupToggle": "como pegar esto",
    "gitHookOneLiner": "HMAC o X-YSK-Git-Hook. Sólo la ref de este proyecto.",
    "gitHookExecuteHint": "Necesita YSK_EXECUTE=1 para clonar o implementar.",
    "gitShowKey": "Mostrar clave",
    "gitHideKey": "Esconder",
    "gitBehindShort": "↓{{count}}",
    "gitAheadShort": "↑{{count}}",
    "gitDirtyShort": "Sucio · {{count}}",
    "gitFilesLink": "Archivos",
    "nameInvalid": "Utilice un nombre en minúscula: comience con una letra, luego letras, dígitos o guión (máximo 31).",
    "deployVersionMissing": "El nodo {{version}} no está instalado en este host. Elija una versión instalada o instale esta versión primero.",
    "deployUsedBinary": "Implementación usada {{path}}"
  },
  "protection": {
    "levels": {
      "low": {
        "label": "OK",
        "verb": "Sistema estable",
        "hint": "Mantenga la protección diaria"
      },
      "elevated": {
        "label": "Elevado",
        "verb": "Anomalías vistas",
        "hint": "Cambie a seguridad y observe las IP sospechosas"
      },
      "under_attack": {
        "label": "Bajo ataque",
        "verb": "Probablemente bajo ataque",
        "hint": "Aplicar preajuste de ataque bajo + prohibición masiva"
      },
      "critical": {
        "label": "Crítico",
        "verb": "Amenaza severa",
        "hint": "Considere la posibilidad de una emergencia; asegúrese de estar en la lista blanca"
      }
    },
    "presetsWhen": {
      "daily": "Día a día",
      "hardened": "Escanear / bruto",
      "under_attack": "inundación L7",
      "emergency": "Último recurso"
    },
    "note": {
      "notApplied": "No aplicado en el host (necesita root + YSK_EXECUTE=1): guardado en la configuración del panel",
      "nginxWritten": "Escribió el archivo del panel de límite de velocidad de Nginx",
      "f2bWritten": "Escribí la configuración del panel fail2ban",
      "hintDropped": "Se omitió la sugerencia de protección interna",
      "nginxLimits": "Escribirá un fragmento de límite de velocidad de Nginx"
    },
    "rel": {
      "justNow": "En este momento",
      "minutesAgo": "{{n}} hace minutos",
      "hoursAgo": "Hace {{n}} horas"
    },
    "apiUnreachable": "No se puede acceder a la API (el proxy web/backend puede estar inactivo)",
    "geoipLoadFailed": "No se pudo cargar GeoIP",
    "loadFailed": "Error de carga",
    "previewDone": "Vista previa realizada (no escrita)",
    "presetApplied": "Preajuste de protección aplicado",
    "manualBan": "Prohibición manual",
    "banSent": "Ban enviado para {{ip}}",
    "quickSelectBan": "Prohibición de selección rápida",
    "bulkBan": "Prohibición masiva {{count}}",
    "autoBanStatus": "Prohibición automática: {{onOff}} · {{mode}} · {{method}}",
    "autoBanUpdated": "Prohibición automática actualizada",
    "automationMaster": "Maestro de automatización: {{onOff}}",
    "autoPresetStatus": "Preajuste automático: {{onOff}}",
    "autoBanAutomation": "Prohibición automática: {{onOff}} ({{mode}})",
    "automationSaved": "Configuración de automatización guardada",
    "statFirewall": "Cortafuegos",
    "statSuspects": "IP sospechosas",
    "statSuspectsSplit": "{{actionable}} procesable / {{total}} listado",
    "suspectActionableCount": "IP procesables {{count}}",
    "scoreBasisHint": "La puntuación de amenazas utiliza firewall, volumen de prohibición de fail2ban y señales de tasa de solicitudes; no es el mismo recuento que la lista de sospechosos de inteligencia.",
    "statAutoBan": "Prohibición automática",
    "statApply": "Aplicar el sistema",
    "statActiveBans": "Prohibiciones activas",
    "statPreset": "Programar",
    "threatPill": "Amenaza {{label}} · puntuación {{score}}",
    "reprobed": "Re-sondeado",
    "loadingStatus": "Cargando estado de protección…",
    "tabs": {
      "command": "Respuesta",
      "automation": "Automatización",
      "bans": "Prohibiciones",
      "geo": "acceso IP",
      "stack": "Pila",
      "intel": "Intel",
      "about": "Acerca de"
    },
    "reapply": "Aplicar de nuevo",
    "nginxLimits": "Límites de velocidad de Nginx",
    "notWritten": "No escrito",
    "modeValue": {
      "normal": "Normal",
      "degraded": "Degradado",
      "ddos-protection": "Protección DDoS",
      "offline": "Desconectado"
    },
    "mode": "Modo",
    "controlPlane": "Plano de control",
    "canApply": "puede aplicar",
    "needRoot": "Necesita raíz",
    "writeOnly": "Escribir solo archivo",
    "autoRunning": "Ejecutando · cada {{sec}}s · prohibiciones esta hora {{n}}",
    "autoOffManual": "Apagado: solo manual",
    "lastTick": "· último {{t}}",
    "nextTick": "· siguiente {{t}}",
    "on": "En",
    "off": "Apagado",
    "open": "Abierto",
    "ranAutomationTick": "Ejecutó un tick de automatización",
    "escalateHardened": "Puntaje ≥ endurecido",
    "escalateAttack": "Bajo ataque ≥ puntuación",
    "deescalateDaily": "Volver al diario < puntuación",
    "zeroOff": "0 de descuento",
    "holdAfterEscalate": "Espera mínima después de escalar",
    "min5": "5 minutos",
    "min15": "15 minutos",
    "min30": "30 minutos",
    "hour1": "1 hora",
    "hour2": "2 horas",
    "hour6": "6 horas",
    "presetOrCustom": "Preestablecido/personalizado",
    "autoBanMode": "Modo de prohibición automática",
    "soft": "Suave",
    "normal": "Normal",
    "aggressive": "Agresivo",
    "custom": "Costumbre",
    "method": "Método",
    "banMethod": "Método de prohibición",
    "both": "Ambos",
    "scoreGte": "Puntuación ≥",
    "hitsGte": "Solicitar visitas ≥",
    "hits429Gte": "429 visitas relacionadas ≥",
    "scanHitsGte": "Impactos de ruta de escaneo ≥",
    "cooldown": "Enfriarse",
    "maxPerHour": "máximo por hora",
    "scanInterval": "Intervalo de escaneo",
    "schedulerDefault": "programador predeterminado 120s",
    "collapse": "Colapsar",
    "expand": "Expandir",
    "step": "Paso",
    "mechanism": "Mecanismo",
    "youCanTune": "puedes sintonizar",
    "probe": "Sonda",
    "probeSignals": "WAN/tasa de solicitud/TCP/f2b/UFW",
    "escalateThreshold": "Umbral de escalada",
    "emergency": "Emergencia",
    "neverAuto": "Nunca automático",
    "manualEmergency": "EMERGENCIA Manual",
    "signalNetworkDown": "WAN abajo",
    "signalHighReq": "Alta tasa de solicitudes",
    "signalDdos": "Heurística DDoS",
    "signalTcp": "Conexiones TCP",
    "signalUfwOff": "UFW desactivado",
    "signalF2bBans": "recuento de prohibiciones de fail2ban",
    "weightHint": "{{label}} peso 0–3",
    "detected": "(detectado)",
    "notSet": "(no establecido)",
    "zonesComma": "Zonas (separadas por comas)",
    "underAttackRequested": "Bajo ataque solicitado",
    "underAttackCleared": "Borrar UA solicitada",
    "autoBanOpen": "En · {{mode}} · esta hora {{n}}/{{max}}",
    "autoBanClosed": "Desactivado: manual/solo lista",
    "pausedNoExecute": "· pausado (sin EJECUTAR)",
    "circuitOpen": "· circuito abierto",
    "autoBanModeLabel": "Modo de prohibición automática",
    "scanned": "escaneado",
    "bulkOps": "Acciones masivas",
    "fromAccessLog": "Desde el registro de acceso · prohibición masiva o con un clic",
    "noSuspectIps": "No hay IP sospechosas por ahora",
    "noSuspectDesc": "Aparece cuando se ve tráfico scan/429. Ampliar para prohibición manual.",
    "whitelistPlus": "Lista blanca + {{ip}}",
    "whitelistAdded": "Agregado a la lista blanca",
    "activeBansTitle": "Prohibiciones activas ({{count}})",
    "activeBansDesc": "Agregado de protección · desbanear a través de API de defensa (igual que el cliente fail2ban)",
    "source": "Fuente",
    "unbanned": "no prohibido",
    "noBans": "Sin prohibiciones",
    "noBansDesc": "Las prohibiciones se muestran aquí",
    "collapseQuickAdd": "Contraer adición rápida",
    "quickAddOne": "Agregar uno rápidamente",
    "removeItem": "Quitar {{w}}",
    "updated": "Actualizado",
    "ipOrCidr": "IPv4/IPv6 o CIDR",
    "autoBanWhitelistAdded": "Agregado a la lista blanca de prohibición automática",
    "added": "Agregado",
    "banIpPlaceholder": "IPv4 o IPv6 para prohibir",
    "reason": "Razón",
    "scanBrute": "Escanear / bruto",
    "noSignals": "Aún no hay señales",
    "pressReprobe": "Presione volver a sondear",
    "points": "puntos",
    "noTopIps": "Aún no hay IP principales",
    "topIpsAfterLog": "Se muestra después de que existen registros",
    "noManagedVhost": "Sin vhost administrado",
    "afterPresetMarker": "Aplicar marcador de inyección preestablecido",
    "injected": "YSK_DEFENSE inyectado",
    "notInjected": "No inyectado",
    "noEvents": "Aún no hay eventos",
    "eventsAfterOps": "Aparecer después de aplicar/prohibir",
    "geoipUpdated": "Base de datos GeoIP actualizada",
    "dbReady": "Base de datos lista",
    "stale": "Duro",
    "older7d": ">7 días",
    "freshnessNa": "n / A",
    "freshnessMissing": "Sin base de datos",
    "freshnessStale": "Duro",
    "freshnessFresh": "Actual",
    "lastSuccess": "Último éxito",
    "downloaded": "Descargado",
    "missing": "Desaparecido",
    "geoMode": "Modo de acceso geográfico",
    "denyList": "Lista de denegación",
    "allowListHighRisk": "Lista de permitidos · alto riesgo",
    "autoUpdateDb": "Actualizar base de datos automáticamente",
    "countriesSelected": "Países ({{n}} seleccionados)",
    "searchCountry": "Buscar nombre chino o ISO",
    "countryPlaceholder": "China/CN",
    "regionsSelected": "Regiones ({{n}} seleccionadas)",
    "regionsHint": "De países seleccionados; personalizado CN-GD OK",
    "pickCountryFirst": "Elija los países primero para reducir la lista",
    "customRegion": "Personalizado, p.e. CN-GD",
    "regionPlaceholder": "Guangdong / California / Tokio",
    "continentsSelected": "Continentes ({{n}} seleccionado)",
    "continentsHint": "Continentes opcionales",
    "continentPlaceholder": "Asia/UE",
    "asnsSelected": "ASN del proveedor ({{n}} seleccionado)",
    "asnsHint": "Nube/ISP; ASN personalizado OK",
    "customAsn": "ASN personalizado, p. 13335",
    "asnPlaceholder": "Cloudflare/ISP",
    "cityExample": "p.ej. CN|Shenzhen o Estados Unidos|Ashburn",
    "policySaved": "Política guardada · países {{c}} · regiones {{r}} · ASN {{a}}",
    "ipPolicySaved": "Política de acceso IP guardada",
    "nginxGeoWritten": "Escribió un fragmento geográfico de nginx",
    "ipAddress": "dirección IP",
    "lookupPlaceholder": "IPv4 o IPv6 para buscar",
    "wouldBlock": "Bloquearía · {{reason}} · {{matched}}",
    "wouldAllow": "Permitir · {{reason}}",
    "lookupDone": "Búsqueda realizada",
    "item": "Campo",
    "value": "Valor",
    "country": "País",
    "region": "Región",
    "city": "Ciudad",
    "continent": "Continente",
    "coords": "Coordenadas",
    "provider": "Proveedor",
    "policy": "Política",
    "block": "Bloquear",
    "allow": "Permitir",
    "matched": "emparejado",
    "applyStricterTitle": "¿Aplicar ajustes preestablecidos más estrictos?",
    "applyStricterDesc": "Puede habilitar la prohibición automática. Confirme que su IP esté en la lista blanca.",
    "confirmEmergencyTitle": "Confirmar preajuste de emergencia",
    "confirmEmergencyDesc": "Límites de tarifas extremadamente de emergencia. Confirme la lista blanca y escriba EMERGENCIA.",
    "confirmString": "Confirmar cadena",
    "applyEmergency": "Aplicar emergencia",
    "sectionPreset": "Preajustes",
    "sectionAutoPreset": "① Preajuste automático",
    "sectionAutoBan": "② Prohibición automática",
    "unban": "Desbanear",
    "ban": "Prohibición",
    "banConfirmTitle": "¿Prohibir {{ip}}?",
    "banConfirmMethod": "Método: {{method}}",
    "banConfirmUntilUnban": "Permanece prohibido hasta que lo desbanques (o hasta que expire el fail2ban).",
    "banConfirmDesc": "Esta IP será bloqueada en el host. Confirme que no es un panel actual o una dirección de sesión.",
    "wlRemovedUndo": "Se eliminó {{ip}} de la lista de permitidos. Deshacer en 5 segundos.",
    "undo": "Deshacer",
    "banSelectedConfirmTitle": "¿Prohibir {{count}} IP seleccionadas?",
    "banSelectedConfirmDesc": "Estas direcciones se bloquearán en el host: {{ips}}",
    "save": "Ahorrar",
    "yes": "Sí",
    "no": "No",
    "oneClickSuggested": "Aplicar preajuste sugerido",
    "stackApply": "Aplicar pila de protección (UFW, fail2ban, preestablecido)",
    "stackApplyDone": "Se solicita la aplicación de la pila de protección",
    "stackApplyHint": "Esto habilita UFW y aplica fail2ban más el valor preestablecido sugerido. Confirme que no se bloqueará en un panel remoto.",
    "viewPresets": "Ver ajustes preestablecidos",
    "suspectIpsCount": "IP sospechosas {{count}}",
    "goBans": "Ir a prohibiciones",
    "singleEntryPrefix": "Partida simple:",
    "singleEntryBody": " ",
    "emergencyNeverAuto": "emergencia nunca auto",
    "writeOnlyBanner": "Solo escritura: la aplicación del sistema necesita EXECUTE=1 y root.",
    "readiness": "Preparación",
    "goTo": "Abierto",
    "presetGuide": "",
    "active": "Activo",
    "recommended": "sugerido",
    "useCarefully": "Precaución",
    "preview": "Avance",
    "stackToolsSee": "Apilar herramientas en la pestaña Apilar ·",
    "readinessCheck": "verificación de preparación",
    "automationMasterLabel": "Interruptor maestro de automatización",
    "runOneTick": "Ejecute un tic ahora",
    "suggestEmergencyBanner": "Puntuación muy alta: el sistema sugiere una emergencia pero no se aplicará automáticamente. Confirme en la pestaña Respuesta.",
    "autoPresetDesc": "Cambio automático diario/endurecido/bajo ataque por puntuación. Emergencia nunca automática.",
    "allowDeescalate": "Permitir desescalada automática",
    "autoBanThresholdHint": "umbrales de llenado suaves/normales/agresivos;",
    "sectionMechanism": "③ Cómo funciona",
    "lastNotes": "Último: {{notes}}",
    "sectionWeights": "④ Pesos de señal (0–3)",
    "weightsDesc": "Predeterminado 1;",
    "needCfToken": "Necesita el entorno CF_API_TOKEN",
    "cfOnEscalate": ". Puede llamar a la API cuando se escala a bajo ataque o aplicación manual.",
    "ufwOnlyCf": "Bajo ataque: UFW solo permite rangos CF (+SSH)",
    "ufwOnlyCfHint": "Restablece UFW solo a las IP de Cloudflare; necesita derechos de cambio de sistema.",
    "saveZones": "Guardar zonas",
    "uaNow": "Bajo ataque ahora",
    "uaClear": "Claro (→ alto)",
    "stackRoleNote": "UFW y fail2ban son páginas de herramientas bajo Protección (no navegación de nivel superior). La barra lateral mantiene solo esta página.",
    "fwUfwTitle": "Cortafuegos UFW",
    "fwStats": "Política portuaria · permanente DENEGAR · permitir {{allow}} · denegar {{deny}}",
    "fwRulesProfiles": "Reglas y perfiles de la UFW",
    "f2bStats": "Registrar prohibiciones temporales · {{jails}} cárceles · prohibido {{banned}}",
    "jailsWhitelistPolicy": "Cárceles · lista blanca · política",
    "divisionTitle": "División del trabajo",
    "divisionUfw": "UFW = qué puertos se abren, IP permanente denegada",
    "divisionF2b": "fail2ban = prohibición temporal después del escaneo de registros",
    "divisionDefense": "Esta página = orquestación de ataques (valores preestablecidos + prohibición automática + sospechosos)",
    "autoBanLabel": "Prohibición automática",
    "scanOnce": "Escanear una vez",
    "selectedIps": "{{count}} IP(s) seleccionadas",
    "banSelected": "Prohibición seleccionada",
    "suspectIps": "IP sospechosas",
    "selectAll": "Seleccionar todo",
    "alreadyBanned": "Prohibido",
    "whitelist": "Lista blanca",
    "bansWorkflow": "Respuesta: lista de sospechosos → prohibir/desprohibir. Política carcelaria, ignoreip, ciclo de vida del servicio:",
    "f2bTool": "herramienta fail2ban",
    "noSecondJail": "(Aquí no hay un segundo editor de la cárcel).",
    "autoBanWhitelistTitle": "Lista blanca de prohibición automática",
    "autoBanWhitelistDesc": "Exenciones de protección de prohibición automática (sincroniza fail2ban ignoreip",
    "ufwOff": "UFW (apagado)",
    "ufwOffHint": "UFW no está activo: fail2ban es el objetivo utilizable.",
    "whitelistSyncHint": "{{n}} entradas del panel · fail2ban ignoreip sync: {{sync}}",
    "whitelistSyncOn": "en",
    "whitelistSyncOff": "desactivado (las listas pueden diferir)",
    "ignoreipWhitelist": "ignorar la lista blanca de IP",
    "notSetSuggestAdmin": "No configurado (agregue su IP de administrador)",
    "moreItems": "… {{n}} más · ver la lista blanca de fail2ban",
    "add": "Agregar",
    "manualBanTitle": "Prohibición manual",
    "methodFollows": "El método sigue la selección anterior (fail2ban / UFW)",
    "preferSuspectList": "Normalmente la lista de sospechosos es suficiente.",
    "threatSignals": "Señales de amenaza",
    "scoreSource": "Fuentes de puntuación · pesos ajustables",
    "accessAuthSample": "acceso + muestras de autenticación",
    "fullLogsAt": "Registros completos de nginx/auth:",
    "logCenter": "Centro de registro",
    "colScore": "Puntaje",
    "colHits": "Impactos",
    "col429": "429",
    "topIpsTitle": "IP principales",
    "hitsCount": "{{n}} impactos",
    "sampleWindowHint": "Los recuentos son de la ventana de muestras access + auth actual, no del archivo de registro completo.",
    "banShort": "Prohibición",
    "vhostLimits": "Límites de velocidad de Vhost",
    "eventStream": "Flujo de eventos",
    "eventKind": {
      "preset": "Programar",
      "auto_preset": "Preajuste automático",
      "cloudflare_ua": "Llamarada de nube",
      "ban": "Prohibición",
      "unban": "Desbanear"
    },
    "hours48": "48 horas",
    "geoipDb": "Base de datos GeoIP",
    "refreshStatus": "Actualizar estado",
    "updateDbNow": "Actualizar base de datos ahora",
    "geoipSourceHint": "Utiliza la base de datos GeoIP local de forma predeterminada; token de información IP opcional.",
    "retry": "Rever",
    "loadingGeoip": "Cargando estado de GeoIP…",
    "nextScheduledUpdate": "Próxima actualización programada: {{at}}",
    "statusNotLoaded": "Estado no cargado",
    "load": "Carga",
    "accessPolicy": "Política de acceso",
    "enable": "Permitir",
    "freeGranularity": "Máximo gratuito: país + región + ASN; ciudad opcional (predeterminado desactivado, menor precisión). Proveedor = ASN. La lista blanca siempre está exenta. Haga clic en el chip para eliminarlo.",
    "allowListDanger": "El modo de lista permitida es de alto riesgo: las IP públicas que no figuran en la lista (incluidas las geográficas desconocidas) están bloqueadas. Asegúrese de que la IP del administrador esté en la lista blanca de páginas prohibidas.",
    "dailySchedule": "Horario diario",
    "cityPolicy": "Política de la ciudad (confianza baja · opcional)",
    "useCityAccess": "Utilice la ciudad para acceder",
    "cityPolicyHint": "La precisión de la ciudad de DB gratuita es limitada",
    "noCitiesYet": "Aún no hay ciudades",
    "savePolicy": "Guardar política",
    "applyNginxSnippet": "Aplicar fragmento de Nginx",
    "nginxSnippetHint": "El bloqueo HTTP necesita el módulo nginx geoip2.",
    "testIp": "IP de prueba",
    "lookup": "Buscar",
    "plusCountry": "+ país {{v}}",
    "plusRegion": "+ región {{v}}",
    "plusCity": "+ ciudad {{v}}",
    "lastTickPrefix": "· último {{t}}",
    "nextTickPrefix": "· siguiente {{t}}",
    "cannotBanSelf": "No se puede bloquear {{ip}} — es el anfitrión, su IP de inicio o ignoreip",
    "selfIp": "este anfitrión",
    "selfHostIp": "IP del host",
    "selfLoginIp": "Su IP de inicio de sesión",
    "showZeroScore": "Mostrar puntuación 0",
    "hideZeroScore": "Ocultar puntuación 0",
    "geoDraftOnly": "La política está apagada: Guardar solo deja un borrador. Nginx no aplica hasta que la active.",
    "geoNeedDb": "Faltan bases de datos GeoIP: actualice primero los archivos MMDB",
    "uaNeedZones": "Establece primero una zona de Cloudflare",
    "selectAllCountriesWarn": "¿Seleccionar todos los países en lista de bloqueo? Puede bloquear este anfitrión y su país de inicio.",
    "badgeRecommendPreset": "Se recomienda un preajuste más fuerte para la amenaza actual",
    "badgeAutomationOn": "La automatización está activa",
    "badgeBanCount": "Bloqueos activos",
    "badgeGeoOn": "La política de acceso Geo está activa",
    "badgeGeoNotReady": "La base GeoIP no está lista",
    "badgeIntelSignals": "Señales que suman puntuación ahora",
    "signalActive": "Activo",
    "signalInactive": "Inactivo",
    "signalJails": "{{n}} cárcel(es)",
    "dbReadyHint": "Hay archivos MMDB",
    "dbNotReadyHint": "Descargue primero una base GeoIP",
    "staleHint": "Si la última actualización correcta tiene más de 7 días",
    "draftBadge": "Borrador",
    "banIsSelf": "Esta IP coincide con la fuente del panel actual o con este host.",
    "banNotSelf": "Esta IP no es la fuente actual del panel.",
    "geoSourceLocal": "Biblioteca GeoIP local (sapics + DB-IP)",
    "nginxPreviewHint": "Fragmento de Nginx que este ajuste preestablecido escribiría (solo vista previa):"
  },
  "publicFiles": {
    "notSet": "No establecido",
    "quota": "Cuota",
    "reloadOnApply": "En aplicar",
    "path": "Camino",
    "fileManager": "Gestor de archivos",
    "overview": "Descripción general",
    "overviewDesc": "Configuraciones a aplicar (resumen de solo lectura)",
    "serverName": "Nombre del servidor",
    "reloadNginx": "Recargar Nginx",
    "reloadTry": "Probar aplicar",
    "siteSettings": "Configuración del sitio",
    "siteSettingsDesc": "Escribe configuración administrada; puede recargar Nginx al aplicar (accesible solo después de aplicar)",
    "serverNameHint": "Nombre del servidor Nginx, p. archivos.ejemplo.com",
    "notes": {
      "noManagedConf": "Aún no hay ninguna configuración de Nginx administrada: haga clic en Aplicar",
      "notSynced": "La configuración administrada existe pero no está en /etc/nginx/conf.d; aplíquela nuevamente como root con YSK_EXECUTE"
    },
    "quotaMiB": "Cuota (MiB)",
    "quotaHint": "Opcional; mayúsculas tamaño del directorio público",
    "unlimited": "Ilimitado",
    "quotaInvalid": "Ingrese un número entero de MiB o elija Ilimitado.",
    "serverNameRequired": "Introduzca un nombre de servidor.",
    "serverNameInvalid": "Utilice un nombre de host, un comodín o una IP, sin espacios ni puntuación.",
    "applyHint": "Aplicar solo escribe configuración;",
    "appliedOk": "Sitio de archivos públicos aplicado",
    "applyReload": "Aplicar y recargar Nginx",
    "statusLive": "Vivir en nginx",
    "statusDraft": "Borrador / no aplicado",
    "statusManagedOnly": "Solo administrado",
    "statusNotApplied": "No aplicado",
    "nginxLive": "en conf.d",
    "nginxNotLive": "no en conf.d",
    "openSite": "sitio abierto",
    "notLiveHint": "El dominio 404 generalmente significa que conf está solo en dataDir, no se copió en /etc/nginx/conf.d, o nginx no se recargó. Vuelva a aplicar con root + YSK_EXECUTE. Utilice http:// hasta que se emita SSL para este nombre de host.",
    "diskRoot": "raíz del disco",
    "executeFlag": "Ejecutar",
    "asRoot": "Raíz",
    "filesInRoot": "Entradas",
    "managedConf": "Configuración administrada",
    "systemConf": "Configuración del sistema",
    "autoindex": "Listado de directorios (autoindex)",
    "liveSystemConf": "Conf. del sistema en vivo: {{path}}",
    "publicRootNote": "Raíz pública: {{path}}",
    "applyConfirmTitle": "¿Aplicar el sitio de archivos públicos?",
    "applyConfirmDesc": "Escribir Nginx server_name {{name}} y recargar Nginx.",
    "serverNameMismatch": "La conf. en vivo usa {{live}}; el formulario tiene {{draft}}. Aplique para reemplazar.",
    "liveName": "nombre en vivo",
    "draftName": "Nombre del borrador",
    "draftUnapplied": "Este proyecto no se aplica. Nginx todavía ofrece el nombre en vivo.",
    "discardDraft": "Descartar borrador"
  },
  "rbac": {
    "permissions": "Permisos",
    "permissionsDesc": "Agregue o elimine capacidades por rol. Valores predeterminados de fábrica con restauración con un solo clic.",
    "rolePolicy": "Política de roles",
    "dirty": "Personalizado",
    "factory": "Valor predeterminado de fábrica",
    "maxLevel": "nivel máximo",
    "save": "Guardar política",
    "saved": "Política {{role}} guardada",
    "restoreRole": "Restaurar este rol",
    "restoreAll": "Restaurar todos los roles",
    "restoreRoleTitle": "¿Restaurar {{role}} a los valores predeterminados de fábrica?",
    "restoreRoleDesc": "Se borrarán las capacidades personalizadas para este rol.",
    "restoreAllTitle": "¿Restaurar todos los roles a los valores predeterminados de fábrica?",
    "restoreAllDesc": "Se borrarán todas las políticas de roles personalizados.",
    "restoredRole": "Restaurado {{role}}",
    "restoredAll": "Se restauraron todos los valores predeterminados de roles.",
    "bandAllOn": "Habilitar todo",
    "bandAllOff": "Desactivar todo",
    "diffFromFactory": "Difiere del valor predeterminado",
    "effectivePreview": "Capacidades efectivas",
    "userOverrides": "Anulaciones de usuario",
    "extraGrants": "Subvenciones extra",
    "extraRevokes": "Revocaciones adicionales",
    "restoreUserOverrides": "Borrar anulaciones de usuario",
    "restoreUserOverridesTitle": "¿Borrar anulaciones para {{name}}?",
    "restoreUserOverridesDesc": "Sólo se borran las concesiones/revocaciones adicionales; La política de roles no se modifica.",
    "overridesBadge": "Anulaciones",
    "promoteAdminTitle": "¿Ascender a administrador?",
    "promoteAdminDesc": "El administrador puede administrar usuarios, cambiar RBAC, suplantar, restaurar copias de seguridad y más.",
    "level": {
      "read": "Leer",
      "write-low": "Escribir (bajo)",
      "write-high": "Escribir (alto)",
      "destructive": "Destructivo",
      "privilege": "Privilegio"
    },
    "cap": {
      "dashboardRead": "Panel",
      "logsRead": "Registros",
      "metricsRead": "Métrica",
      "projectsRead": "Proyectos (leer)",
      "mailRead": "Correo (leer)",
      "dnsRead": "DNS (leer)",
      "sslRead": "SSL (leer)",
      "backupsRead": "Copias de seguridad (leer)",
      "updatesRead": "Actualizaciones (leer)",
      "servicesRead": "Servicios (leer)",
      "firewallRead": "Cortafuegos (leer)",
      "approvalsView": "Aprobaciones (ver)",
      "usersSelf": "Autoperfil / 2FA",
      "projectsWrite": "Crear/editar proyectos",
      "mailWrite": "Buzones/alias",
      "dbWrite": "Crear bases de datos",
      "sslUpload": "Cargar certificados",
      "filesProject": "Archivos de proyecto",
      "approvalsRespond": "Responder a las aprobaciones",
      "cronManage": "Gestión de cron",
      "servicesControl": "control de servicio",
      "updatesApply": "Aplicar actualizaciones de paquetes",
      "dnsApply": "Aplicar DNS",
      "sslIssue": "Emitir SSL",
      "publishApply": "Publicar / Nginx",
      "firewallEdit": "Editar cortafuegos",
      "mailApply": "Aplicar mapas de correo",
      "runtimeTuning": "Ajuste del tiempo de ejecución",
      "mysqlConsoleWrite": "Consola de escritura MySQL",
      "projectsDelete": "Eliminar proyectos",
      "dbDrop": "Eliminar bases de datos",
      "backupsRun": "Ejecutar copias de seguridad",
      "backupsRestore": "Restaurar copias de seguridad",
      "firewallFlush": "Limpiar el cortafuegos",
      "logsPurge": "Purgar registros",
      "usersManage": "Administrar usuarios",
      "packagesManage": "Administrar paquetes",
      "usersImpersonate": "Personificar",
      "securityPolicy": "Política de seguridad",
      "rbacPolicy": "política de RBAC",
      "settingsSystem": "Configuración del sistema",
      "auditExport": "Exportación de auditoría",
      "securityApiKeysAdmin": "Administrador de claves API",
      "networkBrowse": "Navegación web mediada por host",
      "networkVnc": "Escritorio remoto VNC",
      "validatorsRead": "Validadores (lectura)",
      "validatorsManage": "Validadores gestionar",
      "validatorsWipe": "Validadores borrar datos",
      "dockerRead": "Docker (lectura)",
      "dockerManage": "Docker gestionar",
      "dockerWipe": "Docker borrar / limpiar"
    },
    "aboutRoles": "Roles (valores predeterminados de fábrica)",
    "aboutRolesBody": "Los roles establecen capacidades predeterminadas; los usuarios pueden anular los individuales.",
    "aboutQuota": "Cuotas",
    "aboutQuotaBody": "Las cuotas de paquetes son principalmente totales de host/panel, no un aislamiento estricto de múltiples inquilinos",
    "dangerPolicyTitle": "¿Otorgar capacidades destructivas/privilegiadas?",
    "dangerPolicyDesc": "Estás agregando límites destructivos o de privilegios, o aumentando el nivel máximo para este rol.",
    "needRbacPolicy": "Se requiere rbac.policy para editar las políticas de roles.",
    "adminLockedFull": "Administrador completamente abierto (bloqueado)",
    "adminLockedHint": "La función del sistema de administrador siempre está completamente abierta y no se puede reducir.",
    "maxLevelHint": "Los grupos de capacidad por encima de este nivel permanecen bloqueados.",
    "capabilities": "Capacidades",
    "capabilitiesHint": "Alternar qué puede hacer este rol",
    "enabledCount": "{{enabled}} de {{total}} habilitado",
    "bandAboveMax": "Por encima del nivel máximo",
    "roleUnavailable": "No disponible para este rol",
    "dirtyHint": "Personalizado (difiere de fábrica)",
    "unsaved": "No guardado",
    "unsavedHint": "Ediciones no guardadas en este rol",
    "nothingToSave": "Nada que salvar",
    "saveRole": "Guardar política {{role}}",
    "discardTitle": "¿Descartar la política no guardada?",
    "discardDesc": "El cambio de roles elimina las ediciones de capacidades no guardadas."
  },
  "readiness": {
    "cat": {
      "core": "Plano de control",
      "security": "Permisos y seguridad",
      "binaries": "software del sistema",
      "hosting": "Tiempos de ejecución",
      "dns": "DNS",
      "email": "Correo electrónico",
      "isolation": "Aislamiento del proyecto",
      "ops": "operaciones"
    },
    "level": {
      "ready": "Listo",
      "degraded": "Degradado",
      "missing": "Desaparecido",
      "unknown": "Desconocido"
    },
    "severity": {
      "critical": "Crítico",
      "recommended": "Recomendado",
      "optional": "Opcional"
    },
    "fix": "Arreglar",
    "passed": "Aprobar",
    "checkFailed": "Error en la comprobación de preparación",
    "gatePass": "Puerta pasada · {{pct}}%",
    "gateFail": "No listo · {{pct}}%",
    "gateBlocked": "No aprobado · {{n}} faltante",
    "executeOn": "En",
    "executeOff": "Apagado",
    "blockers": "Bloqueadores",
    "blockersHint": "Los bloqueos son el subconjunto crítico de Faltantes, no comprobaciones extra.",
    "requireAdminTotp": "Requiere política de administrador 2FA",
    "listenBind": "escuchar dirección",
    "item": {
      "admin2fa": "Administrador de dos factores"
    },
    "dataDirPerms": "permisos del directorio de datos del panel",
    "mode750": "modo 750",
    "totalChecks": "Todos los cheques",
    "totalChecksHint": "Listo + degradado + faltante = este total. Los bloqueadores son el subconjunto crítico que falta.",
    "probing": "Sondeo…",
    "reprobe": "Volver a sondear",
    "exportReport": "Informe de exportación",
    "exportStarted": "Descargando {{name}}",
    "firstBlocker": "Arreglar el primer bloqueador",
    "viewRecommended": "Ver recomendado",
    "loadingProbe": "Sondeando las capacidades del host...",
    "priorityTab": "Correcciones prioritarias",
    "checklistTab": "Lista de verificación completa",
    "summaryTab": "Resumen y atajos",
    "priorityTitle": "Correcciones prioritarias",
    "prioritySub": "Manejar en orden; volver a sondear después de eliminar los bloqueadores",
    "nItems": "{{count}} artículos",
    "noHardBlockers": "Sin bloqueadores duros",
    "noHardBlockersTitle": "Sin bloqueadores duros",
    "prodGate": "Puerta de producción",
    "gatePassed": "aprobado",
    "gateMaybePerm": "aún puede fallar debido a los permisos",
    "viewDegradedHint": "Revisar recomendaciones degradadas (correo, DNS, tiempos de ejecución opcionales).",
    "viewDegraded": "Ver degradado",
    "fullChecklist": "Lista de verificación completa",
    "showing": "Mostrando {{shown}} / {{total}}",
    "filterAria": "Filtro de estado",
    "all": "Todo",
    "category": "Categoría",
    "allCategories": "Todas las categorias",
    "searchPh": "Título, detalle, identificación, sugerencia de corrección...",
    "quickCatAria": "Categorías rápidas",
    "noMatchTitle": "No hay elementos coincidentes",
    "noMatchDesc": "Borrar búsqueda o cambiar filtros.",
    "resetFilters": "Restablecer filtros",
    "summary": "Resumen",
    "shortcuts": "Atajos",
    "opsShortcutsAria": "Atajos de operaciones",
    "scHost": "Configuración del anfitrión",
    "scHostD": "nombre de host · potencia · NTP",
    "scUnit": "Unidad de plano de control",
    "scUnitD": "instalar/habilitar systemd",
    "scServices": "Matriz de servicios",
    "scServicesD": "nginx · base de datos · ciclo de vida",
    "scMetrics": "Métricas de host",
    "scMetricsD": "cargar · memoria · alertas",
    "scProtection": "Centro de defensa",
    "scProtectionD": "respuesta · UFW · fail2ban",
    "policyNote": "Política: el PTR de correo, el puerto 25 y el DNS del registrador nunca se reclaman automáticamente como completos. HTTP 503 = informe no listo pero completo (no es un éxito falso).",
    "notProbedTitle": "Aún no investigado",
    "notProbedDesc": "Haga clic en \"Volver a sondear\" para iniciar una verificación de preparación de solo lectura.",
    "runCheck": "Ejecutar verificación de preparación",
    "reportFormatError": "Formato de informe de preparación no válido",
    "checkFailedHttp": "La verificación de preparación falló ({{status}})",
    "itemAdminPassword": "Seguridad de la contraseña de administrador",
    "itemAdminPasswordWeak": "{{count}} administrador(s) marcado(s) must_change_password/bootstrap inseguro: cambio antes de la producción",
    "itemAdminPasswordOk": "Sin indicador de arranque/contraseña débil en las cuentas de administrador",
    "itemAdminPasswordFix": "Cambiar contraseña de administrador (Seguridad/Usuarios)",
    "itemListenBind": "Enlace de escucha del plano de control",
    "itemListenBindPublic": "La escucha puede ser pública (0.0.0.0/::). Prefiera 127.0.0.1 + proxy inverso/firewall.",
    "itemListenBindLoopback": "Prefiere enlace loopback (predeterminado 127.0.0.1)",
    "itemDataDirPerms": "permisos de directorio de datos",
    "itemDataDirWorldW": "chmod 750 (o 700) directorio de datos; chown al usuario del panel",
    "itemDataDirOtherR": "Prefiera chmod 750 dataDir para que otros usuarios no puedan leer el JSON del plano de control",
    "itemRustToolchain": "Cadena de herramientas oxidada",
    "itemWebBuildFix": "Haga clic en \"Reparar ahora\" para crear la interfaz de usuario web (requiere monorepo en este host) o ejecute: pnpm --filter ysk-server-web build",
    "itemWebBuildManual": "No hay monorepo ni SPA empaquetado en este host; la solución con un solo clic no está disponible. En una máquina con fuente: pnpm --filter ysk-server-web build, luego copie apps/web/dist/* en dataDir/web (por ejemplo, /var/lib/ysk-server/web), o configure YSK_WEB_ROOT y reinicie.",
    "itemStateStore": "Almacén de estado del plano de control",
    "itemStateStoreSqliteHint": "Opcional: YSK_STORE=sqlite para el almacén de documentos WAL",
    "itemBackupFreshness": "Última ejecución de copia de seguridad completa",
    "itemBackupNone": "No se registró ningún last_backup_run: ejecute la copia de seguridad completa o programe",
    "itemBackupFix": "copia de seguridad del servidor ysk todo · programa de copia de seguridad --instalar",
    "itemFleetSessions": "Sesiones de agentes de flota",
    "itemFleetNone": "Opcional para host único; multi-edge necesita ejecución de agente + latido",
    "itemFleetNoHb": "Sesiones registradas pero sin latidos: iniciar el agente de borde",
    "itemPdnsutil": "pdnsutil (PowerDNS)",
    "apachePort80Title": "Apache vs publico :80",
    "apachePort80Detail": "Apache escucha en :80 y Nginx no está en HTTP público: entra en conflicto con la topología de Nginx como borde.",
    "apachePort80Both": "Tanto Apache como Nginx aparecen en :80: vuelva a vincular Apache a 127.0.0.1:8080.",
    "apachePort80Ok": "Apache se está ejecutando pero no es propietario exclusivo de public :80 (topología correcta).",
    "apachePort80Fix": "Instalar ayudantes de reenlace existen; deshabilite Apache vhosts en 80 o verifique con ss -lntp después de recargar.",
    "fixNow": "Arreglar ahora",
    "fixFailed": "La solución falló",
    "fixDone": "Permisos de dataDir reforzados (chmod 750)",
    "fixDoneWebUi": "UI web construida/instalada",
    "rootLabel": "Superusuario",
    "techDetails": "Detalles técnicos",
    "missingOwner": "No hay propietario de panel asignado (atribución de cuota de paquete)",
    "notOsProvisioned": "Usuario/casa del sistema operativo aún no aprovisionado",
    "isolationPendingOs": "Igual que el estado del proyecto: usuario del sistema operativo pendiente. Abra el aislamiento para aprovisionar al usuario del sistema y al hogar.",
    "ondrejNone": "No se detectaron fuentes PHP de Ondrej Launchpad",
    "ondrejFound": "Se encontraron fuentes heredadas de ondrej/php que entran en conflicto con packages.sury.org: {{paths}}",
    "ondrejTitle": "Fuente PHP apt (residual ondrej)",
    "systemctlActive": "El servicio está funcionando",
    "systemctlStatus": "Estado del servicio: {{status}}",
    "binInPath": "{{bin}} en RUTA",
    "leftoverApache": "Sitio predeterminado sobrante de Apache",
    "leftoverVsftpd": "unidad vsftpd falló",
    "leftoverCli": "CLI sobrante obsoleta",
    "leftoverNginx": "Falta el comodín Nginx",
    "leftoverDovecot": "Dovecot TLS apunta al certificado faltante",
    "leftoverOther": "Restos de hostia",
    "leftoverApply": "Aplicar sobrantes",
    "isolationOwnerDegrades": "La falta deowner_user_id afecta la atribución de cuota de paquete: el estado está degradado, no listo."
  },
  "redis": {
    "neverExpire": "Nunca caduca",
    "ttlSeconds": "{{ttl}}s",
    "ttlMinutes": "{{n}} minutos",
    "ttlHours": "{{n}}h",
    "ttlDays": "{{n}}d",
    "typeString": "Cadena",
    "typeHash": "Picadillo",
    "typeList": "Lista",
    "typeSet": "Colocar",
    "typeZset": "conjunto ordenado",
    "keysLoadFailed": "No se pudieron cargar las claves",
    "writeFailed": "Error de escritura",
    "saved": "Guardado",
    "deleted": "Eliminado",
    "offline": "Desconectado",
    "connections": "Conexiones",
    "totalKeys": "claves totales",
    "writable": "grabable",
    "connected": "Conectado",
    "notConnected": "No conectado",
    "keys": "Llaves",
    "selected": "Seleccionado",
    "softwareMissing": "El software Redis no está instalado",
    "notConnectedTitle": "No conectado a Redis",
    "installThenStart": "Instale Redis a través del banner y luego inicie el servicio.",
    "installedNotConnected": "Instalado pero no conectado: inicie el servicio para buscar claves.",
    "keysCountSuffix": "· {{n}} tecla(s)",
    "searchPlaceholder": "Claves de búsqueda, p.e. usuario:* o *",
    "searchKeys": "Claves de búsqueda",
    "scanHint": "Utiliza SCAN, no LLAVES. Devuelve como máximo {{n}} claves; evite * en bases de datos enormes.",
    "scanCapped": "Mostrando las primeras {{n}} coincidencias.",
    "rows": "{{n}} fila(s)",
    "content": "Contenido",
    "noMatchingKeys": "No hay claves coincidentes",
    "dbEmpty": "La base de datos {{db}} está vacía.",
    "noMatchPattern": "No hay claves que coincidan con “{{pattern}}”.",
    "opsResult": "resultado de operaciones",
    "addStringKey": "Agregar clave de cadena",
    "writeToDb": "Escribir en Redis DB {{db}} (en vivo, tenga cuidado)",
    "keyName": "Llave",
    "keyNameHint": "Utilice espacios de nombres de dos puntos, p. sesión:usuario:1",
    "ttlLabel": "TTL (segundos)",
    "ttlHint": "Vacío = nunca caducar",
    "m1": "1 metro",
    "m5": "5m",
    "h1": "1 hora",
    "d1": "1d",
    "d7": "7d",
    "customSeconds": "Segundos personalizados",
    "stringValue": "Valor de cadena a través de SET",
    "stringContent": "Contenido de cadena",
    "deleteKeyTitle": "¿Eliminar esta clave?",
    "deleteKeyDesc": "¿Eliminar “{{key}}” de la base de datos {{db}}? Esto no se puede deshacer.",
    "installedOk": "Redis instalado",
    "startedOk": "Redis comenzó",
    "memory": "Memoria",
    "addKey": "Agregar clave",
    "dbLabel": "DB {{i}}",
    "keysInDb": "· {{n}} tecla(s)",
    "dbOptionKeys": "DB {{i}} · {{n}} teclas",
    "dbOptionEmpty": "DB {{i}} · vacío",
    "dbRange": "{{n}} bases de datos (0–{{max}}).",
    "serviceLink": "Cambiar el recuento en la configuración del servicio",
    "dbsWithData": "DBs con datos (rápido)",
    "keysShort": "{{k}} teclas",
    "keyList": "lista de claves",
    "pickKey": "Seleccione una tecla a la izquierda para ver el contenido.",
    "ttlPrefix": "TTL: {{ttl}}",
    "writeLiveHint": "Escribe Redis en vivo; no se puede deshacer desde el panel con un solo clic.",
    "refPath": "Ref: {{path}}",
    "dbEmptyMark": " · vacío",
    "noRequirepass": "El modo protegido está activo, pero requirepass está vacío o no se leyó — no hay contraseña.",
    "insecureShort": "Sin contraseña",
    "setRequirepass": "Fijar contraseña",
    "generateRequirepass": "Generar y aplicar contraseña",
    "generateRequirepassTitle": "¿Generar una contraseña de Redis?",
    "generateRequirepassDesc": "Escribe requirepass y reinicia Redis. La contraseña se muestra una vez. El cambio de host necesita EJECUTAR.",
    "generateRequirepassDone": "Contraseña de Redis aplicada",
    "generatedOnce": "Contraseña generada (se muestra una vez): {{password}}",
    "rdbOnlyLossHint": "AOF off y RDB on. Un reinicio o fallo puede perder escrituras recientes.",
    "dirDataContainer": "/datos (contenedor)",
    "dirHostDefault": "/var/lib/redis",
    "dirDefaultInstance": "/var/lib/redis/default",
    "dirDataWarn": "/data suele ser una ruta de contenedor; Este panel no puede confirmar que exista.",
    "saveOff": "Deshabilitar instantáneas (no recomendado)",
    "saveOffWarn": "La cadena de guardado vacía desactiva las instantáneas RDB. En caso de fallo, se pueden perder todos los datos si AOF también está desactivado.",
    "dirMoveWarn": "Cambiar el directorio no mueve dump.rdb/AOF. El siguiente inicio utiliza la nueva ruta tal como está.",
    "passwordUnset": "No configurado en el servicio",
    "passwordSetHidden": "Conjunto (no mostrado)"
  },
  "resources": {
    "created": "Creado",
    "updated": "Actualizado",
    "deleted": "Eliminado",
    "applyDone": "Aplicar completado",
    "applyIncomplete": "Aplicar incompleto"
  },
  "roles": {
    "admin": "Administración",
    "operator": "Operador",
    "viewer": "Espectador",
    "agent": "Agente"
  },
  "runtime": {
    "probed": "sondeado",
    "notProbed": "No investigado",
    "probe": "Sonda",
    "read": "Leer",
    "targetVersion": "Versión de destino",
    "nodeMissing": "Node.js no está instalado",
    "probeResult": "Resultado de la sonda",
    "readonly": "Sólo lectura",
    "installNode": "Instalar Node.js",
    "needExecuteAdmin": "Necesita derechos de cambio de sistema y administrador.",
    "nodeMajor": "Versión principal del nodo",
    "nodeMajorHint": "LTS suele ser 20 o 22; alinearse con el tiempo de ejecución del proyecto",
    "installedNode": "Nodo instalado {{version}}",
    "installPm2": "Instalar PM2",
    "installPm2Desc": "npm install -g pm2 con un clic (administrador de procesos). Requiere Node.js primero.",
    "installPm2Btn": "Instalar PM2",
    "reinstallPm2": "Reinstale PM2",
    "installedPm2": "PM2 instalado",
    "pm2Status": "Estado de PM2",
    "pm2Ready": "Listo",
    "pm2MissingShort": "No instalado",
    "pm2NeedNodeFirst": "Instale Node.js primero, luego PM2.",
    "pm2InstallHint": "Ejecuta npm -g como root con derechos de cambio de sistema;",
    "pm2ReadyHint": "PM2 está en RUTA; Los proyectos pueden utilizar el modo de proceso PM2.",
    "opsResult": "resultado de operaciones",
    "unlimited": "Ilimitado",
    "zeroUnlimited": "0 = ilimitado",
    "m24": "24m",
    "h1": "1 hora",
    "d1": "1d",
    "d7": "7d",
    "phpIniLoadFailed": "No se pudo cargar php.ini",
    "loaded": "Cargado",
    "default": "Por defecto",
    "phpMissing": "PHP no está instalado",
    "overview": "Descripción general",
    "fpmSites": "FPM/sitios",
    "tools": "Herramientas",
    "about": "Acerca de",
    "installPhp": "Instalar PHP",
    "versionAlreadyInstalled": "La versión {{version}} ya está en el host",
    "installedVersionBtn": "Instalado {{version}}",
    "newerVersionAvailable": "Actual {{current}}; más reciente compatible: {{newer}} (seleccione para instalar)",
    "switchToNewer": "Seleccione {{version}}",
    "installedVersionsHint": "Detectado: {{list}}",
    "phpInstallHint": "Necesita derechos de cambio de sistema y administrador;",
    "phpVersion": "versión PHP",
    "phpExtHint": "Elija extensiones para instalar",
    "phpExtSelect": "Extensiones PHP",
    "phpExtSelectHint": "Los paquetes se instalan como php{{version}}-…;",
    "phpExtRequired": "Requerido (núcleo)",
    "phpExtRecommended": "Conjunto recomendado",
    "phpExtSelectAll": "Seleccionar todas las extensiones",
    "phpExtCoreOnly": "Solo núcleo",
    "phpExtSearch": "Extensiones de búsqueda (mysql, gd, redis…)",
    "phpExtEmpty": "No hay extensiones coincidentes",
    "pluginsSelect": "Herramientas/complementos comunes",
    "pluginsSelectHint": "Seleccione instalar con el tiempo de ejecución (por ejemplo, PM2 para Node, Poetry para Python)",
    "pluginsSearch": "Herramientas de búsqueda (pm2, poesía, maven…)",
    "pluginsEmpty": "No hay herramientas coincidentes",
    "pluginsRecommended": "Conjunto recomendado",
    "pluginsSelectAll": "Seleccionar todo disponible",
    "pluginsNone": "Sin herramientas complementarias",
    "pluginsInstallNote": "Seleccione las herramientas y luego Instalar seleccionadas. La instalación en tiempo de ejecución por primera vez puede incluir herramientas; si el tiempo de ejecución está presente, utilice únicamente el botón de arriba.",
    "installPluginsOnly": "Instalar herramientas seleccionadas ({{version}} ya presentes)",
    "installExtOnly": "Instalar extensiones seleccionadas (PHP {{version}} presente)",
    "pluginAlreadyOnHost": "ya en el anfitrión",
    "installAddonsOnly": "Instalar complementos seleccionados ({{version}} presente)",
    "remoteNewerHint": "Instalado {{current}} · upstream más reciente {{remote}}{{source}}",
    "installedPhp": "PHP instalado {{version}}",
    "nextSteps": "Próximo",
    "suggestedFlow": "Flujo sugerido",
    "globalPhpIni": "php.ini global",
    "globalPhpIniDesc": "Una configuración por fila",
    "managePath": "Ruta de gestión",
    "loading": "Cargando",
    "probing": "Sondeo…",
    "noBinaryPath": "Sin ruta binaria",
    "hostDefaultError": "Valor predeterminado del host no disponible",
    "pm2Tick": "{{at}} · proyectos {{projects}} · PM2 {{pm2}} · en ejecución {{run}}",
    "cannotLoadSettings": "No se puede cargar la tabla de configuración",
    "reloadFailed": "Recarga fallida",
    "sensitive": "Configuración sensible: cuidado",
    "on": "En",
    "off": "Apagado",
    "customNumber": "Número personalizado",
    "customExample": "Personalizado, p.e. 768M",
    "advancedExtra": "Avanzado: claves extra y raw",
    "advancedExtraDesc": "Directivas no en catálogo; una clave=valor por línea; raw se agrega a la cola inicial",
    "extraDirectives": "Directivas adicionales",
    "extraDirectivesHint": "Una clave = valor por línea (las claves aún no están arriba)",
    "rawAppend": "Agregar raw al final de ini",
    "phpIniSaved": "php.ini guardado",
    "appliedSystem": "Aplicado al sistema",
    "demoVhost": "Herramientas del sistema: demostración vhost / pool",
    "demoVhostDesc": "Avanzado/depuración; Los sitios diarios utilizan Proyectos → Implementar.",
    "domain": "Dominio",
    "domainRequired": "Ingrese un dominio válido antes de aplicar el vhost.",
    "vhostServerName": "nombre_servidor del host virtual",
    "poolName": "Nombre de la piscina",
    "poolNameHint": "Identificación escrita a mano (demostración); las rutas del proyecto utilizan usuarios ysks_*",
    "enableReload": "Habilitar y recargar servicios",
    "enableReloadHint": "Necesita derechos de cambio de sistema; off = solo gestión de escritura",
    "applyFailed": "No se pudo aplicar",
    "phpVhostApplied": "PHP vhost/grupo aplicado",
    "composerTools": "Compositor / WP-CLI / módulos",
    "composerToolsDesc": "Sondeo en vivo de herramientas PATH y php -m (solo lectura)",
    "toolsProbed": "Herramientas sondeadas",
    "notFound": "Extraviado",
    "available": "Disponible",
    "moduleCount": "Módulos",
    "installNodeV": "Instalar nodo {{v}}",
    "installPhpV": "Instalar PHP {{v}}",
    "installPythonV": "Instalar Python {{v}}",
    "installGoV": "Instalar Ir {{v}}",
    "installRustV": "Instalar Rust {{v}}",
    "pythonMissing": "Python no está instalado",
    "goMissing": "Ir no está instalado",
    "rustMissing": "Óxido/carga no instalada",
    "tuneLoadFailed": "No se pudo cargar el ajuste",
    "availableCount": "{{n}} disponible",
    "notDetected": "No detectado",
    "binaryPath": "Ruta del binario",
    "targetMissing": "Versión de destino no instalada",
    "targetMissingHint": "El destino {{version}} no está en este host. Enlace una versión instalada o instale este pin.",
    "target": "Objetivo",
    "tune": "Melodía",
    "loadedShort": "Cargado",
    "host": "Anfitrión",
    "tabOverviewInstall": "Descripción general",
    "tabTune": "Sintonización",
    "probeReadonlyInstall": "Sólo lectura · sondear nuevamente después de la instalación",
    "hostDefault": "Valor predeterminado del host",
    "panelSupport": "Soporte de paneles",
    "ready": "Listo",
    "notDetectedYet": "Aún no detectado",
    "install": "Instalar",
    "installHint": "Necesita derechos de cambio de sistema y administrador; instalar la cadena de herramientas ≠ el proyecto es público",
    "panelTune": "Ajuste de paneles",
    "panelTuneDesc": "Gestión de escritura; inyectar env en la implementación",
    "bindVersion": "Versión de pasador",
    "onePerRow": "Una configuración por fila",
    "zeroAll": "0 = todos",
    "custom": "Costumbre",
    "extraEnv": "Variables de entorno adicionales",
    "extraEnvHint": "Una CLAVE = valor por línea",
    "customEnv": "entorno personalizado",
    "envPreview": "Vista previa del entorno",
    "envPreviewDesc": "Resultado combinado después de guardar/última carga",
    "unsupported": "No compatible",
    "tuneSaved": "Afinación guardada",
    "nodeDetectedHint": "Nodo detectado en el host; La reinstalación sigue los privilegios y puede sobrescribirlos.",
    "nodeProbeAfter": "Después de la instalación, vuelva a sondear para confirmar la RUTA y la versión.",
    "installNodeVBtn": "Instalar nodo {{version}}",
    "installPhpVBtn": "Instalar PHP {{version}}",
    "phpIniSteps1": "Diseñe valores globales en la pestaña php.ini y guárdelos",
    "phpIniSteps2": "Opcional: Aplicar al sistema (escribe /etc/php/…/conf.d, necesita root)",
    "phpIniSteps3": "La implementación del proyecto inyecta ini combinado como php_admin_* en el grupo de FPM",
    "phpIniSteps4": "Los proyectos pueden anular claves individuales (Proyecto → Implementar)",
    "phpIniNote": "Los cambios se guardan primero en el directorio de datos del panel; Aplicar a las copias del sistema a /etc/php y recarga FPM. Los grupos de proyectos inyectan php_admin_value durante la implementación.",
    "phpIniLoading": "Cargando formulario php.ini…",
    "phpIniEmpty": "Catálogo vacío: recarga o asegúrate de que la API esté activa.",
    "reloadForm": "Recargar formulario",
    "savePhpIni": "Guardar php.ini",
    "prodUseProjects": "La producción debe utilizar Proyectos.",
    "prodPathDesc": ": crear proyecto PHP → implementar/aplicar FPM (grupo = proyecto usuario de Linux + hogar aislado)",
    "systemDemo": "demostración/herramientas a nivel de sistema",
    "demoNotBind": "(nombre del grupo escrito a mano) y no vincula automáticamente el aislamiento del proyecto. php.ini global está en la pestaña php.ini.",
    "applyOkWritten": "Aplicar con éxito = archivos escritos. Prefiera la implementación del proyecto para que Usuario = usuario de Linux del proyecto.",
    "applyPhpVhost": "Aplicar PHP vhost/pool",
    "applyPhpVhostTitle": "Necesita confirmación: escribe archivos pool/vhost",
    "applyPhpVhostDesc": "Escribirá el {{pool}} pool y el {{domain}} vhost. Servicios de recarga: {{reload}}.",
    "reprobeTools": "Herramientas para volver a sondear",
    "pressReprobe": "Presione Herramientas para volver a sondear para cargar",
    "installNodeLabel": "Instalar nodo {{v}}",
    "installPhpLabel": "Instalar PHP {{v}}",
    "installPythonLabel": "Instalar Python {{v}}",
    "installGoLabel": "Instalar Ir {{v}}",
    "installRustLabel": "Instalar Rust {{v}}",
    "readShort": "Leer",
    "pressReprobeHost": "Presione Volver a sondear para cargar la matriz de la versión del host",
    "installScriptNote": "Escribe el script de instalación; se ejecuta sólo con privilegios. La sintonización está en la pestaña Sintonización; Redistribuir proyectos para cambios de proceso.",
    "envNote": "Nodo: max-old-space-size se fusiona con NODE_OPTIONS. Go/Python/Rust utiliza variables de entorno oficiales.",
    "saveTune": "Guardar sintonización",
    "pressReprobeLoad": "Presione Herramientas para volver a sondear para cargar",
    "installJavaLabel": "Instalar/actualizar OpenJDK",
    "installKotlinLabel": "Instalar/actualizar Kotlin",
    "installBunLabel": "Instalar/actualizar Bun",
    "javaMissing": "Java (OpenJDK) no detectado",
    "kotlinMissing": "Compilador Kotlin no detectado",
    "bunMissing": "Bollo no detectado",
    "phpIniCatalog": {
      "groups": {
        "resource": {
          "title": "Límites de recursos",
          "description": "Memoria, tiempo de ejecución y límites de entrada"
        },
        "upload": {
          "title": "Cargar y publicar",
          "description": "Cargas de archivos y tamaño del cuerpo de la POST"
        },
        "session": {
          "title": "Sesión",
          "description": "Almacenamiento de sesión y cookies"
        },
        "error": {
          "title": "Errores y registro",
          "description": "Mostrar errores, registros y nivel de informes"
        },
        "opcache": {
          "title": "OPcache",
          "description": "Caché de código de bytes"
        },
        "security": {
          "title": "Seguridad y caminos",
          "description": "Archivos remotos, exposición y funciones deshabilitadas."
        },
        "locale": {
          "title": "Zona horaria y juego de caracteres"
        },
        "misc": {
          "title": "Otras configuraciones comunes"
        }
      },
      "fields": {
        "memory_limit": {
          "label": "Límite de memoria",
          "hint": "p.ej. 128M, 256M, 512M, -1 (ilimitado)"
        },
        "max_execution_time": {
          "label": "Tiempo máximo de ejecución",
          "hint": "Artículos de segunda clase; 0 = ilimitado (CLI)"
        },
        "max_input_time": {
          "label": "Tiempo máximo de entrada",
          "hint": "Artículos de segunda clase; tiempo máximo para analizar la solicitud"
        },
        "max_input_vars": {
          "label": "Variables de entrada máximas",
          "hint": "Límite para variables $_GET / $_POST / $_COOKIE"
        },
        "max_input_nesting_level": {
          "label": "Nivel máximo de anidamiento de entrada"
        },
        "file_uploads": {
          "label": "Permitir carga de archivos"
        },
        "upload_max_filesize": {
          "label": "Tamaño máximo de archivo de carga"
        },
        "post_max_size": {
          "label": "Tamaño máximo de publicación",
          "hint": "Debe ser ≥ tamaño máximo de archivo de carga"
        },
        "max_file_uploads": {
          "label": "Archivos máximos por solicitud"
        },
        "session_save_handler": {
          "label": "Controlador de guardado de sesión"
        },
        "session_gc_maxlifetime": {
          "label": "Duración de la sesión (segundos)",
          "hint": "Artículos de segunda clase"
        },
        "session_cookie_httponly": {
          "label": "Cookie HttpOnly"
        },
        "session_cookie_secure": {
          "label": "Cookie segura (solo HTTPS)",
          "hint": "Recomendado para sitios HTTPS"
        },
        "session_use_strict_mode": {
          "label": "Modo estricto de sesión"
        },
        "display_errors": {
          "label": "Errores de visualización (en la página)",
          "hint": "Deshabilitar en producción"
        },
        "display_startup_errors": {
          "label": "Mostrar errores de inicio"
        },
        "log_errors": {
          "label": "Errores de registro"
        },
        "error_reporting": {
          "label": "Nivel de informe de errores",
          "hint": "O un número entero como 32767"
        },
        "error_log": {
          "label": "Ruta del registro de errores",
          "hint": "Vacío = valor predeterminado del sistema; ruta absoluta permitida"
        },
        "opcache_enable": {
          "label": "Habilitar OPcache"
        },
        "opcache_enable_cli": {
          "label": "Habilitar OPcache para CLI"
        },
        "opcache_memory_consumption": {
          "label": "Memoria OPcache (MB)",
          "hint": "Unidad: MB"
        },
        "opcache_interned_strings_buffer": {
          "label": "Búfer de cadenas internadas (MB)"
        },
        "opcache_max_accelerated_files": {
          "label": "Archivos acelerados al máximo"
        },
        "opcache_validate_timestamps": {
          "label": "Validar marcas de tiempo",
          "hint": "En producción, puede desactivar y recargar manualmente."
        },
        "opcache_revalidate_freq": {
          "label": "Frecuencia de revalidar (segundos)"
        },
        "allow_url_fopen": {
          "label": "Permitir apertura de URL"
        },
        "allow_url_include": {
          "label": "Permitir incluir URL"
        },
        "expose_php": {
          "label": "Exponer el encabezado de la versión de PHP"
        },
        "open_basedir": {
          "label": "restricción de ruta open_basedir",
          "hint": "Vacío = sin límite; caminos separados con:"
        },
        "disable_functions": {
          "label": "Funciones deshabilitadas",
          "hint": "Separados por comas; demasiado estricto puede romper los paquetes"
        },
        "date_timezone": {
          "label": "Zona horaria"
        },
        "default_charset": {
          "label": "Juego de caracteres predeterminado"
        },
        "short_open_tag": {
          "label": "Permitir etiquetas abiertas cortas (<?)"
        },
        "realpath_cache_size": {
          "label": "Tamaño de caché de ruta real"
        },
        "realpath_cache_ttl": {
          "label": "TTL de caché de Realpath (segundos)"
        },
        "cgi_fix_redirect": {
          "label": "Redirección de ruta de corrección CGI"
        }
      },
      "options": {
        "sessionFiles": "Archivos",
        "sessionRedis": "Redis",
        "sessionMemcached": "Memcached",
        "errorReportingProd": "Producción (E_ALL menos obsoleto/estricto)",
        "errorReportingAll": "Todo (E_ALL)",
        "errorReportingQuiet": "Más silencioso (sin AVISO/OBSECUTIVO)",
        "errorReportingMinimal": "Errores/advertencias/solo análisis",
        "errorReportingOff": "Apagado (0)",
        "openBasedirNone": "Sin restricciones (vacío)",
        "openBasedirVarWww": "/var/www",
        "openBasedirHome": "/home",
        "openBasedirWwwTmp": "/var/www y /tmp",
        "errorLogDefault": "Valor predeterminado del sistema (vacío)",
        "errorLogPhp": "/var/log/php/error.log",
        "errorLogFpm": "Ruta de registro de FPM",
        "errorLogSyslog": "registro del sistema"
      },
      "disableFn": {
        "groups": {
          "process": "Ejecución de procesos",
          "dynamic": "Carga dinámica",
          "info": "Divulgación de información",
          "filesystem": "Sistema de archivos",
          "network": "Red / otro"
        },
        "extraHint": "No en el catálogo (host existente)",
        "customPlaceholder": "Otro nombre de función…",
        "searchPlaceholder": "Funciones de búsqueda…",
        "emptyText": "No hay coincidencias"
      }
    },
    "pluginsAvailableTitle": "Disponible para instalar",
    "pluginsInstalledTitle": "Instalado en el host",
    "pluginsInstalledHint": "Detectado en RUTA; excluido de la selección de instalación. Desinstalar es el mejor esfuerzo.",
    "pluginsAllInstalled": "Todas las herramientas del catálogo ya están en este host.",
    "pluginStatusInstalled": "Instalado",
    "pluginUninstall": "Desinstalar",
    "pluginUninstallConfirmTitle": "¿Desinstalar herramienta?",
    "pluginUninstallConfirm": "Elimine \"{{name}}\" de este host (a través de npm/apt/pip, según corresponda). Detenga los servicios que dependen de él primero.",
    "pluginUninstalled": "Desinstalado {{name}}",
    "pluginUninstallFailed": "No se pudo desinstalar {{name}}",
    "pluginUninstallBlocked": "El panel no se puede desinstalar (necesita root + EJECUTAR)",
    "phpExtAlreadyOnHost": "Extensiones instaladas",
    "pluginsInstallSelected": "Instalar seleccionado ({{n}})",
    "pluginInstallOk": "{{n}} herramienta(s) instalada(s)",
    "pluginInstallFailed": "Error al instalar la herramienta",
    "phpExtUninstallHint": "Desinstalar extensiones opcionales (apt remove; nunca FPM/CLI)",
    "phpExtUninstallConfirmTitle": "¿Desinstalar la extensión PHP?",
    "phpExtUninstallConfirm": "Probablemente eliminará “{{pkg}}” ({{name}}). Core FPM/CLI nunca se elimina.",
    "phpExtOpsTitle": "Resultado de las operaciones de extensión",
    "pluginsOpsTitle": "Resultado de operaciones de herramientas",
    "pluginBatchUninstall": "Desinstalar seleccionado ({{n}})",
    "pluginBatchUninstallConfirm": "¿Desinstalar {{n}} herramientas seleccionadas?",
    "pluginBatchUninstalled": "Herramientas {{n}} desinstaladas",
    "pluginBatchLabel": "herramientas seleccionadas",
    "addonsInstallAbove": "Utilice \"Instalar seleccionado...\" arriba para herramientas/extensiones. Este botón solo instala/confirma la versión del tiempo de ejecución.",
    "phpExtInstallSelected": "Instalar extensiones seleccionadas ({{n}})",
    "phpExtInstallNote": "Seleccione las extensiones y luego Instalar seleccionadas. PHP por primera vez utiliza Instalar PHP a continuación (core+ext); cuando está instalado, solo se muestra el botón de extensiones.",
    "phpExtInstallNoteInstalled": "Seleccione las extensiones y luego Instalar seleccionadas. Esta versión ya está en el host; no es necesario reinstalar el tiempo de ejecución.",
    "phpExtInstallNoteFirst": "PHP {{version}} no está instalado: seleccione extensiones y luego use Instalar PHP {{version}} a continuación (un botón de instalación, núcleo+extensiones).",
    "installPhpWithExt": "Instalar PHP {{version}} (con extensiones seleccionadas)",
    "installLogTitle": "Registro de instalación (en vivo)",
    "installLogStreaming": "Transmisión…",
    "installLogDone": "Finalizado",
    "installLogWaiting": "Esperando la salida del servidor...",
    "activeDefault": "por defecto",
    "switchDefaultBtn": "Establecer el host predeterminado en {{version}}",
    "switchDefaultHint": "Esta versión está instalada pero no es la predeterminada activa.",
    "installedNotActive": "{{version}} instalado (no predeterminado)",
    "multiVersionHint": "Go/Rust mantiene múltiples versiones: instale las que faltan, luego cambie el valor predeterminado por PATH",
    "tabProcesses": "Procesos",
    "pm2": {
      "title": "flota PM2",
      "desc": "Vista de solo lectura de pm2 jlist (usuario del panel PM2_HOME). Live SSE se actualiza cada 2 segundos.",
      "glossary": "PM2 = gestor de procesos; SSE = transmisión en vivo.",
      "live": "Vivir",
      "installed": "PM2 instalado",
      "version": "versión pm2",
      "path": "ruta pm2",
      "counts": "Procesos",
      "countsValue": "{{n}} total · {{run}} en línea · {{stop}} detenido · {{err}} con error",
      "updatedAt": "Última actualización",
      "notInstalled": "PM2 no está en PATH.",
      "installHint": "Instale el complemento complementario en Descripción general",
      "tableTitle": "Lista de procesos",
      "yskOnly": "Solo aplicaciones YSK (ysk-*)",
      "filterPh": "Nombre del filtro/script/pid…",
      "emptyTitle": "PM2 no disponible",
      "emptyDesc": "Instale el complemento pm2 para Node y luego actualice.",
      "noApps": "Sin procesos",
      "noAppsDesc": "No hay aplicaciones PM2 para el usuario del panel",
      "streamLog": "Registro de ticks en vivo",
      "streamLogDesc": "Una línea por tick SSE (no procesa la salida estándar).",
      "col": {
        "name": "Nombre",
        "status": "Estado",
        "mem": "Memoria",
        "restarts": "Se reinicia",
        "uptime": "tiempo de actividad",
        "mode": "Modo",
        "script": "Guion",
        "interpreter": "Intérprete",
        "user": "Usuario",
        "unit": "Unidad",
        "runtime": "Tiempo de ejecución",
        "pid": "PID"
      },
      "projectsTitle": "Procesos del proyecto YSK",
      "projectsDesc": "unidades systemd para proyectos de panel (ruta de implementación predeterminada, no PM2).",
      "projectsCount": "Proyectos YSK",
      "noProjects": "Sin proyectos",
      "noProjectsDesc": "No hay proyectos de nodo/bun en el panel o usuario del sistema operativo no aprovisionado.",
      "pm2OnlyDesc": "Solo las aplicaciones iniciadas con PM2 bajo el usuario del panel. Las implementaciones de systemd aparecen arriba.",
      "startupTitle": "Comenzar al arrancar",
      "startupDesc": "Registre PM2 para que los procesos regresen después del reinicio.",
      "systemdActionsHint": "Las acciones de systemd necesitan root y YSK_EXECUTE.",
      "startupOk": "Inicio registrado. {{notes}}",
      "startupFail": "No se pudo registrar el inicio. {{notes}}",
      "actionOk": "{{action}} {{name}} — {{notes}}",
      "actionFail": "No se pudo {{action}} {{name}}. {{notes}}",
      "startupReady": "Listo",
      "startupReadyYes": "Sí",
      "startupReadyNo": "No",
      "startupUnit": "Unidad",
      "startupDump": "Vertedero",
      "startupInstall": "Instalar inicio",
      "startupSave": "Guardar lista de procesos",
      "actRestart": "Reanudar",
      "actStop": "Detener",
      "actReload": "Recargar",
      "pm2ActionsHint": "Las acciones de PM2 se aplican únicamente a la lista de procesos del usuario del panel.",
      "noteUnparsed": "No se pudo analizar la lista de PM2 (salida vacía o inesperada).",
      "notePanelUserOnly": "La lista PM2 es solo para el usuario del proceso del panel.",
      "noteProjectUnits": "{{n}} Unidad(es) del proyecto YSK enumeradas"
    },
    "recordedInstalled": "Grabado {{v}}",
    "remoteSourceSuffix": "({{source}})",
    "nodePathYskMissingTitle": "La ruta del nodo administrado no está lista",
    "nodePathYskMissing": "El nodo administrado por YSK para la versión {{version}} no está listo. Vuelva a sondear o reinstale.",
    "managedPathMissingTitle": "La ruta administrada {{name}} no está lista",
    "managedPathMissing": "La versión {{name}} administrada por YSK para la versión {{version}} no está lista. Vuelva a sondear o reinstale.",
    "nodePathUnsafeTitle": "La ruta del nodo no es segura",
    "nodePathUnsafe": "La ruta {{path}} está fuera del árbol administrado; Las implementaciones del proyecto pueden fallar.",
    "recordedButProbeEmpty": "El panel registró la instalación {{v}}, pero la sonda del host no encontró ningún binario. No instalado: vuelva a probar o reinstale.",
    "installedLabel": "Instalado",
    "installedHint": "Resultado de la sonda del host, no el registro del plano de control",
    "targetHint": "Versión que esta página instalará o anclará",
    "panelDefaultHint": "Los proyectos nuevos prefieren el panel predeterminado {{version}} (la CLI del host puede diferir).",
    "rebuildFromHost": "Reconstruir registro desde el host",
    "rebuiltFromHost": "Registro actualizado desde la sonda del host",
    "tabTuning": "Sintonización",
    "versionPlaceholder": "El último,",
    "pluginsBundleWithRuntime": "Herramientas「Instalar tiempo de ejecución」Instalar（Instalar）。",
    "tabSoftware": "Software",
    "overviewSoftwareHint": "Instale versiones, establezca el host predeterminado y desinstale del",
    "versionReadyTitle": "{{name}} {{version}} está listo",
    "versionReadyHint": "Puede configurar el host predeterminado o desinstalarlo desde esta pestaña.",
    "softwareVersionTitle": "Versión {{version}}",
    "setHostDefault": "Establecer como host predeterminado",
    "alreadyHostDefault": "{{version}} es el valor predeterminado del host",
    "setHostDefaultConfirmTitle": "¿Establecer el host predeterminado en {{version}}?",
    "setHostDefaultConfirm": "La CLI del sistema (nodo/go/…) apuntará a {{version}}. Los proyectos que fijan una versión no se modifican.",
    "hostDefaultUnsupported": "Este tiempo de ejecución no admite el cambio de host predeterminado en el panel. Utilice un pin de instalación o de nivel de proyecto.",
    "versionInventory": "Inventario de versiones",
    "versionInventoryDesc": "Todas las versiones compatibles con paneles. Seleccione una fila para instalar o configurar como predeterminada.",
    "selectToInstall": "Seleccionar",
    "advancedFeatureUninstall": "Avanzado: eliminar toda la pila {{name}}...",
    "advancedFeatureUninstallHint": "Elimina todas las versiones {{name}} administradas por el panel (y acompañantes como PM2 para Node), con vista previa de impacto y doble confirmación. Prefiere eliminar las versiones individuales anteriores cuando sea posible.",
    "probeReadonly": "Sonda de solo lectura del host",
    "uninstallVersion": "Desinstalar {{version}}",
    "uninstallVersionTitle": "¿Desinstalar {{version}}?",
    "uninstallVersionConfirm": "Elimine el {{name}} {{version}} administrado de este host (ruta de instalación de YSK o cadena de herramientas de oxidación). Si era el valor predeterminado del host, se borrarán los enlaces simbólicos de CLI para ese tiempo de ejecución. Los proyectos que fijan otra versión no se modifican.",
    "uninstallVersionDone": "Desinstalado {{version}}",
    "uninstallVersionUnsupported": "La desinstalación por versión aún no está disponible para este motor de ejecución.",
    "setPanelDefault": "Establecer como panel predeterminado",
    "alreadyPanelDefault": "Valor predeterminado del panel · {{version}}",
    "panelDefaultSaved": "El valor predeterminado del panel es {{version}}",
    "panelDefaultExplain": "Valor predeterminado del panel = versión preferida para nuevos sitios/proyectos. Valor predeterminado del host = CLI del sistema (php/python/node…).",
    "stackReadyTitle": "{{name}} pila lista",
    "softwareIntro": "Administre las versiones instaladas, la CLI predeterminada del host y la versión preferida para nuevos proyectos.",
    "panelDefaultLabel": "Valor predeterminado del panel",
    "panelDefaultNone": "No establecido",
    "versionsTitle": "Versiones",
    "versionsDesc": "Seleccione una versión. Instale, configure la CLI del host o configure el panel predeterminado desde la fila.",
    "roleHost": "Anfitrión",
    "rolePanel": "Panel",
    "rowUninstall": "Eliminar esta versión",
    "moreActions": "Más acciones",
    "selectedVersion": "Seleccionado · {{version}}",
    "selectedInstalledDesc": "Herramientas complementarias a continuación. Elimine esta versión solo si ya no la necesita.",
    "selectedMissingDesc": "Instale esta versión en el host. Se pueden agregar herramientas complementarias después de la instalación.",
    "path": "Camino",
    "fullVersion": "Versión completa",
    "useListForDefaults": "Para cambiar el valor predeterminado del host o del panel, o eliminar esta versión, utilice la lista anterior.",
    "alreadyHostDefaultShort": "Valor predeterminado del host",
    "installRecordedCta": "Instalar grabado {{v}}",
    "needsInstall": "hay que instalar",
    "needsInstallHint": "No está en este anfitrión. Instálelo o elija una versión instalada.",
    "unitBytes": "bytes",
    "headerSizeKb": "{{n}}KB",
    "phpIniChipEmpty": "No cargado — abra la pestaña php.ini",
    "phpFpmService": "PHP-FPM",
    "phpFpmServiceDesc": "Iniciar, detener, recargar o reiniciar la unidad PHP-FPM",
    "rustupDefaultMissingTitle": "No hay toolchain predeterminada de rustup",
    "rustupDefaultMissing": "rustup no tiene toolchain predeterminada. Fije stable en la pestaña Software.",
    "rustupDefaultMissingShort": "Sin cadena de herramientas predeterminada",
    "rustupSetDefaultHint": "Establecer cadena de herramientas predeterminada",
    "uninstalledCountHint": "{{n}} versión(es) no están en este anfitrión"
  },
  "search": {
    "placeholder": "Buscar páginas y recursos...",
    "aria": "búsqueda global",
    "results": "Resultados de la búsqueda",
    "loading": "Búsqueda…",
    "noResults": "No hay coincidencias",
    "kinds": {
      "page": "paginas",
      "project": "Proyectos",
      "email": "Correo electrónico",
      "mailbox": "Buzones",
      "ssl": "SSL",
      "dns": "DNS",
      "nginx": "nginx",
      "share": "Acciones",
      "ftp": "FTP",
      "mysql": "MySQL",
      "postgres": "PostgreSQL",
      "redis": "Redis",
      "cron": "cron",
      "user": "Usuarios",
      "other": "Otro"
    },
    "alias": {
      "ssl": "certificado certificado certificados",
      "projects": "sitios del proyecto"
    }
  },
  "security": {
    "title": "Seguridad y aprobaciones",
    "allowlist": "Lista de herramientas permitidas (predeterminada de solo lectura; las de alto riesgo necesitan aprobación humana)",
    "llmUntrusted": "La salida de LLM siempre no es confiable y nunca debe ejecutarse directamente",
    "pending": "Aprobaciones pendientes",
    "runSysInfo": "Ejecute sys.info",
    "none": "No hay aprobaciones pendientes",
    "pillPending": "{{count}} pendiente",
    "pillReady": "Listo",
    "pill2faOff": "2FA desactivado",
    "stat2fa": "2FA",
    "statApi": "API",
    "statApiSessions": "Sesiones API",
    "revokeOtherTitle": "Cerrar sesión {{n}} otras sesiones",
    "statSsh": "SSH",
    "statSshValue": "{{keys}} llaves · {{auth}} autorizado",
    "statSshHint": "Identidades salientes/claves de inicio de sesión autorizadas",
    "statPending": "Pendiente",
    "on": "En",
    "off": "Apagado",
    "output": "Producción",
    "tabAccount": "mi seguridad",
    "tabApiKeys": "Claves API",
    "tabSsh": "SSH",
    "tabApprovals": "Aprobaciones",
    "tabAllowlist": "Herramientas del agente",
    "apiTokenOnce": "Token API (se muestra una vez):",
    "copiedToken": "Token copiado",
    "totpTitle": "Dos factores (TOTP)",
    "totpStatus": "Estado:",
    "totpEnabled": "Activado",
    "totpEnrolledUnconfirmed": "En progreso: escanear y confirmar",
    "totpNotSet": "No establecido",
    "totpLead": "El inicio de sesión requiere un código de aplicación de 6 dígitos.",
    "totpWhy1": "Las contraseñas robadas por sí solas no pueden iniciar sesión sin el código de la aplicación",
    "totpWhy2": "Las acciones sensibles pueden volver a solicitar TOTP (incremento)",
    "totpWhy3": "Funciona con Google Authenticator, Authy, NordPass, 1Password y más",
    "totpAppsHint": "Aplicaciones sugeridas: Google Authenticator, Authy, Microsoft Authenticator, NordPass, 1Password",
    "totpStepsLabel": "Pasos de configuración",
    "totpStepReauth": "Verificar contraseña",
    "totpStepScan": "Escanear QR / ingresar clave",
    "totpStepConfirm": "Confirmar código de 6 dígitos",
    "totpStepBackup": "Guardar códigos de recuperación",
    "totpScanTitle": "Escanear código QR",
    "totpScanHint": "Abra su aplicación de autenticación → Agregar cuenta → Escanee este QR.",
    "totpManualTitle": "O ingrese la clave manualmente",
    "totpManualHint": "Si no puede escanear, elija la entrada manual en la aplicación y pegue este secreto Base32.",
    "totpShowOtpauth": "Mostrar otpauth:// URL (avanzado)",
    "totpQrAlt": "Código QR de configuración TOTP",
    "totpQrFailed": "No se pudo representar el QR: use la clave secreta a continuación",
    "totpSecretCopied": "secreto copiado",
    "hideSecret": "Ocultar secreto",
    "showSecret": "Mostrar secreto",
    "totpEnabledDesc": "Activado.",
    "totpRecoveryRemaining": "{{n}} quedan códigos de recuperación",
    "totpResetSummary": "Restablecer o desactivar 2FA...",
    "totpResetHint": "Restablecer emite un nuevo QR/secreto (las entradas antiguas de la aplicación dejan de funcionar)",
    "totpDisableCodeHint": "Código de aplicación de 6 dígitos o código de recuperación",
    "disable2fa": "Desactivar 2FA",
    "totpDisabledOk": "Autenticación de dos factores desactivada",
    "reauthPassword": "Escriba la contraseña otra vez",
    "reauthPasswordHint": "Iniciar/restablecer 2FA requiere contraseña nuevamente (protección de sesión robada)",
    "reauthPasswordRequired": "Ingrese su contraseña de inicio de sesión primero",
    "needCurrentPassword": "Introduzca primero la contraseña actual",
    "passwordMin8": "La nueva contraseña debe tener al menos 8 caracteres",
    "totpSecretGenerated": "Secreto listo: escanea el QR o copia la clave, luego ingresa el código de 6 dígitos de la aplicación",
    "reset2fa": "Restablecer 2FA",
    "start2fa": "Configurar 2FA",
    "secretLabel": "Secreto:",
    "confirmCode": "Código de 6 dígitos de la aplicación",
    "confirmCodeHint": "Después de escanear, ingrese los 6 dígitos que se muestran actualmente en su autenticador.",
    "confirmCodeInvalid": "Ingrese un código de verificación de 6 dígitos",
    "totpEnabledSaveCodes": "2FA habilitado: guarde los códigos de recuperación a continuación ahora (se muestran una vez)",
    "confirmEnable": "Confirmar y habilitar",
    "recoveryCodesHint": "Los códigos de recuperación se muestran solo una vez",
    "copiedRecoveryCodes": "Códigos de recuperación copiados",
    "downloadRecovery": "Descargar .txt",
    "recoveryDownloaded": "Archivo de códigos de recuperación descargado",
    "copyAll": "Copiar todo",
    "savedClose": "Los he guardado - listo",
    "sessionsTitle": "Sesiones",
    "sessionsDesc": "",
    "revokeOtherSessions": "Cerrar sesión en otros dispositivos",
    "revokedOtherSessions": "Cerrado sesión {{count}} otras sesiones",
    "noSessions": "No hay sesiones activas",
    "currentSession": "este dispositivo",
    "revoke": "desconectar",
    "passkeyTitle": "Clave de acceso/WebAuthn",
    "passkeyDesc": "",
    "passkeyRegistered": "Clave de acceso registrada",
    "webauthnFailed": "WebAuthn falló",
    "webauthnUnsupported": "Esta página no tiene API WebAuthn. En Brave/Chrome/Firefox evita los modos restringidos; use un administrador de contraseñas si es necesario y abra el panel en un dominio a través de HTTPS.",
    "webauthnInsecureContext": "Esta página no es un contexto seguro ({{origin}}). Los navegadores requieren HTTPS o localhost para las claves de acceso, no relacionadas con Brave/NordPass. Abra https://su-dominio en su lugar.",
    "webauthnIpHost": "Abriste el panel vía IP ({{origin}}). WebAuthn prohíbe IP como ID de RP, por lo que Brave/NordPass fallará. Vincula un dominio + HTTPS (por ejemplo, https://panel.example.com) y vuelve a intentarlo.",
    "webauthnEnvOk": "Clave de acceso lista ({{origin}})",
    "webauthnEnvCurrent": "Página actual: {{origin}}",
    "webauthnCancelled": "Cancelado o agotado el tiempo. Intentar otra vez.",
    "webauthnUnavailableHint": "La clave de acceso necesita dominio HTTPS +.",
    "registerPasskey": "Registrar clave de acceso",
    "noPasskey": "Sin clave de acceso",
    "passkeyVerifyOk": "Clave de acceso verificada (paso realizado)",
    "verifyFailed": "La verificación falló",
    "verifyWithPasskey": "Verificar con clave de acceso (paso a paso)",
    "passkeyHint": "Para un paso adelante de alto riesgo; necesita dominio HTTPS +.",
    "devicesTitle": "Dispositivos/copia de seguridad",
    "devicesDesc": "",
    "viewTrustedDevices": "Ver dispositivos confiables",
    "trustedDevicesCount": "Dispositivos confiables: {{count}}",
    "revokeAllDevices": "Revocar todos los dispositivos",
    "revokedAllDevices": "Todos los dispositivos de confianza revocados",
    "export2faBackup": "Exportar copia de seguridad cifrada 2FA",
    "fail2banSnippetMsg": "Fragmentos de fail2ban: {{written}} — {{notes}}",
    "generatefail2ban": "Generar fragmentos de fail2ban",
    "generateFail2ban": "Generar fragmentos fail2ban",
    "adminPolicyTitle": "Política de administrador 2FA",
    "adminPolicyDesc": "",
    "requireAdmin2fa": "Requerir administrador 2FA",
    "strictAdmin2fa": "Estricto: bloquear el inicio de sesión sin 2FA",
    "confirmTotpPolicy": "Confirmar TOTP (al cambiar de política)",
    "confirmTotpPolicyHint": "Es necesario intensificar las políticas propicias",
    "totp6digitPlaceholder": "código de 6 dígitos",
    "policyUpdated": "Política de seguridad actualizada",
    "savePolicy": "Guardar política",
    "recentProbe": "Sondeo reciente",
    "apiKeysTitle": "Claves de acceso API",
    "apiKeysDesc": "",
    "createKey": "+ Crear clave",
    "colName": "Nombre",
    "colPrefix": "Prefijo",
    "colCreated": "Creado",
    "apiKeysEmpty": "Aún no hay claves API",
    "apiKeysEmptyHint": "Crear desde la barra de herramientas; luego llame a la API con el token de portador",
    "approve": "Aprobar",
    "allowlistTitle": "Herramientas del agente ({{count}})",
    "allowlistEmpty": "No hay herramientas en el catálogo",
    "totpStatusLoadFailed": "No se pudo cargar el estado de 2FA",
    "createApiKeyTitle": "Crear clave API",
    "createApiKeyDesc": "El token completo se muestra solo una vez después de la creación.",
    "createKeyBtn": "Crear clave",
    "apiKeyNameHint": "Fácil de reconocer, p. CI/secuencia de comandos de respaldo",
    "apiKeyScope": "Alcance",
    "apiKeyScopeHint": "lectura = solo lectura (sin mutación completa)",
    "scopeFull": "completo (API completa)",
    "scopeRead": "leer (solo lectura)",
    "apiKey2faHint": "Si 2FA está activado, la creación de una clave requiere un código de verificación (paso a paso).",
    "apiKeyCreated": "Clave API creada",
    "export2faBackupTitle": "Exportar copia de seguridad 2FA",
    "createApiKeyStepUp": "Crear clave API · paso a paso",
    "enterTotpCode": "Ingrese el código TOTP actual",
    "export": "Exportar",
    "backupCopied": "Copia de seguridad cifrada copiada al portapapeles (almacenar sin conexión)",
    "digit6Placeholder": "código de 6 dígitos",
    "ssh": {
      "workspaceTitle": "Espacio de trabajo SSH",
      "workspaceDesc": "Elige un trabajo primero",
      "subOutbound": "ID salientes",
      "subOutboundHint": "Claves privadas para panel/proyecto saliente",
      "subLogin": "autenticación de inicio de sesión",
      "subLoginHint": "¿Quién puede usar SFTP/SSH?",
      "sub2fa": "Iniciar sesión 2FA",
      "sub2faHint": "SSH TOTP (≠ panel 2FA)",
      "subSshd": "sistema sshd",
      "subSshdHint": "Configuración SFTP del usuario del proyecto",
      "jobOutboundTitle": "Conectar saliente",
      "jobOutboundDesc": "Crear claves de identidad salientes · panel peer/proyecto git",
      "jobLoginTitle": "Permitir inicio de sesión entrante",
      "jobLoginDesc": "Registrar claves públicas para el proyecto de inicio · claves_autorizadas",
      "job2faTitle": "El inicio de sesión SSH necesita 2FA",
      "job2faDesc": "TOTP de usuario de Linux (separado del panel 2FA)",
      "jobSshdTitle": "Habilitar sistema SFTP",
      "jobSshdDesc": "Instalar fragmentos de sshd Match (usuarios del proyecto)",
      "purposePanel": "Panel a otros hosts",
      "purposeUser": "Usuario del proyecto saliente",
      "purposeUnbound": "Propósito no establecido",
      "purposePanelHint": "Par del clúster, scp de respaldo, sondas remotas",
      "purposeUserHint": "Usuario del proyecto Linux git/scp/scripts",
      "purposeDefaultHint": "Enlazar más tarde",
      "statusStored": "almacenado",
      "statusInstalled": "En disco",
      "statusVerified": "Verificado",
      "statusMissing": "Falta en el disco",
      "statusRetired": "Jubilado",
      "statusError": "Error",
      "actionInstall": "escribir en el disco",
      "actionTest": "Conexión de prueba",
      "actionCopyPub": "Copiar clave pública",
      "pipelineStored": "almacenado",
      "pipelineInstalled": "En disco",
      "pipelineVerified": "Verificado",
      "progressAria": "Progreso",
      "loginTitle": "Autorización de inicio de sesión (claves públicas)",
      "loginDesc": "¿Quién puede entrar?",
      "loginAdd": "Agregar clave pública de inicio de sesión",
      "loginEmpty": "Aún no hay claves públicas de inicio de sesión",
      "loginEmptyHint": "Pegue una clave pública de CI o computadora portátil, vincúlese a un usuario del proyecto para SFTP/SSH (necesita un fragmento de sshd)",
      "loginAddFirst": "Agregar la primera clave pública de inicio de sesión",
      "boundProject": "Proyecto",
      "unboundProject": "Ningún proyecto",
      "loginRemoved": "Clave pública eliminada",
      "remove": "Eliminar",
      "loginModalTitle": "Autorizar una clave pública",
      "loginModalDesc": "Después de seleccionar un proyecto, la clave se escribe en ese usuario de Linux home/",
      "addAuth": "Agregar autorización",
      "selectOption": "- Seleccionar -",
      "publicKey": "Clave pública",
      "publicKeyHint": "Pegar línea completa, p.e. ssh-ed25519 AAAA… comentario",
      "commentOptional": "Comentario (opcional)",
      "commentPlaceholder": "computadora portátil / CI",
      "loginNeedProject": "Primero crea un proyecto. El enlace funciona mejor cuando el usuario del sistema está listo.",
      "loginNeedPub": "Seleccione un proyecto y pegue una clave pública que comience con ssh-",
      "loginNoProjects": "Sin proyectos. Autorice a un usuario de Linux existente (root/tester) a continuación. Escribir /root/.ssh necesita YSK_EXECUTE=1.",
      "loginLinuxHint": "Se utiliza cuando no hay proyecto. Ejemplo: root o tester.",
      "loginAdded": "Agregado",
      "sshdTitle": "Usuario del proyecto SFTP (sshd)",
      "sshdDesc": "Permitir que ysks_* / ysk_* proyecten usuarios SFTP con claves públicas",
      "sshdStep1": "Agregue claves públicas en autenticación de inicio de sesión para proyectos",
      "sshdStep2": "Obtenga una vista previa e instale fragmentos de coincidencia del sistema aquí",
      "sshdStep3": "La instalación necesita derechos de ejecución del sistema; intentará recargar sshd",
      "sshdPreview": "Vista previa de configuración",
      "loadingSnippet": "(Cargando…)",
      "reloadedCopied": "Recargado; fragmento copiado al portapapeles",
      "reloadAndCopy": "Recargar y copiar",
      "installedOk": "Instalado",
      "installToSystem": "Instalar en el sistema",
      "sshdManualHint": "Si la ejecución está bloqueada, ejecute el plano de control con privilegios o coloque el fragmento debajo",
      "outboundTitle": "Claves de identidad salientes",
      "outboundDesc": "Claves privadas cifradas en el plano de control",
      "outboundAdd": "Agregar identidad saliente",
      "filterActive": "Activo",
      "filterPanel": "Panel",
      "filterUser": "Usuario del proyecto",
      "filterRetired": "Jubilado",
      "filterAll": "Todo",
      "searchIdentity": "Buscar nombre o huella digital…",
      "searchIdentityAria": "Buscar identidades",
      "identityCount": "{{count}} identidades",
      "identityList": "Identidades",
      "outboundEmpty": "Aún no hay identidades salientes",
      "outboundEmptyFilter": "No hay elementos coincidentes",
      "outboundEmptyHint": "Cree una clave en ~30 segundos: elija el propósito → nombre → listo. Úselo para peer/backup/git.",
      "outboundEmptyFilterHint": "Intente cambiar los filtros o borrar la búsqueda",
      "outboundAddFirst": "Agregar la primera identidad saliente",
      "userPrefix": "Usuario {{user}}",
      "createFailed": "Error al crear",
      "identityCreatedOnce": "Identidad creada (la clave privada se muestra una vez)",
      "writtenToDisk": "Escrito en el disco",
      "cannotWriteNeedExecute": "No se puede escribir en el sistema: habilitar ejecución (YSK_EXECUTE)",
      "notDone": "No completado",
      "installFailed": "La instalación falló",
      "testPassed": "Conexión correcta",
      "testFailed": "La conexión falló",
      "testError": "Prueba fallida",
      "copiedPubPaste": "Clave pública copiada: péguela en las claves_autorizadas del par o en la clave de implementación de Git",
      "deletedNamed": "Eliminado \"{{name}}\"",
      "rotated": "Rotado: clave antigua retirada, clave nueva creada",
      "detailStatus": "Estado",
      "detailPurpose": "Objetivo",
      "detailLinuxUser": "usuario de linux",
      "detailDiskPath": "Ruta del disco",
      "detailLastTest": "última prueba",
      "suggestFlow": "Sugerido: almacenar → escribir disco → poner clave pública en el par → probar conexión",
      "suggestFlowPrefix": "Sugerido: almacenar → escribir disco → poner",
      "suggestFlowSuffix": "en peer → prueba de conexión",
      "publicKeyStrong": "clave pública",
      "copiedPub": "Clave pública copiada",
      "allowLocalLogin": "Permitir el inicio de sesión local con esta clave",
      "localLoginOk": "Clave pública agregada a la autorización de inicio de sesión local",
      "testingConnection": "Probando conexión…",
      "rotateKey": "Girar clave",
      "wizStepPurpose": "¿Para qué es esta clave?",
      "wizStepProject": "¿Qué proyecto?",
      "wizStepPanelConfirm": "Confirmar salida del panel",
      "wizStepName": "Nombre y opciones",
      "wizStepPurposeDesc": "Elija el propósito para alinear la lista y la ruta de instalación",
      "wizStepProjectDesc": "La clave se vincula al usuario de Linux y al hogar de ese proyecto.",
      "wizStepPanelDesc": "La clave privada permanece en secretos del plano de control para scp/ssh para otros hosts",
      "wizStepNameDesc": "Nombre para reconocimiento; las opciones avanzadas pueden esperar",
      "prevStep": "Atrás",
      "nextStep": "Próximo",
      "createIdentity": "Crear identidad",
      "purposePanelTitle": "Panel a otros hosts",
      "purposePanelSub": "Pares de clúster, copia de seguridad remota, sondas",
      "purposePanelRec": "Recomendado para la mayoría de las operaciones administrativas",
      "purposeUserTitle": "Usuario del proyecto saliente",
      "purposeUserSub": "git pull, guión del proyecto scp",
      "purposeUserPath": "Escribe proyecto home/.ssh",
      "selectProject": "— Seleccionar proyecto —",
      "noProjectsHint": "Aún no hay proyectos: primero cree un proyecto y un usuario del sistema",
      "afterCreatePub": "Después de crear, coloque el",
      "afterCreatePubMid": "en el host de destino",
      "afterCreatePubEnd": "y luego use Probar conexión.",
      "privKeyStayLocal": "La clave privada permanece en este plano de control; nunca en listas o registros.",
      "displayName": "Nombre para mostrar",
      "displayNameHint": "p.ej. producción entre pares, myapp-git",
      "algorithm": "Algoritmo",
      "algoSuggested": "Recomendado",
      "algoLegacy": "Sistemas heredados",
      "installImmediately": "Escribir en el disco inmediatamente después de crear",
      "installImmediatelyHint": "(necesita ejecución del sistema; de lo contrario, se le indicará que no se puede aplicar)",
      "savePrivTitle": "Guardar clave privada ahora",
      "savePrivDesc": "Después del cierre, la clave privada completa no se volverá a mostrar",
      "copiedPriv": "Clave privada copiada",
      "copyPriv": "Copiar clave privada",
      "nextInstallDisk": "Siguiente: escribir en el disco",
      "savedCloseBtn": "Guardado - cerrar",
      "privKeyOnce": "Clave privada (solo esta vez)",
      "privSavedConfirm": "Guardé la clave privada de forma segura (administrador de contraseñas/copia de seguridad sin conexión)",
      "testConnTitle": "Conexión de prueba",
      "testConnDesc": "Pruebe ssh... true con esta identidad. El éxito sólo significa que este objetivo es alcanzable.",
      "startTest": "Iniciar prueba",
      "testTarget": "Objetivo",
      "testTargetHint": "Formatear usuario@host o usuario@host:puerto",
      "deleteIdentityTitle": "¿Eliminar identidad?",
      "rotateKeyTitle": "¿Girar clave?",
      "deleteIdentityDesc": "Elimine \"{{name}}\" e intente eliminar el archivo de clave privada en el disco",
      "rotateKeyDesc": "\"{{name}}\" se retirará y se creará una nueva clave. Actualizar las claves_autorizadas del par.",
      "rotate": "Girar",
      "enrollStatusSecret": "Secreto generado",
      "enrollStatusConfirmed": "Aplicación confirmada",
      "enrollStatusWritten": "Escrito a casa",
      "enrollStatusRetired": "Jubilado",
      "needProjectOrUser": "Seleccione un proyecto o ingrese un nombre de usuario de Linux",
      "enrollFailed": "La inscripción falló",
      "totpGenerated": "TOTP solo SSH generado (separado del panel 2FA a menos que sincronice)",
      "confirmed": "Confirmado",
      "codeWrong": "código incorrecto",
      "gaWritten": "Escribió .google_authenticator",
      "needExecute": "Necesita que el sistema ejecute habilitado",
      "ssh2faTitle": "Segundo factor de inicio de sesión SSH",
      "ssh2faDesc": "Protege el inicio de sesión ssh para usuarios de Linux",
      "ssh2faStep1": "Inscribir TOTP para un usuario de Linux (escanear QR)",
      "ssh2faStep2": "Confirmar el código de 6 dígitos de la aplicación",
      "ssh2faStep3": "Escribir archivo de inicio",
      "ssh2faStep4": "Instale el módulo PAM y combine fragmentos (abajo)",
      "pkgLabel": "Paquete {{name}}",
      "pkgStatus": "Paquete {{status}}",
      "pamStatus": "PAM {{status}}",
      "kbdStatus": "sshd teclado interactivo {{status}}",
      "light": {
        "green": "OK",
        "yellow": "controlar",
        "red": "desaparecido"
      },
      "enrollForUser": "Inscribir SSH 2FA para el usuario",
      "ssh2faEmpty": "Ningún usuario de Linux tiene SSH 2FA todavía",
      "ssh2faEmptyHint": "Prefiere iniciar sesión con clave primero;",
      "startEnroll": "Iniciar inscripción",
      "fromPanelBadge": "Igual que el panel",
      "enterCode": "Introduce el código",
      "rewriteHome": "Reescribir el archivo de inicio",
      "writeHome": "escribir a casa",
      "retiredOk": "Jubilado",
      "retire": "Retirarse",
      "pamTitle": "Sistema: PAM / sshd (manual o aplicar cuando esté permitido)",
      "pamDesc": "nullok evita bloquear usuarios sin archivos. Se requiere archivo escrito ≠ TOTP.",
      "pamSnippet": "Fragmento de PAM (combinar en /etc/pam.d/sshd)",
      "sshdHint": "sugerencias sshd",
      "rescueUsers": "Rescatar usuarios (separados por comas, nunca en coincidencia estricta)",
      "strictPreview": "Vista previa de coincidencia estricta (clave pública+TOTP, contraseña desactivada)",
      "copiedPam": "Fragmento de PAM copiado",
      "copyPam": "Copiar PAM",
      "applyStrict": "Aplicar estricto al sistema",
      "pamPkgHint": "Paquete:",
      "pamRescueHint": ". Mantenga al menos un administrador de rescate sin un archivo 2FA (raíz predeterminada).",
      "enrollModalTitle": "Inscribir SSH 2FA",
      "enrollModalDesc": "Predeterminado: secreto independiente (no compartido con el panel)",
      "generateShowSecret": "Generar y mostrar secreto",
      "projectSuggested": "Proyecto (recomendado)",
      "orManualUser": "— o ingrese el usuario manualmente —",
      "linuxUser": "usuario de linux",
      "advancedSharePanel": "Avanzado: use el secreto TOTP del operador del panel actual (escriba COMPARTIDO para confirmar)",
      "setupAuthTitle": "Configurar autenticador",
      "setupAuthDesc": "Escanee o ingrese el secreto, luego confirme con el código de 6 dígitos de la aplicación",
      "later": "Más tarde",
      "confirmCodeBtn": "Confirmar código",
      "secretBase32": "Secreto (base32)",
      "copiedSecret": "secreto copiado",
      "copySecret": "Copiar secreto",
      "scanThenCode": "Si ya es escaneado, ingrese el código actual de 6 dígitos.",
      "verifyCode": "Código de verificación",
      "applyStrictStepUp": "Aplicar estricto · intensificar",
      "enterPanelTotp": "Ingrese el código TOTP del panel actual",
      "applyBtn": "Aplicar",
      "appliedOk": "Aplicado",
      "sharePanelTitle": "¿Compartir secreto TOTP del panel?",
      "sharePanelDesc": "Alto riesgo. Escribe COMPARTIDO para confirmar.",
      "confirmString": "Cadena de confirmación",
      "enableShare": "Habilitar compartir",
      "invalidPub": "Pegue una línea completa de clave pública OpenSSH (ssh-ed25519 / ssh-rsa / ecdsa…).",
      "dryRunOk": "Vista previa lista. Revise el contenido abajo.",
      "strictDryRun": "Vista previa del modo estricto",
      "errorNoDetail": "Prueba fallida (sin detalles)",
      "strictBlocked": "El paquete o PAM no está listo; no se puede aplicar Strict.",
      "privCloseWithoutAck": "Cerrado. La clave privada no se volverá a mostrar; generar uno nuevo si no lo guardaste."
    },
    "sessionsActive": "Sesiones activas",
    "sessionsOther": "Otros dispositivos",
    "sessionsHint": "",
    "noSessionsHint": "Cuando inicies sesión nuevamente, este dispositivo aparecerá aquí.",
    "sessionOtherBadge": "Otro",
    "sessionThisDevice": "estas aqui",
    "sessionDeviceOn": "{{browser}} en {{os}}",
    "sessionIpUnknown": "IP desconocida",
    "sessionLastActive": "Último activo {{when}}",
    "sessionStarted": "Iniciado sesión {{when}}",
    "sessionIdShort": "ID {{id}}…",
    "sessionJustNow": "En este momento",
    "sessionMinAgo": "{{n}} hace minutos",
    "sessionHourAgo": "Hace {{n}} horas",
    "sessionDayAgo": "Hace {{n}} d",
    "revokeSessionTitle": "¿Cerrar sesión en este dispositivo?",
    "revokeSessionDesc": "Finalice la sesión para {{device}} ({{ip}}). Ese dispositivo deberá iniciar sesión nuevamente.",
    "revokeOthersTitle": "¿Cerrar sesión en todos los demás dispositivos?",
    "revokeOthersDesc": "Esto finalizará {{count}} otras sesiones. Su navegador actual permanece conectado.",
    "sessionRevoked": "Sesión cerrada",
    "mySecurityHint": "",
    "policyTotpHint": "Política del sitio: cada administrador debe habilitar su propio 2FA (QR individual)",
    "requireUser2fa": "Exigir 2FA a todos los usuarios del panel",
    "changePasswordTitle": "Cambiar la contraseña de inicio de sesión",
    "currentPassword": "Contraseña actual",
    "newPassword": "Nueva contraseña",
    "confirmNewPassword": "Confirmar nueva contraseña",
    "passwordMismatch": "Las contraseñas nuevas no coinciden.",
    "changePassword": "Cambiar contraseña",
    "passwordChanged": "Contraseña actualizada.",
    "strictNeedsEnrolled": "Al menos un administrador debe tener 2FA antes de activar Strict.",
    "policyTotpNeedSelf": "Active 2FA en esta cuenta primero; si no, no se puede rellenar el código de confirmación.",
    "policyNoTotpHint": "This account has no 2FA yet — saving policy does not need a TOTP. Set up 2FA above if you want to require it for others.",
    "policyNeedSelf2fa": "Primero habilite 2FA en esta cuenta, luego confirme con un código TOTP",
    "revokeAllDevicesTitle": "Revocar todos los dispositivos recordados: usted y otros administradores deben verificar 2FA nuevamente",
    "sessionCli": "CLI",
    "sessionApi": "API",
    "fail2banSnippetTitle": "Fragmento fail2ban",
    "fail2banSnippetEmpty": "No se escribió ningún fragmento.",
    "trustedDevicesTitle": "Dispositivos de confianza",
    "noTrustedDevices": "No hay dispositivos de confianza.",
    "strictConfirmTitle": "¿Activar 2FA Strict?",
    "strictConfirmDesc": "Los usuarios sin 2FA no podrán iniciar sesión. Confirme que ya tiene TOTP o Passkey.",
    "revokeDevicesTitle": "¿Revocar dispositivos de confianza?",
    "revokeDevicesDesc": "Los navegadores recordados volverán a pedir 2FA.",
    "approvalsHint": "Las aprobaciones aparecen cuando una herramienta de alto riesgo necesita un segundo operador. Configure permisos en Usuarios → Permisos.",
    "allowlistReadonly": "Catálogo de herramientas del agente (solo lectura). Las capacidades se configuran en Usuarios → Permisos.",
    "colTool": "Herramienta",
    "colAllowed": "Permitido",
    "colRisk": "Riesgo",
    "colApproval": "Aprobación",
    "risk": {
      "low": "Bajo",
      "medium": "Medio",
      "high": "Alto",
      "critical": "Crítico"
    },
    "confirmDeleteApiKey": "¿Eliminar esta clave API?",
    "confirmDeleteApiKeyDesc": "“{{name}}” dejará de autenticarse. Esto no se puede deshacer."
  },
  "serviceExposure": {
    "title": "Acceso a la red",
    "manage": "Administrar acceso",
    "manageTitle": "Acceso a la red de servicios",
    "manageDesc": "Controle cómo se puede acceder a {{service}} en el firewall del host.",
    "mode": "Modo de acceso",
    "modePrivate": "Sólo locales",
    "modePublic": "Público",
    "modeRestricted": "Restringido",
    "modeUndecided": "No establecido",
    "modePublicLive": "Público (vínculo en vivo)",
    "summaryPublicLive": "Escuchando en {{bind}}: accesible en todas las interfaces. Confirmar modo de acceso; esto no es privado.",
    "modeLoading": "Cargando",
    "summaryPrivate": "No abierto en el firewall público.",
    "summaryPublic": "Abrir · {{ports}}",
    "summaryUndecided": "Modo de acceso no confirmado (valor predeterminado del catálogo: {{suggested}}).",
    "summaryNotEnforced": "El firewall está desactivado: el panel no abre ni bloquea estos puertos.",
    "roleSmtp": "Envío SMTP",
    "roleImap": "Buzón IMAP/POP3",
    "summaryRestricted": "Restringido · {{count}} fuente(s)",
    "summaryFirewallOff": "Firewall del host: {{detail}}: las reglas no se aplican hasta que UFW esté activo.",
    "summaryFirewallOffOnly": "El firewall del host no está habilitado, por lo que no se aplican las reglas del puerto.",
    "outOfSync": "Fuera de sincronización",
    "openButStopped": "Puertos abiertos: el servicio no se está ejecutando",
    "openNoTenants": "Puertos públicos sin inquilinos",
    "firewallOff": "Cortafuegos desactivado",
    "ufwMissing": "UFW no instalado",
    "ufwInactive": "inactivo",
    "firewallLink": "Cortafuegos",
    "portsLabel": "Puertos",
    "allowFrom": "Fuentes permitidas (IP/CIDR)",
    "allowCountries": "Países permitidos (ISO)",
    "hintPrivate": "Es posible que el servicio aún escuche en localhost; ninguna UFW pública permite reglas.",
    "hintPublic": "Advertencia: abre este puerto a todo Internet. Preferiblemente restringido para bases de datos.",
    "hintRestricted": "IP o CIDR separados por comas. Sólo estas fuentes pueden conectarse.",
    "hintCountries": "Mejor esfuerzo L2 a través de CIDR de zona de país + ipset. Requiere root, EJECUTAR e ipset. Los grupos de seguridad en la nube están separados.",
    "restrictedNeedIp": "Agregue al menos una IP o CIDR para el modo restringido.",
    "restrictedNeedSource": "Agregue al menos una IP/CIDR o código de país para el modo restringido.",
    "privateStartTitle": "¿Exponer {{service}} en la red?",
    "confirmAndStart": "Confirmar y comenzar",
    "cloudSgNote": "Solo firewall de host: los grupos de seguridad en la nube (AWS/GCP/Azure) no se modifican.",
    "serviceNotInstalled": "Este servicio no está instalado, por lo que no se aplican las reglas del firewall."
  },
  "services": {
    "enabledBoot": "En el arranque",
    "unitNotFound": "Unit not installed",
    "bootNa": "No aplicable",
    "unitNa": "No aplicable",
    "permLabel": "Permiso",
    "permCanChange": "Puede cambiar el sistema (superusuario)",
    "permBlocked": "No se puede cambiar el sistema",
    "permHint": "Cambio de sistema {{exec}} · Superusuario {{root}}",
    "clusterLegend": "Planificado = guardado en el panel, no aplicado en el host.",
    "active": {
      "active": "Correr",
      "inactive": "Interrumpido",
      "not-found": "No instalado",
      "failed": "Fallido",
      "tool": "Herramienta",
      "activating": "A partir de"
    },
    "unitStatic": "estático",
    "unitIndirect": "indirecto",
    "action": {
      "start": "Comenzar",
      "stop": "Detener",
      "restart": "Reanudar",
      "reload": "Recargar",
      "enable": "Habilitar al arranque",
      "disable": "Deshabilitar al arranque"
    },
    "enabledOk": "{{label}} habilitado al arranque",
    "bootDisabledWarn": "{{label}} está en ejecución pero no arrancará al iniciar. Habilítelo para persistir.",
    "bootDisabledShort": "No al arranque",
    "sshdBootOffWarn": "sshd no está habilitado en el arranque. Después de reiniciar, este host no tendrá una ruta de rescate SSH.",
    "mariadbNotInstalled": "MariaDB no está instalado",
    "mariadbNotInstalledMysqlOk": "No instalado: MariaDB (MySQL está instalado)",
    "lifecycleTitle": "Control del servicio {{label}}",
    "startedOk": "{{label}} iniciado",
    "stoppedOk": "{{label}} detenido",
    "needRunning": "{{label}} no se está ejecutando",
    "restartedOk": "{{label}} reiniciado",
    "reloadedOk": "{{label}} recargado",
    "reloadTitle": "Vuelva a cargar la configuración {{label}} sin reiniciar por completo",
    "stopNeedConfirm": "Requiere confirmación",
    "stopNeedConfirmPhrase": "Hay que escribir la frase de confirmación",
    "stopNeedConfirmImpact": "¿Detener {{label}}? Las conexiones activas a este servicio se interrumpirán.",
    "stopConfirmTitle": "¿Detener {{label}}?",
    "stopConfirmDesc": "{{label}} dejará de escuchar. Puede iniciarlo de nuevo en esta página.",
    "stopConfirmEdgeDesc": "Detener {{label}} deja los sitios y el proxy inverso fuera de línea hasta que se inicie de nuevo.",
    "stopConfirmEdgeConsequence": "Mientras {{label}} esté detenido, este host no servirá HTTP/HTTPS.",
    "stopConfirmSshdTitle": "¿Detener sshd?",
    "stopConfirmSshdDesc": "Detener sshd cierra SSH remoto. Confirme que tiene consola u otra vía de acceso.",
    "stopConfirmSshdToken": "detener sshd",
    "stopConfirmSshdConsequence": "Las nuevas sesiones SSH fallarán hasta iniciar sshd desde la consola del host.",
    "stopConfirmPanelTitle": "¿Detener YSK Server?",
    "stopConfirmPanelDesc": "El panel y la API quedarán fuera de línea hasta iniciar la unidad en el host.",
    "stopConfirmPanelSshdOffDesc": "El panel y la API se desconectarán. sshd no está habilitado en el arranque, por lo que es posible que SSH no sea una ruta de rescate después del reinicio.",
    "stopConfirmPanelSshdOffConsequence": "sshd no está habilitado en el arranque. Después de reiniciar, es posible que no tenga una ruta de rescate SSH.",
    "ufwNoLifecycle": "UFW no se inicia ni se detiene desde esta matriz.",
    "restartConfirmPanelTitle": "¿Reiniciar el servidor YSK?",
    "restartConfirmPanelDesc": "El panel y la API se cerrarán brevemente mientras se reinicia la unidad.",
    "restartConfirmTitle": "¿Reiniciar {{label}}?",
    "restartConfirmDesc": "Reinicie {{label}} ahora. Las conexiones activas pueden caer.",
    "restartConfirmConsequence": "{{label}} interrumpirá brevemente las conexiones y luego seguirá brindando HTTP/HTTPS.",
    "reloadConfirmTitle": "¿Recargar {{label}}?",
    "reloadConfirmDesc": "Vuelva a cargar la configuración {{label}}. Las sesiones existentes deben permanecer activas.",
    "enableConfirmTitle": "¿Habilitar {{label}} en el arranque?",
    "enableConfirmDesc": "Habilite {{label}} para que comience al arrancar.",
    "startVerifyFailed": "{{label}} el inicio no se mantuvo saludable.",
    "stopConfirmPanelToken": "detener el servidor ysk",
    "stopConfirmPanelConsequence": "Esta sesión del navegador se desconectará. Inicie la unidad desde SSH o la consola.",
    "stopConfirmFail2banTitle": "¿Detener fail2ban?",
    "stopConfirmFail2banDesc": "Detener fail2ban desactiva las prohibiciones automáticas de IP. Los sitios web y SSH siguen funcionando.",
    "stopConfirmFail2banConsequence": "Los nuevos atacantes no son prohibidos hasta que se reinicie fail2ban.",
    "actionDone": "{{action}} hecho",
    "runningOf": "{{running}}/{{total}} corriendo",
    "statusFilter": {
      "all": "Todos los estados",
      "running": "Correr",
      "failed": "Fallido",
      "missing": "No instalado"
    },
    "canMutate": "Mudable",
    "locked": "bloqueado",
    "controlUnit": "Unidad de plano de control",
    "logs": "Registros",
    "dbHa": "Alta disponibilidad de base de datos",
    "clusterCount": "{{count}} grupo(s)",
    "mariadbCluster": "Clúster MariaDB",
    "probing": "Matriz de servicio de sondeo…",
    "lifecycleLocked": "Acciones del ciclo de vida bloqueadas: se necesita root + YSK_EXECUTE. Las sondas todavía funcionan. Ver",
    "hostSettings": "Configuración del anfitrión",
    "matrixTab": "Matriz de servicios ({{count}})",
    "stackTab": "Pila de software",
    "stackTitle": "Pila de software de host",
    "stackHint": "Instalar o eliminar componentes del host según el plan; Los motores de servidor SQL son exclusivos.",
    "protectionTab": "Sonda de protección",
    "knownServices": "Servicios conocidos",
    "showing": "Mostrando {{shown}} / {{total}}",
    "all": "Todo",
    "searchPh": "Nombre/unidad/categoría",
    "noMatch": "No hay servicios coincidentes",
    "bootPrefix": "Arranque {{state}}",
    "controlPage": "Página de control",
    "manageRuntime": "Instalar / actualizar",
    "installOrOpen": "Instalar/abrir",
    "protectionTitle": "Sonda de protección",
    "protectionSub": "Sólo lectura; no cambia el firewall/fail2ban",
    "protectionDoneNote": "Sonda de protección terminada",
    "probeDone": "Sonda completa",
    "runProtection": "Ejecutar sonda de protección",
    "notProbedYet": "Aún no investigado",
    "cat": {
      "web": "Web",
      "db": "Bases de datos",
      "mail": "Correo",
      "dns": "DNS",
      "ftp": "FTP",
      "cache": "Cache",
      "panel": "Panel",
      "ssh": "SSH",
      "other": "Otro",
      "runtime": "Tiempos de ejecución"
    }
  },
  "software": {
    "title": "Software",
    "desc": "Todo el software administrado: estado de instalación, estado del servicio, versiones más recientes y enlaces para usar en proyectos.",
    "tabs": {
      "overview": "Descripción general",
      "runtimes": "Tiempos de ejecución",
      "databases": "Bases de datos",
      "edge": "Dominios y borde",
      "mailFiles": "Correo y archivos",
      "host": "Servicios de anfitrión"
    },
    "stat": {
      "catalog": "Artículos del catálogo",
      "runtimesInstalled": "Tiempos de ejecución instalados",
      "updates": "Actualizaciones / ampliable",
      "attention": "necesita atencion"
    },
    "quickTitle": "Atajos",
    "quickDesc": "Saltar a una sección o alojar herramientas",
    "updatesTitle": "Actualizaciones y versiones instalables",
    "updatesDesc": "Pines de panel o aguas arriba más nuevos. Instale, luego seleccione el tiempo de ejecución en un proyecto.",
    "allSoftware": "Todo el software",
    "status": {
      "unknown": "—",
      "installed": "Instalado",
      "notInstalled": "No instalado",
      "running": "Correr",
      "missing": "No detectado",
      "failed": "Fallido",
      "stopped": "Interrumpido"
    },
    "badge": {
      "update": "Actualización disponible",
      "upToDate": "A hoy"
    },
    "meta": {
      "installed": "Instalado: {{list}}",
      "default": "Predeterminado {{v}}",
      "remote": "Corriente arriba ~{{v}}",
      "openManage": "Abra la página de administración para instalar o configurar",
      "aptCurrentLatest": "Instalado {{v}} · el repositorio es el más reciente",
      "aptVersion": "Instalado {{v}}",
      "aptUpgrade": "{{from}} → {{to}} disponible",
      "aptUpgradeMulti": "{{n}} paquetes actualizables: {{list}}",
      "aptNotInstalled": "Paquete no instalado (abra la página de administración para instalarlo)",
      "hostUpgradable": "~{{n}} paquetes actualizables en el host",
      "checking": "Comprobando versiones... o abrir la página de administración"
    },
    "action": {
      "manage": "Administrar",
      "useInProject": "Uso en proyecto",
      "useInProjectTitle": "Abrir proyectos para configurar este tiempo de ejecución",
      "update": "Actualizar",
      "updateTitle": "Instalar o cambiar a {{v}}",
      "updateTo": "Actualizar a {{v}}",
      "installVersion": "Instalar {{v}}",
      "applyAptTitle": "Confirmar actualización {{pkg}}",
      "updateN": "Actualizar {{n}} elementos",
      "installTitle": "Instalar {{list}}",
      "install": "Instalar",
      "updateAptTitle": "Actualizaciones abiertas para {{pkg}}"
    },
    "apply": {
      "blockedShort": "Obstruido",
      "failedShort": "Fallido",
      "failed": "La actualización falló",
      "blocked": "Obstruido",
      "confirm": "Confirmar actualización",
      "confirmTitle": "¿Confirmar actualización de software?",
      "confirmBody": "Actualización {{pkg}}: {{from}} → {{to}}. Necesita derechos de cambio de sistema.",
      "ok": "Aplicado {{pkg}}",
      "progress": "Actualización {{n}}/{{total}}: {{pkg}}",
      "okMulti": "Actualizado: {{list}}",
      "okMultiTitle": "{{label}} actualizado",
      "partial": "Éxito parcial",
      "partialTitle": "Algunas actualizaciones fallaron",
      "failedTitle": "{{label}} error en la actualización",
      "progressDetail": "{{from}} → {{to}}",
      "confirmBodyMulti": "Actualización {{label}}: {{list}}"
    },
    "version": {
      "loading": "Cargando versiones…",
      "installed": "Instalado",
      "latest": "El último",
      "upToDate": "Actualizado / repositorio más reciente",
      "refresh": "Vuelva a comprobar lo último",
      "refreshHasUpdate": "Versión más nueva disponible",
      "refreshLatest": "Ya la última versión grabada.",
      "pick": "Elegir versión",
      "noTarget": "Sin objetivo de actualización",
      "needRuntimePage": "Instale esta versión en la página de tiempo de ejecución",
      "noAptCandidate": "No hay versión candidata apta",
      "sourceLabel": "Fuente"
    },
    "install": {
      "progress": "Instalando: {{list}}…",
      "progressHint": "Puede tardar uno o dos minutos",
      "blockedTitle": "{{label}} no se pudo instalar",
      "ok": "Instalación en cola: {{list}}",
      "okTitle": "{{label}} instalado/en cola",
      "failedTitle": "{{label}} la instalación falló",
      "confirmTitle": "¿Confirmar la instalación del software?",
      "confirmBody": "Instalar {{label}}: {{list}}. Necesita derechos de cambio de sistema.",
      "confirm": "Confirmar instalación"
    },
    "runtime": {
      "installing": "Instalando/actualizando {{kind}} {{v}}…",
      "installingHint": "Puede tardar uno o dos minutos",
      "blockedTitle": "{{kind}} {{v}} no se pudo instalar",
      "installed": "Instalado/actualizado {{kind}} {{v}}",
      "installedDetail": "Seleccione esta versión en un proyecto",
      "failedTitle": "{{kind}} {{v}} instalación fallida",
      "installingShort": "Instalando…"
    },
    "aptSummaryTitle": "Actualizaciones de repositorio disponibles",
    "aptSummaryDesc": "Los recuentos de paquetes de host y catálogo están separados; aplicar desde Actualizaciones o una tarjeta.",
    "aptSummary": {
      "catalog": "Catálogo {{n}}",
      "host": "Paquetes de alojamiento {{n}}",
      "openUpdates": "Actualizaciones abiertas"
    },
    "navBadgeTitle": "Actualizaciones del catálogo: {{n}}",
    "projectHint": "Tiempo de ejecución {{runtime}} precargado: crea un proyecto",
    "projectHintWithVersion": "Tiempo de ejecución {{runtime}} {{version}} precargado: crea un proyecto"
  },
  "softwareBanner": {
    "titleDefault": "El software requerido no está instalado",
    "missing": "Desaparecido: {{names}}",
    "nameSep": ", ",
    "installOneClick": "Instalar ahora",
    "installing": "Instalando…",
    "reprobe": "Vuelva a comprobar",
    "close": "Cerca",
    "resultTitle": "Resultado de instalación",
    "probeFailed": "Sonda fallida",
    "installIncomplete": "Instalación incompleta",
    "installedOne": "Instalado {{name}}",
    "allInstalled": "Software requerido instalado"
  },
  "softwareLifecycle": {
    "kindInstall": "Instalar",
    "kindUninstall": "Desinstalar",
    "dockBusy": "{{kind}} · {{title}}",
    "dockFail": "Fallido · {{title}}",
    "dockDone": "Listo · {{title}}",
    "minimize": "Minimizar",
    "maximize": "Ampliar",
    "restore": "Restaurar",
    "liveLog": "Registro en vivo",
    "uninstall": "Desinstalar…",
    "uninstallTitle": "Desinstalar {{name}}",
    "impactIntro": "Estos componentes y servicios se verán afectados. Revíselo detenidamente antes de continuar.",
    "nothingInstalled": "No hay nada instalado para esta función.",
    "packagesList": "Paquetes: {{list}}",
    "noPackages": "No hay paquetes aptos en la lista",
    "unitsList": "Servicios: {{list}}",
    "dataPolicy": "Política de datos",
    "policyKeep": "Mantener configuración y datos",
    "policyPurge": "Purgar configuración y datos (peligroso)",
    "purgeWarning": "La purga elimina permanentemente los directorios de configuración y datos. Esto no se puede deshacer fácilmente.",
    "keepHint": "Los paquetes serán eliminados; Los directorios de configuración y datos se mantienen en el disco.",
    "summaryLine": "Se procesarán {{packages}} paquete(s), {{units}} unidad(es) de servicio.",
    "doubleConfirmIntro": "Se requiere doble confirmación para la desinstalación.",
    "ackLabel": "Entiendo que los servicios pueden suspenderse y he leído la lista de impacto.",
    "typePhrase": "Escribe {{phrase}} para confirmar",
    "confirmUninstall": "Confirmar desinstalación",
    "protected": "Protegido",
    "readyHint": "El software requerido está instalado. Puede desinstalar desde aquí si es necesario.",
    "readyTitle": "Software listo",
    "jobInProgress": "Ya se está ejecutando otra instalación/desinstalación",
    "uninstallDone": "Desinstalación finalizada",
    "uninstallFailed": "Error de desinstalación",
    "impact": {
      "sitesDown": "Los sitios públicos pueden quedar fuera de línea",
      "reverseProxy": "El proxy inverso se detendrá",
      "phpBackend": "El backend de PHP puede detenerse",
      "mailOutbound": "El correo saliente se detendrá",
      "mailInbound": "El correo entrante se detendrá",
      "mailQueue": "Herramientas de cola de correo no disponibles",
      "mailDkim": "La firma DKIM se detendrá",
      "database": "El servicio de base de datos se detendrá",
      "dataLossPurge": "La purga elimina directorios de datos",
      "cache": "El servicio de caché se detendrá",
      "firewall": "Se eliminará el firewall del host",
      "intrusion": "El bloqueo de intrusiones se detendrá",
      "ftp": "El servicio FTPS se detendrá",
      "dns": "El servidor DNS se detendrá",
      "vpn": "Los servicios VPN se detendrán",
      "vnc": "Los servicios VNC se detendrán",
      "controlPlane": "Tiempo de ejecución del plano de control (protegido)",
      "generic": "Los servicios relacionados pueden detenerse",
      "containers": "Los contenedores en ejecución se detendrán",
      "validators": "Las pilas de validador que usan Docker Compose se detendrán",
      "purgeData": "Las rutas de datos se eliminarán",
      "protectedSkipped": "Se omiten los componentes protegidos",
      "runtimeStack": "Se eliminarán todas las versiones administradas por panel de este tiempo de ejecución."
    },
    "requestCancel": "Solicitar cancelar",
    "cancelling": "Cancelado…",
    "dockCancelling": "Cancelando · {{title}}",
    "dockCancelled": "Cancelado · {{title}}",
    "cancelHint": "Cancelar solicitado. El cliente dejó de escuchar; el anfitrión puede finalizar el apto/paso actual. Vuelva a sondear el estado después de un momento.",
    "cancelledToast": "Operación cancelada (el cliente dejó de transmitir)",
    "kindApply": "Aplicar",
    "kindScan": "Escanear",
    "kindDeploy": "Desplegar",
    "kindRuntime": "Tiempo de ejecución",
    "jobDone": "Terminado · {{title}}",
    "jobFailed": "Fallido · {{title}}",
    "uninstallUfwWarn": "Quitar UFW deja este host sin el cortafuegos de puertos gestionado por el panel.",
    "uninstallFail2banWarn": "Quitar fail2ban detiene las jails y libera los bloqueos. Si lo conserva, añada su IP de inicio a ignoreip."
  },
  "sqlEngineHealth": {
    "finding": {
      "package_missing": "El paquete del servidor para {{flavor}} no está instalado.",
      "client_missing": "Las herramientas del cliente SQL no están instaladas.",
      "frozen_marker": "Marcador de congelación de Debian presente (modo: {{mode}}). El inicio del demonio está bloqueado hasta que se libera.",
      "datadir_uninitialized": "El directorio de datos no tiene catálogo de sistema; necesita inicialización.",
      "config_flavor_mismatch": "my.cnf apunta al motor incorrecto para {{flavor}} ({{path}}).",
      "residual_foreign_plugins": "Las configuraciones/complementos residuales del otro motor SQL pueden bloquear este demonio.",
      "unit_failed": "La unidad de servicio {{unit}} falló.",
      "unit_not_active": "La unidad de servicio {{unit}} es {{active}} (no activa).",
      "port_conflict": "El puerto 3306 está en uso mientras este motor está inactivo (posible conflicto)."
    },
    "action": {
      "stop_unit": "Detener unidad de servicio",
      "clear_frozen": "Borrar marcador de congelación",
      "sanitize_config": "Alinee my.cnf y desactive los complementos de motores externos",
      "init_datadir": "Inicializar directorio de datos vacío",
      "reset_failed": "Restablecer el estado fallido de la unidad",
      "enable_unit": "Habilitar el servicio en el arranque",
      "start_unit": "Iniciar servicio",
      "verify_active": "Verificar que el servicio esté activo"
    },
    "note": {
      "alreadyHealthy": "El motor SQL ya está en buen estado: no se necesita reparación.",
      "needsConfirm": "La reparación necesita confirmación ({{count}} pasos: {{findings}}).",
      "installPackageFirst": "Instale primero el paquete del servidor {{flavor}} y luego repárelo.",
      "stepFailed": "Paso de reparación {{action}} fallido: {{detail}}",
      "repairOk": "Reparación completa: {{unit}} está activo.",
      "repairIncomplete": "La reparación terminó pero la unidad todavía está en {{active}}."
    }
  },
  "sqlEngineSwitch": {
    "title": "Cambiar a {{target}}",
    "subtitle": "Reemplace {{from}} con {{to}}. Sólo se permite un servidor SQL en este host.",
    "confirm": "Confirmar el cambio y migrar",
    "success": "Motor SQL cambiado y datos migrados",
    "bannerHint": "Si el otro motor ya está instalado, debes confirmar un cambio exclusivo (desinstalar",
    "flowAria": "Dirección de cambio del motor SQL",
    "from": "Actual",
    "to": "Objetivo",
    "calloutTitle": "Difícil de deshacer sin copias de seguridad",
    "calloutBody": "{{from}} los paquetes se eliminan solo después de una exportación exitosa",
    "sectionImpact": "¿Qué pasará?",
    "sectionLimits": "Limitaciones y riesgos",
    "dbListTitle": "Bases de datos para migrar ({{count}})",
    "dbMigrateBadge": "{{count}} bases de datos de usuarios",
    "dbEmptyBadge": "Sin bases de datos de usuarios",
    "noUserDbs": "No se detectaron bases de datos de usuarios (solo esquemas del sistema). El motor del servidor seguirá siendo reemplazado.",
    "tableCount": "{{count}} mesa(s)",
    "ackLabel": "Entiendo que los motores son exclusivos. Desinstale {{from}} y migre los datos a {{to}}.",
    "phraseLabel": "Escribe {{phrase}} para confirmar",
    "phraseMismatch": "La frase no coincide. Escriba INTERRUPTOR exactamente.",
    "warn": {
      "replace_engine": "Desinstale {{from}} e instale {{to}}.",
      "exclusive": "MySQL y MariaDB no pueden ejecutarse juntos como servidores en un host (exclusivo).",
      "uninstall_packages": "Los paquetes actuales del servidor SQL se eliminarán del sistema.",
      "logical_dump": "Las bases de datos de usuarios se exportan lógicamente y luego se importan. Los esquemas del sistema no se copian como archivos.",
      "dialect_risk": "SQL específico de MariaDB o MySQL puede fallar en la importación.",
      "no_replication": "La configuración de replicación, los complementos y los registros binarios no se migran.",
      "root_auth": "Es posible que sea necesario reconfigurar la autenticación de socket raíz o contraseña después del cambio.",
      "no_user_dbs": "No se detectaron bases de datos de usuarios; solo cambiarán los paquetes del motor.",
      "has_user_dbs": "{{count}} las bases de datos de usuarios se exportarán e importarán."
    },
    "note": {
      "needsSwitch": "Este host ya ejecuta {{other}}. MySQL y MariaDB son exclusivos: confirme el cambio (exportar → desinstalar otro → instalar → importar).",
      "invalidTarget": "Destino no válido (solo mysql o mariadb).",
      "badConfirmPhrase": "La frase de confirmación debe ser exactamente CAMBIAR.",
      "needAck": "Debe reconocer el cambio exclusivo (MySQL o MariaDB, no ambos).",
      "switchNotNeeded": "No se necesita el interruptor; use la instalación normal.",
      "migrateDataRequired": "La migración de datos debe estar habilitada cuando existan bases de datos de usuarios.",
      "dumpFailed": "Falló la exportación: la fuente {{source}} quedó ejecutándose. {{detail}}",
      "datadirBackupFailed": "Error en la copia de seguridad de Datadir: se canceló antes de la desinstalación. Intente iniciar el servicio fuente manualmente.",
      "waitFailed": "El servicio de destino no estuvo listo. Copia de seguridad: {{dumpPath}}. Directorio de datos antiguo: {{datadir}}. Se requiere recuperación manual.",
      "incomplete": "Cambio incompleto. Exportación retenida en {{dumpPath}}. Directorio de datos antiguo en {{datadir}}. No vuelvas a purgar a ciegas.",
      "switched": "Cambiado {{from}} → {{to}}. Bases de datos {{imported}}/{{total}} importadas.",
      "dumpPath": "Ruta de exportación lógica: {{path}}",
      "datadirBackup": "Copia de seguridad del directorio de datos anterior: {{path}} (eliminar cuando esté satisfecho: rm -rf {{path}})",
      "grantsExported": "Subvenciones exportadas ({{detail}})",
      "frozenDetected": "MySQL/MariaDB está CONGELADO (no es un error adecuado). Ruta {{path}} (modo: {{mode}}). Es posible que el paquete esté instalado, pero el demonio se niega a iniciarse después de un cambio de motor o una degradación. Borre la congelación y reinicie el directorio de datos vacío si es seguro. Fragmento: {{snippet}}",
      "frozenCleared": "Se eliminó el marcador de congelación {{path}}.",
      "frozenClearFailed": "No se pudo eliminar el marcador de congelación {{path}}: eliminar manualmente como root.",
      "datadirNotEmptySkipInit": "El directorio de datos ya tiene tablas del sistema; se omitió la reinicialización.",
      "datadirInitialized": "Directorio de datos vacío inicializado para {{flavor}}.",
      "datadirInitFailed": "No se pudo inicializar el directorio de datos: {{detail}}",
      "unitNotActive": "La unidad {{unit}} es {{active}} (se espera que esté activa).",
      "nginxPortConflict": "Unidad Nginx no activa: Apache aún puede vincular public :80; vuelva a vincular Apache a 127.0.0.1:8080, luego reinicie Nginx.",
      "nginxConfigFailed": "nginx -t falló: {{detail}}",
      "frozenShort": "CONGELADO ({{mode}}) - demonio bloqueado; Se requiere descongelación y reparación.",
      "unfreezeNeedsConfirm": "Confirme que es necesario descongelar (congelado={{frozen}}, vacíoDatadir={{empty}}). PUBLICAR con confirmación: verdadero.",
      "unfreezeOk": "El servicio {{unit}} está activo después de la reparación por descongelación.",
      "unfreezeStartFailed": "Aún no activo después de descongelar: {{detail}}",
      "unfreezePrompt": "Haga clic en \"Descongelar y reparar\" para borrar CONGELADO y reiniciar el directorio de datos vacío.",
      "configSanitized": "Configuración SQL alineada para {{flavor}} (my.cnf → {{target}}). Los restos del complemento MariaDB están deshabilitados cuando apuntan a MySQL.",
      "configSanitizeFailed": "No se pudo desinfectar la configuración de SQL: {{detail}}"
    },
    "step": {
      "dump": "Exportar {{db}}",
      "exportGrants": "Subvenciones a la exportación",
      "stop": "Detener {{unit}}",
      "backupDatadir": "directorio de datos de respaldo",
      "purge": "Desinstalar {{pkg}}",
      "wait": "Espere {{unit}}",
      "importDb": "Importar {{db}}",
      "importGrants": "Subvenciones de importación",
      "verify": "Verificar",
      "preflight": "verificación previa",
      "confirm": "Confirmar",
      "clearFrozen": "Borrar MySQL CONGELADO",
      "initDatadir": "Inicializar directorio de datos vacío",
      "startUnit": "Inicio {{unit}}",
      "sanitizeConfig": "Desinfectar my.cnf/complementos residuales"
    }
  },
  "ssl": {
    "status": {
      "uploaded": "subido",
      "issued": "Emitido",
      "planned": "En curso",
      "failed": "Fallido",
      "missing": "Faltan archivos",
      "ready": "Listo",
      "processing": "En curso"
    },
    "step": {
      "ok": "Hecho",
      "blocked": "no se puede ejecutar",
      "failed": "Fallido",
      "skipped": "Saltado"
    },
    "pillCount": "{{count}} certificado(s)",
    "statCerts": "Certificados",
    "panelCertHint": "El panel HTTPS utiliza {{path}} (caduca {{exp}}). No figura como certificado de sitio.",
    "openPanelTls": "Abrir panel HTTPS",
    "statWithFiles": "Con archivos",
    "statBindings": "Fijaciones",
    "statFailed": "Fallido",
    "requestLe": "Solicitar Vamos a cifrar",
    "openLetsEncryptLog": "Abra letsencrypt.log en el Centro de registro",
    "uploadCert": "+ Subir certificado",
    "certbotNotInstalled": "Certbot no está instalado",
    "leFailNxdomain": "DNS no tiene registro para {{domain}} (NXDOMAIN): Let's Encrypt no puede validar sin un A/AAAA público.",
    "leFailNxdomainHint": "Agregue un registro A para {{domain}} a la IP pública de este servidor en DNS, escriba la zona, confirme",
    "leFailDns": "Error de DNS resolviendo {{domain}} (SERVFAIL o similar).",
    "leFailDnsHint": "Verifique los servidores de nombres y que la zona esté publicada en la Internet pública.",
    "leFailHttp01": "{{domain}} se resuelve, pero HTTP-01 falló (puerto 80 inalcanzable o respuesta incorrecta).",
    "leFailHttp01Hint": "Abra el puerto 80, asegúrese de que nginx escuche en 80 y que {{domain}} apunte a este host",
    "leFailRateLimit": "Vamos a cifrar el límite de velocidad alcanzado.",
    "leFailRateLimitHint": "Espere y vuelva a intentarlo, o evite solicitudes repetidas para el mismo nombre.",
    "leFailCaa": "Los registros CAA bloquean Let's Encrypt para {{domain}}.",
    "leFailCaaHint": "Agregue una CAA que permita letsencrypt.org o elimine la CAA de bloqueo.",
    "leFailChallenge": "La validación del dominio Let's Encrypt falló ({{domain}}).",
    "leFailChallengeHint": "Confirme el registro DNS A y la accesibilidad al puerto 80, luego vuelva a intentarlo; consulte letsencrypt.log.",
    "leFailUnknown": "La solicitud de Cifrado falló ({{domain}}).",
    "leFailUnknownHint": "Abra letsencrypt.log para obtener más detalles.",
    "leFailRawTail": "Detalle técnico (extracto): {{snippet}}",
    "requestFailedWhy": "Por qué falló",
    "requestFailedNext": "Próximos pasos",
    "retryRequest": "Solicitud de reintento",
    "retryRequestFor": "Reintentar solicitud para {{domain}}",
    "retryInTableHint": "Vuelva a intentarlo desde la fila del dominio fallido en la lista siguiente",
    "bindingsTitle": "Fijaciones y renovación",
    "autoRenewLabel": "Renovación automática",
    "autoRenewYes": "Activado",
    "autoRenewNo": "No habilitado/no confirmado",
    "autoRenewYesDetail": "Mecanismo de renovación detectado: {{source}}. Los certificados de Let's Encrypt deben renovarse antes de que caduquen cuando el certbot esté en buen estado.",
    "autoRenewNoDetail": "No se encontró ningún certbot.timer habilitado o renovar cron. Habilite certbot.timer o los certificados caducarán a menos que los renueve manualmente.",
    "renewSourceCron": "cron del panel/sistema",
    "renewTimerEnabled": "temporizador systemd habilitado: {{unit}}",
    "renewTimerDisabled": "Encontrado {{unit}} pero no está habilitado (systemctl enable --now {{unit}})",
    "renewTimerInstalledUnknown": "El host tiene {{unit}} archivo de unidad; confirmar systemctl enable --ahora",
    "renewTimerActive": "{{unit}} está activo",
    "renewViaCron": "Se encontraron {{count}} trabajos cron que mencionan certbot/renew",
    "renewNone": "No se registró ningún certbot.timer o LE renew cron",
    "expiresUnknown": "Desconocido",
    "expiresUnknownHint": "Archivo de certificado ilegible (permisos/ruta);",
    "expiresInDays": "en {{n}} días",
    "expiresAt": "· Vence {{date}}",
    "projectsAt": "· Proyectos: {{names}}",
    "mailAt": "· Correo: {{domains}}",
    "noBindings": "No se detectaron enlaces de proyecto/correo",
    "certsTitle": "Certificados ({{count}})",
    "colDomain": "Dominio",
    "colProvider": "Fuente",
    "providerUpload": "Subir",
    "colLocalFiles": "Archivos locales",
    "filesYes": "Sí",
    "filesNo": "No",
    "colExpires": "Vence",
    "renew": "Renovar",
    "renewFor": "Renovar Let's Encrypt para {{domain}}",
    "deleteDomain": "Eliminar {{domain}}",
    "colStatus": "Estado",
    "emptyTitle": "Aún no hay certificados",
    "emptyDesc": "Utilice \"Cargar certificado\" o \"Solicitar cifrado\" arriba",
    "uploadTitle": "Cargar certificado",
    "uploadDesc": "Pegar contenido PEM; el panel escribe archivos en el servidor",
    "domainHint": "Dominio principal para este certificado, p. ejemplo.com",
    "fullchainLabel": "Cadena de certificados (cadena completa)",
    "fullchainHint": "PEM con certificado de servidor y CA intermedia",
    "privkeyLabel": "Clave privada (privkey)",
    "privkeyHint": "Clave privada PEM que coincide con el certificado: manténgala en secreto",
    "uploadHint": "Cargar solo escribe archivos;",
    "leTitle": "Solicitar Vamos a cifrar",
    "leDesc": "El panel solicita el certificado en el servidor, sin certbot manual",
    "requestCert": "Solicitar certificado",
    "domainLeHint": "Apex/dominio o comodín *.example.com",
    "domainLePlaceholder": "ejemplo.com o *.ejemplo.com",
    "emailLabel": "Correo electrónico de contacto",
    "emailHint": "Para avisos de vencimiento de Let's Encrypt; déjelo vacío para usar admin@dominio",
    "leDns01Hint": "Los comodines usan dns-01: el panel inicia un desafío manual de certbot: complete la grabación TXT",
    "leHttp01Hint": "Los dominios normales utilizan http-01 (complemento nginx)",
    "deleteTitle": "¿Eliminar certificado?",
    "deleteDesc": "Elimina archivos de certificados y registros para {{domain}}.",
    "deleteNeedDomain": "Eliminar este certificado: escriba el nombre de dominio para confirmar",
    "savedCert": "Certificado guardado para {{domain}}",
    "uploadFailed": "Error al subir",
    "requestBlocked": "No se puede completar la solicitud de certificado en el panel de administración",
    "requestDone": "Solicitud de certificado completada",
    "requestFailed": "La solicitud de certificado no tuvo éxito",
    "applyFailed": "Solicitud fallida",
    "deletedCert": "Eliminado {{domain}}",
    "uninstallCertbotWarn": "La eliminación de certbot detiene la renovación automática de los certificados Let's Encrypt existentes.",
    "uninstallCertbot": "Desinstalar certbot (pierde la renovación automática)",
    "domainRequired": "Introduzca un dominio.",
    "domainInvalid": "El formato del dominio no es válido.",
    "domainKnownHint": "Elija un dominio de proyecto, DNS o correo, o escriba uno."
  },
  "stackWizard": {
    "purgeConfirm": "¿Confirmar purga? Las rutas de datos registradas (bases de datos/correo) se eliminarán permanentemente.",
    "installedCount": "Instalado {{installed}} · Falta {{missing}}",
    "countHint": "Estos recuentos son paquetes de sistema operativo en el plan de software, no las unidades de matriz de servicios en la otra pestaña.",
    "executeRoot": "Cambios del sistema {{execute}} · administrador {{root}}",
    "manifestPlan": "Planificar {{plan}} ({{bundles}})",
    "manifestHint": "Último plan de software y paquetes elegidos",
    "needRootExecute": "La instalación/eliminación en vivo necesita derechos de administrador y permiso de cambio de sistema. Todavía puedes realizar un funcionamiento en seco.",
    "modeInstall": "Instalar plan",
    "modeUninstall": "Desinstalar",
    "plan": "Plan",
    "customBundles": "Paquetes personalizados",
    "sqlExclusive": "Servidor SQL (exclusivo)",
    "clamavOptional": "opcional, grande",
    "componentsTitle": "Componentes para instalar",
    "dryRun": "Vista previa del ensayo",
    "installNow": "Instalar ahora",
    "uninstallHint": "Seleccione los paquetes a quitar. Sin selección no se puede quitar. Los datos se conservan por defecto.",
    "dataPolicy": "Política de datos",
    "keepData": "Mantener datos",
    "purgeData": "Purgar datos",
    "uninstallNow": "Desinstalar ahora",
    "uninstallNeedSelect": "Seleccione al menos un paquete. La selección vacía ya no significa eliminar todo.",
    "uninstallConfirmTitle": "¿Eliminar paquetes seleccionados?",
    "uninstallConfirmDesc": "{{count}} se eliminarán los paquetes. Escriba ELIMINAR para confirmar.",
    "bundle": {
      "control-plane": "Plano de control",
      "web": "alojamiento web",
      "database": "Bases de datos",
      "email": "pila de correo",
      "dns": "DNS",
      "ftp": "FTP/FTPS",
      "defense": "Defensa del anfitrión",
      "runtimes": "Tiempos de ejecución del idioma"
    },
    "planTitle": {
      "minimal": "Solo plano de control",
      "recommended": "Alojamiento recomendado",
      "full": "Todo el software"
    }
  },
  "support": {
    "title": "Soporte",
    "sub": "Creator, donaciones y YSK Limited — producto gratuito, ayuda real",
    "creatorTitle": "Creador",
    "creatorBody": "YSK Server es un plano de control de un solo host, gratuito y honesto, para operadores que quieren poseer su pila. El proyecto se mantiene en abierto; los comentarios y los informes de errores lo mejoran.",
    "donateTitle": "Apoyo / Donar",
    "donateBody": "Si YSK Server le ahorra tiempo, considere patrocinar el desarrollo. Cada contribución ayuda a mantener el producto gratuito para todos.",
    "donateGithub": "Patrocinadores de GitHub",
    "donateOther": "Otras formas de contribuir",
    "yskTitle": "YSK Limited",
    "yskIntro": "¿Necesita ayuda práctica más allá del panel gratuito? YSK Limited puede ayudar con:",
    "yskSvc1": "Instalación, endurecimiento y operación continua del servidor",
    "yskSvc2": "Diseño de pila de hosting (web, correo, DNS, bases de datos)",
    "yskSvc3": "Migración, automatización e integración a medida",
    "yskSvc4": "Respuesta a incidentes y revisiones de preparación para producción",
    "yskNoPrice": "Aquí no hay precios. Contacte para una conversación adaptada a su entorno.",
    "yskWebsite": "ysk.hk",
    "helpTitle": "¿Tiene un problema?",
    "helpBody": "Escríbanos con su SO, la ruta del registro de instalación y lo que esperaba frente a lo que ocurrió. Leemos todos los mensajes.",
    "docsHint": "La documentación completa está en el repositorio en",
    "donateLinktree": "Linktree",
    "cryptoTitle": "Cripto / identificadores Web3",
    "cryptoHint": "Envíe solo en la red correspondiente. Compruebe la dirección antes de enviar.",
    "cryptoNetwork": "Red",
    "cryptoAddress": "Dirección",
    "copy": "Copiar",
    "copied": "Copiado",
    "copyTitle": "Copiar {{address}}",
    "docsLink": "Documentación",
    "diagTitle": "Resumen diagnóstico",
    "diagBody": "Copie la versión, ejecútela y aloje datos para pegarlos en un correo electrónico. Este no es un paquete de registro completo.",
    "diagCopy": "Copiar resumen de diagnóstico",
    "diagCopied": "Resumen de diagnóstico copiado",
    "diagCopyTitle": "Copiar versión, EXECUTE y datos del anfitrión",
    "diagPreview": "Vista previa de lo que se copiará",
    "diagLoading": "Cargando diagnóstico…",
    "diagLoadFailed": "No se pudo cargar el diagnóstico",
    "copiedAddr": "Copiado {{addr}}",
    "diagStatus": "Estado",
    "diagMode": "Modo",
    "diagProtection": "Protección",
    "diagHostname": "Nombre de host",
    "diagOs": "OS"
  },
  "system": {
    "exportLoadFailed": "No se pudieron cargar los datos de exportación",
    "dryRunDone": "Funcionamiento en seco completo (sistema sin cambios)",
    "rebuildDone": "Solicitud de reconstrucción finalizada: ver el resultado de las operaciones",
    "exportWritten": "Exportar configuración escrita/administrada listada",
    "rebuildFailed": "La reconstrucción falló",
    "hostFallback": "Anfitrión",
    "mem": "Memoria",
    "diskPeak": "Pico del disco",
    "exportRebuild": "Exportar / Reconstruir",
    "dnsCerts": "DNS/certificados",
    "editIdentity": "Editar identidad",
    "power": "Fuerza",
    "metrics": "Métrica",
    "writeExports": "Escribir directorio de exportación",
    "dryRunSync": "Sincronización en seco",
    "hostConsole": "Consola anfitriona",
    "loadingHost": "Cargando descripción general del host...",
    "identity": "Identidad",
    "identityReadonly": "Solo lectura: necesita YSK_EXECUTE + root para aplicar",
    "identityTools": "Establezca el nombre de host y la zona horaria a través de las herramientas del sistema",
    "hostnameHint": "Nombre de host del sistema",
    "writable": "grabable",
    "locked": "bloqueado",
    "hostname": "Nombre de host",
    "prettyName": "bonito nombre",
    "optional": "Opcional",
    "prettyPh": "Nombre para mostrar descriptivo",
    "timezone": "Zona horaria",
    "timezoneHint": "Elija una zona horaria de la IANA de la lista (por ejemplo, Asia/Hong_Kong)",
    "timezoneNow": "Hora del anfitrión ahora: {{time}} ({{tz}})",
    "timezoneBrowserDiff": "Este host usa {{host}}; su navegador utiliza {{browser}}. Cambiar la zona horaria aquí cambia el reloj del host, no el navegador.",
    "timezoneSelect": "Seleccionar zona horaria",
    "notExported": "Aún no exportado",
    "dns": "DNS",
    "updated": "Actualizado",
    "applyIdentity": "Aplicar identidad",
    "identitySetHostname": "Nombre de host configurado en {{name}}",
    "identitySetPretty": "Bonito nombre de host configurado en {{name}}",
    "identityClearPretty": "Bonito nombre de host borrado",
    "identitySetTimezone": "Zona horaria establecida en {{tz}}",
    "panelSsl": "PanelSSL",
    "panelTls": {
      "title": "Panel HTTPS",
      "sub": "El plano de control (ysk-server) sirve TLS en listeningPort; WebAuthn/contraseñas necesitan HTTPS",
      "domain": "Dominio del panel",
      "domainHint": "Se utiliza para emisión/vinculación de certificados, p. demo.ysk.hk",
      "email": "Ciframos el correo electrónico",
      "status": "Estado",
      "enabled": "TLS habilitado en la configuración",
      "disabled": "TLS desactivado (HTTP)",
      "serving": "Esta conexión: HTTPS",
      "servingHttp": "Esta conexión: HTTP",
      "expires": "El certificado caduca",
      "certPath": "Ruta del certificado",
      "issueEnable": "Emitir certificado y habilitar HTTPS",
      "enableExisting": "Habilitar con certificado existente",
      "disable": "Desactivar panel HTTPS",
      "disableNeedConfirm": "Requiere confirmación — escriba DISABLE-HTTPS",
      "needDomain": "Introduzca primero el nombre de host/dominio",
      "needFqdn": "Necesita un FQDN (ejemplo.com), no un nombre de host simple",
      "urlHint": "Después de reiniciar, abra {{url}}",
      "certMissing": "TLS habilitado pero faltan archivos de certificado/clave",
      "restartToApply": "Reinicie ysk-server para aplicar HTTPS",
      "noConfig": "config.json no encontrado (comience con --config)",
      "usingExisting": "Usando el certificado local existente",
      "usingLe": "Usando rutas en vivo de Let's Encrypt",
      "needCertFirst": "Sin certificado para {{domain}}; emitir o subir primero",
      "configWritten": "Configuración TLS del panel escrita",
      "disabledNote": "Panel TLS deshabilitado",
      "certAlreadyPresent": "Certificado ya presente; reedición omitida",
      "restartManual": "Reinicie manualmente: systemctl reinicie ysk-server",
      "restarted": "servidor ysk reiniciado",
      "restartFailed": "Error al reiniciar: {{detail}}",
      "firewallHint": "Si accede desde Internet, permita el puerto del panel (predeterminado 9287/tcp)",
      "restartNow": "Reinicie el servidor ysk inmediatamente después",
      "restartNowHint": "Abandona esta sesión;",
      "restartConfirm": "¿Reiniciar el servicio del panel ahora? Esta conexión puede interrumpirse; vuelva a abrirla a través de HTTPS.",
      "manualRestart": "Reinicie manualmente, luego abra {{url}}",
      "reconnectHttps": "Es posible que el servicio se haya reiniciado. Vuelva a conectarse en {{url}}.",
      "leStrategies": "Certificado del panel: pruebe webroot → nginx certonly → independiente (sin --redirect)",
      "leOk": "Certificado Let's Encrypt obtenido para {{domain}}",
      "leFailed": "Error en la solicitud de certificado: {{detail}}",
      "leHint": "Asegúrese de que DNS A apunte aquí y que se pueda acceder al puerto 80 (o nginx sirve al dominio)",
      "openFirewall": "Si es público: permitir el puerto del panel {{port}}/tcp (Firewall → abrir puerto → Panel 9287)",
      "disableConfirmTitle": "¿Desactivar el panel HTTPS?",
      "disableConfirmDesc": "El panel servirá HTTP. WebAuthn/Passkey dejará de funcionar hasta que HTTPS vuelva a estar activado.",
      "disablePasskeyWarn": "Las claves de acceso registradas necesitan HTTPS; fallarán en HTTP.",
      "listenPublic": "El panel está escuchando en una dirección pública (0.0.0.0/::). Restrinja con un firewall o vincule a 127.0.0.1.",
      "bootstrapCert": "Este es el certificado de arranque autofirmado: los navegadores lo advertirán. Emita un certificado de confianza para el dominio del panel.",
      "cliNoSocket": "CLI no tiene un socket HTTP activo; serverHttps se infiere de los sockets de configuración y escucha (ss).",
      "listenHost": "Escuchar dirección",
      "currentHost": "Esta sesión",
      "replaceCert": "Reemplazar con un certificado confiable"
    },
    "timeNtp": "Tiempo y NTP",
    "clockStatus": "Estado del reloj del sistema",
    "local": "Local",
    "utc": "UTC",
    "source": "Fuente",
    "ntpService": "servicio NTP",
    "ntpServiceActive": "Correr",
    "ntpServiceInactive": "Interrumpido",
    "ntpServiceNa": "N / A",
    "ntpSync": "Sincronización del reloj",
    "ntpSyncedYes": "sincronizado",
    "ntpSyncedNo": "No sincronizado",
    "ntpSyncedUnknown": "Desconocido",
    "ntpRequested": "Habilitación de sincronización NTP solicitada",
    "ntpFailed": "No se pudo habilitar NTP",
    "enableNtp": "Habilitar sincronización NTP",
    "network": "Red",
    "networkSub": "Sólo lectura · El plan de red completo no está en esta página",
    "noIp": "No se pudieron leer las IP",
    "storage": "Almacenamiento",
    "metricsDetail": "Detalle de métricas",
    "noDisk": "No se pudieron leer los discos",
    "avail": "Disponible {{v}}",
    "shortcuts": "Atajos de operaciones",
    "shortcutsAria": "Atajos de operaciones",
    "scServices": "Matriz de servicios",
    "scServicesD": "ciclo de vida de la unidad",
    "scUnit": "Unidad de plano de control",
    "scUnitD": "Unidad de sistema de panel",
    "scReadiness": "Preparación",
    "scReadinessD": "Puerta de producción",
    "scUpdates": "Actualizaciones del sistema",
    "scUpdatesD": "Paquetes / CVE",
    "scMetrics": "Métricas de host",
    "scMetricsD": "Cargar alertas",
    "scLogs": "Centro de registro",
    "scLogsD": "diario / archivos",
    "powerTitle": "Poder (zona de peligro)",
    "powerWarn": "El reinicio/apagado interrumpe todos los servicios y el panel. El panel no puede encender el host; necesita acceso físico o hipervisor.",
    "unlocked": "desbloqueado",
    "powerUnlock": "Desbloquear zona de peligro",
    "powerLock": "Bloquear zona de peligro",
    "noScheduledPower": "No está programado ningún reinicio o apagado",
    "powerCaps": "Necesita YSK_EXECUTE=1 y root. Ahora EJECUTAR={{exec}}, raíz={{root}}.",
    "scheduledPower": "Apagado/reinicio programado detectado",
    "cancelScheduleHint": ". Utilice \"Cancelar programación\" para retirar.",
    "rebootHost": "Reiniciar el host…",
    "poweroffHost": "Apagar…",
    "cancelled": "Cancelado",
    "cancelFailed": "Cancelar falló",
    "cancelSchedule": "Cancelar horario",
    "confirmStrings": "Confirmar con REINICIAR/APAGAR. Retraso predeterminado ~1 min para apagar y reiniciar (apagar +N). Escrito para auditar.",
    "confirmReboot": "¿Confirmar el reinicio del host?",
    "confirmPoweroff": "¿Confirmar apagado?",
    "confirmRebootDesc": "Todos los servicios y sesiones del panel desaparecerán. Escriba REBOOT para confirmar.",
    "confirmPoweroffDesc": "El host se apagará; El panel no puede encenderse de forma remota. Escriba APAGADO para confirmar.",
    "typeToUnlock": "Escribe {{need}} para desbloquear",
    "confirmRebootBtn": "Confirmar reinicio",
    "confirmPoweroffBtn": "Confirmar apagado",
    "sentDisconnect": "Enviado: la conexión se interrumpirá",
    "powerFailed": "La acción de energía falló",
    "exportExplain": "Exportar = resumen de base de datos del panel JSON. Reconstruir = configuración administrada → /etc/nginx/conf.d + recargar. La sincronización necesita root + EJECUTAR.",
    "controlSummary": "Resumen del plano de control",
    "controlSummarySub": "Instantánea de Live DB · vista previa / descarga / escritura en el servidor",
    "snapshotLoaded": "Resumen cargado · {{at}}",
    "previewSummary": "Resumen de vista previa",
    "downloadedJson": "JSON descargado al navegador",
    "downloadJson": "Descargar JSON",
    "snapshotMeta": "Generado {{at}} · usuarios {{users}} · paquetes {{packages}}",
    "previewHint": "Haga clic en \"Vista previa del resumen\" para cargar la instantánea del plano de control.",
    "managedNotEtc": "dataDir/nginx/conf.d: no es el mismo que se aplica en /etc",
    "nFiles": "{{count}} archivos",
    "noManaged": "Aún no hay configuración administrada",
    "noManagedDesc": "Aparece después de publicar el proyecto Nginx.",
    "readFailed": "Error de lectura",
    "preview": "Avance",
    "previewModalDesc": "Contenido de configuración administrado (dataDir)",
    "prevPage": "Anterior",
    "nextPage": "Próximo",
    "pageOf": "Página {{page}} / {{total}} · {{count}} archivos",
    "managedPager": "Páginas de configuración administradas",
    "syncToSystem": "Sincronizar con el sistema",
    "syncSub": "Copie a /etc/nginx/conf.d y vuelva a cargar: necesita root + EJECUTAR",
    "syncReload": "Sincronizar + recargar",
    "syncReloadNeedConfirm": "Requiere confirmación — escribe /etc/nginx/conf.d y recarga Nginx",
    "exportOnly": "Exportar solo + lista de configuración",
    "dryRun": "Ejecución en seco",
    "dryRunNote": "El funcionamiento en seco no cambia el sistema.",
    "exportHistory": "Historial de exportación del servidor",
    "exportHistorySub": "dataDir/exportaciones · descarga autenticada",
    "noExports": "Aún no hay archivos de exportación del servidor",
    "noExportsDesc": "Haga clic en \"Escribir directorio de exportación\" para crear",
    "downloaded": "Descargado {{name}}",
    "download": "Descargar",
    "syncConfirmTitle": "¿Sincronizar Nginx con el sistema?",
    "syncConfirmDesc": "Sincronizar la configuración de Nginx administrada con /etc/nginx/conf",
    "uptime": "tiempo de actividad",
    "load1m": "Carga 1m",
    "executeLabel": "EXECUTE",
    "rootLabel": "Raíz",
    "managedLabel": "Administrado",
    "managedCount": "Administrado",
    "exportsCount": "Exportaciones",
    "managedNginxTitle": "Nginx administrado",
    "exportPath": "Ruta de exportación",
    "mode": "Modo",
    "managedConf": "Configuración administrada",
    "dryRunFlag": "Ejecución en seco",
    "timezoneSearch": "Filtrar zonas horarias...",
    "resyncNtp": "Volver a sincronizar NTP",
    "storageSub": "Uso del disco",
    "nginxLeftover": "Sobrante",
    "nginxUnused": "Sin uso",
    "nginxLeftoverHint": "Conf residual (p. ej. public-files). Sigue en la sincronización hasta que actúe.",
    "nginxUnusedHint": "Conf de stock / catch-all (000-default). Sigue en la sincronización hasta que actúe.",
    "nginxRemoveLeftover": "Quitar las sobras",
    "nginxRemoveLeftoverTitle": "¿Eliminar la configuración sobrante de nginx?",
    "nginxRemoveLeftoverDesc": "Elimina {{name}} del inventario del panel. La copia activa de /etc/nginx se elimina solo con YSK_EXECUTE + root. 000 predeterminado no queda y no se puede eliminar aquí.",
    "needExecuteRoot": "Necesita YSK_EXECUTE + raíz"
  },
  "systemd": {
    "enabled": "Activado",
    "disabled": "Desactivado",
    "notInstalled": "No instalado",
    "running": "Correr",
    "notRunning": "no corriendo",
    "failed": "Fallido",
    "activating": "Activando",
    "unitMissing": "Falta unidad",
    "loadFailed": "No se pudo cargar",
    "opFailed": "Operación fallida",
    "installedEnabled": "Instalado e intentado habilitar",
    "unitTemplateWritten": "Plantilla de unidad escrita",
    "writeTemplate": "Escribir plantilla de directorio de administración",
    "writeTemplateDesc": "Crea ysk-server.service en dataDir/systemd (no cambia /etc)",
    "templateExists": "La plantilla de gestión ya existe",
    "installEnable": "Instalar en /etc/systemd y habilitar",
    "installEnableDesc": "Copiar unidad → daemon-reload → habilitar --ahora",
    "needExecuteRoot": "Necesita YSK_EXECUTE y root",
    "serviceNotRunning": "Servicio no funcionando",
    "serviceNotRunningHint": "Es posible que la unidad esté instalada pero inactiva: intente Instalar y habilitar o la matriz de servicios",
    "controlRunning": "Servicio de plano de control en ejecución",
    "unlockApply": "Capacidad de aplicación del sistema de desbloqueo",
    "startAsRoot": "Comience como root con YSK_EXECUTE=1",
    "status": "Estado",
    "bootEnabled": "Comenzar al arrancar",
    "on": "En",
    "off": "Apagado",
    "yes": "Sí",
    "no": "No",
    "canInstall": "Instalable",
    "copyEnable": "Copie a /etc/systemd y habilite --now",
    "needExecuteRootShort": "Necesita EXECUTE + root",
    "probing": "Sondeando el estado del sistema...",
    "suggestedSteps": "Pasos sugeridos",
    "install": "Instalar",
    "policy": "Política",
    "about": "Acerca de",
    "exists": "existe",
    "missing": "Desaparecido",
    "notWritten": "Aún no escrito",
    "related": "Relacionado",
    "opsResult": "resultado de operaciones",
    "writeTemplateOnly": "Escribir solo plantilla",
    "installAndEnable": "Instalar y habilitar",
    "stepReport": "Informe de paso",
    "installEnableShort": "Instalar habilitar",
    "cannotInstall": "Aún no se puede instalar en el sistema: necesita",
    "andRoot": "y raíz. La plantilla de escritura aún crea archivos de administración. Ver",
    "probeDetail": "Detalle de la sonda",
    "probeDetailSub": "Archivos de unidad y estado de systemd en vivo en el disco",
    "unit": "Unidad",
    "manageTemplate": "Plantilla de gestión",
    "installOps": "Instalar acciones",
    "twoModes": "Dos modos para diferentes necesidades: elija según el entorno",
    "writeOnlyTitle": "Escribir solo plantilla",
    "writeOnlyBody": "Crea un archivo de unidad de directorio de administración. Bueno para revisión o preparación sin root.",
    "willNotEnable": "No habilita el servicio.",
    "writeTemplateBtn": "Escribir plantilla",
    "installEnableTitle": "Instalar y habilitar",
    "installEnableBody": "Copie a /etc/systemd/system, daemon-reload, habilite --now. Necesita root + EJECUTAR.",
    "policyWrite": "Escribir solo plantilla: solo dataDir, no /etc.",
    "policyInstall": "Instalar y habilitar: cp + daemon-reload + habilitar",
    "policyBlocked": "Sin EXECUTE o no root → claramente bloqueado, sin éxito falso",
    "policyNotEqual": "Plantilla de escritura ≠ servicio habilitado ≠ escucha",
    "shortcutPower": "EJECUTAR / potencia",
    "shortcutOther": "Otras unidades",
    "cannotInstallFull": "Aún no se puede instalar en el sistema: necesita YSK_EXECUTE=1 y root. La plantilla de escritura aún crea archivos de administración. Ver",
    "policyWriteFull": "Escribir solo plantilla: solo dataDir, no /etc.",
    "policyNotEqualFull": "Plantilla de escritura ≠ servicio habilitado ≠ escucha",
    "controlPlaneUnit": "Unidad de plano de control",
    "kpiRuntime": "Tiempo de ejecución",
    "rawStateHint": "Estado de la unidad sin procesar en la información sobre herramientas",
    "bootHint": "Si la unidad se inicia en el arranque",
    "kpiBoot": "Habilitar arranque",
    "kpiCaps": "Aplicar capacidad",
    "capsReady": "Se puede instalar en el sistema",
    "capsBlocked": "No se puede aplicar",
    "unitFiles": "Archivos unitarios",
    "unitFilesSub": "Ruta del sistema versus plantilla administrada por panel (diferentes roles)",
    "systemUnitFile": "Unidad del sistema (/etc.)",
    "systemUnitHint": "Cargas unitarias del sistema; aparece después de instalar y habilitar.",
    "managedUnitFile": "Plantilla administrada (dataDir)",
    "managedUnitHint": "Plantilla escrita en panel: no es la misma que la instalada en /etc.",
    "managedPathHint": "dataDir/systemd/ysk-server.servicio",
    "fragmentPath": "Ruta del fragmento",
    "fromSystemd": "De sistemad",
    "pid": "PID {{pid}}",
    "nextAction": "Siguiente paso sugerido",
    "controlRunningHint": "systemctl está activo = activo",
    "aboutPolicyTitle": "Aplicar política",
    "aboutPolicySub": "La escritura de la plantilla y la instalación del sistema son pasos separados. Volver a ejecutar después de la instalación es una operación normal, no es un paso que falta.",
    "policyInstallFull": "Instalar y habilitar: copiar a /etc/systemd/system, daemon-reload, habilitar --now. Necesita root + EJECUTAR.",
    "policyBlockedTitle": "Bloqueado sin privilegios",
    "policyNotEqualTitle": "Los estados no son equivalentes."
  },
  "tabs": {
    "scrollLeft": "Desplazarse por las pestañas hacia la izquierda",
    "scrollRight": "Desplazarse por las pestañas hacia la derecha",
    "about": "Acerca de",
    "main": "Comportamiento",
    "stack": "Software",
    "unknown": "No existe esa pestaña",
    "unknownHint": "Esta página no tiene ninguna pestaña llamada {{tab}}."
  },
  "terminal": {
    "tabSession": "Sesión",
    "target": "Iniciar sesión como",
    "connect": "Conectar",
    "disconnect": "Desconectar",
    "user": "Usuario",
    "size": "Tamaño",
    "stateConnected": "Conectado",
    "stateConnecting": "Conectando",
    "stateIdle": "Inactivo",
    "connecting": "Sesión de apertura…",
    "connectedAs": "Inicié sesión como {{user}}",
    "disconnected": "Desconectado",
    "error": "Error terminal",
    "wsError": "WebSocket falló",
    "exitCode": "Código de salida {{code}}",
    "needRootExecute": "Requiere root + YSK_EXECUTE=1 para los shells del sistema.",
    "groupSystem": "Sistema",
    "groupProject": "Proyecto",
    "unavailable": "indisponible",
    "copyAll": "Copiar todo",
    "copyAllNeedConn": "Conéctese primero: el búfer está vacío mientras está desconectado",
    "placeholder": "Elija una identidad, luego Conéctese",
    "aboutTitle": "Acerca de la terminal",
    "aboutSub": "Shell interactivo del sistema operativo en el navegador (usuarios locales). No es un cliente SSH remoto arbitrario.",
    "aboutWhat": "que es",
    "aboutWhatBody": "Shell de inicio de sesión de PTY real (bash -l). Usuarios del proyecto a través de runuser; root a través del shell raíz.",
    "aboutReq": "Requisitos",
    "aboutReqBody": "El plano de control debe ejecutarse como root con YSK_EXECUTE habilitado.",
    "aboutUsers": "Identidades",
    "aboutUsersBody": "Usuarios raíz o de proyecto Linux provisto por el sistema operativo.",
    "stepUpRequired": "El shell raíz necesita un código TOTP/recuperación",
    "stepUpHint": "El inicio de sesión raíz requiere un paso adelante 2FA cuando su cuenta tiene TOTP habilitado.",
    "stepUpTitle": "Confirmar shell raíz",
    "stepUpDesc": "Ingrese su código de autenticación o un código de recuperación.",
    "totpLabel": "TOTP/código de recuperación",
    "sessionStillOpen": "Un shell en vivo todavía está conectado mientras lees esta página.",
    "rootConfirmTitle": "¿Abrir un shell raíz?",
    "rootConfirmDesc": "Esta sesión es un PTY raíz sin restricciones en el host. Los comandos son auditados.",
    "rootConfirmBody": "Continúe únicamente si desea ejecutar comandos de host privilegiados."
  },
  "uiInline": {
    "s27d9daa5": "tiempo de ejecución {{v0}} {{v1}}，",
    "sb8eaefa3": "tiempo de ejecución {{v0}},",
    "s7d540128": "· {{v0}}",
    "s814bcc7c": "· {{v0}}",
    "s3f7c3eae": "Actualizar",
    "s92e48065": "Saltar",
    "sdff0f697": "Mirar",
    "s012f2d7e": "Actualizar",
    "s20455064": "…",
    "s9b34f8c3": "…",
    "s8e3824cb": "Actualización 0/{{v0}}:…",
    "sc2570ff7": "Actualización {{v0}}/{{v1}}：{{v2}}",
    "s0bd0c471": "： {{v0}}，Error {{v1}}",
    "s2980553a": "…",
    "s303ee0f7": "Cancelar…()",
    "s21858fe5": "Cancelar",
    "sddc05404": "Cerca",
    "saf251c2a": "Actualizar()",
    "s5929623c": "…",
    "s18b08919": "…",
    "se2b088fc": "Actualización ({{v0}})",
    "sb2848bc7": "¿Actualizar?",
    "sc1910cf2": "{{v0}} 。 raíz EJECUTAR。",
    "sc13bb38c": "／；。",
    "sea4ba90a": "Cargado",
    "sdd78429a": "Escrito",
    "s9b6c1b03": "Acerca de",
    "s858f4eca": "…",
    "s090aa1a7": "Administrar。 Proyectos Nginx → → 。",
    "sac96ec39": "El panel registró la instalación {{v0}}, pero la sonda del host no encontró ningún binario. No instalado: vuelva a probar o reinstale.",
    "sf7f7807b": "Por defecto",
    "sc9530028": "El último,",
    "s9602769e": "Instalado {{v0}} · upstream más reciente {{v1}}",
    "sb8b5a353": "Ir／Rust ：「Instalar」，「Predeterminado」 RUTA 。",
    "sac155c20": "Extensiones extraíbles no centrales (apto para eliminar; mantiene FPM/CLI)",
    "s23379974": "「Instalar」。, tiempo de ejecución。",
    "s7b6d4414": "PHP no instalado {{v0}}：「Instalar PHP {{v0}}」+（Instalar）。",
    "s2e9a1b03": "Instalar PHP {{v0}}（）",
    "s62b73dd7": "…",
    "se23513e5": "¿PHP?",
    "sf8c8ff4b": "Probablemente eliminará \"{{v0}}\". Core FPM/CLI no se eliminará.",
    "s7aa09150": "Instalado",
    "sbcbdbc49": "No instalado",
    "sae7738d0": "Correr",
    "sf3af7c5e": "No detectado",
    "sa1d77833": "Fallido",
    "s75dddf52": "Interrumpido",
    "s4e7f6152": "Actualización… {{v0}}/{{v1}}：{{v2}}",
    "s72cac69e": "{{v0}}: {{v1}}",
    "sd1c15b6d": "{{v0}}: {{v1}}",
    "s7a90f74c": "Actualización: {{v0}}",
    "s0aa24093": "{{v0}} Actualizar",
    "s5d92ffc3": ":{{v0}}；Error:{{v1}}",
    "sa15a291f": "Actualización fallida",
    "sbb823c06": "Fallido",
    "s68db1348": "{{v0}} Actualización fallida",
    "s84a4e7c6": "Instalar: {{v0}}…",
    "s2ca8a4f5": "raíz + EJECUTAR；。",
    "sd9419dc9": "Instalar (root+EJECUTAR)",
    "s3ec3d449": "{{v0}} Instalar",
    "sbb8dfdeb": "Instalar: {{v0}}",
    "s18bb4b62": "{{v0}} Instalar／",
    "se9a47def": "Instalar",
    "sdc0528a2": "{{v0}} Instalación fallida",
    "s69e60fb5": "Sin objetivo de actualización",
    "s3f50fa6e": "Instalar／Actualizar {{v0}} {{v1}}…（）",
    "s1f5eef17": "Mostrar servidor ，Cerrar。",
    "s2bf6b642": "Actualización (root YSK_EXECUTE=1)",
    "s9b4a58e8": "{{v0}} {{v1}} Instalar",
    "s6dc82720": "Instalado／Actualizar {{v0}} {{v1}}",
    "s94a1f025": ".Espectáculo,.",
    "s73cae5a0": "{{v0}} {{v1}} Instalación fallida",
    "se1050a28": "Descripción general",
    "s8c29cb38": "…",
    "s583f0654": "…",
    "s4344c486": "…",
    "sed2550e1": "…",
    "scb435db5": "Servicio",
    "s97bbc1b7": "…",
    "s60a23151": "Administrar: Instalar, Servicio, Administrar.",
    "s5387b55b": "…",
    "s0b582c70": "…",
    "s4be2a3a4": "Instalado",
    "s259e6f0e": "／",
    "s13b3f970": "necesita atencion",
    "sdd33adf9": "…",
    "sdfaaf946": ";Actualizar.",
    "s78f03e20": "{{v0}}",
    "sbf368054": "{{v0}}",
    "s235a7426": "Actualizar",
    "s14249f75": "Rápido",
    "saff76d0a": "Servicio",
    "s24f12f4f": "Actualizar／Instalar",
    "s43a9fd7a": ":Ascendente／；Servicio：。Actualizar。",
    "sc45743bd": "…",
    "s00338fde": "¿Actualizar?",
    "s0e05f4b7": "Actualizar",
    "s4d0b4688": "Cancelar",
    "s92b8bf67": "¿Instalar?",
    "s9af27043": "Instalar {{v0}}：{{v1}}。 raíz YSK_EXECUTE=1。",
    "s28263d85": "Instalar",
    "s2e37cbfa": "Instalado: {{v0}}",
    "s7d52bb0c": "Predeterminado {{v0}}",
    "s9f898b85": "Aguas arriba {{v0}}",
    "s93dde991": "{{v0}} → {{v1}}",
    "s9071dcb7": "Instalado {{v0}} · el repositorio es el más reciente",
    "s0b09f444": "{{v0}}",
    "sf6cc774f": "No instalado (Administrar instalación)",
    "s42f9c88b": "{{v0}}",
    "sb72e8ebc": "Comprobando versiones... o abrir la página de administración",
    "sabac942e": "Abra la página de administración para instalar o configurar",
    "sbd26894e": "Actualización disponible",
    "s5985ee9a": "A hoy",
    "s090e6a43": "Elegir versión",
    "s8253535d": "Instalar/Actualizar {{v0}}",
    "s1723f1d7": "Instalar……",
    "sd9db02d0": "Actualizar",
    "sba60558e": "Actualización {{v0}}",
    "s706de938": "Actualización {{v0}}",
    "s0f9ddc70": "Instalar {{v0}}",
    "sef864639": "Instalar",
    "s59f613d5": "Instalar／ {{v0}}",
    "s78b1688f": "Actualización {{v0}}",
    "s4989b5cf": "Administrar",
    "s72203f17": "Servicio",
    "s75817a35": "， tiempo de ejecución",
    "s6d449473": "…",
    "s777e90e0": "Administrar",
    "sd8bc8ab3": "Nombre: {{name}}",
    "s09877be5": "Administrar",
    "sd95910ce": "…",
    "sa72ef18d": "Herramientas",
    "s4b2bec80": "Nombre",
    "sd00c0d39": "PHP ；Nombre",
    "sd7c669ac": "phpMyAdmin（）",
    "s9e5d3a97": "： {{v0}}，Error {{v1}}",
    "s1f0a4bf9": "Cancelar()",
    "s7193f51b": "： {{v0}}，Error 0",
    "sd93b8620": "{{v0}} Herramientas",
    "sd0ef129c": "({{v0}})",
    "se6d47d0b": "Herramientas",
    "se6436711": "Instalar herramientas ({{v0}})",
    "s1a27a3c4": "Herramientas「Instalar tiempo de ejecución」Instalar（Instalar）。",
    "s32add03e": "{{v0}} Herramientas。",
    "s3bca33b2": "Herramientas",
    "s8072fa0d": "{{v0}} Instalar (predeterminado)",
    "s2bf2b4c4": "InstallDefault。「Predeterminado」；Instalar。",
    "s42f3d613": "Predeterminado {{v0}}",
    "sdcdc5029": "Entrada en funcionamiento incompleta",
    "s55cc91e0": "Publicación de Nginx，。",
    "s303f6113": "Reintentar implementación",
    "s3265f9ed": "Publicar Nginx",
    "s99cc48c1": "{{v0}} ；「— —」。",
    "sa87ceeff": "Publicar Nginx",
    "s38a63bcb": "Puerto fijo（）",
    "s5ac95c29": "No publicado",
    "sc8f34a0d": "Escrito (recargar)",
    "s07fb5671": "Implementar primero",
    "sa5f994e3": "Error de publicación",
    "s32dd17d9": "SSL 。「SSL 」／，Publicar + SSL。",
    "s5516cb5b": "Estado del sitio",
    "sed38f4ea": "Río arriba",
    "sadb6ef47": "Puerto de proceso",
    "se7a422dd": "Puerto fijo",
    "s2eff57b7": "Puerto de proceso",
    "s110671e6": "Puerto actual",
    "s549ea65e": "Publicar",
    "s9dc5c003": "Básico",
    "s04a32a1e": "SSL:",
    "s564d50b7": "／Publicar + SSL。",
    "sbb6c72f1": "({{v0}})",
    "sd9b695a5": "，Publicar Nginx / SSL。",
    "scb85cfff": "SSL",
    "s18c1af46": "Publicar + SSL",
    "s6a284cb0": "Publicar Nginx + SSL",
    "s85483ffb": "Mantenimiento",
    "s6993c6ba": "Esconder",
    "s15671929": "Espectáculo",
    "s56f99a6b": "Eliminar proyecto permanentemente",
    "sa0f2f5c6": "「{{v0}}」。。",
    "sa6710b42": "Eliminar permanentemente",
    "s06569331": "sistemad/PM2/",
    "sd20a5b0c": "Configuración de Nginx, grupo PHP-FPM, Apache vhost ()",
    "s4ff53acc": "Inicio de Linux（）",
    "s50dda2df": "inicio Linux（）",
    "sa7f90a4a": "…",
    "se0d24557": "Nombre",
    "s9a9e4e32": "inicio linux",
    "s1cf2a97b": "Cancelar,",
    "s51af87fd": "Nombre",
    "s8b04d62f": "「{{v0}}」",
    "s49d55c8f": "Zona/dominio DNS 。",
    "s239f6551": ":{{v0}}",
    "sa00380bd": ":{{v0}}",
    "sb4e3bb0b": "Instalar",
    "sae926193": "…",
    "s52573ef8": "Actualizar (raíz+EJECUTAR)",
    "s872d2fe0": "{{v0}} Actualizar",
    "s6a93c0ec": "Cargando versiones…",
    "s378e49b6": "Instalado",
    "s7e805a12": "El último",
    "s74b39712": "Actualizado / repositorio más reciente",
    "s03a87d5d": "Vuelva a comprobar lo último",
    "s53c07a48": "Actualización {{v0}}",
    "s425e8381": "Instalar {{v0}}",
    "s5bd1242f": "{{v0}}：{{v1}} → {{v2}}。 raíz EJECUTAR。",
    "s296817b1": "Instalar()",
    "s3568a3da": "…",
    "s28256229": "Finalizado",
    "s3971290f": "servidor…"
  },
  "updates": {
    "title": "Actualizaciones inteligentes",
    "body": "",
    "risk": {
      "critical": "Crítico",
      "high": "Alto",
      "medium": "Medio",
      "low": "Bajo"
    },
    "justNow": "En este momento",
    "secAgo": "Hace {{n}}s",
    "minAgo": "Hace {{n}}m",
    "hourAgo": "Hace {{n}}h",
    "highRiskN": "{{count}} alto riesgo",
    "panelUpdate": "Actualización del panel disponible",
    "footerNewVersion": "Nueva versión {{version}}",
    "riskOk": "Riesgo manejable",
    "riskUnevaluated": "No evaluado: ejecute Scan + OSV",
    "pendingScan": "En espera de escaneo",
    "packages": "Paquetes",
    "highRisk": "Alto riesgo",
    "needApproval": "Necesita aprobación",
    "hasCve": "Tiene CVE",
    "panel": "Panel",
    "schedule": "Cronograma",
    "reload": "Recargar",
    "osvTitle": "Consulta OSV para conocer los 12 paquetes principales sugeridos (necesita red)",
    "scanOsv": "Escanear + OSV",
    "cveNotChecked": "No comprobado",
    "scanPkgs": "Escanear paquetes",
    "tabInventory": "Inventario de paquetes",
    "tabSelf": "Panel propio",
    "badgeUpdate": "Actualizar",
    "tabSchedule": "Cronograma",
    "tabPolicy": "Política",
    "scanning": "Exploración…",
    "inventoryTitle": "Inventario de paquetes",
    "inventoryDesc": "Mostrando {{shown}} / {{total}} · inventariado {{when}}",
    "riskFilterAria": "Filtro de riesgo",
    "all": "Todo",
    "upgradable": "Actualizable",
    "mediumFilter": "Medio",
    "lowUnmarked": "Bajo / sin marcar",
    "searchPh": "Paquete / asesoramiento / CVE…",
    "searchAria": "Buscar paquetes",
    "colPackage": "Paquete",
    "colVersion": "Versión (instalada → candidato apto)",
    "installedTitle": "Instalado",
    "noUpgrade": "(no hay actualización disponible)",
    "colAdvice": "Consejo",
    "upgradeTo": "Actualice a {{v}}",
    "sameVersion": "El candidato apto coincide con la versión instalada.",
    "noNeedUpgrade": "No se necesita actualización",
    "emptyInventory": "Aún no hay datos del paquete",
    "emptyInventoryDesc": "Utilice \"Escanear paquetes\" en el encabezado de la página para inventariar este host",
    "emptyFilter": "Ningún paquete coincide con los filtros",
    "emptyFilterDesc": "Cambiar filtros de riesgo o borrar búsqueda",
    "resetFilters": "Restablecer filtros",
    "selfLoading": "Cargando estado de actualización automática...",
    "selfTitle": "Autoactualización del panel",
    "selfCheckFailed": "Verificación fallida",
    "selfUpToDate": "A hoy",
    "selfAvailable": "Actualización disponible",
    "selfCurrent": "Versión actual",
    "selfLatest": "Última versión",
    "selfChannel": "Canal",
    "checkSelf": "Buscar actualizaciones",
    "applySelf": "Aplicar actualización automática",
    "scheduleTitle": "Programación de escaneo automático",
    "scheduleDesc": "Inventario periódico; no se actualiza automáticamente",
    "enabled": "Activado",
    "disabled": "Desactivado",
    "cron": "expresión cron",
    "saveSchedule": "Guardar horario",
    "policyTitle": "Actualizar política",
    "policyBody": "Los paquetes de alto riesgo y CVE requieren aprobación antes de aplicarse",
    "applyPkg": "Aplicar actualización de paquete",
    "rebootNeeded": "reiniciar",
    "kernelRebootHint": "Los paquetes del kernel necesitan reiniciarse después de aplicar",
    "applyPkgConfirm": "¿Actualizar {{name}}?",
    "applyPkgDesc": "Ejecuta una actualización adecuada para este paquete en el host. Necesita root + YSK_EXECUTE.",
    "lastScan": "último escaneo",
    "never": "Nunca",
    "cve": "CVE",
    "riskCol": "Riesgo",
    "selfUpdatable": "Actualizable",
    "selfCurrentShort": "Actual",
    "selfLatestShort": "El último",
    "applyPanelUpdate": "Aplicar actualización del panel",
    "applySelfConfirmTitle": "¿Aplicar actualización del panel?",
    "applySelfConfirmDesc": "Instale {{from}} → {{to}} y reinicie el servicio del panel. No hay ningún ensayo.",
    "applyPanelAlreadyLatest": "Ya la última versión del panel.",
    "recheck": "Vuelva a comprobar",
    "aboutScope": "Alcance",
    "aboutScopeV": "panel ysk-server + servicios de catálogo + tiempos de ejecución + paquetes apt restantes",
    "aboutChannel": "Canal",
    "aboutChannelV": "paquete npm ysk-server → versión de GitHub → apps/server/package.json; aplicar: npm i -g ysk-server@version o git (YSK_SOURCE_ROOT)",
    "aboutFail": "Fallos",
    "aboutFailV": "Los canales no disponibles no se informan como actualizados; aplicar necesidades EJECUTAR; git apply necesita reiniciar el servicio",
    "jobsTitle": "Trabajos programados",
    "jobsSub": "Programador del plano de control (solo lectura) · {{count}}",
    "noJobs": "Sin horarios visibles",
    "noJobsDesc": "Trabajos de programador deshabilitados o sin trabajos todavía",
    "lastRun": "· último {{when}}",
    "scanPolicy": "Escanear",
    "scanPolicyV": "Escanear ≠ actualizado; aplicar cambios en el sistema",
    "highRiskPolicy": "Alto riesgo",
    "highRiskPolicyV": "Necesita aprobación: segunda confirmación antes de enviar",
    "needApprovalHint": "Abra Disponible y filtre por paquetes que necesitan aprobación",
    "applyNeedConfirm": "Abre un cuadro de diálogo de confirmación antes de aplicar.",
    "probeFailed": "Sonda fallida",
    "notViaApt": "No gestionado por apt: no hay candidato",
    "noCandidate": "Sin versión candidata",
    "cveLabel": "CVE",
    "jobOpenGeo": "página GeoIP",
    "job": {
      "protection_probe": {
        "name": "Sonda de protección",
        "hint": "Señales de defensa periódicas."
      },
      "updates_scan": {
        "name": "Escaneo de actualizaciones",
        "hint": "Actualizar inventario de paquetes"
      },
      "daily_backup": {
        "name": "Copia de seguridad diaria",
        "hint": "Copia de seguridad programada de todos"
      },
      "db_temp_expire": {
        "name": "Caducar usuarios temporales de base de datos",
        "hint": "Eliminar usuarios de bases de datos temporales caducados"
      },
      "defense_auto_ban": {
        "name": "Prohibición automática de defensa",
        "hint": "Aplicar marca de prohibición automática"
      },
      "defense_geoip_update": {
        "name": "Actualización GeoIP",
        "hint": "Descargar bases de datos GeoIP"
      },
      "log_auto_vacuum": {
        "name": "vacío de troncos",
        "hint": "retención en diario"
      },
      "email_dnsbl": {
        "name": "Correo electrónico DNSBL",
        "hint": "Comprobación DNSBL de correo"
      },
      "validators_upgrade_scan": {
        "name": "Escaneo de actualización de validadores",
        "hint": "Verifique la imagen del validador/actualizaciones binarias"
      }
    },
    "permPolicy": "Permisos",
    "permPolicyV": "Sin EXECUTE/root → bloqueado (sin éxito falso)",
    "osvPolicyV": "Necesidades de red; enriquece solo las 12 sugerencias principales",
    "relatedAria": "Relacionado",
    "scHost": "Configuración del anfitrión",
    "scReadiness": "Preparación",
    "scReadinessD": "Puerta de producción",
    "scSystemd": "unidad del sistema",
    "scSystemdD": "Servicio de plano de control",
    "scSecurity": "Centro de seguridad",
    "scSecurityD": "Aprobación / herramientas",
    "applyHighRisk": "¿Aplicar actualización de alto riesgo {{name}}?",
    "highRiskUpdate": "Actualización de alto riesgo",
    "remoteUnknown": "Remoto desconocido",
    "hasUpdate": "Actualización disponible",
    "scanned": "Paquete(s) {{count}} escaneados",
    "scannedWithOsv": "Paquete(s) {{count}} escaneados (con OSV)",
    "realUpgradeable": "{{count}} verdaderamente actualizable",
    "panelCheckFailed": "Error en la verificación de la versión del panel",
    "applyIncomplete": "Aplicar incompleto",
    "appliedPackage": "Actualización del paquete aplicada",
    "updateFailed": "La actualización falló",
    "updateIncomplete": "Actualización incompleta",
    "appliedUpdate": "Actualización aplicada",
    "panelRestarting": "El panel se está reiniciando para cargar la nueva versión…",
    "panelRestarted": "El panel ha vuelto · {{version}}",
    "panelRestartWait": "Actualización aplicada. Si esta página no se actualiza, recarga en unos segundos.",
    "reloadUi": "Recargar interfaz de usuario",
    "reloadUiTitle": "¿Recargar la interfaz de usuario del panel?",
    "reloadUiDesc": "El servicio del panel es {{version}}. Esta pestaña todavía tiene la interfaz anterior hasta que la recargues. Los campos no guardados en esta página se perderán.",
    "aptCandidate": "candidato apto",
    "advice": {
      "update": "Actualización recomendada",
      "skip": "Saltar",
      "watch": "Mirar",
      "urgent": "Actualización urgente"
    },
    "selectCol": "Seleccionar",
    "selectAllUpgradable": "Seleccionar todo actualizable",
    "clearSelection": "Borrar selección",
    "updateSelected": "Actualización seleccionada ({{n}})",
    "batchConfirmTitle": "¿Confirmar la actualización masiva del paquete?",
    "batchConfirmBody": "Actualizará {{n}} paquete(s) en orden. Requiere root y EJECUTAR.",
    "batchConfirmHighRisk": "La selección incluye paquetes de alto riesgo/aprobación; He revisado y apruebo la solicitud.",
    "batchProgress": "Actualización masiva {{n}}/{{total}}: {{pkg}}",
    "batchDone": "Realizado en bloque: {{ok}} ok, {{fail}} falló",
    "batchPartialFail": "Algunos fallaron: {{list}}",
    "batchEmpty": "Seleccione primero los paquetes actualizables",
    "batchNoneUpgradable": "No hay paquetes actualizables en el filtro actual",
    "batchCancel": "Cancelar en masa",
    "batchCancelling": "Cancelando… (se detiene después del paquete actual)",
    "batchCancelled": "Cancelado (restante omitido)",
    "batchRescanned": "Estado del paquete de host reescaneado",
    "applyLogTitle": "Actualizar()",
    "navBadgeTitle": "Actualizaciones pendientes: {{n}}",
    "aboutPolicySub": "Escanear, aplicar, privilegiar y límites OSV. El escaneo no es lo mismo que el actualizado.",
    "tabOverview": "Descripción general",
    "overviewHint": "El servidor escanea paquetes según una programación. Instale software en cada página de funciones; esta página solo verifica y aplica actualizaciones.",
    "overviewStale": "Los datos escaneados están desactualizados. Ejecute un escaneo o espere la siguiente verificación automática.",
    "nextScan": "Siguiente escaneo",
    "autoScan": "escaneo automático",
    "autoScanEnable": "Habilitar el análisis automático de paquetes",
    "scanInterval": "Intervalo de escaneo",
    "interval6h": "Cada 6 horas",
    "interval12h": "Cada 12 horas",
    "interval24h": "Cada 24 horas",
    "interval48h": "Cada 48 horas",
    "scheduleSaved": "Programación de escaneo guardada",
    "scanNow": "Escanear ahora",
    "viewUpgradable": "Ver actualizable",
    "installElsewhere": "Para instalar paquetes (Nginx, PHP, bases de datos…), abra la página de funciones correspondientes, no este centro.",
    "status": "Estado",
    "groupService": "Servicios",
    "groupRuntime": "Tiempos de ejecución",
    "groupOs": "Paquetes de sistema",
    "notInstalled": "No instalado",
    "goToPage": "Abrir página",
    "hubHint": "Catálogo de software y tiempos de ejecución en este host. Escanee para actualizar.",
    "intervalDay": "cada día",
    "intervalDays": "cada {{n}} días",
    "intervalHour": "cada hora",
    "intervalHours": "cada {{n}} horas",
    "intervalMinutes": "cada {{n}} minutos",
    "intervalSeconds": "cada {{n}} segundos",
    "availableHint": "Paquetes con un candidato más nuevo del administrador de paquetes.",
    "servicesHint": "Servicios de catálogo en este host. Abra la página de servicio para instalar.",
    "runtimeHint": "Tiempos de ejecución en este host. Las actualizaciones de versión se realizan en cada página de tiempo de ejecución.",
    "needsReboot": "Reiniciar es necesario",
    "kernelRebootWarn": "La instalación de un nuevo kernel generalmente requiere un reinicio antes de usarlo.",
    "neverRun": "aún no se ha ejecutado",
    "scanOsvN": "Escanear + OSV (primero {{n}})"
  },
  "users": {
    "userCount": "{{count}} usuarios",
    "users": "Usuarios",
    "packages": "Paquetes",
    "suspended": "Suspendido",
    "securityCenter": "Centro de seguridad",
    "singleAdminNo2fa": "Este host tiene un único administrador y 2FA está desactivado: habilite 2FA y agregue un administrador de respaldo.",
    "enableAdmin2fa": "Habilitar administrador 2FA",
    "addBackupAdmin": "Agregar un administrador de respaldo",
    "loading": "Cargando usuarios y paquetes…",
    "userList": "Usuarios ({{count}})",
    "userListDesc": "Abrir detalle para editar rol, contraseña, paquete, anulaciones",
    "createUser": "Crear usuario",
    "operatorHighRiskHint": "El operador de fábrica incluye escrituras de alto riesgo. Estrecharlo solo afecta cuentas nuevas; cambiar el valor predeterminado afecta a los operadores existentes.",
    "createUserPlus": "+ Crear usuario",
    "searchPh": "Nombre de usuario/rol/paquete",
    "searchPkgPh": "Nombre del paquete",
    "searchUsersAria": "Buscar usuarios",
    "user": "Usuario",
    "roles": "Roles",
    "package": "Paquete",
    "packageAria": "{{name}} paquete",
    "noneOption": "- ninguno -",
    "resume": "Reanudar",
    "suspend": "Suspender",
    "impersonate": "Personificar",
    "impersonateHint": "Abre una sesión como este usuario. Utilice el menú de cuenta para salir de la suplantación.",
    "cannotDeleteSelf": "No puede eliminar la cuenta con la que ha iniciado sesión",
    "cannotImpersonateSelf": "Ya has iniciado sesión como esta cuenta",
    "openDetail": "Detalles",
    "edit": "Editar",
    "resetPassword": "Restablecer contraseña",
    "newPassword": "Nueva contraseña",
    "saveUser": "Guardar usuario",
    "userSaved": "Actualizado {{name}}",
    "filterAll": "Todo",
    "filterAdmin": "Administración",
    "filterOperator": "Operador",
    "filterViewer": "Espectador",
    "filterSuspended": "Suspendido",
    "filterNoPkg": "Sin paquete",
    "filter2faOff": "2FA desactivado",
    "filterOverrides": "Tiene anulaciones",
    "subscribers": "Suscriptores",
    "subscribersN": "{{count}} usuarios",
    "ftp": "FTP",
    "ssh": "SSH",
    "databases": "Bases de datos",
    "bandwidth": "MiB de ancho de banda",
    "notes": "Notas",
    "editPkg": "Editar paquete",
    "pkgUpdated": "Paquete actualizado {{name}}",
    "pkgList": "Paquetes ({{count}})",
    "pkgListDesc": "Editar cuotas; eliminar bloqueado mientras los suscriptores permanecen",
    "createPkg": "Crear paquete",
    "createPkgPlus": "+ Crear paquete",
    "mailboxes": "Buzones",
    "diskMiB": "MiB de disco",
    "noPackages": "Aún no hay paquetes",
    "noPackagesHint": "Cree un plan desde la barra de herramientas y luego vincúlelo a los usuarios.",
    "createUserDesc": "Contraseña mínima de 8 caracteres; Edite la función y los permisos en detalle más adelante.",
    "username": "Nombre de usuario",
    "passwordHint": "Al menos 8 caracteres",
    "role": "Role",
    "roleAria": "Rol de usuario",
    "createPkgDesc": "Plantilla de cuota; vincularse a los usuarios más tarde",
    "maxProjects": "Proyectos máximos",
    "diskQuota": "MiB de disco",
    "custom": "Costumbre",
    "createdUser": "Usuario creado {{name}}",
    "createdPkg": "Paquete creado {{name}}",
    "impersonateTitle": "¿Suplantar {{name}}?",
    "deleteUserTitle": "¿Eliminar {{name}}?",
    "deletePkgTitle": "¿Eliminar paquete {{name}}?",
    "impersonateDesc": "Su sesión actual será reemplazada (~2 horas).",
    "deleteUserDesc": "Esto no se puede deshacer.",
    "deletePkgDesc": "La eliminación se rechaza mientras los usuarios sigan usando este paquete.",
    "lastSeen": "visto por última vez",
    "neverSeen": "Nunca",
    "hostUsage": "Uso del host",
    "hostUsageHint": "Totales de toda la máquina (host), no aislamiento estricto por usuario",
    "hostTotalsBadge": "totales del anfitrión",
    "opsChecklist": "Lista de verificación de operaciones",
    "opsCheck1": "Otorgue Administrador solo a personas que necesiten privilegios; utilice el Operador día a día.",
    "opsCheck2": "Guardar después de editar Permisos; La restauración con un solo clic devuelve los valores predeterminados de fábrica.",
    "opsCheck3": "No elimine paquetes con suscriptores; desasignar primero.",
    "opsCheck4": "La restauración de la copia de seguridad es destructiva: administrador de forma predeterminada; confirmar antes de conceder al Operador.",
    "detailDesc": "Cuenta, vista previa de acceso y anulaciones avanzadas",
    "tabAccount": "Cuenta",
    "tabAccess": "Acceso",
    "tabAdvanced": "Avanzado",
    "rolePickHint": "Elija el puesto de trabajo adecuado; El administrador permanece completamente abierto",
    "accountSection": "Configuraciones de la cuenta",
    "packageHint": "Plantilla de paquete de alojamiento (opcional)",
    "resetPasswordOptional": "Dejar en blanco para conservar la contraseña",
    "accountStatus": "Estado de la cuenta",
    "suspendedHint": "Suspendido: no puedo iniciar sesión",
    "activeHint": "Activo: puede iniciar sesión y trabajar",
    "accessHint": "Capacidades efectivas de la política de roles (etiquetas legibles)",
    "noCapsInBand": "No hay capacidades en este nivel.",
    "overridesHint": "Afecta únicamente a este usuario; los valores predeterminados de los roles permanecen sin cambios",
    "adminNoOverrides": "Los usuarios administradores siempre están completamente abiertos; No se aplican revocaciones personales.",
    "grantsHint": "Capacidades adicionales más allá del paquete de roles",
    "revokesHint": "Desactivar capacidades heredadas (no para administrador)",
    "searchCaps": "Capacidades de búsqueda...",
    "noCapMatch": "Sin capacidad de coincidencia",
    "no2fa": "2FA desactivado",
    "lastSeenValue": "Último activo {{time}}",
    "roleName": {
      "admin": "Administración",
      "operator": "Operador",
      "viewer": "Espectador",
      "agent": "Agente"
    },
    "roleDesc": {
      "admin": "Control total: usuarios, permisos, operaciones destructivas. Siempre completamente abierto.",
      "operator": "Operaciones del día a día: servicios, actualizaciones, DNS/SSL, sitios.",
      "viewer": "Sólo lectura: estado, registros, listas, sin cambios.",
      "agent": "Agente de automatización: escrituras de bajo riesgo con límites de alcance."
    },
    "securityTitle": "Autenticación de dos factores (este usuario)",
    "securityPerUserHint": "TOTP/Clave de acceso es por usuario",
    "securityStatusOn": "2FA habilitado",
    "securityStatusOff": "2FA no configurado",
    "securitySessions": "Sesiones activas",
    "securityClearTotp": "Forzar el borrado de 2FA de este usuario",
    "securityClearTotpHint": "Requiere un paso adelante",
    "securityClearConfirm": "Escriba el nombre de usuario para confirmar la eliminación de 2FA",
    "securityClearOk": "Se completó 2FA para {{name}}",
    "securitySelfNote": "Para configurar su propia 2FA, abra Seguridad → Mi seguridad.",
    "cannotModifySelf": "No puede suspender ni degradar la cuenta con la que ha iniciado sesión",
    "cannotDeleteLastAdmin": "No se puede eliminar el último administrador",
    "cannotDemoteLastAdmin": "No se puede suspender ni degradar al último administrador",
    "lockSelfHint": "Esta es la cuenta con la que ha iniciado sesión. Eliminar, suspender y cambiar el rol están bloqueados para evitar el bloqueo.",
    "lockLastAdminHint": "Este es el último administrador. Eliminar, suspender y degradar están bloqueados.",
    "demoteAdminTitle": "¿Degradar a este administrador?",
    "demoteAdminDesc": "Este usuario perderá el acceso completo de administrador. Confirme que queda otro administrador.",
    "quotaNonNeg": "Los conteos y cuotas no pueden ser negativos.",
    "diskQuotaHint": "Los ajustes preestablecidos son GiB; La caja personalizada es MiB.",
    "bandwidthHint": "0 significa ilimitado."
  },
  "validators": {
    "title": "Validadores (Beta)",
    "subtitle": "Instala y gestiona nodos L1 en este host. No custodial: tú conservas las claves.",
    "beta": "Beta",
    "tab": {
      "nodes": "Nodos",
      "disk": "Disco",
      "stack": "Software",
      "about": "Acerca de"
    },
    "empty": {
      "title": "Aún no hay nodos validador",
      "desc": "Crea un nodo de testnet en unos clics."
    },
    "refresh": "Actualizar",
    "software": {
      "engine": "Motor acoplable",
      "engineDesc": "Los nodos validadores se ejecutan como proyectos de redacción. Instale Docker aquí si falta. La eliminación de imágenes permanece en la página de Docker.",
      "client": "Cliente",
      "image": "Imagen",
      "present": "Local",
      "local": "tirado",
      "missing": "no tirado",
      "size": "Tamaño",
      "usedBy": "Utilizado por",
      "unused": "Ninguna instancia",
      "pull": "Pull",
      "pulled": "En este anfitrión",
      "pulling": "Tirar {{ref}}",
      "empty": "No hay imágenes de clientes fijadas",
      "emptyDesc": "El catálogo está vacío. Esto no debería suceder.",
      "daemonDown": "Docker Engine no se está ejecutando",
      "source": "Fuente",
      "official": "Oficial más reciente",
      "officialNewer": "Oficial más nuevo",
      "stale": "Detrás del pasador",
      "staleItem": "{{id}} ({{tag}})",
      "pin": "Pasador del panel",
      "openRelease": "Notas de la versión",
      "chooseOnInstance": "Cambie la versión en la página de la instancia. Al extraer una imagen, no se vuelve a etiquetar un nodo en ejecución."
    },
    "disk": {
      "title": "Disco de validadores",
      "root": "Directorio de datos",
      "free": "Libre",
      "used": "Usado",
      "fsUsed": "Sistema de archivos utilizado",
      "leftoverTitle": "Datos sobrantes ({{count}})",
      "leftoverEmpty": "No hay directorios de instancias sobrantes",
      "leftoverDesc": "Directorios bajo la raíz de los validadores que no son una instancia de tienda. Elimínelos solo después de confirmar que no se usaron.",
      "leftoverRemove": "Eliminar",
      "leftoverRemoveTitle": "¿Eliminar los datos sobrantes del validador?",
      "leftoverRemoveDesc": "Elimina permanentemente {{path}} del disco. Este no es un nodo listado.",
      "browseRoot": "Abrir en el explorador de archivos",
      "none": "Aún no hay datos de instancia",
      "warn": "El uso de disco es alto (70%+)",
      "danger": "El uso de disco es crítico (85%+)",
      "autoClear": "Vaciar automáticamente la instancia detenida más grande cuando el disco es crítico (desactivado por defecto)",
      "autoClearRisk": "Destructivo: la instancia detenida más grande se elimina sin más aviso. El valor predeterminado está desactivado. Verifique la auditoría/los registros después de que se active.",
      "autoClearConfirmTitle": "¿Habilitar el borrado automático?",
      "autoClearC1": "Cuando el disco es crítico, la instancia detenida más grande se elimina sin volver a preguntar.",
      "autoClearThreshold": "Desencadenante: uso del sistema de archivos igual o superior al 85%.",
      "autoClearCandidate": "Candidato actual: {{id}}",
      "autoClearCandidates": "Candidatos detenidos (el más grande con datos primero): {{list}}",
      "autoClearNone": "Ninguna instancia detenida es candidata en este momento."
    },
    "chain": {
      "eth": "Ethereum",
      "avax": "Avalanche",
      "near": "NEAR",
      "ada": "Cardano",
      "btc": "Bitcoin",
      "cosmos": "Cosmos Hub",
      "sui": "Sui",
      "aptos": "Aptos",
      "dot": "Polkadot",
      "sol": "Solana"
    },
    "network": {
      "hoodi": "Hoodi",
      "sepolia": "Sepolia",
      "mainnet": "Red principal",
      "fuji": "Fuji",
      "testnet": "Red de pruebas",
      "preview": "Avance",
      "preprod": "preproducción",
      "westend": "Westend"
    },
    "networkKind": {
      "testnet": "Red de pruebas",
      "mainnet": "Red principal",
      "mixed": "Red principal + red de prueba"
    },
    "profile": {
      "minimal": "Mínimo",
      "pruned": "Pruned",
      "validator-ready": "Listo para validador",
      "rpc": "RPC"
    },
    "profileHelp": {
      "title": "Profiles",
      "desc": "The four choices on wizard step 3 are mainly disk budget and role. Each chain shows its recommended size in the wizard. The panel never holds staking keys.",
      "colName": "Perfil",
      "colUse": "Usar para",
      "colDisk": "Disco",
      "colStake": "Validador de apuestas",
      "useMinimal": "Testnet o una primera instalación. No es una historia completa.",
      "usePruned": "Siga la punta de la cadena a largo plazo. Mantiene solo datos recientes (podados).",
      "useValidatorReady": "Dimensionado para que luego puedas dar fe o proponer. Genere claves sin conexión usted mismo.",
      "useRpc": "Deje que este host u otros servicios consulten la cadena. Escucha en 127.0.0.1 de forma predeterminada.",
      "diskMinimal": "Pequeñísimo",
      "diskPruned": "Medio (más que mínimo)",
      "diskValidatorReady": "El más grande de los cuatro.",
      "diskRpc": "Depende de la cadena",
      "stakeNo": "No apto",
      "stakeYes": "Sí, sin conexión o mal configurado puede perder participación",
      "stakeRpc": "No es un validador",
      "minimal": "Disco más pequeño. Úselo para redes de prueba o una primera instalación. No es un historial completo y no es para un validador de apuestas en vivo.",
      "pruned": "Mantiene el estado de la cadena reciente y elimina los bloques más antiguos (podados). Más disco que Minimal, menos que un nodo completo. Úselo para seguir el consejo a largo plazo.",
      "validatorReady": "Reserva más disco para que luego puedas dar fe o proponer como validador. Genere claves sin conexión usted mismo. Estar desconectado o mal configurado puede hacer perder apuesta.",
      "rpc": "Para que este host u otros servicios consulten la cadena. RPC escucha en 127.0.0.1 de forma predeterminada y no se publica en Internet."
    },
    "col": {
      "id": "ID",
      "chain": "Cadena",
      "network": "Red",
      "profile": "Perfil",
      "status": "Estado",
      "traffic": "Tráfico",
      "disk": "Disco"
    },
    "cli": {
      "usage": "Uso: ysk-server validators list|chains|disk|get|status|checklist|logs|create|start|stop|restart|clear|upgrade|set-version|versions|policy|mithril|prune|switch-network|snapshot|compose|compose-write|rewrite-compose|software|pull|leftover-remove|stats|settings|producer-keys|producer-detach|near-account [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--el-tag T] [--cl-tag T] [--node-tag T] [--client ID] [--tag T] [--data-path P] [--rpc-port N] [--id ID] [--path PATH] [--file PATH] [--image REF] [--upgrade POLICY] [--confirm TOKEN] [--kes-file P] [--vrf-file P] [--opcert-file P] [--accept-low-disk] [--accept-low-mem] [--accept-mainnet] [--refresh] [--execute] [--json]"
    },
    "clients": {
      "el": "Cliente de ejecución",
      "cl": "Cliente de consenso",
      "version": "Versión",
      "pin": "Pasador del panel",
      "officialNewer": "Oficial más nuevo",
      "olderThanPin": "Más antiguo que el pin del panel.",
      "prerelease": "Presentación",
      "current": "Corriendo ahora",
      "source": "Fuente de la imagen"
    },
    "mithril": {
      "label": "Restaurar primero desde instantánea Mithril (recomendado en testnet)",
      "hint": "Esta es una restauración única después de la instalación. No está escrito en redacción. También puedes ejecutarlo más tarde desde la página de la instancia.",
      "action": "Restaurar con Mithril"
    },
    "errors": {
      "notFound": "Instancia de validador no encontrada",
      "invalidId": "Id de instancia no válido",
      "diskLow": "No hay disco libre suficiente para esta cadena, red y perfil",
      "memLow": "No hay suficiente RAM libre para el límite de memoria de esta cadena",
      "diskUnknownMainnet": "No se puede medir el disco libre; se rechaza crear en red principal",
      "needDocker": "Se requiere Docker Compose y no se encontró",
      "composeFailed": "docker compose falló",
      "containerNotUp": "Se inició la redacción, pero el contenedor no siguió ejecutándose",
      "probeFailed": "El nodo aún no responde a RPC. Consulte los registros en esta página.",
      "oom": "Sin memoria. Establezca un límite de memoria o agregue RAM, luego reinicie.",
      "nofile": "El proceso alcanzó el límite de archivos abiertos (nofile). Levante ulimits.nofile y reinicie.",
      "noContainer": "No existe ningún contenedor de redacción para esta instancia.",
      "restarting": "El contenedor se está reiniciando. Consulte los registros en esta página.",
      "restartingCount": "El contenedor se está reiniciando ({{n}}). Consulte los registros en esta página.",
      "needConfirm": "Vaciar exige confirm=id de instancia o CLEAR",
      "mithrilAdaOnly": "La restauración Mithril solo está disponible para Cardano",
      "needMithrilConfirm": "Mithril exige confirm=id de instancia o MITHRIL",
      "mithrilBlocked": "El docker run de Mithril fue bloqueado por la lista permitida",
      "mithrilKey": "No se pudo cargar la clave de verificación genesis de Mithril",
      "mithrilFailed": "Falló la descarga de la instantánea Mithril",
      "pruneFailed": "La limpieza falló",
      "switchNeedStop": "Detén el nodo antes de cambiar de red",
      "switchNeedClear": "Cambiar de red borra los datos de cadena. Confirma con el id de instancia o CLEAR",
      "composeMissing": "No se encontró el archivo Compose",
      "composeNotManaged": "Se rechaza escribir un archivo Compose que no gestiona YSK",
      "badDataPath": "La ruta de datos debe ser un directorio absoluto fuera de las rutas del sistema",
      "portInUse": "Ese puerto RPC ya lo usa otra instancia de validador",
      "badTag": "Esa versión del cliente no es una etiqueta oficial para esta imagen.",
      "needVersionConfirm": "Cambiar la versión requiere confirmación = ID de instancia",
      "needMainnetVersionAck": "Los cambios en la versión de Mainnet requieren aceptar Mainnet",
      "snapshotUnsupported": "No hay origen de instantánea permitido para esta cadena",
      "snapshotLookup": "No se pudo resolver el puntero oficial de instantánea",
      "needSnapshotConfirm": "Restaurar instantánea exige confirm=id de instancia o SNAPSHOT",
      "snapshotBlocked": "El docker run de instantánea fue bloqueado por la lista permitida",
      "snapshotFailed": "Falló la descarga o extracción de la instantánea",
      "producerAdaOnly": "Las claves de productor son solo para Cardano",
      "needProducerConfirm": "Adjuntar claves de productor requiere confirmación = ID de instancia o PRODUCTOR",
      "needMainnetProducerAck": "La conexión del productor de Mainnet requiere aceptar Mainnet",
      "producerColdRejected": "Se rechazan las claves de firma en frío o del propietario del grupo. Mantenga las claves frías fuera de línea.",
      "producerTooLarge": "Ese archivo clave tiene más de 64 KiB.",
      "producerBadType": "Ese archivo no es una clave KES, una clave VRF ni un certificado operativo.",
      "producerEmpty": "Proporcione al menos uno de kes, vrf u opcert",
      "switchNeedDetachProducer": "Separe las claves de productor antes de cambiar de red",
      "nearAccountInvalid": "El nombre del grupo debe ser un slug corto (o la cuenta {pool}{factory} completa).",
      "nearKeyMissing": "validator_key.json falta o no tiene clave_pública. Inicie el nodo y espere neard init."
    },
    "notes": {
      "beta": "Esta función es Beta. Los cambios de host necesitan root y YSK_EXECUTE=1.",
      "noKeys": "YSK Server nunca genera ni guarda claves de staking.",
      "dockerSoon": "Instale y comience desde esta página del asistente. Los cambios de host necesitan root y YSK_EXECUTE=1.",
      "dryCreate": "Se escribió la especificación y el compose (dry-run). Pasa --execute y YSK_EXECUTE=1 para iniciar contenedores.",
      "dryStart": "El arranque es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "dryStop": "La parada es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "dryClear": "El vaciado es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "created": "Nodo creado y compose iniciado",
      "started": "Nodo iniciado",
      "stopped": "Nodo detenido",
      "cleared": "Datos de cadena vaciados",
      "dryMithril": "La restauración Mithril es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "mithril": "Instantánea Mithril restaurada; nodo reiniciado",
      "dryPrune": "La limpieza es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "pruned": "Imágenes no usadas del proyecto limpiadas",
      "pruneProfile": "La poda nativa del cliente es el perfil pruned／minimal. Recrea para cambiarlo.",
      "sameNetwork": "Ya está en esa red",
      "drySwitch": "El cambio de red es dry-run.",
      "switched": "Red cambiada y datos de cadena vaciados",
      "dryCompose": "Se escribiría compose.yml",
      "composeWrote": "Se escribió compose.yml",
      "statsEmpty": "No hay contenedores en ejecución para medir",
      "autoClearNone": "No hay instancia detenida para vaciar automáticamente",
      "drySnapshot": "La restauración de instantánea es dry-run. Pasa --execute y YSK_EXECUTE=1.",
      "snapshotEthEl": "Archivo EL de ethPandaOps restaurado y CL restablecido para checkpoint sync",
      "snapshotEthCl": "Datos CL restablecidos para el checkpoint sync oficial",
      "snapshotNear": "Datos NEAR borrados; compose reinicializará con genesis oficial y epoch sync",
      "nativePrune": "Se ejecutó la poda nativa del cliente",
      "dryProducer": "Las claves del productor son de ejecución en seco. Agregue --execute y YSK_EXECUTE=1.",
      "dryProducerDetach": "La separación de productores es un ensayo. Agregue --execute y YSK_EXECUTE=1.",
      "producerPartial": "Escribió teclas de acceso rápido. Adjunte KES, VRF y opcert antes de que el nodo comience como productor de bloques.",
      "producerAttached": "Teclas de acceso rápido adjuntas; componer reescrito como productor de bloques",
      "producerDetached": "Se eliminaron las teclas de acceso rápido; componer reescrito como relevo",
      "dryDelete": "Eliminar es un ensayo en seco. Pase --execute y YSK_EXECUTE=1.",
      "deleted": "Nodo eliminado",
      "leftoverRemoved": "Se eliminaron los restos {{path}}",
      "dryNearAccount": "Establecería account_id en {{account}} (pasar --ejecutar). El secreto nunca cambia.",
      "nearAccountWrote": "Establezca account_id en {{account}}. El secreto no fue cambiado. Reinicie el nodo si se está ejecutando."
    },
    "create": "Crear nodo",
    "wizard": {
      "title": "Crear nodo",
      "stepOf": "Paso {{n}} / {{total}}",
      "stepChain": "Cadena",
      "stepNetwork": "Red",
      "stepProfile": "Perfil",
      "stepSummary": "Resumen",
      "needDocker": "Docker Engine no está instalado. Instálelo primero: este botón permanece deshabilitado.",
      "diskNeed": "Este perfil necesita aproximadamente {{need}} · gratis {{free}}",
      "diskNeedNetwork": "El valor predeterminado (mínimo) para esta red necesita aproximadamente {{need}} · gratis {{free}}",
      "profileHint": {
        "minimal": "Sincronización más pequeña: disco ligero, no para apostar.",
        "pruned": "Mantiene solo el historial reciente (podado). Más pequeño que el archivo, aún utilizable para RPC.",
        "validator-ready": "Tamaño para un validador de apuestas. Necesita más disco que Mínimo.",
        "rpc": "Nodo RPC público: no es un validador de apuestas."
      },
      "diskShort": "No hay suficiente disco libre para esta cadena/red/perfil",
      "diskShortDetail": "Necesita {{need}} · gratis {{free}} · corto {{short}}",
      "memShort": "No hay suficiente RAM libre para el límite de memoria de esta cadena",
      "memShortDetail": "Necesita {{need}} · gratis {{free}} · corto {{short}}",
      "needCustomPath": "Introduzca una ruta de datos absoluta",
      "previewId": "ID de nodo",
      "previewCompose": "Redactar proyecto",
      "profileSeeAbout": "What each profile means is on the About tab.",
      "back": "Atrás",
      "next": "Siguiente",
      "install": "Instalar",
      "mainnetWarn": "La red principal necesita mucho disco libre (ETH suele ser 800 GiB+). Se recomienda testnet.",
      "mainnetAck": "Entiendo el riesgo de disco y slashing. Continuar en red principal.",
      "lowDiskAcked": "El disco libre está por debajo del tamaño recomendado. Confirmaste crear de todos modos; la sincronización puede detenerse si el disco se llena.",
      "lowMemAcked": "La RAM libre está por debajo del límite de memoria de esta cadena más 1 GiB de espacio libre. Confirmaste crear de todos modos; el nodo puede OOM o detenerse.",
      "heavyWarn": "Esta cadena es pesada (mucho disco y IOPS altos). Solana en red principal suele necesitar 2 TiB+.",
      "memory": "Límite de memoria (p. ej. 4g)",
      "cpus": "Límite de CPU (p. ej. 2.0)",
      "dataPath": "Ruta de datos (opcional)",
      "rpcPort": "Puerto RPC (opcional)",
      "limitNone": "Sin límite",
      "rpcDefault": "Por defecto",
      "customPath": "Utilice una ruta de datos personalizada",
      "installConfirmTitle": "¿Instalar este nodo?",
      "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. Aproximadamente {{disk}} de disco. La extracción de imágenes puede llevar mucho tiempo.",
      "installC1": "Se pueden descargar varios gigabytes de imágenes.",
      "installC2": "Puede cancelar la tarea del panel; Las imágenes ya extraídas no se eliminan automáticamente.",
      "installC3": "Mainnet usa mucho disco. Un validador de apuestas puede perder participación si está desconectado o mal configurado. Escriba la identificación del nodo para confirmar.",
      "dockerAbout": "Se requiere Docker Engine para instalar e iniciar nodos.",
      "dockerAboutOk": "El motor Docker está instalado.",
      "dockerAboutMissing": "Docker Engine no está instalado. Abra Docker para instalarlo.",
      "rewriteCompose": "Reescribir componer",
      "rewriteComposeTitle": "¿Reescribir compose.yml desde el adaptador actual?",
      "rewriteComposeDesc": "Sobrescribe la redacción generada para {{id}} utilizando los indicadores enviados para esta cadena.",
      "chainMeta": "{{disk}} min · {{clients}} clientes"
    },
    "actions": {
      "detail": "Detalles",
      "start": "Iniciar",
      "stop": "Detener",
      "restart": "Reiniciar",
      "clear": "Vaciar",
      "upgrade": "Actualizar",
      "setVersion": "Cambiar versión",
      "clearConfirm": "Escribe el id de instancia o CLEAR",
      "prune": "Limpiar imágenes",
      "switchNetwork": "Cambiar red",
      "removeUnit": "También eliminar compose / registro de instancia",
      "restoreAfter": "Restaurar instantánea tras vaciar",
      "delete": "Borrar",
      "deleteTitle": "Eliminar {{id}}",
      "deleteDesc": "Esto elimina el nodo del panel.",
      "deleteC1": "Docker Compose se detiene y se elimina",
      "deleteC2": "Se eliminan los datos de la cadena en el disco.",
      "deleteC3": "Se elimina el registro de instancia.",
      "pruneTitle": "Podar imágenes no utilizadas",
      "pruneDesc": "Escriba la identificación de la instancia para eliminar las imágenes de Compose no utilizadas para este nodo.",
      "pruneC1": "Las imágenes no utilizadas etiquetadas para este proyecto de Compose se eliminan.",
      "clearTitle": "Borrar {{id}}",
      "clearC1": "Se eliminan los datos de la cadena en el disco.",
      "clearC2": "La instancia permanece en el panel, parada y vacía.",
      "switchTitle": "Cambiar de red",
      "switchC1": "El nodo se detiene y los datos de la cadena se borran antes de escribir la nueva red."
    },
    "policy": {
      "label": "Política de actualización",
      "manual": "A mano",
      "notify": "Notificar",
      "auto-safe": "Automático (seguro)",
      "auto-all": "Automático (todo)"
    },
    "logs": {
      "empty": "Aún no hay registros",
      "follow": "Seguir registros"
    },
    "compose": {
      "label": "Archivo Compose",
      "save": "Guardar compose"
    },
    "snapshot": {
      "action": "Restaurar instantánea",
      "mithril": "Cardano usa Mithril para restaurar instantáneas certificadas.",
      "eth": "Ethereum en red principal arranca con checkpoint sync oficial del cliente de consenso. El EL sigue con snap sync.",
      "ethEl": "Hoodi/Sepolia pueden restaurar un archivo EL de ethPandaOps y luego hacer checkpoint-sync del CL.",
      "avax": "Avalanche usa state-sync en el perfil compose.",
      "near": "Las instantáneas tar gratuitas oficiales de NEAR se retiraron. Restaurar borra datos y usa genesis oficial más epoch sync.",
      "none": "No hay origen de instantánea configurado para esta cadena."
    },
    "producer": {
      "title": "Teclas de acceso rápido del productor de bloques",
      "hint": "Esta no es una dirección IP. Cargue la clave KES, la clave VRF y el certificado operativo desde una máquina fuera de línea. Mantenga las llaves frías alejadas de este host.",
      "warn": "El mismo nodo con un puerto P2P público firmará bloques. La topología oficial mantiene al productor fuera de la Internet pública. Estos tres archivos son teclas de acceso rápido.",
      "kes": "KES",
      "vrf": "VRF",
      "opcert": "opcert",
      "missing": "No adjunto",
      "present": "Adjunto {{fp}}",
      "presentShort": "En anfitrión",
      "queuedShort": "Listo",
      "queued": "Seleccionado · {{name}}",
      "fileHint": "Nombre típico {{file}}",
      "dropOrBrowse": "Coloque {{file}} aquí o explore",
      "dropping": "Soltar para adjuntar {{label}}",
      "browse": "Navegar",
      "clearFile": "Eliminar",
      "choose": "Elige el archivo",
      "apply": "Aplicar y reiniciar como productor de bloques.",
      "detach": "Desconectar y ejecutar como relé",
      "applyTitle": "¿Adjuntar teclas de acceso rápido a {{id}}?",
      "applyDesc": "KES, VRF y opcert están escritos en el directorio de claves de instancia. Redactar se reescribe. El contenedor se reinicia como productor de bloques.",
      "applyC1": "Las claves frías deben permanecer fuera de línea. No subas cold.skey.",
      "applyC2": "El nodo en ejecución puede firmar bloques si estos archivos son válidos.",
      "applyC3": "Mainnet: un productor fuera de línea o mal configurado pierde bloques.",
      "detachTitle": "¿Separar las claves de productor de {{id}}?",
      "detachDesc": "Las teclas de acceso rápido se eliminan de este host. Redactar vuelve al relevo.",
      "detachC1": "El nodo ya no producirá bloques.",
      "mainnet": "Mainnet: entiendo que este host contendrá teclas de acceso rápido y firmará bloques."
    },
    "stake": {
      "title": "Preparar staking (tú conservas las claves)",
      "offlineKeys": "Genera las claves sin conexión. El panel nunca las guarda.",
      "deposit": "Completa el depósito / registro en el launchpad oficial.",
      "withdrawal": "Configura tú mismo las credenciales de retirada.",
      "monitor": "Vigila disco, pares e insignias de actualización en esta página."
    },
    "playbook": {
      "overviewTitle": "Cómo funciona el replanteo en cada cadena",
      "overviewDesc": "Este panel ejecuta el nodo. Tu billetera y tus llaves se quedan contigo. Solo enlaces oficiales: nunca comparta una frase inicial aquí.",
      "colChain": "Cadena",
      "colModel": "como te registras",
      "colMin": "Mínimo típico",
      "colWallet": "Tu billetera",
      "colPanel": "Qué hace este panel",
      "yskDoes": "Este panel hace",
      "youDo": "Tú haces",
      "steps": "Pasos",
      "never": "No",
      "official": "Enlaces oficiales",
      "seeAbout": "Los pasos completos se encuentran en la pestaña Acerca de.",
      "nodeIdReady": "NodeID (de este nodo)",
      "nodeIdPending": "NodeID aparece después de que el nodo se sincroniza y responde a RPC.",
      "blsReady": "clave pública BLS",
      "blsProof": "Prueba de posesión BLS",
      "blsPending": "Las credenciales de BLS aparecen después de que el nodo responde a RPC.",
      "copyAll": "Copiar todo",
      "copyNamed": "Copiar {{label}}",
      "nearStakeKey": "Replantear clave pública",
      "nearStakeKeyPending": "Aparece después del primer inicio (cerca del inicio). RPC no listo no significa que falte la clave.",
      "nearAccountId": "Archivo clave account_id",
      "nearAccountIdPending": "A menudo está vacío hasta que lo configura en {{pool}}{{suffix}} después de que existe el grupo. El panel escribe sólo este campo, nunca secret_key.",
      "nearFactory": "Fábrica de pools de apuestas",
      "nearPublicAddr": "P2P público (pares)",
      "nearPublicAddrPending": "Aparece después del primer inicio y escribe WAN:{{port}} en config.json.",
      "nearCreateCommand": "comando create_staking_pool",
      "nearPointing": "El contrato del grupo no toma la IP de este servidor. Almacena la clave pública de participación de este nodo. Los pares usan la fila P2P público de arriba (puerto de host {{port}}). RPC permanece en el host local.",
      "nearAccountIdHint": "Una vez que exista el grupo, configure account_id aquí (no edite el archivo a mano). El panel nunca escribe secret_key.",
      "cosmosPubkey": "Clave pública de consenso",
      "cosmosPubkeyPending": "Aparece después de que gaiad init escribe priv_validator_key.json. RPC no listo no significa que falte la clave.",
      "cosmosChainId": "ID de cadena",
      "cosmosP2p": "P2P público (dirección_externa)",
      "cosmosP2pPending": "Aparece después del primer inicio y escribe tcp://WAN:{{port}} en config.toml.",
      "ethBeacon": "API de baliza (localhost)",
      "ethBeaconPending": "Baliza HTTP en este host. Apunte un cliente de validación que usted mismo ejecute a esta URL; esta redacción no tiene VC.",
      "cosmosCreateCommand": "comando crear-validador",
      "cosmosCreateJson": "validator.json (gaiad v28)",
      "copyFailed": "Copia fallida",
      "solIdentity": "Clave pública de identidad",
      "solIdentityPending": "Aparece después de que RPC responde getIdentity. Este proceso no requiere votación hasta que usted mismo agregue una cuenta de votación.",
      "adaP2pPort": "Puerto P2P de relé",
      "adaP2pPending": "Anuncie el IPv4 (o DNS) público de este host y este puerto en el certificado de registro del grupo. topology.json localRoots es para su propio productor de bloques. Este panel no sondea WAN.",
      "notPosTitle": "No prueba de participación",
      "notPosBody": "Bitcoin aquí es un nodo completo o podado. No hay ninguna billetera de apuestas en esta página.",
      "eth": {
        "model": "Esta composición ejecuta ejecución + baliza únicamente, no un cliente validador. Deposite 32 ETH en la plataforma de lanzamiento oficial.",
        "min": "32 ETH + gasolina",
        "wallets": "MetaMask, Ledger, Trezor: solo en la plataforma de lanzamiento oficial",
        "panel": "Ejecuta EL + baliza. RPC y API de baliza en localhost. No hay cliente validador en redacción.",
        "honesty": "Esta instancia es solo ejecución + baliza. No hay ningún cliente validador en el archivo de redacción. Copiar un almacén de claves en el directorio de datos de la baliza no comenzará la certificación. El contrato de depósito no toma la IP de este servidor.",
        "yskDoes": [
          "Instale e inicie los clientes de ejecución y baliza.",
          "Muestra el estado del disco, los pares y la actualización.",
          "No ejecuta un cliente de validación y no carga un almacén de claves de firma."
        ],
        "youDo": [
          "Cree usted mismo el almacén de claves y la dirección de retiro en la plataforma de lanzamiento oficial o con sating-deposit-cli.",
          "Deposite 32 ETH en la plataforma de lanzamiento de esta red.",
          "Ejecute un cliente de validación usted mismo (no este redactado) contra la API de baliza localhost de esta instancia."
        ],
        "steps": [
          "Espere hasta que la ejecución y la baliza estén sincronizadas.",
          "Abra la plataforma de lanzamiento oficial de esta red (Hoodi o Mainnet en esta página). Sepolia no tiene ningún botón de plataforma de lanzamiento aquí.",
          "Sin conexión, genere el keystore (staking-deposit-cli). Configure la dirección de retiro en su propia billetera ETH.",
          "Deposite 32 ETH en el launchpad (guarde más para gasolina).",
          "Ejecute un validator client usted mismo contra la URL de baliza en esta tarjeta (ejemplo: lighthouse vc --beacon-nodes). Esta redacción no tiene VC; poner un keystore en el directorio de datos de la baliza no da fe."
        ],
        "never": [
          "Nunca le dé su frase inicial o clave de retiro a nadie, incluido este panel.",
          "Nunca cargue un almacén de claves de firma en una nube alojada.",
          "No espere que esta página dé fe después de copiar un almacén de claves en el directorio de datos de la baliza."
        ]
      },
      "avax": {
        "model": "Registre la prueba NodeID y BLS en ejecución en P-Chain desde Core o Ledger.",
        "min": "2.000 AVAX + tarifa (1 AVAX en Fuji); al menos 14 días",
        "wallets": "Núcleo, libro mayor",
        "panel": "Ejecuta avalanchego y puede mostrar NodeID y BLS después de las respuestas de RPC",
        "yskDoes": [
          "Ejecute avalanchego y mantenga RPC en localhost.",
          "Muestre las credenciales de NodeID y BLS una vez que el nodo responda a RPC."
        ],
        "youDo": [
          "Mantenga AVAX en Core o Ledger.",
          "Agregue el validador de Core utilizando el NodeID y la prueba BLS de este nodo."
        ],
        "steps": [
          "Espere hasta que este nodo esté sincronizado y aparezcan las filas NodeID / BLS (RPC).",
          "Copie la clave pública NodeID, BLS y la prueba de posesión BLS.",
          "En Core web (Stake → Validar), o con Ledger vía Core, regístrese en P-Chain. La transacción no requiere una IP de servidor.",
          "Mainnet necesita al menos 2000 AVAX, un período mínimo de 14 días y una reserva de tarifas. Fuji es 1 AVAX."
        ],
        "never": [
          "No envíe AVAX a este panel.",
          "No comparta su frase de recuperación de Core o Ledger."
        ]
      },
      "ada": {
        "model": "Opere un grupo de apuestas con claves frías/KES/VRF fuera de línea, sin tocar la billetera del navegador.",
        "min": "El compromiso es su elección (ver documentos oficiales)",
        "wallets": "Herramientas oficiales del grupo de interés (las claves en frío permanecen fuera de línea)",
        "panel": "Primero ejecuta cardano-node como retransmisión; Las teclas de acceso rápido se pueden adjuntar en esta página.",
        "honesty": "Esta instancia comienza como un relevo. El registro del grupo en cadena utiliza claves frías que se mantienen fuera de línea. Los pares y la topología utilizan el IPv4 público de este host y el puerto P2P que se muestra aquí; el panel no explora la WAN.",
        "yskDoes": [
          "Ejecute la restauración de instantáneas de cardano-node y Mithril cuando se ofrezca.",
          "Adjunte KES, VRF y opcert cuando los proporcione. Se rechazan las claves frías."
        ],
        "youDo": [
          "Genere claves de grupo sin conexión.",
          "Registre el grupo con la CLI oficial de Cardano. Coloque el IPv4 o DNS público de este host y el puerto de retransmisión P2P en el certificado de registro del grupo.",
          "Adjunte KES, VRF y opcert en esta página. No cargue claves frías."
        ],
        "steps": [
          "Lea la guía oficial para operar un pool de participación.",
          "Genere claves frías, KES y VRF en una máquina fuera de línea.",
          "Registre el grupo en cadena. Anuncie el relé en ese certificado (--pool-relay-ipv4 o DNS + el puerto P2P en esta tarjeta). El descubrimiento público es el certificado, no topology.json.",
          "En esta página de instancia, adjunte KES, VRF y el certificado operativo. Se rechazan las claves frías.",
          "topology.json localRoots es para su propio productor de bloques (anuncio: falso). Este panel no busca la dirección WAN."
        ],
        "never": [
          "No trate esto como una apuesta de un solo clic de MetaMask.",
          "No almacene claves frías en el host del validador.",
          "No espere que la edición topology.json por sí sola registre el relé en cadena."
        ]
      },
      "near": {
        "model": "Cree un contrato de participación en la fábrica oficial. El contrato almacena la clave pública de este nodo, no la IP del servidor.",
        "min": "Consulte los documentos oficiales del validador (30 NEAR para crear el grupo, más la apuesta)",
        "wallets": "Cartera/bloqueo oficial NEAR",
        "panel": "Ejecuta neard; el formulario se llena create_staking_pool; una vez que existe el grupo, escribe solo account_id.",
        "yskDoes": [
          "Ejecute neard con RPC en localhost y P2P en 24567.",
          "Después de iniciar, muestre la clave pública de la participación, la dirección pública P2P y la fábrica.",
          "Complete create_staking_pool desde el nombre del grupo + propietario + clave pública. Una vez que exista el grupo, escriba solo account_id, nunca secret_key, nunca la transacción."
        ],
        "youDo": [
          "Inicie el nodo y espere la clave pública en esta página.",
          "Ingrese el nombre y el propietario del grupo, luego copie el comando.",
          "Firme create_staking_pool desde su propia billetera NEAR o cerca de CLI.",
          "Regrese aquí y configure account_id. Apueste de su billetera a ese grupo."
        ],
        "steps": [
          "Inicie el nodo y espere a que se acerque el inicio para que aparezca la clave pública (RPC no listo no es lo mismo que claves faltantes).",
          "Ingrese el nombre corto del grupo y la cuenta del propietario. Copie el comando create_staking_pool completo.",
          "Desde su billetera, llame a la fábrica (testnet pool.f863973.m0 / mainnet poolv1.near) con 30 NEAR para almacenamiento. El comando usa --accountId; Si su CLI cercana espera --account_id, siga la ayuda de esa CLI.",
          "Una vez que exista el grupo, use Establecer account_id en esta página (confirmar = ID de instancia). No edite validator_key.json a mano.",
          "Reinicie si el nodo ya se está ejecutando. Espere hasta que RPC responda y el nodo esté sincronizado antes de apostar grandes cantidades. Los pares usan Público P2P: el contrato no requiere una IP."
        ],
        "never": [
          "No pegue una frase inicial en este panel.",
          "No incluya la IP de este servidor en el contrato.",
          "No espere que el panel envíe la transacción create_staking_pool."
        ]
      },
      "cosmos": {
        "model": "cree-validador desde la billetera de su operador utilizando la clave pública de consenso de este nodo, no la IP del servidor.",
        "min": "Ver documentos oficiales de Cosmos Hub (autodelegación en uatom)",
        "wallets": "Keplr u otra billetera Cosmos que controles",
        "panel": "Ejecuta gaiad v28; muestra clave pública de consenso; El formulario llena validator.json + create-validator. Nunca escribe priv_validator_key.json ni transmite.",
        "honesty": "Esta gaiad es v28 (archivo JSON). Los documentos de Hub todavía muestran banderas; esas fallan aquí. La transacción almacena la clave pública de consenso de este nodo, no la IP del servidor. Los pares utilizan P2P público. RPC permanece en el host local. Este panel no transmite ni lee priv_key.",
        "yskDoes": [
          "Ejecute gaiad con RPC en localhost y P2P en 26656. Los precios mínimos del gas son 0.005uatom.",
          "Después de iniciar, muestre la clave pública de consenso, el identificador de cadena y el P2P público.",
          "Complete validator.json y el comando gaiad v28 desde cantidad, moniker y --from más la clave pública de consenso. Nunca escriba priv_validator_key.json ni transmita la transacción."
        ],
        "youDo": [
          "Inicie el nodo y espere la clave pública de consenso en esta página.",
          "Ingrese el monto, el apodo y --desde. Copie validator.json, luego el comando gaiad.",
          "Firma desde Keplr o las claves gaiad que controlas. No mezcle ese mnemónico con la clave de consenso en este host."
        ],
        "steps": [
          "Inicie el nodo y espere gaiad init para que aparezca la clave pública de consenso (RPC no listo no es lo mismo que claves faltantes).",
          "Ingrese autodelegación (1 átomo = 1 ÁTOMO o uatom), apodo y --from. Copie validator.json y luego el comando gaiad. Este nodo es gaiad v28: archivo JSON, no el formulario de bandera de los documentos del Hub. chain-id es cosmoshub-4 en mainnet, proveedor en testnet.",
          "El --gas-prices copiado es 0.005uatom para que coincida con este nodo. No pegue el ejemplo 0.0025uatom de los documentos de Hub ni el validador de creación basado en banderas.",
          "Guarde validator.json y transmita desde la billetera de su operador. La transacción no requiere una IP de servidor. Los pares usan tcp://WAN:{{port}}.",
          "Espere hasta que RPC responda y el nodo esté sincronizado antes de vincular grandes cantidades."
        ],
        "never": [
          "No mezcle el mnemotécnico de billetera del operador con la clave de consenso.",
          "No introduzca aquí mnemónicos de billetera.",
          "No coloque la IP de este servidor en create-validator.",
          "No pegue los indicadores --amount/--pubkey de los documentos de Hub; esta gaiad es v28 (validator.json).",
          "No utilice gas 0.0025uatom en este nodo; el mínimo de composición es 0.005uatom."
        ]
      },
      "sol": {
        "model": "Esta redacción ejecuta Agave con --no-voting. La cuenta de voto y el retiro se crean con las herramientas oficiales de Solana, no con este panel.",
        "min": "Consulte los documentos oficiales de operaciones (el hardware y el disco son pesados)",
        "wallets": "CLI / billetera oficial de Solana que usted controla",
        "panel": "Ejecuta Agave como un nodo de recuperación (--sin votación). Puede mostrar la clave pública de identidad después de las respuestas de RPC.",
        "honesty": "Este proceso es sin votación. No votará ni ganará participación hasta que cree una cuenta de voto con la CLI oficial de Agave y cambie la forma en que se inicia el proceso. Este panel no elimina --no-voto.",
        "yskDoes": [
          "Ejecute el cliente Agave y advierta sobre el disco.",
          "Muestre la clave pública de identidad una vez que RPC responda getIdentity.",
          "No crea una cuenta de voto y no comienza a votar."
        ],
        "youDo": [
          "Cree claves de voto y retiro autorizado con las herramientas oficiales de Solana en una máquina que usted controla.",
          "Cree la cuenta de voto con la CLI oficial, utilizando esta clave pública de identidad.",
          "Solo entonces ejecute un validador de votación; esta redacción permanece sin votación."
        ],
        "steps": [
          "Confirme que este host tenga suficiente disco e IOPS (la red principal suele ser de 2 TiB+).",
          "Espere hasta que RPC responda, luego copie la clave pública de identidad que se muestra aquí.",
          "Cree claves de voto y retiro autorizado con las herramientas oficiales de Solana en una máquina que usted controle, luego solana cree una cuenta de voto.",
          "Esta redacción mantiene --no-voting. Crear un vote account no hace que este proceso vote."
        ],
        "never": [
          "No espere un botón de billetera del navegador en este panel.",
          "No pegue pares de claves de identidad ni de voto en este panel.",
          "No espere que esta página comience a votar después de crear un vote account."
        ]
      },
      "dot": {
        "model": "Esta redacción es un nodo completo (sin --validador). Las claves de sesión y setKeys son pasos oficiales de Polkadot.js, no este panel.",
        "min": "Ver la wiki oficial",
        "wallets": "Polkadot.js",
        "panel": "Ejecuta polkadot como un nodo completo. RPC en el servidor local. Sin indicador --validator.",
        "honesty": "Este proceso no se inicia con --validator. El panel no llama a Author_rotateKeys (eso cambiaría el almacén de claves). Convertirse en validador necesita la bandera de nodo oficial y una llamada de rotación de claves que realice contra el RPC del host local.",
        "yskDoes": [
          "Ejecute polkadot y exponga RPC en localhost.",
          "No pasa --validator y no rota las claves de sesión."
        ],
        "youDo": [
          "Siga la guía oficial para configurar un validador.",
          "Si agrega --validator usted mismo, llame a rotateKeys en el RPC del host local y vincule el resultado en Polkadot.js desde su alijo."
        ],
        "steps": [
          "Sincroniza este nodo completo.",
          "Lea la guía de validación oficial. Esta redacción no es un proceso de validación.",
          "No pegues el mnemotécnico de alijo aquí. Si luego ejecuta --validator, rote las claves usted mismo en http://127.0.0.1 (puerto RPC en esta instancia).",
          "En Polkadot.js, configure esas claves de sesión en su alijo/controlador y luego siga los pasos oficiales de vinculación."
        ],
        "never": [
          "No pegue el mnemónico oculto en este panel.",
          "No espere que esta página genere claves de sesión o haya iniciado --validator."
        ]
      },
      "sui": {
        "model": "Esta redacción es un nodo completo de Sui (fullnode.yaml), no un nodo de validación.",
        "min": "Ver documentos oficiales de Sui",
        "wallets": "Cartera oficial del operador Sui",
        "panel": "Ejecuta sui-node como un nodo completo. RPC en el servidor local.",
        "honesty": "Este proceso no puede firmar como validador Sui. La configuración del validador utiliza una configuración y claves diferentes. Los documentos oficiales del validador están vinculados; este panel no cambia el nodo al modo validador.",
        "yskDoes": [
          "Ejecute la imagen del sui-nodo enviada como un nodo completo."
        ],
        "youDo": [
          "Utilice esta instancia como un nodo completo.",
          "Para convertirse en validador, siga los documentos oficiales del validador de Sui en la configuración del validador, no este texto."
        ],
        "steps": [
          "Sincroniza este nodo completo.",
          "Trátelo como un nodo completo: vuelve a ejecutar los puntos de control pero no firma el consenso.",
          "Abra la guía oficial del operador del validador solo si está creando un proceso de validación separado."
        ],
        "never": [
          "No envíe SUI a este panel.",
          "No espere que este proceso de nodo completo se registre como validador."
        ]
      },
      "aptos": {
        "model": "Esta redacción es un nodo completo público de Aptos (rol full_node), no un validador.",
        "min": "Ver documentos oficiales de Aptos",
        "wallets": "Cartera oficial de operador Aptos",
        "panel": "Ejecuta aptos-node como un nodo completo público. RPC en el servidor local.",
        "honesty": "Los nodos completos públicos no participan en el consenso. Un validador necesita una función diferente, claves y, por lo general, un nodo completo de validador. Este panel no cambia el nodo al modo validador.",
        "yskDoes": [
          "Ejecute la imagen de Aptos enviada como un nodo completo público."
        ],
        "youDo": [
          "Utilice esta instancia como un nodo completo público.",
          "Para ejecutar un validador, siga los documentos oficiales del nodo de validación de Aptos, no este texto."
        ],
        "steps": [
          "Sincroniza este nodo completo público.",
          "Trátelo como un PFN: proporciona datos del libro mayor, no vota.",
          "Abra los documentos oficiales del validador solo si está creando un par de validador + VFN por separado."
        ],
        "never": [
          "No ingrese claves de operador en este panel.",
          "No espere que este proceso de nodo completo se registre como validador."
        ]
      },
      "btc": {
        "model": "No prueba de participación. Este es un nodo completo o podado de Bitcoin.",
        "min": "—",
        "wallets": "No aplicable",
        "panel": "ejecuta bitcoind",
        "yskDoes": [
          "Ejecute un nodo Bitcoin completo o podado."
        ],
        "youDo": [
          "Utilice cualquier billetera Bitcoin por separado. La minería y los rayos están fuera de alcance."
        ],
        "steps": [
          "Trate esta instancia únicamente como un nodo de Bitcoin.",
          "No hay depósito de apuesta ni almacén de claves de validación."
        ],
        "never": [
          "No busque una billetera de apuestas en esta página."
        ]
      },
      "nearPoolSlug": "Nombre del pool",
      "nearPoolSlugHint": "Sólo nombre corto. La fábrica agrega {{suffix}}.",
      "nearOwner": "Cuenta del propietario",
      "nearOwnerHint": "Cuenta NEAR que firma create_staking_pool en tu billetera. No la clave del nodo.",
      "nearPreview": "Vista previa del comando",
      "nearWriteAccount": "Establecer account_id",
      "nearWriteTitle": "¿Establecer validator_key.json account_id para {{id}}?",
      "nearWriteDesc": "Escribe solo account_id en el archivo de clave existente. No envía create_staking_pool. No toca secret_key.",
      "nearWriteC1": "account_id se convierte en {{pool}}{{suffix}}",
      "nearWriteC2": "El panel nunca firma la transacción factory",
      "nearRestart": "Reinicie el nodo después de escribir",
      "nearNeedKey": "Espere hasta que aparezca la clave pública de participación (neard init), luego complete este formulario.",
      "nearNeedSlug": "Ingrese un nombre de grupo para configurar account_id.",
      "nearNeedOwner": "Ingrese la cuenta del propietario para completar el comando. Establecer account_id solo necesita el nombre del grupo.",
      "cosmosPointing": "Esta gaiad es v28: copie validator.json, luego cree-validator validator.json. Los documentos de Hub todavía muestran banderas; esas fallan aquí. La transacción utiliza la clave pública de consenso de este nodo, no la IP del servidor. Los pares utilizan P2P público (puerto de host {{port}}). El gas es 0,005 uatom, no el ejemplo de 0,0025 uatom de los documentos de Hub.",
      "avaxPointing": "El registro de P-Chain utiliza esta prueba NodeID y BLS, no la IP del servidor. RPC permanece en localhost. Regístrese en Core (Replanteo → Validar).",
      "ethVcCommand": "Ejemplo de validator client (no está en este compose)",
      "ethVcHint": "Ejecute un validator client usted mismo en esta URL de baliza. Importar un keystore al directorio de datos de la baliza no da fe.",
      "cosmosAmount": "Autodelegación",
      "cosmosAmountHint": "uatom, o 1 átomo por 1 ÁTOMO. Un simple 1 es 1 uatom, no 1 ÁTOMO.",
      "cosmosAmountParsed": "{{amount}} = {{atom}}",
      "cosmosMoniker": "Moniker",
      "cosmosFromKey": "nombre de clave --from",
      "cosmosFromHint": "Nombre de clave local gaiad o firmar con Keplr. No es la clave del consenso sobre este anfitrión.",
      "cosmosNeedPubkey": "Espere hasta que aparezca la clave pública de consenso (gaiad init), luego complete este formulario.",
      "cosmosNeedFields": "Ingrese la cantidad, el apodo y --from para completar el comando."
    },
    "alerts": {
      "diskTitle": "Disco de validador crítico",
      "diskBody": "El espacio libre del volumen de datos del validador es crítico.",
      "upgradeTitle": "Hay una actualización de validador",
      "upgradeBody": "Uno o más clientes de nodo tienen una versión fijada más nueva.",
      "syncTitle": "El nodo validador necesita atención",
      "syncBody": "Un nodo lleva más de 6 horas sincronizando o ha informado un error.",
      "rollbackTitle": "Actualización de validador revertida",
      "rollbackBody": "La actualización de {{id}} falló la comprobación de salud y se revirtió."
    },
    "upgrade": {
      "changelog": "Registro de cambios"
    },
    "readiness": {
      "dockerTitle": "Docker para nodos validador",
      "dockerOk": "{{count}} instancia(s) de validador; Docker está instalado",
      "dockerMissing": "Hay instancias de validador pero no se encontró el comando docker"
    },
    "detail": {
      "status": "Estado",
      "sync": "Sincronizar",
      "peers": "Colegas",
      "traffic": "Tráfico",
      "version": "Versión",
      "access": "Acceso",
      "upgrade": "Actualizaciones",
      "upgradeHint": "Cómo este nodo rastrea las versiones del cliente.",
      "setVersion": "Cambiar versión",
      "setVersionHint": "Elija una etiqueta Docker oficial para un cliente en este nodo. Compose se reescribe, luego se extrae y se reinicia.",
      "setVersionConfirmTitle": "¿Cambiar {{id}} a {{tag}}?",
      "setVersionConfirmDesc": "Reescribe componer, extrae {{ref}} y reinicia el nodo.",
      "setVersionC1": "El contenedor en ejecución se reemplaza con la etiqueta seleccionada.",
      "setVersionC2": "Escriba la identificación de la instancia para confirmar.",
      "setVersionMainnet": "Mainnet: una mala versión puede desconectar el nodo. Entiendo.",
      "releaseNotes": "Notas de la versión",
      "network": "Red",
      "networkHint": "El cambio de red detiene el nodo y borra los datos de la cadena. Confirme primero en Borrar datos.",
      "maintain": "Mantenimiento",
      "danger": "Borrar datos",
      "dangerHint": "Escriba la identificación de la instancia o CLEAR. Esto elimina los datos de la cadena en el disco.",
      "compose": "Compose",
      "logs": "Registros"
    },
    "state": {
      "unknown": "Desconocido",
      "stopped": "Interrumpido",
      "created": "Creado (nunca iniciado)",
      "missing": "Sin contenedor",
      "starting": "A partir de",
      "rpc_wait": "En ejecución: RPC no está listo",
      "running": "Correr",
      "syncing": "Sincronización",
      "error": "Error"
    }
  },
  "vnc": {
    "pageDesc": "Servidor y cliente VNC",
    "result": "Resultado de la operación VNC",
    "installed": "Instalado",
    "notInstalled": "No instalado",
    "stackBins": "{{bins}}",
    "stackMissing": "herramientas faltantes",
    "executeOn": "YSK_EXECUTE en",
    "executeOff": "YSK_EXECUTE desactivado",
    "statAccounts": "Cuentas",
    "statRunning": "Correr",
    "statClients": "Perfiles de clientes",
    "statEndpoint": "Anfitrión",
    "goAccounts": "Cuentas",
    "goClient": "Cliente",
    "goInstall": "Instalar",
    "accountsEmptyTitle": "Sin cuentas",
    "accountsEmptyDesc": "Crea una cuenta para comenzar",
    "clientPathHint": "Ambas rutas abren VNC en el navegador. Se diferencian por la semántica de destino y la copia (ambos siguen siendo proxy TCP a través del panel).",
    "clientPathCompare": "“Accesible para el usuario”: nombres de host públicos (por ejemplo, hermes.example.com:5901). “Proxy de servidor”: objetivos LAN/DC que solo este host puede alcanzar. TCP se prueba desde este servidor antes de conectarse.",
    "clientEmptyTitle": "Sin clientes",
    "clientEmptyDesc": "Agregar host remoto: puerto",
    "openInBrowser": "Abrir en el navegador",
    "pathUserReachable": "Punto final accesible al usuario",
    "pathServerProxy": "A través del servidor proxy",
    "pathUserReachableShort": "Accesible para el usuario",
    "pathServerProxyShort": "servidor proxy",
    "pathUserReachableHint": "Para nombres de host públicos o destinos configurados (por ejemplo, ejemplo.com:5901). El navegador pasa por el panel; este host debe abrir TCP a esa dirección.",
    "pathServerProxyHint": "Para LAN o destinos, solo el servidor del plano de control puede alcanzar. El tráfico se envía a través de la red de este servidor. El host de conexión opcional anula la dirección TCP (por ejemplo, nombre para mostrar frente a 10.x).",
    "connectHost": "Conectar host (opcional, servidor proxy)",
    "connectHostHint": "Dirección TCP que abre el plano de control (LAN IP). Déjelo vacío para usar el host remoto arriba.",
    "pathBrowser": "Punto final accesible al usuario",
    "pathHostViewer": "A través del servidor proxy",
    "hostViewer": "A través del servidor proxy",
    "needViewerOptional": "Visor TigerVNC (opcional, no para la ruta del navegador)",
    "viewerStackOptional": "VNC en el navegador no necesita vncviewer de escritorio. El paquete Visor que aparece a continuación es solo un mantenimiento opcional del sistema.",
    "viewer": {
      "minting": "Preparando sesión…",
      "connecting": "Conectando…",
      "connected": "Conectado",
      "disconnected": "Desconectado",
      "error": "La conexión falló",
      "idle": "Inactivo",
      "closed": "Cerrado",
      "minting_state": "Preparante",
      "reconnect": "Reconectar",
      "disconnect": "Desconectar",
      "fullscreen": "Pantalla completa",
      "fit": "Ajustar ventana",
      "oneToOne": "1:1",
      "cad": "Ctrl+Alt+Supr",
      "password": "contraseña VNC",
      "passwordPrompt": "Se requiere contraseña",
      "sendPassword": "Enviar contraseña",
      "securityFailure": "Error de autenticación",
      "canvasLabel": "Escritorio VNC: {{name}}",
      "clipboardPaste": "Pegar → remoto",
      "clipboardPanel": "Portapapeles",
      "clipboardHint": "Sincronice texto entre este navegador y el escritorio remoto.",
      "clipboardLocal": "Enviar a remoto",
      "clipboardLocalPh": "Pegue o escriba texto para enviar a la sesión de VNC",
      "clipboardRemote": "Desde remoto",
      "clipboardRemotePh": "El texto copiado en el escritorio remoto aparece aquí",
      "clipboardSend": "Enviar a remoto",
      "clipboardCopy": "Copiar localmente",
      "clipboardToRemote": "Portapapeles enviado a control remoto",
      "clipboardToRemoteHint": "Pegue el portapapeles del navegador en la sesión remota",
      "clipboardFromRemote": "Portapapeles remoto copiado a este navegador",
      "clipboardFromRemoteManual": "Portapapeles remoto actualizado: abra el panel Portapapeles para copiar",
      "clipboardEmpty": "No hay nada que pegar: primero copie el texto o escriba a continuación",
      "clipboardReadDenied": "Lectura del portapapeles bloqueado del navegador: péguelo en el panel y envíe",
      "clipboardNoRemote": "Aún no se ha recibido ningún mensaje de texto del control remoto",
      "clipboardCopiedLocal": "Copiado a este navegador",
      "quality": "Calidad",
      "qualityHint": "Calidad de imagen vs ancho de banda (JPEG/compresión)",
      "qualityLow": "Bajo (guardar datos)",
      "qualityBalanced": "Equilibrado",
      "qualityHigh": "Alto",
      "qualityMax": "Calidad máxima",
      "passwordPromptHint": "Este escritorio requiere una contraseña VNC; ingrésela a continuación.",
      "errNeedExecute": "No se puede iniciar el escritorio: el servidor necesita root y YSK_EXECUTE habilitado.",
      "errTicket": "El ticket de sesión expiró o no es válido: presione Reconectar.",
      "errBusy": "Demasiadas sesiones de VNC en este panel: cierre otra y vuelva a intentarlo.",
      "errRefused": "No hay nada escuchando en {{host}}:{{port}} (conexión rechazada). ¿VNC se está ejecutando y se puede acceder a él desde este servidor?",
      "errRefusedGeneric": "Conexión rechazada: verifique que VNC se esté ejecutando y que el puerto sea correcto.",
      "errTimeout": "Se agotó el tiempo de conexión a {{host}}:{{port}}. Verifique la ruta del firewall/red desde este servidor.",
      "errTimeoutGeneric": "Se agotó el tiempo de conexión: verifique la red y el firewall.",
      "errDns": "No se puede resolver el nombre de host «{{host}}».",
      "errDnsGeneric": "No se pudo resolver el nombre del host.",
      "errNet": "Red inalcanzable para {{host}}:{{port}}.",
      "reconnecting": "Se cayó la conexión: reconectando ({{n}}/{{max}})…",
      "idleHint": "La sesión ha estado inactiva por un tiempo. El escritorio remoto puede bloquearse; mueva el mouse o vuelva a conectarse si es necesario.",
      "idleDismiss": "Todavía aquí",
      "sessions": "Abrir sesiones de VNC",
      "sessionCount": "{{n}} / {{max}} sesiones",
      "sessionLimit": "Como máximo {{max}} sesiones VNC a la vez: cierre una primero.",
      "closeSession": "Cerrar sesión {{name}}",
      "shareLink": "Compartir enlace",
      "shareCopied": "Enlace para compartir de solo lectura copiado (válido aproximadamente 1 hora)",
      "shareFailed": "No se pudo crear el enlace para compartir",
      "shareTitle": "Vista VNC compartida",
      "shareGuest": "Escritorio compartido",
      "shareMissing": "Falta token compartido",
      "shareExpired": "Este enlace para compartir no es válido o ha caducado",
      "viewOnlyBadge": "Ver sólo",
      "screenshot": "Captura de pantalla",
      "screenshotSaved": "Captura de pantalla descargada",
      "screenshotFailed": "No se pudo capturar la captura de pantalla",
      "screenshotNoCanvas": "Pantalla no lista para captura de pantalla",
      "record": "Registro",
      "recordStop": "detener grabación",
      "recordHint": "Grabar escritorio en WebM (máximo 60 segundos)",
      "recordStarted": "Grabando... haga clic en Detener grabación o espere 60 segundos",
      "recordSaved": "Grabación descargada",
      "recordFailed": "No se pudo grabar",
      "recordUnsupported": "Este navegador no puede grabar el lienzo.",
      "connectingHint": "Abriendo un túnel seguro hacia el escritorio...",
      "reconnectHint": "Presione Reconectar para volver a intentarlo o verifique el host y el puerto remotos."
    },
    "installHint": "TigerVNC → noVNC; XFCE opcional",
    "needTigerVnc": "Se requiere TigerVNC",
    "needXfceFirst": "Instale XFCE primero",
    "needSessionRunning": "La sesión no se está ejecutando; iníciela primero",
    "needNovnc": "no se requiere VNC",
    "needXfce": "XFCE (opcional)",
    "needViewer": "Visor (opcional)",
    "needViewerOrNovnc": "Visor o noVNC",
    "settingsHint": "Valores predeterminados para cuentas nuevas",
    "settingsNeedStack": "Estos valores predeterminados se aplican cuando se instala TigerVNC (y XFCE si se selecciona). Instálelos primero en la pestaña Instalar.",
    "clientNeedNovnc": "Abrir en el navegador no necesita VNC. Instálelo en la pestaña Instalar antes de agregar los controles remotos que espera abrir aquí.",
    "defaultDesktop": "Escritorio predeterminado",
    "defaultGeometry": "Resolución predeterminada",
    "defaultDepth": "Profundidad de color",
    "defaultRfbBind": "RFB escucha",
    "defaultAutostart": "Sesiones de inicio automático",
    "autostartLabel": "Comenzar al arrancar",
    "settingsSaved": "Valores predeterminados de VNC guardados",
    "tab": {
      "overview": "Descripción general",
      "accounts": "Cuentas",
      "client": "Cliente",
      "install": "Instalar",
      "settings": "Ajustes",
      "about": "Acerca de"
    },
    "desktop": {
      "xfce": "XFCE (escritorio completo)",
      "terminal": "Terminal"
    },
    "bind": {
      "localhost": "Solo host local (noVNC/túnel)",
      "all": "Todas las interfaces (RFB directo – cortafuegos abierto)",
      "localhostShort": "servidor local",
      "allShort": "0.0.0.0"
    },
    "accountListTitle": "Cuentas VNC ({{count}})",
    "accountListDesc": "Un usuario de Linux por cuenta",
    "createAccount": "+ Crear cuenta",
    "createAccountTitle": "Crear cuenta VNC",
    "createAccountDesc": "Usuario yskvnc_* dedicado",
    "createAccountBtn": "Crear una cuenta",
    "editAccountTitle": "Editar cuenta VNC",
    "editAccountDesc": "Usuario de Linux {{user}} · pantalla :{{display}}",
    "setPassword": "Contraseña",
    "setPasswordTitle": "Establecer contraseña VNC",
    "setPasswordDesc": "Actualice la contraseña de inicio de sesión de VNC para {{address}}",
    "newPassword": "Nueva contraseña",
    "confirmPassword": "Confirmar Contraseña",
    "passwordHint": "Mínimo 6 caracteres",
    "passwordMismatch": "Las contraseñas no coinciden",
    "passwordTooShort": "La contraseña debe tener al menos 6 caracteres.",
    "needName": "Introduce un nombre para mostrar",
    "start": "Comenzar",
    "stop": "Detener",
    "startAfterCreate": "Empezar después de crear",
    "hostnameBroken": "Este host no puede resolver su propio nombre de host ({{hostname}}). El inicio de la sesión fallará.",
    "hostnameBrokenIdle": "Hostname {{hostname}} does not resolve on this host. Fix /etc/hosts before you create a session.",
    "hostnameFix": "Escribe el nombre de host en /etc/hosts",
    "hostnameFixTitle": "¿Agregar esta línea a /etc/hosts?",
    "hostnameFixDesc": "{{line}}",
    "hostnameFixDone": "Nombre de host /etc/hosts actualizado",
    "startAfterCreateBlocked": "Deshabilitado hasta que se resuelva el nombre de host",
    "startHostnameBlocked": "No se puede iniciar hasta que este host pueda resolver su nombre de host. Utilice \"Escribir nombre de host en /etc/hosts\".",
    "colName": "Nombre",
    "colLinuxUser": "usuario de linux",
    "colDisplay": "Pantalla/puerto",
    "colStatus": "Estado",
    "colDesktop": "De oficina",
    "colBind": "enlace RFB",
    "accountStatus": {
      "running": "Correr",
      "stopped": "Interrumpido",
      "failed": "Fallido",
      "written": "Escrito",
      "unknown": "Desconocido"
    },
    "clientStatus": {
      "up": "Conectado",
      "down": "Desconectado",
      "unknown": "Desconocido",
      "error": "Error",
      "viewing": "Ver en el navegador"
    },
    "accountPager": "Páginas de cuenta",
    "prevPage": "Anterior",
    "nextPage": "Próximo",
    "pageOf": "Página {{page}} / {{total}} · {{count}}",
    "deleteAccountTitle": "¿Eliminar cuenta VNC?",
    "deleteAccountDesc": "Eliminar la cuenta del plano de control {{name}} ({{user}}). La sesión se detendrá primero.",
    "deleteAccountC1": "Sesión VNC para esta pantalla",
    "deleteAccountC2": "Metadatos del panel en dataDir/vnc",
    "deleteAccountC3User": "Se eliminará la página de inicio del usuario de Linux (userdel -r)",
    "deleteAccountC3Keep": "El usuario de Linux se mantendrá en el sistema.",
    "removeLinuxUser": "También elimine el usuario de Linux y el directorio de inicio.",
    "deleteKeepUserWarn": "El usuario de Linux permanecerá en el host como huérfano. Debes limpiarlo más tarde.",
    "bindRfbLine": "RFB{{bind}}:{{port}}",
    "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
    "bindNovncHint": "noVNC escucha en localhost. Se accede al escritorio a través de este panel, no a través de Internet público, a menos que el enlace RFB sea todas las interfaces.",
    "connection": "Conectar",
    "connectionTitle": "Materiales de conexión",
    "connectionDesc": "Cómo llegan los clientes a {{name}}",
    "connectionPathsHint": "Prefiere abrir en el navegador; Opciones avanzadas para noVNC heredado/RFB directo",
    "connectionBrowserHint": "Recomendado: abra el escritorio dentro de este panel (sin túnel SSH, funciona desde cualquier navegador que pueda acceder al panel).",
    "connectionBrowserDesc": "Inicia la sesión de VNC si es necesario y abre el visor del panel con el teclado, el mouse y el portapapeles.",
    "connectionAdvanced": "Avanzado: URL noVNC heredada y RFB directo",
    "pathViaServer": "A través del servidor (noVNC)",
    "pathViaServerLegacy": "NoVNC heredado en el servidor (127.0.0.1)",
    "pathViaServerLegacyHint": "Solo funciona en el servidor host o mediante un túnel SSH; prefiera \"Abrir en el navegador\".",
    "pathDirect": "RFB directa",
    "recommended": "Recomendado",
    "startNovnc": "Iniciar noVNC",
    "stopNovnc": "Detener noVNC",
    "copyNovncUrl": "Copiar URL noVNC",
    "copyAddress": "Copiar host: puerto",
    "openFirewall": "Abrir puerto UFW",
    "directAddress": "DIRECCIÓN",
    "ticketPath": "Ver API de tickets",
    "directLocalhostWarn": "RFB es solo para host local",
    "copied": "Copiado al portapapeles",
    "clientListTitle": "Perfiles de clientes ({{count}})",
    "clientListDesc": "VNC saliente",
    "addClient": "+ Agregar control remoto",
    "addClientTitle": "Agregar VNC remoto",
    "addClientDesc": "Host remoto: puerto",
    "clientTarget": "Objetivo",
    "clientPath": "Conectar ruta",
    "clientHost": "anfitrión remoto",
    "pathViaServerShort": "Navegador",
    "pathDirectShort": "Visor anfitrión",
    "disconnect": "Desconectar",
    "connect": "Conectar",
    "clientNeedFields": "El nombre y el host son obligatorios",
    "clientCreated": "Perfil de cliente creado",
    "clientPasswordOptional": "Contraseña VNC (opcional)",
    "clientPasswordHint": "Se utiliza cuando abre el visor del navegador. Déjelo vacío para escribirlo cada vez.",
    "clientRememberPassword": "Almacenar la contraseña en este servidor para la próxima apertura",
    "clientRememberPasswordWarn": "La contraseña se almacena en el directorio de datos del panel (legible por raíz). Prefiere escribir cada vez en hosts compartidos.",
    "stackMissingShort": "No instalado",
    "editClientTitle": "Editar cliente remoto",
    "editClientDesc": "Actualice la ruta, los hosts y la contraseña almacenada opcional.",
    "clientUpdated": "Perfil de cliente actualizado",
    "rememberNeedPassword": "Primero ingrese una contraseña."
  },
  "vpn": {
    "pageDesc": "Servidor y cliente VPN",
    "eyebrow": "VPN",
    "tab": {
      "wireguard": "WireGuard",
      "openvpn": "OpenVPN",
      "outline": "Shadowsocks",
      "client": "Cliente local",
      "software": "Software",
      "monitor": "Monitor",
      "about": "Acerca de",
      "server": "Servidor",
      "install": "Instalar",
      "overview": "Descripción general"
    },
    "softwareIntro": "Instale o actualice los motores VPN aquí. Las pestañas del servidor permanecen enfocadas en la configuración.",
    "monitor": {
      "needLive": "Las métricas en vivo necesitan root + YSK_EXECUTE en el servidor.",
      "autoRefresh": "Auto 3s",
      "filterEngine": "Filtro de motor",
      "filterPresence": "Filtro de presencia",
      "engineAll": "Todos los motores",
      "presenceAll": "Todo",
      "presenceOnline": "En línea",
      "presenceOffline": "Desconectado",
      "onlineOf": "En línea {{online}} / {{total}}",
      "peersTitle": "Compañeros ({{count}})",
      "localTitle": "Salida local",
      "colEndpoint": "Remoto",
      "colLastSeen": "visto por última vez",
      "colRx": "↓ totales",
      "colTx": "↑ Totales",
      "colRxRate": "↓ Tarifa",
      "colTxRate": "↑ Tarifa",
      "sampledAt": "Muestra {{when}}",
      "emptyPeers": "No hay compañeros para mostrar",
      "emptyPeersHint": "Agregue pares en las pestañas del motor o borre filtros",
      "presence": {
        "online": "En línea",
        "idle": "Inactivo",
        "offline": "Desconectado",
        "never": "Nunca",
        "unknown": "Desconocido"
      }
    },
    "installed": "Instalado",
    "notInstalled": "No instalado",
    "serverUp": "Correr",
    "serverDown": "Interrumpido",
    "engineSummary": "puerto {{port}} · {{peers}} pares",
    "engineSummaryClient": "{{count}} perfiles · {{up}} arriba",
    "needWireGuard": "Se requiere WireGuard",
    "needOpenVpn": "Se requiere OpenVPN",
    "needSs": "Se requiere servidor ss",
    "ssHonestUi": "ss:// claves de acceso (no el Administrador de esquemas completo)",
    "listenPort": "Puerto de escucha",
    "listenPortUdp": "Puerto de escucha (UDP)",
    "listenPortTcp": "Puerto de escucha (TCP)",
    "endpoint": "Punto final público",
    "endpointHint": "Host público: puerto que los clientes utilizan para conectarse",
    "ddnsFill": "Usar nombre de host DDNS",
    "ddnsFilled": "Host de punto final completo de DDNS. Los compañeros no cambian.",
    "ddnsFillEmpty": "Aún no hay nombre de host principal de DDNS. Agregue uno en la pestaña DNS DDNS.",
    "ensureServer": "Aplicar servidor",
    "openFirewall": "Abrir {{port}}/{{proto}}",
    "presets": "Preajustes de puerto",
    "portHint": {
      "51820": "Puerto de escucha WireGuard predeterminado",
      "51821": "Puerto de escucha alternativo de WireGuard",
      "51822": "Segundo puerto de escucha alternativo de WireGuard"
    },
    "proto": "Protocolo",
    "protoUdp": "UDP",
    "protoTcp": "TCP",
    "statusLine": "{{state}} · {{port}}/{{proto}} · {{peers}} compañeros",
    "peersTitle": "Compañeros / llaves",
    "peersTitleWg": "Colegas",
    "peersTitleOvpn": "Configuraciones de cliente",
    "peersTitleSs": "Claves de acceso",
    "peerName": "Nombre",
    "peerNamePlaceholder": "teléfono",
    "peerNameHint": "Letras, dígitos, . _ - — sin espacios, / o !",
    "peerNameInvalid": "Espacios, / y ! no están permitidos. Utilice {{preview}} o cambie el nombre.",
    "addPeer": "+ Agregar",
    "installEngineFirst": "Instale el motor VPN primero",
    "needServerRunning": "{{engine}} no se está ejecutando: aplique el servidor primero",
    "engineSummarySoftware": "{{installed}} instalado · {{running}} ejecutándose",
    "privateKeyOnce": "La clave privada del cliente se muestra solo aquí. Descárguelo o cópielo ahora; no podrá recuperarlo más adelante.",
    "showPrivateKey": "Mostrar clave privada",
    "hidePrivateKey": "Ocultar clave privada",
    "deletePeerTitle": "¿Eliminar par {{name}}?",
    "deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored.",
    "deleteClientTitle": "¿Eliminar el cliente OpenVPN {{name}}?",
    "deleteClientDesc": "Eliminar {{name}} ({{address}}). El cliente se desconecta inmediatamente y el perfil no se puede restaurar. El servidor OpenVPN permanece activo.",
    "deleteKeyTitle": "¿Eliminar la clave Shadowsocks {{name}}?",
    "deleteKeyDesc": "Quitar clave de acceso {{name}} ({{address}}). Los clientes que utilizan esta clave se desconectan. El servidor de Shadowsocks permanece activo.",
    "deleteResult": "Eliminado {{name}}.",
    "portInvalid": "El puerto de escucha debe ser un número entero entre 1 y 65535.",
    "portRequired": "Se requiere puerto de escucha.",
    "importInvalid": "No se pudo detectar una configuración de cliente WireGuard u OpenVPN.",
    "qrFailed": "No se pudo generar un código QR para esta configuración. Descargue o copie el texto en su lugar.",
    "cfgTitle": "Configuración — {{name}}",
    "addPeerWg": "+ Agregar compañero",
    "addPeerOvpn": "+ Agregar cliente",
    "addPeerSs": "+ Agregar clave",
    "noPeers": "Ninguno todavía",
    "noPeersHint": "Agregue uno para descargar la configuración",
    "colName": "Nombre",
    "colAddress": "DIRECCIÓN",
    "colCreated": "Creado",
    "colActions": "Comportamiento",
    "colEngine": "Motor",
    "colStatus": "Estado",
    "colIface": "Interfaz",
    "downloadKey": "Descargar",
    "showQr": "QR",
    "copyConf": "Copiar",
    "copied": "Copiado",
    "downloaded": "Configuración descargada",
    "qrReady": "QR listo",
    "qrTitle": "QR — {{name}}",
    "qrHintWg": "Escanear en la aplicación WireGuard",
    "qrHintSs": "Escanee ss:// en un cliente Shadowsocks",
    "showConf": "Texto de configuración",
    "close": "Cerca",
    "clientIntro": "Importe un archivo conf para conectar este host",
    "profileName": "Nombre del perfil",
    "pasteConf": "Pegar configuración",
    "importProfile": "Importar",
    "importOpen": "+ Importar configuración",
    "noProfiles": "Sin perfiles locales",
    "noProfilesHint": "Importar configuración de cliente WireGuard u OpenVPN",
    "connect": "Conectar",
    "disconnect": "Desconectar",
    "clientStatus": {
      "up": "Conectado",
      "down": "Desconectado",
      "unknown": "Desconocido",
      "error": "Error"
    },
    "result": "Resultado",
    "clientEngine": "Tipo",
    "engineAuto": "Detección automática",
    "refresh": "Refrescar",
    "dnsOptional": "DNS (opcional)",
    "serverSettings": "Configuración del servidor",
    "access": {
      "label": "Tráfico de clientes",
      "full": "Internet completo",
      "lan": "Sólo LAN",
      "custom": "Rutas personalizadas",
      "fullHint": "Todo el tráfico del cliente pasa a través de este servidor (habilita NAT). Vuelva a conectar a los clientes después de presentar la solicitud.",
      "lanHint": "Sólo VPN + redes privadas seleccionadas; El cliente mantiene su propio Internet. Vuelva a conectarse después de aplicar.",
      "customHint": "Solo los CIDR que usted enumera ingresan al túnel. Vuelva a conectarse después de aplicar.",
      "lanCidrs": "Redes LAN",
      "customCidr": "CIDR",
      "addCidr": "Agregar",
      "cidrRequired": "Ingrese un CIDR (por ejemplo 192.168.1.0/24).",
      "cidrInvalid": "Ingrese un CIDR válido, por ejemplo 192.168.1.0/24."
    },
    "engineNotInstalled": "Este motor VPN no está instalado en el host.",
    "serverNotListening": "La unidad del servidor no está activa. UDP/TCP {{port}} puede estar cerrado."
  }
}
