import type { Messages } from '../types'; export const esVaultMessages: Messages = { // Notes 'notes.search.placeholder': 'Buscar notas, hosts, etiquetas...', 'notes.action.newNote': 'Nueva nota', 'notes.action.newGroup': 'Nueva carpeta', 'notes.action.importMarkdown': 'Importar Markdown', 'notes.action.exportNote': 'Exportar nota', 'notes.action.exportGroup': 'Exportar carpeta', 'notes.action.exportAll': 'Exportar notas', 'notes.import.toast.success': 'Se importaron {count} nota(s)', 'notes.import.toast.noNotes': 'No se importaron archivos Markdown.', 'notes.import.toast.failed': 'No se pudieron importar los archivos Markdown.', 'notes.import.toast.inProgress': 'Ya hay una importación de Markdown en curso.', 'notes.import.toast.skipped': 'Se omitieron {count} archivo(s) no compatible(s).', 'notes.export.toast.success': 'Se exportaron {count} nota(s)', 'notes.export.toast.empty': 'No hay notas para exportar.', 'notes.export.toast.failed': 'No se pudieron exportar las notas.', 'notes.codeBlock.copied': 'Copiado', 'notes.codeBlock.copyFailed': 'No se pudo copiar el bloque de código.', 'notes.group.prompt': 'Ruta de la carpeta', 'notes.group.all': 'Cuaderno', 'notes.group.ungrouped': 'Sin grupo', 'notes.section.notebooks': 'Cuaderno', 'notes.section.notes': 'Notas', 'notes.mode.edit': 'Editar', 'notes.mode.split': 'Dividir', 'notes.mode.preview': 'Vista previa', 'notes.title.placeholder': 'Título de la nota', 'notes.editor.placeholder': 'Escribe notas Markdown aquí...', 'notes.editor.unrenderableMarkdown': 'Esta nota contiene Markdown que el editor enriquecido no puede mostrar (por ejemplo, etiquetas sin cerrar como ). Se muestra el origen Markdown sin cambios: el contenido está intacto.', 'notes.editor.retryRichView': 'Reintentar vista enriquecida', 'notes.preview.empty': 'Aún no hay nada para previsualizar.', 'notes.empty.title': 'Aún no hay notas', 'notes.empty.desc': 'Crea notas Markdown para runbooks, recordatorios y detalles de traspaso de servidores.', 'notes.empty.group': 'No hay notas en este cuaderno.', 'notes.search.noResults': 'No se encontraron notas.', 'notes.toolbar.modeLive': 'Vista en vivo', 'notes.toolbar.modeLiveTitle': 'Modo vista en vivo (WYSIWYG)', 'notes.toolbar.modeSource': 'Modo fuente', 'notes.toolbar.modeSourceTitle': 'Modo fuente (código Markdown)', 'notes.toolbar.modePreview': 'Modo lectura', 'notes.toolbar.modePreviewTitle': 'Modo lectura (solo lectura)', 'notes.toolbar.undo': 'Deshacer (Ctrl+Z)', 'notes.toolbar.redo': 'Rehacer (Ctrl+Y)', 'notes.toolbar.typography': 'Fuente de código y ajustes de tipografía', 'notes.toolbar.customCodeFont': 'Fuente de código personalizada', 'notes.toolbar.fontsAvailable': '{count} fuentes disponibles', 'notes.toolbar.searchFont': 'Buscar fuentes...', 'notes.toolbar.noFontsFound': 'No se encontraron fuentes monoespaciadas coincidentes', 'notes.toolbar.defaultFont': 'Monoespaciado predeterminado (Default)', 'notes.toolbar.bodyFontSize': 'Tamaño de texto', 'notes.toolbar.codeFontSize': 'Tamaño de código', 'notes.toolbar.headingLevel': 'Nivel de encabezado', 'notes.toolbar.h1': 'Encabezado 1', 'notes.toolbar.h2': 'Encabezado 2', 'notes.toolbar.h3': 'Encabezado 3', 'notes.toolbar.h4': 'Encabezado 4', 'notes.toolbar.bold': 'Negrita (Ctrl+B)', 'notes.toolbar.italic': 'Cursiva (Ctrl+I)', 'notes.toolbar.strikethrough': 'Tachado', 'notes.toolbar.underline': 'Subrayado', 'notes.toolbar.inlineCode': 'Código en línea', 'notes.toolbar.bulletList': 'Lista con viñetas', 'notes.toolbar.orderedList': 'Lista numerada', 'notes.toolbar.taskList': 'Lista de tareas', 'notes.toolbar.quote': 'Cita', 'notes.toolbar.codeBlock': 'Bloque de código', 'notes.toolbar.mathFormula': 'Fórmula matemática (LaTeX / Math)', 'notes.toolbar.table': 'Insertar tabla', 'notes.toolbar.divider': 'Línea divisoria', 'notes.toolbar.link': 'Insertar enlace', 'notes.toolbar.image': 'Insertar imagen', 'notes.action.pin': 'Fijar nota', 'notes.action.unpin': 'Desfijar nota', 'notes.tag.remove': 'Eliminar etiqueta', 'notes.tag.placeholder': 'Nombre de etiqueta...', 'notes.tag.add': 'Añadir etiqueta', 'notes.outline.title': 'Índice de contenido', 'notes.outline.titleWithCount': 'Índice de contenido ({count})', 'notes.outline.empty': 'Sin encabezados de esquema', 'notes.outline.emptyHint': 'Use # y ## en Markdown para crear encabezados', 'notes.export.share': 'Exportar y compartir', 'notes.export.currentNote': 'Nota actual', 'notes.export.exportMarkdown': 'Exportar como Markdown (.md)', 'notes.export.exportHtml': 'Exportar como HTML (.html)', 'notes.export.copyMarkdown': 'Copiar código Markdown', 'notes.export.allNotes': 'Todas las notas', 'notes.export.exportAllZip': 'Exportar todo como archivo ZIP', 'notes.export.toast.markdownSuccess': 'Archivo Markdown exportado', 'notes.export.toast.htmlSuccess': 'Archivo HTML exportado', 'notes.export.toast.zipSuccess': 'Todas las notas exportadas como copia de seguridad ZIP', // Vault import 'vault.import.title': 'Agrega datos a tu Vault', 'vault.import.desc': 'Transfiere tus conexiones desde clientes populares. Selecciona un formato de archivo para comenzar la migración.', 'vault.import.chooseFormat': 'Selecciona un formato de archivo', 'vault.import.destination.title': '¿Dónde deberían ir los hosts importados?', 'vault.import.destination.preserve': 'Conservar los grupos originales', 'vault.import.destination.existing': 'Elegir un grupo', 'vault.import.destination.new': 'Crear un grupo', 'vault.import.destination.noGroups': 'No hay grupos disponibles', 'vault.import.destination.newPlaceholder': 'Nombre del grupo nuevo', 'vault.import.destination.settings': 'Ubicación de importación', 'vault.import.destination.settingsHint': 'Elige dónde se colocarán los hosts nuevos', 'vault.import.destination.done': 'Listo', 'vault.import.securecrt.directoryHint': 'Selecciona la carpeta de sesiones de SecureCRT.', 'vault.import.securecrt.chooseSource': 'Elige una fuente de importación de SecureCRT.', 'vault.import.securecrt.sourceQuestion': '¿Qué te gustaría importar?', 'vault.import.securecrt.promptTitle': 'Importar desde SecureCRT', 'vault.import.securecrt.promptDesc': 'Elige la carpeta de sesiones de SecureCRT para importar todas las sesiones conservando la estructura de carpetas, o selecciona un solo archivo de sesión .ini.', 'vault.import.securecrt.folder': 'Carpeta de sesiones', 'vault.import.securecrt.folderDesc': 'Importa todas las sesiones y conserva la estructura de carpetas.', 'vault.import.securecrt.file': 'Archivo de sesión único', 'vault.import.securecrt.fileDesc': 'Importa una sesión .ini de SecureCRT.', 'vault.import.csv.tip': 'Importación masiva: usa la plantilla CSV.', 'vault.import.csv.downloadTemplate': 'Descargar plantilla CSV', 'vault.import.toast.start': 'Importando desde {format}...', 'vault.import.toast.completedTitle': 'Importación completada', 'vault.import.toast.failedTitle': 'Importación fallida', 'vault.import.toast.noEntries': 'No se encontraron entradas importables en {format}.', 'vault.import.toast.noNewHosts': 'No se importaron hosts nuevos desde {format}.', 'vault.import.toast.summary': 'Se importaron {count} hosts (omitidos {skipped}, duplicados {duplicates}).', 'vault.import.toast.firstIssue': 'Primer problema: {issue}', 'vault.import.progress.title': 'Importando hosts', 'vault.import.progress.reading': 'Leyendo archivo', 'vault.import.progress.parsing': 'Analizando hosts', 'vault.import.progress.preparing': 'Preparando cambios', 'vault.import.progress.saving': 'Guardando hosts', 'vault.import.progress.complete': 'Importación completa', 'vault.import.progress.failed': 'Importación fallida', 'vault.import.progress.persistFailed': 'No se pudieron guardar los hosts importados. Libera algo de espacio de almacenamiento local e inténtalo de nuevo.', 'vault.import.progress.rollbackFailed': 'La importación no se pudo revertir de forma segura. Es posible que queden algunos hosts importados; revisa el Vault antes de reintentar.', 'vault.import.progress.summary': 'Se importaron {count} hosts; omitidos {skipped}; duplicados {duplicates}.', 'vault.import.progress.keepOpen': 'Mantén NetMesh abierto mientras la importación se ejecuta en segundo plano.', 'vault.import.progress.fileSummary': '{name} · {count} archivos', 'vault.import.progress.fileCount': '{completed} de {total} archivos', 'vault.import.mobaxterm.chooseEncoding': 'Elige cómo leer tu archivo de MobaXterm.', 'vault.import.mobaxterm.encodingQuestion': '¿Qué codificación de texto usa este archivo?', 'vault.import.mobaxterm.auto': 'Detección automática', 'vault.import.mobaxterm.autoDesc': 'Recomendado. Usa UTF-8 cuando sea válido; de lo contrario, la codificación de Windows en chino.', 'vault.import.mobaxterm.utf8': 'UTF-8', 'vault.import.mobaxterm.utf8Desc': 'Úsalo para archivos guardados o convertidos como UTF-8.', 'vault.import.mobaxterm.gb18030': 'Windows en chino', 'vault.import.mobaxterm.gb18030Desc': 'Úsalo para archivos antiguos exportados en Windows en chino.', 'vault.import.mobaxterm.masterPassword': 'Contraseña maestra (opcional)', 'vault.import.mobaxterm.masterPasswordPlaceholder': 'Introduce la contraseña maestra de MobaXterm', 'vault.import.mobaxterm.masterPasswordHint': 'Hace falta para importar las contraseñas guardadas de .mobaconf o MobaXterm.ini. Déjalo vacío para importar solo las sesiones.', 'vault.import.sshConfig.chooseMode': 'Elige cómo importar tu archivo de configuración SSH.', 'vault.import.sshConfig.modeQuestion': '¿Cómo te gustaría importar?', 'vault.import.sshConfig.importOnly': 'Solo importar', 'vault.import.sshConfig.importOnlyDesc': 'Importación única. Los cambios no se sincronizarán de vuelta al archivo.', 'vault.import.sshConfig.managed': 'Sincronización administrada', 'vault.import.sshConfig.managedDesc': 'Mantén la sincronización. Los cambios se guardarán de vuelta en el archivo.', 'vault.import.sshConfig.managedDestinationHint': 'La sincronización administrada siempre usa su propio grupo administrado; el destino anterior aplica solo a la importación única.', 'vault.import.sshConfig.managedGroup': 'ssh config', 'vault.import.sshConfig.managedSuccess': 'Se importaron {count} hosts. El archivo ahora está administrado.', 'vault.import.sshConfig.alreadyManaged': 'Este archivo ya está siendo administrado.', 'vault.import.sshConfig.alreadyManagedDesc': 'Este archivo ya está administrado en el grupo "{group}". Elimina primero la fuente administrada existente si quieres volver a importar.', 'vault.import.sshConfig.noFilePath': 'No se puede administrar este archivo.', 'vault.import.sshConfig.noFilePathDesc': 'No se pudo determinar la ruta del archivo. La sincronización administrada requiere acceso al sistema de archivos.', // Known Hosts 'knownHosts.search.placeholder': 'Buscar hosts conocidos...', 'knownHosts.action.scanSystem': 'Escanear sistema', 'knownHosts.action.importFile': 'Importar archivo', 'knownHosts.action.browseFile': 'Explorar archivo', 'knownHosts.empty.title': 'No hay hosts conocidos', 'knownHosts.empty.desc': "Los hosts conocidos son servidores SSH a los que te conectaste antes. Importa desde el archivo known_hosts de tu sistema para comenzar.", 'knownHosts.results.showingLimited': 'Mostrando {shown} de {total} hosts. Usa la búsqueda para encontrar hosts específicos.', 'knownHosts.toast.scanUnavailable': 'El escaneo del sistema no está disponible en esta plataforma.', 'knownHosts.toast.scanNoFile': 'No se encontró un archivo known_hosts del sistema.', 'knownHosts.toast.scanNoEntries': 'No se encontraron entradas utilizables en known_hosts.', 'knownHosts.toast.scanImported': 'Se importaron {count} hosts nuevos.', 'knownHosts.toast.scanNoNew': 'No se encontraron hosts nuevos.', 'knownHosts.toast.scanFailed': 'No se pudo escanear el known_hosts del sistema.', // Port Forwarding 'pf.empty.title': 'Configura el reenvío de puertos', 'pf.empty.desc': 'Guarda el reenvío de puertos para acceder a bases de datos, aplicaciones web y otros servicios.', 'pf.title': 'Reenvío de puertos', 'pf.rulesCount': '{count} reglas', 'pf.wizard.editTitle': 'Editar reenvío de puertos', 'pf.wizard.newTitle': 'Nuevo reenvío de puertos', 'pf.wizard.saveChanges': 'Guardar cambios', 'pf.wizard.done': 'Listo', 'pf.wizard.continue': 'Continuar', 'pf.wizard.cancel': 'Cancelar', 'pf.wizard.skipWizard': 'Omitir asistente', 'pf.error.hostNotFound': 'No se encontró el host', 'pf.toast.titleWithLabel': 'Reenvío de puertos: {label}', 'pf.type.local': 'Local', 'pf.type.remote': 'Remoto', 'pf.type.dynamic': 'Dinámico', 'pf.type.menu.local': 'Reenvío local', 'pf.type.menu.remote': 'Reenvío remoto', 'pf.type.menu.dynamic': 'Reenvío dinámico', 'pf.type.local.desc': 'El reenvío local te permite acceder al puerto de escucha de un servidor remoto como si fuera local.', 'pf.type.remote.desc': 'El reenvío remoto abre un puerto en la máquina remota y reenvía las conexiones al host local (actual).', 'pf.type.dynamic.desc': 'El reenvío dinámico de puertos convierte a NetMesh en un servidor proxy SOCKS.', 'pf.wizard.type.title': 'Selecciona el tipo de reenvío de puertos:', 'pf.wizard.localConfig.title': 'Configura el puerto local y la dirección de enlace:', 'pf.wizard.localConfig.desc': 'Este puerto estará abierto en el dispositivo local (actual) y recibirá el tráfico.', 'pf.wizard.localConfig.localPort': 'Número de puerto local *', 'pf.wizard.bindAddress': 'Dirección de enlace', 'pf.wizard.remoteHost.title': 'Selecciona el host remoto:', 'pf.wizard.remoteHost.desc': 'Selecciona un host donde estará abierto el puerto. El tráfico de este puerto se reenviará al host de destino.', 'pf.wizard.remoteConfig.title': 'Configura el puerto y la dirección de enlace:', 'pf.wizard.remoteConfig.desc': 'El tráfico se reenviará desde el puerto especificado y la dirección de interfaz del host seleccionado.', 'pf.wizard.remoteConfig.remotePort': 'Número de puerto remoto *', 'pf.wizard.destination.title': 'Selecciona el host de destino:', 'pf.wizard.destination.desc.local': 'Ingresa el destino remoto al que quieres acceder a través del túnel.', 'pf.wizard.destination.desc.remote': 'La dirección y el puerto de destino hacia donde se reenviará el tráfico.', 'pf.wizard.destination.address': 'Dirección de destino *', 'pf.wizard.destination.addressPlaceholder': 'p. ej. 127.0.0.1 o 192.168.1.100', 'pf.wizard.destination.port': 'Número de puerto de destino *', 'pf.wizard.sshServer.title': 'Selecciona el servidor SSH:', 'pf.wizard.sshServer.desc.dynamic': 'Selecciona el servidor SSH que actuará como tu proxy SOCKS.', 'pf.wizard.sshServer.desc.default': 'Selecciona el servidor SSH que tunelizará tu tráfico hacia el destino.', 'pf.wizard.label.title': 'Selecciona la etiqueta:', 'pf.wizard.label.placeholder.dynamic': 'p. ej. Proxy SOCKS', 'pf.wizard.label.placeholder.default': 'p. ej. MySQL Producción', 'pf.wizard.label.placeholder.remoteRule': 'p. ej. Regla remota', 'pf.wizard.placeholders.portExample': 'p. ej. {port}', 'pf.action.newForwarding': 'Nuevo reenvío', 'pf.action.startAll': 'Iniciar todo', 'pf.action.stopAll': 'Detener todo', 'pf.toast.startAll.success': 'Se iniciaron {count} reglas', 'pf.toast.startAll.partial': 'Se iniciaron {started} reglas ({failed} fallaron)', 'pf.toast.startAll.failed': 'No se pudieron iniciar {count} reglas', 'pf.toast.stopAll.success': 'Se detuvieron {count} túneles', 'pf.toast.stopAll.partial': 'Se detuvieron {stopped} túneles ({failed} fallaron)', 'pf.toast.stopAll.failed': 'No se pudieron detener {count} túneles', 'pf.form.labelPlaceholder': 'Etiqueta de la regla', 'pf.form.intermediateHost': 'Host intermedio *', 'pf.form.createRule': 'Crear regla', 'pf.form.openWizard': 'Abrir asistente', 'pf.form.openWizardTitle': 'Abrir el asistente de reenvío de puertos', 'pf.view.grid': 'Cuadrícula', 'pf.view.list': 'Lista', 'pf.rule.summary.local': 'Local {bindAddress}:{localPort} -> Túnel SSH -> {remoteHost}:{remotePort}', 'pf.rule.summary.remote': 'Remoto {bindAddress}:{localPort} -> Túnel SSH -> local {remoteHost}:{remotePort}', 'pf.rule.summary.dynamic': 'SOCKS en {bindAddress}:{localPort}', 'pf.tooltip.relayHost': 'Host de relevo', 'pf.tooltip.hostLabel': 'Host', 'pf.tooltip.hostAddress': 'Dirección', 'pf.tooltip.noHost': 'No hay host de relevo configurado', 'pf.tooltip.localDesc': 'Reenvío de puerto local: accede a servicios remotos a través del túnel SSH', 'pf.tooltip.remoteDesc': 'Reenvío de puerto remoto: expone servicios locales al host remoto', 'pf.tooltip.dynamicDesc': 'Proxy SOCKS dinámico: enruta el tráfico a través del túnel SSH', 'pf.deleteActive.title': '¿Eliminar el reenvío de puertos activo?', 'pf.deleteActive.desc': 'Esta regla de reenvío de puertos "{label}" está activa actualmente. Eliminarla primero detendrá el túnel.', 'pf.deleteActive.confirm': 'Detener y eliminar', 'pf.form.autoStart': 'Inicio automático', 'pf.form.autoStartDesc': 'Inicia automáticamente esta regla cuando se abra la aplicación', // SFTP 'sftp.newFolder': 'Nueva carpeta', 'sftp.newFile': 'Nuevo archivo', 'sftp.filter': 'Filtrar', 'sftp.filter.placeholder': 'Filtrar por nombre de archivo...', 'sftp.bookmark.add': 'Marcar esta ruta', 'sftp.bookmark.remove': 'Quitar marcador', 'sftp.bookmark.list': 'Rutas marcadas', 'sftp.bookmark.addGlobal': '+Global', 'sftp.bookmark.addGlobalTooltip': 'Guardar como marcador global (compartido entre todos los hosts)', 'sftp.bookmark.empty': 'Aún no hay marcadores', 'sftp.bookmark.removeConfirm': '¿Quitar el marcador {path}?', 'sftp.bookmark.manage': 'Administrar', 'sftp.bookmark.rename': 'Renombrar marcador', 'sftp.bookmark.done': 'Listo', 'sftp.bookmark.moveUp': 'Mover {label} hacia arriba', 'sftp.bookmark.moveDown': 'Mover {label} hacia abajo', 'sftp.columns.name': 'Nombre', 'sftp.columns.modified': 'Modificado', 'sftp.columns.size': 'Tamaño', 'sftp.columns.kind': 'Tipo', 'sftp.columns.owner': 'Propietario', 'sftp.columns.configure': 'Elegir columnas visibles', 'sftp.columns.actions': 'Acciones', 'sftp.sort.directoriesFirst': 'Carpetas primero', 'sftp.emptyDirectory': 'Directorio vacío', 'sftp.nav.up': 'Subir un nivel', 'sftp.nav.home': 'Ir al inicio', 'sftp.nav.refresh': 'Actualizar', 'sftp.upload': 'Subir', 'sftp.uploadFiles': 'Subir archivos', 'sftp.uploadFolder': 'Subir carpeta', 'sftp.dragDropToUpload': 'Arrastra y suelta archivos aquí para subirlos', 'sftp.retry': 'Reintentar', 'sftp.context.open': 'Abrir', 'sftp.context.navigateTo': 'Navegar a', 'sftp.context.moveTo': 'Mover a...', 'sftp.context.moveToParent': 'Mover al directorio principal', 'sftp.moveTo.title': 'Mover a directorio', 'sftp.moveTo.placeholder': 'Ingresa la ruta del directorio de destino', 'sftp.moveTo.confirm': 'Mover', 'sftp.moveTo.pathNotFound': 'Directorio no encontrado o inaccesible', 'sftp.context.download': 'Descargar', 'sftp.context.extract': 'Extraer aquí', 'sftp.extract.extracting': 'Extrayendo {fileName}...', 'sftp.extract.success': 'Se extrajo {fileName}', 'sftp.extract.error': 'No se pudo extraer {fileName}: {error}', 'sftp.context.copyToOtherPane': 'Copiar al otro panel', 'sftp.copyToOtherPane.unavailable': 'Abre la vista SFTP de dos paneles y conecta el panel de destino antes de copiar archivos.', 'sftp.copyCurrentPath': 'Copiar ruta actual', 'sftp.copyCurrentPath.success': 'Ruta actual copiada', 'sftp.copyCurrentPath.error': 'No se pudo copiar la ruta actual', 'sftp.viewMode.label': 'Modo de vista', 'sftp.viewMode.list': 'Vista de lista', 'sftp.viewMode.tree': 'Vista de árbol', 'sftp.viewMode.switchToList': 'Cambiar a vista de lista', 'sftp.viewMode.switchToTree': 'Cambiar a vista de árbol', 'sftp.listDensity.compact': 'Lista compacta', 'sftp.listDensity.comfortable': 'Lista cómoda', 'sftp.listDensity.switchToCompact': 'Cambiar a lista compacta', 'sftp.listDensity.switchToComfortable': 'Cambiar a lista cómoda', 'sftp.tree.loadError': 'No se pudo cargar el directorio', 'sftp.tree.loading': 'Cargando...', 'sftp.kind.folder': 'Carpeta', 'sftp.context.rename': 'Renombrar', 'sftp.context.permissions': 'Permisos', 'sftp.context.delete': 'Eliminar', 'sftp.context.refresh': 'Actualizar', 'sftp.context.uploadFiles': 'Subir archivo(s)...', 'sftp.context.uploadFilesHere': 'Subir archivo(s) aquí...', 'sftp.context.uploadFolder': 'Subir carpeta...', 'sftp.context.uploadFolderHere': 'Subir carpeta aquí...', 'sftp.context.downloadSelected': 'Descargar seleccionados ({count})', 'sftp.context.deleteSelected': 'Eliminar seleccionados ({count})', 'sftp.dropFilesHere': 'Suelta los archivos aquí', 'sftp.itemsCount': '{count} elementos', 'sftp.selectedCount': '{count} seleccionados', 'sftp.path.doubleClickToEdit': 'Haz doble clic para editar la ruta', 'sftp.showHiddenPaths': 'Rutas ocultas', 'sftp.task.waiting': 'Esperando...', 'sftp.transfer.preparing': 'preparando...', 'sftp.status.loading': 'Cargando...', 'sftp.status.uploading': 'Subiendo...', 'sftp.status.ready': 'Listo', 'sftp.transfers': 'Transferencias', 'sftp.transfers.active': '{count} activas', 'sftp.transfers.clearCompleted': 'Limpiar completadas', 'sftp.transfers.calculatingTotal': 'Calculando el tamaño total...', 'sftp.transfers.filesCount': '{count} archivos', 'sftp.transfers.filesProgress': '{current}/{total} archivos', // Progressive folder walk: total is "found so far", not a fixed grand total. 'sftp.transfers.filesDiscoveredProgress': '{completed} completados · {discovered} encontrados', 'sftp.transfers.expandChildren': 'Mostrar archivos', 'sftp.transfers.collapseChildren': 'Ocultar archivos', 'sftp.transfers.expandChildList': 'Mostrar detalle', 'sftp.transfers.collapseChildList': 'Ocultar', 'sftp.transfers.retryAction': 'Reintentar', 'sftp.transfers.dismissAction': 'Descartar', 'sftp.transfers.openTargetFolder': 'Abrir carpeta de destino', 'sftp.transfers.openTargetFolderError': 'No se pudo abrir la carpeta de destino', 'sftp.transfers.copyTargetPath': 'Copiar ruta de destino', 'sftp.transfers.copyTargetPathSuccess': 'Ruta de destino copiada', 'sftp.transfers.copyTargetPathError': 'No se pudo copiar la ruta de destino', 'sftp.transfers.pathConflict.title': 'Transferencia bloqueada', 'sftp.transfers.pathConflict.paused': 'Otra transferencia de "{name}" está en pausa. Reanúdala o cancélala primero.', 'sftp.transfers.pathConflict.inProgress': 'Otra transferencia de "{name}" ya está en curso.', 'sftp.transferCenter.title': 'Transferencias de archivos', 'sftp.transferCenter.quitConfirm': '{count} transferencia(s) de archivos quedaron sin terminar. El progreso se guardará y deberá reanudarse manualmente la próxima vez. ¿Salir de todos modos?', 'sftp.transferCenter.phase.scanning': 'Escaneando', 'sftp.transferCenter.phase.compressing': 'Comprimiendo', 'sftp.transferCenter.phase.uploading': 'Subiendo', 'sftp.transferCenter.phase.transferring': 'Transfiriendo', 'sftp.transferCenter.phase.extracting': 'Extrayendo', 'sftp.transferCenter.phase.verifying': 'Verificando', 'sftp.transferCenter.bucket.active': 'En progreso', 'sftp.transferCenter.bucket.all': 'Todas', 'sftp.transferCenter.bucket.queued': 'En cola', 'sftp.transferCenter.bucket.paused': 'En pausa', 'sftp.transferCenter.bucket.failed': 'Fallidas', 'sftp.transferCenter.bucket.attention': 'Requieren atención', 'sftp.transferCenter.bucket.completed': 'Completadas', 'sftp.transferCenter.status.pending': 'Preparando', 'sftp.transferCenter.status.resuming': 'Reconectando y reanudando…', 'sftp.transferCenter.status.queued': 'En cola', 'sftp.transferCenter.status.transferring': 'Transfiriendo', 'sftp.transferCenter.status.pausing': 'Pausando', 'sftp.transferCenter.status.paused': 'En pausa', 'sftp.transferCenter.status.attention': 'Requiere atención', 'sftp.transferCenter.status.interrupted': 'Interrumpida: reanúdala manualmente', 'sftp.transferCenter.status.completed': 'Completada', 'sftp.transferCenter.status.failed': 'Fallida', 'sftp.transferCenter.status.cancelled': 'Cancelada', 'sftp.transferCenter.background': 'Segundo plano', 'sftp.transferCenter.pause': 'Pausar', 'sftp.transferCenter.resume': 'Reanudar', 'sftp.transferCenter.prioritize': 'Transferir a continuación', 'sftp.transferCenter.pauseAll': 'Pausar todas', 'sftp.transferCenter.resumeAll': 'Reanudar todas', 'sftp.transferCenter.empty': 'No hay transferencias en esta categoría', 'sftp.transferCenter.showBackground': 'Mostrar {count} transferencias en segundo plano', 'sftp.transferCenter.hideBackground': 'Ocultar transferencias en segundo plano', 'sftp.transferCenter.clear': 'Limpiar registros', 'sftp.transferCenter.applyAll': 'Aplicar a todas', 'sftp.transfers.resizeNameColumn': 'Redimensionar la columna de nombre de archivo', 'sftp.transfers.dragToResize': 'Arrastra para redimensionar', 'sftp.goUp': 'Subir un nivel', 'sftp.goToTerminalCwd': 'Ir al directorio de la terminal', 'sftp.locatePathInTerminal': 'Abrir ruta en la terminal', 'sftp.followTerminalCwd': 'Seguir el directorio de la terminal', 'sftp.followTerminalCwd.enable': 'Habilitar el seguimiento del directorio de la terminal', 'sftp.followTerminalCwd.disable': 'Deshabilitar el seguimiento del directorio de la terminal', 'sftp.encoding.label': 'Codificación de nombres de archivo', 'sftp.encoding.auto': 'Auto', 'sftp.encoding.utf8': 'UTF-8', 'sftp.encoding.gb18030': 'GB18030', 'sftp.goHome': 'Ir al inicio', 'sftp.goRoot': 'Ir a la raíz', 'sftp.folderName': 'Nombre de la carpeta', 'sftp.folderName.placeholder': 'Ingresa el nombre de la carpeta', 'sftp.fileName': 'Nombre del archivo', 'sftp.fileName.placeholder': 'Ingresa el nombre del archivo', 'sftp.prompt.newFolderName': '¿Nombre de la carpeta nueva?', 'sftp.rename.title': 'Renombrar', 'sftp.rename.newName': 'Nombre nuevo', 'sftp.rename.placeholder': 'Ingresa el nombre nuevo', 'sftp.confirm.deleteOne': '¿Eliminar "{name}"?', 'sftp.deleteConfirm.single': '¿Eliminar "{name}"?', 'sftp.deleteConfirm.title': '¿Eliminar {count} elemento(s)?', 'sftp.deleteConfirm.desc': 'Esta acción no se puede deshacer. Se eliminará lo siguiente:', 'sftp.deleteConfirm.descSingle': 'Esta acción no se puede deshacer.', 'sftp.deleteConfirm.host': 'Host', 'sftp.deleteConfirm.path': 'Ruta', 'sftp.error.loadFailed': 'No se pudo cargar el directorio', 'sftp.error.downloadFailed': 'No se pudo descargar', 'sftp.error.uploadFailed': 'No se pudo subir', 'sftp.error.deleteFailed': 'No se pudo eliminar', 'sftp.error.createFolderFailed': 'No se pudo crear la carpeta', 'sftp.error.createFileFailed': 'No se pudo crear el archivo', 'sftp.error.invalidFileName': 'El nombre de archivo contiene caracteres no válidos: {chars}', 'sftp.error.reservedName': 'Este nombre de archivo está reservado por el sistema', 'sftp.overwrite.title': 'El archivo ya existe', 'sftp.overwrite.desc': 'Ya existe un archivo llamado "{name}". ¿Quieres reemplazarlo?', 'sftp.overwrite.confirm': 'Reemplazar', 'sftp.error.renameFailed': 'No se pudo renombrar', 'sftp.picker.title': 'Seleccionar host', 'sftp.picker.desc': 'Elige un host para el panel {side}', 'sftp.picker.searchPlaceholder': 'Buscar hosts...', 'sftp.picker.local.title': 'Sistema de archivos local', 'sftp.picker.local.desc': 'Explorar archivos locales', 'sftp.picker.local.badge': 'Local', 'sftp.picker.connected.section': 'Conectados', 'sftp.picker.connected.badge': 'En vivo', 'sftp.picker.connected.connecting': 'Conectando', 'sftp.picker.noMatch': 'No hay hosts que coincidan', 'sftp.permissions.title': 'Editar permisos', 'sftp.permissions.owner': 'Propietario', 'sftp.permissions.group': 'Grupo', 'sftp.permissions.others': 'Otros', 'sftp.permissions.octal': 'Octal', 'sftp.permissions.symbolic': 'Simbólico', 'sftp.permissions.success': 'Permisos actualizados correctamente', 'sftp.permissions.failed': 'No se pudieron actualizar los permisos', 'sftp.pane.local': 'Local', 'sftp.pane.remote': 'Remoto', 'sftp.pane.selectHost': 'Seleccionar host', 'sftp.pane.selectHostToStart': 'Selecciona un host para comenzar', 'sftp.pane.chooseFilesystem': 'Elige un sistema de archivos local o remoto para explorar', 'sftp.tabs.addTab': 'Agregar pestaña nueva', 'sftp.tabs.closeTab': 'Cerrar pestaña', 'sftp.tabs.newTab': 'Pestaña nueva', 'sftp.tabs.copyDefaultPath': 'Copiar pestaña (ruta predeterminada)', 'sftp.tabs.copyCurrentPath': 'Copiar e ir a la ruta actual', 'sftp.conflict.title': 'Conflicto de archivos', 'sftp.conflict.desc': 'Ya existe un archivo con el mismo nombre en el destino', 'sftp.conflict.folderTitle': 'Conflicto de carpetas', 'sftp.conflict.folderDesc': 'Elige cómo continuar.', 'sftp.conflict.folderFileDesc': 'Ya existe un archivo con el mismo nombre en el destino. Una carpeta no se puede combinar con un archivo.', 'sftp.conflict.folderSymlinkDesc': 'Ya existe un enlace simbólico con el mismo nombre en el destino. Una carpeta no se puede combinar con un enlace simbólico.', 'sftp.conflict.folderUnknownDesc': 'Ya existe un elemento con el mismo nombre en el destino, pero no se pudo confirmar su tipo. Reemplazar no está disponible para proteger los datos del destino.', 'sftp.conflict.folderMergeHint': 'Combinar: conserva el contenido que solo existe en el destino.', 'sftp.conflict.folderReplaceWarning': 'Reemplazar: elimina el contenido exclusivo del destino y no se puede deshacer.', 'sftp.conflict.alreadyExistsSuffix': 'ya existe', 'sftp.conflict.existingFile': 'Archivo existente', 'sftp.conflict.newFile': 'Archivo nuevo', 'sftp.conflict.size': 'Tamaño:', 'sftp.conflict.modified': 'Modificado:', 'sftp.conflict.applyToAll': 'Aplicar esta acción a los {count} conflictos restantes', 'sftp.conflict.action.stop': 'Detener', 'sftp.conflict.action.skip': 'Omitir', 'sftp.conflict.action.keepBoth': 'Conservar ambos', 'sftp.conflict.action.duplicate': 'Duplicar', 'sftp.conflict.action.merge': 'Combinar', 'sftp.conflict.action.replace': 'Reemplazar', // SFTP Upload Phases 'sftp.upload.phase.compressing': 'Comprimiendo', 'sftp.upload.phase.uploading': 'Subiendo', 'sftp.upload.phase.extracting': 'Extrayendo', 'sftp.upload.phase.compressed': 'Comprimido', // SFTP File Opener 'sftp.context.copyPath': 'Copiar ruta del archivo', 'sftp.context.openWithDefault': 'Abrir con la aplicación predeterminada del sistema', 'sftp.context.openWith': 'Abrir con...', 'sftp.context.edit': 'Editar', 'sftp.context.preview': 'Vista previa', 'sftp.opener.title': 'Abrir con', 'sftp.opener.desc': 'Elige una aplicación para abrir este archivo', 'sftp.opener.builtInEditor': 'Editor integrado', 'sftp.opener.editDescription': 'Editar archivos de texto', 'sftp.opener.builtInImageViewer': 'Visor de imágenes integrado', 'sftp.opener.previewDescription': 'Previsualizar imágenes', 'sftp.opener.systemApp': 'Elegir aplicación...', 'sftp.opener.systemAppDescription': 'Selecciona una aplicación de tu computadora', 'sftp.opener.onlySystemApp': 'Este archivo solo se puede abrir con una aplicación externa', 'sftp.opener.noAppsAvailable': 'No hay aplicaciones disponibles', 'sftp.opener.noExtension': 'archivos sin extensión', 'sftp.opener.setDefault': 'Usar siempre esto para archivos {ext}', 'sftp.opener.confirmTitle': '¿Establecer como predeterminado?', 'sftp.opener.confirmDescription': '¿Quieres usar siempre {app} para archivos {ext}?', 'sftp.opener.yesRemember': 'Sí, recordar esta elección', 'sftp.opener.justOnce': 'Solo esta vez', 'sftp.opener.confirm.title': 'Establecer aplicación predeterminada', 'sftp.opener.confirm.desc': '¿Quieres abrir siempre los archivos .{ext} con esta aplicación?', 'sftp.editor.title': 'Editor de texto', 'sftp.editor.save': 'Guardar en remoto', 'sftp.editor.saving': 'Guardando...', 'sftp.editor.saved': 'Guardado correctamente', 'sftp.editor.saveFailed': 'No se pudo guardar el archivo', 'sftp.editor.unsavedChanges': 'Tienes cambios sin guardar. ¿Cerrar de todos modos?', 'sftp.editor.syntaxHighlight': 'Resaltado de sintaxis', 'sftp.preview.title': 'Vista previa de imagen', 'sftp.preview.zoomIn': 'Acercar', 'sftp.preview.zoomOut': 'Alejar', 'sftp.preview.resetZoom': 'Restablecer zoom', 'sftp.preview.fitToWindow': 'Ajustar a la ventana', // Settings > SFTP File Associations 'settings.tab.sftpFileAssociations': 'SFTP', 'settings.sftp.transferConcurrency': 'Concurrencia de transferencias', 'settings.sftp.transferConcurrency.desc': 'Cantidad máxima de archivos transferidos en paralelo para el mismo endpoint, incluidos los contenidos de carpetas y los archivos seleccionados por separado. Los valores más altos pueden mejorar la velocidad, pero pueden abrumar a algunos servidores.', 'settings.sftp.transferPoolIdleTtl': 'Mantener activa la conexión de transferencia', 'settings.sftp.transferPoolIdleTtl.desc': 'Cuánto tiempo las conexiones SFTP dedicadas de transferencia permanecen activas después de estar inactivas. Los valores más largos reducen la demora de arranque en frío antes de la siguiente subida o descarga. Las transferencias ocupadas nunca se cierran.', 'settings.sftp.transferPoolIdleTtl.1m': '1 minuto', 'settings.sftp.transferPoolIdleTtl.5m': '5 minutos', 'settings.sftp.transferPoolIdleTtl.15m': '15 minutos', 'settings.sftp.transferPoolIdleTtl.30m': '30 minutos', 'settings.sftp.transferPoolIdleTtl.never': 'Hasta que se cierre la aplicación', 'settings.ssh.transportIdleTtl': 'Mantener activa la conexión SSH', 'settings.ssh.transportIdleTtl.desc': 'Cuánto tiempo una conexión SSH compartida permanece activa después de liberar el último terminal, la exploración SFTP, la transferencia masiva o el arrendamiento de reenvío de puertos. Mientras esté activa, reconectarse al mismo host puede omitir la reautenticación (incluida la MFA). Las sesiones y transferencias activas nunca se cierran.', 'settings.ssh.transportIdleTtl.1m': '1 minuto', 'settings.ssh.transportIdleTtl.5m': '5 minutos', 'settings.ssh.transportIdleTtl.15m': '15 minutos', 'settings.ssh.transportIdleTtl.30m': '30 minutos', 'settings.ssh.transportIdleTtl.never': 'Hasta que se cierre la aplicación', 'settings.sftp.defaultOpener': 'Aplicación predeterminada para abrir archivos', 'settings.sftp.defaultOpener.desc': 'Elige la aplicación predeterminada para abrir archivos sin una asociación de archivos específica', 'settings.sftp.defaultOpener.ask': 'Preguntar siempre', 'settings.sftp.defaultOpener.askDesc': 'Muestra un diálogo para elegir una aplicación cada vez', 'settings.sftp.defaultOpener.builtInDesc': 'Abrir archivos de texto en el editor integrado por defecto', 'settings.sftp.defaultOpener.systemApp': 'Elegir aplicación...', 'settings.sftp.defaultOpener.systemAppDesc': 'Abrir archivos con una aplicación específica por defecto', 'settings.sftpFileAssociations.title': 'Asociaciones de archivos SFTP', 'settings.sftpFileAssociations.desc': 'Configura las aplicaciones predeterminadas para abrir archivos por extensión', 'settings.sftpFileAssociations.extension': 'Extensión', 'settings.sftpFileAssociations.application': 'Aplicación', 'settings.sftpFileAssociations.noAssociations': 'No hay asociaciones de archivos configuradas', 'settings.sftpFileAssociations.remove': 'Quitar', 'settings.sftpFileAssociations.removeConfirm': '¿Quitar la asociación para .{ext}?', // Settings > SFTP Behavior 'settings.sftp.doubleClickBehavior': 'Comportamiento del doble clic', 'settings.sftp.doubleClickBehavior.desc': 'Elige la acción al hacer doble clic en un archivo en la vista SFTP', 'settings.sftp.doubleClickBehavior.open': 'Abrir archivo', 'settings.sftp.doubleClickBehavior.transfer': 'Transferir al otro panel', 'settings.sftp.doubleClickBehavior.openDesc': 'Abrir el archivo en la aplicación predeterminada', 'settings.sftp.doubleClickBehavior.transferDesc': 'Transferir el archivo al host activo del otro panel', 'settings.sshDeepLink.title': 'Enlaces SSH y Telnet', 'settings.sshDeepLink.enable': 'Abrir enlaces ssh:// y telnet:// con NetMesh', 'settings.sshDeepLink.enableDesc': 'Permite que NetMesh maneje los enlaces ssh:// y telnet:// de los navegadores y otras aplicaciones, además de lanzamientos al estilo PuTTY como -ssh user@host -P 22 -pw password.', 'settings.explorerContextMenu.title': 'Explorador de Windows', 'settings.explorerContextMenu.enable': 'Mostrar "Abrir en NetMesh" en los menús contextuales de carpetas', 'settings.explorerContextMenu.enableDesc': 'Agrega un elemento de clic derecho para las carpetas y los fondos de carpeta, para que puedas abrir una terminal local allí. Se aplica de inmediato; no es necesario reinstalar.', 'settings.jmsDeepLink.title': 'Enlaces de JumpServer', 'settings.jmsDeepLink.enable': 'Manejar enlaces jms://', 'settings.jmsDeepLink.enableDesc': 'Registra a NetMesh como el controlador de los enlaces jms:// del cliente de JumpServer. Puede entrar en conflicto con el cliente oficial de JumpServer.', // Settings > SFTP Auto Sync 'settings.sftp.autoSync': 'Sincronización automática con el remoto', 'settings.sftp.autoSync.desc': 'Sincroniza automáticamente los cambios de archivos de vuelta al servidor remoto al abrir archivos con aplicaciones externas', 'settings.sftp.autoSync.enable': 'Habilitar la sincronización automática', 'settings.sftp.autoSync.enableDesc': 'Cuando guardas un archivo en una aplicación externa, los cambios se subirán automáticamente al servidor remoto', // Settings > SFTP Auto Open Sidebar 'settings.sftp.autoOpenSidebar': 'Abrir la barra lateral automáticamente al conectar', 'settings.sftp.autoOpenSidebar.desc': 'Abre automáticamente la barra lateral del explorador de archivos SFTP al conectar a un host', 'settings.sftp.autoOpenSidebar.enable': 'Habilitar la apertura automática de la barra lateral', 'settings.sftp.autoOpenSidebar.enableDesc': 'La barra lateral de SFTP se abrirá automáticamente cuando una sesión de terminal se conecte a un host remoto', 'settings.sftp.followTerminalCwd': 'Seguir el directorio de la terminal', 'settings.sftp.followTerminalCwd.desc': 'Sincroniza automáticamente el explorador SFTP de la barra lateral con el directorio de trabajo de la terminal (alternar en la barra de herramientas)', 'settings.sftp.followTerminalCwd.enable': 'Habilitar el seguimiento del directorio de la terminal por defecto', 'settings.sftp.followTerminalCwd.enableDesc': 'Cuando la barra lateral de SFTP está abierta, el modo de seguimiento permanece activado por defecto y se actualiza después de los comandos cd de la terminal', 'settings.sftp.defaultViewMode': 'Modo de vista predeterminado', 'settings.sftp.defaultViewMode.desc': 'Elige el modo de vista predeterminado al abrir una pestaña SFTP nueva. Las preferencias por host anulan esta configuración.', 'settings.sftp.defaultViewMode.list': 'Vista de lista', 'settings.sftp.defaultViewMode.listDesc': 'Muestra los archivos en una lista plana del directorio actual', 'settings.sftp.defaultViewMode.tree': 'Vista de árbol', 'settings.sftp.defaultViewMode.treeDesc': 'Muestra los archivos en una estructura de árbol jerárquica', 'sftp.autoSync.success': 'Archivo sincronizado con el remoto: {fileName}', 'sftp.autoSync.error': 'No se pudo sincronizar el archivo: {error}', // SFTP Folder Upload Progress 'sftp.upload.progress': 'Subiendo {current} de {total} archivos...', 'sftp.upload.uploading': 'Subiendo...', 'sftp.upload.compressing': 'Comprimiendo...', 'sftp.upload.extracting': 'Extrayendo...', 'sftp.upload.scanning': 'Escaneando archivos...', 'sftp.upload.completed': 'Completado', 'sftp.upload.compressed': 'Transferencia comprimida', 'sftp.upload.currentFile': 'Actual: {fileName}', 'sftp.upload.cancelled': 'Subida cancelada', 'sftp.upload.noFiles': 'No hay archivos para subir', 'sftp.upload.partialSuccess': 'Se subieron {success} archivo(s); {failed} fallaron', 'sftp.upload.cancel': 'Cancelar', 'sftp.upload.completedToPath': 'Subido a {path}', // SFTP Download 'sftp.download.completed': 'Descargado', 'sftp.download.cancelled': 'Descarga cancelada', // SFTP Reconnecting 'sftp.reconnecting.title': 'Reconectando...', 'sftp.reconnecting.desc': 'Se perdió la conexión, intentando reconectar', 'sftp.reconnected': 'Conexión restablecida', 'sftp.error.reconnectFailed': 'No se pudo reconectar. Inténtalo de nuevo.', 'sftp.error.connectionLostManual': 'Se perdió la conexión. Vuelve a conectar manualmente.', 'sftp.error.connectionLostReconnecting': 'Se perdió la conexión. Reconectando...', 'sftp.error.sessionLost': 'Se perdió la sesión SFTP. Vuelve a conectar.', // Settings > SFTP Show Hidden Files 'settings.sftp.showHiddenFiles': 'Mostrar archivos ocultos', 'settings.sftp.showHiddenFiles.desc': 'Muestra los archivos ocultos (dotfiles en Unix/macOS y archivos con el atributo oculto en Windows) en el explorador de archivos SFTP.', 'settings.sftp.showHiddenFiles.enable': 'Mostrar archivos ocultos', 'settings.sftp.showHiddenFiles.enableDesc': 'Muestra los archivos ocultos al explorar sistemas de archivos locales y remotos', // Settings > SFTP Compressed Upload 'settings.sftp.compressedUpload': 'Transferencia de carpetas comprimidas', 'settings.sftp.compressedUpload.desc': 'Comprime las carpetas antes de subirlas para reducir significativamente el tiempo de transferencia.', 'settings.sftp.compressedUpload.enable': 'Habilitar la compresión de carpetas', 'settings.sftp.compressedUpload.enableDesc': 'Comprime automáticamente las carpetas con tar antes de la transferencia. Requiere soporte de tar en el servidor. Si no está disponible, se recurre a una transferencia normal.', 'settings.sftp.skipUnchanged.enable': 'Omitir archivos sin cambios', 'settings.sftp.skipUnchanged.enableDesc': 'Omite los archivos cuyo tamaño y hora de modificación ya coinciden con el destino (estilo rsync). Deshabilitado al reemplazar una carpeta en una ruta de staging.', // Quick Switcher 'qs.search.placeholder': 'Buscar hosts o pestañas', 'qs.jumpTo': 'Ir a', 'qs.localTerminal': 'Terminal local', 'qs.localShells': 'Shells locales', 'qs.default': 'Predeterminado', // Select Host panel 'selectHost.title': 'Seleccionar host', 'selectHost.noHostsFound': 'No se encontraron hosts', 'selectHost.newHost': 'Host nuevo', 'selectHost.continue': 'Continuar', 'selectHost.continueWithCount': 'Continuar ({count} seleccionados)', 'selectHost.toggleGroup': 'Alternar todos los hosts en {name}', 'selectHost.toggleHost': 'Alternar {name}', // Quick Connect 'quickConnect.knownHost.title': '¿Estás seguro de que quieres conectarte?', 'quickConnect.knownHost.authenticity': 'No se puede establecer la autenticidad de {hostname}.', 'quickConnect.knownHost.fingerprintLabel': 'La huella digital de {keyType} es SHA256:', 'quickConnect.knownHost.addQuestion': '¿Quieres agregarlo a la lista de hosts conocidos?', 'quickConnect.knownHost.addAndContinue': 'Agregar y continuar', 'quickConnect.addKey': 'Agregar clave', 'quickConnect.warning.unparsedOptions': 'Se ignoraron algunos argumentos SSH: {options}', 'quickConnect.identity.label': 'Preajuste de credenciales', 'quickConnect.identity.placeholder': 'Elige una identidad guardada', 'quickConnect.identity.empty': 'No se encontraron identidades guardadas', 'quickConnect.identity.hint': 'Elige una identidad para completar automáticamente su nombre de usuario y autenticación.', 'quickConnect.identity.selectedHint': 'Listo para conectar como {username}.', 'quickConnect.identity.method.password': 'Contraseña', 'quickConnect.identity.method.key': 'Clave SSH', 'quickConnect.identity.method.certificate': 'Certificado', 'quickConnect.identity.unavailable': 'A esta identidad le faltan credenciales utilizables en este dispositivo.', 'quickConnect.identity.useCustom': 'Usar credenciales personalizadas', 'quickConnect.identity.connect': 'Conectar con preajuste', 'quickConnect.connectTitle': 'Conectar a {host}', // Terminal 'terminal.connectionErrorTitle': 'Error de conexión', // Protocol select dialog 'protocolSelect.chooseProtocol': 'Elegir protocolo', 'protocolSelect.port': 'puerto:', // Host Details 'hostDetails.title.details': 'Detalles del host', 'hostDetails.title.new': 'Host nuevo', 'vault.panel.resizeWidth': 'Redimensionar el ancho del panel', 'hostDetails.saveAria': 'Guardar', 'hostDetails.section.address': 'Dirección', 'hostDetails.hostname.placeholder': 'IP o nombre de host', 'hostDetails.section.general': 'General', 'hostDetails.os.title': 'Identificación del sistema', 'hostDetails.os.desc': 'Usa la detección automática. Selecciona un sistema solo si la detección es incorrecta. El modo de dispositivo de red se configura por separado.', 'hostDetails.os.auto': 'Automático', 'hostDetails.os.unknown': 'Otro / desconocido', 'hostDetails.os.selection': 'Selección del sistema', 'hostDetails.os.current': 'Sistema actual', 'hostDetails.os.freebsd': 'FreeBSD', 'hostDetails.os.linux': 'Linux', 'hostDetails.os.windows': 'Windows', 'hostDetails.os.macos': 'macOS', 'hostDetails.section.sftp': 'Configuración de SFTP', 'hostDetails.sftp.fileProtocol': 'Protocolo de archivos', 'hostDetails.sftp.fileProtocol.desc': 'Auto intenta SFTP y luego recurre al modo SCP cuando el subsistema SFTP no está disponible (p. ej., algunos NAS). Fuerza SCP para hosts que solo admiten SCP.', 'hostDetails.sftp.fileProtocol.auto': 'Auto', 'hostDetails.sftp.fileProtocol.sftp': 'Solo SFTP', 'hostDetails.sftp.fileProtocol.scp': 'Modo SCP', 'hostDetails.sftp.sudo': 'Modo Sudo', 'hostDetails.sftp.sudo.desc': 'Adquiere automáticamente privilegios de root usando la contraseña guardada', 'hostDetails.sftp.sudo.passwordWarning': 'El modo Sudo requiere una contraseña. Configura una arriba, o asegúrate de que el servidor permita sudo sin contraseña.', 'hostDetails.sftp.encoding': 'Codificación de nombres de archivo', 'hostDetails.sftp.encoding.desc': 'Selecciona la codificación utilizada para decodificar y enviar los nombres de archivo SFTP.', 'hostDetails.label.placeholder': 'Etiqueta (p. ej., servidor de producción)', 'hostDetails.notes.label': 'Notas', 'hostDetails.notes.placeholder': 'Hardware, proyecto, cliente, región, rol...', 'hostDetails.notes.help': 'Admite Markdown. No guardes contraseñas ni claves privadas aquí.', 'hostDetails.notes.tab.edit': 'Editar', 'hostDetails.notes.tab.preview': 'Vista previa', 'hostDetails.notes.preview.empty': 'Aún no hay nada para previsualizar.', 'hostDetails.notes.toggle.show': 'Mostrar el editor de notas', 'hostDetails.notes.toggle.hide': 'Ocultar el editor de notas', 'hostDetails.group.placeholder': 'Grupo padre', 'hostDetails.section.credentials': 'Credenciales', 'hostDetails.section.portCredentials': 'Puerto y credenciales', 'hostDetails.section.appearance': 'Apariencia', 'hostDetails.distro.title': 'Distribución de Linux', 'hostDetails.distro.desc': 'Detecta automáticamente al conectar, o anula el ícono de la distro manualmente.', 'hostDetails.icon.title': 'Ícono del host', 'hostDetails.icon.sectionTitle': 'Color e ícono', 'hostDetails.icon.desc': 'Elige la fuente y el color del ícono para este host.', 'hostDetails.icon.source': 'Fuente', 'hostDetails.icon.manualLabel': 'Ícono manual', 'hostDetails.icon.tab.brand': 'Marca', 'hostDetails.icon.tab.type': 'Tipo', 'hostDetails.icon.mode.auto': 'Automático', 'hostDetails.icon.mode.custom': 'Personalizado', 'hostDetails.icon.reset': 'Restablecer el ícono del host', 'hostDetails.icon.colorLabel': 'Color del ícono', 'hostDetails.icon.colorDefault': 'Predeterminado', 'hostDetails.icon.colorAuto': 'Automático', 'hostDetails.icon.colorManual': 'Manual', 'hostDetails.icon.colorChoice': 'Color', 'hostDetails.icon.autoColorLabel': 'Color actual', 'hostDetails.icon.preview': 'Vista previa del ícono', 'hostDetails.icon.showLibrary': 'Mostrar la biblioteca de íconos', 'hostDetails.icon.hideLibrary': 'Ocultar la biblioteca de íconos', 'hostDetails.icon.autoUsesDistro': 'Usa el ícono de la distribución de Linux y el color seleccionado para este host.', 'hostDetails.icon.customOverridesDistro': 'El ícono integrado reemplaza la distribución de Linux para este host.', 'hostDetails.icon.option.server': 'Servidor', 'hostDetails.icon.option.terminal': 'Terminal', 'hostDetails.icon.option.database': 'Base de datos', 'hostDetails.icon.option.cloud': 'Nube', 'hostDetails.icon.option.router': 'Router', 'hostDetails.icon.option.shield': 'Escudo', 'hostDetails.icon.option.code': 'Código', 'hostDetails.icon.option.box': 'Caja', 'hostDetails.icon.option.globe': 'Globo', 'hostDetails.icon.option.cpu': 'CPU', 'hostDetails.icon.option.hard-drive': 'Almacenamiento', 'hostDetails.icon.option.network': 'Red', 'hostDetails.icon.option.wifi': 'Inalámbrico', 'hostDetails.icon.option.lock': 'Bloqueo', 'hostDetails.icon.option.key': 'Clave', 'hostDetails.icon.option.monitor': 'Monitor', 'hostDetails.icon.option.container': 'Contenedor', 'hostDetails.icon.option.activity': 'Actividad', 'hostDetails.icon.option.zap': 'Rápido', 'hostDetails.icon.option.server-cog': 'Configuración del servidor', 'hostDetails.icon.color.blue': 'Azul', 'hostDetails.icon.color.green': 'Verde', 'hostDetails.icon.color.red': 'Rojo', 'hostDetails.icon.color.amber': 'Ámbar', 'hostDetails.icon.color.purple': 'Púrpura', 'hostDetails.icon.color.cyan': 'Cian', 'hostDetails.icon.color.orange': 'Naranja', 'hostDetails.icon.color.slate': 'Pizarra', 'hostDetails.icon.color.violet': 'Violeta', 'hostDetails.icon.color.pink': 'Rosa', 'hostDetails.icon.color.rose': 'Rosado', 'hostDetails.icon.color.lime': 'Lima', 'hostDetails.icon.color.teal': 'Verde azulado', 'hostDetails.icon.color.sky': 'Celeste', 'hostDetails.icon.color.indigo': 'Índigo', 'hostDetails.icon.color.zinc': 'Zinc', 'hostDetails.icon.color.custom': 'Color personalizado', 'hostDetails.distro.mode': 'Fuente', 'hostDetails.distro.mode.auto': 'Detección automática', 'hostDetails.distro.mode.manual': 'Anulación manual', 'hostDetails.distro.detectedLabel': 'Actual', 'hostDetails.distro.manualLabel': 'Anulación', 'hostDetails.distro.pending': 'Detectar después de la primera conexión', 'hostDetails.distro.unknown': 'Desconocido', 'hostDetails.distro.option.linux': 'Linux genérico', 'hostDetails.distro.option.ubuntu': 'Ubuntu', 'hostDetails.distro.option.debian': 'Debian', 'hostDetails.distro.option.centos': 'CentOS', 'hostDetails.distro.option.rocky': 'Rocky Linux', 'hostDetails.distro.option.fedora': 'Fedora', 'hostDetails.distro.option.arch': 'Arch Linux', 'hostDetails.distro.option.alpine': 'Alpine', 'hostDetails.distro.option.amazon': 'Amazon Linux', 'hostDetails.distro.option.opensuse': 'openSUSE / SLES', 'hostDetails.distro.option.redhat': 'Red Hat / RHEL', 'hostDetails.distro.option.almalinux': 'AlmaLinux', 'hostDetails.distro.option.alinux': 'Alibaba Cloud Linux', 'hostDetails.distro.option.openeuler': 'openEuler', 'hostDetails.distro.option.freebsd': 'FreeBSD', 'hostDetails.distro.option.oracle': 'Oracle Linux', 'hostDetails.distro.option.kali': 'Kali Linux', 'hostDetails.distro.option.cisco': 'Cisco', 'hostDetails.distro.option.juniper': 'Juniper Networks', 'hostDetails.distro.option.huawei': 'Huawei', 'hostDetails.distro.option.h3c': 'H3C', 'hostDetails.distro.option.hpe': 'HPE', 'hostDetails.distro.option.mikrotik': 'MikroTik', 'hostDetails.distro.option.fortinet': 'Fortinet', 'hostDetails.distro.option.paloalto': 'Palo Alto Networks', 'hostDetails.distro.option.zyxel': 'ZyXEL', 'hostDetails.distro.option.ruijie': 'Ruijie', 'hostDetails.section.mosh': 'Mosh', 'hostDetails.section.et': 'EternalTerminal', 'hostDetails.et.port': 'Puerto del servidor ET', 'hostDetails.et.port.desc': 'Puerto en el que escucha etserver (predeterminado 2022)', 'hostDetails.username.placeholder': 'Nombre de usuario', 'hostDetails.password.placeholder': 'Contraseña', 'hostDetails.password.show': 'Mostrar contraseña', 'hostDetails.password.hide': 'Ocultar contraseña', 'hostDetails.password.save': 'Guardar contraseña', 'hostDetails.auth.method': 'Método de inicio de sesión', 'hostDetails.auth.auto': 'Automático', 'hostDetails.auth.auto.desc': 'Intenta con el agente SSH y las claves locales, y luego usa la contraseña guardada.', 'hostDetails.auth.passwordOnly': 'Solo contraseña', 'hostDetails.auth.password.desc': 'Usa solo la contraseña guardada y las solicitudes interactivas de contraseña.', 'hostDetails.auth.key': 'Clave', 'hostDetails.auth.key.desc': 'Usa la clave seleccionada, con la contraseña guardada como respaldo cuando esté presente.', 'hostDetails.auth.certificate': 'Certificado', 'hostDetails.auth.certificate.desc': 'Usa el certificado SSH seleccionado, con la contraseña guardada como respaldo cuando esté presente.', 'hostDetails.auth.mfaFirst': 'Preferir autenticación interactiva', 'hostDetails.auth.mfaFirst.desc': 'Para servidores que requieren contraseña y MFA a través de keyboard-interactive.', 'hostDetails.auth.credentialRequired': 'Selecciona una clave o un certificado antes de guardar este método de inicio de sesión.', 'hostDetails.identity.suggestions': 'Identidades', 'hostDetails.identity.missing': 'Identidad no encontrada', 'hostDetails.credential.keyCertificate': 'Clave, certificado, archivo de clave local', 'hostDetails.credential.key': 'Clave', 'hostDetails.credential.certificate': 'Certificado', 'hostDetails.credential.localKeyFile': 'Archivo de clave local', 'hostDetails.credential.localKeyFilePlaceholder': '~/.ssh/id_ed25519', 'hostDetails.credential.browseKeyFile': 'Explorar...', 'hostDetails.credential.missing': 'Credencial no encontrada', 'hostDetails.section.systemSshAgent': 'Agente SSH del sistema', 'hostDetails.systemSshAgent': 'Usar el agente SSH del sistema para iniciar sesión', 'hostDetails.systemSshAgent.desc': 'Usa claves ya desbloqueadas por macOS, Linux, Windows, 1Password u otro agente SSH compatible', 'hostDetails.systemSshAgent.socket': 'Socket del agente', 'hostDetails.systemSshAgent.socket.desc': 'Déjalo vacío para usar SSH_AUTH_SOCK', 'hostDetails.systemSshAgent.identitiesOnly': 'Usar solo las claves configuradas', 'hostDetails.systemSshAgent.identitiesOnly.desc': 'No intentar con claves no relacionadas actualmente cargadas en el agente', 'hostDetails.systemSshAgent.notRunning': 'El agente SSH del sistema no está disponible', 'hostDetails.systemSshAgent.notRunningHint': 'Inicia o desbloquea tu agente SSH, o proporciona la ruta de su socket arriba.', 'hostDetails.keys.search': 'Buscar claves...', 'hostDetails.keys.empty': 'No hay claves disponibles', 'hostDetails.certs.search': 'Buscar certificados...', 'hostDetails.certs.empty': 'No hay certificados disponibles', 'hostDetails.agentForwarding': 'Reenviar el agente SSH', 'hostDetails.agentForwarding.desc': 'Permite que el servidor remoto use tus claves SSH locales (p. ej., para operaciones de git)', 'hostDetails.agentForwarding.agentNotRunning': 'El agente SSH no está disponible', 'hostDetails.agentForwarding.agentNotRunningHint': 'No se detectó ningún agente SSH. Habilita el agente de autenticación de OpenSSH en los servicios de Windows, o usa un agente compatible como Bitwarden, 1Password o gpg-agent.', 'hostDetails.section.agentForwarding': 'Agente SSH', 'hostDetails.x11Forwarding': 'Reenviar aplicaciones X11', 'hostDetails.x11Forwarding.desc': 'Muestra las aplicaciones gráficas remotas en tu escritorio local cuando se ejecuta un servidor X local.', 'hostDetails.section.x11Forwarding': 'Reenvío X11', 'hostDetails.section.deviceType': 'Tipo de dispositivo', 'hostDetails.deviceType': 'Modo de dispositivo de red', 'hostDetails.deviceType.desc': 'Habilítalo para equipos de red (switches, routers, firewalls) conectados mediante SSH. Los comandos se envían tal cual, sin envoltura de shell, compatible con las CLI de proveedores como Huawei VRP y Cisco IOS.', 'hostDetails.deviceType.warning': 'Los comandos del agente de IA se enviarán directamente sin seguimiento del código de salida. Habilítalo solo para dispositivos que no ejecutan un shell estándar.', 'hostDetails.section.sshAlgorithms': 'Algoritmos SSH', 'hostDetails.section.terminalBehavior': 'Comportamiento de la terminal', 'hostDetails.lineTimestamps': 'Mostrar marcas de tiempo de salida', 'hostDetails.lineTimestamps.desc': 'Muestra la hora local junto a las líneas de salida visibles de este host sin cambiar el texto de la terminal.', 'hostDetails.legacyAlgorithms': 'Permitir algoritmos heredados', 'hostDetails.legacyAlgorithms.desc': 'Habilita algoritmos SSH obsoletos (diffie-hellman-group1, ssh-dss, 3des-cbc, etc.) para conectar con equipos de red más antiguos.', 'hostDetails.legacyAlgorithms.warning': 'Estos algoritmos tienen debilidades de seguridad conocidas. Habilítalos solo para dispositivos heredados que no admiten criptografía moderna.', 'hostDetails.skipEcdsaHostKey': 'Omitir la clave de host ECDSA', 'hostDetails.skipEcdsaHostKey.desc': 'Algunos switches antiguos de Huawei / Cisco generan firmas de clave de host ECDSA no estándar que provocan "signature verification failed". Al activar esto, se eliminan todos los ecdsa-sha2-* de la oferta del cliente para que la negociación recurra a RSA / Ed25519.', 'hostDetails.algorithms.advanced': 'Anulaciones avanzadas de algoritmos', 'hostDetails.algorithms.advanced.desc': 'Reemplaza la lista de algoritmos ofrecidos para cualquier categoría por cada host. Dejar una categoría sin cambios usa la predeterminada; seleccionar un subconjunto reemplaza por completo la lista predeterminada. Los valores incorrectos pueden hacer que el host sea inalcanzable.', 'hostDetails.algorithms.inheritedNotice': 'El grupo actual tiene anulaciones de algoritmos configuradas para: {categories}. El botón "Restablecer" aquí recurre a las listas del grupo, no a las predeterminadas de NetMesh. Para ignorar la restricción del grupo, borra la anulación en la configuración de algoritmos del grupo.', 'hostDetails.algorithms.customized': 'personalizado', 'hostDetails.algorithms.reset': 'Restablecer', 'hostDetails.algorithms.category.kex': 'Intercambio de claves (KEX)', 'hostDetails.algorithms.category.cipher': 'Cifrado', 'hostDetails.algorithms.category.hmac': 'MAC (HMAC)', 'hostDetails.algorithms.category.serverHostKey': 'Clave de host', 'hostDetails.algorithms.category.compress': 'Compresión', 'hostDetails.section.keepalive': 'Keepalive', 'hostDetails.keepalive.override': 'Anular el keepalive global', 'hostDetails.keepalive.desc': 'Usa una política de keepalive personalizada para este host en lugar de la configuración global. Útil para routers o switches antiguos cuyo servidor SSH no responde a las solicitudes keepalive@openssh.com: establece el intervalo en 0 para deshabilitar el keepalive por completo en este host.', 'hostDetails.keepalive.interval': 'Intervalo (segundos)', 'hostDetails.keepalive.countMax': 'Máximo de keepalives sin respuesta', 'hostDetails.keepalive.disabledHint': 'Intervalo = 0 deshabilita el keepalive para este host. La sesión dependerá de los tiempos de espera a nivel de TCP para detectar una conexión caída.', 'hostDetails.section.sshTimeouts': 'Tiempos de espera de conexión SSH', 'hostDetails.sshTimeouts.tcpConnect': 'Tiempo de espera de TCP', 'hostDetails.sshTimeouts.tcpConnect.desc': 'Segundos de espera para la conexión de red a este host.', 'hostDetails.sshTimeouts.authReady': 'Tiempo de espera de autenticación SSH', 'hostDetails.sshTimeouts.authReady.desc': 'Segundos de espera después de conectar para que terminen la negociación y la autenticación SSH.', 'hostDetails.backspaceBehavior': 'Comportamiento de la tecla Retroceso', 'hostDetails.backspaceBehavior.default': 'Predeterminado', 'hostDetails.jumpHosts': 'Proxy mediante hosts', 'hostDetails.jumpHosts.hops': '{count} salto(s)', 'hostDetails.jumpHosts.direct': 'Directo', 'hostDetails.jumpHosts.configure': 'Configurar hosts proxy', 'hostDetails.proxy': 'Proxy mediante HTTP/SOCKS5/Comando', 'hostDetails.proxy.none': 'Ninguno', 'hostDetails.proxy.edit': 'Editar proxy', 'hostDetails.proxy.configure': 'Configurar proxy', 'hostDetails.proxyPanel.title': 'Proxy mediante HTTP/SOCKS5/Comando', 'hostDetails.proxyPanel.hostPlaceholder': 'Host del proxy', 'hostDetails.proxyPanel.command': 'ProxyCommand', 'hostDetails.proxyPanel.commandPlaceholder': 'cloudflared access ssh --hostname %h', 'hostDetails.proxyPanel.commandHelp': 'Usa %h para el host de destino, %p para el puerto de destino y %% para un porcentaje literal.', 'hostDetails.proxyPanel.credentials': 'Credenciales', 'hostDetails.proxyPanel.usernamePlaceholder': 'Nombre de usuario', 'hostDetails.proxyPanel.passwordPlaceholder': 'Contraseña', 'hostDetails.proxyPanel.identities': 'Identidades', 'hostDetails.proxyPanel.keychainIdentity': 'Identidad del llavero', 'hostDetails.proxyPanel.manualCredentials': 'Credenciales manuales', 'hostDetails.proxyPanel.remove': 'Quitar proxy', 'hostDetails.proxyPanel.savedProxy': 'Proxy guardado', 'hostDetails.proxyPanel.selectSaved': 'Seleccionar proxy guardado', 'hostDetails.proxyPanel.customProxy': 'Proxy personalizado', 'hostDetails.proxyPanel.missing': 'Faltante', 'hostDetails.proxyPanel.missingSaved': 'Falta el proxy guardado', 'hostDetails.proxyPanel.missingIdentity': 'Falta la identidad del llavero', 'hostDetails.proxyPanel.incompleteIdentity': 'La identidad del proxy necesita un nombre de usuario y una contraseña', 'hostDetails.proxyPanel.unreadableIdentity': 'No se puede leer la contraseña de la identidad del proxy en este dispositivo', 'hostDetails.proxyPanel.error.required': 'Se requieren el host y el puerto del proxy, o un ProxyCommand.', 'hostDetails.envVars': 'Variables de entorno', 'hostDetails.envVars.add': 'Agregar variable de entorno', 'hostDetails.envVars.title': 'Variables de entorno', 'hostDetails.envVars.desc': 'Establece una variable de entorno para {host}.', 'hostDetails.envVars.note': 'Algunos servidores SSH por defecto solo permiten variables con el prefijo LC_ y LANG_.', 'hostDetails.envVars.variable': 'Variable', 'hostDetails.envVars.value': 'Valor', 'hostDetails.envVars.newVariable': 'Variable nueva', 'hostDetails.envVars.variableName': 'Nombre de la variable', 'hostDetails.chain.title': 'Editar cadena', 'hostDetails.chain.desc': 'Agregar otro host creará una conexión a {host}.', 'hostDetails.chain.addHost': 'Agregar un host', 'hostDetails.chain.target': 'Destino', 'hostDetails.chain.availableHosts': 'Hosts disponibles', 'hostDetails.chain.clear': 'Limpiar', 'hostDetails.group.title': 'Grupo nuevo', 'hostDetails.group.general': 'General', 'hostDetails.group.namePlaceholder': 'Nombre del grupo', 'hostDetails.group.parentPlaceholder': 'Grupo padre', 'hostDetails.group.cloudSync': 'Sincronización en la nube', 'hostDetails.group.addProtocol': 'Agregar protocolo', 'hostDetails.startupCommand': 'Comando de inicio', 'hostDetails.startupCommand.placeholder': 'Comando para ejecutar al conectar (p. ej., cd /app && ls)', 'hostDetails.startupCommand.help': 'Este comando se ejecutará automáticamente después de que se establezca la conexión SSH.', 'hostDetails.startupCommand.runMode': 'Ejecución multilínea', 'hostDetails.startupCommand.runMode.help': 'Elige cómo se envían los comandos de inicio multilínea después de la conexión.', 'hostDetails.startupCommand.runMode.lineDelay': 'Enviar línea por línea', 'hostDetails.startupCommand.runMode.paste': 'Enviar todo de una vez', 'hostDetails.otherProtocols': 'Otros protocolos', 'hostDetails.telnetOn': 'Telnet activado', 'hostDetails.port': 'puerto', 'hostDetails.telnet.credentials': 'Credenciales', 'hostDetails.telnet.identity.placeholder': 'Identidad manual', 'hostDetails.telnet.username': 'Nombre de usuario de Telnet', 'hostDetails.telnet.password': 'Contraseña de Telnet', 'hostDetails.charset.placeholder': 'Codificación (p. ej., UTF-8)', 'hostDetails.telnet.add': 'Agregar protocolo Telnet', 'hostDetails.telnet.setDefault': 'Conectar con Telnet por defecto', 'hostDetails.tags': 'Etiquetas', 'hostDetails.group': 'Grupo', 'hostDetails.selectGroup': 'Seleccionar grupo', 'hostDetails.addTag': 'Agregar una etiqueta...', 'hostDetails.createTag': 'Crear etiqueta', 'hostDetails.createGroup': 'Crear grupo', 'hostDetails.plugin.title': 'Conexión de plugin', 'hostDetails.plugin.provider.placeholder': 'Selecciona un proveedor de conexión', 'hostDetails.plugin.provider.empty': 'No hay proveedores de conexión instalados', 'hostDetails.plugin.authentication.placeholder': 'Selecciona un proveedor de autenticación', 'hostDetails.plugin.authentication.none': 'Administrada por el proveedor o sin autenticación', 'hostDetails.plugin.credential.placeholder': 'Selecciona una credencial del host', 'hostDetails.plugin.credential.none': 'No hay credencial guardada', 'hostDetails.plugin.credential.password': 'Identidad de contraseña', 'hostDetails.plugin.credential.privateKey': 'Clave privada', 'hostDetails.plugin.credential.unavailable': 'Credencial guardada no disponible', 'hostDetails.plugin.configuration.label': 'Configuración del proveedor (JSON)', 'hostDetails.plugin.configuration.invalid': 'La configuración debe ser un JSON válido.', 'hostDetails.plugin.configuration.schemaInvalid': 'La configuración no coincide con el esquema del proveedor.', 'hostDetails.plugin.unavailable': 'El proveedor configurado no está disponible. La configuración se conserva hasta que se restaure el plugin.', 'hostDetails.plugin.useSsh': 'Usar SSH en su lugar', // Host form (legacy modal) 'hostForm.title.edit': 'Editar host', 'hostForm.title.new': 'Host nuevo', 'hostForm.desc.edit': 'Actualiza los detalles de conexión de este host', 'hostForm.desc.new': 'Crea una nueva entrada de host SSH', 'hostForm.field.label': 'Etiqueta', 'hostForm.placeholder.label': 'Mi servidor de producción', 'hostForm.field.hostname': 'Nombre de host / IP', 'hostForm.placeholder.hostname': '192.168.1.1', 'hostForm.field.port': 'Puerto', 'hostForm.field.username': 'Nombre de usuario', 'hostForm.field.osType': 'Tipo de SO', 'hostForm.placeholder.selectOs': 'Seleccionar SO', 'hostForm.field.group': 'Grupo', 'hostForm.placeholder.group': 'p. ej., AWS, DigitalOcean', 'hostForm.field.tags': 'Etiquetas', 'hostForm.placeholder.addTag': 'Agregar una etiqueta...', 'hostForm.auth.method': 'Método de autenticación', 'hostForm.auth.password': 'Contraseña', 'hostForm.auth.sshKey': 'Clave SSH', 'hostForm.auth.selectKey': 'Seleccionar una clave SSH', 'hostForm.auth.noKeys': 'No hay claves disponibles', 'hostForm.auth.noKeysHint': 'No se encontraron claves SSH en el llavero. Crea una primero.', 'hostForm.saveHost': 'Guardar host', // Connection logs 'logs.table.date': 'Fecha', 'logs.table.user': 'Usuario', 'logs.table.host': 'Host', 'logs.table.saved': 'Guardado', 'logs.empty.title': 'No hay registros de conexión', 'logs.empty.desc': 'Tu historial de conexiones aparecerá aquí cuando te conectes a hosts o abras terminales locales.', 'logs.loadMore': 'Cargar {count} registros más', 'logs.ongoing': 'en curso', 'logs.localTerminal': 'Terminal local', 'logs.action.save': 'Guardar', 'logs.action.unsave': 'Quitar de guardados', 'logs.action.delete': 'Eliminar', // Log view 'logView.customizeAppearance': 'Personalizar la apariencia', 'logView.appearance': 'Apariencia', 'logView.readOnly': 'Solo lectura', 'logView.export': 'Exportar', 'vault.import.plugins.title': 'Importadores de plugins', 'vault.import.plugins.loading': 'Generando una vista previa de importación segura…', 'vault.import.plugins.progress': '{completed} de {total} procesados {message}', 'vault.import.plugins.preview': 'Vista previa de importación', 'vault.import.plugins.empty': 'No se devolvieron borradores importables.', 'vault.import.plugins.summary': '{parsed} borradores · {warnings} advertencias · {errors} errores', 'vault.import.plugins.commit': 'Vista previa de importación', 'vault.import.plugins.fileUnavailable': 'El archivo seleccionado no está disponible para el bridge del importador de escritorio.', 'vault.import.plugins.notRecognized': 'Este importador no reconoció el archivo seleccionado.', 'vault.import.plugins.containsErrors': 'La vista previa de importación contiene errores y no se puede confirmar.', 'vault.import.plugins.committed': 'Se importaron {count} elementos validados.', 'vault.import.plugins.duplicates': '{count} elementos duplicados se omitirán.', 'vault.import.plugins.validationErrors': '{count} borradores fallaron la validación de host y deben corregirse mediante el importador.', 'vault.import.plugins.kind.host': 'Host', 'vault.import.plugins.kind.identity': 'Identidad', 'vault.import.plugins.kind.key': 'Clave', 'vault.import.plugins.kind.snippet': 'Fragmento', 'vault.import.plugins.kind.group': 'Grupo', 'vault.import.plugins.moreItems': '{count} elementos más están incluidos en esta importación.', 'vault.import.plugins.moreDiagnostics': '{count} diagnósticos más se omitieron de esta vista previa.', };