722 lines
39 KiB
TypeScript
722 lines
39 KiB
TypeScript
import type { Messages } from '../types';
|
|
|
|
export const enVaultMessages: Messages = {
|
|
// Vault import
|
|
'vault.import.title': 'Add data to your vault',
|
|
'vault.import.desc':
|
|
'Transfer your connections from popular clients. Select a file format to start the migration.',
|
|
'vault.import.chooseFormat': 'Select a file format',
|
|
'vault.import.csv.tip': 'Bulk import: use the CSV template.',
|
|
'vault.import.csv.downloadTemplate': 'Download CSV template',
|
|
'vault.import.toast.start': 'Importing from {format}...',
|
|
'vault.import.toast.completedTitle': 'Import completed',
|
|
'vault.import.toast.failedTitle': 'Import failed',
|
|
'vault.import.toast.noEntries': 'No importable entries found in {format}.',
|
|
'vault.import.toast.noNewHosts': 'No new hosts imported from {format}.',
|
|
'vault.import.toast.summary':
|
|
'Imported {count} hosts (skipped {skipped}, duplicates {duplicates}).',
|
|
'vault.import.toast.firstIssue': 'First issue: {issue}',
|
|
'vault.import.sshConfig.chooseMode': 'Choose how to import your SSH config file.',
|
|
'vault.import.sshConfig.modeQuestion': 'How would you like to import?',
|
|
'vault.import.sshConfig.importOnly': 'Import Only',
|
|
'vault.import.sshConfig.importOnlyDesc': 'One-time import. Changes won\'t sync back to the file.',
|
|
'vault.import.sshConfig.managed': 'Managed Sync',
|
|
'vault.import.sshConfig.managedDesc': 'Keep in sync. Changes will be saved back to the file.',
|
|
'vault.import.sshConfig.managedGroup': 'ssh config',
|
|
'vault.import.sshConfig.managedSuccess': 'Imported {count} hosts. File is now managed.',
|
|
'vault.import.sshConfig.alreadyManaged': 'This file is already being managed.',
|
|
'vault.import.sshConfig.alreadyManagedDesc': 'This file is already managed under group "{group}". Remove the existing managed source first if you want to re-import.',
|
|
'vault.import.sshConfig.noFilePath': 'Cannot manage this file.',
|
|
'vault.import.sshConfig.noFilePathDesc': 'Unable to determine the file path. Managed sync requires access to the file system.',
|
|
|
|
// Known Hosts
|
|
'knownHosts.search.placeholder': 'Search known hosts...',
|
|
'knownHosts.action.scanSystem': 'Scan System',
|
|
'knownHosts.action.importFile': 'Import File',
|
|
'knownHosts.action.browseFile': 'Browse File',
|
|
'knownHosts.empty.title': 'No Known Hosts',
|
|
'knownHosts.empty.desc':
|
|
"Known hosts are SSH servers you've connected to before. Import from your system's known_hosts file to get started.",
|
|
'knownHosts.results.showingLimited':
|
|
'Showing {shown} of {total} hosts. Use search to find specific hosts.',
|
|
'knownHosts.toast.scanUnavailable': 'System scan is unavailable on this platform.',
|
|
'knownHosts.toast.scanNoFile': 'No system known_hosts file found.',
|
|
'knownHosts.toast.scanNoEntries': 'No usable entries found in known_hosts.',
|
|
'knownHosts.toast.scanImported': 'Imported {count} new hosts.',
|
|
'knownHosts.toast.scanNoNew': 'No new hosts found.',
|
|
'knownHosts.toast.scanFailed': 'Failed to scan system known_hosts.',
|
|
|
|
// Port Forwarding
|
|
'pf.empty.title': 'Set up port forwarding',
|
|
'pf.empty.desc': 'Save port forwarding to access databases, web apps, and other services.',
|
|
'pf.title': 'Port Forwarding',
|
|
'pf.rulesCount': '{count} rules',
|
|
'pf.wizard.editTitle': 'Edit Port Forwarding',
|
|
'pf.wizard.newTitle': 'New Port Forwarding',
|
|
'pf.wizard.saveChanges': 'Save Changes',
|
|
'pf.wizard.done': 'Done',
|
|
'pf.wizard.continue': 'Continue',
|
|
'pf.wizard.cancel': 'Cancel',
|
|
'pf.wizard.skipWizard': 'Skip wizard',
|
|
'pf.error.hostNotFound': 'Host not found',
|
|
'pf.toast.titleWithLabel': 'Port Forwarding: {label}',
|
|
'pf.type.local': 'Local',
|
|
'pf.type.remote': 'Remote',
|
|
'pf.type.dynamic': 'Dynamic',
|
|
'pf.type.menu.local': 'Local Forwarding',
|
|
'pf.type.menu.remote': 'Remote Forwarding',
|
|
'pf.type.menu.dynamic': 'Dynamic Forwarding',
|
|
'pf.type.local.desc': "Local forwarding lets you access a remote server's listening port as though it were local.",
|
|
'pf.type.remote.desc': 'Remote forwarding opens a port on the remote machine and forwards connections to the local (current) host.',
|
|
'pf.type.dynamic.desc': 'Dynamic port forwarding turns Netcatty into a SOCKS proxy server.',
|
|
'pf.wizard.type.title': 'Select the port forwarding type:',
|
|
'pf.wizard.localConfig.title': 'Set the local port and binding address:',
|
|
'pf.wizard.localConfig.desc': 'This port will be open on the local (current) device, and it will receive the traffic.',
|
|
'pf.wizard.localConfig.localPort': 'Local port number *',
|
|
'pf.wizard.bindAddress': 'Bind address',
|
|
'pf.wizard.remoteHost.title': 'Select the remote host:',
|
|
'pf.wizard.remoteHost.desc': 'Select a host where the port will be open. Traffic from this port will be forwarded to the destination host.',
|
|
'pf.wizard.remoteConfig.title': 'Set the port and binding address:',
|
|
'pf.wizard.remoteConfig.desc': 'Traffic will be forwarded from the specified port and interface address of the selected host.',
|
|
'pf.wizard.remoteConfig.remotePort': 'Remote port number *',
|
|
'pf.wizard.destination.title': 'Select the destination host:',
|
|
'pf.wizard.destination.desc.local': 'Enter the remote destination that you want to access through the tunnel.',
|
|
'pf.wizard.destination.desc.remote': 'The destination address and port where the traffic will be forwarded.',
|
|
'pf.wizard.destination.address': 'Destination address *',
|
|
'pf.wizard.destination.addressPlaceholder': 'e.g. 127.0.0.1 or 192.168.1.100',
|
|
'pf.wizard.destination.port': 'Destination port number *',
|
|
'pf.wizard.sshServer.title': 'Select the SSH server:',
|
|
'pf.wizard.sshServer.desc.dynamic': 'Select the SSH server that will act as your SOCKS proxy.',
|
|
'pf.wizard.sshServer.desc.default': 'Select the SSH server that will tunnel your traffic to the destination.',
|
|
'pf.wizard.label.title': 'Select the label:',
|
|
'pf.wizard.label.placeholder.dynamic': 'e.g. SOCKS Proxy',
|
|
'pf.wizard.label.placeholder.default': 'e.g. MySQL Production',
|
|
'pf.wizard.label.placeholder.remoteRule': 'e.g. Remote Rule',
|
|
'pf.wizard.placeholders.portExample': 'e.g. {port}',
|
|
'pf.action.newForwarding': 'New Forwarding',
|
|
'pf.form.labelPlaceholder': 'Rule label',
|
|
'pf.form.intermediateHost': 'Intermediate host *',
|
|
'pf.form.createRule': 'Create Rule',
|
|
'pf.form.openWizard': 'Open Wizard',
|
|
'pf.form.openWizardTitle': 'Open Port Forwarding Wizard',
|
|
'pf.view.grid': 'Grid',
|
|
'pf.view.list': 'List',
|
|
'pf.rule.summary.dynamic': 'SOCKS on {bindAddress}:{localPort}',
|
|
'pf.rule.summary.default': '{bindAddress}:{localPort} -> {remoteHost}:{remotePort}',
|
|
'pf.tooltip.relayHost': 'Relay Host',
|
|
'pf.tooltip.hostLabel': 'Host',
|
|
'pf.tooltip.hostAddress': 'Address',
|
|
'pf.tooltip.noHost': 'No relay host configured',
|
|
'pf.tooltip.localDesc': 'Local port forwarding: Access remote services through SSH tunnel',
|
|
'pf.tooltip.remoteDesc': 'Remote port forwarding: Expose local services to remote host',
|
|
'pf.tooltip.dynamicDesc': 'Dynamic SOCKS proxy: Route traffic through SSH tunnel',
|
|
'pf.deleteActive.title': 'Delete Active Port Forwarding?',
|
|
'pf.deleteActive.desc': 'This port forwarding rule "{label}" is currently active. Deleting it will stop the tunnel first.',
|
|
'pf.deleteActive.confirm': 'Stop and Delete',
|
|
'pf.form.autoStart': 'Auto Start',
|
|
'pf.form.autoStartDesc': 'Automatically start this rule when the app launches',
|
|
|
|
// SFTP
|
|
'sftp.newFolder': 'New Folder',
|
|
'sftp.newFile': 'New File',
|
|
'sftp.filter': 'Filter',
|
|
'sftp.filter.placeholder': 'Filter by filename...',
|
|
'sftp.bookmark.add': 'Bookmark this path',
|
|
'sftp.bookmark.remove': 'Remove bookmark',
|
|
'sftp.bookmark.list': 'Bookmarked paths',
|
|
'sftp.bookmark.addGlobal': '+Global',
|
|
'sftp.bookmark.addGlobalTooltip': 'Save as global bookmark (shared across all hosts)',
|
|
'sftp.bookmark.empty': 'No bookmarks yet',
|
|
'sftp.columns.name': 'Name',
|
|
'sftp.columns.modified': 'Modified',
|
|
'sftp.columns.size': 'Size',
|
|
'sftp.columns.kind': 'Kind',
|
|
'sftp.columns.actions': 'Actions',
|
|
'sftp.emptyDirectory': 'Empty directory',
|
|
'sftp.nav.up': 'Go up',
|
|
'sftp.nav.home': 'Go to home',
|
|
'sftp.nav.refresh': 'Refresh',
|
|
'sftp.upload': 'Upload',
|
|
'sftp.uploadFiles': 'Upload files',
|
|
'sftp.uploadFolder': 'Upload folder',
|
|
'sftp.dragDropToUpload': 'Drag and drop files here to upload',
|
|
'sftp.retry': 'Retry',
|
|
'sftp.context.open': 'Open',
|
|
'sftp.context.navigateTo': 'Navigate to',
|
|
'sftp.context.moveTo': 'Move to...',
|
|
'sftp.context.moveToParent': 'Move to parent directory',
|
|
'sftp.moveTo.title': 'Move to directory',
|
|
'sftp.moveTo.placeholder': 'Enter target directory path',
|
|
'sftp.moveTo.confirm': 'Move',
|
|
'sftp.moveTo.pathNotFound': 'Directory not found or inaccessible',
|
|
'sftp.context.download': 'Download',
|
|
'sftp.context.copyToOtherPane': 'Copy to other pane',
|
|
'sftp.copyCurrentPath': 'Copy current path',
|
|
'sftp.copyCurrentPath.success': 'Current path copied',
|
|
'sftp.copyCurrentPath.error': 'Could not copy current path',
|
|
'sftp.viewMode.label': 'View mode',
|
|
'sftp.viewMode.list': 'List view',
|
|
'sftp.viewMode.tree': 'Tree view',
|
|
'sftp.viewMode.switchToList': 'Switch to list view',
|
|
'sftp.viewMode.switchToTree': 'Switch to tree view',
|
|
'sftp.tree.loadError': 'Failed to load directory',
|
|
'sftp.tree.loading': 'Loading...',
|
|
'sftp.kind.folder': 'Folder',
|
|
'sftp.context.rename': 'Rename',
|
|
'sftp.context.permissions': 'Permissions',
|
|
'sftp.context.delete': 'Delete',
|
|
'sftp.context.refresh': 'Refresh',
|
|
'sftp.context.uploadFiles': 'Upload File(s)...',
|
|
'sftp.context.uploadFilesHere': 'Upload File(s) Here...',
|
|
'sftp.context.uploadFolder': 'Upload Folder...',
|
|
'sftp.context.uploadFolderHere': 'Upload Folder Here...',
|
|
'sftp.context.downloadSelected': 'Download selected ({count})',
|
|
'sftp.context.deleteSelected': 'Delete selected ({count})',
|
|
'sftp.dropFilesHere': 'Drop files here',
|
|
'sftp.itemsCount': '{count} items',
|
|
'sftp.selectedCount': '{count} selected',
|
|
'sftp.path.doubleClickToEdit': 'Double-click to edit path',
|
|
'sftp.showHiddenPaths': 'Hidden paths',
|
|
'sftp.task.waiting': 'Waiting...',
|
|
'sftp.transfer.preparing': 'preparing...',
|
|
'sftp.status.loading': 'Loading...',
|
|
'sftp.status.uploading': 'Uploading...',
|
|
'sftp.status.ready': 'Ready',
|
|
'sftp.transfers': 'Transfers',
|
|
'sftp.transfers.active': '{count} active',
|
|
'sftp.transfers.clearCompleted': 'Clear completed',
|
|
'sftp.transfers.calculatingTotal': 'Calculating total size...',
|
|
'sftp.transfers.filesCount': '{count} files',
|
|
'sftp.transfers.filesProgress': '{current}/{total} files',
|
|
'sftp.transfers.expandChildren': 'Show files',
|
|
'sftp.transfers.collapseChildren': 'Hide files',
|
|
'sftp.transfers.expandChildList': 'Show detail',
|
|
'sftp.transfers.collapseChildList': 'Hide',
|
|
'sftp.transfers.retryAction': 'Retry',
|
|
'sftp.transfers.dismissAction': 'Dismiss',
|
|
'sftp.transfers.openTargetFolder': 'Open target folder',
|
|
'sftp.transfers.openTargetFolderError': 'Could not open target folder',
|
|
'sftp.transfers.copyTargetPath': 'Copy target path',
|
|
'sftp.transfers.copyTargetPathSuccess': 'Target path copied',
|
|
'sftp.transfers.copyTargetPathError': 'Could not copy target path',
|
|
'sftp.transfers.resizeNameColumn': 'Resize file name column',
|
|
'sftp.transfers.dragToResize': 'Drag to resize',
|
|
'sftp.goUp': 'Go up',
|
|
'sftp.goToTerminalCwd': 'Go to terminal directory',
|
|
'sftp.followTerminalCwd': 'Follow terminal directory',
|
|
'sftp.followTerminalCwd.enable': 'Enable follow terminal directory',
|
|
'sftp.followTerminalCwd.disable': 'Disable follow terminal directory',
|
|
'sftp.encoding.label': 'Filename Encoding',
|
|
'sftp.encoding.auto': 'Auto',
|
|
'sftp.encoding.utf8': 'UTF-8',
|
|
'sftp.encoding.gb18030': 'GB18030',
|
|
'sftp.goHome': 'Go to home',
|
|
'sftp.folderName': 'Folder name',
|
|
'sftp.folderName.placeholder': 'Enter folder name',
|
|
'sftp.fileName': 'File name',
|
|
'sftp.fileName.placeholder': 'Enter file name',
|
|
'sftp.prompt.newFolderName': 'New folder name?',
|
|
'sftp.rename.title': 'Rename',
|
|
'sftp.rename.newName': 'New name',
|
|
'sftp.rename.placeholder': 'Enter new name',
|
|
'sftp.confirm.deleteOne': 'Delete "{name}"?',
|
|
'sftp.deleteConfirm.single': 'Delete "{name}"?',
|
|
'sftp.deleteConfirm.title': 'Delete {count} item(s)?',
|
|
'sftp.deleteConfirm.desc': 'This action cannot be undone. The following will be deleted:',
|
|
'sftp.deleteConfirm.descSingle': 'This action cannot be undone.',
|
|
'sftp.deleteConfirm.host': 'Host',
|
|
'sftp.deleteConfirm.path': 'Path',
|
|
'sftp.error.loadFailed': 'Failed to load directory',
|
|
'sftp.error.downloadFailed': 'Download failed',
|
|
'sftp.error.uploadFailed': 'Upload failed',
|
|
'sftp.error.deleteFailed': 'Delete failed',
|
|
'sftp.error.createFolderFailed': 'Failed to create folder',
|
|
'sftp.error.createFileFailed': 'Failed to create file',
|
|
'sftp.error.invalidFileName': 'Filename contains invalid characters: {chars}',
|
|
'sftp.error.reservedName': 'This filename is reserved by the system',
|
|
'sftp.overwrite.title': 'File Already Exists',
|
|
'sftp.overwrite.desc': 'A file named "{name}" already exists. Do you want to replace it?',
|
|
'sftp.overwrite.confirm': 'Replace',
|
|
'sftp.error.renameFailed': 'Failed to rename',
|
|
'sftp.picker.title': 'Select Host',
|
|
'sftp.picker.desc': 'Pick a host for the {side} pane',
|
|
'sftp.picker.searchPlaceholder': 'Search hosts...',
|
|
'sftp.picker.local.title': 'Local filesystem',
|
|
'sftp.picker.local.desc': 'Browse local files',
|
|
'sftp.picker.local.badge': 'Local',
|
|
'sftp.picker.noMatch': 'No matching hosts',
|
|
'sftp.permissions.title': 'Edit Permissions',
|
|
'sftp.permissions.owner': 'Owner',
|
|
'sftp.permissions.group': 'Group',
|
|
'sftp.permissions.others': 'Others',
|
|
'sftp.permissions.octal': 'Octal',
|
|
'sftp.permissions.symbolic': 'Symbolic',
|
|
'sftp.permissions.success': 'Permissions updated successfully',
|
|
'sftp.permissions.failed': 'Failed to update permissions',
|
|
'sftp.pane.local': 'Local',
|
|
'sftp.pane.remote': 'Remote',
|
|
'sftp.pane.selectHost': 'Select host',
|
|
'sftp.pane.selectHostToStart': 'Select a host to start',
|
|
'sftp.pane.chooseFilesystem': 'Choose a local or remote filesystem to browse',
|
|
'sftp.tabs.addTab': 'Add new tab',
|
|
'sftp.tabs.closeTab': 'Close tab',
|
|
'sftp.tabs.newTab': 'New Tab',
|
|
'sftp.tabs.copyDefaultPath': 'Copy tab (default path)',
|
|
'sftp.tabs.copyCurrentPath': 'Copy and go to current path',
|
|
'sftp.conflict.title': 'File Conflict',
|
|
'sftp.conflict.desc': 'A file with the same name already exists at the destination',
|
|
'sftp.conflict.alreadyExistsSuffix': 'already exists',
|
|
'sftp.conflict.existingFile': 'Existing file',
|
|
'sftp.conflict.newFile': 'New file',
|
|
'sftp.conflict.size': 'Size:',
|
|
'sftp.conflict.modified': 'Modified:',
|
|
'sftp.conflict.applyToAll': 'Apply this action to all {count} remaining conflicts',
|
|
'sftp.conflict.action.stop': 'Stop',
|
|
'sftp.conflict.action.skip': 'Skip',
|
|
'sftp.conflict.action.keepBoth': 'Keep Both',
|
|
'sftp.conflict.action.duplicate': 'Duplicate',
|
|
'sftp.conflict.action.merge': 'Merge',
|
|
'sftp.conflict.action.replace': 'Replace',
|
|
|
|
// SFTP Upload Phases
|
|
'sftp.upload.phase.compressing': 'Compressing',
|
|
'sftp.upload.phase.uploading': 'Uploading',
|
|
'sftp.upload.phase.extracting': 'Extracting',
|
|
'sftp.upload.phase.compressed': 'Compressed',
|
|
|
|
// SFTP File Opener
|
|
'sftp.context.copyPath': 'Copy file path',
|
|
'sftp.context.openWithDefault': 'Open with system default',
|
|
'sftp.context.openWith': 'Open with...',
|
|
'sftp.context.edit': 'Edit',
|
|
'sftp.context.preview': 'Preview',
|
|
'sftp.opener.title': 'Open with',
|
|
'sftp.opener.desc': 'Choose an application to open this file',
|
|
'sftp.opener.builtInEditor': 'Built-in Editor',
|
|
'sftp.opener.editDescription': 'Edit text files',
|
|
'sftp.opener.builtInImageViewer': 'Built-in Image Viewer',
|
|
'sftp.opener.previewDescription': 'Preview images',
|
|
'sftp.opener.systemApp': 'Choose Application...',
|
|
'sftp.opener.systemAppDescription': 'Select an application from your computer',
|
|
'sftp.opener.onlySystemApp': 'This file can only be opened with an external application',
|
|
'sftp.opener.noAppsAvailable': 'No applications available',
|
|
'sftp.opener.noExtension': 'files without extension',
|
|
'sftp.opener.setDefault': 'Always use this for {ext} files',
|
|
'sftp.opener.confirmTitle': 'Set as Default?',
|
|
'sftp.opener.confirmDescription': 'Do you want to always use {app} for {ext} files?',
|
|
'sftp.opener.yesRemember': 'Yes, remember this choice',
|
|
'sftp.opener.justOnce': 'Just this once',
|
|
'sftp.opener.confirm.title': 'Set Default Application',
|
|
'sftp.opener.confirm.desc': 'Do you want to always open .{ext} files with this application?',
|
|
'sftp.editor.title': 'Text Editor',
|
|
'sftp.editor.save': 'Save to Remote',
|
|
'sftp.editor.saving': 'Saving...',
|
|
'sftp.editor.saved': 'Saved successfully',
|
|
'sftp.editor.saveFailed': 'Failed to save file',
|
|
'sftp.editor.unsavedChanges': 'You have unsaved changes. Close anyway?',
|
|
'sftp.editor.syntaxHighlight': 'Syntax Highlighting',
|
|
'sftp.preview.title': 'Image Preview',
|
|
'sftp.preview.zoomIn': 'Zoom In',
|
|
'sftp.preview.zoomOut': 'Zoom Out',
|
|
'sftp.preview.resetZoom': 'Reset Zoom',
|
|
'sftp.preview.fitToWindow': 'Fit to Window',
|
|
|
|
// Settings > SFTP File Associations
|
|
'settings.tab.sftpFileAssociations': 'SFTP',
|
|
'settings.sftp.transferConcurrency': 'Transfer Concurrency',
|
|
'settings.sftp.transferConcurrency.desc': 'Number of files to transfer in parallel when uploading or downloading folders. Higher values may improve speed but can overwhelm some servers.',
|
|
'settings.sftp.defaultOpener': 'Default File Opener',
|
|
'settings.sftp.defaultOpener.desc': 'Choose the default application for opening files without a specific file association',
|
|
'settings.sftp.defaultOpener.ask': 'Always ask',
|
|
'settings.sftp.defaultOpener.askDesc': 'Show a dialog to choose an application each time',
|
|
'settings.sftp.defaultOpener.builtInDesc': 'Open text files in the built-in editor by default',
|
|
'settings.sftp.defaultOpener.systemApp': 'Choose Application...',
|
|
'settings.sftp.defaultOpener.systemAppDesc': 'Open files with a specific application by default',
|
|
'settings.sftpFileAssociations.title': 'SFTP File Associations',
|
|
'settings.sftpFileAssociations.desc': 'Configure default applications for opening files by extension',
|
|
'settings.sftpFileAssociations.extension': 'Extension',
|
|
'settings.sftpFileAssociations.application': 'Application',
|
|
'settings.sftpFileAssociations.noAssociations': 'No file associations configured',
|
|
'settings.sftpFileAssociations.remove': 'Remove',
|
|
'settings.sftpFileAssociations.removeConfirm': 'Remove association for .{ext}?',
|
|
|
|
// Settings > SFTP Behavior
|
|
'settings.sftp.doubleClickBehavior': 'Double-click behavior',
|
|
'settings.sftp.doubleClickBehavior.desc': 'Choose the action when double-clicking a file in SFTP View',
|
|
'settings.sftp.doubleClickBehavior.open': 'Open file',
|
|
'settings.sftp.doubleClickBehavior.transfer': 'Transfer to other pane',
|
|
'settings.sftp.doubleClickBehavior.openDesc': 'Open the file in the default application',
|
|
'settings.sftp.doubleClickBehavior.transferDesc': 'Transfer the file to the other pane\'s active host',
|
|
|
|
// Settings > SFTP Auto Sync
|
|
'settings.sftp.autoSync': 'Auto-sync to remote',
|
|
'settings.sftp.autoSync.desc': 'Automatically sync file changes back to the remote server when opening files with external applications',
|
|
'settings.sftp.autoSync.enable': 'Enable auto-sync',
|
|
'settings.sftp.autoSync.enableDesc': 'When you save a file in an external application, changes will be automatically uploaded to the remote server',
|
|
|
|
// Settings > SFTP Auto Open Sidebar
|
|
'settings.sftp.autoOpenSidebar': 'Auto-open sidebar on connect',
|
|
'settings.sftp.autoOpenSidebar.desc': 'Automatically open the SFTP file browser sidebar when connecting to a host',
|
|
'settings.sftp.autoOpenSidebar.enable': 'Enable auto-open sidebar',
|
|
'settings.sftp.autoOpenSidebar.enableDesc': 'The SFTP sidebar will open automatically when a terminal session connects to a remote host',
|
|
'settings.sftp.followTerminalCwd': 'Follow terminal directory',
|
|
'settings.sftp.followTerminalCwd.desc': 'Automatically sync the sidebar SFTP browser with the terminal working directory (toggle in toolbar)',
|
|
'settings.sftp.followTerminalCwd.enable': 'Enable follow terminal directory by default',
|
|
'settings.sftp.followTerminalCwd.enableDesc': 'When the SFTP sidebar is open, follow mode stays on by default and updates after terminal cd commands',
|
|
|
|
'settings.sftp.defaultViewMode': 'Default View Mode',
|
|
'settings.sftp.defaultViewMode.desc': 'Choose the default view mode when opening a new SFTP tab. Per-host preferences override this setting.',
|
|
'settings.sftp.defaultViewMode.list': 'List View',
|
|
'settings.sftp.defaultViewMode.listDesc': 'Display files in a flat list for the current directory',
|
|
'settings.sftp.defaultViewMode.tree': 'Tree View',
|
|
'settings.sftp.defaultViewMode.treeDesc': 'Display files in a hierarchical tree structure',
|
|
|
|
'sftp.autoSync.success': 'File synced to remote: {fileName}',
|
|
'sftp.autoSync.error': 'Failed to sync file: {error}',
|
|
|
|
// SFTP Folder Upload Progress
|
|
'sftp.upload.progress': 'Uploading {current} of {total} files...',
|
|
'sftp.upload.uploading': 'Uploading...',
|
|
'sftp.upload.compressing': 'Compressing...',
|
|
'sftp.upload.extracting': 'Extracting...',
|
|
'sftp.upload.scanning': 'Scanning files...',
|
|
'sftp.upload.completed': 'Completed',
|
|
'sftp.upload.compressed': 'Compressed Transfer',
|
|
'sftp.upload.currentFile': 'Current: {fileName}',
|
|
'sftp.upload.cancelled': 'Upload cancelled',
|
|
'sftp.upload.cancel': 'Cancel',
|
|
'sftp.upload.completedToPath': 'Uploaded to {path}',
|
|
|
|
// SFTP Download
|
|
'sftp.download.completed': 'Downloaded',
|
|
'sftp.download.cancelled': 'Download cancelled',
|
|
|
|
// SFTP Reconnecting
|
|
'sftp.reconnecting.title': 'Reconnecting...',
|
|
'sftp.reconnecting.desc': 'Connection lost, attempting to reconnect',
|
|
'sftp.reconnected': 'Connection restored',
|
|
'sftp.error.reconnectFailed': 'Failed to reconnect. Please try again.',
|
|
'sftp.error.connectionLostManual': 'Connection lost. Please reconnect manually.',
|
|
'sftp.error.connectionLostReconnecting': 'Connection lost. Reconnecting...',
|
|
'sftp.error.sessionLost': 'SFTP session lost. Please reconnect.',
|
|
|
|
// Settings > SFTP Show Hidden Files
|
|
'settings.sftp.showHiddenFiles': 'Show hidden files',
|
|
'settings.sftp.showHiddenFiles.desc': 'Display hidden files (dotfiles on Unix/macOS and files with the hidden attribute on Windows) in the SFTP file browser.',
|
|
'settings.sftp.showHiddenFiles.enable': 'Show hidden files',
|
|
'settings.sftp.showHiddenFiles.enableDesc': 'Display hidden files when browsing both local and remote filesystems',
|
|
|
|
// Settings > SFTP Compressed Upload
|
|
'settings.sftp.compressedUpload': 'Folder Compression Transfer',
|
|
'settings.sftp.compressedUpload.desc': 'Compress folders before uploading to significantly reduce transfer time.',
|
|
'settings.sftp.compressedUpload.enable': 'Enable folder compression',
|
|
'settings.sftp.compressedUpload.enableDesc': 'Automatically compress folders using tar before transfer. Requires tar support on the server. Falls back to regular transfer if not available.',
|
|
|
|
// Quick Switcher
|
|
'qs.search.placeholder': 'Search hosts or tabs',
|
|
'qs.jumpTo': 'Jump To',
|
|
'qs.localTerminal': 'Local Terminal',
|
|
'qs.localShells': 'Local Shells',
|
|
'qs.default': 'Default',
|
|
|
|
// Select Host panel
|
|
'selectHost.title': 'Select Host',
|
|
'selectHost.noHostsFound': 'No hosts found',
|
|
'selectHost.newHost': 'New Host',
|
|
'selectHost.continue': 'Continue',
|
|
'selectHost.continueWithCount': 'Continue ({count} selected)',
|
|
|
|
// Quick Connect
|
|
'quickConnect.knownHost.title': 'Are you sure you want to connect?',
|
|
'quickConnect.knownHost.authenticity': 'The authenticity of {hostname} can not be established.',
|
|
'quickConnect.knownHost.fingerprintLabel': '{keyType} fingerprint is SHA256:',
|
|
'quickConnect.knownHost.addQuestion': 'Do you want to add it to the list of known hosts?',
|
|
'quickConnect.knownHost.addAndContinue': 'Add and continue',
|
|
'quickConnect.addKey': 'Add key',
|
|
'quickConnect.warning.unparsedOptions': 'Some SSH arguments were ignored: {options}',
|
|
|
|
// Terminal
|
|
'terminal.connectionErrorTitle': 'Connection Error',
|
|
|
|
// Protocol select dialog
|
|
'protocolSelect.chooseProtocol': 'Choose protocol',
|
|
'protocolSelect.port': 'port:',
|
|
|
|
// Host Details
|
|
'hostDetails.title.details': 'Host Details',
|
|
'hostDetails.title.new': 'New Host',
|
|
'hostDetails.saveAria': 'Save',
|
|
'hostDetails.section.address': 'Address',
|
|
'hostDetails.hostname.placeholder': 'IP or Hostname',
|
|
'hostDetails.section.general': 'General',
|
|
'hostDetails.section.sftp': 'SFTP Settings',
|
|
'hostDetails.sftp.sudo': 'Sudo Mode',
|
|
'hostDetails.sftp.sudo.desc': 'Automatically acquire Root privileges using stored password',
|
|
'hostDetails.sftp.sudo.passwordWarning': 'Sudo mode requires a password. Configure one above, or ensure the server allows passwordless sudo.',
|
|
'hostDetails.sftp.encoding': 'Filename Encoding',
|
|
'hostDetails.sftp.encoding.desc': 'Select the encoding used to decode and send SFTP filenames.',
|
|
'hostDetails.label.placeholder': 'Label (e.g., Production Server)',
|
|
'hostDetails.notes.label': 'Notes',
|
|
'hostDetails.notes.placeholder': 'Hardware, project, customer, region, role...',
|
|
'hostDetails.notes.help': 'Supports Markdown. Do not store passwords or private keys here.',
|
|
'hostDetails.notes.tab.edit': 'Edit',
|
|
'hostDetails.notes.tab.preview': 'Preview',
|
|
'hostDetails.notes.preview.empty': 'Nothing to preview yet.',
|
|
'hostDetails.group.placeholder': 'Parent Group',
|
|
'hostDetails.section.credentials': 'Credentials',
|
|
'hostDetails.section.portCredentials': 'Port & Credentials',
|
|
'hostDetails.section.appearance': 'Appearance',
|
|
'hostDetails.distro.title': 'Linux Distribution',
|
|
'hostDetails.distro.desc': 'Controls the automatic host icon. A custom Host Icon overrides this display.',
|
|
'hostDetails.icon.title': 'Host Icon',
|
|
'hostDetails.icon.desc': 'Use automatic distro icons with optional color, or choose a built-in icon.',
|
|
'hostDetails.icon.mode.auto': 'Automatic',
|
|
'hostDetails.icon.mode.custom': 'Custom',
|
|
'hostDetails.icon.reset': 'Reset host icon',
|
|
'hostDetails.icon.showLibrary': 'Show icon library',
|
|
'hostDetails.icon.hideLibrary': 'Hide icon library',
|
|
'hostDetails.icon.autoUsesDistro': 'Use Linux Distribution icon and selected color for this host.',
|
|
'hostDetails.icon.customOverridesDistro': 'Built-in icon replaces Linux Distribution for this host.',
|
|
'hostDetails.icon.option.server': 'Server',
|
|
'hostDetails.icon.option.terminal': 'Terminal',
|
|
'hostDetails.icon.option.database': 'Database',
|
|
'hostDetails.icon.option.cloud': 'Cloud',
|
|
'hostDetails.icon.option.router': 'Router',
|
|
'hostDetails.icon.option.shield': 'Shield',
|
|
'hostDetails.icon.option.code': 'Code',
|
|
'hostDetails.icon.option.box': 'Box',
|
|
'hostDetails.icon.option.globe': 'Globe',
|
|
'hostDetails.icon.option.cpu': 'CPU',
|
|
'hostDetails.icon.option.hard-drive': 'Storage',
|
|
'hostDetails.icon.option.network': 'Network',
|
|
'hostDetails.icon.option.wifi': 'Wireless',
|
|
'hostDetails.icon.option.lock': 'Lock',
|
|
'hostDetails.icon.option.key': 'Key',
|
|
'hostDetails.icon.option.monitor': 'Monitor',
|
|
'hostDetails.icon.option.container': 'Container',
|
|
'hostDetails.icon.option.activity': 'Activity',
|
|
'hostDetails.icon.option.zap': 'Fast',
|
|
'hostDetails.icon.option.server-cog': 'Server settings',
|
|
'hostDetails.icon.color.blue': 'Blue',
|
|
'hostDetails.icon.color.green': 'Green',
|
|
'hostDetails.icon.color.red': 'Red',
|
|
'hostDetails.icon.color.amber': 'Amber',
|
|
'hostDetails.icon.color.purple': 'Purple',
|
|
'hostDetails.icon.color.cyan': 'Cyan',
|
|
'hostDetails.icon.color.orange': 'Orange',
|
|
'hostDetails.icon.color.slate': 'Slate',
|
|
'hostDetails.icon.color.violet': 'Violet',
|
|
'hostDetails.icon.color.pink': 'Pink',
|
|
'hostDetails.icon.color.rose': 'Rose',
|
|
'hostDetails.icon.color.lime': 'Lime',
|
|
'hostDetails.icon.color.teal': 'Teal',
|
|
'hostDetails.icon.color.sky': 'Sky',
|
|
'hostDetails.icon.color.indigo': 'Indigo',
|
|
'hostDetails.icon.color.zinc': 'Zinc',
|
|
'hostDetails.distro.mode': 'Source',
|
|
'hostDetails.distro.mode.auto': 'Auto-detect',
|
|
'hostDetails.distro.mode.manual': 'Manual override',
|
|
'hostDetails.distro.detectedLabel': 'Current',
|
|
'hostDetails.distro.manualLabel': 'Override',
|
|
'hostDetails.distro.pending': 'Detect after first connection',
|
|
'hostDetails.distro.unknown': 'Unknown',
|
|
'hostDetails.distro.option.linux': 'Generic Linux',
|
|
'hostDetails.distro.option.ubuntu': 'Ubuntu',
|
|
'hostDetails.distro.option.debian': 'Debian',
|
|
'hostDetails.distro.option.centos': 'CentOS',
|
|
'hostDetails.distro.option.rocky': 'Rocky Linux',
|
|
'hostDetails.distro.option.fedora': 'Fedora',
|
|
'hostDetails.distro.option.arch': 'Arch Linux',
|
|
'hostDetails.distro.option.alpine': 'Alpine',
|
|
'hostDetails.distro.option.amazon': 'Amazon Linux',
|
|
'hostDetails.distro.option.opensuse': 'openSUSE / SLES',
|
|
'hostDetails.distro.option.redhat': 'Red Hat / RHEL',
|
|
'hostDetails.distro.option.almalinux': 'AlmaLinux',
|
|
'hostDetails.distro.option.alinux': 'Alibaba Cloud Linux',
|
|
'hostDetails.distro.option.openeuler': 'openEuler',
|
|
'hostDetails.distro.option.oracle': 'Oracle Linux',
|
|
'hostDetails.distro.option.kali': 'Kali Linux',
|
|
'hostDetails.distro.option.cisco': 'Cisco',
|
|
'hostDetails.distro.option.juniper': 'Juniper Networks',
|
|
'hostDetails.distro.option.huawei': 'Huawei',
|
|
'hostDetails.distro.option.hpe': 'HPE / H3C',
|
|
'hostDetails.distro.option.mikrotik': 'MikroTik',
|
|
'hostDetails.distro.option.fortinet': 'Fortinet',
|
|
'hostDetails.distro.option.paloalto': 'Palo Alto Networks',
|
|
'hostDetails.distro.option.zyxel': 'ZyXEL',
|
|
'hostDetails.distro.option.ruijie': 'Ruijie',
|
|
'hostDetails.section.mosh': 'Mosh',
|
|
'hostDetails.section.et': 'EternalTerminal',
|
|
'hostDetails.et.port': 'ET server port',
|
|
'hostDetails.et.port.desc': 'Port etserver listens on (default 2022)',
|
|
'hostDetails.username.placeholder': 'Username',
|
|
'hostDetails.password.placeholder': 'Password',
|
|
'hostDetails.password.show': 'Show password',
|
|
'hostDetails.password.hide': 'Hide password',
|
|
'hostDetails.password.save': 'Save password',
|
|
'hostDetails.identity.suggestions': 'Identities',
|
|
'hostDetails.identity.missing': 'Identity not found',
|
|
'hostDetails.credential.keyCertificate': 'Key, Certificate, Local Key File',
|
|
'hostDetails.credential.key': 'Key',
|
|
'hostDetails.credential.certificate': 'Certificate',
|
|
'hostDetails.credential.localKeyFile': 'Local Key File',
|
|
'hostDetails.credential.localKeyFilePlaceholder': '~/.ssh/id_ed25519',
|
|
'hostDetails.credential.browseKeyFile': 'Browse...',
|
|
'hostDetails.credential.missing': 'Credential not found',
|
|
'hostDetails.keys.search': 'Search keys...',
|
|
'hostDetails.keys.empty': 'No keys available',
|
|
'hostDetails.certs.search': 'Search certificates...',
|
|
'hostDetails.certs.empty': 'No certificates available',
|
|
'hostDetails.agentForwarding': 'Forward SSH Agent',
|
|
'hostDetails.agentForwarding.desc': 'Allow remote server to use your local SSH keys (e.g., for git operations)',
|
|
'hostDetails.agentForwarding.agentNotRunning': 'SSH Agent is not available',
|
|
'hostDetails.agentForwarding.agentNotRunningHint': 'No SSH agent detected. Enable OpenSSH Authentication Agent in Windows Services, or use a compatible agent such as Bitwarden, 1Password, or gpg-agent.',
|
|
'hostDetails.section.agentForwarding': 'SSH Agent',
|
|
'hostDetails.x11Forwarding': 'Forward X11 apps',
|
|
'hostDetails.x11Forwarding.desc': 'Show remote graphical apps on your local desktop when a local X server is running.',
|
|
'hostDetails.section.x11Forwarding': 'X11 Forwarding',
|
|
'hostDetails.section.deviceType': 'Device Type',
|
|
'hostDetails.deviceType': 'Network Device Mode',
|
|
'hostDetails.deviceType.desc': 'Enable for network equipment (switches, routers, firewalls) connected via SSH. Commands are sent as-is without shell wrapping, compatible with vendor CLIs like Huawei VRP and Cisco IOS.',
|
|
'hostDetails.deviceType.warning': 'AI agent commands will be sent directly without exit code tracking. Only enable for devices that do not run a standard shell.',
|
|
'hostDetails.section.sshAlgorithms': 'SSH Algorithms',
|
|
'hostDetails.section.terminalBehavior': 'Terminal Behavior',
|
|
'hostDetails.lineTimestamps': 'Show output timestamps',
|
|
'hostDetails.lineTimestamps.desc': 'Show local time beside visible output lines for this host without changing terminal text.',
|
|
'hostDetails.legacyAlgorithms': 'Allow Legacy Algorithms',
|
|
'hostDetails.legacyAlgorithms.desc': 'Enable deprecated SSH algorithms (diffie-hellman-group1, ssh-dss, 3des-cbc, etc.) for connecting to older network equipment.',
|
|
'hostDetails.legacyAlgorithms.warning': 'These algorithms have known security weaknesses. Only enable for legacy devices that do not support modern cryptography.',
|
|
'hostDetails.skipEcdsaHostKey': 'Skip ECDSA host key',
|
|
'hostDetails.skipEcdsaHostKey.desc': 'Some old Huawei / Cisco switches produce non-standard ECDSA host-key signatures that cause "signature verification failed". Turning this on drops every ecdsa-sha2-* from the client offer so negotiation falls back to RSA / Ed25519.',
|
|
'hostDetails.algorithms.advanced': 'Advanced algorithm overrides',
|
|
'hostDetails.algorithms.advanced.desc': 'Replace the offered algorithm list for any category on a per-host basis. Leaving a category untouched uses the default; selecting a subset fully replaces the default list. Incorrect values can make the host unreachable.',
|
|
'hostDetails.algorithms.inheritedNotice': 'The current group has algorithm overrides set for: {categories}. The "Reset" button here falls back to the group\'s lists, not NetCatty\'s defaults. To ignore the group restriction, clear the override in the group\'s algorithm settings.',
|
|
'hostDetails.algorithms.customized': 'customized',
|
|
'hostDetails.algorithms.reset': 'Reset',
|
|
'hostDetails.algorithms.category.kex': 'Key Exchange (KEX)',
|
|
'hostDetails.algorithms.category.cipher': 'Cipher',
|
|
'hostDetails.algorithms.category.hmac': 'MAC (HMAC)',
|
|
'hostDetails.algorithms.category.serverHostKey': 'Host Key',
|
|
'hostDetails.algorithms.category.compress': 'Compression',
|
|
'hostDetails.section.keepalive': 'Keepalive',
|
|
'hostDetails.keepalive.override': 'Override global keepalive',
|
|
'hostDetails.keepalive.desc': 'Use a custom keepalive policy for this host instead of the global setting. Useful for older routers or switches whose SSH server does not reply to keepalive@openssh.com requests — set interval to 0 to disable keepalive entirely on this host.',
|
|
'hostDetails.keepalive.interval': 'Interval (seconds)',
|
|
'hostDetails.keepalive.countMax': 'Max unanswered keepalives',
|
|
'hostDetails.keepalive.disabledHint': 'Interval = 0 disables keepalive for this host. The session will rely on TCP-level timeouts to detect a dead connection.',
|
|
'hostDetails.backspaceBehavior': 'Backspace Behavior',
|
|
'hostDetails.backspaceBehavior.default': 'Default',
|
|
'hostDetails.jumpHosts': 'Proxy via Hosts',
|
|
'hostDetails.jumpHosts.hops': '{count} hop(s)',
|
|
'hostDetails.jumpHosts.direct': 'Direct',
|
|
'hostDetails.jumpHosts.configure': 'Configure Proxy Hosts',
|
|
'hostDetails.proxy': 'Proxy via HTTP/SOCKS5/Command',
|
|
'hostDetails.proxy.none': 'None',
|
|
'hostDetails.proxy.edit': 'Edit Proxy',
|
|
'hostDetails.proxy.configure': 'Configure Proxy',
|
|
'hostDetails.proxyPanel.title': 'Proxy via HTTP/SOCKS5/Command',
|
|
'hostDetails.proxyPanel.hostPlaceholder': 'Proxy host',
|
|
'hostDetails.proxyPanel.command': 'ProxyCommand',
|
|
'hostDetails.proxyPanel.commandPlaceholder': 'cloudflared access ssh --hostname %h',
|
|
'hostDetails.proxyPanel.commandHelp': 'Use %h for the target host, %p for the target port, and %% for a literal percent.',
|
|
'hostDetails.proxyPanel.credentials': 'Credentials',
|
|
'hostDetails.proxyPanel.usernamePlaceholder': 'Username',
|
|
'hostDetails.proxyPanel.passwordPlaceholder': 'Password',
|
|
'hostDetails.proxyPanel.identities': 'Identities',
|
|
'hostDetails.proxyPanel.remove': 'Remove Proxy',
|
|
'hostDetails.proxyPanel.savedProxy': 'Saved proxy',
|
|
'hostDetails.proxyPanel.selectSaved': 'Select saved proxy',
|
|
'hostDetails.proxyPanel.customProxy': 'Custom proxy',
|
|
'hostDetails.proxyPanel.missing': 'Missing',
|
|
'hostDetails.proxyPanel.missingSaved': 'Missing saved proxy',
|
|
'hostDetails.proxyPanel.error.required': 'Proxy host and port, or a ProxyCommand, are required.',
|
|
'hostDetails.envVars': 'Environment Variables',
|
|
'hostDetails.envVars.add': 'Add Environment Variable',
|
|
'hostDetails.envVars.title': 'Environment Variables',
|
|
'hostDetails.envVars.desc': 'Set an environment variable for {host}.',
|
|
'hostDetails.envVars.note':
|
|
'Some SSH servers by default only allow variables with prefix LC_ and LANG_.',
|
|
'hostDetails.envVars.variable': 'Variable',
|
|
'hostDetails.envVars.value': 'Value',
|
|
'hostDetails.envVars.newVariable': 'New Variable',
|
|
'hostDetails.envVars.variableName': 'Variable name',
|
|
'hostDetails.chain.title': 'Edit Chain',
|
|
'hostDetails.chain.desc': 'Adding another host will create a connection to {host}.',
|
|
'hostDetails.chain.addHost': 'Add a Host',
|
|
'hostDetails.chain.target': 'Target',
|
|
'hostDetails.chain.availableHosts': 'Available Hosts',
|
|
'hostDetails.chain.clear': 'Clear',
|
|
'hostDetails.group.title': 'New Group',
|
|
'hostDetails.group.general': 'General',
|
|
'hostDetails.group.namePlaceholder': 'Group name',
|
|
'hostDetails.group.parentPlaceholder': 'Parent Group',
|
|
'hostDetails.group.cloudSync': 'Cloud Sync',
|
|
'hostDetails.group.addProtocol': 'Add protocol',
|
|
'hostDetails.startupCommand': 'Startup Command',
|
|
'hostDetails.startupCommand.placeholder': 'Command to run on connect (e.g., cd /app && ls)',
|
|
'hostDetails.startupCommand.help':
|
|
'This command will be executed automatically after SSH connection is established.',
|
|
'hostDetails.otherProtocols': 'Other Protocols',
|
|
'hostDetails.telnetOn': 'Telnet on',
|
|
'hostDetails.port': 'port',
|
|
'hostDetails.telnet.credentials': 'Credentials',
|
|
'hostDetails.telnet.username': 'Telnet Username',
|
|
'hostDetails.telnet.password': 'Telnet Password',
|
|
'hostDetails.charset.placeholder': 'Charset (e.g. UTF-8)',
|
|
'hostDetails.telnet.add': 'Add Telnet Protocol',
|
|
'hostDetails.telnet.setDefault': 'Connect with Telnet by default',
|
|
'hostDetails.tags': 'Tags',
|
|
'hostDetails.group': 'Group',
|
|
'hostDetails.selectGroup': 'Select Group',
|
|
'hostDetails.addTag': 'Add a tag...',
|
|
'hostDetails.createTag': 'Create tag',
|
|
'hostDetails.createGroup': 'Create group',
|
|
|
|
// Host form (legacy modal)
|
|
'hostForm.title.edit': 'Edit Host',
|
|
'hostForm.title.new': 'New Host',
|
|
'hostForm.desc.edit': 'Update connection details for this host',
|
|
'hostForm.desc.new': 'Create a new SSH host entry',
|
|
'hostForm.field.label': 'Label',
|
|
'hostForm.placeholder.label': 'My Production Server',
|
|
'hostForm.field.hostname': 'Hostname / IP',
|
|
'hostForm.placeholder.hostname': '192.168.1.1',
|
|
'hostForm.field.port': 'Port',
|
|
'hostForm.field.username': 'Username',
|
|
'hostForm.field.osType': 'OS Type',
|
|
'hostForm.placeholder.selectOs': 'Select OS',
|
|
'hostForm.field.group': 'Group',
|
|
'hostForm.placeholder.group': 'e.g. AWS, DigitalOcean',
|
|
'hostForm.field.tags': 'Tags',
|
|
'hostForm.placeholder.addTag': 'Add a tag...',
|
|
'hostForm.auth.method': 'Authentication Method',
|
|
'hostForm.auth.password': 'Password',
|
|
'hostForm.auth.sshKey': 'SSH Key',
|
|
'hostForm.auth.selectKey': 'Select an SSH Key',
|
|
'hostForm.auth.noKeys': 'No keys available',
|
|
'hostForm.auth.noKeysHint': 'No SSH keys found in Keychain. Please create one first.',
|
|
'hostForm.saveHost': 'Save Host',
|
|
|
|
// Connection logs
|
|
'logs.table.date': 'Date',
|
|
'logs.table.user': 'User',
|
|
'logs.table.host': 'Host',
|
|
'logs.table.saved': 'Saved',
|
|
'logs.empty.title': 'No Connection Logs',
|
|
'logs.empty.desc':
|
|
'Your connection history will appear here when you connect to hosts or open local terminals.',
|
|
'logs.loadMore': 'Load {count} more logs',
|
|
'logs.ongoing': 'ongoing',
|
|
'logs.localTerminal': 'Local Terminal',
|
|
'logs.action.save': 'Save',
|
|
'logs.action.unsave': 'Unsave',
|
|
'logs.action.delete': 'Delete',
|
|
|
|
// Log view
|
|
'logView.customizeAppearance': 'Customize appearance',
|
|
'logView.appearance': 'Appearance',
|
|
'logView.readOnly': 'Read-only',
|
|
'logView.export': 'Export',
|
|
|
|
};
|