mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 07:05:24 +00:00
* fix(sso): send the PKCE verifier for GitHub login (#1534) * fix(remote-desktop): clip cursor overflow without disabling zoom (#1535) * test(remote-desktop): preserve sessions beyond one hour (#1536) * fix(hosts): expose controls for overflowing editor tabs (#1537) * fix(hosts): expose controls for overflowing editor tabs * test(hosts): mock resize observation in admin panel tests * fix(status): skip TCP probes while host sessions are active (#1538) * fix(database): batch session activity persistence (#1539) * docs(api): describe cookie and API key authentication (#1540) * fix(snippets): repair missing note column on SQLite upgrades (#1541) * fix(docker): retain stored SSH credential association (#1543) * fix(file-manager): render transfer toasts without plugin hooks (#1546) * feat(hosts): keep compact row actions inline (#1547) * fix(auth): allow retrying unavailable second-factor interfaces (#1549) * fix(auth): reject unresolved legacy identity provisioning (#1550) * fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551) * fix(tmux): pass full session info to the terminal's session picker (#1552) The tmux.sessions service reduced detected sessions to bare names, but the picker reads session.name, so every entry rendered blank and selecting one sent an empty name, which created a new session instead of attaching. * fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553) The column holds the text "true"/"false", and the resolver passed it through as-is. The string "false" is truthy, so the password provider treated every saved host as forced keyboard-interactive and left the password out. Jump hops are built straight from the resolved host, so a password hop whose server doesn't offer keyboard-interactive failed with "All configured authentication methods failed". * fix(database): batch database saves for bulk host writes (#1554) * fix(database): yield to the event loop between database saves Each SQLite save serializes and encrypts the whole database into new buffers, which V8 only releases once the event loop turns. Boot migrations and bulk host import write plugin settings per host and per key in an awaited loop, so hundreds of full copies piled up and the container ran out of memory. * fix(database): save once per bulk host write instead of once per row On SQLite every repository write force-saves the whole database. Boot plugin data migrations, host defaults materialization and the bulk host routes write one row per host per setting, so they serialized and encrypted the full database hundreds of times in a row. DatabaseSaveTrigger.batched wraps a function so force saves made while it runs collapse into a single save when it finishes. Nested scopes fold into the outer one, and work that outlives its scope saves normally. * feat(hosts): add instance-wide predefined tag suggestions (#1548) * feat(hosts): add shared predefined tag suggestions * style(hosts): format tag catalog routes * test(database): advance fake timers past the save yield (#1555) * fix(i18n): complete Simplified Chinese core and plugin translations (#1542) * fix(i18n): complete Chinese onboarding and navigation labels * fix(i18n): translate remaining Chinese core and plugin interfaces * fix(i18n): translate host editor tab overflow controls * fix(i18n): use consistent Chinese fleet terminology * fix(i18n): localize hardcoded controls and plugin views * fix(i18n): translate built-in homepage widget catalog * test(homepage): follow translated timezone placeholder * fix(i18n): translate plugin-provided homepage widgets * fix(i18n): localize feature settings section titles * fix: 2.8 oidc accounts unable to sign in after upgrading (#1381) * fix: plugins losing the saved ssh login when copying a host (#1391) * fix: fleets, proxmox and automations not getting the host sudo password * fix: host imports running a defaults pass and metrics restart per host (#1384) * fix: high cpu from status probes and full database saves on every sample (#1300) * fix: user data export freezing the server (#1393) * fix: op:// secret references rejected as ssh keys on credentials (#1394) * fix: slow file deletes from the trash lookups on every delete (#1390) * fix: add openapi docs and error handling to host tag routes * test: compare download stream buffers directly so it stops timing out * chore: drop em dash from host row comment * chore: update release notes for 2.9.1 * fix: restore space to add host tags and redesign predefined tags editor * fix: host key silently accepted when the host is missing from the database (#1397) * fix: clearer host login failed status label and fix its translations (#1396) * chore: add host key and status label fixes to release notes * fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles * chore: increment ver * fix(audit): store plugin entries with no acting user as a null user_id (#1556) Plugin audit entries written outside a request used the literal "system" as user_id. That column references users.id, so the insert was refused (Postgres logs it as an FK violation) and the entry was silently dropped. Write null instead and keep "system" / plugin:<id> in username. * chore: add sso/ldap dialog and audit log fixes to release notes * fix: tunnels and host settings missing from shared hosts on desktop * fix: remote desktop logins missing from shared hosts on desktop * fix: simplify host status to online/offline and keep it live without a refresh * chore: sync Crowdin translations for 2.9.1 --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
556 lines
30 KiB
JSON
556 lines
30 KiB
JSON
{
|
|
"nav": {
|
|
"files": "Archivos",
|
|
"sftp": "SFTP",
|
|
"openFileManager": "Abrir gestor de archivos"
|
|
},
|
|
"permissions": {
|
|
"use": {
|
|
"title": "Utilice el administrador de archivos",
|
|
"description": "Explora, edita y transfiere archivos a través de SFTP."
|
|
}
|
|
},
|
|
"settings": {
|
|
"host": {
|
|
"enable": {
|
|
"label": "Habilitar Gestor de archivos",
|
|
"description": "Explore y edite archivos en este servidor a través de SFTP."
|
|
},
|
|
"defaultPath": {
|
|
"label": "Ruta predeterminada"
|
|
},
|
|
"scpLegacy": {
|
|
"label": "Modo SCP heredado"
|
|
}
|
|
},
|
|
"user": {
|
|
"transferConcurrency": {
|
|
"label": "Transferencias simultáneas de archivos",
|
|
"description": "¿Cuántos archivos sube o descarga simultáneamente el gestor local/remoto? Reduzca este valor si su servidor limita los canales SFTP."
|
|
},
|
|
"confirmBeforeTrash": {
|
|
"label": "Confirme antes de mover los archivos a la papelera.",
|
|
"description": "Pregunte antes de mover archivos remotos a la papelera. La eliminación permanente aún requiere confirmación."
|
|
}
|
|
}
|
|
},
|
|
"hostCapability": {
|
|
"label": "Gestor de archivos"
|
|
},
|
|
"fileManager": {
|
|
"noHostSelected": "Ningún host seleccionado",
|
|
"initializingEditor": "Inicializando editor...",
|
|
"file": "Archivo",
|
|
"folder": "Carpeta",
|
|
"uploadFile": "Subir archivo",
|
|
"downloadFile": "Descargar",
|
|
"extractArchive": "Extraer archivo",
|
|
"extractingArchive": "Extrayendo {{name}}...",
|
|
"archiveExtractedSuccessfully": "{{name}} extraído correctamente",
|
|
"extractFailed": "Extracción fallida",
|
|
"compressFile": "Comprimir archivo",
|
|
"compressFiles": "Comprimir archivos",
|
|
"compressFilesDesc": "Comprimir {{count}} elementos en un archivo",
|
|
"archiveName": "Nombre del archivo",
|
|
"enterArchiveName": "Introduzca el nombre del archivo...",
|
|
"compressionFormat": "Formato de compresión",
|
|
"selectedFiles": "Archivos seleccionados",
|
|
"andMoreFiles": "y {{count}} más...",
|
|
"compress": "Comprimir",
|
|
"compressingFiles": "Comprimiendo {{count}} elementos en {{name}}...",
|
|
"filesCompressedSuccessfully": "{{name}} creado correctamente",
|
|
"compressFailed": "La compresión falló",
|
|
"edit": "Editar",
|
|
"preview": "Vista previa",
|
|
"previous": "Anterior",
|
|
"next": "Siguiente",
|
|
"pageXOfY": "Página {{current}} de {{total}}",
|
|
"zoomOut": "Alejar",
|
|
"zoomIn": "Acercar",
|
|
"newFile": "Nuevo archivo",
|
|
"newFolder": "Nueva carpeta",
|
|
"rename": "Renombrar",
|
|
"uploading": "Subiendo...",
|
|
"uploadingFile": "Subiendo {{name}}...",
|
|
"uploadingChunk": "Cargando {{name}}: {{percent}}% (parte {{chunk}} de {{total}})",
|
|
"fileName": "Nombre del archivo",
|
|
"folderName": "Nombre de la carpeta",
|
|
"fileUploadedSuccessfully": "Archivo \"{{name}}\" subido correctamente",
|
|
"failedToUploadFile": "Error al subir el archivo",
|
|
"uploadingFolderFiles": "Subiendo {{count}} archivo(s)...",
|
|
"uploadedFolderFiles": "Se subieron correctamente los archivos {{count}}",
|
|
"uploadedFolderPartial": "Se subieron {{uploaded}} archivos, {{failed}} falló.",
|
|
"fileDownloadedSuccessfully": "Archivo \"{{name}}\" descargado correctamente",
|
|
"failedToDownloadFile": "Error al descargar el archivo",
|
|
"fileCreatedSuccessfully": "Archivo \"{{name}}\" creado correctamente",
|
|
"folderCreatedSuccessfully": "Carpeta \"{{name}}\" creada correctamente",
|
|
"failedToCreateItem": "No se pudo crear el elemento",
|
|
"operationFailed": "La operación {{operation}} falló para {{name}}: {{error}}",
|
|
"failedToResolveSymlink": "No se pudo resolver el enlace simbólico",
|
|
"itemsDeletedSuccessfully": "{{count}} elementos eliminados correctamente",
|
|
"failedToDeleteItems": "No se pudieron eliminar los elementos",
|
|
"sudoPasswordRequired": "Se requiere contraseña de administrador",
|
|
"enterSudoPassword": "Introduzca la contraseña sudo para continuar esta operación",
|
|
"sudoPassword": "Contraseña sudo",
|
|
"sudoOperationFailed": "La operación sudo falló",
|
|
"sudoAuthFailed": "La autenticación sudo falló",
|
|
"dragFilesToUpload": "Suelte los archivos aquí para subirlos",
|
|
"dropToUploadHere": "Arrastra para subir aquí",
|
|
"dropToDownloadHere": "Haz clic aquí para descargar",
|
|
"localFiles": "Local",
|
|
"showLocalFiles": "Mostrar archivos locales (vista dividida)",
|
|
"hideLocalFiles": "Ocultar archivos locales",
|
|
"localHome": "Carpeta de inicio",
|
|
"localPathPlaceholder": "Ruta de la carpeta local",
|
|
"localShowHidden": "Mostrar archivos ocultos",
|
|
"localHideHidden": "Ocultar archivos ocultos",
|
|
"localRevealInFileManager": "Mostrar en el administrador de archivos del sistema",
|
|
"localCannotOpenFolder": "No se puede abrir la carpeta",
|
|
"localItemCount": "{{count}} elementos",
|
|
"localSelectedCount": "{{count}} seleccionados",
|
|
"back": "Volver",
|
|
"forward": "Adelante",
|
|
"up": "Arriba",
|
|
"kind": "Amable",
|
|
"localUploadingProgress": "Subiendo {{current}} de {{total}}",
|
|
"localDownloadingProgress": "Descargando {{current}} de {{total}}",
|
|
"localTransferInFlight": "{{count}} al instante",
|
|
"localPreparingDownload": "Preparando la descarga...",
|
|
"localTransferCancelled": "Transferencia cancelada",
|
|
"localNothingToTransfer": "Nada que transferir",
|
|
"localUploadComplete": "Archivo(s) subido(s) {{count}}",
|
|
"localUploadFailed": "Error al cargar la página",
|
|
"localUploadPartial": "Se subieron {{done}} archivos, {{failed}} falló.",
|
|
"localDownloadComplete": "Archivo(s) descargado(s) {{count}}",
|
|
"localDownloadFailed": "Error en la descarga",
|
|
"localDownloadPartial": "Se descargaron {{done}} archivos, {{failed}} falló.",
|
|
"localReplaceExistingPrompt": "Ya existen {{count}} elementos en esta carpeta. ¿Desea reemplazarlos?",
|
|
"localReplace": "Reemplazar",
|
|
"localSkipExisting": "Saltar",
|
|
"localSkippedExisting": "Se omitieron {{count}} elementos existentes",
|
|
"localUnsafeNamesSkipped": "Se omitieron {{count}} elementos cuyos nombres no se pueden usar en este ordenador.",
|
|
"localOpen": "Abrir",
|
|
"localOpenFolder": "Abrir carpeta",
|
|
"localUploadToRemote": "Subir al servidor",
|
|
"localUploadToRemoteMany": "Sube {{count}} elementos al servidor",
|
|
"localMoveToTrash": "Mover a la basura",
|
|
"localMoveToTrashMany": "Mover {{count}} elementos a la Papelera",
|
|
"localTrashConfirmSingle": "¿Mover \"{{name}}\" a la papelera?",
|
|
"localTrashConfirmFolder": "¿Mover la carpeta \"{{name}}\" y todo su contenido a la Papelera?",
|
|
"localTrashConfirmMany": "¿Mover {{count}} elementos a la Papelera?",
|
|
"localTrashed": "Se movieron {{count}} elementos a la Papelera",
|
|
"localTrashFailed": "No se pudo mover a la papelera",
|
|
"localRenameFailed": "Error al cambiar el nombre",
|
|
"localCreateFailed": "No se pudo crear el artículo.",
|
|
"goToParentFolder": "Ir a la carpeta principal",
|
|
"resizeSidebar": "Arrastra para cambiar el tamaño de la barra lateral (haz doble clic para restablecer).",
|
|
"resizeLocalPane": "Arrastra para cambiar el tamaño del panel local (haz doble clic para restablecer).",
|
|
"columns": "Columnas",
|
|
"columnsHint": "Haz clic con el botón derecho para elegir las columnas.",
|
|
"emptyFolder": "Esta carpeta está vacía",
|
|
"searchFiles": "Buscar archivos...",
|
|
"upload": "Subir",
|
|
"selectHostToStart": "Seleccione un host para iniciar la gestión de archivos",
|
|
"sshRequiredForFileManager": "El gestor de archivos requiere SSH. Este host no tiene SSH habilitado.",
|
|
"failedToConnect": "No se pudo conectar a SSH",
|
|
"failedToLoadDirectory": "No se pudo cargar el directorio",
|
|
"noSSHConnection": "No hay conexión SSH disponible",
|
|
"copy": "Copiar",
|
|
"cut": "Cortar",
|
|
"paste": "Pegar",
|
|
"copyPath": "Copiar ruta",
|
|
"copyPaths": "Copiar rutas",
|
|
"delete": "Eliminar",
|
|
"properties": "Propiedades",
|
|
"refresh": "Actualizar",
|
|
"downloadFiles": "Descargar {{count}} archivos al navegador",
|
|
"copyFiles": "Copiar {{count}} elementos",
|
|
"cutFiles": "Cortar {{count}} elementos",
|
|
"deleteFiles": "Eliminar {{count}} elementos",
|
|
"filesCopiedToClipboard": "{{count}} elementos copiados al portapapeles",
|
|
"filesCutToClipboard": "{{count}} elementos cortados al portapapeles",
|
|
"pathCopiedToClipboard": "Ruta copiada al portapapeles",
|
|
"pathsCopiedToClipboard": "{{count}} rutas copiadas al portapapeles",
|
|
"failedToCopyPath": "Error al copiar la ruta al portapapeles",
|
|
"copyFolderLink": "Copiar enlace a la carpeta",
|
|
"copyCurrentFolderLink": "Copiar enlace a la carpeta actual",
|
|
"folderLinkCopied": "Enlace a la carpeta copiado al portapapeles",
|
|
"failedToCopyFolderLink": "Error al copiar el enlace a la carpeta",
|
|
"movedItems": "{{count}} elementos movidos",
|
|
"failedToDeleteItem": "Error al eliminar el elemento",
|
|
"itemRenamedSuccessfully": "{{type}} renombrado con éxito",
|
|
"failedToRenameItem": "Error al renombrar el elemento",
|
|
"download": "Descargar",
|
|
"openExternalEditor": "Abrir externamente",
|
|
"chooseExternalEditor": "Elegir editor externo",
|
|
"externalEditorSelected": "Editor externo seleccionado",
|
|
"externalEditorDesktopOnly": "El editor externo solo está disponible en la aplicación de escritorio",
|
|
"externalEditorOpened": "Abierto en el editor externo. Al guardar allí se subirán los cambios al servidor.",
|
|
"failedToOpenExternalEditor": "Error al abrir el editor externo",
|
|
"failedToSelectExternalEditor": "Error al seleccionar el editor externo",
|
|
"permissions": "Permisos",
|
|
"size": "Tamaño",
|
|
"modified": "Modificado",
|
|
"path": "Ruta",
|
|
"confirmDelete": "¿Está seguro de que desea eliminar {{name}}?",
|
|
"permissionDenied": "Permiso denegado",
|
|
"serverError": "Error del servidor",
|
|
"fileSavedSuccessfully": "Archivo guardado con éxito",
|
|
"failedToSaveFile": "Error al guardar el archivo",
|
|
"confirmDeleteSingleItem": "¿Está seguro de que desea eliminar permanentemente \"{{name}}\"?",
|
|
"confirmDeleteMultipleItems": "¿Está seguro de que desea eliminar permanentemente {{count}} elementos?",
|
|
"confirmDeleteMultipleItemsWithFolders": "¿Está seguro de que desea eliminar permanentemente {{count}} elementos? Esto incluye carpetas y su contenido.",
|
|
"confirmDeleteFolder": "¿Está seguro de que desea eliminar permanentemente la carpeta \"{{name}}\" y todo su contenido?",
|
|
"permanentDeleteWarning": "Esta acción no se puede deshacer. Los elementos se eliminarán permanentemente del servidor.",
|
|
"moveToTrashWarning": "El/los elemento(s) se moverán a la Papelera de Termix y se podrán restaurar antes de que expire el período de retención.",
|
|
"itemsMovedToTrash": "{{count}} elemento(s) movido(s) a la Papelera",
|
|
"trash": "Basura",
|
|
"trashDescription": "Los elementos eliminados se conservan durante {{days}} día(s) en este host.",
|
|
"trashLoadFailed": "No se pudo cargar la papelera.",
|
|
"trashEmpty": "La papelera está vacía",
|
|
"trashRestore": "Restaurar",
|
|
"trashRestored": "Restaurado {{name}}",
|
|
"trashRestoreFailed": "No se pudo restaurar el elemento. Es posible que la ruta original ya exista.",
|
|
"trashDeletePermanently": "Eliminar permanentemente",
|
|
"trashDeleteConfirm": "¿Eliminar permanentemente {{name}}? Esto no se puede deshacer.",
|
|
"trashPermanentlyDeleted": "Eliminado permanentemente {{name}}",
|
|
"trashDeleteFailed": "No se pudo eliminar el elemento de forma permanente.",
|
|
"trashEmptyAction": "Vaciar la basura",
|
|
"trashEmptyConfirm": "¿Eliminar permanentemente todos los elementos de la Papelera? Esta acción es irreversible.",
|
|
"trashEmptied": "Vaciado de basura",
|
|
"trashRetention": "Limpieza automática después de (días)",
|
|
"trashRetentionSaved": "Se ha actualizado la retención de basura.",
|
|
"trashRetentionFailed": "Error al actualizar la retención de la papelera",
|
|
"trashUnavailableConfirm": "Este elemento no se puede mover a la Papelera, normalmente porque se encuentra en otro sistema de archivos o requiere permisos de administrador. ¿Desea eliminarlo permanentemente?",
|
|
"recent": "Recientes",
|
|
"pinned": "Fijados",
|
|
"folderShortcuts": "Accesos directos a carpetas",
|
|
"failedToReconnectSSH": "Error al reconectar la sesión SSH",
|
|
"openTerminalHere": "Abrir terminal aquí",
|
|
"run": "Ejecutar",
|
|
"openTerminalInFolder": "Abrir terminal en esta carpeta",
|
|
"openTerminalInFileLocation": "Abrir terminal en la ubicación del archivo",
|
|
"runningFile": "Ejecutando - {{file}}",
|
|
"onlyRunExecutableFiles": "Solo se pueden ejecutar archivos ejecutables",
|
|
"directories": "Directorios",
|
|
"removedFromRecentFiles": "Se eliminó \"{{name}}\" de los archivos recientes",
|
|
"removeFailed": "Error al eliminar",
|
|
"unpinnedSuccessfully": "Se desancló \"{{name}}\" correctamente",
|
|
"unpinFailed": "Error al desanclar",
|
|
"removedShortcut": "Se eliminó el acceso directo \"{{name}}\"",
|
|
"removeShortcutFailed": "Error al eliminar el acceso directo",
|
|
"clearedAllRecentFiles": "Se borraron todos los archivos recientes",
|
|
"clearFailed": "Error al borrar",
|
|
"removeFromRecentFiles": "Eliminar de archivos recientes",
|
|
"clearAllRecentFiles": "Borrar todos los archivos recientes",
|
|
"unpinFile": "Desanclar archivo",
|
|
"removeShortcut": "Eliminar acceso directo",
|
|
"pinFile": "Anclar archivo",
|
|
"addToShortcuts": "Añadir a accesos directos",
|
|
"pasteFailed": "Error al pegar",
|
|
"noUndoableActions": "No hay acciones para deshacer",
|
|
"undoCopySuccess": "Se deshizo la copia: se eliminaron {{count}} archivos copiados",
|
|
"undoCopyFailedDelete": "Error al deshacer: no se pudo eliminar ningún archivo copiado",
|
|
"undoCopyFailedNoInfo": "Error al deshacer: no se encontró información de los archivos copiados",
|
|
"undoMoveSuccess": "Se deshizo el movimiento: se movieron {{count}} archivos a su ubicación original",
|
|
"undoMoveFailedMove": "Error al deshacer: no se pudo mover ningún archivo de vuelta",
|
|
"undoMoveFailedNoInfo": "Error al deshacer: no se encontró información de los archivos movidos",
|
|
"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 compatible",
|
|
"undoOperationFailed": "Error en la operación de deshacer",
|
|
"unknownError": "Error desconocido",
|
|
"confirm": "Confirmar",
|
|
"find": "Buscar...",
|
|
"replace": "Reemplazar",
|
|
"downloadInstead": "Descargar en su lugar",
|
|
"keyboardShortcuts": "Atajos de teclado",
|
|
"searchAndReplace": "Buscar y reemplazar",
|
|
"editing": "Edición",
|
|
"search": "Buscar",
|
|
"findNext": "Buscar siguiente",
|
|
"findPrevious": "Buscar anterior",
|
|
"save": "Guardar",
|
|
"selectAll": "Seleccionar todo",
|
|
"undo": "Deshacer",
|
|
"redo": "Rehacer",
|
|
"moveLineUp": "Mover línea hacia arriba",
|
|
"moveLineDown": "Mover línea hacia abajo",
|
|
"toggleComment": "Alternar comentario",
|
|
"autoComplete": "Autocompletar",
|
|
"imageLoadError": "Error al cargar la imagen",
|
|
"startTyping": "Empiece a escribir...",
|
|
"unknownSize": "Tamaño desconocido",
|
|
"fileIsEmpty": "El archivo está vacío",
|
|
"largeFileWarning": "Advertencia de archivo grande",
|
|
"largeFileWarningDesc": "Este archivo tiene un tamaño de {{size}}, lo que puede causar problemas de rendimiento al abrirlo como texto.",
|
|
"fileNotFoundAndRemoved": "El archivo \"{{name}}\" no se encontró y se ha eliminado de los archivos recientes/fijados.",
|
|
"failedToLoadFile": "Error al cargar el archivo: {{error}}",
|
|
"serverErrorOccurred": "Se ha producido un error en el servidor. Vuelva a intentarlo más tarde.",
|
|
"autoSaveFailed": "Error en el autoguardado",
|
|
"fileAutoSaved": "Archivo autoguardado",
|
|
"moveFileFailed": "Error al mover {{name}}",
|
|
"moveOperationFailed": "Error en la operación de mover",
|
|
"canOnlyCompareFiles": "Solo se pueden comparar dos archivos",
|
|
"comparingFiles": "Comparando archivos: {{file1}} y {{file2}}",
|
|
"dragFailed": "Error en la operación de arrastre",
|
|
"filePinnedSuccessfully": "Archivo \"{{name}}\" fijado correctamente",
|
|
"pinFileFailed": "Error al fijar el archivo",
|
|
"fileUnpinnedSuccessfully": "Archivo \"{{name}}\" desfijado correctamente",
|
|
"unpinFileFailed": "No se pudo desanclar el archivo",
|
|
"shortcutAddedSuccessfully": "Acceso directo a la carpeta \"{{name}}\" añadido correctamente",
|
|
"addShortcutFailed": "No se pudo añadir el acceso directo",
|
|
"operationCompletedSuccessfully": "{{operation}} {{count}} elementos correctamente",
|
|
"operationCompleted": "{{operation}} {{count}} elementos",
|
|
"downloadFileSuccess": "Archivo {{name}} descargado correctamente",
|
|
"downloadFileFailed": "Error en la descarga",
|
|
"downloadingFile": "Descargando {{name}}…",
|
|
"downloadProgressBytes": "{{transferred}} / {{total}}",
|
|
"moveTo": "Mover a {{name}}",
|
|
"diffCompareWith": "Comparar diferencias con {{name}}",
|
|
"dragOutsideToDownload": "Arrastrar fuera de la ventana para descargar ({{count}} archivos)",
|
|
"newFolderDefault": "NuevaCarpeta",
|
|
"newFileDefault": "NuevoArchivo.txt",
|
|
"successfullyMovedItems": "{{count}} elementos movidos correctamente a {{target}}",
|
|
"move": "Mover",
|
|
"searchInFile": "Buscar en archivo (Ctrl+F)",
|
|
"showKeyboardShortcuts": "Mostrar atajos de teclado",
|
|
"decreaseFontSize": "Reducir tamaño de fuente",
|
|
"increaseFontSize": "Aumentar tamaño de fuente",
|
|
"startWritingMarkdown": "Empiece a escribir su contenido Markdown...",
|
|
"loadingFileComparison": "Cargando comparación de archivos...",
|
|
"reload": "Recargar",
|
|
"compare": "Comparar",
|
|
"sideBySide": "Lado a lado",
|
|
"inline": "En línea",
|
|
"fileComparison": "Comparación de archivos: {{file1}} vs {{file2}}",
|
|
"fileTooLarge": "File is too large (> 10MB) and cannot be opened as text for security reasons.",
|
|
"sshConnectionFailed": "Error de conexión SSH. Verifique su conexión a {{name}} ({{ip}}:{{port}})",
|
|
"loadFileFailed": "Error al cargar el archivo: {{error}}",
|
|
"connecting": "Conectando...",
|
|
"connectedSuccessfully": "Conectado correctamente",
|
|
"totpVerificationFailed": "Error en la verificación TOTP",
|
|
"browserSignInFailed": "Error al iniciar sesión. Inténtalo de nuevo.",
|
|
"authenticationFailed": "Error de autenticación",
|
|
"incorrectPassphrase": "Frase de contraseña incorrecta. Inténtelo de nuevo.",
|
|
"verificationCodePrompt": "Código de verificación:",
|
|
"changePermissions": "Cambiar permisos",
|
|
"currentPermissions": "Permisos actuales",
|
|
"owner": "Propietario",
|
|
"group": "Grupo",
|
|
"others": "Otros",
|
|
"read": "Lectura",
|
|
"write": "Escritura",
|
|
"execute": "Ejecución",
|
|
"permissionsChangedSuccessfully": "Permisos cambiados correctamente",
|
|
"failedToChangePermissions": "Error al cambiar los permisos",
|
|
"name": "Nombre",
|
|
"sortByName": "Nombre",
|
|
"sortByDate": "Fecha de modificación",
|
|
"sortBySize": "Tamaño",
|
|
"ascending": "Ascendente",
|
|
"descending": "Descendente",
|
|
"root": "Raíz",
|
|
"new": "Nuevo",
|
|
"sortBy": "Ordenar por",
|
|
"items": "Elementos",
|
|
"selected": "Seleccionados",
|
|
"editor": "Editor",
|
|
"octal": "Octal",
|
|
"storage": "Almacenamiento",
|
|
"disk": "Disco",
|
|
"used": "Usado",
|
|
"of": "de",
|
|
"toggleSidebar": "Alternar barra lateral",
|
|
"compactLayout": "Utilice un diseño compacto.",
|
|
"comfortableLayout": "Utilice una disposición cómoda",
|
|
"cannotLoadPdf": "No se puede cargar el PDF",
|
|
"pdfLoadError": "Se produjo un error al cargar este archivo PDF.",
|
|
"loadingPdf": "Loading PDF viewer...",
|
|
"loadingPage": "Cargando página...",
|
|
"cancel": "Cancelar",
|
|
"copiedItems_one": "Copiado {{count}} elemento",
|
|
"copiedItems_other": "Elementos copiados {{count}}",
|
|
"deleteCopiedFileFailed": "No se pudo eliminar la copia de {{name}}: {{error}}",
|
|
"dragMovedItems_one": "Se movió el elemento {{count}} a {{target}}",
|
|
"dragMovedItems_other": "Se movieron {{count}} elementos a {{target}}",
|
|
"moveBackFileFailed": "No se pudo mover {{name}} hacia atrás: {{error}}",
|
|
"terminal": "Terminal: {{host}} ({{path}})",
|
|
"dragToDesktop": "Arrastrando {{name}} al escritorio",
|
|
"dragFilesToDesktop": "Arrastrar archivos {{count}} al escritorio",
|
|
"folderDragUnsupported": "Todavía no se admite arrastrar carpetas al escritorio.",
|
|
"saveToDesktopFailed": "Error al guardar: {{error}}",
|
|
"dragFailedDetail": "Error al arrastrar: {{error}}",
|
|
"videoUnsupported": "Tu navegador no puede reproducir este formato de vídeo.",
|
|
"downloadToPlay": "Descárgalo para jugarlo en otro lugar.",
|
|
"cannotPreviewType": "No se puede previsualizar este tipo de archivo.",
|
|
"cannotPreviewTypeHint": "Este tipo de archivo no tiene vista previa. Descárguelo para abrirlo en otra aplicación.",
|
|
"loadingFile": "Loading file...",
|
|
"loadingImage": "Loading image...",
|
|
"loadingEditor": "Loading editor...",
|
|
"loadingPreview": "Loading preview...",
|
|
"loadingAudio": "Loading audio player...",
|
|
"emptyPreview": "Nothing to preview yet...",
|
|
"revert": "Revert",
|
|
"openAsText": "Open as Text",
|
|
"confirmOpenAsText": "Do you want to continue opening this file as text? This may slow down your browser."
|
|
},
|
|
"sftpTransfer": {
|
|
"title": "SFTP",
|
|
"description": "Transferir archivos entre dos hosts SSH.",
|
|
"sourceServer": "Servidor de origen",
|
|
"destinationServer": "Servidor de destino",
|
|
"selectHost": "Seleccione el host",
|
|
"noHostSelected": "Ningún host seleccionado",
|
|
"move": "Mover",
|
|
"copy": "Copiar",
|
|
"upload": "Subir",
|
|
"itemsSelected": "{{count}} elemento seleccionado",
|
|
"itemsSelected_other": "{{count}} elementos seleccionados",
|
|
"ready": "Listo",
|
|
"loadingHosts": "Cargando hosts...",
|
|
"name": "Nombre",
|
|
"modified": "Modificado",
|
|
"size": "Tamaño",
|
|
"noFiles": "No hay archivos",
|
|
"open": "Abrir",
|
|
"up": "Arriba",
|
|
"refresh": "Actualizar",
|
|
"copyToTarget": "Copiar al directorio de destino",
|
|
"rename": "Renombrar",
|
|
"delete": "Eliminar",
|
|
"editPermissions": "Editar permisos",
|
|
"createNewFolder": "Crear nueva carpeta",
|
|
"deleteSelectedItems": "Eliminar elementos seleccionados",
|
|
"deleteConfirm": "¿Eliminar {{count}} elemento seleccionado?",
|
|
"deleteConfirm_other": "¿Eliminar {{count}} elementos seleccionados?",
|
|
"cancel": "Cancelar",
|
|
"save": "Guardar",
|
|
"folderCreated": "Carpeta creada",
|
|
"itemRenamed": "Artículo renombrado",
|
|
"actionFailed": "Acción fallida",
|
|
"itemsDeleted": "{{count}} elemento eliminado",
|
|
"itemsDeleted_other": "{{count}} elementos eliminados",
|
|
"deleteFailed": "Error al eliminar",
|
|
"permissionsUpdated": "Permisos actualizados",
|
|
"noRemoteSessionConnected": "No hay ninguna sesión remota conectada.",
|
|
"failedToListFiles": "No se pudieron listar los archivos.",
|
|
"failedToRefresh": "No se pudo actualizar",
|
|
"destinationInsideSource": "El destino no puede estar dentro de la ruta de origen seleccionada.",
|
|
"sameHostNoOp": "La carpeta de origen y la de destino son la misma."
|
|
},
|
|
"hosts": {
|
|
"fileManager": "Gestor de archivos",
|
|
"fileManagerUrlCopied": "URL del gestor de archivos copiada",
|
|
"copyFileManagerUrlAction": "Copiar URL del gestor de archivos",
|
|
"docsLink": "Ver documentación",
|
|
"hostNotFound": "Host no encontrado",
|
|
"loadingHost": "Cargando host..."
|
|
},
|
|
"onboarding": {
|
|
"feature_files": "Gestor de archivos",
|
|
"feature_files_desc": "Navega, sube, descarga y edita archivos a través de SFTP sin salir de la aplicación."
|
|
},
|
|
"terminal": {
|
|
"runTitle": "Ejecutando {{command}} - {{host}}",
|
|
"terminalTitle": "Terminal - {{host}}",
|
|
"terminalWithPath": "Terminal - {{host}}:{{path}}"
|
|
},
|
|
"transfer": {
|
|
"browseFolders": "Examinar carpetas de destino",
|
|
"browsePathError": "No se pudo abrir esta ruta en el host de destino.",
|
|
"browsePathWillBeCreated": "Esta carpeta no existe aún. Se creará al iniciar la transferencia.",
|
|
"cancel": "Cancelar",
|
|
"cleanupDestFiles": "Limpiar destino",
|
|
"cleanupDestFilesError": "Error al limpiar",
|
|
"cleanupDestFilesNothing": "Nada que limpiar en el destino",
|
|
"cleanupDestFilesPartial": "Algunos archivos parciales no se pudieron eliminar",
|
|
"cleanupDestFilesSuccess": "Se eliminaron los archivos parciales del destino",
|
|
"confirmCopy": "Copiar",
|
|
"confirmMove": "Mover",
|
|
"copyFolderToHost": "Copiar carpeta al host…",
|
|
"copyItemsToHost": "Copiar {{count}} elementos al host…",
|
|
"copyToHost": "Copiar al host…",
|
|
"destinationPath": "Ruta de destino",
|
|
"destMustBeDirectory": "El destino debe ser un directorio para transferencias de múltiples elementos",
|
|
"goUp": "Subir",
|
|
"hostAuthRequired": "Se requiere autenticación. Abra primero el administrador de archivos en este host.",
|
|
"hostConnecting": "Conectando…",
|
|
"hostConnectionFailed": "Conexión fallida",
|
|
"hostDisconnected": "No conectado",
|
|
"hostReady": "Listo",
|
|
"itemsSummary": "{{count}} elementos",
|
|
"jumpHostLimitation": "Ambos equipos deben ser accesibles desde el servidor de Termix. No se admite el enrutamiento directo entre equipos.",
|
|
"methodAuto": "Automático",
|
|
"methodAutoHint": "Elige tar o SFTP por archivo según el número de archivos, tamaño y compresibilidad. Los archivos individuales siempre usan SFTP por transmisión continua.",
|
|
"methodItemSftp": "SFTP por archivo",
|
|
"methodItemSftpHint": "Transfiere cada archivo individualmente por SFTP. Funciona en todos los equipos, incluido Windows.",
|
|
"methodItemSftpLimitation": "Cada archivo usa el mismo flujo SFTP que una copia de un solo archivo, uno tras otro. El progreso se combina en todos los archivos, por lo que la barra se mueve lentamente durante archivos grandes.",
|
|
"methodLabel": "Método de transferencia",
|
|
"methodPreviewError": "No se pudo previsualizar el método de transferencia. El servidor seleccionará un método al iniciar.",
|
|
"methodPreviewLoading": "Calculando el método de transferencia…",
|
|
"methodPreviewScanSummary": "{{fileCount}} archivos, {{totalSize}} total (analizado en el equipo de origen).",
|
|
"methodPreviewWillUseItemSftp": "Se usará: SFTP por archivo",
|
|
"methodPreviewWillUseTar": "Se usará: Archivo Tar",
|
|
"methodReason": {
|
|
"user_item_sftp": "Has elegido SFTP por archivo.",
|
|
"user_tar": "Has elegido archivo tar.",
|
|
"tar_unavailable": "Tar no está disponible en uno o ambos hosts, por lo que se utilizará SFTP por archivo.",
|
|
"windows_host": "Se trata de un sistema operativo Windows, por lo que no se utiliza tar.",
|
|
"auto_multi_large": "Automático: varios archivos, incluido un archivo grande ({{largestSize}}) con datos comprimibles. Tar los agrupa en una sola transferencia.",
|
|
"auto_single_large_in_archive": "Automático: un archivo grande ({{largestSize}}) en este conjunto, por lo que SFTP por archivo.",
|
|
"auto_many_incompressible": "Automático: datos mayormente incompresibles, por lo que se utiliza SFTP por archivo.",
|
|
"auto_many_files": "Automático: muchos archivos ({{fileCount}}), tar reduce la sobrecarga por archivo.",
|
|
"auto_default": "Auto: SFTP por archivo para este conjunto."
|
|
},
|
|
"methodTar": "Archivo Tar",
|
|
"methodTarHint": "Comprime en origen, transfiere un archivo, extrae en destino. Necesita tar en ambos equipos Unix.",
|
|
"metricsCompress": "Compresión en origen: {{duration}}",
|
|
"metricsExtract": "Extracción en destino: {{duration}}",
|
|
"metricsPrepare": "Preparar destino: {{duration}}",
|
|
"metricsRouteBenchmark": "Sondeo de ruta: directo {{direct}}, relé {{relay}}",
|
|
"metricsSourceDelete": "Eliminación del origen: {{duration}}",
|
|
"metricsTotal": "Total: {{duration}}",
|
|
"metricsTransfer": "Extremo a extremo: {{throughput}} ({{duration}})",
|
|
"metricsVerify": "SHA-256 verificado: {{duration}}",
|
|
"moveFolderToHost": "Mover carpeta al host…",
|
|
"moveItemsToHost": "Mover {{count}} elementos al host…",
|
|
"moveToHost": "Mover al host…",
|
|
"noHostsConnected": "No hay otros hosts de gestor de archivos disponibles.",
|
|
"noHostsConnectedHint": "Añade otro host SSH con el Gestor de Archivos habilitado en el Administrador de Hosts.",
|
|
"parallelSegmentsHint": "Los archivos grandes se dividen en fragmentos de 256 MB. Varias vías utilizan conexiones separadas (como iniciar varias transferencias) para un mayor rendimiento total.",
|
|
"parallelSegmentsLabel": "Vías de transferencia en paralelo",
|
|
"parallelSegmentsOption": "{{count}} vías",
|
|
"progressBenchmarking": "Seleccionar la ruta de transferencia más rápida…",
|
|
"progressBytes": "{{transferred}} / {{total}}",
|
|
"progressCancel": "Cancelar",
|
|
"progressCancelling": "Cancelando…",
|
|
"progressCompressing": "Comprimiendo en el equipo de origen…",
|
|
"progressExtracting": "Extrayendo en el destino…",
|
|
"progressItems": "{{current}} / {{total}} archivos",
|
|
"progressReconnecting": "Reconectando…",
|
|
"progressStalled": "Estancado",
|
|
"progressTotalSpeed": "{{speed}} total ({{lanes}} vías)",
|
|
"progressTransferring": "Transfiriendo datos…",
|
|
"progressTransferringItems": "Transfiriendo archivos ({{current}} de {{total}})…",
|
|
"progressVerifying": "Verificando la integridad del archivo…",
|
|
"recentDestinations": "Destinos recientes",
|
|
"resumedHint": "Reconectado a una transferencia activa iniciada en otra ventana.",
|
|
"retryTransfer": "Reintentar",
|
|
"retryTransferError": "Error al reintentar",
|
|
"selectDestinationHost": "Seleccionar host de destino",
|
|
"transferCancelled": "Transferencia cancelada",
|
|
"transferCancelledCopyHint": "Pueden quedar archivos parciales en el destino.",
|
|
"transferCancelledMoveHint": "Pueden quedar archivos parciales en el destino. Los archivos de origen no se eliminaron.",
|
|
"transferError": "Transferencia fallida",
|
|
"transferFailedRetryHint": "Se conservaron datos parciales en el destino. El reintento se reanudará cuando se restablezca la conexión.",
|
|
"transferPartialHint": "No se pudo transferir: {{paths}}",
|
|
"transferSuccess": "Transferencia completada",
|
|
"metricsHopSourceRead": "Origen → servidor: {{throughput}}",
|
|
"metricsHopDestSftpWrite": "Servidor → destino (SFTP): {{throughput}}",
|
|
"metricsHopDestLocalWrite": "Servidor → destino (local): {{throughput}}"
|
|
},
|
|
"plugin": {
|
|
"name": "File Manager"
|
|
}
|
|
}
|