diff --git a/src/locales/translated/es.json b/src/locales/translated/es.json index e319cfd7..fcd2b9af 100644 --- a/src/locales/translated/es.json +++ b/src/locales/translated/es.json @@ -1,882 +1,882 @@ { "credentials": { - "credentialsViewer": "Credentials Viewer", - "manageYourSSHCredentials": "Manage your SSH credentials securely", - "addCredential": "Add Credential", - "createCredential": "Create Credential", - "editCredential": "Edit Credential", - "viewCredential": "View Credential", - "duplicateCredential": "Duplicate Credential", - "deleteCredential": "Delete Credential", - "updateCredential": "Update Credential", - "credentialName": "Credential Name", - "credentialDescription": "Description", - "username": "Username", - "searchCredentials": "Search credentials...", - "selectFolder": "Select Folder", - "selectAuthType": "Select Auth Type", - "allFolders": "All Folders", - "allAuthTypes": "All Auth Types", - "uncategorized": "Uncategorized", + "credentialsViewer": "Visor de credenciales", + "manageYourSSHCredentials": "Administrar sus credenciales SSH de forma segura", + "addCredential": "Añadir credencial", + "createCredential": "Crear credencial", + "editCredential": "Editar credencial", + "viewCredential": "Ver credencial", + "duplicateCredential": "Duplicar credencial", + "deleteCredential": "Eliminar credencial", + "updateCredential": "Actualizar credencial", + "credentialName": "Nombre de credencial", + "credentialDescription": "Descripción", + "username": "Usuario", + "searchCredentials": "Buscar credenciales...", + "selectFolder": "Seleccionar carpeta", + "selectAuthType": "Seleccionar tipo de Auth", + "allFolders": "Todas las carpetas", + "allAuthTypes": "Todos los tipos de autenticación", + "uncategorized": "Sin categorizar", "totalCredentials": "Total", - "keyBased": "Key-based", - "passwordBased": "Password-based", - "folders": "Folders", - "noCredentialsMatchFilters": "No credentials match your filters", - "noCredentialsYet": "No credentials created yet", - "createFirstCredential": "Create your first credential", - "failedToFetchCredentials": "Failed to fetch credentials", - "credentialDeletedSuccessfully": "Credential deleted successfully", - "failedToDeleteCredential": "Failed to delete credential", - "confirmDeleteCredential": "Are you sure you want to delete credential \"{{name}}\"?", - "credentialCreatedSuccessfully": "Credential created successfully", - "credentialUpdatedSuccessfully": "Credential updated successfully", - "failedToSaveCredential": "Failed to save credential", - "failedToFetchCredentialDetails": "Failed to fetch credential details", - "failedToFetchHostsUsing": "Failed to fetch hosts using this credential", - "loadingCredentials": "Loading credentials...", - "retry": "Retry", - "noCredentials": "No Credentials", - "noCredentialsMessage": "You haven't added any credentials yet. Click \"Add Credential\" to get started.", - "sshCredentials": "SSH Credentials", - "credentialsCount": "{{count}} credentials", - "refresh": "Refresh", - "passwordRequired": "Password is required", - "sshKeyRequired": "SSH key is required", - "credentialAddedSuccessfully": "Credential \"{{name}}\" added successfully", + "keyBased": "Basado en clave", + "passwordBased": "Basado en contraseña", + "folders": "Carpetas", + "noCredentialsMatchFilters": "No hay credenciales que coincidan con sus filtros", + "noCredentialsYet": "Aún no se han creado credenciales", + "createFirstCredential": "Crea tu primera credencial", + "failedToFetchCredentials": "Error al recuperar las credenciales", + "credentialDeletedSuccessfully": "Credencial eliminado correctamente", + "failedToDeleteCredential": "Error al eliminar la credencial", + "confirmDeleteCredential": "¿Está seguro de que desea eliminar la credencial \"{{name}}\"?", + "credentialCreatedSuccessfully": "Credencial creada con éxito", + "credentialUpdatedSuccessfully": "Credencial actualizado correctamente", + "failedToSaveCredential": "Error al guardar la credencial", + "failedToFetchCredentialDetails": "Error al recuperar los detalles de credenciales", + "failedToFetchHostsUsing": "No se pudo obtener hosts usando esta credencial", + "loadingCredentials": "Cargando credenciales...", + "retry": "Reintentar", + "noCredentials": "Sin credenciales", + "noCredentialsMessage": "Aún no has añadido ninguna credencial. Haz clic en \"Añadir credencial\" para empezar.", + "sshCredentials": "Credenciales SSH", + "credentialsCount": "Credenciales {{count}}", + "refresh": "Refrescar", + "passwordRequired": "Se requiere contraseña", + "sshKeyRequired": "La clave SSH es necesaria", + "credentialAddedSuccessfully": "Credencial \"{{name}}\" añadido correctamente", "general": "General", - "description": "Description", - "folder": "Folder", - "tags": "Tags", - "addTagsSpaceToAdd": "Add tags (press space to add)", - "password": "Password", - "key": "Key", - "sshPrivateKey": "SSH Private Key", - "upload": "Upload", - "updateKey": "Update Key", - "keyPassword": "Key Password", - "keyType": "Key Type", + "description": "Descripción", + "folder": "Carpeta", + "tags": "Etiquetas", + "addTagsSpaceToAdd": "Añadir etiquetas (pulse espacio para añadir)", + "password": "Contraseña", + "key": "Clave", + "sshPrivateKey": "Clave privada SSH", + "upload": "Subir", + "updateKey": "Actualizar clave", + "keyPassword": "Contraseña de clave", + "keyType": "Tipo de clave", "keyTypeRSA": "RSA", "keyTypeECDSA": "ECDSA", "keyTypeEd25519": "Ed25519", - "basicInfo": "Basic Info", - "authentication": "Authentication", - "organization": "Organization", - "basicInformation": "Basic Information", - "basicInformationDescription": "Enter the basic information for this credential", - "authenticationMethod": "Authentication Method", - "authenticationMethodDescription": "Choose how you want to authenticate with SSH servers", - "organizationDescription": "Organize your credentials with folders and tags", - "enterCredentialName": "Enter credential name", - "enterCredentialDescription": "Enter description (optional)", - "enterUsername": "Enter username", - "nameIsRequired": "Credential name is required", - "usernameIsRequired": "Username is required", - "authenticationType": "Authentication Type", - "passwordAuthDescription": "Use password authentication", - "sshKeyAuthDescription": "Use SSH key authentication", - "passwordIsRequired": "Password is required", - "sshKeyIsRequired": "SSH key is required", - "sshKeyType": "SSH Key Type", - "privateKey": "Private Key", - "enterPassword": "Enter password", - "enterPrivateKey": "Enter private key", - "keyPassphrase": "Key Passphrase", - "enterKeyPassphrase": "Enter key passphrase (optional)", - "keyPassphraseOptional": "Optional: leave empty if your key has no passphrase", - "leaveEmptyToKeepCurrent": "Leave empty to keep current value", - "uploadKeyFile": "Upload Key File", - "generateKeyPairButton": "Generate Key Pair", - "generateKeyPair": "Generate Key Pair", - "generateKeyPairDescription": "Generate a new SSH key pair. If you want to protect the key with a passphrase, enter it in the Key Password field below first.", - "deploySSHKey": "Deploy SSH Key", - "deploySSHKeyDescription": "Deploy public key to target server", - "sourceCredential": "Source Credential", - "targetHost": "Target Host", - "deploymentProcess": "Deployment Process", - "deploymentProcessDescription": "This will safely add the public key to the target host's ~/.ssh/authorized_keys file without overwriting existing keys. The operation is reversible.", - "chooseHostToDeploy": "Choose a host to deploy to...", - "deploying": "Deploying...", - "name": "Name", - "noHostsAvailable": "No hosts available", - "noHostsMatchSearch": "No hosts match your search", - "sshKeyGenerationNotImplemented": "SSH key generation feature coming soon", - "connectionTestingNotImplemented": "Connection testing feature coming soon", - "testConnection": "Test Connection", - "selectOrCreateFolder": "Select or create folder", - "noFolder": "No folder", - "orCreateNewFolder": "Or create new folder", - "addTag": "Add tag", - "saving": "Saving...", - "credentialId": "Credential ID", - "overview": "Overview", - "security": "Security", - "usage": "Usage", - "securityDetails": "Security Details", - "securityDetailsDescription": "View encrypted credential information", - "credentialSecured": "Credential Secured", - "credentialSecuredDescription": "All sensitive data is encrypted with AES-256", - "passwordAuthentication": "Password Authentication", - "keyAuthentication": "Key Authentication", - "securityReminder": "Security Reminder", - "securityReminderText": "Never share your credentials. All data is encrypted at rest.", - "hostsUsingCredential": "Hosts Using This Credential", - "noHostsUsingCredential": "No hosts are currently using this credential", - "timesUsed": "Times Used", - "lastUsed": "Last Used", - "connectedHosts": "Connected Hosts", - "created": "Created", - "lastModified": "Last Modified", - "usageStatistics": "Usage Statistics", + "basicInfo": "Información básica", + "authentication": "Autenticación", + "organization": "Organización", + "basicInformation": "Información básica", + "basicInformationDescription": "Introduzca la información básica para esta credencial", + "authenticationMethod": "Método de autenticación", + "authenticationMethodDescription": "Elija cómo desea autenticarse con los servidores SSH", + "organizationDescription": "Organiza tus credenciales con carpetas y etiquetas", + "enterCredentialName": "Introducir nombre de credencial", + "enterCredentialDescription": "Ingrese la descripción (opcional)", + "enterUsername": "Introduzca nombre de usuario", + "nameIsRequired": "Se requiere nombre de credencial", + "usernameIsRequired": "Nombre de usuario requerido", + "authenticationType": "Tipo de autenticación", + "passwordAuthDescription": "Usar autenticación de contraseña", + "sshKeyAuthDescription": "Usar autenticación de clave SSH", + "passwordIsRequired": "Se requiere contraseña", + "sshKeyIsRequired": "La clave SSH es necesaria", + "sshKeyType": "Tipo de clave SSH", + "privateKey": "Clave Privada", + "enterPassword": "Introduzca contraseña", + "enterPrivateKey": "Introducir clave privada", + "keyPassphrase": "Contraseña de clave", + "enterKeyPassphrase": "Introduzca contraseña de clave (opcional)", + "keyPassphraseOptional": "Opcional: dejar vacío si su clave no tiene contraseña", + "leaveEmptyToKeepCurrent": "Dejar en blanco para mantener el valor actual", + "uploadKeyFile": "Subir archivo de clave", + "generateKeyPairButton": "Generar par de claves", + "generateKeyPair": "Generar par de claves", + "generateKeyPairDescription": "Generar un nuevo par de claves SSH. Si desea proteger la clave con una frase, ingrese primero en el campo Contraseña de la clave.", + "deploySSHKey": "Desplegar clave SSH", + "deploySSHKeyDescription": "Desplegar clave pública al servidor de destino", + "sourceCredential": "Credencial de origen", + "targetHost": "Anfitrión objetivo", + "deploymentProcess": "Proceso de despliegue", + "deploymentProcessDescription": "Esto añadirá con seguridad la clave pública al archivo ~/.ssh/authorized_keys del host de destino sin sobrescribir las claves existentes. La operación es reversible.", + "chooseHostToDeploy": "Seleccione un host al que desplegar...", + "deploying": "Desplegando...", + "name": "Nombre", + "noHostsAvailable": "No hay hosts disponibles", + "noHostsMatchSearch": "Ningún host coincide con tu búsqueda", + "sshKeyGenerationNotImplemented": "Función de generación de claves SSH próximamente", + "connectionTestingNotImplemented": "Función de prueba de conexión próximamente", + "testConnection": "Probar conexión", + "selectOrCreateFolder": "Seleccionar o crear carpeta", + "noFolder": "Sin carpeta", + "orCreateNewFolder": "O crear nueva carpeta", + "addTag": "Añadir etiqueta", + "saving": "Guardando...", + "credentialId": "ID de credencial", + "overview": "Resumen", + "security": "Seguridad", + "usage": "Uso", + "securityDetails": "Detalles de seguridad", + "securityDetailsDescription": "Ver información de credenciales cifradas", + "credentialSecured": "Credenciales aseguradas", + "credentialSecuredDescription": "Todos los datos sensibles se cifran con AES-256", + "passwordAuthentication": "Autenticación de contraseña", + "keyAuthentication": "Autenticación de clave", + "securityReminder": "Recordatorio de seguridad", + "securityReminderText": "Nunca compartas tus credenciales. Todos los datos son cifrados en reposo.", + "hostsUsingCredential": "Hosts usando esta credencial", + "noHostsUsingCredential": "No hay hosts que estén usando esta credencial", + "timesUsed": "Veces Usadas", + "lastUsed": "Último uso", + "connectedHosts": "Equipos conectados", + "created": "Creado", + "lastModified": "Última modificación", + "usageStatistics": "Estadísticas de uso", "copiedToClipboard": "{{field}} copied to clipboard", - "failedToCopy": "Failed to copy to clipboard", - "sshKey": "SSH Key", - "createCredentialDescription": "Create a new SSH credential for secure access", - "editCredentialDescription": "Update the credential information", - "listView": "List", - "folderView": "Folders", - "unknownCredential": "Unknown", - "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The credential will be moved to \"Uncategorized\".", - "removedFromFolder": "Credential \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "Failed to remove credential from folder", - "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "Failed to rename folder", - "movedToFolder": "Credential \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "Failed to move credential to folder", - "sshPublicKey": "SSH Public Key", - "publicKeyNote": "Public key is optional but recommended for key validation", - "publicKeyUploaded": "Public Key Uploaded", - "uploadPublicKey": "Upload Public Key", - "uploadPrivateKeyFile": "Upload Private Key File", - "uploadPublicKeyFile": "Upload Public Key File", - "privateKeyRequiredForGeneration": "Private key is required to generate public key", - "failedToGeneratePublicKey": "Failed to generate public key", - "generatePublicKey": "Generate from Private Key", - "publicKeyGeneratedSuccessfully": "Public key generated successfully", - "detectedKeyType": "Detected key type", - "detectingKeyType": "detecting...", - "optional": "Optional", - "generateKeyPairNew": "Generate New Key Pair", - "generateEd25519": "Generate Ed25519", - "generateECDSA": "Generate ECDSA", - "generateRSA": "Generate RSA", + "failedToCopy": "Error al copiar al portapapeles", + "sshKey": "Clave SSH", + "createCredentialDescription": "Crear una nueva credencial SSH para un acceso seguro", + "editCredentialDescription": "Actualizar la información de credenciales", + "listView": "Lista", + "folderView": "Carpetas", + "unknownCredential": "Desconocido", + "confirmRemoveFromFolder": "¿Está seguro de que desea eliminar \"{{name}}\" de la carpeta \"{{folder}}\"? La credencial se moverá a \"Sin categorizar\".", + "removedFromFolder": "Credencial \"{{name}}\" eliminada de la carpeta correctamente", + "failedToRemoveFromFolder": "Error al eliminar la credencial de la carpeta", + "folderRenamed": "Carpeta \"{{oldName}}\" renombrada a \"{{newName}}\" correctamente", + "failedToRenameFolder": "Error al renombrar la carpeta", + "movedToFolder": "Se ha movido con éxito la credencial \"{{name}}\" a \"{{folder}}\"", + "failedToMoveToFolder": "Error al mover la credencial a la carpeta", + "sshPublicKey": "Clave pública SSH", + "publicKeyNote": "Clave pública es opcional pero recomendable para validación de clave", + "publicKeyUploaded": "Clave pública cargada", + "uploadPublicKey": "Subir Clave Pública", + "uploadPrivateKeyFile": "Subir archivo de clave privada", + "uploadPublicKeyFile": "Subir archivo de clave pública", + "privateKeyRequiredForGeneration": "La clave privada es necesaria para generar la clave pública", + "failedToGeneratePublicKey": "Error al generar la clave pública", + "generatePublicKey": "Generar desde Clave Privada", + "publicKeyGeneratedSuccessfully": "Clave pública generada con éxito", + "detectedKeyType": "Tipo de clave detectada", + "detectingKeyType": "detectando...", + "optional": "Opcional", + "generateKeyPairNew": "Generar nuevo par de claves", + "generateEd25519": "Generar Ed25519", + "generateECDSA": "Generar ECDSA", + "generateRSA": "Generar RSA", "keyTypeEcdsaP256": "ECDSA P-256 (SSH)", "keyTypeEcdsaP384": "ECDSA P-384 (SSH)", "keyTypeEcdsaP521": "ECDSA P-521 (SSH)", "keyTypeDsa": "DSA (SSH)", "keyTypeRsaSha256": "RSA-SHA2-256", "keyTypeRsaSha512": "RSA-SHA2-512", - "keyPairGeneratedSuccessfully": "{{keyType}} key pair generated successfully", - "failedToGenerateKeyPair": "Failed to generate key pair", - "generateKeyPairNote": "Generate a new SSH key pair directly. This will replace any existing keys in the form.", - "invalidKey": "Invalid Key", - "detectionError": "Detection Error", - "removing": "Removing:", - "clickToEditCredential": "Click to edit credential", - "dragToMoveBetweenFolders": "Drag to move between folders", - "keyBasedOnlyForDeployment": "Only SSH key-based credentials can be deployed", - "publicKeyRequiredForDeployment": "Public key is required for deployment", - "selectTargetHost": "Please select a target host", - "keyDeployedSuccessfully": "SSH key deployed successfully", - "deploymentFailed": "Deployment failed", - "failedToDeployKey": "Failed to deploy SSH key", - "clickToRenameFolder": "Click to rename folder", - "renameFolder": "Rename folder", + "keyPairGeneratedSuccessfully": "Un par de claves {{keyType}} generado con éxito", + "failedToGenerateKeyPair": "Error al generar el par de claves", + "generateKeyPairNote": "Genera un nuevo par de claves SSH directamente. Esto reemplazará cualquier clave existente en el formulario.", + "invalidKey": "Clave inválida", + "detectionError": "Error de detección", + "removing": "Eliminando:", + "clickToEditCredential": "Haga clic para editar la credencial", + "dragToMoveBetweenFolders": "Arrastre para mover entre carpetas", + "keyBasedOnlyForDeployment": "Sólo se pueden desplegar credenciales basadas en claves SSH", + "publicKeyRequiredForDeployment": "La clave pública es necesaria para la implementación", + "selectTargetHost": "Por favor, seleccione un host de destino", + "keyDeployedSuccessfully": "Clave SSH desplegada con éxito", + "deploymentFailed": "Despliegue fallido", + "failedToDeployKey": "No se pudo desplegar la clave SSH", + "clickToRenameFolder": "Haga clic para renombrar carpeta", + "renameFolder": "Renombrar carpeta", "idLabel": "ID:" }, "dragIndicator": { "error": "Error: {{error}}", - "dragging": "Dragging {{fileName}}", - "preparing": "Preparing {{fileName}}", - "readySingle": "Ready to download {{fileName}}", - "readyMultiple": "Ready to download {{count}} files", - "batchDrag": "Drag {{count}} files to desktop", - "dragToDesktop": "Drag to desktop", - "canDragAnywhere": "You can drag files anywhere on your desktop" + "dragging": "Arrastra {{fileName}}", + "preparing": "Preparando {{fileName}}", + "readySingle": "Listo para descargar {{fileName}}", + "readyMultiple": "Listo para descargar archivos {{count}}", + "batchDrag": "Arrastra archivos {{count}} al escritorio", + "dragToDesktop": "Arrastre al escritorio", + "canDragAnywhere": "Puedes arrastrar archivos en cualquier lugar de tu escritorio" }, "sshTools": { - "title": "SSH Tools", - "closeTools": "Close SSH Tools", - "keyRecording": "Key Recording", - "startKeyRecording": "Start Key Recording", - "stopKeyRecording": "Stop Key Recording", - "selectTerminals": "Select terminals:", - "typeCommands": "Type commands (all keys supported):", - "commandsWillBeSent": "Commands will be sent to {{count}} selected terminal(s).", - "settings": "Settings", - "enableRightClickCopyPaste": "Enable right‑click copy/paste", - "shareIdeas": "Have ideas for what should come next for ssh tools? Share them on", + "title": "Herramientas SSH", + "closeTools": "Cerrar SSH Tools", + "keyRecording": "Grabación de clave", + "startKeyRecording": "Iniciar Grabación de Clave", + "stopKeyRecording": "Detener grabación de clave", + "selectTerminals": "Seleccionar terminales:", + "typeCommands": "Escriba comandos (todas las claves soportadas):", + "commandsWillBeSent": "Los comandos se enviarán a los terminales seleccionados de {{count}}.", + "settings": "Ajustes", + "enableRightClickCopyPaste": "Activar clic derecho en copiar/pegar", + "shareIdeas": "¿Tienes ideas sobre qué debería venir para las herramientas de ssh? Compártelas en", "scripts": { - "inputPlaceholder": "e.g., System Commands, Docker Scripts" + "inputPlaceholder": "ej., Comandos del Sistema, Docker Scripts" } }, "snippets": { - "title": "Snippets", - "new": "New Snippet", - "create": "Create Snippet", - "edit": "Edit Snippet", - "run": "Run", - "empty": "No snippets yet", - "emptyHint": "Create a snippet to save commonly used commands", - "searchSnippets": "Search snippets...", - "name": "Name", - "description": "Description", - "content": "Command", - "namePlaceholder": "e.g., Restart Nginx", - "descriptionPlaceholder": "Optional description", - "contentPlaceholder": "e.g., sudo systemctl restart nginx", - "nameRequired": "Name is required", - "contentRequired": "Command is required", - "createDescription": "Create a new command snippet for quick execution", - "editDescription": "Edit this command snippet", - "deleteConfirmTitle": "Delete Snippet", - "deleteConfirmDescription": "Are you sure you want to delete \"{{name}}\"?", - "createSuccess": "Snippet created successfully", - "updateSuccess": "Snippet updated successfully", - "deleteSuccess": "Snippet deleted successfully", - "createFailed": "Failed to create snippet", - "updateFailed": "Failed to update snippet", - "deleteFailed": "Failed to delete snippet", - "failedToFetch": "Failed to fetch snippets", - "executeSuccess": "Executing: {{name}}", - "copySuccess": "Copied \"{{name}}\" to clipboard", - "runTooltip": "Execute this snippet in the terminal", - "copyTooltip": "Copy snippet to clipboard", - "editTooltip": "Edit this snippet", - "deleteTooltip": "Delete this snippet", - "newFolder": "New Folder", - "reorderSameFolder": "Can only reorder snippets within the same folder", - "reorderSuccess": "Snippets reordered successfully", - "reorderFailed": "Failed to reorder snippets", - "deleteFolderConfirm": "Delete folder \"{{name}}\"? All snippets will be moved to Uncategorized.", - "deleteFolderSuccess": "Folder deleted successfully", - "deleteFolderFailed": "Failed to delete folder", - "updateFolderSuccess": "Folder updated successfully", - "createFolderSuccess": "Folder created successfully", - "updateFolderFailed": "Failed to update folder", - "createFolderFailed": "Failed to create folder", - "selectTerminals": "Select Terminals (optional)", + "title": "Fragmentos", + "new": "Nuevo Fragmento", + "create": "Crear Fragmento", + "edit": "Editar Snippet", + "run": "Ejecutar", + "empty": "Aún no hay fragmentos", + "emptyHint": "Crear un fragmento para guardar comandos comúnmente usados", + "searchSnippets": "Buscar fragmentos...", + "name": "Nombre", + "description": "Descripción", + "content": "Comando", + "namePlaceholder": "ej. Reiniciar Nginx", + "descriptionPlaceholder": "Descripción opcional", + "contentPlaceholder": "por ejemplo, el sistema sudo reiniciar nginx", + "nameRequired": "Se requiere nombre", + "contentRequired": "Se requiere un comando", + "createDescription": "Crear un nuevo fragmento de comandos para ejecución rápida", + "editDescription": "Editar este fragmento de comandos", + "deleteConfirmTitle": "Eliminar Snippet", + "deleteConfirmDescription": "¿Está seguro de que desea eliminar \"{{name}}\"?", + "createSuccess": "Fragmento creado correctamente", + "updateSuccess": "Fragmento actualizado correctamente", + "deleteSuccess": "Fragmento eliminado correctamente", + "createFailed": "Error al crear el fragmento", + "updateFailed": "Error al actualizar el snippet", + "deleteFailed": "Error al eliminar el snippet", + "failedToFetch": "Error al recuperar los snippets", + "executeSuccess": "Ejecutando: {{name}}", + "copySuccess": "Copiado \"{{name}}\" al portapapeles", + "runTooltip": "Ejecutar este fragmento en el terminal", + "copyTooltip": "Copiar fragmento al portapapeles", + "editTooltip": "Editar este fragmento", + "deleteTooltip": "Eliminar este fragmento", + "newFolder": "Nueva carpeta", + "reorderSameFolder": "Sólo se pueden reordenar fragmentos dentro de la misma carpeta", + "reorderSuccess": "Fragmentos reordenados correctamente", + "reorderFailed": "Error al reordenar fragmentos", + "deleteFolderConfirm": "¿Eliminar carpeta \"{{name}}\"? Todos los fragmentos se moverán a Sin categorizar.", + "deleteFolderSuccess": "Carpeta eliminada correctamente", + "deleteFolderFailed": "Error al eliminar la carpeta", + "updateFolderSuccess": "Carpeta actualizada correctamente", + "createFolderSuccess": "Carpeta creada correctamente", + "updateFolderFailed": "Error al actualizar la carpeta", + "createFolderFailed": "Error al crear la carpeta", + "selectTerminals": "Seleccionar terminales (opcional)", "executeOnSelected": "Execute on {{count}} selected terminal(s)", - "executeOnCurrent": "Execute on current terminal (click to select multiple)", - "folder": "Folder", - "selectFolder": "Select a folder or leave empty", - "noFolder": "No folder (Uncategorized)", - "folderName": "Folder Name", - "folderNameRequired": "Folder name is required", - "folderColor": "Folder Color", - "folderIcon": "Folder Icon", - "preview": "Preview", - "updateFolder": "Update Folder", - "createFolder": "Create Folder", - "editFolder": "Edit Folder", - "editFolderDescription": "Customize your snippet folder", - "createFolderDescription": "Organize your snippets into folders" + "executeOnCurrent": "Ejecutar en el terminal actual (haga clic para seleccionar múltiples)", + "folder": "Carpeta", + "selectFolder": "Seleccione una carpeta o deje vacío", + "noFolder": "No hay carpeta (sin categorizar)", + "folderName": "Nombre de carpeta", + "folderNameRequired": "Se requiere nombre de carpeta", + "folderColor": "Color de carpeta", + "folderIcon": "Icono de carpeta", + "preview": "Vista previa", + "updateFolder": "Actualizar carpeta", + "createFolder": "Crear carpeta", + "editFolder": "Editar carpeta", + "editFolderDescription": "Personaliza tu carpeta de fragmentos", + "createFolderDescription": "Organiza tus fragmentos en carpetas" }, "commandHistory": { - "title": "History", - "searchPlaceholder": "Search commands...", - "noTerminal": "No active terminal", - "noTerminalHint": "Open a terminal to see its command history.", - "empty": "No command history yet", - "emptyHint": "Execute commands in the active terminal to build its history.", - "noResults": "No commands found", - "noResultsHint": "No commands matching \"{{query}}\"", - "deleteSuccess": "Command deleted from history", - "deleteFailed": "Failed to delete command.", - "deleteTooltip": "Delete command", - "tabHint": "Use Tab in Terminal to autocomplete from command history if enabled in User Profile", - "authRequiredRefresh": "Authentication required. Please refresh the page.", - "dataAccessLockedReauth": "Data access locked. Please re-authenticate.", - "loading": "Loading command history...", - "error": "Error Loading History" + "title": "Historial", + "searchPlaceholder": "Comandos de búsqueda...", + "noTerminal": "Ningún terminal activo", + "noTerminalHint": "Abre un terminal para ver su historial de comandos.", + "empty": "Aún no hay historial de comandos", + "emptyHint": "Ejecutar comandos en el terminal activo para construir su historial.", + "noResults": "No se encontraron comandos", + "noResultsHint": "No hay comandos que coincidan con \"{{query}}\"", + "deleteSuccess": "Comando eliminado del historial", + "deleteFailed": "Error al eliminar el comando.", + "deleteTooltip": "Eliminar comando", + "tabHint": "Usar pestaña en terminal para autocompletar desde el historial de comandos si está activado en el perfil de usuario", + "authRequiredRefresh": "Autenticación requerida. Por favor, actualiza la página.", + "dataAccessLockedReauth": "Acceso de datos bloqueado. Por favor vuelva a autenticar.", + "loading": "Cargando historial de comandos...", + "error": "Error al cargar el historial" }, "splitScreen": { - "title": "Split Screen", - "none": "None", - "twoSplit": "2-Way", - "threeSplit": "3-Way", - "fourSplit": "4-Way", - "availableTabs": "Available Tabs", - "dragTabsHint": "Drag tabs to the layout cells below to assign them", - "layout": "Split Screen Layout", - "dropHere": "Drop tab here", - "apply": "Apply Split", - "clear": "Clear Split", - "selectMode": "Select a split screen mode", - "helpText": "Choose how many tabs you want to view at once", - "success": "Split screen applied successfully", - "cleared": "Split screen cleared", + "title": "Dividir pantalla", + "none": "Ninguna", + "twoSplit": "2-Vía", + "threeSplit": "3-Vía", + "fourSplit": "4-Vía", + "availableTabs": "Pestañas disponibles", + "dragTabsHint": "Arrastra las pestañas a las celdas de diseño de abajo para asignarlas", + "layout": "Dividir diseño de pantalla", + "dropHere": "Soltar pestaña aquí", + "apply": "Aplicar división", + "clear": "Borrar Dividir", + "selectMode": "Selecciona un modo dividir pantalla", + "helpText": "Elige cuántas pestañas quieres ver a la vez", + "success": "Pantalla separada aplicada con éxito", + "cleared": "Pantalla separada eliminada", "error": { - "noAssignments": "Please assign at least one tab to the layout", - "fillAllSlots": "Please fill all {{count}} slots before applying" + "noAssignments": "Por favor, asigne al menos una pestaña al diseño", + "fillAllSlots": "Por favor, rellena todas las ranuras {{count}} antes de aplicar" } }, "homepage": { - "loggedInTitle": "Logged in!", - "loggedInMessage": "You are logged in! Use the sidebar to access all available tools. To get started, create an SSH Host in the SSH Manager tab. Once created, you can connect to that host using the other apps in the sidebar.", - "failedToLoadAlerts": "Failed to load alerts", - "failedToDismissAlert": "Failed to dismiss alert" + "loggedInTitle": "¡Conectado!", + "loggedInMessage": "¡Has iniciado sesión! Usa la barra lateral para acceder a todas las herramientas disponibles. Para empezar, crea un Host SSH en la pestaña Administrador SSH. Una vez creado, puedes conectarte a ese host usando las otras aplicaciones de la barra lateral.", + "failedToLoadAlerts": "Error al cargar las alertas", + "failedToDismissAlert": "Error al descartar la alerta" }, "serverConfig": { - "title": "Server Configuration", - "description": "Configure the Termix server URL to connect to your backend services", - "serverUrl": "Server URL", - "enterServerUrl": "Please enter a server URL", - "testConnectionFirst": "Please test the connection first", - "connectionSuccess": "Connection successful!", - "connectionFailed": "Connection failed", - "connectionError": "Connection error occurred", - "connected": "Connected", - "disconnected": "Disconnected", - "configSaved": "Configuration saved successfully", - "saveFailed": "Failed to save configuration", - "saveError": "Error saving configuration", - "saving": "Saving...", - "saveConfig": "Save Configuration", - "helpText": "Enter the URL where your Termix server is running (e.g., http://localhost:30001 or https://your-server.com)", - "warning": "Warning", - "notValidatedWarning": "URL not validated - ensure it's correct", - "changeServer": "Change Server", - "mustIncludeProtocol": "Server URL must start with http:// or https://" + "title": "Configuración del servidor", + "description": "Configure la URL del servidor Termix para conectarse a sus servicios de backend", + "serverUrl": "URL del servidor", + "enterServerUrl": "Por favor, introduzca una URL del servidor", + "testConnectionFirst": "Por favor pruebe la conexión primero", + "connectionSuccess": "¡Conexión exitosa!", + "connectionFailed": "Conexión fallida", + "connectionError": "Error de conexión", + "connected": "Conectado", + "disconnected": "Desconectado", + "configSaved": "Configuración guardada correctamente", + "saveFailed": "Error al guardar la configuración", + "saveError": "Error al guardar la configuración", + "saving": "Guardando...", + "saveConfig": "Guardar configuración", + "helpText": "Introduzca la URL en la que se ejecuta su servidor Termix (por ejemplo, http://localhost:30001 o https://your-server.com)", + "warning": "Advertencia", + "notValidatedWarning": "URL no validada - asegúrese de que es correcta", + "changeServer": "Cambiar servidor", + "mustIncludeProtocol": "La URL del servidor debe comenzar con http:// o https://" }, "versionCheck": { - "error": "Version Check Error", - "checkFailed": "Failed to check for updates", - "upToDate": "App is Up to Date", - "currentVersion": "You are running version {{version}}", - "updateAvailable": "Update Available", - "newVersionAvailable": "A new version is available! You are running {{current}}, but {{latest}} is available.", - "releasedOn": "Released on {{date}}", - "downloadUpdate": "Download Update", - "dismiss": "Dismiss", - "checking": "Checking for updates...", - "checkUpdates": "Check for Updates", - "checkingUpdates": "Checking for updates...", - "refresh": "Refresh", - "updateRequired": "Update Required", - "updateDismissed": "Update notification dismissed", - "noUpdatesFound": "No updates found" + "error": "Error de comprobación de versión", + "checkFailed": "Error al comprobar actualizaciones", + "upToDate": "La aplicación está actualizada", + "currentVersion": "Estás ejecutando la versión {{version}}", + "updateAvailable": "Actualización disponible", + "newVersionAvailable": "¡Una nueva versión está disponible! Estás usando {{current}}, pero {{latest}} está disponible.", + "releasedOn": "Liberado en {{date}}", + "downloadUpdate": "Descargar actualización", + "dismiss": "Descartar", + "checking": "Buscando actualizaciones...", + "checkUpdates": "Buscar actualizaciones", + "checkingUpdates": "Buscando actualizaciones...", + "refresh": "Refrescar", + "updateRequired": "Actualización requerida", + "updateDismissed": "Notificación de actualización descartada", + "noUpdatesFound": "No hay actualizaciones" }, "common": { - "close": "Close", + "close": "Cerrar", "minimize": "Minimize", - "online": "Online", - "offline": "Offline", - "continue": "Continue", - "maintenance": "Maintenance", - "degraded": "Degraded", - "discord": "Discord", + "online": "En línea", + "offline": "Desconectado", + "continue": "Continuar", + "maintenance": "Mantenimiento", + "degraded": "Degrado", + "discord": "Discordia", "error": "Error", - "warning": "Warning", + "warning": "Advertencia", "info": "Info", - "success": "Success", - "loading": "Loading...", - "required": "Required", - "optional": "Optional", - "connect": "Connect", - "connecting": "Connecting...", - "creating": "Creating...", - "clear": "Clear", - "toggleSidebar": "Toggle Sidebar", + "success": "Éxito", + "loading": "Cargando...", + "required": "Requerido", + "optional": "Opcional", + "connect": "Conectar", + "connecting": "Conectando...", + "creating": "Creando...", + "clear": "Claro", + "toggleSidebar": "Cambiar barra lateral", "sidebar": "Sidebar", - "home": "Home", - "expired": "Expired", - "expiresToday": "Expires today", - "expiresTomorrow": "Expires in {{days}} days", - "updateAvailable": "Update Available", - "sshPath": "SSH Path", - "localPath": "Local Path", + "home": "Inicio", + "expired": "Caducó", + "expiresToday": "Caduca hoy", + "expiresTomorrow": "Caduca en {{days}} días", + "updateAvailable": "Actualización disponible", + "sshPath": "Ruta SSH", + "localPath": "Ruta local", "appName": "Termix", "resetSidebarWidth": "Reset sidebar width", - "dragToResizeSidebar": "Drag to resize sidebar", - "noAuthCredentials": "No authentication credentials available for this SSH host", - "noReleases": "No Releases", - "updatesAndReleases": "Updates & Releases", - "newVersionAvailable": "A new version ({{version}}) is available.", - "failedToFetchUpdateInfo": "Failed to fetch update information", - "preRelease": "Pre-release", - "loginFailed": "Login failed", - "noReleasesFound": "No releases found.", - "yourBackupCodes": "Your Backup Codes", - "sendResetCode": "Send Reset Code", - "verifyCode": "Verify Code", - "resetPassword": "Reset Password", + "dragToResizeSidebar": "Arrastre para redimensionar la barra lateral", + "noAuthCredentials": "No hay credenciales de autenticación disponibles para este host SSH", + "noReleases": "No hay lanzamientos", + "updatesAndReleases": "Actualizaciones y Publicaciones", + "newVersionAvailable": "Una nueva versión ({{version}}) está disponible.", + "failedToFetchUpdateInfo": "Error al obtener información de actualización", + "preRelease": "Pre-lanzamiento", + "loginFailed": "Error al iniciar sesión", + "noReleasesFound": "No se encontraron lanzamientos.", + "yourBackupCodes": "Tus códigos de copia de seguridad", + "sendResetCode": "Enviar código de reinicio", + "verifyCode": "Verificar código", + "resetPassword": "Restablecer contraseña", "resetCode": "Reset Code", - "newPassword": "New Password", - "folder": "Folder", - "file": "File", - "renamedSuccessfully": "renamed successfully", - "deletedSuccessfully": "deleted successfully", - "noTunnelConnections": "No tunnel connections configured", - "sshTools": "SSH Tools", - "english": "English", - "chinese": "Chinese", - "german": "German", - "cancel": "Cancel", - "username": "Username", - "name": "Name", - "login": "Login", - "logout": "Logout", - "register": "Register", - "password": "Password", - "version": "Version", - "confirmPassword": "Confirm Password", - "back": "Back", - "email": "Email", - "submit": "Submit", - "change": "Change", - "save": "Save", - "saving": "Saving...", - "delete": "Delete", - "edit": "Edit", - "add": "Add", - "search": "Search", - "confirm": "Confirm", - "yes": "Yes", - "no": "No", - "ok": "OK", - "enabled": "Enabled", - "disabled": "Disabled", - "important": "Important", - "notEnabled": "Not Enabled", - "settingUp": "Setting up...", - "next": "Next", - "previous": "Previous", - "refresh": "Refresh", - "settings": "Settings", - "profile": "Profile", - "help": "Help", - "about": "About", - "language": "Language", - "autoDetect": "Auto-detect", - "changeAccountPassword": "Change your account password", - "passwordResetTitle": "Password Reset", - "passwordResetDescription": "You are about to reset your password. This will log you out of all active sessions.", - "enterSixDigitCode": "Enter the 6-digit code from the docker container logs for user:", - "enterNewPassword": "Enter your new password for user:", - "passwordsDoNotMatch": "Passwords do not match", - "passwordMinLength": "Password must be at least 6 characters long", - "passwordResetSuccess": "Password reset successfully! You can now log in with your new password.", - "failedToInitiatePasswordReset": "Failed to initiate password reset", - "failedToVerifyResetCode": "Failed to verify reset code", - "failedToCompletePasswordReset": "Failed to complete password reset", - "documentation": "Documentation", - "retry": "Retry", - "checking": "Checking...", - "checkingDatabase": "Checking database connection...", - "actions": "Actions", - "remove": "Remove", + "newPassword": "Nueva contraseña", + "folder": "Carpeta", + "file": "Fichero", + "renamedSuccessfully": "renombrado correctamente", + "deletedSuccessfully": "eliminado correctamente", + "noTunnelConnections": "No hay conexiones de túnel configuradas", + "sshTools": "Herramientas SSH", + "english": "Inglés", + "chinese": "Chino", + "german": "Alemán", + "cancel": "Cancelar", + "username": "Usuario", + "name": "Nombre", + "login": "Ingresar", + "logout": "Cerrar sesión", + "register": "Registrarse", + "password": "Contraseña", + "version": "Versión", + "confirmPassword": "Confirmar contraseña", + "back": "Atrás", + "email": "E-mail", + "submit": "Enviar", + "change": "Cambiar", + "save": "Guardar", + "saving": "Guardando...", + "delete": "Eliminar", + "edit": "Editar", + "add": "Añadir", + "search": "Buscar", + "confirm": "Confirmar", + "yes": "Sí", + "no": "Nu", + "ok": "Ok", + "enabled": "Activado", + "disabled": "Deshabilitado", + "important": "Importante", + "notEnabled": "No activado", + "settingUp": "Configurando...", + "next": "Siguiente", + "previous": "Anterior", + "refresh": "Refrescar", + "settings": "Ajustes", + "profile": "Perfil", + "help": "Ayuda", + "about": "Acerca de", + "language": "Idioma", + "autoDetect": "Autodetectar", + "changeAccountPassword": "Cambiar la contraseña de tu cuenta", + "passwordResetTitle": "Restablecer contraseña", + "passwordResetDescription": "Estás a punto de restablecer tu contraseña. Esto te desconectará de todas las sesiones activas.", + "enterSixDigitCode": "Introduzca el código de 6 dígitos del contenedor docker para el usuario:", + "enterNewPassword": "Introduzca su nueva contraseña para el usuario:", + "passwordsDoNotMatch": "Las contraseñas no coinciden", + "passwordMinLength": "La contraseña debe tener al menos 6 caracteres", + "passwordResetSuccess": "¡Contraseña restablecida! Ahora puedes iniciar sesión con tu nueva contraseña.", + "failedToInitiatePasswordReset": "Error al iniciar el restablecimiento de contraseña", + "failedToVerifyResetCode": "Error al verificar el código de restablecimiento", + "failedToCompletePasswordReset": "Error al restablecer la contraseña", + "documentation": "Documentación", + "retry": "Reintentar", + "checking": "Comprobando...", + "checkingDatabase": "Comprobando conexión a la base de datos...", + "actions": "Acciones", + "remove": "Eliminar", "revoke": "Revoke", - "create": "Create" + "create": "Crear" }, "nav": { - "home": "Home", - "hosts": "Hosts", - "credentials": "Credentials", + "home": "Inicio", + "hosts": "Anfitriones", + "credentials": "Credenciales", "terminal": "Terminal", - "docker": "Docker", - "tunnels": "Tunnels", - "fileManager": "File Manager", - "serverStats": "Server Stats", + "docker": "Doctor", + "tunnels": "Túneles", + "fileManager": "Gestor de archivos", + "serverStats": "Estadísticas del Servidor", "admin": "Admin", - "userProfile": "User Profile", - "tools": "Tools", - "snippets": "Snippets", + "userProfile": "Perfil de usuario", + "tools": "Herramientas", + "snippets": "Fragmentos", "newTab": "New Tab", - "splitScreen": "Split Screen", - "closeTab": "Close Tab", - "sshManager": "SSH Manager", - "hostManager": "Host Manager", - "cannotSplitTab": "Cannot split this tab", + "splitScreen": "Dividir pantalla", + "closeTab": "Cerrar pestaña", + "sshManager": "Gestor SSH", + "hostManager": "Gestor de Anfitriones", + "cannotSplitTab": "No se puede dividir esta pestaña", "tabNavigation": "Tab Navigation", "hostTabTitle": "{{username}}@{{ip}}:{{port}}" }, "admin": { - "title": "Admin Settings", + "title": "Configuración de Admin", "oidc": "OIDC", - "users": "Users", - "userManagement": "User Management", - "makeAdmin": "Make Admin", - "removeAdmin": "Remove Admin", - "deleteUser": "Delete user {{username}}? This cannot be undone.", - "allowRegistration": "Allow Registration", - "oidcSettings": "OIDC Settings", - "clientId": "Client ID", - "clientSecret": "Client Secret", - "issuerUrl": "Issuer URL", - "authorizationUrl": "Authorization URL", - "tokenUrl": "Token URL", - "updateSettings": "Update Settings", - "confirmDelete": "Are you sure you want to delete this user?", - "confirmMakeAdmin": "Are you sure you want to make {{username}} an admin?", - "confirmRemoveAdmin": "Are you sure you want to remove admin status from {{username}}?", - "externalAuthentication": "External Authentication (OIDC)", - "configureExternalProvider": "Configure external identity provider for OIDC/OAuth2 authentication.", - "userIdentifierPath": "User Identifier Path", - "displayNamePath": "Display Name Path", - "scopes": "Scopes", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", + "users": "Usuarios", + "userManagement": "Gestión de usuario", + "makeAdmin": "Hacer Admin", + "removeAdmin": "Eliminar Admin", + "deleteUser": "¿Eliminar usuario {{username}}? Esto no se puede deshacer.", + "allowRegistration": "Permitir registro", + "oidcSettings": "Ajustes OIDC", + "clientId": "ID de cliente", + "clientSecret": "Cliente secreto", + "issuerUrl": "URL del emisor", + "authorizationUrl": "URL de autorización", + "tokenUrl": "URL del token", + "updateSettings": "Actualizar ajustes", + "confirmDelete": "¿Está seguro que desea eliminar este usuario?", + "confirmMakeAdmin": "¿Estás seguro de que quieres hacer de {{username}} un administrador?", + "confirmRemoveAdmin": "¿Estás seguro de que quieres eliminar el estado del administrador de {{username}}?", + "externalAuthentication": "Autenticación externa (OIDC)", + "configureExternalProvider": "Configurar proveedor de identidad externo para autenticación OIDC/OAuth2.", + "userIdentifierPath": "Ruta del identificador de usuario", + "displayNamePath": "Mostrar ruta de nombre", + "scopes": "Ámbitos", + "saving": "Guardando...", + "saveConfiguration": "Guardar configuración", "reset": "Reset", - "success": "Success", - "loading": "Loading...", - "refresh": "Refresh", - "loadingUsers": "Loading users...", - "username": "Username", - "type": "Type", - "actions": "Actions", - "external": "External", + "success": "Éxito", + "loading": "Cargando...", + "refresh": "Refrescar", + "loadingUsers": "Cargando usuarios...", + "username": "Usuario", + "type": "Tipo", + "actions": "Acciones", + "external": "Externo", "local": "Local", - "adminManagement": "Admin Management", - "makeUserAdmin": "Make User Admin", - "adding": "Adding...", - "currentAdmins": "Current Admins", + "adminManagement": "Administración de Admin", + "makeUserAdmin": "Hacer administrador de usuario", + "adding": "Añadiendo...", + "currentAdmins": "Administradores actuales", "adminBadge": "Admin", - "removeAdminButton": "Remove Admin", + "removeAdminButton": "Eliminar Admin", "general": "General", - "userRegistration": "User Registration", - "allowNewAccountRegistration": "Allow new account registration", - "allowPasswordLogin": "Allow username/password login", - "missingRequiredFields": "Missing required fields: {{fields}}", - "oidcConfigurationUpdated": "OIDC configuration updated successfully!", - "failedToFetchOidcConfig": "Failed to fetch OIDC configuration", - "failedToFetchRegistrationStatus": "Failed to fetch registration status", - "failedToFetchPasswordLoginStatus": "Failed to fetch password login status", - "failedToFetchUsers": "Failed to fetch users", - "oidcConfigurationDisabled": "OIDC configuration disabled successfully!", - "failedToUpdateOidcConfig": "Failed to update OIDC configuration", - "failedToDisableOidcConfig": "Failed to disable OIDC configuration", - "enterUsernameToMakeAdmin": "Enter username to make admin", - "userIsNowAdmin": "User {{username}} is now an admin", - "failedToMakeUserAdmin": "Failed to make user admin", - "removeAdminStatus": "Remove admin status from {{username}}?", - "adminStatusRemoved": "Admin status removed from {{username}}", - "failedToRemoveAdminStatus": "Failed to remove admin status", - "userDeletedSuccessfully": "User {{username}} deleted successfully", - "failedToDeleteUser": "Failed to delete user", - "overrideUserInfoUrl": "Override User Info URL (not required)", - "failedToFetchSessions": "Failed to fetch sessions", - "sessionRevokedSuccessfully": "Session revoked successfully", - "failedToRevokeSession": "Failed to revoke session", - "confirmRevokeSession": "Are you sure you want to revoke this session?", - "confirmRevokeAllSessions": "Are you sure you want to revoke all sessions for this user?", - "failedToRevokeSessions": "Failed to revoke sessions", - "sessionsRevokedSuccessfully": "Sessions revoked successfully", - "linkToPasswordAccount": "Link to Password Account", - "linkOIDCDialogTitle": "Link OIDC Account to Password Account", - "linkOIDCDialogDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "createUser": "Create User", - "createUserDescription": "Create a new local user with username and password", - "enterUsername": "Enter username", - "enterPassword": "Enter password", - "userCreatedSuccessfully": "User {{username}} created successfully", - "failedToCreateUser": "Failed to create user", - "manageUser": "Manage User", - "manageUserDescription": "Manage user settings, roles, and permissions", - "authType": "Authentication Type", - "adminStatus": "Admin Status", - "userId": "User ID", - "regularUser": "Regular User", - "adminPrivileges": "Administrator Privileges", - "administratorRole": "Administrator Role", - "administratorRoleDescription": "Grant full system access and management privileges", - "passwordManagement": "Password Management", - "passwordResetWarning": "Resetting a user's password will delete all their data (SSH hosts, credentials, settings). This action cannot be undone.", - "resetUserPassword": "Reset User Password", - "resettingPassword": "Resetting...", - "passwordResetInitiated": "Password reset initiated for {{username}}. Reset code sent.", - "failedToResetPassword": "Failed to initiate password reset", - "sessionManagement": "Session Management", - "revokeAllSessions": "Revoke All Sessions", - "revokeAllSessionsDescription": "Force logout from all devices and sessions", - "revoking": "Revoking...", - "revoke": "Revoke All", - "dangerZone": "Danger Zone", - "deleteUserTitle": "Delete User Account", - "deleteUserWarning": "Permanently delete this user account and all associated data. This action cannot be undone.", - "deleting": "Deleting...", - "cannotDeleteSelf": "You cannot delete your own account", - "cannotRemoveLastAdmin": "Cannot remove the last administrator", - "cannotRemoveOwnAdmin": "You cannot remove your own admin privileges", - "cannotModifyOwnAdminStatus": "You cannot modify your own admin status", - "dualAuth": "Dual Auth", - "externalOIDC": "External (OIDC)", - "localPassword": "Local Password", - "confirmRevokeOwnSessions": "Are you sure you want to revoke all your own sessions? You will be logged out.", - "linkOIDCWarningTitle": "Warning: OIDC User Data Will Be Deleted", - "linkOIDCActionDeleteUser": "Delete the OIDC user account and all their data", - "linkOIDCActionAddCapability": "Add OIDC login capability to the target password account", - "linkOIDCActionDualAuth": "Allow the password account to login with both password and OIDC", - "linkTargetUsernameLabel": "Target Password Account Username", - "linkTargetUsernamePlaceholder": "Enter username of password account", - "linkAccountsButton": "Link Accounts", - "linkingAccounts": "Linking...", - "accountsLinkedSuccessfully": "OIDC user {{oidcUsername}} has been linked to {{targetUsername}}", - "failedToLinkAccounts": "Failed to link accounts", - "linkTargetUsernameRequired": "Target username is required", - "unlinkOIDCTitle": "Unlink OIDC Authentication", - "unlinkOIDCDescription": "Remove OIDC authentication from {{username}}? The user will only be able to login with username/password after this.", - "unlinkOIDCSuccess": "OIDC unlinked from {{username}}", - "failedToUnlinkOIDC": "Failed to unlink OIDC", - "databaseSecurity": "Database Security", - "encryptionStatus": "Encryption Status", - "encryptionEnabled": "Encryption Enabled", - "enabled": "Enabled", - "disabled": "Disabled", - "keyId": "Key ID", - "created": "Created", - "migrationStatus": "Migration Status", - "migrationCompleted": "Migration completed", - "migrationRequired": "Migration required", - "deviceProtectedMasterKey": "Environment-Protected Master Key", - "legacyKeyStorage": "Legacy Key Storage", - "masterKeyEncryptedWithDeviceFingerprint": "Master key encrypted with environment fingerprint (KEK protection active)", - "keyNotProtectedByDeviceBinding": "Key not protected by environment binding (upgrade recommended)", + "userRegistration": "Registro de usuario", + "allowNewAccountRegistration": "Permitir el registro de nueva cuenta", + "allowPasswordLogin": "Permitir nombre de usuario/contraseña", + "missingRequiredFields": "Faltan campos obligatorios: {{fields}}", + "oidcConfigurationUpdated": "¡Configuración OIDC actualizada con éxito!", + "failedToFetchOidcConfig": "Error al recuperar la configuración OIDC", + "failedToFetchRegistrationStatus": "Error al recuperar el estado de registro", + "failedToFetchPasswordLoginStatus": "Error al recuperar el estado de inicio de sesión de contraseña", + "failedToFetchUsers": "Error al recuperar usuarios", + "oidcConfigurationDisabled": "¡Configuración OIDC desactivada con éxito!", + "failedToUpdateOidcConfig": "Error al actualizar la configuración OIDC", + "failedToDisableOidcConfig": "Error al desactivar la configuración OIDC", + "enterUsernameToMakeAdmin": "Introducir nombre de usuario para hacer administrador", + "userIsNowAdmin": "Usuario {{username}} es ahora un administrador", + "failedToMakeUserAdmin": "Error al hacer administrador de usuario", + "removeAdminStatus": "¿Eliminar el estado del administrador de {{username}}?", + "adminStatusRemoved": "Estado de administrador eliminado de {{username}}", + "failedToRemoveAdminStatus": "Error al eliminar el estado de administrador", + "userDeletedSuccessfully": "Usuario {{username}} eliminado correctamente", + "failedToDeleteUser": "Error al eliminar el usuario", + "overrideUserInfoUrl": "Reemplazar URL de información de usuario (no requerido)", + "failedToFetchSessions": "Error al obtener las sesiones", + "sessionRevokedSuccessfully": "Sesión revocada con éxito", + "failedToRevokeSession": "Error al revocar la sesión", + "confirmRevokeSession": "¿Está seguro que desea revocar esta sesión?", + "confirmRevokeAllSessions": "¿Está seguro que desea revocar todas las sesiones para este usuario?", + "failedToRevokeSessions": "Error al revocar las sesiones", + "sessionsRevokedSuccessfully": "Sesiones revocadas con éxito", + "linkToPasswordAccount": "Enlace a la cuenta de contraseña", + "linkOIDCDialogTitle": "Vincular cuenta OIDC a cuenta de contraseña", + "linkOIDCDialogDescription": "Enlace {{username}} (usuario OIDC) a una cuenta de contraseña existente. Esto habilitará la autenticación dual para la cuenta de contraseña.", + "createUser": "Crear usuario", + "createUserDescription": "Crear un nuevo usuario local con nombre de usuario y contraseña", + "enterUsername": "Introduzca nombre de usuario", + "enterPassword": "Introduzca contraseña", + "userCreatedSuccessfully": "Usuario {{username}} creado con éxito", + "failedToCreateUser": "Error al crear el usuario", + "manageUser": "Administrar usuario", + "manageUserDescription": "Administrar ajustes de usuario, roles y permisos", + "authType": "Tipo de autenticación", + "adminStatus": "Estado del Admin", + "userId": "ID Usuario", + "regularUser": "Usuario regular", + "adminPrivileges": "Privilegios de administrador", + "administratorRole": "Rol de Administrador", + "administratorRoleDescription": "Otorgar privilegios completos de acceso al sistema y gestión", + "passwordManagement": "Gestión de contraseñas", + "passwordResetWarning": "Restablecer la contraseña de un usuario eliminará todos sus datos (SSH hosts, credenciales, configuración). Esta acción no se puede deshacer.", + "resetUserPassword": "Restablecer contraseña de usuario", + "resettingPassword": "Reiniciando...", + "passwordResetInitiated": "Se ha iniciado el restablecimiento de contraseña para {{username}}. Se ha reiniciado el código.", + "failedToResetPassword": "Error al iniciar el restablecimiento de contraseña", + "sessionManagement": "Gestión de sesiones", + "revokeAllSessions": "Revocar todas las sesiones", + "revokeAllSessionsDescription": "Forzar la salida de todos los dispositivos y sesiones", + "revoking": "Revocando...", + "revoke": "Revocar todo", + "dangerZone": "Zona de peligro", + "deleteUserTitle": "Eliminar cuenta de usuario", + "deleteUserWarning": "Eliminar permanentemente esta cuenta de usuario y todos los datos asociados. Esta acción no se puede deshacer.", + "deleting": "Eliminando...", + "cannotDeleteSelf": "No puedes eliminar tu propia cuenta", + "cannotRemoveLastAdmin": "No se puede eliminar el último administrador", + "cannotRemoveOwnAdmin": "No puedes eliminar tus propios privilegios de administrador", + "cannotModifyOwnAdminStatus": "No puedes modificar tu propio estado de administrador", + "dualAuth": "Doble Auth", + "externalOIDC": "Externo (OIDC)", + "localPassword": "Contraseña local", + "confirmRevokeOwnSessions": "¿Está seguro que desea revocar todas sus propias sesiones? Se cerrará la sesión.", + "linkOIDCWarningTitle": "Advertencia: Se eliminarán los datos de usuario de OIDC", + "linkOIDCActionDeleteUser": "Eliminar la cuenta de usuario OIDC y todos sus datos", + "linkOIDCActionAddCapability": "Añadir capacidad de inicio de sesión OIDC a la cuenta de contraseña de destino", + "linkOIDCActionDualAuth": "Permitir a la cuenta de contraseña iniciar sesión con contraseña y OIDC", + "linkTargetUsernameLabel": "Usuario de la cuenta de contraseña de destino", + "linkTargetUsernamePlaceholder": "Introduzca el nombre de usuario de la cuenta de contraseña", + "linkAccountsButton": "Enlazar cuentas", + "linkingAccounts": "Vinculando...", + "accountsLinkedSuccessfully": "El usuario OIDC {{oidcUsername}} ha sido vinculado a {{targetUsername}}", + "failedToLinkAccounts": "Error al vincular cuentas", + "linkTargetUsernameRequired": "Se requiere nombre de usuario de destino", + "unlinkOIDCTitle": "Desvincular autenticación OIDC", + "unlinkOIDCDescription": "¿Eliminar la autenticación OIDC de {{username}}? El usuario solo podrá iniciar sesión con el nombre de usuario/contraseña después de esto.", + "unlinkOIDCSuccess": "OIDC desvinculado de {{username}}", + "failedToUnlinkOIDC": "Error al desvincular OIDC", + "databaseSecurity": "Seguridad de la base de datos", + "encryptionStatus": "Estado del cifrado", + "encryptionEnabled": "Encriptación habilitada", + "enabled": "Activado", + "disabled": "Deshabilitado", + "keyId": "Clave ID", + "created": "Creado", + "migrationStatus": "Estado de Migración", + "migrationCompleted": "Migración completada", + "migrationRequired": "Migración requerida", + "deviceProtectedMasterKey": "Llave Maestra Protegida del Entorno", + "legacyKeyStorage": "Almacenamiento de Clave Legado", + "masterKeyEncryptedWithDeviceFingerprint": "Clave maestra cifrada con huella digital (protección KEK activa)", + "keyNotProtectedByDeviceBinding": "Clave no protegida por enlace de entorno (se recomienda actualización)", "valid": "Valid", - "initializeDatabaseEncryption": "Initialize Database Encryption", - "enableAes256EncryptionWithDeviceBinding": "Enable AES-256 encryption with environment-bound master key protection. This creates enterprise-grade security for SSH keys, passwords, and authentication tokens.", - "featuresEnabled": "Features enabled:", - "aes256GcmAuthenticatedEncryption": "AES-256-GCM authenticated encryption", - "deviceFingerprintMasterKeyProtection": "Environment fingerprint master key protection (KEK)", - "pbkdf2KeyDerivation": "PBKDF2 key derivation with 100K iterations", - "automaticKeyManagement": "Automatic key management and rotation", - "initializing": "Initializing...", - "initializeEnterpriseEncryption": "Initialize Enterprise Encryption", - "migrateExistingData": "Migrate Existing Data", - "encryptExistingUnprotectedData": "Encrypt existing unprotected data in your database. This process is safe and creates automatic backups.", - "testMigrationDryRun": "Verify Encryption Compatibility", - "migrating": "Migrating...", - "migrateData": "Migrate Data", - "securityInformation": "Security Information", - "sshPrivateKeysEncryptedWithAes256": "SSH private keys and passwords are encrypted with AES-256-GCM", - "userAuthTokensProtected": "User authentication tokens and 2FA secrets are protected", - "masterKeysProtectedByDeviceFingerprint": "Master encryption keys are protected by device fingerprint (KEK)", - "keysBoundToServerInstance": "Keys are bound to current server environment (migratable via environment variables)", - "pbkdf2HkdfKeyDerivation": "PBKDF2 + HKDF key derivation with 100K iterations", - "backwardCompatibleMigration": "All data remains backward compatible during migration", - "enterpriseGradeSecurityActive": "Enterprise-Grade Security Active", - "masterKeysProtectedByDeviceBinding": "Your master encryption keys are protected by environment fingerprinting. This uses server hostname, paths, and other environment info to generate protection keys. To migrate servers, set the DB_ENCRYPTION_KEY environment variable on the new server.", - "important": "Important", - "keepEncryptionKeysSecure": "Ensure data security: regularly backup your database files and server configuration. To migrate to a new server, set the DB_ENCRYPTION_KEY environment variable on the new environment, or maintain the same hostname and directory structure.", - "loadingEncryptionStatus": "Loading encryption status...", - "testMigrationDescription": "Verify that existing data can be safely migrated to encrypted format without actually modifying any data", - "serverMigrationGuide": "Server Migration Guide", - "migrationInstructions": "To migrate encrypted data to a new server: 1) Backup database files, 2) Set environment variable DB_ENCRYPTION_KEY=\"your-key\" on new server, 3) Restore database files", - "environmentProtection": "Environment Protection", - "environmentProtectionDesc": "Protects encryption keys based on server environment info (hostname, paths, etc.), migratable via environment variables", - "verificationCompleted": "Compatibility verification completed - no data was changed", - "verificationInProgress": "Verification completed", - "dataMigrationCompleted": "Data migration completed successfully!", - "verificationFailed": "Compatibility verification failed", - "migrationFailed": "Migration failed", - "runningVerification": "Running compatibility verification...", - "startingMigration": "Starting migration...", - "hardwareFingerprintSecurity": "Hardware Fingerprint Security", - "hardwareBoundEncryption": "Hardware-Bound Encryption Active", - "masterKeysNowProtectedByHardwareFingerprint": "Master keys are now protected by real hardware fingerprinting instead of environment variables", - "cpuSerialNumberDetection": "CPU serial number detection", - "motherboardUuidIdentification": "Motherboard UUID identification", - "diskSerialNumberVerification": "Disk serial number verification", - "biosSerialNumberCheck": "BIOS serial number check", - "stableMacAddressFiltering": "Stable MAC address filtering", - "databaseFileEncryption": "Database File Encryption", - "dualLayerProtection": "Dual-Layer Protection Active", - "bothFieldAndFileEncryptionActive": "Both field-level and file-level encryption are now active for maximum security", - "fieldLevelAes256Encryption": "Field-level AES-256 encryption for sensitive data", - "fileLevelDatabaseEncryption": "File-level database encryption with hardware binding", - "hardwareBoundFileKeys": "Hardware-bound file encryption keys", - "automaticEncryptedBackups": "Automatic encrypted backup creation", - "createEncryptedBackup": "Create Encrypted Backup", - "creatingBackup": "Creating Backup...", - "backupCreated": "Backup Created", - "encryptedBackupCreatedSuccessfully": "Encrypted backup created successfully", - "backupCreationFailed": "Backup creation failed", - "databaseMigration": "Database Migration", - "exportForMigration": "Export for Migration", - "exportDatabaseForHardwareMigration": "Export database as SQLite file with decrypted data for migration to new hardware", + "initializeDatabaseEncryption": "Inicializar cifrado de base de datos", + "enableAes256EncryptionWithDeviceBinding": "Habilitar cifrado AES-256 con protección de clave maestra enlazada con el medio ambiente. Esto crea seguridad de grado superior para claves SSH, contraseñas y tokens de autenticación.", + "featuresEnabled": "Características activadas:", + "aes256GcmAuthenticatedEncryption": "Cifrado autenticado AES-256-GCM", + "deviceFingerprintMasterKeyProtection": "Protección de la clave clave principal de huella dactilar ambiental (KEK)", + "pbkdf2KeyDerivation": "Derivación de claves PBKDF2 con 100K de iteraciones", + "automaticKeyManagement": "Gestión automática de claves y rotación", + "initializing": "Inicializando...", + "initializeEnterpriseEncryption": "Inicializar cifrado empresarial", + "migrateExistingData": "Migrar datos existentes", + "encryptExistingUnprotectedData": "Cifra los datos existentes sin protección en su base de datos. Este proceso es seguro y crea copias de seguridad automáticas.", + "testMigrationDryRun": "Verificar compatibilidad de cifrado", + "migrating": "Migratando...", + "migrateData": "Migrar datos", + "securityInformation": "Información de seguridad", + "sshPrivateKeysEncryptedWithAes256": "Las claves privadas y contraseñas SSH son cifradas con AES-256-GCM", + "userAuthTokensProtected": "Los tokens de autenticación de usuario y los secretos 2FA están protegidos", + "masterKeysProtectedByDeviceFingerprint": "Las claves maestras del cifrado están protegidas por la huella dactilar del dispositivo (KEK)", + "keysBoundToServerInstance": "Las claves están vinculadas al entorno actual del servidor (migrable a través de variables de entorno)", + "pbkdf2HkdfKeyDerivation": "derivación de claves PBKDF2 + HKDF con 100K iteraciones", + "backwardCompatibleMigration": "Todos los datos siguen siendo compatibles durante la migración", + "enterpriseGradeSecurityActive": "Seguridad de escala empresarial activa", + "masterKeysProtectedByDeviceBinding": "Sus claves de cifrado maestro están protegidas por la huella dactilar del entorno. Esto utiliza el nombre del servidor, las rutas y otra información del entorno para generar claves de protección. Para migrar los servidores, establezca la variable de entorno DB_ENCRYPTION_KEY en el nuevo servidor.", + "important": "Importante", + "keepEncryptionKeysSecure": "Asegurar la seguridad de los datos: haga una copia de seguridad regular de los archivos de la base de datos y la configuración del servidor. Para migrar a un nuevo servidor, establezca la variable de entorno DB_ENCRYPTION_KEY en el nuevo entorno, o mantenga la misma estructura de directorio y nombre de host.", + "loadingEncryptionStatus": "Cargando estado de cifrado...", + "testMigrationDescription": "Verificar que los datos existentes pueden ser migrados de forma segura al formato cifrado sin modificar ningún dato", + "serverMigrationGuide": "Guía de Migración del servidor", + "migrationInstructions": "Para migrar datos cifrados a un nuevo servidor: 1) Copiar archivos de base de datos, 2) Establecer la variable de entorno DB_ENCRYPTION_KEY=\"su-clave\" en el nuevo servidor, 3) Restaurar archivos de base de datos", + "environmentProtection": "Protección del medio ambiente", + "environmentProtectionDesc": "Protege claves de cifrado basadas en la información del entorno del servidor (nombre de host, rutas, etc.), migrable a través de variables de entorno", + "verificationCompleted": "Verificación de compatibilidad completada - no se han cambiado los datos", + "verificationInProgress": "Verificación completada", + "dataMigrationCompleted": "¡Migración de datos completada con éxito!", + "verificationFailed": "Falló la verificación de compatibilidad", + "migrationFailed": "Migración fallida", + "runningVerification": "Ejecutando verificación de compatibilidad...", + "startingMigration": "Iniciando migración...", + "hardwareFingerprintSecurity": "Seguridad de huellas digitales de hardware", + "hardwareBoundEncryption": "Cifrado de Hardware Activado", + "masterKeysNowProtectedByHardwareFingerprint": "Las claves maestras ahora están protegidas por la huella dactilar real en lugar de variables de entorno", + "cpuSerialNumberDetection": "Detección de números de serie de CPU", + "motherboardUuidIdentification": "Identificación UUID de placa", + "diskSerialNumberVerification": "Verificación del número de serie del disco", + "biosSerialNumberCheck": "Comprobar número de serie BIOS", + "stableMacAddressFiltering": "Filtrado de direcciones MAC estable", + "databaseFileEncryption": "Cifrado de archivos de base de datos", + "dualLayerProtection": "Protección de doble capa activa", + "bothFieldAndFileEncryptionActive": "El cifrado de nivel de campo y de archivo está ahora activo para máxima seguridad", + "fieldLevelAes256Encryption": "Cifrado AES-256 de nivel de campo para datos sensibles", + "fileLevelDatabaseEncryption": "Cifrado de base de datos a nivel de archivo con enlace de hardware", + "hardwareBoundFileKeys": "Claves de cifrado enlazadas por Hardware", + "automaticEncryptedBackups": "Creación automática de copia de seguridad cifrada", + "createEncryptedBackup": "Crear copia de seguridad cifrada", + "creatingBackup": "Creando copia de seguridad...", + "backupCreated": "Copia de seguridad creada", + "encryptedBackupCreatedSuccessfully": "Copia de seguridad cifrada creada con éxito", + "backupCreationFailed": "Error al crear la copia de seguridad", + "databaseMigration": "Migración de base de datos", + "exportForMigration": "Exportar para la Migración", + "exportDatabaseForHardwareMigration": "Exportar base de datos como archivo SQLite con datos descifrados para la migración al nuevo hardware", "exportDatabase": "Export SQLite Database", - "exporting": "Exporting...", - "exportCreated": "SQLite Export Created", - "exportContainsDecryptedData": "SQLite export contains decrypted data - keep secure!", - "databaseExportedSuccessfully": "SQLite database exported successfully", - "databaseExportFailed": "SQLite database export failed", - "importFromMigration": "Import from Migration", - "importDatabaseFromAnotherSystem": "Import SQLite database from another system or hardware", + "exporting": "Exportando...", + "exportCreated": "Exportación de SQLite creada", + "exportContainsDecryptedData": "La exportación de SQLite contiene datos descifrados - ¡mantente seguro!", + "databaseExportedSuccessfully": "Base de datos SQLite exportada con éxito", + "databaseExportFailed": "Error al exportar la base de datos SQLite", + "importFromMigration": "Importar desde Migración", + "importDatabaseFromAnotherSystem": "Importar base de datos SQLite de otro sistema o hardware", "importDatabase": "Import SQLite Database", - "importing": "Importing...", - "selectedFile": "Selected SQLite File", - "importWillReplaceExistingData": "SQLite import will replace existing data - backup recommended!", - "pleaseSelectImportFile": "Please select a SQLite import file", - "databaseImportedSuccessfully": "SQLite database imported successfully", - "databaseImportFailed": "SQLite database import failed", - "manageEncryptionAndBackups": "Manage encryption keys, database security, and backup operations", - "activeSecurityFeatures": "Currently active security measures and protections", - "deviceBindingTechnology": "Advanced hardware-based key protection technology", - "backupAndRecovery": "Secure backup creation and database recovery options", - "crossSystemDataTransfer": "Export and import databases across different systems", - "noMigrationNeeded": "No migration needed", - "encryptionKey": "Encryption Key", - "keyProtection": "Key Protection", - "active": "Active", - "legacy": "Legacy", - "dataStatus": "Data Status", - "encrypted": "Encrypted", - "needsMigration": "Needs Migration", - "ready": "Ready", - "initializeEncryption": "Initialize Encryption", - "initialize": "Initialize", - "test": "Test", - "migrate": "Migrate", - "backup": "Backup", - "createBackup": "Create Backup", - "exportImport": "Export/Import", - "export": "Export", - "import": "Import", - "passwordRequired": "Password required", - "confirmExport": "Confirm Export", - "exportDescription": "Export SSH hosts and credentials as SQLite file", - "importDescription": "Import SQLite file with incremental merge (skips duplicates)", - "criticalWarning": "Critical Warning", - "cannotDisablePasswordLoginWithoutOIDC": "Cannot disable password login without OIDC configured! You must configure OIDC authentication before disabling password login, or you will lose access to Termix.", - "confirmDisablePasswordLogin": "Are you sure you want to disable password login? Make sure OIDC is properly configured and working before proceeding, or you will lose access to your Termix instance.", - "passwordLoginDisabled": "Password login disabled successfully", - "passwordLoginAndRegistrationDisabled": "Password login and new account registration disabled successfully", - "requiresPasswordLogin": "Requires password login enabled", - "passwordLoginDisabledWarning": "Password login is disabled. Ensure OIDC is properly configured or you will not be able to log in to Termix.", - "oidcRequiredWarning": "CRITICAL: Password login is disabled. If you reset or misconfigure OIDC, you will lose all access to Termix and brick your instance. Only proceed if you are absolutely certain.", - "confirmDisableOIDCWarning": "WARNING: You are about to disable OIDC while password login is also disabled. This will brick your Termix instance and you will lose all access. Are you absolutely sure you want to proceed?", - "failedToUpdatePasswordLoginStatus": "Failed to update password login status", - "loadingSessions": "Loading sessions...", - "noActiveSessions": "No active sessions found.", - "device": "Device", - "user": "User", - "lastActive": "Last Active", - "expires": "Expires", + "importing": "Importando...", + "selectedFile": "Archivo SQLite seleccionado", + "importWillReplaceExistingData": "La importación de SQLite reemplazará los datos existentes - ¡se recomienda copia de seguridad!", + "pleaseSelectImportFile": "Por favor, seleccione un archivo de importación SQLite", + "databaseImportedSuccessfully": "Base de datos SQLite importada correctamente", + "databaseImportFailed": "Error al importar la base de datos SQLite", + "manageEncryptionAndBackups": "Administrar claves de cifrado, seguridad de base de datos y operaciones de copia de seguridad", + "activeSecurityFeatures": "Medidas y protecciones de seguridad activas actualmente", + "deviceBindingTechnology": "Tecnología avanzada de protección de claves basada en hardware", + "backupAndRecovery": "Opciones seguras de creación de copias de seguridad y recuperación de base de datos", + "crossSystemDataTransfer": "Exportar e importar bases de datos a través de diferentes sistemas", + "noMigrationNeeded": "No se necesita migración", + "encryptionKey": "Clave de cifrado", + "keyProtection": "Protección de Clave", + "active": "Activo", + "legacy": "Legado", + "dataStatus": "Estado de datos", + "encrypted": "Cifrado", + "needsMigration": "Necesita Migración", + "ready": "Listo", + "initializeEncryption": "Inicializar cifrado", + "initialize": "Inicializar", + "test": "Prueba", + "migrate": "Migrar", + "backup": "Respaldo", + "createBackup": "Crear copia de seguridad", + "exportImport": "Exportar/Importar", + "export": "Exportar", + "import": "Importar", + "passwordRequired": "Contraseña requerida", + "confirmExport": "Confirmar exportación", + "exportDescription": "Exportar hosts y credenciales de SSH como archivo SQLite", + "importDescription": "Importar archivo SQLite con fusión incremental (salta duplicados)", + "criticalWarning": "Advertencia crítica", + "cannotDisablePasswordLoginWithoutOIDC": "¡No se puede desactivar el inicio de sesión de contraseña sin OIDC configurado! Debe configurar la autenticación OIDC antes de desactivar el inicio de sesión de contraseña, o perderá el acceso a Termix.", + "confirmDisablePasswordLogin": "¿Está seguro de que desea desactivar el inicio de sesión de contraseña? Asegúrese de que OIDC está correctamente configurado y funcionando antes de continuar, o perderá el acceso a su instancia de Termix.", + "passwordLoginDisabled": "Contraseña de inicio de sesión desactivada correctamente", + "passwordLoginAndRegistrationDisabled": "Contraseña de inicio de sesión y nuevo registro de cuenta deshabilitado correctamente", + "requiresPasswordLogin": "Requiere iniciar sesión con contraseña habilitada", + "passwordLoginDisabledWarning": "El inicio de sesión de la contraseña está desactivado. Asegúrese de que OIDC está configurado correctamente o no podrá iniciar sesión en Termix.", + "oidcRequiredWarning": "CRITICAL: El inicio de sesión de la contraseña está desactivado. Si restableces o configuras OIDC, perderás todo el acceso a Termix y bloquearás tu instancia. Sólo proceda si usted está absolutamente seguro.", + "confirmDisableOIDCWarning": "ATENCIÓN: Está a punto de desactivar OIDC mientras que el inicio de sesión de la contraseña también está desactivado. Esto bloqueará su instancia de Termix y perderá todo el acceso. ¿Está seguro de que desea continuar?", + "failedToUpdatePasswordLoginStatus": "Error al actualizar el estado de acceso a la contraseña", + "loadingSessions": "Cargando sesiones...", + "noActiveSessions": "No se encontraron sesiones activas.", + "device": "Dispositivo", + "user": "Usuario", + "lastActive": "Última actividad", + "expires": "Caduca", "revoked": "Revoked", - "revokeAllUserSessionsTitle": "Revoke all sessions for this user", - "revokeAll": "Revoke All", - "linkOidcToPasswordAccount": "Link OIDC Account to Password Account", - "linkOidcToPasswordAccountDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "linkOidcWarningTitle": "Warning: OIDC User Data Will Be Deleted", - "linkOidcWarningDescription": "This action will:", - "linkOidcActionDeleteUser": "Delete the OIDC user account and all their data", - "linkOidcActionAddCapability": "Add OIDC login capability to the target password account", - "linkOidcActionDualAuth": "Allow the password account to login with both password and OIDC", - "passwordMinLength": "Password must be at least 6 characters", - "currentRoles": "Current Roles", - "noRolesAssigned": "No roles assigned", - "assignNewRole": "Assign New Role" + "revokeAllUserSessionsTitle": "Revocar todas las sesiones de este usuario", + "revokeAll": "Revocar todo", + "linkOidcToPasswordAccount": "Vincular cuenta OIDC a cuenta de contraseña", + "linkOidcToPasswordAccountDescription": "Enlace {{username}} (usuario OIDC) a una cuenta de contraseña existente. Esto habilitará la autenticación dual para la cuenta de contraseña.", + "linkOidcWarningTitle": "Advertencia: Se eliminarán los datos de usuario de OIDC", + "linkOidcWarningDescription": "Esta acción será:", + "linkOidcActionDeleteUser": "Eliminar la cuenta de usuario OIDC y todos sus datos", + "linkOidcActionAddCapability": "Añadir capacidad de inicio de sesión OIDC a la cuenta de contraseña de destino", + "linkOidcActionDualAuth": "Permitir a la cuenta de contraseña iniciar sesión con contraseña y OIDC", + "passwordMinLength": "La contraseña debe tener al menos 6 caracteres", + "currentRoles": "Roles actuales", + "noRolesAssigned": "No hay roles asignados", + "assignNewRole": "Asignar nuevo rol" }, "hosts": { - "title": "Host Manager", - "sshHosts": "SSH Hosts", - "noHosts": "No SSH Hosts", - "noHostsMessage": "You haven't added any SSH hosts yet. Click \"Add Host\" to get started.", - "loadingHosts": "Loading hosts...", - "failedToLoadHosts": "Failed to load hosts", - "retry": "Retry", - "refresh": "Refresh", - "optional": "Optional", - "hostsCount": "{{count}} hosts", - "importJson": "Import JSON", - "importing": "Importing...", - "importJsonTitle": "Import SSH Hosts from JSON", - "importJsonDesc": "Upload a JSON file to bulk import multiple SSH hosts (max 100).", - "downloadSample": "Download Sample", - "formatGuide": "Format Guide", - "exportCredentialWarning": "Warning: Host \"{{name}}\" uses credential authentication. The exported file will not include the credential data and will need to be manually reconfigured after import. Do you want to continue?", - "exportSensitiveDataWarning": "Warning: Host \"{{name}}\" contains sensitive authentication data (password/SSH key). The exported file will include this data in plaintext. Please keep the file secure and delete it after use. Do you want to continue?", - "uncategorized": "Uncategorized", - "confirmDelete": "Are you sure you want to delete \"{{name}}\" ?", - "failedToDeleteHost": "Failed to delete host", - "failedToExportHost": "Failed to export host. Please ensure you're logged in and have access to the host data.", - "jsonMustContainHosts": "JSON must contain a \"hosts\" array or be an array of hosts", - "noHostsInJson": "No hosts found in JSON file", - "maxHostsAllowed": "Maximum 100 hosts allowed per import", - "importCompleted": "Import completed: {{success}} successful, {{failed}} failed", - "importFailed": "Import failed", - "importError": "Import error", - "failedToImportJson": "Failed to import JSON file", - "connectionDetails": "Connection Details", - "organization": "Organization", - "ipAddress": "IP Address", - "port": "Port", - "name": "Name", - "username": "Username", - "folder": "Folder", - "tags": "Tags", - "pin": "Pin", - "notes": "Notes", - "expirationDate": "Expiration Date", - "passwordRequired": "Password is required when using password authentication", - "sshKeyRequired": "SSH Private Key is required when using key authentication", - "keyTypeRequired": "Key Type is required when using key authentication", - "mustSelectValidSshConfig": "Must select a valid SSH configuration from the list", - "addHost": "Add Host", - "editHost": "Edit Host", - "cloneHost": "Clone Host", - "updateHost": "Update Host", - "hostUpdatedSuccessfully": "Host \"{{name}}\" updated successfully!", - "hostAddedSuccessfully": "Host \"{{name}}\" added successfully!", - "hostDeletedSuccessfully": "Host \"{{name}}\" deleted successfully!", - "failedToSaveHost": "Failed to save host. Please try again.", - "savingHost": "Saving host...", - "updatingHost": "Updating host...", - "cloningHost": "Cloning host...", - "enableTerminal": "Enable Terminal", - "enableTerminalDesc": "Enable/disable host visibility in Terminal tab", - "enableTunnel": "Enable Tunnel", - "enableTunnelDesc": "Enable/disable host visibility in Tunnel tab", - "enableFileManager": "Enable File Manager", - "enableFileManagerDesc": "Enable/disable host visibility in File Manager tab", - "enableDockerDesc": "Enable/disable host visibility in Docker tab", - "enableDocker": "Enable Docker", - "defaultPath": "Default Path", - "defaultPathDesc": "Default directory when opening file manager for this host", - "tunnelConnections": "Tunnel Connections", - "connection": "Connection", - "remove": "Remove", - "sourcePort": "Source Port", - "sourcePortDesc": " (Source refers to the Current Connection Details in the General tab)", - "endpointPort": "Endpoint Port", - "endpointSshConfig": "Endpoint SSH Configuration", - "tunnelForwardDescription": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", - "maxRetries": "Max Retries", - "maxRetriesDescription": "Maximum number of retry attempts for tunnel connection.", - "retryInterval": "Retry Interval (seconds)", - "retryIntervalDescription": "Time to wait between retry attempts.", - "autoStartContainer": "Auto Start on Container Launch", - "autoStartDesc": "Automatically start this tunnel when the container launches", - "addConnection": "Add Tunnel Connection", - "sshpassRequired": "Sshpass Required For Password Authentication", - "sshpassRequiredDesc": "For password authentication in tunnels, sshpass must be installed on the system.", - "otherInstallMethods": "Other installation methods:", - "debianUbuntuEquivalent": "(Debian/Ubuntu) or the equivalent for your OS.", - "or": "or", + "title": "Gestor de Anfitriones", + "sshHosts": "Equipos SSH", + "noHosts": "No hay hosts SSH", + "noHostsMessage": "Aún no has añadido ningún host SSH. Haz clic en \"Añadir Host\" para empezar.", + "loadingHosts": "Cargando hosts...", + "failedToLoadHosts": "Error al cargar hosts", + "retry": "Reintentar", + "refresh": "Refrescar", + "optional": "Opcional", + "hostsCount": "Equipos {{count}}", + "importJson": "Importar JSON", + "importing": "Importando...", + "importJsonTitle": "Importar SSH Hosts desde JSON", + "importJsonDesc": "Subir un archivo JSON para importar múltiples hosts SSH (máx. 100).", + "downloadSample": "Descargar muestra", + "formatGuide": "Guía de Formato", + "exportCredentialWarning": "Advertencia: Host \"{{name}}\" utiliza autenticación de credenciales. El archivo exportado no incluirá los datos de credenciales y tendrá que ser reconfigurado manualmente después de la importación. ¿Desea continuar?", + "exportSensitiveDataWarning": "Advertencia: El host \"{{name}}\" contiene datos de autenticación sensibles (contraseña/clave SSH). El archivo exportado incluirá estos datos en listo. Por favor, mantenga el archivo seguro y elimínelo después de usarlo. ¿Desea continuar?", + "uncategorized": "Sin categorizar", + "confirmDelete": "¿Está seguro que desea eliminar \"{{name}}\" ?", + "failedToDeleteHost": "Error al eliminar el host", + "failedToExportHost": "Error al exportar el host. Por favor, asegúrate de haber iniciado sesión y tener acceso a los datos del host.", + "jsonMustContainHosts": "JSON debe contener un array \"hosts\" o ser un array de hosts", + "noHostsInJson": "No hay hosts en el archivo JSON", + "maxHostsAllowed": "Máximo 100 hosts permitidos por importación", + "importCompleted": "Importación completada: {{success}} exitoso, {{failed}} falló", + "importFailed": "Error al importar", + "importError": "Error al importar", + "failedToImportJson": "Error al importar el archivo JSON", + "connectionDetails": "Detalles de la conexión", + "organization": "Organización", + "ipAddress": "Dirección IP", + "port": "Puerto", + "name": "Nombre", + "username": "Usuario", + "folder": "Carpeta", + "tags": "Etiquetas", + "pin": "Fijar", + "notes": "Notas", + "expirationDate": "Fecha de caducidad", + "passwordRequired": "La contraseña es necesaria cuando se utiliza la autenticación de contraseña", + "sshKeyRequired": "SSH Private Key es requerido cuando se utiliza autenticación de clave", + "keyTypeRequired": "Tipo de clave es necesario cuando se utiliza la autenticación de clave", + "mustSelectValidSshConfig": "Debe seleccionar una configuración SSH válida de la lista", + "addHost": "Añadir Host", + "editHost": "Editar Host", + "cloneHost": "Clonar Host", + "updateHost": "Actualizar Host", + "hostUpdatedSuccessfully": "Host \"{{name}}\" actualizado con éxito!", + "hostAddedSuccessfully": "Host \"{{name}}\" añadido correctamente!", + "hostDeletedSuccessfully": "Host \"{{name}}\" eliminado correctamente!", + "failedToSaveHost": "Error al guardar el host. Inténtalo de nuevo.", + "savingHost": "Guardando host...", + "updatingHost": "Actualizando host...", + "cloningHost": "Clonando host...", + "enableTerminal": "Activar Terminal", + "enableTerminalDesc": "Activar/desactivar la visibilidad del host en la pestaña Terminal", + "enableTunnel": "Activar túnel", + "enableTunnelDesc": "Activar/desactivar la visibilidad del host en la pestaña Túnel", + "enableFileManager": "Habilitar gestor de archivos", + "enableFileManagerDesc": "Activar/desactivar la visibilidad del host en la pestaña Administrador de archivos", + "enableDockerDesc": "Activar/desactivar la visibilidad del host en la pestaña Docker", + "enableDocker": "Activar Docker", + "defaultPath": "Ruta por defecto", + "defaultPathDesc": "Directorio predeterminado al abrir el gestor de archivos para este host", + "tunnelConnections": "Conexiones de túnel", + "connection": "Conexión", + "remove": "Eliminar", + "sourcePort": "Puerto de origen", + "sourcePortDesc": " (El canal se refiere a los detalles de la conexión actual en la pestaña General)", + "endpointPort": "Puerto final", + "endpointSshConfig": "Configuración SSSH de punto final", + "tunnelForwardDescription": "Este túnel redirigirá el tráfico desde el puerto {{sourcePort}} en la máquina fuente (los detalles de conexión actuales en la pestaña general) al puerto {{endpointPort}} en la máquina de endpoint.", + "maxRetries": "Reintentos máximos", + "maxRetriesDescription": "Número máximo de intentos de reintento para la conexión del túnel.", + "retryInterval": "Intervalo de reintento (segundos)", + "retryIntervalDescription": "Tiempo de espera entre intentos de reintento.", + "autoStartContainer": "Inicio automático en el lanzamiento del contenedor", + "autoStartDesc": "Iniciar automáticamente este túnel cuando el contenedor se ejecuta", + "addConnection": "Añadir conexión de túnel", + "sshpassRequired": "Sshpass requerido para la autenticación de contraseña", + "sshpassRequiredDesc": "Para la autenticación de contraseña en túneles, sshpass debe estar instalado en el sistema.", + "otherInstallMethods": "Otros métodos de instalación:", + "debianUbuntuEquivalent": "(Debian/Ubuntu) o el equivalente para su sistema operativo.", + "or": "o", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", - "sshServerConfigRequired": "SSH Server Configuration Required", - "sshServerConfigDesc": "For tunnel connections, the SSH server must be configured to allow port forwarding:", - "gatewayPortsYes": "to bind remote ports to all interfaces", - "allowTcpForwardingYes": "to enable port forwarding", - "permitRootLoginYes": "if using root user for tunneling", - "editSshConfig": "Edit /etc/ssh/sshd_config and restart SSH: sudo systemctl restart sshd", - "upload": "Upload", - "authentication": "Authentication", - "password": "Password", - "key": "Key", - "credential": "Credential", - "none": "None", - "selectCredential": "Select Credential", - "selectCredentialPlaceholder": "Choose a credential...", - "credentialRequired": "Credential is required when using credential authentication", - "credentialDescription": "Selecting a credential will overwrite the current username and use the credential's authentication details.", - "cannotChangeAuthAsSharedUser": "Cannot change authentication as shared user", - "sshPrivateKey": "SSH Private Key", - "keyPassword": "Key Password", - "keyType": "Key Type", - "autoDetect": "Auto-detect", + "windows": "Ventanas", + "sshServerConfigRequired": "Configuración del servidor SSH requerida", + "sshServerConfigDesc": "Para conexiones de túnel, el servidor SSH debe estar configurado para permitir el reenvío de puertos:", + "gatewayPortsYes": "para enlazar puertos remotos a todas las interfaces", + "allowTcpForwardingYes": "para activar el reenvío de puertos", + "permitRootLoginYes": "si se utiliza usuario root para túneles", + "editSshConfig": "Editar /ssh/sshd_config y reiniciar SSH: sudo systemctl restart sshd", + "upload": "Subir", + "authentication": "Autenticación", + "password": "Contraseña", + "key": "Clave", + "credential": "Credencial", + "none": "Ninguna", + "selectCredential": "Seleccionar credencial", + "selectCredentialPlaceholder": "Elija una credencial...", + "credentialRequired": "Se requiere credencial cuando se utiliza autenticación de credenciales", + "credentialDescription": "Seleccionar una credencial sobrescribirá el nombre de usuario actual y utilizará los detalles de autenticación de la credencial.", + "cannotChangeAuthAsSharedUser": "No se puede cambiar la autenticación como usuario compartido", + "sshPrivateKey": "Clave privada SSH", + "keyPassword": "Contraseña de clave", + "keyType": "Tipo de clave", + "autoDetect": "Autodetectar", "rsa": "RSA", "ed25519": "ED25519", "ecdsaNistP256": "ECDSA NIST P-256", @@ -885,1015 +885,1015 @@ "dsa": "DSA", "rsaSha2256": "RSA SHA2-256", "rsaSha2512": "RSA SHA2-512", - "uploadFile": "Upload File", - "pasteKey": "Paste Key", - "updateKey": "Update Key", - "existingKey": "Existing Key (click to change)", - "existingCredential": "Existing Credential (click to change)", - "addTagsSpaceToAdd": "add tags (space to add)", + "uploadFile": "Subir archivo", + "pasteKey": "Pegar clave", + "updateKey": "Actualizar clave", + "existingKey": "Tecla existente (clic para cambiar)", + "existingCredential": "Credencial existente (haga clic para cambiar)", + "addTagsSpaceToAdd": "añadir etiquetas (espacio a añadir)", "terminalBadge": "Terminal", - "tunnelBadge": "Tunnel", - "fileManagerBadge": "File Manager", + "tunnelBadge": "Túnel", + "fileManagerBadge": "Gestor de archivos", "general": "General", "terminal": "Terminal", - "tunnel": "Tunnel", - "fileManager": "File Manager", - "serverStats": "Server Stats", - "hostViewer": "Host Viewer", - "enableServerStats": "Enable Server Stats", - "enableServerStatsDesc": "Enable/disable server statistics collection for this host", - "displayItems": "Display Items", - "displayItemsDesc": "Choose which metrics to display on the server stats page", - "enableCpu": "CPU Usage", - "enableMemory": "Memory Usage", - "enableDisk": "Disk Usage", - "enableNetwork": "Network Statistics (Coming Soon)", - "enableProcesses": "Process Count (Coming Soon)", - "enableUptime": "Uptime (Coming Soon)", - "enableHostname": "Hostname (Coming Soon)", - "enableOs": "Operating System (Coming Soon)", - "customCommands": "Custom Commands (Coming Soon)", - "customCommandsDesc": "Define custom shutdown and reboot commands for this server", - "shutdownCommand": "Shutdown Command", - "rebootCommand": "Reboot Command", - "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The host will be moved to \"No Folder\".", - "removedFromFolder": "Host \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "Failed to remove host from folder", - "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "Failed to rename folder", - "editFolderAppearance": "Edit Folder Appearance", - "editFolderAppearanceDesc": "Customize the color and icon for folder", - "folderColor": "Folder Color", - "folderIcon": "Folder Icon", - "preview": "Preview", - "folderAppearanceUpdated": "Folder appearance updated successfully", - "failedToUpdateFolderAppearance": "Failed to update folder appearance", - "deleteAllHostsInFolder": "Delete All Hosts in Folder", - "confirmDeleteAllHostsInFolder": "Are you sure you want to delete all {{count}} hosts in folder \"{{folder}}\"? This action cannot be undone.", - "allHostsInFolderDeleted": "Deleted {{count}} hosts from folder \"{{folder}}\" successfully", - "failedToDeleteHostsInFolder": "Failed to delete hosts in folder", - "movedToFolder": "Host \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "Failed to move host to folder", - "clickToRenameFolder": "Click to rename folder", - "renameFolder": "Rename folder", - "removeFromFolder": "Remove from folder \"{{folder}}\"", - "editHostTooltip": "Edit host", - "deleteHostTooltip": "Delete host", - "exportHostTooltip": "Export host", - "cloneHostTooltip": "Clone host", - "clickToEditHost": "Click to edit host", - "dragToMoveBetweenFolders": "Drag to move between folders", - "exportedHostConfig": "Exported host configuration for {{name}}", - "openTerminal": "Open Terminal", - "openFileManager": "Open File Manager", - "openTunnels": "Open Tunnels", - "openServerDetails": "Open Server Details", - "statistics": "Statistics", - "enabledWidgets": "Enabled Widgets", - "openServerStats": "Open Server Stats", - "enabledWidgetsDesc": "Select which statistics widgets to display for this host", - "monitoringConfiguration": "Monitoring Configuration", - "monitoringConfigurationDesc": "Configure how often server statistics and status are checked", - "statusCheckEnabled": "Enable Status Monitoring", - "statusCheckEnabledDesc": "Check if the server is online or offline", - "statusCheckInterval": "Status Check Interval", - "statusCheckIntervalDesc": "How often to check if host is online (5s - 1h)", - "metricsEnabled": "Enable Metrics Monitoring", - "metricsEnabledDesc": "Collect CPU, RAM, disk, and other system statistics", - "metricsInterval": "Metrics Collection Interval", - "metricsIntervalDesc": "How often to collect server statistics (5s - 1h)", - "intervalSeconds": "seconds", - "intervalMinutes": "minutes", - "intervalValidation": "Monitoring intervals must be between 5 seconds and 1 hour (3600 seconds)", - "monitoringDisabled": "Server monitoring is disabled for this host", - "enableMonitoring": "Enable monitoring in Host Manager → Statistics tab", - "monitoringDisabledBadge": "Monitoring Off", - "statusMonitoring": "Status", - "metricsMonitoring": "Metrics", - "terminalCustomization": "Terminal Customization", - "appearance": "Appearance", - "behavior": "Behavior", - "advanced": "Advanced", - "themePreview": "Theme Preview", - "theme": "Theme", - "selectTheme": "Select theme", - "chooseColorTheme": "Choose a color theme for the terminal", - "fontFamily": "Font Family", + "tunnel": "Túnel", + "fileManager": "Gestor de archivos", + "serverStats": "Estadísticas del Servidor", + "hostViewer": "Visor de host", + "enableServerStats": "Habilitar estadísticas del servidor", + "enableServerStatsDesc": "Activar/desactivar la recopilación de estadísticas del servidor para este host", + "displayItems": "Mostrar elementos", + "displayItemsDesc": "Elegir qué métricas mostrar en la página de estadísticas del servidor", + "enableCpu": "Uso de CPU", + "enableMemory": "Uso de memoria", + "enableDisk": "Uso del disco", + "enableNetwork": "Estadísticas de la red (Próximamente)", + "enableProcesses": "Contador de Procesos (Próximamente)", + "enableUptime": "Actualización (Próximamente)", + "enableHostname": "Nombre de host (Próximamente)", + "enableOs": "Sistema Operativo (Próximamente)", + "customCommands": "Comandos Personalizados (Próximamente)", + "customCommandsDesc": "Definir comandos personalizados de apagado y reinicio para este servidor", + "shutdownCommand": "Comando de apagado", + "rebootCommand": "Reiniciar comando", + "confirmRemoveFromFolder": "¿Está seguro de que desea eliminar \"{{name}}\" de la carpeta \"{{folder}}\"? El host se moverá a \"Sin carpeta\".", + "removedFromFolder": "Host \"{{name}}\" eliminado de la carpeta correctamente", + "failedToRemoveFromFolder": "Error al eliminar el host de la carpeta", + "folderRenamed": "Carpeta \"{{oldName}}\" renombrada a \"{{newName}}\" correctamente", + "failedToRenameFolder": "Error al renombrar la carpeta", + "editFolderAppearance": "Editar apariencia de carpeta", + "editFolderAppearanceDesc": "Personalizar el color y el icono de la carpeta", + "folderColor": "Color de carpeta", + "folderIcon": "Icono de carpeta", + "preview": "Vista previa", + "folderAppearanceUpdated": "Apariencia de la carpeta actualizada correctamente", + "failedToUpdateFolderAppearance": "Error al actualizar la apariencia de la carpeta", + "deleteAllHostsInFolder": "Borrar todos los hosts de la carpeta", + "confirmDeleteAllHostsInFolder": "¿Está seguro de que desea eliminar todos los hosts {{count}} en la carpeta \"{{folder}}\"? Esta acción no se puede deshacer.", + "allHostsInFolderDeleted": "Eliminados con éxito los hosts {{count}} de la carpeta \"{{folder}}\"", + "failedToDeleteHostsInFolder": "Error al eliminar hosts en la carpeta", + "movedToFolder": "El host \"{{name}}\" se ha movido a \"{{folder}}\" con éxito", + "failedToMoveToFolder": "Error al mover el host a la carpeta", + "clickToRenameFolder": "Haga clic para renombrar carpeta", + "renameFolder": "Renombrar carpeta", + "removeFromFolder": "Eliminar de la carpeta \"{{folder}}\"", + "editHostTooltip": "Editar host", + "deleteHostTooltip": "Eliminar host", + "exportHostTooltip": "Exportar host", + "cloneHostTooltip": "Clonar host", + "clickToEditHost": "Clic para editar host", + "dragToMoveBetweenFolders": "Arrastre para mover entre carpetas", + "exportedHostConfig": "Configuración de host exportada para {{name}}", + "openTerminal": "Abrir Terminal", + "openFileManager": "Abrir gestor de archivos", + "openTunnels": "Abrir túneles", + "openServerDetails": "Abrir detalles del servidor", + "statistics": "Estadísticas", + "enabledWidgets": "Widgets habilitados", + "openServerStats": "Abrir estadísticas del servidor", + "enabledWidgetsDesc": "Seleccione qué widgets de estadísticas mostrar para este host", + "monitoringConfiguration": "Configuración de Monitoreo", + "monitoringConfigurationDesc": "Configurar con qué frecuencia se comprueban las estadísticas y el estado del servidor", + "statusCheckEnabled": "Activar monitorización de estado", + "statusCheckEnabledDesc": "Comprobar si el servidor está conectado o fuera de línea", + "statusCheckInterval": "Intervalo de verificación de estado", + "statusCheckIntervalDesc": "Con qué frecuencia comprobar si el host está en línea (5s - 1h)", + "metricsEnabled": "Habilitar monitoreo de métricas", + "metricsEnabledDesc": "Recoge CPU, RAM, disco y otras estadísticas del sistema", + "metricsInterval": "Intervalo de recolección de métricas", + "metricsIntervalDesc": "Con qué frecuencia recolectar estadísticas del servidor (5s - 1h)", + "intervalSeconds": "segundos", + "intervalMinutes": "minutos", + "intervalValidation": "Los intervalos de monitoreo deben estar entre 5 segundos y 1 hora (3600 segundos)", + "monitoringDisabled": "La monitorización del servidor está desactivada para este host", + "enableMonitoring": "Habilitar la monitorización en la pestaña Administrador de Equipos → Estadísticas", + "monitoringDisabledBadge": "Monitoreo apagado", + "statusMonitoring": "Estado", + "metricsMonitoring": "Métricas", + "terminalCustomization": "Personalización de Terminal", + "appearance": "Apariencia", + "behavior": "Comportamiento", + "advanced": "Avanzado", + "themePreview": "Vista previa del tema", + "theme": "Tema", + "selectTheme": "Seleccionar tema", + "chooseColorTheme": "Elija un tema de color para el terminal", + "fontFamily": "Familia de fuente", "selectFont": "Select font", - "selectFontDesc": "Select the font to use in the terminal", + "selectFontDesc": "Seleccione la fuente a usar en el terminal", "fontSize": "Font Size", - "fontSizeValue": "Font Size: {{value}}px", - "adjustFontSize": "Adjust the terminal font size", - "letterSpacing": "Letter Spacing", - "letterSpacingValue": "Letter Spacing: {{value}}px", - "adjustLetterSpacing": "Adjust spacing between characters", - "lineHeight": "Line Height", - "lineHeightValue": "Line Height: {{value}}", - "adjustLineHeight": "Adjust spacing between lines", - "cursorStyle": "Cursor Style", - "selectCursorStyle": "Select cursor style", - "cursorStyleBlock": "Block", - "cursorStyleUnderline": "Underline", - "cursorStyleBar": "Bar", - "chooseCursorAppearance": "Choose the cursor appearance", - "cursorBlink": "Cursor Blink", - "enableCursorBlink": "Enable cursor blinking animation", - "scrollbackBuffer": "Scrollback Buffer", - "scrollbackBufferValue": "Scrollback Buffer: {{value}} lines", - "scrollbackBufferDesc": "Number of lines to keep in scrollback history", - "bellStyle": "Bell Style", - "selectBellStyle": "Select bell style", - "bellStyleNone": "None", - "bellStyleSound": "Sound", - "bellStyleVisual": "Visual", - "bellStyleBoth": "Both", - "bellStyleDesc": "How to handle terminal bell (BEL character, \\x07). Programs trigger this when completing tasks, encountering errors, or for notifications. \"Sound\" plays an audio beep, \"Visual\" flashes the screen briefly, \"Both\" does both, \"None\" disables bell alerts.", - "rightClickSelectsWord": "Right Click Selects Word", - "rightClickSelectsWordDesc": "Right-clicking selects the word under cursor", - "fastScrollModifier": "Fast Scroll Modifier", - "selectModifier": "Select modifier", + "fontSizeValue": "Tamaño de fuente: {{value}}px", + "adjustFontSize": "Ajustar el tamaño de fuente del terminal", + "letterSpacing": "Espacio de letras", + "letterSpacingValue": "Espacio de letras: {{value}}px", + "adjustLetterSpacing": "Ajustar espacio entre caracteres", + "lineHeight": "Altura de línea", + "lineHeightValue": "Altura de línea: {{value}}", + "adjustLineHeight": "Ajustar espacio entre líneas", + "cursorStyle": "Estilo del cursor", + "selectCursorStyle": "Seleccionar estilo de cursor", + "cursorStyleBlock": "Bloque", + "cursorStyleUnderline": "Bajo línea", + "cursorStyleBar": "Barra", + "chooseCursorAppearance": "Elegir la apariencia del cursor", + "cursorBlink": "Bloque de cursor", + "enableCursorBlink": "Activar animación parpadeante del cursor", + "scrollbackBuffer": "Búfer de desplazamiento", + "scrollbackBufferValue": "Búfer de desplazamiento: {{value}} líneas", + "scrollbackBufferDesc": "Número de líneas a mantener en el historial de desplazamiento", + "bellStyle": "Estilo de Campanilla", + "selectBellStyle": "Seleccionar estilo de campana", + "bellStyleNone": "Ninguna", + "bellStyleSound": "Sonido", + "bellStyleVisual": "Visto", + "bellStyleBoth": "Ambos", + "bellStyleDesc": "Cómo manejar la campana de terminal (carácter BEL, \\x07). Los programas lo activan al completar tareas, encontrar errores, o para notificaciones. \"Sonido\" reproduce un pitido de audio, \"Visual\" parpadea la pantalla brevemente, \"Both\" hace ambos, \"Ninguno\" deshabilita las alertas de campamento.", + "rightClickSelectsWord": "Haga clic derecho selecciona palabra", + "rightClickSelectsWordDesc": "Clic derecho selecciona la palabra bajo el cursor", + "fastScrollModifier": "Modificador de Desplazamiento Rápido", + "selectModifier": "Seleccionar modificador", "modifierAlt": "Alt", "modifierCtrl": "Ctrl", - "modifierShift": "Shift", - "fastScrollModifierDesc": "Modifier key for fast scrolling", - "fastScrollSensitivity": "Fast Scroll Sensitivity", - "fastScrollSensitivityValue": "Fast Scroll Sensitivity: {{value}}", - "fastScrollSensitivityDesc": "Scroll speed multiplier when modifier is held", - "minimumContrastRatio": "Minimum Contrast Ratio", - "minimumContrastRatioValue": "Minimum Contrast Ratio: {{value}}", - "minimumContrastRatioDesc": "Automatically adjust colors for better readability", - "sshAgentForwarding": "SSH Agent Forwarding", - "sshAgentForwardingDesc": "Forward SSH authentication agent to remote host", - "backspaceMode": "Backspace Mode", - "selectBackspaceMode": "Select backspace mode", + "modifierShift": "Cambio", + "fastScrollModifierDesc": "Tecla modificadora para desplazamiento rápido", + "fastScrollSensitivity": "Sensibilidad de desplazamiento rápido", + "fastScrollSensitivityValue": "Sensibilidad de desplazamiento rápido: {{value}}", + "fastScrollSensitivityDesc": "Multiplicador de velocidad de desplazamiento cuando se mantenga el modificador", + "minimumContrastRatio": "Ratio de contraste mínimo", + "minimumContrastRatioValue": "Ratio mínimo de contraste: {{value}}", + "minimumContrastRatioDesc": "Ajuste automáticamente los colores para una mejor legibilidad", + "sshAgentForwarding": "Desvío del agente SSH", + "sshAgentForwardingDesc": "Reenviar el agente de autenticación SSSH al host remoto", + "backspaceMode": "Modo Backspace", + "selectBackspaceMode": "Seleccionar modo de retroceso", "backspaceModeNormal": "Normal (DEL)", "backspaceModeControlH": "Control-H (^H)", - "backspaceModeDesc": "Backspace key behavior for compatibility", - "startupSnippet": "Startup Snippet", - "selectSnippet": "Select snippet", - "searchSnippets": "Search snippets...", - "snippetNone": "None", - "noneAuthTitle": "Keyboard-Interactive Authentication", - "noneAuthDescription": "This authentication method will use keyboard-interactive authentication when connecting to the SSH server.", - "noneAuthDetails": "Keyboard-interactive authentication allows the server to prompt you for credentials during connection. This is useful for servers that require multi-factor authentication or if you do not want to save credentials locally.", - "forceKeyboardInteractive": "Force Keyboard-Interactive", - "forceKeyboardInteractiveDesc": "Forces the use of keyboard-interactive authentication. This is sometimes required for servers that use Two-Factor Authentication (TOTP/2FA).", - "overrideCredentialUsername": "Override Credential Username", - "overrideCredentialUsernameDesc": "Use a different username than the one stored in the credential. This allows you to use the same credential with different usernames.", - "jumpHosts": "Jump Hosts", - "jumpHostsDescription": "Jump hosts (also known as bastion hosts) allow you to connect to a target server through one or more intermediate servers. This is useful for accessing servers behind firewalls or in private networks.", - "jumpHostChain": "Jump Host Chain", - "addJumpHost": "Add Jump Host", - "selectServer": "Select Server", - "searchServers": "Search servers...", - "noServerFound": "No server found", - "jumpHostsOrder": "Connections will be made in order: Jump Host 1 → Jump Host 2 → ... → Target Server", - "socks5Proxy": "SOCKS5 Proxy", - "socks5Description": "Configure SOCKS5 proxy for SSH connection. All traffic will be routed through the specified proxy server.", - "enableSocks5": "Enable SOCKS5 Proxy", - "enableSocks5Description": "Use SOCKS5 proxy for this SSH connection", - "socks5Host": "Proxy Host", - "socks5Port": "Proxy Port", - "socks5Username": "Proxy Username", - "socks5Password": "Proxy Password", - "socks5UsernameOptional": "Optional: leave empty if proxy doesn't require authentication", - "socks5PasswordOptional": "Optional: leave empty if proxy doesn't require authentication", - "socks5ProxyChain": "Proxy Chain", - "socks5ProxyChainDescription": "Configure a chain of SOCKS proxies. Each proxy in the chain will connect through the previous one.", - "socks5ProxyMode": "Proxy Mode", - "socks5UseSingleProxy": "Use Single Proxy", - "socks5UseProxyChain": "Use Proxy Chain", - "socks5UsePreset": "Use Saved Preset", - "socks5SelectPreset": "Select Preset", - "socks5ManagePresets": "Manage Presets", + "backspaceModeDesc": "Comportamiento de teclas de espacio trasero por compatibilidad", + "startupSnippet": "Fragmento de inicio", + "selectSnippet": "Seleccionar fragmento", + "searchSnippets": "Buscar fragmentos...", + "snippetNone": "Ninguna", + "noneAuthTitle": "Autenticación interactiva del teclado", + "noneAuthDescription": "Este método de autenticación utilizará la autenticación interactiva del teclado cuando se conecte al servidor SSH.", + "noneAuthDetails": "La autenticación interactiva de teclado permite al servidor pedir credenciales durante la conexión. Esto es útil para servidores que requieren autenticación de múltiples factores o si no desea guardar las credenciales localmente.", + "forceKeyboardInteractive": "Forzar interactivo del teclado", + "forceKeyboardInteractiveDesc": "Fuerza el uso de autenticación interactiva de teclado. Esto a veces es necesario para servidores que utilizan Autenticación de Doble Factor (TOTP/2FA).", + "overrideCredentialUsername": "Reemplazar nombre de usuario de credenciales", + "overrideCredentialUsernameDesc": "Utilice un nombre de usuario diferente al almacenado en la credencial. Esto le permite usar la misma credencial con diferentes nombres de usuario.", + "jumpHosts": "Equipos de salto", + "jumpHostsDescription": "Los hosts de salto (también conocidos como hosts de bastion) le permiten conectarse a un servidor de destino a través de uno o más servidores intermedios. Esto es útil para acceder a servidores detrás de fuegos o en redes privadas.", + "jumpHostChain": "Cadena de Host de Salto", + "addJumpHost": "Añadir Host de Salto", + "selectServer": "Seleccionar Servidor", + "searchServers": "Buscar servidores...", + "noServerFound": "Servidor no encontrado", + "jumpHostsOrder": "Las conexiones se harán por orden: Salto Host 1 → Salto Host 2 → ... → Servidor de destino", + "socks5Proxy": "Proxy SOCKS5", + "socks5Description": "Configure el proxy SOCKS5 para conexión SSH. Todo el tráfico se enrutará a través del servidor proxy especificado.", + "enableSocks5": "Habilitar proxy SOCKS5", + "enableSocks5Description": "Usar proxy SOCKS5 para esta conexión SSH", + "socks5Host": "Host del proxy", + "socks5Port": "Puerto proxy", + "socks5Username": "Usuario del proxy", + "socks5Password": "Contraseña del proxy", + "socks5UsernameOptional": "Opcional: dejar vacío si el proxy no requiere autenticación", + "socks5PasswordOptional": "Opcional: dejar vacío si el proxy no requiere autenticación", + "socks5ProxyChain": "Cadena de proxy", + "socks5ProxyChainDescription": "Configurar una cadena de proxies SOCKS. Cada proxy de la cadena se conectará a través del anterior.", + "socks5ProxyMode": "Modo proxy", + "socks5UseSingleProxy": "Usar un proxy único", + "socks5UseProxyChain": "Usar cadena de proxy", + "socks5UsePreset": "Usar ajuste guardado", + "socks5SelectPreset": "Seleccionar ajuste", + "socks5ManagePresets": "Administrar ajustes", "socks5ProxyNode": "Proxy {{number}}", - "socks5AddProxy": "Add Proxy to Chain", - "socks5RemoveProxy": "Remove Proxy", - "socks5ProxyType": "Proxy Type", - "socks5SaveAsPreset": "Save as Preset", - "socks5SavePresetTitle": "Save Proxy Chain as Preset", - "socks5SavePresetDescription": "Save the current proxy chain configuration as a reusable preset", - "socks5PresetName": "Preset Name", - "socks5PresetDescription": "Description (optional)", - "socks5PresetCreated": "Proxy chain preset created", - "socks5PresetUpdated": "Proxy chain preset updated", - "socks5PresetDeleted": "Proxy chain preset deleted", - "socks5PresetSaved": "Preset \"{{name}}\" saved successfully", - "socks5PresetSaveError": "Failed to save preset", - "socks5PresetNameRequired": "Preset name is required", - "socks5EmptyChainError": "Cannot save an empty proxy chain", - "socks5ProxyChainEmpty": "Add at least one proxy to the chain", - "socks5HostDescription": "Hostname or IP address of the SOCKS proxy server", - "socks5PortDescription": "Port number of the SOCKS proxy server (default: 1080)", - "addProxyNode": "Add Proxy Node", - "noProxyNodes": "No proxy nodes configured. Click 'Add Proxy Node' to add one.", - "proxyNode": "Proxy Node", - "proxyType": "Proxy Type", - "quickActions": "Quick Actions", - "quickActionsDescription": "Quick actions allow you to create custom buttons that execute SSH snippets on this server. These buttons will appear at the top of the Server Stats page for quick access.", - "quickActionsList": "Quick Actions List", - "addQuickAction": "Add Quick Action", - "quickActionName": "Action name", - "noSnippetFound": "No snippet found", - "quickActionsOrder": "Quick action buttons will appear in the order listed above on the Server Stats page", - "advancedAuthSettings": "Advanced Authentication Settings", - "sudoPasswordAutoFill": "Sudo Password Auto-Fill", - "sudoPasswordAutoFillDesc": "Automatically offer to insert SSH password when sudo prompts for password", - "sudoPassword": "Sudo Password", - "sudoPasswordDesc": "Optional password for sudo commands (useful with key authentication)", + "socks5AddProxy": "Añadir proxy a la cadena", + "socks5RemoveProxy": "Eliminar proxy", + "socks5ProxyType": "Tipo de proxy", + "socks5SaveAsPreset": "Guardar como ajuste", + "socks5SavePresetTitle": "Guardar cadena de proxy como ajuste", + "socks5SavePresetDescription": "Guardar la configuración actual de la cadena proxy como un preset reutilizable", + "socks5PresetName": "Nombre predefinido", + "socks5PresetDescription": "Descripción (opcional)", + "socks5PresetCreated": "Preset de cadena de proxy creado", + "socks5PresetUpdated": "Preset de cadena de proxy actualizado", + "socks5PresetDeleted": "Preajuste de cadena de proxy eliminado", + "socks5PresetSaved": "Preajuste \"{{name}}\" guardado correctamente", + "socks5PresetSaveError": "No se pudo guardar el ajuste predefinido", + "socks5PresetNameRequired": "Se requiere nombre predefinido", + "socks5EmptyChainError": "No se puede guardar una cadena de proxy vacía", + "socks5ProxyChainEmpty": "Añadir al menos un proxy a la cadena", + "socks5HostDescription": "Nombre de host o dirección IP del servidor proxy SOCKS", + "socks5PortDescription": "Número de puerto del servidor proxy SOCKS (por defecto: 1080)", + "addProxyNode": "Añadir nodo proxy", + "noProxyNodes": "No hay nodos proxy configurados. Haga clic en 'Añadir nodo proxy' para agregar uno.", + "proxyNode": "Nodo proxy", + "proxyType": "Tipo de proxy", + "quickActions": "Acciones rápidas", + "quickActionsDescription": "Las acciones rápidas le permiten crear botones personalizados que ejecuten fragmentos SSH en este servidor. Estos botones aparecerán en la parte superior de la página de estadísticas del servidor para un acceso rápido.", + "quickActionsList": "Lista de acciones rápidas", + "addQuickAction": "Añadir acción rápida", + "quickActionName": "Nombre de acción", + "noSnippetFound": "No se encontró un fragmento", + "quickActionsOrder": "Los botones de acción rápida aparecerán en el orden anterior en la página de estadísticas del servidor", + "advancedAuthSettings": "Configuración de autenticación avanzada", + "sudoPasswordAutoFill": "Auto-relleno de contraseña de Sudo", + "sudoPasswordAutoFillDesc": "Ofrecer automáticamente para insertar la contraseña SSH cuando sudo solicita la contraseña", + "sudoPassword": "Contraseña Sudo", + "sudoPasswordDesc": "Contraseña opcional para comandos sudo (útil con autenticación de clave)", "socks4": "SOCKS4", "socks5": "SOCKS5", - "executeSnippetOnConnect": "Execute a snippet when the terminal connects", + "executeSnippetOnConnect": "Ejecutar un fragmento cuando el terminal se conecta", "autoMosh": "Auto-MOSH", - "autoMoshDesc": "Automatically run MOSH command on connect", - "moshCommand": "MOSH Command", - "moshCommandDesc": "The MOSH command to execute", - "environmentVariables": "Environment Variables", - "environmentVariablesDesc": "Set custom environment variables for the terminal session", - "variableName": "Variable name", - "variableValue": "Value", - "addVariable": "Add Variable", - "docker": "Docker", - "openDocker": "Open Docker", - "notEnabled": "Docker is not enabled for this host. Enable it in Host Settings to use Docker features.", - "validating": "Validating Docker...", + "autoMoshDesc": "Ejecutar automáticamente el comando MOSH al conectar", + "moshCommand": "MOSH comando", + "moshCommandDesc": "El comando MOSH a ejecutar", + "environmentVariables": "Variables de entorno", + "environmentVariablesDesc": "Establecer variables de entorno personalizadas para la sesión de terminal", + "variableName": "Nombre variable", + "variableValue": "Valor", + "addVariable": "Añadir variable", + "docker": "Doctor", + "openDocker": "Abrir Docker", + "notEnabled": "Docker no está habilitado para este host. Actívalo en la configuración del host para usar las funciones de Docker.", + "validating": "Validando Docker...", "error": "Error", - "errorCode": "Error code: {{code}}", + "errorCode": "Código de error: {{code}}", "version": "Docker v{{version}}", - "current": "Current", - "used_limit": "Used / Limit", - "percentage": "Percentage", + "current": "Actual", + "used_limit": "Usado / Límite", + "percentage": "Porcentaje", "input": "Input", - "output": "Output", - "read": "Read", - "write": "Write", + "output": "Salida", + "read": "Leer", + "write": "Escribir", "pids": "PIDs", "id": "ID", - "state": "State", - "console": "Console", - "containerMustBeRunning": "Container must be running to connect to console", - "authenticationRequired": "Authentication required", - "connectedTo": "Connected to {{containerName}}", - "disconnected": "Disconnected", - "consoleError": "Console error", + "state": "Estado", + "console": "Consola", + "containerMustBeRunning": "El contenedor debe estar ejecutándose para conectarse a la consola", + "authenticationRequired": "Autenticación requerida", + "connectedTo": "Conectado a {{containerName}}", + "disconnected": "Desconectado", + "consoleError": "Error de consola", "errorMessage": "Error: {{message}}", - "failedToConnect": "Failed to connect to console", - "disconnectedFromContainer": "Disconnected from container console.", - "containerNotRunning": "Container is not running", - "startContainerToAccess": "Start the container to access the console", - "selectShell": "Select shell", + "failedToConnect": "Error al conectar a la consola", + "disconnectedFromContainer": "Desconectado de la consola de contenedores.", + "containerNotRunning": "El contenedor no se está ejecutando", + "startContainerToAccess": "Iniciar el contenedor para acceder a la consola", + "selectShell": "Seleccionar shell", "bash": "Bash", "sh": "Sh", - "ash": "Ash", - "connecting": "Connecting...", - "connect": "Connect", - "disconnect": "Disconnect", - "notConnected": "Not connected", - "clickToConnect": "Click Connect to start an interactive shell", - "connectingTo": "Connecting to {{containerName}}...", - "containerMustBeRunningToViewStats": "Container must be running to view stats", - "failedToFetchStats": "Failed to fetch stats", - "noContainersFound": "No containers found", - "noContainersFoundHint": "Start by creating containers on your server", - "searchPlaceholder": "Search by name, image, or ID...", - "filterByStatusPlaceholder": "Filter by status", - "allContainersCount": "All ({{count}})", + "ash": "Ceniza", + "connecting": "Conectando...", + "connect": "Conectar", + "disconnect": "Desconectar", + "notConnected": "No conectado", + "clickToConnect": "Haga clic en Conectar para iniciar una shell interactiva", + "connectingTo": "Conectando a {{containerName}}...", + "containerMustBeRunningToViewStats": "El contenedor debe estar ejecutándose para ver las estadísticas", + "failedToFetchStats": "Error al obtener las estadísticas", + "noContainersFound": "No hay contenedores", + "noContainersFoundHint": "Empezar por crear contenedores en tu servidor", + "searchPlaceholder": "Buscar por nombre, imagen o ID...", + "filterByStatusPlaceholder": "Filtrar por estado", + "allContainersCount": "Todos ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "No containers match your filters", - "noContainersMatchFiltersHint": "Try adjusting your search or filter", - "containerStarted": "Container {{name}} started", - "failedToStartContainer": "Failed to start container: {{error}}", - "containerStopped": "Container {{name}} stopped", - "failedToStopContainer": "Failed to stop container: {{error}}", - "containerRestarted": "Container {{name}} restarted", - "failedToRestartContainer": "Failed to restart container: {{error}}", - "containerUnpaused": "Container {{name}} unpaused", - "containerPaused": "Container {{name}} paused", - "failedToTogglePauseContainer": "Failed to {{action}} container: {{error}}", - "containerRemoved": "Container {{name}} removed", - "failedToRemoveContainer": "Failed to remove container: {{error}}", - "image": "Image:", + "noContainersMatchFilters": "Ningún contenedor coincide con sus filtros", + "noContainersMatchFiltersHint": "Intenta ajustar tu búsqueda o filtro", + "containerStarted": "Contenedor {{name}} iniciado", + "failedToStartContainer": "No se pudo iniciar el contenedor: {{error}}", + "containerStopped": "Contenedor {{name}} detenido", + "failedToStopContainer": "No se pudo detener el contenedor: {{error}}", + "containerRestarted": "Contenedor {{name}} reiniciado", + "failedToRestartContainer": "No se pudo reiniciar el contenedor: {{error}}", + "containerUnpaused": "Contenedor {{name}} despausado", + "containerPaused": "Contenedor {{name}} en pausa", + "failedToTogglePauseContainer": "Error al contenedor {{action}} : {{error}}", + "containerRemoved": "Contenedor {{name}} eliminado", + "failedToRemoveContainer": "No se pudo eliminar el contenedor: {{error}}", + "image": "Imagen:", "idLabel": "ID:", - "ports": "Ports:", - "noPorts": "None", - "created": "Created:", - "start": "Start", - "stop": "Stop", + "ports": "Puertos:", + "noPorts": "Ninguna", + "created": "Creado:", + "start": "Comenzar", + "stop": "Parar", "unpause": "Unpause", - "pause": "Pause", - "restart": "Restart", - "removeContainer": "Remove Container", - "confirmRemoveContainer": "Are you sure you want to remove container \"{{name}}\"?", - "runningContainerWarning": "Warning: This container is currently running and will be force-removed.", - "removing": "Removing:", - "containerNotFound": "Container not found", - "backToList": "Back to list", - "logs": "Logs", - "stats": "Stats", - "consoleTab": "Console", - "failedToFetchLogs": "Failed to fetch logs: {{error}}", - "failedToDownloadLogs": "Failed to download logs: {{error}}", - "linesToShow": "Lines to show", - "last50Lines": "Last 50 lines", - "last100Lines": "Last 100 lines", - "last500Lines": "Last 500 lines", - "last1000Lines": "Last 1000 lines", - "allLogs": "All logs", - "showTimestamps": "Show Timestamps", - "autoRefresh": "Auto Refresh", - "filterLogsPlaceholder": "Filter logs...", - "noLogsAvailable": "No logs available" + "pause": "Pausa", + "restart": "Reiniciar", + "removeContainer": "Eliminar Contenedor", + "confirmRemoveContainer": "¿Está seguro de que desea eliminar el contenedor \"{{name}}\"?", + "runningContainerWarning": "Advertencia: Este contenedor se está ejecutando y será eliminado por la fuerza.", + "removing": "Eliminando:", + "containerNotFound": "Contenedor no encontrado", + "backToList": "Volver a la lista", + "logs": "Registros", + "stats": "Estadísticas", + "consoleTab": "Consola", + "failedToFetchLogs": "Error al recuperar los registros: {{error}}", + "failedToDownloadLogs": "Error al descargar los registros: {{error}}", + "linesToShow": "Líneas a mostrar", + "last50Lines": "Últimas 50 líneas", + "last100Lines": "Últimas 100 líneas", + "last500Lines": "Últimas 500 líneas", + "last1000Lines": "Últimas 1000 líneas", + "allLogs": "Todos los registros", + "showTimestamps": "Mostrar marcas de tiempo", + "autoRefresh": "Actualización automática", + "filterLogsPlaceholder": "Filtrar registros...", + "noLogsAvailable": "No hay registros disponibles" }, "terminal": { "title": "Terminal", - "connect": "Connect to Host", - "disconnect": "Disconnect", - "clear": "Clear", - "copy": "Copy", - "paste": "Paste", - "find": "Find", - "fullscreen": "Fullscreen", - "splitHorizontal": "Split Horizontal", - "splitVertical": "Split Vertical", - "closePanel": "Close Panel", - "reconnect": "Reconnect", - "sessionEnded": "Session Ended", - "connectionLost": "Connection Lost", + "connect": "Conectar al Host", + "disconnect": "Desconectar", + "clear": "Claro", + "copy": "Copiar", + "paste": "Pegar", + "find": "Buscar", + "fullscreen": "Pantalla completa", + "splitHorizontal": "Dividir horizontal", + "splitVertical": "Dividir vertical", + "closePanel": "Cerrar panel", + "reconnect": "Volver a conectar", + "sessionEnded": "Sesión finalizada", + "connectionLost": "Conexión perdida", "error": "ERROR: {{message}}", - "disconnected": "Disconnected", - "connectionClosed": "Connection closed", - "connectionError": "Connection error: {{message}}", - "connected": "Connected", - "sshConnected": "SSH connection established", - "authError": "Authentication failed: {{message}}", - "unknownError": "Unknown error occurred", - "messageParseError": "Failed to parse server message", - "websocketError": "WebSocket connection error", - "connecting": "Connecting...", - "reconnecting": "Reconnecting... ({{attempt}}/{{max}})", - "reconnected": "Reconnected successfully", - "maxReconnectAttemptsReached": "Maximum reconnection attempts reached", - "connectionTimeout": "Connection timeout", + "disconnected": "Desconectado", + "connectionClosed": "Conexión cerrada", + "connectionError": "Error de conexión: {{message}}", + "connected": "Conectado", + "sshConnected": "Conexión SSH establecida", + "authError": "Autenticación fallida: {{message}}", + "unknownError": "Ocurrió un error desconocido", + "messageParseError": "Error al analizar el mensaje del servidor", + "websocketError": "Error de conexión WebSocket", + "connecting": "Conectando...", + "reconnecting": "Reconectando... ({{attempt}}/{{max}})", + "reconnected": "Reconectado correctamente", + "maxReconnectAttemptsReached": "Máximo de intentos de reconexión alcanzados", + "connectionTimeout": "Tiempo de conexión agotado", "terminalTitle": "Terminal - {{host}}", "terminalWithPath": "Terminal - {{host}}:{{path}}", - "runTitle": "Running {{command}} - {{host}}", - "totpRequired": "Two-Factor Authentication Required", - "totpCodeLabel": "Verification Code", + "runTitle": "Ejecutando {{command}} - {{host}}", + "totpRequired": "Autenticación de dos factores requerida", + "totpCodeLabel": "Código de verificación", "totpPlaceholder": "000000", - "totpVerify": "Verify", - "sudoPasswordPopupTitle": "Insert Password?", - "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", + "totpVerify": "Verificar", + "sudoPasswordPopupTitle": "¿Insertar contraseña?", + "sudoPasswordPopupHint": "Presione Enter para insertar, Esc para descartar", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Dismiss" + "sudoPasswordPopupDismiss": "Descartar" }, "fileManager": { - "title": "File Manager", - "file": "File", - "folder": "Folder", - "connectToSsh": "Connect to SSH to use file operations", - "uploadFile": "Upload File", - "downloadFile": "Download", - "extractArchive": "Extract Archive", - "extractingArchive": "Extracting {{name}}...", - "archiveExtractedSuccessfully": "{{name}} extracted successfully", - "extractFailed": "Extract failed", - "compressFile": "Compress File", - "compressFiles": "Compress Files", - "compressFilesDesc": "Compress {{count}} items into an archive", - "archiveName": "Archive Name", - "enterArchiveName": "Enter archive name...", - "compressionFormat": "Compression Format", - "selectedFiles": "Selected files", - "andMoreFiles": "and {{count}} more...", - "compress": "Compress", - "compressingFiles": "Compressing {{count}} items into {{name}}...", - "filesCompressedSuccessfully": "{{name}} created successfully", - "compressFailed": "Compression failed", - "edit": "Edit", - "preview": "Preview", - "previous": "Previous", - "next": "Next", - "pageXOfY": "Page {{current}} of {{total}}", - "zoomOut": "Zoom Out", - "zoomIn": "Zoom In", - "newFile": "New File", - "newFolder": "New Folder", - "rename": "Rename", - "renameItem": "Rename Item", - "deleteItem": "Delete Item", - "currentPath": "Current Path", - "uploadFileTitle": "Upload File", - "maxFileSize": "Max: 1GB (JSON) / 5GB (Binary) - Large files supported", - "removeFile": "Remove File", - "clickToSelectFile": "Click to select a file", - "chooseFile": "Choose File", - "uploading": "Uploading...", - "downloading": "Downloading...", - "uploadingFile": "Uploading {{name}}...", - "uploadingLargeFile": "Uploading large file {{name}} ({{size}})...", - "downloadingFile": "Downloading {{name}}...", - "creatingFile": "Creating {{name}}...", - "creatingFolder": "Creating {{name}}...", - "deletingItem": "Deleting {{type}} {{name}}...", - "renamingItem": "Renaming {{type}} {{oldName}} to {{newName}}...", - "createNewFile": "Create New File", - "fileName": "File Name", - "creating": "Creating...", - "createFile": "Create File", - "createNewFolder": "Create New Folder", - "folderName": "Folder Name", - "createFolder": "Create Folder", - "warningCannotUndo": "Warning: This action cannot be undone", - "itemPath": "Item Path", - "thisIsDirectory": "This is a directory (will delete recursively)", - "deleting": "Deleting...", - "currentPathLabel": "Current Path", - "newName": "New Name", - "thisIsDirectoryRename": "This is a directory", - "renaming": "Renaming...", - "fileUploadedSuccessfully": "File \"{{name}}\" uploaded successfully", - "failedToUploadFile": "Failed to upload file", - "fileDownloadedSuccessfully": "File \"{{name}}\" downloaded successfully", - "failedToDownloadFile": "Failed to download file", - "noFileContent": "No file content received", - "filePath": "File Path", - "fileCreatedSuccessfully": "File \"{{name}}\" created successfully", - "failedToCreateFile": "Failed to create file", - "folderCreatedSuccessfully": "Folder \"{{name}}\" created successfully", - "failedToCreateFolder": "Failed to create folder", - "failedToCreateItem": "Failed to create item", - "operationFailed": "{{operation}} operation failed for {{name}}: {{error}}", - "failedToResolveSymlink": "Failed to resolve symlink", - "itemDeletedSuccessfully": "{{type}} deleted successfully", - "itemsDeletedSuccessfully": "{{count}} items deleted successfully", - "failedToDeleteItems": "Failed to delete items", - "dragFilesToUpload": "Drop files here to upload", - "emptyFolder": "This folder is empty", - "itemCount": "{{count}} items", - "selectedCount": "{{count}} selected", - "searchFiles": "Search files...", - "upload": "Upload", - "selectHostToStart": "Select a host to start file management", - "failedToConnect": "Failed to connect to SSH", - "failedToLoadDirectory": "Failed to load directory", - "noSSHConnection": "No SSH connection available", - "enterFolderName": "Enter folder name:", - "enterFileName": "Enter file name:", - "copy": "Copy", - "cut": "Cut", - "paste": "Paste", - "copyPath": "Copy Path", - "copyPaths": "Copy Paths", - "delete": "Delete", - "properties": "Properties", - "refresh": "Refresh", - "downloadFiles": "Download {{count}} files to Browser", - "copyFiles": "Copy {{count}} items", - "cutFiles": "Cut {{count}} items", - "deleteFiles": "Delete {{count}} items", - "filesCopiedToClipboard": "{{count}} items copied to clipboard", - "filesCutToClipboard": "{{count}} items cut to clipboard", - "pathCopiedToClipboard": "Path copied to clipboard", + "title": "Gestor de archivos", + "file": "Fichero", + "folder": "Carpeta", + "connectToSsh": "Conectar a SSH para usar operaciones de archivo", + "uploadFile": "Subir archivo", + "downloadFile": "Descargar", + "extractArchive": "Extraer archivo", + "extractingArchive": "Extrayendo {{name}}...", + "archiveExtractedSuccessfully": "{{name}} extraído con éxito", + "extractFailed": "Error al extraer", + "compressFile": "Comprimir archivo", + "compressFiles": "Comprimir archivos", + "compressFilesDesc": "Comprimir elementos {{count}} en un archivo", + "archiveName": "Nombre de archivo", + "enterArchiveName": "Introduzca el nombre del archivo...", + "compressionFormat": "Formato de compresión", + "selectedFiles": "Archivos seleccionados", + "andMoreFiles": "y {{count}} más...", + "compress": "Comprimir", + "compressingFiles": "Comprimiendo objetos {{count}} en {{name}}...", + "filesCompressedSuccessfully": "{{name}} creado con éxito", + "compressFailed": "Compresión fallida", + "edit": "Editar", + "preview": "Vista previa", + "previous": "Anterior", + "next": "Siguiente", + "pageXOfY": "Página {{current}} de {{total}}", + "zoomOut": "Apagar", + "zoomIn": "Acercar en", + "newFile": "Nuevo archivo", + "newFolder": "Nueva carpeta", + "rename": "Renombrar", + "renameItem": "Renombrar objeto", + "deleteItem": "Eliminar elemento", + "currentPath": "Ruta actual", + "uploadFileTitle": "Subir archivo", + "maxFileSize": "Máx: 1GB (JSON) / 5GB (Binary) - Grandes archivos soportados", + "removeFile": "Quitar archivo", + "clickToSelectFile": "Haga clic para seleccionar un archivo", + "chooseFile": "Elegir archivo", + "uploading": "Subiendo...", + "downloading": "Descargando...", + "uploadingFile": "Subiendo {{name}}...", + "uploadingLargeFile": "Subiendo archivo grande {{name}} ({{size}})...", + "downloadingFile": "Descargando {{name}}...", + "creatingFile": "Creando {{name}}...", + "creatingFolder": "Creando {{name}}...", + "deletingItem": "Eliminando {{type}} {{name}}...", + "renamingItem": "Renombrando {{type}} {{oldName}} a {{newName}}...", + "createNewFile": "Crear nuevo archivo", + "fileName": "Nombre del archivo", + "creating": "Creando...", + "createFile": "Crear archivo", + "createNewFolder": "Crear nueva carpeta", + "folderName": "Nombre de carpeta", + "createFolder": "Crear carpeta", + "warningCannotUndo": "Advertencia: Esta acción no se puede deshacer", + "itemPath": "Ruta del elemento", + "thisIsDirectory": "Este es un directorio (se eliminará recursivamente)", + "deleting": "Eliminando...", + "currentPathLabel": "Ruta actual", + "newName": "Nuevo nombre", + "thisIsDirectoryRename": "Este es un directorio", + "renaming": "Renombrando...", + "fileUploadedSuccessfully": "Archivo \"{{name}}\" subido correctamente", + "failedToUploadFile": "Error al subir el archivo", + "fileDownloadedSuccessfully": "Archivo \"{{name}}\" descargado correctamente", + "failedToDownloadFile": "Error al descargar el archivo", + "noFileContent": "No se ha recibido ningún archivo", + "filePath": "Ruta del archivo", + "fileCreatedSuccessfully": "Archivo \"{{name}}\" creado correctamente", + "failedToCreateFile": "Error al crear el archivo", + "folderCreatedSuccessfully": "Carpeta \"{{name}}\" creada correctamente", + "failedToCreateFolder": "Error al crear la carpeta", + "failedToCreateItem": "Error al crear el artículo", + "operationFailed": "Operación {{operation}} fallida para {{name}}: {{error}}", + "failedToResolveSymlink": "Error al resolver el enlace simbólico", + "itemDeletedSuccessfully": "{{type}} eliminado correctamente", + "itemsDeletedSuccessfully": "{{count}} elementos eliminados con éxito", + "failedToDeleteItems": "Error al eliminar elementos", + "dragFilesToUpload": "Borrar archivos aquí para subir", + "emptyFolder": "Esta carpeta está vacía", + "itemCount": "{{count}} objetos", + "selectedCount": "{{count}} seleccionado", + "searchFiles": "Buscar archivos...", + "upload": "Subir", + "selectHostToStart": "Seleccione un host para iniciar la gestión de archivos", + "failedToConnect": "No se pudo conectar a SSH", + "failedToLoadDirectory": "Error al cargar el directorio", + "noSSHConnection": "No hay conexión SSH disponible", + "enterFolderName": "Nombre de la carpeta:", + "enterFileName": "Nombre del archivo:", + "copy": "Copiar", + "cut": "Cortar", + "paste": "Pegar", + "copyPath": "Copiar ruta", + "copyPaths": "Copiar rutas", + "delete": "Eliminar", + "properties": "Propiedades", + "refresh": "Refrescar", + "downloadFiles": "Descargar archivos {{count}} al navegador", + "copyFiles": "Copiar elementos {{count}}", + "cutFiles": "Cortar objetos {{count}}", + "deleteFiles": "Eliminar elementos {{count}}", + "filesCopiedToClipboard": "{{count}} elementos copiados al portapapeles", + "filesCutToClipboard": "{{count}} elementos cortados al portapapeles", + "pathCopiedToClipboard": "Ruta copiada al portapapeles", "pathsCopiedToClipboard": "{{count}} paths copied to clipboard", - "failedToCopyPath": "Failed to copy path to clipboard", - "movedItems": "Moved {{count}} items", - "failedToDeleteItem": "Failed to delete item", - "itemRenamedSuccessfully": "{{type}} renamed successfully", - "failedToRenameItem": "Failed to rename item", - "download": "Download", - "permissions": "Permissions", - "size": "Size", - "modified": "Modified", - "path": "Path", - "confirmDelete": "Are you sure you want to delete {{name}}?", - "uploadSuccess": "File uploaded successfully", - "uploadFailed": "File upload failed", - "downloadSuccess": "File downloaded successfully", - "downloadFailed": "File download failed", - "permissionDenied": "Permission denied", - "checkDockerLogs": "Check the Docker logs for detailed error information", - "internalServerError": "Internal server error occurred", - "serverError": "Server Error", + "failedToCopyPath": "Error al copiar la ruta al portapapeles", + "movedItems": "Movidos {{count}} objetos", + "failedToDeleteItem": "Error al eliminar el elemento", + "itemRenamedSuccessfully": "{{type}} renombrado con éxito", + "failedToRenameItem": "Error al renombrar el elemento", + "download": "Descargar", + "permissions": "Permisos", + "size": "Tamaño", + "modified": "Modificado", + "path": "Ruta", + "confirmDelete": "¿Está seguro que desea eliminar {{name}}?", + "uploadSuccess": "Archivo subido correctamente", + "uploadFailed": "Error al subir el archivo", + "downloadSuccess": "Archivo descargado correctamente", + "downloadFailed": "Error al descargar el archivo", + "permissionDenied": "Permiso denegado", + "checkDockerLogs": "Revisa los registros de Docker para información detallada de errores", + "internalServerError": "Error interno del servidor", + "serverError": "Error del servidor", "error": "Error", - "requestFailed": "Request failed with status code", - "unknownFileError": "unknown", - "cannotReadFile": "Cannot read file", - "noSshSessionId": "No SSH session ID available", - "noFilePath": "No file path available", - "noCurrentHost": "No current host available", - "fileSavedSuccessfully": "File saved successfully", - "saveTimeout": "Save operation timed out. The file may have been saved successfully, but the operation took too long to complete. Check the Docker logs for confirmation.", - "failedToSaveFile": "Failed to save file", - "deletedSuccessfully": "deleted successfully", - "connectToServer": "Connect to a Server", - "selectServerToEdit": "Select a server from the sidebar to start editing files", - "fileOperations": "File Operations", - "confirmDeleteMessage": "Are you sure you want to delete {{name}}?", - "confirmDeleteSingleItem": "Are you sure you want to permanently delete \"{{name}}\"?", - "confirmDeleteMultipleItems": "Are you sure you want to permanently delete {{count}} items?", - "confirmDeleteMultipleItemsWithFolders": "Are you sure you want to permanently delete {{count}} items? This includes folders and their contents.", - "confirmDeleteFolder": "Are you sure you want to permanently delete the folder \"{{name}}\" and all its contents?", - "deleteDirectoryWarning": "This will delete the folder and all its contents.", - "actionCannotBeUndone": "This action cannot be undone.", - "permanentDeleteWarning": "This action cannot be undone. The item(s) will be permanently deleted from the server.", - "recent": "Recent", - "pinned": "Pinned", - "folderShortcuts": "Folder Shortcuts", - "noRecentFiles": "No recent files.", - "noPinnedFiles": "No pinned files.", - "enterFolderPath": "Enter folder path", - "noShortcuts": "No shortcuts.", - "searchFilesAndFolders": "Search files and folders...", - "noFilesOrFoldersFound": "No files or folders found.", - "failedToConnectSSH": "Failed to connect to SSH", - "failedToReconnectSSH": "Failed to reconnect SSH session", - "failedToListFiles": "Failed to list files", - "fetchHomeDataTimeout": "Fetch home data timed out", - "sshStatusCheckTimeout": "SSH status check timed out", - "sshReconnectionTimeout": "SSH reconnection timed out", - "saveOperationTimeout": "Save operation timed out", - "cannotSaveFile": "Cannot save file", - "dragSystemFilesToUpload": "Drag system files here to upload", - "dragFilesToWindowToDownload": "Drag files outside window to download", - "openTerminalHere": "Open Terminal Here", - "run": "Run", - "saveToSystem": "Save as...", - "selectLocationToSave": "Select Location to Save", - "openTerminalInFolder": "Open Terminal in This Folder", - "openTerminalInFileLocation": "Open Terminal at File Location", + "requestFailed": "Petición fallida con código de estado", + "unknownFileError": "desconocido", + "cannotReadFile": "No se puede leer el archivo", + "noSshSessionId": "No hay ID de sesión SSH disponible", + "noFilePath": "No hay ruta de archivo disponible", + "noCurrentHost": "No hay host disponible", + "fileSavedSuccessfully": "Archivo guardado correctamente", + "saveTimeout": "Operación de guardado agotada. El archivo puede haber sido guardado con éxito, pero la operación tardó demasiado tiempo en completarse. Compruebe los registros de Docker para obtener confirmación.", + "failedToSaveFile": "Error al guardar el archivo", + "deletedSuccessfully": "eliminado correctamente", + "connectToServer": "Conectar a un servidor", + "selectServerToEdit": "Seleccione un servidor de la barra lateral para empezar a editar archivos", + "fileOperations": "Operaciones de archivos", + "confirmDeleteMessage": "¿Está seguro que desea eliminar {{name}}?", + "confirmDeleteSingleItem": "¿Está seguro que desea eliminar permanentemente \"{{name}}\"?", + "confirmDeleteMultipleItems": "¿Está seguro que desea eliminar permanentemente los elementos {{count}}?", + "confirmDeleteMultipleItemsWithFolders": "¿Estás seguro de que quieres eliminar permanentemente los elementos {{count}} ? Esto incluye carpetas y su contenido.", + "confirmDeleteFolder": "¿Está seguro de que desea eliminar permanentemente la carpeta \"{{name}}\" y todo su contenido?", + "deleteDirectoryWarning": "Esto eliminará la carpeta y todo su contenido.", + "actionCannotBeUndone": "Esta acción no se puede deshacer.", + "permanentDeleteWarning": "Esta acción no se puede deshacer. El elemento(s) se eliminará permanentemente del servidor.", + "recent": "Recientes", + "pinned": "Fijado", + "folderShortcuts": "Atajos de carpeta", + "noRecentFiles": "No hay archivos recientes.", + "noPinnedFiles": "No hay archivos fijados.", + "enterFolderPath": "Introducir ruta de carpeta", + "noShortcuts": "No hay atajos.", + "searchFilesAndFolders": "Buscar archivos y carpetas...", + "noFilesOrFoldersFound": "No se encontraron archivos o carpetas.", + "failedToConnectSSH": "No se pudo conectar a SSH", + "failedToReconnectSSH": "Error al volver a conectar la sesión SSH", + "failedToListFiles": "Error al listar archivos", + "fetchHomeDataTimeout": "Tiempo de espera agotado", + "sshStatusCheckTimeout": "Tiempo de comprobación de estado de SSH agotado", + "sshReconnectionTimeout": "Tiempo de reconexión SSH agotado", + "saveOperationTimeout": "Operación de guardado agotada", + "cannotSaveFile": "No se puede guardar el archivo", + "dragSystemFilesToUpload": "Arrastra los archivos del sistema aquí para subir", + "dragFilesToWindowToDownload": "Arrastra archivos fuera de la ventana para descargar", + "openTerminalHere": "Abrir Terminal Aquí", + "run": "Ejecutar", + "saveToSystem": "Guardar como...", + "selectLocationToSave": "Seleccionar ubicación a guardar", + "openTerminalInFolder": "Abrir terminal en esta carpeta", + "openTerminalInFileLocation": "Abrir terminal en la ubicación del archivo", "terminalWithPath": "Terminal - {{host}}:{{path}}", - "runningFile": "Running - {{file}}", - "onlyRunExecutableFiles": "Can only run executable files", - "noHostSelected": "No host selected", - "starred": "Starred", - "shortcuts": "Shortcuts", - "directories": "Directories", - "removedFromRecentFiles": "Removed \"{{name}}\" from recent files", - "removeFailed": "Remove failed", - "unpinnedSuccessfully": "Unpinned \"{{name}}\" successfully", - "unpinFailed": "Unpin failed", - "removedShortcut": "Removed shortcut \"{{name}}\"", - "removeShortcutFailed": "Remove shortcut failed", - "clearedAllRecentFiles": "Cleared all recent files", - "clearFailed": "Clear failed", - "removeFromRecentFiles": "Remove from recent files", - "clearAllRecentFiles": "Clear all recent files", - "unpinFile": "Unpin file", - "removeShortcut": "Remove shortcut", - "saveFilesToSystem": "Save {{count}} files as...", - "pinFile": "Pin file", - "addToShortcuts": "Add to shortcuts", - "downloadToDefaultLocation": "Download to default location", - "pasteFailed": "Paste failed", - "noUndoableActions": "No undoable actions", - "undoCopySuccess": "Undid copy operation: Deleted {{count}} copied files", - "undoCopyFailedDelete": "Undo failed: Could not delete any copied files", - "undoCopyFailedNoInfo": "Undo failed: Could not find copied file information", - "undoMoveSuccess": "Undid move operation: Moved {{count}} files back to original location", - "undoMoveFailedMove": "Undo failed: Could not move any files back", - "undoMoveFailedNoInfo": "Undo failed: Could not find moved file information", - "undoDeleteNotSupported": "Delete operation cannot be undone: Files have been permanently deleted from server", - "undoTypeNotSupported": "Unsupported undo operation type", - "undoOperationFailed": "Undo operation failed", - "unknownError": "Unknown error", - "enterPath": "Enter path...", - "editPath": "Edit path", - "confirm": "Confirm", - "cancel": "Cancel", - "find": "Find...", - "replaceWith": "Replace with...", - "replace": "Replace", - "replaceAll": "Replace All", - "downloadInstead": "Download Instead", - "keyboardShortcuts": "Keyboard Shortcuts", - "searchAndReplace": "Search & Replace", - "editing": "Editing", + "runningFile": "Ejecutando - {{file}}", + "onlyRunExecutableFiles": "Sólo se pueden ejecutar archivos ejecutables", + "noHostSelected": "Ningún host seleccionado", + "starred": "Favoritos", + "shortcuts": "Atajos", + "directories": "Directorios", + "removedFromRecentFiles": "Eliminado \"{{name}}\" de archivos recientes", + "removeFailed": "Error al eliminar", + "unpinnedSuccessfully": "No fijado con éxito \"{{name}}\"", + "unpinFailed": "Fallo al desfijar", + "removedShortcut": "Atajo eliminado \"{{name}}\"", + "removeShortcutFailed": "Error al eliminar acceso directo", + "clearedAllRecentFiles": "Limpiado todos los archivos recientes", + "clearFailed": "Error al limpiar", + "removeFromRecentFiles": "Eliminar de archivos recientes", + "clearAllRecentFiles": "Borrar todos los archivos recientes", + "unpinFile": "Desanclar archivo", + "removeShortcut": "Eliminar acceso directo", + "saveFilesToSystem": "Guardar archivos {{count}} como...", + "pinFile": "Fijar archivo", + "addToShortcuts": "Añadir a accesos directos", + "downloadToDefaultLocation": "Descargar a la ubicación predeterminada", + "pasteFailed": "Pegado fallido", + "noUndoableActions": "No hay acciones deshacerables", + "undoCopySuccess": "Operación de copia inrealizada: Eliminados archivos copiados {{count}}", + "undoCopyFailedDelete": "Deshacer fallido: No se pudo eliminar ningún archivo copiado", + "undoCopyFailedNoInfo": "Deshacer fallido: no se pudo encontrar la información del archivo copiado", + "undoMoveSuccess": "Operación de movimiento inrealizado: Se han movido archivos {{count}} de vuelta a la ubicación original", + "undoMoveFailedMove": "Error al deshacer: no se pudo mover ningún archivo de vuelta", + "undoMoveFailedNoInfo": "Error al deshacer: no se pudo encontrar la información del archivo movido", + "undoDeleteNotSupported": "La operación de eliminación no se puede deshacer: los archivos se han eliminado permanentemente del servidor", + "undoTypeNotSupported": "Tipo de operación de deshacer no soportado", + "undoOperationFailed": "Operación de deshacer fallida", + "unknownError": "Error desconocido", + "enterPath": "Entrar ruta...", + "editPath": "Editar ruta", + "confirm": "Confirmar", + "cancel": "Cancelar", + "find": "Buscar...", + "replaceWith": "Reemplazar con...", + "replace": "Reemplazar", + "replaceAll": "Reemplazar todo", + "downloadInstead": "Descargar en su lugar", + "keyboardShortcuts": "Atajos de teclado", + "searchAndReplace": "Buscar y reemplazar", + "editing": "Editando", "navigation": "Navigation", - "code": "Code", - "search": "Search", - "findNext": "Find Next", - "findPrevious": "Find Previous", - "save": "Save", - "selectAll": "Select All", - "undo": "Undo", - "redo": "Redo", - "goToLine": "Go to Line", - "moveLineUp": "Move Line Up", - "moveLineDown": "Move Line Down", - "toggleComment": "Toggle Comment", - "indent": "Indent", - "outdent": "Outdent", + "code": "Código", + "search": "Buscar", + "findNext": "Buscar Siguiente", + "findPrevious": "Buscar Anterior", + "save": "Guardar", + "selectAll": "Seleccionar todo", + "undo": "Deshacer", + "redo": "Rehacer", + "goToLine": "Ir a la línea", + "moveLineUp": "Mover línea arriba", + "moveLineDown": "Mover línea abajo", + "toggleComment": "Cambiar comentario", + "indent": "Sangrar", + "outdent": "Extraordinario", "autoComplete": "Auto Complete", - "imageLoadError": "Failed to load image", - "rotate": "Rotate", - "originalSize": "Original Size", - "startTyping": "Start typing...", - "unknownSize": "Unknown size", - "fileIsEmpty": "File is empty", - "largeFileWarning": "Large File Warning", - "largeFileWarningDesc": "This file is {{size}} in size, which may cause performance issues when opened as text.", - "fileNotFoundAndRemoved": "File \"{{name}}\" not found and has been removed from recent/pinned files", - "failedToLoadFile": "Failed to load file: {{error}}", - "serverErrorOccurred": "Server error occurred. Please try again later.", - "autoSaveFailed": "Auto-save failed", - "fileAutoSaved": "File auto-saved", - "moveFileFailed": "Failed to move {{name}}", - "moveOperationFailed": "Move operation failed", - "canOnlyCompareFiles": "Can only compare two files", - "comparingFiles": "Comparing files: {{file1}} and {{file2}}", - "dragFailed": "Drag operation failed", - "filePinnedSuccessfully": "File \"{{name}}\" pinned successfully", - "pinFileFailed": "Failed to pin file", - "fileUnpinnedSuccessfully": "File \"{{name}}\" unpinned successfully", - "unpinFileFailed": "Failed to unpin file", - "shortcutAddedSuccessfully": "Folder shortcut \"{{name}}\" added successfully", - "addShortcutFailed": "Failed to add shortcut", - "operationCompletedSuccessfully": "{{operation}} {{count}} items successfully", - "operationCompleted": "{{operation}} {{count}} items", - "downloadFileSuccess": "File {{name}} downloaded successfully", - "downloadFileFailed": "Download failed", - "moveTo": "Move to {{name}}", - "diffCompareWith": "Diff compare with {{name}}", - "dragOutsideToDownload": "Drag outside window to download ({{count}} files)", - "newFolderDefault": "NewFolder", - "newFileDefault": "NewFile.txt", - "successfullyMovedItems": "Successfully moved {{count}} items to {{target}}", - "move": "Move", - "searchInFile": "Search in file (Ctrl+F)", - "showKeyboardShortcuts": "Show keyboard shortcuts", - "startWritingMarkdown": "Start writing your markdown content...", - "loadingFileComparison": "Loading file comparison...", + "imageLoadError": "Error al cargar la imagen", + "rotate": "Rotar", + "originalSize": "Tamaño original", + "startTyping": "Comience a escribir...", + "unknownSize": "Tamaño desconocido", + "fileIsEmpty": "El archivo está vacío", + "largeFileWarning": "Advertencia de archivo grande", + "largeFileWarningDesc": "Este archivo tiene un tamaño {{size}} , que puede causar problemas de rendimiento cuando se abre como texto.", + "fileNotFoundAndRemoved": "No se ha encontrado el archivo \"{{name}}\" y se ha eliminado de archivos recientes o anclados", + "failedToLoadFile": "Error al cargar el archivo: {{error}}", + "serverErrorOccurred": "Se ha producido un error en el servidor. Inténtalo de nuevo más tarde.", + "autoSaveFailed": "Error al guardar automáticamente", + "fileAutoSaved": "Archivo guardado automáticamente", + "moveFileFailed": "Error al mover {{name}}", + "moveOperationFailed": "Operación de movimiento fallida", + "canOnlyCompareFiles": "Sólo se pueden comparar dos archivos", + "comparingFiles": "Comparando archivos: {{file1}} y {{file2}}", + "dragFailed": "Operación de arrastre fallida", + "filePinnedSuccessfully": "Archivo \"{{name}}\" anclado correctamente", + "pinFileFailed": "Error al anclar archivo", + "fileUnpinnedSuccessfully": "Archivo \"{{name}}\" sin fijar correctamente", + "unpinFileFailed": "Error al desfijar el archivo", + "shortcutAddedSuccessfully": "Acceso directo a la carpeta \"{{name}}\" añadido correctamente", + "addShortcutFailed": "Error al añadir acceso directo", + "operationCompletedSuccessfully": "{{operation}} {{count}} elementos con éxito", + "operationCompleted": "{{operation}} {{count}} objetos", + "downloadFileSuccess": "Archivo {{name}} descargado correctamente", + "downloadFileFailed": "Descarga fallida", + "moveTo": "Mover a {{name}}", + "diffCompareWith": "Comparación de diferencias con {{name}}", + "dragOutsideToDownload": "Arrastra la ventana exterior para descargar ( archivos{{count}})", + "newFolderDefault": "Carpeta nueva", + "newFileDefault": "Nuevo archivo.txt", + "successfullyMovedItems": "Movidos con éxito {{count}} elementos a {{target}}", + "move": "Mover", + "searchInFile": "Buscar en archivo (Ctrl+F)", + "showKeyboardShortcuts": "Mostrar atajos de teclado", + "startWritingMarkdown": "Empieza a escribir tu contenido de markdown...", + "loadingFileComparison": "Cargando comparación de archivos...", "reload": "Reload", - "compare": "Compare", - "sideBySide": "Side by Side", - "inline": "Inline", - "fileComparison": "File Comparison: {{file1}} vs {{file2}}", - "fileTooLarge": "File too large: {{error}}", - "sshConnectionFailed": "SSH connection failed. Please check your connection to {{name}} ({{ip}}:{{port}})", - "loadFileFailed": "Failed to load file: {{error}}", - "connectedSuccessfully": "Connected successfully", - "totpVerificationFailed": "TOTP verification failed", - "verificationCodePrompt": "Verification code:", - "changePermissions": "Change Permissions", - "changePermissionsDesc": "Modify file permissions for", - "currentPermissions": "Current Permissions", - "newPermissions": "New Permissions", - "owner": "Owner", - "group": "Group", - "others": "Others", - "read": "Read", - "write": "Write", - "execute": "Execute", - "permissionsChangedSuccessfully": "Permissions changed successfully", - "failedToChangePermissions": "Failed to change permissions" + "compare": "Comparar", + "sideBySide": "Lado por lado", + "inline": "En línea", + "fileComparison": "Comparación de archivos: {{file1}} vs {{file2}}", + "fileTooLarge": "Archivo demasiado grande: {{error}}", + "sshConnectionFailed": "La conexión SSH ha fallado. Por favor, compruebe su conexión a {{name}} ({{ip}}:{{port}})", + "loadFileFailed": "Error al cargar el archivo: {{error}}", + "connectedSuccessfully": "Conectado correctamente", + "totpVerificationFailed": "Falló la verificación TOTP", + "verificationCodePrompt": "Código de verificación:", + "changePermissions": "Cambiar permisos", + "changePermissionsDesc": "Modificar permisos de archivo para", + "currentPermissions": "Permisos actuales", + "newPermissions": "Nuevos permisos", + "owner": "Propietario", + "group": "Grupo", + "others": "Otros", + "read": "Leer", + "write": "Escribir", + "execute": "Ejecutar", + "permissionsChangedSuccessfully": "Permisos modificados con éxito", + "failedToChangePermissions": "Error al cambiar los permisos" }, "tunnel": { - "noTunnelsConfigured": "No Tunnels Configured", - "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" + "noTunnelsConfigured": "No hay túneles configurados", + "configureTunnelsInHostSettings": "Configurar conexiones de túnel en el Administrador de Equipos para comenzar" }, "tunnels": { - "title": "SSH Tunnels", - "noSshTunnels": "No SSH Tunnels", - "createFirstTunnelMessage": "You haven't created any SSH tunnels yet. Configure tunnel connections in the Host Manager to get started.", - "connected": "Connected", - "disconnected": "Disconnected", - "connecting": "Connecting...", - "disconnecting": "Disconnecting...", - "unknownTunnelStatus": "Unknown", - "statusUnknown": "Unknown", - "unknown": "Unknown", + "title": "Túneles SSH", + "noSshTunnels": "No hay túneles SSH", + "createFirstTunnelMessage": "No has creado ningún túnel SSH todavía. Configura conexiones de túnel en el Administrador de Equipos para empezar.", + "connected": "Conectado", + "disconnected": "Desconectado", + "connecting": "Conectando...", + "disconnecting": "Desconectando...", + "unknownTunnelStatus": "Desconocido", + "statusUnknown": "Desconocido", + "unknown": "Desconocido", "error": "Error", - "failed": "Failed", - "retrying": "Retrying", - "waiting": "Waiting", - "waitingForRetry": "Waiting for retry", - "retryingConnection": "Retrying connection", - "canceling": "Canceling...", - "connect": "Connect", - "disconnect": "Disconnect", - "cancel": "Cancel", - "port": "Port", - "attempt": "Attempt {{current}} of {{max}}", - "nextRetryIn": "Next retry in {{seconds}} seconds", - "checkDockerLogs": "Check your Docker logs for the error reason, join the", - "orCreate": "or create a ", - "noTunnelConnections": "No tunnel connections configured", - "tunnelConnections": "Tunnel Connections", - "addTunnel": "Add Tunnel", - "editTunnel": "Edit Tunnel", - "deleteTunnel": "Delete Tunnel", - "tunnelName": "Tunnel Name", - "localPort": "Local Port", - "remoteHost": "Remote Host", - "remotePort": "Remote Port", - "autoStart": "Auto Start", - "status": "Status", - "active": "Active", - "inactive": "Inactive", - "start": "Start", - "stop": "Stop", - "restart": "Restart", - "connectionType": "Connection Type", + "failed": "Fallo", + "retrying": "Reintentando", + "waiting": "Esperando", + "waitingForRetry": "Esperando a reintentar", + "retryingConnection": "Reintentando conexión", + "canceling": "Cancelando...", + "connect": "Conectar", + "disconnect": "Desconectar", + "cancel": "Cancelar", + "port": "Puerto", + "attempt": "Intento {{current}} de {{max}}", + "nextRetryIn": "Siguiente reintento en {{seconds}} segundos", + "checkDockerLogs": "Comprueba tus registros de Docker por la razón del error, únete a", + "orCreate": "o crear un ", + "noTunnelConnections": "No hay conexiones de túnel configuradas", + "tunnelConnections": "Conexiones de túnel", + "addTunnel": "Añadir túnel", + "editTunnel": "Editar túnel", + "deleteTunnel": "Eliminar túnel", + "tunnelName": "Nombre del túnel", + "localPort": "Puerto local", + "remoteHost": "Host remoto", + "remotePort": "Puerto remoto", + "autoStart": "Auto inicio", + "status": "Estado", + "active": "Activo", + "inactive": "Inactivo", + "start": "Comenzar", + "stop": "Parar", + "restart": "Reiniciar", + "connectionType": "Tipo de conexión", "local": "Local", - "remote": "Remote", - "dynamic": "Dynamic", - "unknownConnectionStatus": "Unknown", - "portMapping": "Port {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", - "endpointHostNotFound": "Endpoint host not found", - "discord": "Discord", - "githubIssue": "GitHub issue", - "forHelp": "for help" + "remote": "Remoto", + "dynamic": "Dinámica", + "unknownConnectionStatus": "Desconocido", + "portMapping": "Puerto {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", + "endpointHostNotFound": "Host de punto final no encontrado", + "discord": "Discordia", + "githubIssue": "Problema de GitHub", + "forHelp": "para ayuda" }, "serverStats": { - "title": "Server Statistics", + "title": "Estadísticas del servidor", "cpu": "CPU", - "memory": "Memory", - "disk": "Disk", - "network": "Network", - "uptime": "Uptime", - "loadAverage": "Avg: {{avg1}}, {{avg5}}, {{avg15}}", - "processes": "Processes", - "connections": "Connections", - "usage": "Usage", - "available": "Available", + "memory": "Memoria", + "disk": "Disco", + "network": "Red", + "uptime": "Actualización", + "loadAverage": "Promedio: {{avg1}}, {{avg5}}, {{avg15}}", + "processes": "Procesos", + "connections": "Conexiones", + "usage": "Uso", + "available": "Disponible", "total": "Total", - "free": "Free", - "used": "Used", - "percentage": "Percentage", - "refreshStatusAndMetrics": "Refresh status and metrics", - "refreshStatus": "Refresh Status", - "fileManagerAlreadyOpen": "File Manager already open for this host", - "openFileManager": "Open File Manager", - "cpuCores_one": "{{count}} CPU", - "cpuCores_other": "{{count}} CPUs", + "free": "Gratis", + "used": "Usado", + "percentage": "Porcentaje", + "refreshStatusAndMetrics": "Actualizar estado y métricas", + "refreshStatus": "Actualizar estado", + "fileManagerAlreadyOpen": "Administrador de archivos ya abierto para este host", + "openFileManager": "Abrir gestor de archivos", + "cpuCores_one": "CPU {{count}}", + "cpuCores_other": "CPUs {{count}}", "naCpus": "N/A CPU(s)", - "loadAverageNA": "Avg: N/A", - "cpuUsage": "CPU Usage", - "memoryUsage": "Memory Usage", - "diskUsage": "Disk Usage", - "rootStorageSpace": "Root Storage Space", - "of": "of", - "feedbackMessage": "Have ideas for what should come next for server management? Share them on", - "failedToFetchHostConfig": "Failed to fetch host configuration", - "failedToFetchStatus": "Failed to fetch server status", - "failedToFetchMetrics": "Failed to fetch server metrics", - "failedToFetchHomeData": "Failed to fetch home data", - "loadingMetrics": "Loading metrics...", - "connecting": "Connecting...", - "refreshing": "Refreshing...", - "serverOffline": "Server Offline", - "cannotFetchMetrics": "Cannot fetch metrics from offline server", - "totpRequired": "TOTP Authentication Required", - "totpUnavailable": "Server Stats unavailable for TOTP-enabled servers", - "totpVerified": "TOTP verified, metrics collection started", - "totpFailed": "TOTP verification failed", - "totpInvalidCode": "Invalid verification code", - "totpCancelled": "Metrics collection cancelled", - "authenticationFailed": "Authentication failed", - "noneAuthNotSupported": "Server Stats does not support 'none' authentication type.", - "load": "Load", - "editLayout": "Edit Layout", - "cancelEdit": "Cancel", - "addWidget": "Add Widget", - "saveLayout": "Save Layout", - "unsavedChanges": "Unsaved changes", - "layoutSaved": "Layout saved successfully", - "failedToSaveLayout": "Failed to save layout", - "systemInfo": "System Information", + "loadAverageNA": "Media: N/A", + "cpuUsage": "Uso de CPU", + "memoryUsage": "Uso de memoria", + "diskUsage": "Uso del disco", + "rootStorageSpace": "Espacio de almacenamiento root", + "of": "de", + "feedbackMessage": "¿Tienes ideas sobre lo que debería venir a continuación para la gestión del servidor? Compártelas en", + "failedToFetchHostConfig": "Error al recuperar la configuración del host", + "failedToFetchStatus": "Error al recuperar el estado del servidor", + "failedToFetchMetrics": "Error al recuperar métricas del servidor", + "failedToFetchHomeData": "Error al recuperar datos de inicio", + "loadingMetrics": "Cargando métricas...", + "connecting": "Conectando...", + "refreshing": "Actualizando...", + "serverOffline": "Servidor fuera de línea", + "cannotFetchMetrics": "No se pueden obtener métricas del servidor sin conexión", + "totpRequired": "TOTP Autenticación Requerida", + "totpUnavailable": "Estadísticas del servidor no disponibles para servidores con TOTP", + "totpVerified": "TOTP verificado, comenzó la recolección de métricas", + "totpFailed": "Falló la verificación TOTP", + "totpInvalidCode": "Código de verificación no válido", + "totpCancelled": "Colección de métricas cancelada", + "authenticationFailed": "Autenticación fallida", + "noneAuthNotSupported": "Las estadísticas del servidor no son compatibles con el tipo de autenticación 'ninguno'.", + "load": "Cargar", + "editLayout": "Editar Diseño", + "cancelEdit": "Cancelar", + "addWidget": "Añadir Widget", + "saveLayout": "Guardar diseño", + "unsavedChanges": "Cambios sin guardar", + "layoutSaved": "Diseño guardado correctamente", + "failedToSaveLayout": "Error al guardar el diseño", + "systemInfo": "Información del sistema", "hostname": "Hostname", - "operatingSystem": "Operating System", - "kernel": "Kernel", - "totalUptime": "Total Uptime", - "seconds": "seconds", - "networkInterfaces": "Network Interfaces", - "noInterfacesFound": "No network interfaces found", - "totalProcesses": "Total Processes", - "running": "Running", - "noProcessesFound": "No processes found", - "loginStats": "SSH Login Statistics", - "totalLogins": "Total Logins", - "uniqueIPs": "Unique IPs", - "recentSuccessfulLogins": "Recent Successful Logins", - "recentFailedAttempts": "Recent Failed Attempts", - "noRecentLoginData": "No recent login data", - "from": "from", - "quickActions": "Quick Actions", - "executeQuickAction": "Execute {{name}}", - "executingQuickAction": "Executing {{name}}...", - "quickActionSuccess": "{{name}} completed successfully", - "quickActionFailed": "{{name}} failed", - "quickActionError": "Failed to execute {{name}}" + "operatingSystem": "Sistema operativo", + "kernel": "Kerel", + "totalUptime": "Tiempo de actualización total", + "seconds": "segundos", + "networkInterfaces": "Interfaces de red", + "noInterfacesFound": "No se encontraron interfaces de red", + "totalProcesses": "Procesos totales", + "running": "Ejecutando", + "noProcessesFound": "No se encontraron procesos", + "loginStats": "Estadísticas de inicio de sesión SSH", + "totalLogins": "Total de entradas", + "uniqueIPs": "Isole Única", + "recentSuccessfulLogins": "Inicio de sesión recientes", + "recentFailedAttempts": "Intentos fallidos recientes", + "noRecentLoginData": "No hay datos de acceso recientes", + "from": "de", + "quickActions": "Acciones rápidas", + "executeQuickAction": "Ejecutar {{name}}", + "executingQuickAction": "Ejecutando {{name}}...", + "quickActionSuccess": "{{name}} completado con éxito", + "quickActionFailed": "{{name}} falló", + "quickActionError": "Error al ejecutar {{name}}" }, "auth": { - "tagline": "SSH SERVER MANAGER", - "description": "Secure, powerful, and intuitive SSH connection management", - "welcomeBack": "Welcome back to TERMIX", - "createAccount": "Create your TERMIX account", - "continueExternal": "Continue with external provider", - "loginTitle": "Login to Termix", - "registerTitle": "Create Account", - "loginButton": "Login", - "registerButton": "Register", - "forgotPassword": "Forgot Password?", - "rememberMe": "Remember Me", - "noAccount": "Don't have an account?", - "hasAccount": "Already have an account?", - "loginSuccess": "Login successful", - "loginFailed": "Login failed", - "registerSuccess": "Registration successful", - "registerFailed": "Registration failed", - "logoutSuccess": "Logged out successfully", - "invalidCredentials": "Invalid username or password", - "accountCreated": "Account created successfully", - "passwordReset": "Password reset link sent", - "twoFactorAuth": "Two-Factor Authentication", - "enterCode": "Enter verification code", - "backupCode": "Or use backup code", - "verifyCode": "Verify Code", - "redirectingToApp": "Redirecting to app...", - "enableTwoFactor": "Enable Two-Factor Authentication", - "disableTwoFactor": "Disable Two-Factor Authentication", - "scanQRCode": "Scan this QR code with your authenticator app", - "backupCodes": "Backup Codes", - "saveBackupCodes": "Save these backup codes in a safe place", - "twoFactorEnabledSuccess": "Two-factor authentication enabled successfully!", - "twoFactorDisabled": "Two-factor authentication disabled", - "newBackupCodesGenerated": "New backup codes generated", - "backupCodesDownloaded": "Backup codes downloaded", - "pleaseEnterSixDigitCode": "Please enter a 6-digit code", - "invalidVerificationCode": "Invalid verification code", - "failedToDisableTotp": "Failed to disable TOTP", - "failedToGenerateBackupCodes": "Failed to generate backup codes", - "enterPassword": "Enter your password", - "lockedOidcAuth": "Locked (OIDC Auth)", - "twoFactorTitle": "Two-Factor Authentication", - "twoFactorProtected": "Your account is protected with two-factor authentication", - "twoFactorActive": "Two-factor authentication is currently active on your account", - "disable2FA": "Disable 2FA", - "disableTwoFactorWarning": "Disabling two-factor authentication will make your account less secure", - "passwordOrTotpCode": "Password or TOTP Code", - "or": "Or", - "generateNewBackupCodesText": "Generate new backup codes if you've lost your existing ones", - "generateNewBackupCodes": "Generate New Backup Codes", - "yourBackupCodes": "Your Backup Codes", - "download": "Download", - "setupTwoFactorTitle": "Set Up Two-Factor Authentication", - "sshAuthenticationRequired": "SSH Authentication Required", - "sshNoKeyboardInteractive": "Keyboard-Interactive Authentication Unavailable", - "sshAuthenticationFailed": "Authentication Failed", - "sshAuthenticationTimeout": "Authentication Timeout", - "sshNoKeyboardInteractiveDescription": "The server does not support keyboard-interactive authentication. Please provide your password or SSH key.", - "sshAuthFailedDescription": "The provided credentials were incorrect. Please try again with valid credentials.", - "sshTimeoutDescription": "The authentication attempt timed out. Please try again.", - "sshProvideCredentialsDescription": "Please provide your SSH credentials to connect to this server.", - "sshPasswordDescription": "Enter the password for this SSH connection.", - "sshKeyPasswordDescription": "If your SSH key is encrypted, enter the passphrase here.", - "step1ScanQR": "Step 1: Scan the QR code with your authenticator app", - "manualEntryCode": "Manual Entry Code", - "cannotScanQRText": "If you can't scan the QR code, enter this code manually in your authenticator app", - "nextVerifyCode": "Next: Verify Code", - "verifyAuthenticator": "Verify Your Authenticator", - "step2EnterCode": "Step 2: Enter the 6-digit code from your authenticator app", - "verificationCode": "Verification Code", - "back": "Back", - "verifyAndEnable": "Verify and Enable", - "saveBackupCodesTitle": "Save Your Backup Codes", - "step3StoreCodesSecurely": "Step 3: Store these codes in a safe place", - "importantBackupCodesText": "Save these backup codes in a secure location. You can use them to access your account if you lose your authenticator device.", - "completeSetup": "Complete Setup", - "notEnabledText": "Two-factor authentication adds an extra layer of security by requiring a code from your authenticator app when signing in.", - "enableTwoFactorButton": "Enable Two-Factor Authentication", - "addExtraSecurityLayer": "Add an extra layer of security to your account", - "firstUser": "First User", - "firstUserMessage": "You are the first user and will be made an admin. You can view admin settings in the sidebar user dropdown. If you think this is a mistake, check the docker logs, or create a GitHub issue.", - "external": "External", - "loginWithExternal": "Login with External Provider", - "loginWithExternalDesc": "Login using your configured external identity provider", - "externalNotSupportedInElectron": "External authentication is not supported in the Electron app yet. Please use the web version for OIDC login.", - "resetPasswordButton": "Reset Password", - "sendResetCode": "Send Reset Code", - "resetCodeDesc": "Enter your username to receive a password reset code. The code will be logged in the docker container logs.", + "tagline": "MANAGER DE SSH SERVIDOR", + "description": "Gestión de conexiones SSH seguras, potentes e intuitivas", + "welcomeBack": "Bienvenido de nuevo a TERMIX", + "createAccount": "Crea tu cuenta de TERMIX", + "continueExternal": "Continuar con el proveedor externo", + "loginTitle": "Iniciar sesión en Termix", + "registerTitle": "Crear cuenta", + "loginButton": "Ingresar", + "registerButton": "Registrarse", + "forgotPassword": "¿Olvidó la contraseña?", + "rememberMe": "Recordarme", + "noAccount": "¿No tienes una cuenta?", + "hasAccount": "¿Ya tienes una cuenta?", + "loginSuccess": "Inicio de sesión correcto", + "loginFailed": "Error al iniciar sesión", + "registerSuccess": "Registro exitoso", + "registerFailed": "Error en el registro", + "logoutSuccess": "Sesión cerrada correctamente", + "invalidCredentials": "Nombre de usuario o contraseña inválidos", + "accountCreated": "Cuenta creada con éxito", + "passwordReset": "Enlace de restablecimiento de contraseña enviado", + "twoFactorAuth": "Autenticación de dos factores", + "enterCode": "Introduzca código de verificación", + "backupCode": "O usar código de copia de seguridad", + "verifyCode": "Verificar código", + "redirectingToApp": "Redirigiendo a la aplicación...", + "enableTwoFactor": "Habilitar Autenticación en dos Factores", + "disableTwoFactor": "Desactivar Autenticación en dos Factores", + "scanQRCode": "Escanea este código QR con tu aplicación de autenticación", + "backupCodes": "Copias de seguridad", + "saveBackupCodes": "Guardar estos códigos de copia de seguridad en un lugar seguro", + "twoFactorEnabledSuccess": "Autenticación de doble factor habilitada con éxito!", + "twoFactorDisabled": "Autenticación de doble factor desactivada", + "newBackupCodesGenerated": "Nuevos códigos de respaldo generados", + "backupCodesDownloaded": "Copia de seguridad descargada", + "pleaseEnterSixDigitCode": "Por favor, introduzca un código de 6 dígitos", + "invalidVerificationCode": "Código de verificación no válido", + "failedToDisableTotp": "Error al desactivar TOTP", + "failedToGenerateBackupCodes": "Error al generar códigos de copia de seguridad", + "enterPassword": "Introduzca su contraseña", + "lockedOidcAuth": "Bloqueado (Autor OIDC)", + "twoFactorTitle": "Autenticación de dos factores", + "twoFactorProtected": "Su cuenta está protegida con autenticación de doble factor", + "twoFactorActive": "La autenticación de doble factor está activa en su cuenta", + "disable2FA": "Desactivar 2FA", + "disableTwoFactorWarning": "Desactivar la autenticación de dos factores hará que su cuenta sea menos segura", + "passwordOrTotpCode": "Contraseña o código TOTP", + "or": "O", + "generateNewBackupCodesText": "Generar nuevos códigos de copia de seguridad si has perdido los ya existentes", + "generateNewBackupCodes": "Generar nuevos códigos de copia de seguridad", + "yourBackupCodes": "Tus códigos de copia de seguridad", + "download": "Descargar", + "setupTwoFactorTitle": "Configurar autenticación de dos factores", + "sshAuthenticationRequired": "Autenticación SSH requerida", + "sshNoKeyboardInteractive": "Autenticación interactiva del teclado no disponible", + "sshAuthenticationFailed": "Autenticación fallida", + "sshAuthenticationTimeout": "Tiempo de espera de autenticación", + "sshNoKeyboardInteractiveDescription": "El servidor no soporta autenticación interactiva de teclado. Por favor, introduzca su contraseña o clave SSH.", + "sshAuthFailedDescription": "Las credenciales proporcionadas eran incorrectas. Por favor, inténtelo de nuevo con credenciales válidas.", + "sshTimeoutDescription": "Se ha agotado el tiempo de espera de autenticación. Inténtalo de nuevo.", + "sshProvideCredentialsDescription": "Por favor, proporcione sus credenciales SSH para conectarse a este servidor.", + "sshPasswordDescription": "Introduzca la contraseña para esta conexión SSH.", + "sshKeyPasswordDescription": "Si su clave SSH está cifrada, introduzca la contraseña aquí.", + "step1ScanQR": "Paso 1: Escanea el código QR con tu aplicación de autenticación", + "manualEntryCode": "Código de entrada manual", + "cannotScanQRText": "Si no puedes escanear el código QR, introduce este código manualmente en tu aplicación de autenticación", + "nextVerifyCode": "Siguiente: Verificar Código", + "verifyAuthenticator": "Verifique su autenticador", + "step2EnterCode": "Paso 2: Introduzca el código de 6 dígitos de su aplicación de autenticación", + "verificationCode": "Código de verificación", + "back": "Atrás", + "verifyAndEnable": "Verificar y habilitar", + "saveBackupCodesTitle": "Guarda tus códigos de copia de seguridad", + "step3StoreCodesSecurely": "Paso 3: Almacene estos códigos en un lugar seguro", + "importantBackupCodesText": "Guarda estos códigos de copia de seguridad en una ubicación segura. Puedes usarlos para acceder a tu cuenta si pierdes tu dispositivo de autenticación.", + "completeSetup": "Completar configuración", + "notEnabledText": "La autenticación de dos factores añade una capa extra de seguridad al requerir un código de su aplicación de autenticación al iniciar sesión.", + "enableTwoFactorButton": "Habilitar Autenticación en dos Factores", + "addExtraSecurityLayer": "Añade una capa extra de seguridad a tu cuenta", + "firstUser": "Primer usuario", + "firstUserMessage": "Eres el primer usuario y se hará un administrador. Puedes ver la configuración de administración en la barra lateral del menú desplegable. Si cree que esto es un error, compruebe los registros de docker, o cree un problema de GitHub.", + "external": "Externo", + "loginWithExternal": "Iniciar sesión con proveedor externo", + "loginWithExternalDesc": "Iniciar sesión usando su proveedor de identidad externo configurado", + "externalNotSupportedInElectron": "La autenticación externa no está soportada en la aplicación Electron todavía. Por favor, utilice la versión web para iniciar sesión OIDC.", + "resetPasswordButton": "Restablecer contraseña", + "sendResetCode": "Enviar código de reinicio", + "resetCodeDesc": "Introduzca su nombre de usuario para recibir un código de restablecimiento de contraseña. El código se registrará en los registros del contenedor docker.", "resetCode": "Reset Code", - "verifyCodeButton": "Verify Code", - "enterResetCode": "Enter the 6-digit code from the docker container logs for user:", - "goToLogin": "Go to Login", - "newPassword": "New Password", - "confirmNewPassword": "Confirm Password", - "enterNewPassword": "Enter your new password for user:", - "signUp": "Sign Up", - "mobileApp": "Mobile App", - "loggingInToMobileApp": "Logging in to the mobile app", - "desktopApp": "Desktop App", - "loggingInToDesktopApp": "Logging in to the desktop app", - "loggingInToDesktopAppViaWeb": "Logging in to the desktop app via web interface", - "loadingServer": "Loading server...", - "authenticating": "Authenticating...", - "dataLossWarning": "Resetting your password this way will delete all your saved SSH hosts, credentials, and other encrypted data. This action cannot be undone. Only use this if you have forgotten your password and are not logged in.", - "authenticationDisabled": "Authentication Disabled", - "authenticationDisabledDesc": "All authentication methods are currently disabled. Please contact your administrator.", - "passwordResetSuccess": "Password Reset Successful", - "passwordResetSuccessDesc": "Your password has been reset successfully. You can now log in with your new password." + "verifyCodeButton": "Verificar código", + "enterResetCode": "Introduzca el código de 6 dígitos del contenedor docker para el usuario:", + "goToLogin": "Ir a Login", + "newPassword": "Nueva contraseña", + "confirmNewPassword": "Confirmar contraseña", + "enterNewPassword": "Introduzca su nueva contraseña para el usuario:", + "signUp": "Regístrate", + "mobileApp": "Aplicación móvil", + "loggingInToMobileApp": "Iniciando sesión en la aplicación móvil", + "desktopApp": "App de escritorio", + "loggingInToDesktopApp": "Iniciando sesión en la aplicación de escritorio", + "loggingInToDesktopAppViaWeb": "Iniciando sesión en la aplicación de escritorio a través de la interfaz web", + "loadingServer": "Cargando servidor...", + "authenticating": "Autenticando...", + "dataLossWarning": "Restablecer su contraseña de esta manera eliminará todos sus hosts SSH guardados, credenciales y otros datos cifrados. Esta acción no se puede deshacer. Utilice sólo si ha olvidado su contraseña y no ha iniciado sesión.", + "authenticationDisabled": "Autenticación desactivada", + "authenticationDisabledDesc": "Todos los métodos de autenticación están actualmente deshabilitados. Por favor, póngase en contacto con su administrador.", + "passwordResetSuccess": "Contraseña restablecida con éxito", + "passwordResetSuccessDesc": "Su contraseña se ha restablecido con éxito. Ahora puede iniciar sesión con su nueva contraseña." }, "errors": { - "notFound": "Page not found", - "unauthorized": "Unauthorized access", - "forbidden": "Access forbidden", - "serverError": "Server error", - "networkError": "Network error", - "databaseConnection": "Could not connect to the database", - "unknownError": "Unknown error", - "loginFailed": "Login failed", - "failedPasswordReset": "Failed to initiate password reset", - "failedVerifyCode": "Failed to verify reset code", - "failedCompleteReset": "Failed to complete password reset", + "notFound": "Página no encontrada", + "unauthorized": "Acceso no autorizado", + "forbidden": "Acceso prohibido", + "serverError": "Error del servidor", + "networkError": "Error de red", + "databaseConnection": "No se pudo conectar a la base de datos", + "unknownError": "Error desconocido", + "loginFailed": "Error al iniciar sesión", + "failedPasswordReset": "Error al iniciar el restablecimiento de contraseña", + "failedVerifyCode": "Error al verificar el código de restablecimiento", + "failedCompleteReset": "Error al restablecer la contraseña", "invalidTotpCode": "Invalid TOTP code", - "failedOidcLogin": "Failed to start OIDC login", - "failedUserInfo": "Failed to get user info after OIDC login", - "oidcAuthFailed": "OIDC authentication failed", - "noTokenReceived": "No token received from login", - "invalidAuthUrl": "Invalid authorization URL received from backend", + "failedOidcLogin": "Error al iniciar inicio de sesión OIDC", + "failedUserInfo": "Error al obtener la información del usuario después del inicio de sesión OIDC", + "oidcAuthFailed": "Autenticación OIDC fallida", + "noTokenReceived": "No se ha recibido ningún token de inicio de sesión", + "invalidAuthUrl": "URL de autorización no válida recibida del backend", "invalidInput": "Invalid input", - "requiredField": "This field is required", - "minLength": "Minimum length is {{min}}", - "maxLength": "Maximum length is {{max}}", - "invalidEmail": "Invalid email address", - "passwordMismatch": "Passwords do not match", - "passwordLoginDisabled": "Username/password login is currently disabled", - "weakPassword": "Password is too weak", - "usernameExists": "Username already exists", - "emailExists": "Email already exists", - "loadFailed": "Failed to load data", - "saveError": "Failed to save", - "sessionExpired": "Session expired - please log in again" + "requiredField": "Este campo es obligatorio", + "minLength": "La longitud mínima es {{min}}", + "maxLength": "La longitud máxima es {{max}}", + "invalidEmail": "Dirección de correo inválida", + "passwordMismatch": "Las contraseñas no coinciden", + "passwordLoginDisabled": "Nombre de usuario/contraseña está actualmente desactivado", + "weakPassword": "Contraseña demasiado débil", + "usernameExists": "El nombre de usuario ya existe", + "emailExists": "El correo electrónico ya existe", + "loadFailed": "Error al cargar los datos", + "saveError": "Error al guardar", + "sessionExpired": "Sesión caducada - por favor inicia sesión de nuevo" }, "messages": { - "saveSuccess": "Saved successfully", - "saveError": "Failed to save", - "deleteSuccess": "Deleted successfully", - "deleteError": "Failed to delete", - "updateSuccess": "Updated successfully", - "updateError": "Failed to update", - "copySuccess": "Copied to clipboard", - "copyError": "Failed to copy", + "saveSuccess": "Guardado correctamente", + "saveError": "Error al guardar", + "deleteSuccess": "Eliminado correctamente", + "deleteError": "Error al eliminar", + "updateSuccess": "Actualizado correctamente", + "updateError": "Error al actualizar", + "copySuccess": "Copiado al portapapeles", + "copyError": "Error al copiar", "copiedToClipboard": "{{item}} copied to clipboard", - "connectionEstablished": "Connection established", - "connectionClosed": "Connection closed", - "reconnecting": "Reconnecting...", - "processing": "Processing...", - "pleaseWait": "Please wait...", - "registrationDisabled": "New account registration is currently disabled by an admin. Please log in or contact an administrator.", - "databaseConnected": "Database connected successfully", - "databaseConnectionFailed": "Failed to connect to the database server", - "checkServerConnection": "Please check your server connection and try again", - "resetCodeSent": "Reset code sent to Docker logs", - "codeVerified": "Code verified successfully", - "passwordResetSuccess": "Password reset successfully", - "loginSuccess": "Login successful", - "registrationSuccess": "Registration successful" + "connectionEstablished": "Conexión establecida", + "connectionClosed": "Conexión cerrada", + "reconnecting": "Reconectando...", + "processing": "Procesando...", + "pleaseWait": "Por favor espere...", + "registrationDisabled": "El registro de nueva cuenta está actualmente desactivado por un administrador. Por favor, inicie sesión o póngase en contacto con un administrador.", + "databaseConnected": "Base de datos conectada con éxito", + "databaseConnectionFailed": "Error al conectar al servidor de base de datos", + "checkServerConnection": "Por favor, comprueba la conexión de tu servidor e inténtalo de nuevo", + "resetCodeSent": "Restablecer código enviado a los registros de Docker", + "codeVerified": "Código verificado con éxito", + "passwordResetSuccess": "Contraseña restablecida correctamente", + "loginSuccess": "Inicio de sesión correcto", + "registrationSuccess": "Registro exitoso" }, "profile": { - "title": "User Profile", - "description": "Manage your account settings and security", - "security": "Security", - "changePassword": "Change Password", - "twoFactorAuth": "Two-Factor Authentication", - "accountInfo": "Account Information", - "role": "Role", - "admin": "Administrator", - "user": "User", - "authMethod": "Authentication Method", + "title": "Perfil de usuario", + "description": "Administra la configuración de tu cuenta y la seguridad", + "security": "Seguridad", + "changePassword": "Cambiar contraseña", + "twoFactorAuth": "Autenticación de dos factores", + "accountInfo": "Información de la cuenta", + "role": "Rol", + "admin": "Administrador", + "user": "Usuario", + "authMethod": "Método de autenticación", "local": "Local", - "external": "External (OIDC)", - "externalAndLocal": "Dual Auth", - "selectPreferredLanguage": "Select your preferred language for the interface", - "fileColorCoding": "File Color Coding", - "fileColorCodingDesc": "Color-code files by type: folders (red), files (blue), symlinks (green)", - "commandAutocomplete": "Command Autocomplete", - "commandAutocompleteDesc": "Enable Tab key autocomplete suggestions for terminal commands based on your command history", - "defaultSnippetFoldersCollapsed": "Collapse Snippet Folders by Default", - "defaultSnippetFoldersCollapsedDesc": "When enabled, all snippet folders will be collapsed when you open the snippets tab", - "terminalSyntaxHighlighting": "Terminal Syntax Highlighting", - "showHostTags": "Show Host Tags", - "showHostTagsDesc": "Display tags under each host in the sidebar. Disable to hide all tags.", - "account": "Account", - "appearance": "Appearance", - "languageLocalization": "Language & Localization", - "fileManagerSettings": "File Manager", + "external": "Externo (OIDC)", + "externalAndLocal": "Doble Auth", + "selectPreferredLanguage": "Seleccione su idioma preferido para la interfaz", + "fileColorCoding": "Codificación de color de archivo", + "fileColorCodingDesc": "Archivos de código de color por tipo: carpetas (rojo), archivos (azul), enlaces simbólicos (verde)", + "commandAutocomplete": "Comando autocompletado", + "commandAutocompleteDesc": "Habilitar sugerencias de autocompletado de la clave Tab para comandos de terminal basado en su historial de comandos", + "defaultSnippetFoldersCollapsed": "Colapse Carpetas de Snippet por defecto", + "defaultSnippetFoldersCollapsedDesc": "Cuando está habilitado, todas las carpetas de fragmentos se contraerán cuando abra la pestaña de fragmentos", + "terminalSyntaxHighlighting": "Resaltado sintáctico de Terminal", + "showHostTags": "Mostrar etiquetas de host", + "showHostTagsDesc": "Mostrar etiquetas bajo cada host en la barra lateral. Desactivar para ocultar todas las etiquetas.", + "account": "Cuenta", + "appearance": "Apariencia", + "languageLocalization": "Idioma y localización", + "fileManagerSettings": "Gestor de archivos", "terminalSettings": "Terminal", - "hostSidebarSettings": "Host & Sidebar", - "snippetsSettings": "Snippets", - "currentPassword": "Current Password", - "passwordChangedSuccess": "Password changed successfully! Please log in again.", - "failedToChangePassword": "Failed to change password. Please check your current password and try again.", - "theme": "Theme", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", - "appearanceDesc": "Select the color theme for the application", - "terminalSyntaxHighlightingDesc": "Automatically highlight commands, paths, IPs, and log levels in terminal output" + "hostSidebarSettings": "Anfitrión y barra lateral", + "snippetsSettings": "Fragmentos", + "currentPassword": "Contraseña actual", + "passwordChangedSuccess": "¡Contraseña cambiada con éxito! Por favor, inicia sesión de nuevo.", + "failedToChangePassword": "Error al cambiar la contraseña. Por favor, comprueba tu contraseña actual e inténtalo de nuevo.", + "theme": "Tema", + "themeLight": "Claro", + "themeDark": "Oscuro", + "themeSystem": "Sistema", + "appearanceDesc": "Seleccione el tema de color para la aplicación", + "terminalSyntaxHighlightingDesc": "Destacar automáticamente comandos, rutas, direcciones IP y niveles de registro en la salida del terminal" }, "user": { - "failedToLoadVersionInfo": "Failed to load version information" + "failedToLoadVersionInfo": "Error al cargar la información de la versión" }, "placeholders": { "enterCode": "000000", @@ -1901,502 +1901,502 @@ "port": "22", "maxRetries": "3", "retryInterval": "10", - "language": "Language", - "username": "username", - "hostname": "host name", - "folder": "folder", - "password": "password", - "keyPassword": "key password", - "sudoPassword": "sudo password (optional)", - "notes": "add notes about this host...", - "expirationDate": "Select expiration date", - "pastePrivateKey": "Paste your private key here...", - "pastePublicKey": "Paste your public key here...", - "credentialName": "My SSH Server", - "description": "SSH credential description", - "searchCredentials": "Search credentials by name, username, or tags...", - "sshConfig": "endpoint ssh configuration", + "language": "Idioma", + "username": "nombre de usuario", + "hostname": "nombre de host", + "folder": "carpeta", + "password": "contraseña", + "keyPassword": "clave de contraseña", + "sudoPassword": "sudo contraseña (opcional)", + "notes": "añadir notas sobre este host...", + "expirationDate": "Seleccione fecha de caducidad", + "pastePrivateKey": "Pegue su clave privada aquí...", + "pastePublicKey": "Pegue su clave pública aquí...", + "credentialName": "Mi servidor SSH", + "description": "Descripción de credencial SSH", + "searchCredentials": "Buscar credenciales por nombre, nombre de usuario o etiquetas...", + "sshConfig": "configuración de endpoint ssh", "homePath": "/home", - "clientId": "your-client-id", - "clientSecret": "your-client-secret", + "clientId": "su-cliente-id", + "clientSecret": "su-cliente-secreto-", "authUrl": "https://your-provider.com/application/o/authorize/", "redirectUrl": "https://your-provider.com/application/o/termix/", "tokenUrl": "https://your-provider.com/application/o/token/", "userIdField": "sub", - "usernameField": "name", - "scopes": "openid email profile", - "userinfoUrl": "https://your-provider.com/application/o/userinfo/", - "enterUsername": "Enter username to make admin", - "searchHosts": "Search hosts by name, username, IP, folder, tags...", - "enterPassword": "Enter your password", + "usernameField": "nombre", + "scopes": "perfil de correo abierto", + "userinfoUrl": "https://su-provider.com/application/o/userinfo/", + "enterUsername": "Introducir nombre de usuario para hacer administrador", + "searchHosts": "Buscar hosts por nombre, nombre de usuario, IP, carpeta, etiquetas...", + "enterPassword": "Introduzca su contraseña", "totpCode": "6-digit TOTP code", - "searchHostsAny": "Search hosts (try: tag:prod, user:root, ip:192.168)...", - "confirmPassword": "Enter your password to confirm", - "typeHere": "Type here", - "fileName": "Enter file name (e.g., example.txt)", - "folderName": "Enter folder name", - "fullPath": "Enter full path to item", - "currentPath": "Enter current path to item", - "newName": "Enter new name", + "searchHostsAny": "Buscar hosts (intento: tag:prod, user:root, ip:192.168)...", + "confirmPassword": "Introduzca su contraseña para confirmar", + "typeHere": "Escriba aquí", + "fileName": "Introduzca el nombre del archivo (por ej., ejemplo.txt)", + "folderName": "Introduzca nombre de carpeta", + "fullPath": "Introduce la ruta completa al elemento", + "currentPath": "Introduzca la ruta actual al elemento", + "newName": "Introducir nuevo nombre", "socks5Host": "127.0.0.1", - "socks5Username": "proxy username", - "socks5Password": "proxy password", - "socks5PresetName": "e.g., Work VPN Chain", - "socks5PresetDescription": "e.g., Proxy chain for accessing work servers", - "moshCommand": "mosh user@server", + "socks5Username": "nombre de usuario proxy", + "socks5Password": "contraseña proxy", + "socks5PresetName": "por ejemplo, Cadena VPN de trabajo", + "socks5PresetDescription": "por ejemplo, cadena de proxy para acceder a servidores de trabajo", + "moshCommand": "servidor usuario mosh", "defaultPort": "22", "defaultEndpointPort": "224", "defaultMaxRetries": "3", "defaultRetryInterval": "10" }, "leftSidebar": { - "failedToLoadHosts": "Failed to load hosts", - "noFolder": "No Folder", - "passwordRequired": "Password is required", - "failedToDeleteAccount": "Failed to delete account", - "failedToMakeUserAdmin": "Failed to make user admin", - "userIsNowAdmin": "User {{username}} is now an admin", - "removeAdminConfirm": "Are you sure you want to remove admin status from {{username}}?", - "deleteUserConfirm": "Are you sure you want to delete user {{username}}? This action cannot be undone.", - "deleteAccount": "Delete Account", - "closeDeleteAccount": "Close Delete Account", - "deleteAccountWarning": "This action cannot be undone. This will permanently delete your account and all associated data.", - "deleteAccountWarningDetails": "Deleting your account will remove all your data including SSH hosts, configurations, and settings. This action is irreversible.", - "deleteAccountWarningShort": "This action is not reversible and will permanently delete your account.", - "cannotDeleteAccount": "Cannot Delete Account", - "lastAdminWarning": "You are the last admin user. You cannot delete your account as this would leave the system without any administrators. Please make another user an admin first, or contact system support.", - "confirmPassword": "Confirm Password", - "deleting": "Deleting...", - "cancel": "Cancel" + "failedToLoadHosts": "Error al cargar hosts", + "noFolder": "Sin carpeta", + "passwordRequired": "Se requiere contraseña", + "failedToDeleteAccount": "Error al eliminar la cuenta", + "failedToMakeUserAdmin": "Error al hacer administrador de usuario", + "userIsNowAdmin": "Usuario {{username}} es ahora un administrador", + "removeAdminConfirm": "¿Estás seguro de que quieres eliminar el estado del administrador de {{username}}?", + "deleteUserConfirm": "¿Está seguro que desea eliminar el usuario {{username}}? Esta acción no se puede deshacer.", + "deleteAccount": "Eliminar cuenta", + "closeDeleteAccount": "Cerrar Cuenta Eliminar", + "deleteAccountWarning": "Esta acción no se puede deshacer. Esto eliminará permanentemente su cuenta y todos los datos asociados.", + "deleteAccountWarningDetails": "Al eliminar tu cuenta se eliminarán todos tus datos, incluidos los hosts de SSH, configuraciones y ajustes. Esta acción es irreversible.", + "deleteAccountWarningShort": "Esta acción no es revertible y eliminará permanentemente tu cuenta.", + "cannotDeleteAccount": "No se puede eliminar la cuenta", + "lastAdminWarning": "Usted es el último usuario administrador. No puede eliminar su cuenta, ya que esto dejaría el sistema sin ningún administrador. Por favor haga a otro usuario un administrador primero, o póngase en contacto con el soporte del sistema.", + "confirmPassword": "Confirmar contraseña", + "deleting": "Eliminando...", + "cancel": "Cancelar" }, "interface": { "sidebar": "Sidebar", - "toggleSidebar": "Toggle Sidebar", - "close": "Close", - "online": "Online", - "offline": "Offline", - "maintenance": "Maintenance", - "degraded": "Degraded", - "noTunnelConnections": "No tunnel connections configured", - "discord": "Discord", - "connectToSshForOperations": "Connect to SSH to use file operations", - "uploadFile": "Upload File", - "newFile": "New File", - "newFolder": "New Folder", - "rename": "Rename", - "deleteItem": "Delete Item", - "createNewFile": "Create New File", - "createNewFolder": "Create New Folder", - "renameItem": "Rename Item", - "clickToSelectFile": "Click to select a file", - "noSshHosts": "No SSH Hosts", - "sshHosts": "SSH Hosts", - "importSshHosts": "Import SSH Hosts from JSON", - "clientId": "Client ID", - "clientSecret": "Client Secret", + "toggleSidebar": "Cambiar barra lateral", + "close": "Cerrar", + "online": "En línea", + "offline": "Desconectado", + "maintenance": "Mantenimiento", + "degraded": "Degrado", + "noTunnelConnections": "No hay conexiones de túnel configuradas", + "discord": "Discordia", + "connectToSshForOperations": "Conectar a SSH para usar operaciones de archivo", + "uploadFile": "Subir archivo", + "newFile": "Nuevo archivo", + "newFolder": "Nueva carpeta", + "rename": "Renombrar", + "deleteItem": "Eliminar elemento", + "createNewFile": "Crear nuevo archivo", + "createNewFolder": "Crear nueva carpeta", + "renameItem": "Renombrar objeto", + "clickToSelectFile": "Haga clic para seleccionar un archivo", + "noSshHosts": "No hay hosts SSH", + "sshHosts": "Equipos SSH", + "importSshHosts": "Importar SSH Hosts desde JSON", + "clientId": "ID de cliente", + "clientSecret": "Cliente secreto", "error": "Error", - "warning": "Warning", - "deleteAccount": "Delete Account", - "closeDeleteAccount": "Close Delete Account", - "cannotDeleteAccount": "Cannot Delete Account", - "confirmPassword": "Confirm Password", - "deleting": "Deleting...", - "externalAuth": "External Authentication (OIDC)", - "configureExternalProvider": "Configure external identity provider for", - "waitingForRetry": "Waiting for retry", - "retryingConnection": "Retrying connection", - "resetSplitSizes": "Reset split sizes", - "sshManagerAlreadyOpen": "SSH Manager already open", - "disabledDuringSplitScreen": "Disabled during split screen", - "unknown": "Unknown", - "connected": "Connected", - "disconnected": "Disconnected", - "maxRetriesExhausted": "Max retries exhausted", - "endpointHostNotFound": "Endpoint host not found", - "administrator": "Administrator", - "user": "User", - "external": "External", + "warning": "Advertencia", + "deleteAccount": "Eliminar cuenta", + "closeDeleteAccount": "Cerrar Cuenta Eliminar", + "cannotDeleteAccount": "No se puede eliminar la cuenta", + "confirmPassword": "Confirmar contraseña", + "deleting": "Eliminando...", + "externalAuth": "Autenticación externa (OIDC)", + "configureExternalProvider": "Configurar proveedor de identidad externo para", + "waitingForRetry": "Esperando a reintentar", + "retryingConnection": "Reintentando conexión", + "resetSplitSizes": "Restablecer tamaños de división", + "sshManagerAlreadyOpen": "El gestor SSH ya está abierto", + "disabledDuringSplitScreen": "Desactivado durante la pantalla dividida", + "unknown": "Desconocido", + "connected": "Conectado", + "disconnected": "Desconectado", + "maxRetriesExhausted": "Máximas reintentos agotados", + "endpointHostNotFound": "Host de punto final no encontrado", + "administrator": "Administrador", + "user": "Usuario", + "external": "Externo", "local": "Local", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "loading": "Loading...", - "refresh": "Refresh", - "adding": "Adding...", - "makeAdmin": "Make Admin", - "verifying": "Verifying...", - "verifyAndEnable": "Verify and Enable", - "secretKey": "Secret key", + "saving": "Guardando...", + "saveConfiguration": "Guardar configuración", + "loading": "Cargando...", + "refresh": "Refrescar", + "adding": "Añadiendo...", + "makeAdmin": "Hacer Admin", + "verifying": "Verificando...", + "verifyAndEnable": "Verificar y habilitar", + "secretKey": "Clave secreta", "totpQrCode": "TOTP QR Code", - "passwordRequired": "Password is required when using password authentication", - "sshKeyRequired": "SSH Private Key is required when using key authentication", - "keyTypeRequired": "Key Type is required when using key authentication", - "validSshConfigRequired": "Must select a valid SSH configuration from the list", - "updateHost": "Update Host", - "addHost": "Add Host", - "editHost": "Edit Host", - "pinConnection": "Pin Connection", - "authentication": "Authentication", - "password": "Password", - "key": "Key", - "sshPrivateKey": "SSH Private Key", - "keyPassword": "Key Password", - "keyType": "Key Type", - "enableTerminal": "Enable Terminal", - "enableTunnel": "Enable Tunnel", - "enableFileManager": "Enable File Manager", - "defaultPath": "Default Path", - "tunnelConnections": "Tunnel Connections", - "maxRetries": "Max Retries", - "upload": "Upload", - "updateKey": "Update Key", - "productionFolder": "Production", - "databaseServer": "Database Server", - "developmentServer": "Development Server", - "developmentFolder": "Development", - "webServerProduction": "Web Server - Production", - "unknownError": "Unknown error", - "failedToInitiatePasswordReset": "Failed to initiate password reset", - "failedToVerifyResetCode": "Failed to verify reset code", - "failedToCompletePasswordReset": "Failed to complete password reset", + "passwordRequired": "La contraseña es necesaria cuando se utiliza la autenticación de contraseña", + "sshKeyRequired": "SSH Private Key es requerido cuando se utiliza autenticación de clave", + "keyTypeRequired": "Tipo de clave es necesario cuando se utiliza la autenticación de clave", + "validSshConfigRequired": "Debe seleccionar una configuración SSH válida de la lista", + "updateHost": "Actualizar Host", + "addHost": "Añadir Host", + "editHost": "Editar Host", + "pinConnection": "Fijar conexión", + "authentication": "Autenticación", + "password": "Contraseña", + "key": "Clave", + "sshPrivateKey": "Clave privada SSH", + "keyPassword": "Contraseña de clave", + "keyType": "Tipo de clave", + "enableTerminal": "Activar Terminal", + "enableTunnel": "Activar túnel", + "enableFileManager": "Habilitar gestor de archivos", + "defaultPath": "Ruta por defecto", + "tunnelConnections": "Conexiones de túnel", + "maxRetries": "Reintentos máximos", + "upload": "Subir", + "updateKey": "Actualizar clave", + "productionFolder": "Producción", + "databaseServer": "Servidor de base de datos", + "developmentServer": "Servidor de desarrollo", + "developmentFolder": "Desarrollo", + "webServerProduction": "Servidor Web - Producción", + "unknownError": "Error desconocido", + "failedToInitiatePasswordReset": "Error al iniciar el restablecimiento de contraseña", + "failedToVerifyResetCode": "Error al verificar el código de restablecimiento", + "failedToCompletePasswordReset": "Error al restablecer la contraseña", "invalidTotpCode": "Invalid TOTP code", - "failedToStartOidcLogin": "Failed to start OIDC login", - "failedToGetUserInfoAfterOidc": "Failed to get user info after OIDC login", - "loginWithExternalProvider": "Login with external provider", - "loginWithExternal": "Login with External Provider", - "sendResetCode": "Send Reset Code", - "verifyCode": "Verify Code", - "resetPassword": "Reset Password", - "login": "Login", - "signUp": "Sign Up", - "failedToUpdateOidcConfig": "Failed to update OIDC configuration", - "failedToMakeUserAdmin": "Failed to make user admin", - "failedToStartTotpSetup": "Failed to start TOTP setup", - "invalidVerificationCode": "Invalid verification code", - "failedToDisableTotp": "Failed to disable TOTP", - "failedToGenerateBackupCodes": "Failed to generate backup codes" + "failedToStartOidcLogin": "Error al iniciar inicio de sesión OIDC", + "failedToGetUserInfoAfterOidc": "Error al obtener la información del usuario después del inicio de sesión OIDC", + "loginWithExternalProvider": "Iniciar sesión con proveedor externo", + "loginWithExternal": "Iniciar sesión con proveedor externo", + "sendResetCode": "Enviar código de reinicio", + "verifyCode": "Verificar código", + "resetPassword": "Restablecer contraseña", + "login": "Ingresar", + "signUp": "Regístrate", + "failedToUpdateOidcConfig": "Error al actualizar la configuración OIDC", + "failedToMakeUserAdmin": "Error al hacer administrador de usuario", + "failedToStartTotpSetup": "Error al iniciar la configuración del TOTP", + "invalidVerificationCode": "Código de verificación no válido", + "failedToDisableTotp": "Error al desactivar TOTP", + "failedToGenerateBackupCodes": "Error al generar códigos de copia de seguridad" }, "mobile": { - "selectHostToStart": "Select a host to start your terminal session", - "limitedSupportMessage": "Website mobile support is still in progress. Use the mobile app for a better experience.", - "mobileAppInProgress": "Mobile app is in progress", - "mobileAppInProgressDesc": "We're working on a dedicated mobile app to provide a better experience on mobile devices.", - "viewMobileAppDocs": "Install Mobile App", - "mobileAppDocumentation": "Mobile App Documentation" + "selectHostToStart": "Seleccione un host para iniciar su sesión de terminal", + "limitedSupportMessage": "El soporte móvil de la página web sigue en progreso. Utiliza la aplicación móvil para una mejor experiencia.", + "mobileAppInProgress": "Aplicación móvil en progreso", + "mobileAppInProgressDesc": "Estamos trabajando en una aplicación móvil dedicada para proporcionar una mejor experiencia en dispositivos móviles.", + "viewMobileAppDocs": "Instalar aplicación móvil", + "mobileAppDocumentation": "Documentación de Aplicaciones Móviles" }, "dashboard": { - "title": "Dashboard", + "title": "Tablero", "github": "GitHub", - "support": "Support", - "discord": "Discord", - "donate": "Donate", - "serverOverview": "Server Overview", - "version": "Version", - "upToDate": "Up to Date", - "updateAvailable": "Update Available", - "uptime": "Uptime", - "database": "Database", - "healthy": "Healthy", + "support": "Soporte", + "discord": "Discordia", + "donate": "Donar", + "serverOverview": "Vista general del servidor", + "version": "Versión", + "upToDate": "Hasta la fecha", + "updateAvailable": "Actualización disponible", + "uptime": "Actualización", + "database": "Base de datos", + "healthy": "Saludable", "error": "Error", - "totalServers": "Total Servers", - "totalTunnels": "Total Tunnels", - "totalCredentials": "Total Credentials", - "recentActivity": "Recent Activity", + "totalServers": "Total de servidores", + "totalTunnels": "Total de túneles", + "totalCredentials": "Total de credenciales", + "recentActivity": "Actividad reciente", "reset": "Reset", - "loadingRecentActivity": "Loading recent activity...", - "noRecentActivity": "No recent activity", - "quickActions": "Quick Actions", - "addHost": "Add Host", - "addCredential": "Add Credential", - "adminSettings": "Admin Settings", - "userProfile": "User Profile", - "serverStats": "Server Stats", - "loadingServerStats": "Loading server stats...", - "noServerData": "No server data available", + "loadingRecentActivity": "Cargando actividad reciente...", + "noRecentActivity": "No hay actividad reciente", + "quickActions": "Acciones rápidas", + "addHost": "Añadir Host", + "addCredential": "Añadir credencial", + "adminSettings": "Configuración de Admin", + "userProfile": "Perfil de usuario", + "serverStats": "Estadísticas del Servidor", + "loadingServerStats": "Cargando estadísticas del servidor...", + "noServerData": "No hay datos del servidor disponibles", "cpu": "CPU", "ram": "RAM", "notAvailable": "N/A" }, "rbac": { - "shareHost": "Share Host", - "shareHostTitle": "Share Host Access", - "shareHostDescription": "Grant temporary or permanent access to this host", - "targetUser": "Target User", - "selectUser": "Select a user to share with", - "duration": "Duration", - "durationHours": "Duration (hours)", - "neverExpires": "Never expires", - "permissionLevel": "Permission Level", + "shareHost": "Compartir Host", + "shareHostTitle": "Compartir acceso de host", + "shareHostDescription": "Otorgar acceso temporal o permanente a este host", + "targetUser": "Usuario Destino", + "selectUser": "Seleccione un usuario con el que compartir", + "duration": "Duración", + "durationHours": "Duración (horas)", + "neverExpires": "Nunca expira", + "permissionLevel": "Nivel de permisos", "permissionLevels": { - "readonly": "Read-Only", - "readonlyDesc": "Can view only, no command input", - "restricted": "Restricted", - "restrictedDesc": "Blocks dangerous commands (passwd, rm -rf, etc.)", - "monitored": "Monitored", - "monitoredDesc": "Records all commands but doesn't block (Recommended)", - "full": "Full Access", - "fullDesc": "No restrictions (Not recommended)" + "readonly": "Sólo lectura", + "readonlyDesc": "Sólo se puede ver, sin entrada de comando", + "restricted": "Restringido", + "restrictedDesc": "Bloquea comandos peligrosos (passwd, rm -rf, etc.)", + "monitored": "Monitoreado", + "monitoredDesc": "Registra todos los comandos pero no bloquea (Recomendado)", + "full": "Acceso completo", + "fullDesc": "Sin restricciones (no recomendado)" }, - "blockedCommands": "Blocked Commands", - "blockedCommandsPlaceholder": "Enter commands to block, e.g., passwd, rm, dd", - "maxSessionDuration": "Max Session Duration (minutes)", - "createTempUser": "Create Temporary User", - "createTempUserDesc": "Creates a restricted user on the server instead of sharing your credentials. Requires sudo access. Most secure option.", - "expiresAt": "Expires At", - "expiresIn": "Expires in {{hours}} hours", - "expired": "Expired", - "grantedBy": "Granted By", - "accessLevel": "Access Level", - "lastAccessed": "Last Accessed", - "accessCount": "Access Count", - "revokeAccess": "Revoke Access", - "confirmRevokeAccess": "Are you sure you want to revoke access for {{username}}?", - "hostSharedSuccessfully": "Host shared successfully with {{username}}", - "hostAccessUpdated": "Host access updated", - "failedToShareHost": "Failed to share host", - "accessRevokedSuccessfully": "Access revoked successfully", - "failedToRevokeAccess": "Failed to revoke access", - "shared": "Shared", - "sharedHosts": "Shared Hosts", - "sharedWithMe": "Shared With Me", - "noSharedHosts": "No hosts shared with you", - "owner": "Owner", - "viewAccessList": "View Access List", - "accessList": "Access List", - "noAccessGranted": "No access has been granted for this host", - "noAccessGrantedMessage": "No users have been granted access to this host yet", - "manageAccessFor": "Manage access for", + "blockedCommands": "Comandos bloqueados", + "blockedCommandsPlaceholder": "Introduce comandos para bloquear, por ejemplo, passwd, rm, dd", + "maxSessionDuration": "Duración máxima de la sesión (minutos)", + "createTempUser": "Crear usuario temporal", + "createTempUserDesc": "Crea un usuario restringido en el servidor en lugar de compartir tus credenciales. Requiere acceso sudo. La opción más segura.", + "expiresAt": "Caduca el", + "expiresIn": "Expira en {{hours}} horas", + "expired": "Caducó", + "grantedBy": "Concedido por", + "accessLevel": "Nivel de acceso", + "lastAccessed": "Último acceso", + "accessCount": "Número de acceso", + "revokeAccess": "Revocar acceso", + "confirmRevokeAccess": "¿Estás seguro de que quieres revocar el acceso para {{username}}?", + "hostSharedSuccessfully": "Host compartido correctamente con {{username}}", + "hostAccessUpdated": "Acceso de host actualizado", + "failedToShareHost": "Error al compartir host", + "accessRevokedSuccessfully": "Acceso revocado con éxito", + "failedToRevokeAccess": "Error al revocar el acceso", + "shared": "Compartido", + "sharedHosts": "Equipos compartidos", + "sharedWithMe": "Compartido conmigo", + "noSharedHosts": "No hay hosts compartidos contigo", + "owner": "Propietario", + "viewAccessList": "Ver lista de acceso", + "accessList": "Lista de acceso", + "noAccessGranted": "No se ha concedido acceso a este host", + "noAccessGrantedMessage": "Aún no se ha concedido acceso a este equipo a ningún usuario", + "manageAccessFor": "Administrar acceso para", "totalAccessRecords": "{{count}} access record(s)", - "neverAccessed": "Never", - "timesAccessed": "{{count}} time(s)", - "daysRemaining": "{{days}} day(s)", - "hoursRemaining": "{{hours}} hour(s)", - "failedToFetchAccessList": "Failed to fetch access list", - "currentAccess": "Current Access", - "securityWarning": "Security Warning", - "securityWarningMessage": "Sharing credentials gives the user full access to perform any operations on the server, including changing passwords and deleting files. Only share with trusted users.", - "tempUserRecommended": "We recommend enabling 'Create Temporary User' for better security.", - "roleManagement": "Role Management", - "manageRoles": "Manage Roles", - "manageRolesFor": "Manage roles for {{username}}", - "assignRole": "Assign Role", - "removeRole": "Remove Role", - "userRoles": "User Roles", - "permissions": "Permissions", - "systemRole": "System Role", - "customRole": "Custom Role", - "roleAssignedSuccessfully": "Role assigned to {{username}} successfully", - "failedToAssignRole": "Failed to assign role", - "roleRemovedSuccessfully": "Role removed from {{username}} successfully", - "failedToRemoveRole": "Failed to remove role", - "cannotRemoveSystemRole": "Cannot remove system role", - "cannotShareWithSelf": "Cannot share host with yourself", - "noCustomRolesToAssign": "No custom roles available. System roles are auto-assigned.", - "credentialSharingWarning": "Credential Authentication Not Supported for Sharing", - "credentialRequired": "Credential is required when sharing a host", - "credentialRequiredDescription": "This host does not use credential-based authentication. In order to share hosts, due to per-user-encryption, the host must use credential based authentication.", - "auditLogs": "Audit Logs", - "viewAuditLogs": "View Audit Logs", - "action": "Action", - "resourceType": "Resource Type", - "resourceName": "Resource Name", + "neverAccessed": "Nunca", + "timesAccessed": "{{count}} vece(s)", + "daysRemaining": "{{days}} día(s)", + "hoursRemaining": "{{hours}} hora(s)", + "failedToFetchAccessList": "No se pudo obtener la lista de acceso", + "currentAccess": "Acceso actual", + "securityWarning": "Advertencia de seguridad", + "securityWarningMessage": "Compartir credenciales da al usuario acceso completo para realizar cualquier operación en el servidor, incluyendo el cambio de contraseñas y la eliminación de archivos. Sólo compartir con usuarios de confianza.", + "tempUserRecommended": "Recomendamos habilitar 'Crear usuario temporal' para una mejor seguridad.", + "roleManagement": "Gestión de Rol", + "manageRoles": "Administrar roles", + "manageRolesFor": "Administrar roles para {{username}}", + "assignRole": "Asignar rol", + "removeRole": "Quitar rol", + "userRoles": "Roles de usuario", + "permissions": "Permisos", + "systemRole": "Rol del sistema", + "customRole": "Rol personalizado", + "roleAssignedSuccessfully": "Rol asignado a {{username}} con éxito", + "failedToAssignRole": "No se pudo asignar el rol", + "roleRemovedSuccessfully": "Rol eliminado de {{username}} con éxito", + "failedToRemoveRole": "Error al eliminar el rol", + "cannotRemoveSystemRole": "No se puede eliminar el rol del sistema", + "cannotShareWithSelf": "No se puede compartir host contigo", + "noCustomRolesToAssign": "No hay roles personalizados disponibles. Los roles del sistema están asignados automáticamente.", + "credentialSharingWarning": "Autenticación de credenciales no soportada para compartir", + "credentialRequired": "Se requiere credencial al compartir un host", + "credentialRequiredDescription": "Este host no utiliza autenticación basada en credenciales. Para compartir hosts, debido al cifrado por usuario, el host debe usar autenticación basada en credenciales.", + "auditLogs": "Auditoría", + "viewAuditLogs": "Ver registros de auditoría", + "action": "Accin", + "resourceType": "Tipo de recurso", + "resourceName": "Nombre del recurso", "timestamp": "Timestamp", - "ipAddress": "IP Address", - "userAgent": "User Agent", - "success": "Success", - "failed": "Failed", - "details": "Details", - "noAuditLogs": "No audit logs available", - "sessionRecordings": "Session Recordings", - "viewRecording": "View Recording", - "downloadRecording": "Download Recording", - "dangerousCommand": "Dangerous Command Detected", - "commandBlocked": "Command Blocked", - "terminateSession": "Terminate Session", - "sessionTerminated": "Session terminated by host owner", - "sharedAccessExpired": "Your shared access to this host has expired", - "sharedAccessExpiresIn": "Shared access expires in {{hours}} hours", + "ipAddress": "Dirección IP", + "userAgent": "Agente de usuario", + "success": "Éxito", + "failed": "Fallo", + "details": "Detalles", + "noAuditLogs": "No hay registros de auditoría disponibles", + "sessionRecordings": "Grabaciones de sesión", + "viewRecording": "Ver grabación", + "downloadRecording": "Descargar Grabación", + "dangerousCommand": "Comando peligroso detectado", + "commandBlocked": "Comando bloqueado", + "terminateSession": "Terminar sesión", + "sessionTerminated": "Sesión terminada por el propietario del host", + "sharedAccessExpired": "Tu acceso compartido a este host ha caducado", + "sharedAccessExpiresIn": "El acceso compartido expira en {{hours}} horas", "roles": { "label": "Roles", - "admin": "Administrator", - "user": "User" + "admin": "Administrador", + "user": "Usuario" }, - "createRole": "Create Role", - "editRole": "Edit Role", - "roleName": "Role Name", - "displayName": "Display Name", - "description": "Description", - "assignRoles": "Assign Roles", - "userRoleAssignment": "User-Role Assignment", - "selectUserPlaceholder": "Select a user", - "searchUsers": "Search users...", - "noUserFound": "No user found", - "currentRoles": "Current Roles", - "noRolesAssigned": "No roles assigned", - "assignNewRole": "Assign New Role", - "selectRolePlaceholder": "Select a role", - "searchRoles": "Search roles...", - "noRoleFound": "No role found", - "assign": "Assign", - "roleCreatedSuccessfully": "Role created successfully", - "roleUpdatedSuccessfully": "Role updated successfully", - "roleDeletedSuccessfully": "Role deleted successfully", - "failedToLoadRoles": "Failed to load roles", - "failedToSaveRole": "Failed to save role", - "failedToDeleteRole": "Failed to delete role", - "roleDisplayNameRequired": "Role display name is required", - "roleNameRequired": "Role name is required", - "roleNameHint": "Use lowercase letters, numbers, underscores, and hyphens only", - "displayNamePlaceholder": "Developer", - "descriptionPlaceholder": "Software developers and engineers", - "confirmDeleteRole": "Delete Role", - "confirmDeleteRoleDescription": "Are you sure you want to delete the role '{{name}}'? This action cannot be undone.", - "confirmRemoveRole": "Remove Role", - "confirmRemoveRoleDescription": "Are you sure you want to remove this role from the user?", - "editRoleDescription": "Update role information", - "createRoleDescription": "Create a new custom role for grouping users", - "assignRolesDescription": "Manage role assignments for users", - "noRoles": "No roles found", - "selectRole": "Select Role", - "type": "Type", - "user": "User", - "role": "Role", - "saveHostFirst": "Save Host First", - "saveHostFirstDescription": "Please save the host before configuring sharing settings.", - "shareWithUser": "Share with User", - "shareWithRole": "Share with Role", - "share": "Share", + "createRole": "Crear rol", + "editRole": "Editar rol", + "roleName": "Nombre del Rol", + "displayName": "Mostrar nombre", + "description": "Descripción", + "assignRoles": "Asignar roles", + "userRoleAssignment": "Asignación de Rol de Usuario", + "selectUserPlaceholder": "Seleccione un usuario", + "searchUsers": "Buscar usuarios...", + "noUserFound": "Usuario no encontrado", + "currentRoles": "Roles actuales", + "noRolesAssigned": "No hay roles asignados", + "assignNewRole": "Asignar nuevo rol", + "selectRolePlaceholder": "Seleccione un rol", + "searchRoles": "Buscar roles...", + "noRoleFound": "Rol no encontrado", + "assign": "Asignar", + "roleCreatedSuccessfully": "Rol creado con éxito", + "roleUpdatedSuccessfully": "Rol actualizado correctamente", + "roleDeletedSuccessfully": "Rol eliminado correctamente", + "failedToLoadRoles": "Error al cargar los roles", + "failedToSaveRole": "Error al guardar el rol", + "failedToDeleteRole": "Error al eliminar el rol", + "roleDisplayNameRequired": "Nombre del rol para mostrar es requerido", + "roleNameRequired": "El nombre del rol es requerido", + "roleNameHint": "Usar solo letras en minúsculas, números, guiones bajos y guiones bajos", + "displayNamePlaceholder": "Desarrollador", + "descriptionPlaceholder": "Desarrolladores de software e ingenieros", + "confirmDeleteRole": "Eliminar rol", + "confirmDeleteRoleDescription": "¿Está seguro de que desea eliminar el rol '{{name}}'? Esta acción no se puede deshacer.", + "confirmRemoveRole": "Quitar rol", + "confirmRemoveRoleDescription": "¿Está seguro que desea eliminar este rol del usuario?", + "editRoleDescription": "Actualizar información del rol", + "createRoleDescription": "Crear un nuevo rol personalizado para agrupar usuarios", + "assignRolesDescription": "Administrar asignaciones de roles para usuarios", + "noRoles": "No hay roles", + "selectRole": "Seleccionar rol", + "type": "Tipo", + "user": "Usuario", + "role": "Rol", + "saveHostFirst": "Guardar Host primero", + "saveHostFirstDescription": "Por favor, guarde el host antes de configurar la configuración de compartir.", + "shareWithUser": "Compartir con el usuario", + "shareWithRole": "Compartir con Rol", + "share": "Compartir", "target": "Target", - "expires": "Expires", - "never": "Never", - "noAccessRecords": "No access records found", - "sharedSuccessfully": "Shared successfully", - "failedToShare": "Failed to share", - "confirmRevokeAccessDescription": "Are you sure you want to revoke this access?", - "hours": "hours", - "sharing": "Sharing", - "selectUserAndRole": "Please select both a user and a role", - "view": "View Only", - "viewDesc": "Due to the Termix encryption system, other permission levels will come at a later date" + "expires": "Caduca", + "never": "Nunca", + "noAccessRecords": "No se encontraron registros de acceso", + "sharedSuccessfully": "Compartido con éxito", + "failedToShare": "Error al compartir", + "confirmRevokeAccessDescription": "¿Estás seguro de que quieres revocar este acceso?", + "hours": "horas", + "sharing": "Compartiendo", + "selectUserAndRole": "Por favor, seleccione tanto un usuario como un rol", + "view": "Ver solo", + "viewDesc": "Debido al sistema de cifrado de Termix, otros niveles de permisos vendrán en una fecha posterior" }, "commandPalette": { - "searchPlaceholder": "Search for hosts or quick actions...", - "recentActivity": "Recent Activity", + "searchPlaceholder": "Buscar hosts o acciones rápidas...", + "recentActivity": "Actividad reciente", "navigation": "Navigation", - "addHost": "Add Host", - "addCredential": "Add Credential", - "adminSettings": "Admin Settings", - "userProfile": "User Profile", - "updateLog": "Update Log", - "hosts": "Hosts", - "openServerDetails": "Open Server Details", - "openFileManager": "Open File Manager", - "edit": "Edit", - "links": "Links", + "addHost": "Añadir Host", + "addCredential": "Añadir credencial", + "adminSettings": "Configuración de Admin", + "userProfile": "Perfil de usuario", + "updateLog": "Actualizar Log", + "hosts": "Anfitriones", + "openServerDetails": "Abrir detalles del servidor", + "openFileManager": "Abrir gestor de archivos", + "edit": "Editar", + "links": "Enlaces", "github": "GitHub", - "support": "Support", - "discord": "Discord", - "donate": "Donate", - "press": "Press", - "toToggle": "to toggle", - "close": "Close", - "hostManager": "Host Manager", - "pressToToggle": "Press Left Shift twice to open the command palette" + "support": "Soporte", + "discord": "Discordia", + "donate": "Donar", + "press": "Presione", + "toToggle": "para alternar", + "close": "Cerrar", + "hostManager": "Gestor de Anfitriones", + "pressToToggle": "Presione Izquierda Mayús dos veces para abrir la paleta de comandos" }, "docker": { - "notEnabled": "Docker is not enabled for this host", - "validating": "Validating Docker...", - "connectingToHost": "Connecting to host...", + "notEnabled": "Docker no está habilitado para este host", + "validating": "Validando Docker...", + "connectingToHost": "Conectando con el anfitrión...", "error": "Error", - "errorCode": "Error code: {{code}}", + "errorCode": "Código de error: {{code}}", "version": "Docker {{version}}", - "containerStarted": "Container {{name}} started", - "failedToStartContainer": "Failed to start container {{name}}", - "containerStopped": "Container {{name}} stopped", - "failedToStopContainer": "Failed to stop container {{name}}", - "containerRestarted": "Container {{name}} restarted", - "failedToRestartContainer": "Failed to restart container {{name}}", - "containerPaused": "Container {{name}} paused", - "containerUnpaused": "Container {{name}} unpaused", - "failedToTogglePauseContainer": "Failed to toggle pause state for container {{name}}", - "containerRemoved": "Container {{name}} removed", - "failedToRemoveContainer": "Failed to remove container {{name}}", - "image": "Image", + "containerStarted": "Contenedor {{name}} iniciado", + "failedToStartContainer": "Error al iniciar el contenedor {{name}}", + "containerStopped": "Contenedor {{name}} detenido", + "failedToStopContainer": "No se pudo detener el contenedor {{name}}", + "containerRestarted": "Contenedor {{name}} reiniciado", + "failedToRestartContainer": "Error al reiniciar el contenedor {{name}}", + "containerPaused": "Contenedor {{name}} en pausa", + "containerUnpaused": "Contenedor {{name}} despausado", + "failedToTogglePauseContainer": "Error al cambiar el estado de pausa para el contenedor {{name}}", + "containerRemoved": "Contenedor {{name}} eliminado", + "failedToRemoveContainer": "Error al eliminar el contenedor {{name}}", + "image": "Imagen", "idLabel": "ID", - "ports": "Ports", - "noPorts": "No ports", - "created": "Created", - "start": "Start", - "stop": "Stop", - "pause": "Pause", + "ports": "Puertos", + "noPorts": "Sin puertos", + "created": "Creado", + "start": "Comenzar", + "stop": "Parar", + "pause": "Pausa", "unpause": "Unpause", - "restart": "Restart", - "remove": "Remove", - "removeContainer": "Remove Container", - "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", - "runningContainerWarning": "Warning: This container is currently running. Removing it will stop the container first.", - "removing": "Removing...", - "loadingContainers": "Loading containers...", - "noContainersFound": "No containers found", - "noContainersFoundHint": "No Docker containers are available on this host", - "searchPlaceholder": "Search containers...", - "filterByStatusPlaceholder": "Filter by status", - "allContainersCount": "All ({{count}})", + "restart": "Reiniciar", + "remove": "Eliminar", + "removeContainer": "Eliminar Contenedor", + "confirmRemoveContainer": "¿Está seguro de que desea eliminar el contenedor '{{name}}'? Esta acción no se puede deshacer.", + "runningContainerWarning": "Advertencia: Este contenedor se está ejecutando. Eliminarlo detendrá el contenedor primero.", + "removing": "Eliminando...", + "loadingContainers": "Cargando contenedores...", + "noContainersFound": "No hay contenedores", + "noContainersFoundHint": "No hay contenedores Docker disponibles en este host", + "searchPlaceholder": "Buscar contenedores...", + "filterByStatusPlaceholder": "Filtrar por estado", + "allContainersCount": "Todos ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "No containers match your filters", - "noContainersMatchFiltersHint": "Try adjusting your search or filter criteria", - "containerMustBeRunningToViewStats": "Container must be running to view statistics", - "failedToFetchStats": "Failed to fetch container statistics", - "containerNotRunning": "Container not running", - "startContainerToViewStats": "Start the container to view statistics", - "loadingStats": "Loading statistics...", - "errorLoadingStats": "Error loading statistics", - "noStatsAvailable": "No statistics available", - "cpuUsage": "CPU Usage", - "current": "Current", - "memoryUsage": "Memory Usage", - "usedLimit": "Used / Limit", - "percentage": "Percentage", - "networkIo": "Network I/O", + "noContainersMatchFilters": "Ningún contenedor coincide con sus filtros", + "noContainersMatchFiltersHint": "Intente ajustar su criterio de búsqueda o filtro", + "containerMustBeRunningToViewStats": "El contenedor debe estar ejecutándose para ver las estadísticas", + "failedToFetchStats": "Error al obtener las estadísticas del contenedor", + "containerNotRunning": "Contenedor no ejecutándose", + "startContainerToViewStats": "Iniciar el contenedor para ver las estadísticas", + "loadingStats": "Cargando estadísticas...", + "errorLoadingStats": "Error al cargar estadísticas", + "noStatsAvailable": "No hay estadísticas disponibles", + "cpuUsage": "Uso de CPU", + "current": "Actual", + "memoryUsage": "Uso de memoria", + "usedLimit": "Usado / Límite", + "percentage": "Porcentaje", + "networkIo": "E/S de red", "input": "Input", - "output": "Output", - "blockIo": "Block I/O", - "read": "Read", - "write": "Write", + "output": "Salida", + "blockIo": "Bloquear E/S", + "read": "Leer", + "write": "Escribir", "pids": "PIDs", - "containerInformation": "Container Information", - "name": "Name", + "containerInformation": "Información del contenedor", + "name": "Nombre", "id": "ID", - "state": "State", - "disconnectedFromContainer": "Disconnected from container", - "containerMustBeRunning": "Container must be running to access console", - "authenticationRequired": "Authentication required", - "verificationCodePrompt": "Enter verification code", - "totpVerificationFailed": "TOTP verification failed. Please try again.", - "connectedTo": "Connected to {{containerName}}", - "disconnected": "Disconnected", - "consoleError": "Console error", + "state": "Estado", + "disconnectedFromContainer": "Desconectado del contenedor", + "containerMustBeRunning": "El contenedor debe estar ejecutándose para acceder a la consola", + "authenticationRequired": "Autenticación requerida", + "verificationCodePrompt": "Introduzca código de verificación", + "totpVerificationFailed": "Falló la verificación del TOTP. Por favor, inténtelo de nuevo.", + "connectedTo": "Conectado a {{containerName}}", + "disconnected": "Desconectado", + "consoleError": "Error de consola", "errorMessage": "Error: {{message}}", - "failedToConnect": "Failed to connect to container", - "console": "Console", - "selectShell": "Select shell", + "failedToConnect": "No se pudo conectar al contenedor", + "console": "Consola", + "selectShell": "Seleccionar shell", "bash": "Bash", - "sh": "sh", - "ash": "ash", - "connecting": "Connecting...", - "connect": "Connect", - "disconnect": "Disconnect", - "notConnected": "Not connected", - "clickToConnect": "Click connect to start a shell session", - "connectingTo": "Connecting to {{containerName}}...", - "containerNotFound": "Container not found", - "backToList": "Back to List", - "logs": "Logs", - "stats": "Stats", - "consoleTab": "Console", - "startContainerToAccess": "Start the container to access the console" + "sh": "m", + "ash": "ceniza", + "connecting": "Conectando...", + "connect": "Conectar", + "disconnect": "Desconectar", + "notConnected": "No conectado", + "clickToConnect": "Haga clic en conectar para iniciar una sesión de shell", + "connectingTo": "Conectando a {{containerName}}...", + "containerNotFound": "Contenedor no encontrado", + "backToList": "Volver a la lista", + "logs": "Registros", + "stats": "Estadísticas", + "consoleTab": "Consola", + "startContainerToAccess": "Iniciar el contenedor para acceder a la consola" }, "theme": { - "switchToLight": "Switch to Light", - "switchToDark": "Switch to Dark" + "switchToLight": "Cambiar a Luz", + "switchToDark": "Cambiar a Oscuro" } }