Files
nexus-terminal/packages/frontend/src/locales/en-US.json
T
Baobhan Sith 05582bcfde update
2025-05-16 20:44:03 +08:00

1503 lines
66 KiB
JSON

{
"appName": "Nexus Terminal",
"projectName": "Nexus Terminal",
"slogan":"Stir the stars, command the terminal.",
"nav": {
"dashboard": "Dashboard",
"terminal": "Terminal",
"connections": "Connections",
"proxies": "Proxies",
"login": "Login",
"logout": "Logout",
"notifications": "Notifications",
"auditLogs": "Audit Logs",
"settings": "Settings",
"customizeStyle": "Customize Style"
},
"styleCustomizer": {
"title": "Appearance Customizer",
"uiStyles": "UI Styles",
"terminalStyles": "Terminal Styles",
"backgroundSettings": "Background",
"uiDescription": "Adjust colors, fonts, etc. for the application interface.",
"resetUiTheme": "Reset UI Theme",
"saveUiTheme": "Save UI Theme",
"terminalFontFamily": "Terminal Font",
"terminalFontPlaceholder": "e.g., \"Fira Code\", Consolas, monospace",
"terminalFontDescription": "Enter font names, separated by commas. Use quotes for names with spaces.",
"terminalThemeSelection": "Terminal Theme",
"activeTheme": "Active Theme",
"addNewTheme": "New Theme",
"importTheme": "Import Theme",
"editThemeTitle": "Edit Terminal Theme",
"newThemeTitle": "New Terminal Theme",
"newThemeDefaultName": "New Theme",
"themeName": "Theme Name",
"errorThemeNameRequired": "Theme name cannot be empty.",
"themeUpdatedSuccess": "Theme updated successfully.",
"themeCreatedSuccess": "Theme created successfully.",
"themeSaveFailed": "Failed to save theme.",
"themeDeletedSuccess": "Theme deleted successfully.",
"passkeyLoginButton": "Login with Passkey",
"themeDeleteFailed": "Failed to delete theme: {message}",
"importSuccess": "Theme imported successfully.",
"importFailed": "Theme import failed.",
"exportFailed": "Failed to export theme: {message}",
"pageBackground": "Page Background",
"terminalBackground": "Terminal Background",
"noBackground": "No background",
"uploadPageBg": "Upload Page Bg",
"removePageBg": "Remove Page Bg",
"uploadTerminalBg": "Upload Terminal Bg",
"removeTerminalBg": "Remove Terminal Bg",
"uploadFailed": "Upload failed: {message}",
"pageBgUploadSuccess": "Page background uploaded successfully.",
"terminalBgUploadSuccess": "Terminal background uploaded successfully.",
"pageBgRemoved": "Page background removed.",
"terminalBgRemoved": "Terminal background removed.",
"removeBgFailed": "Failed to remove background: {message}",
"uiThemeSaveFailed": "Failed to save UI theme: {message}",
"uiThemeReset": "UI theme reset to default.",
"uiThemeResetFailed": "Failed to reset UI theme: {message}",
"terminalFontSaved": "Terminal font saved.",
"terminalFontSaveFailed": "Failed to save terminal font: {message}",
"setActiveThemeFailed": "Failed to set active terminal theme: {message}",
"terminalFontSize": "Terminal Font Size",
"errorInvalidFontSize": "Invalid font size. Please enter a positive number.",
"terminalFontSizeSaved": "Terminal font size saved.",
"terminalFontSizeSaveFailed": "Failed to save terminal font size: {message}",
"otherSettings": "Other Settings",
"editorFontSize": "Editor Font Size",
"editorFontSizeSaved": "Editor font size saved.",
"editorFontSizeSaveFailed": "Failed to save editor font size: {message}",
"errorInvalidEditorFontSize": "Invalid font size. Please enter a positive number.",
"uiThemeJsonEditorTitle": "UI Theme JSON Editor",
"uiThemeJsonEditorDesc": "Directly edit the UI theme configuration using JSON. Changes here will reflect in the color pickers above after blurring the textarea.",
"errorInvalidJsonObject": "Invalid input. Please provide a valid JSON object.",
"errorInvalidJsonConfig": "Invalid JSON configuration",
"editAsCopy": "Edit as Copy",
"cannotDeletePreset": "Cannot delete preset theme",
"applyThemeTooltip": "Apply this theme",
"terminalThemeJsonEditorTitle": "Terminal Theme JSON Editor",
"terminalThemeJsonEditorDesc": "Directly edit the terminal theme configuration using JSON. Changes here will reflect in the color pickers below after blurring the textarea.",
"terminalThemeColorEditorTitle": "Terminal Theme Color Editor",
"errorFixJsonBeforeSave": "Please fix the JSON format errors before saving.",
"applyButton": "Apply",
"searchThemePlaceholder": "Search theme name...",
"exportActiveThemeTooltip": "Export the currently active theme as a JSON file",
"exportActiveTheme": "Export Active Theme",
"themeModeLabel": "Theme Mode:",
"defaultMode": "Default Mode",
"darkMode": "Dark Mode",
"darkModeApplied": "Dark mode applied",
"darkModeApplyFailed": "Failed to apply dark mode: {message}",
"terminalBgOverlayOpacity": "Terminal Background Overlay Opacity:",
"terminalBgOverlayOpacityDesc": "Controls the opacity of the black overlay on top of the background image. 0 is fully transparent, 1 is fully opaque.",
"errorInvalidOpacityValue": "Invalid opacity value. Must be between 0 and 1.",
"terminalBgOverlayOpacitySaved": "Terminal background overlay opacity saved.",
"terminalBgOverlayOpacitySaveFailed": "Failed to save terminal background overlay opacity: {message}"
},
"login": {
"title": "User Login",
"username": "Username",
"password": "Password",
"loginButton": "Login",
"loggingIn": "Logging in...",
"twoFactorPrompt": "Enter your two-factor authentication code:",
"verifyButton": "Verify",
"rememberMe": "Remember Me",
"loginWithPasskey": "Login with Passkey",
"captchaPrompt": "Please complete the verification below:",
"error": {
"captchaLoadFailed": "Failed to load CAPTCHA. Please try refreshing.",
"captchaRequired": "Please complete the CAPTCHA verification.",
"usernameRequiredForPasskey": "Username is required to use a passkey.",
"passkeyAuthOptionsFailed": "Failed to get passkey authentication options from the server.",
"passkeyAuthFailed": "Passkey authentication failed. Please try again or use your password."
},
"recaptchaV3Notice": "This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply."
},
"connections": {
"addConnection": "Add New Connection",
"noConnections": "No connections yet. Click 'Add New Connection' to create one!",
"addFirstConnection": "Add your first connection",
"table": {
"name": "Name",
"host": "Host",
"port": "Port",
"user": "User",
"authMethod": "Auth Method",
"tags": "Tags",
"lastConnected": "Last Connected",
"actions": "Actions"
},
"batchEdit":{
"toggleLabel":"Batch Edit",
"selectAll": "Select All",
"deselectAll": "Deselect All",
"invertSelection": "Invert Selection",
"title": "Batch Edit Connections",
"editSelected": "Edit Selected",
"noChange":"No change",
"selectedItems":"{count} items selected"
},
"actions": {
"testAllFiltered":"Test All",
"connect": "Connect",
"edit": "Edit",
"delete": "Delete",
"test": "Test",
"testing": "Testing...",
"clone": "Clone"
},
"form": {
"title": "Add New Connection",
"name": "Name:",
"host": "Host/IP:",
"port": "Port:",
"username": "Username:",
"authMethod": "Authentication Method:",
"authMethodPassword": "Password",
"authMethodKey": "SSH Key",
"password": "Password:",
"privateKey": "Private Key:",
"passphrase": "Passphrase:",
"vncPassword": "VNC Password",
"optional": "Optional",
"confirm": "Confirm Add",
"adding": "Adding...",
"cancel": "Cancel",
"noSshKey":"No SSH Key",
"errorRequiredFields": "Please fill in all required fields.",
"errorPasswordRequired": "Password is required for password authentication.",
"errorPrivateKeyRequired": "Private key is required for key authentication.",
"errorSshKeyRequired": "An SSH key must be selected for key authentication.",
"errorPasswordRequiredOnSwitch": "Password is required when switching to password authentication.",
"errorPrivateKeyRequiredOnSwitch": "Private key is required when switching to key authentication.",
"errorSshKeyRequiredOnSwitch": "An SSH key must be selected when switching to key authentication.",
"errorVncPasswordRequired": "VNC password is required.",
"errorPort": "Port must be between 1 and 65535.",
"errorAdd": "Failed to add connection: {error}",
"titleEdit": "Edit Connection",
"confirmEdit": "Confirm Edit",
"saving": "Saving...",
"errorUpdate": "Failed to update connection: {error}",
"keyUpdateNote": "Leave private key and passphrase blank to keep the existing key.",
"proxy": "Proxy:",
"noProxy": "No Proxy",
"tags": "Tags:",
"notes": "Notes:",
"notesPlaceholder": "Enter connection notes...",
"connectionType": "Connection Type:",
"typeSsh": "SSH",
"typeRdp": "RDP",
"typeVnc": "VNC",
"sectionBasic": "Basic Information",
"sectionAuth": "Authentication",
"sectionAdvanced": "Advanced Options",
"testConnection": "Test Connection",
"testing": "Testing...",
"sshKey": "SSH Key",
"privateKeyDirect": "Private Key Content",
"keyUpdateNoteDirect": "Leave private key and passphrase blank to keep the existing key when editing.",
"keyUpdateNoteSelected": "Select another key or use direct input to change the key when editing.",
"hostTooltip": "Supports IP range for batch add (e.g., 192.168.1.10~192.168.1.15, add mode only)",
"errorInvalidIpRangeFormat": "IP range format should be start_ip~end_ip",
"errorInvalidIpFormat": "Invalid start or end IP address format",
"errorIpRangeNotSameSubnet": "IP range must be within the same C-class subnet (e.g., 1.2.3.x ~ 1.2.3.y)",
"errorInvalidIpSuffix": "The last part of the IP address must be a number between 0-255",
"errorIpRangeStartAfterEnd": "The start IP of the range cannot be greater than the end IP",
"errorIpRangeEmpty": "IP range cannot be empty.",
"errorSshKeyRequiredForBatch": "When batch adding SSH (key auth) connections, an SSH key must be selected.",
"errorPasswordRequiredForBatchSSH": "When batch adding SSH (password auth) connections, a password must be provided.",
"errorPasswordRequiredForBatchRDP": "When batch adding RDP connections, a password must be provided.",
"errorPasswordRequiredForBatchVNC": "When batch adding VNC connections, a VNC password must be provided.",
"errorBatchAddResult": "Batch add: {successCount} succeeded, {errorCount} failed. First error: {firstErrorEncountered}",
"successBatchAddResult": "Batch add successful: {successCount} connections created.",
"errorIpRangeNotAllowedInEditMode": "IP range is not supported in edit mode. Please use a single IP address.",
"scriptModeSubmitPlaceholder": "Script mode submission logic to be implemented.",
"scriptModeEmpty": "Script input cannot be empty.",
"scriptModeSubmitPending": "Processing script mode submission...",
"sectionScriptMode": "Script Mode",
"scriptModeInputLabel": "Connection Script (one per line)",
"scriptModePlaceholder": "Enter connection script, one connection configuration per line.",
"scriptModeFormatInfo": "Format: user@host:port [-type TYPE] [-name NAME] [-p PASSWORD] [-k KEY_NAME] [-proxy PROXY_NAME] [-tags TAG1 TAG2...] [-note NOTE_TEXT]\nParameter Explanation:\n user@host:port - Username@Hostname or IP:Port (required)\n -type TYPE - Connection type (SSH, RDP, VNC; defaults to SSH)\n -name NAME - Display name for the connection (optional; defaults to user@host)\n -p PASSWORD - Password (required for SSH password auth, RDP, VNC)\n -k KEY_NAME - SSH key name (required for SSH key auth, corresponds to an uploaded key)\n -proxy PROXY_NAME - Proxy name (optional, corresponds to a configured proxy)\n -tags TAG1 TAG2 - List of tags, space-separated (optional)\n -note NOTE_TEXT - Connection notes (optional, supports text with spaces, use quotes if it includes special characters)",
"scriptErrorMissingHost": "Script line '{line}' is missing the 'user@host:port' part.",
"scriptErrorInvalidType": "Invalid type '{type}' in script line '{line}'. Valid types are SSH, RDP, VNC.",
"scriptErrorUnknownArg": "Unknown argument '{arg}' in script line '{line}'.",
"scriptErrorUnexpectedToken": "Unexpected token '{token}' in script line '{line}'.",
"scriptErrorInvalidUserHostPort": "Invalid format for '{part}' in script line '{line}'. Expected 'user@host' or 'user@host:port'.",
"scriptErrorInLine": "Error parsing script line: \"{line}\" - Error: {error}",
"scriptErrorMissingType": "Script line '{line}' is missing connection type or type is invalid.",
"scriptErrorInvalidUserHostFormat": "Invalid user@host format in script line '{line}'.",
"scriptErrorInvalidPort": "Invalid port '{port}' in script line '{line}'.",
"scriptErrorMissingPasswordForSsh": "Script line '{line}' (SSH password auth) is missing password (-p).",
"scriptErrorMissingKeyNameForSsh": "Script line '{line}' (SSH key auth) is missing key name (-k).",
"scriptErrorMissingPasswordForType": "Script line '{line}' (type {type}) is missing password (-p).",
"scriptErrorInternal": "Internal parsing error while processing script input.",
"scriptErrorTagNotFound": "Script processing error: Tag '{tagName}' not found.",
"scriptErrorSshKeyNotFound": "Script processing error: SSH Key '{keyName}' not found.",
"scriptErrorNothingToProcess": "No valid connection data to process.",
"scriptErrorMissingAuthForSsh": "SSH connection must provide password (-p) or key name (-k)",
"scriptErrorMissingPasswordForRdp": "RDP connection must provide password (-p)",
"scriptErrorKeyNotApplicableForRdp": "Key name (-k) is not applicable for RDP connection",
"scriptErrorMissingPasswordForVnc": "VNC connection must provide password (-p)",
"scriptErrorKeyNotApplicableForVnc": "Key name (-k) is not applicable for VNC connection",
"scriptErrorMissingValueForKey": "Missing value for parameter '{key}'",
"scriptErrorUnknownOption": "Unknown option '{option}'",
"scriptErrorUnexpectedArgument": "Unexpected argument '{argument}'",
"scriptErrorEmptyLine": "Input line cannot be empty",
"scriptErrorInvalidUserHostPortFormat": "Invalid format for '{part}', expected format is 'user@host' or 'user@host:port'",
"scriptTagCreated": "Tag '{tagName}' created",
"scriptErrorTagCreationFailed": "Failed to create tag '{tagName}'",
"scriptModeAddingConnections": "Adding {count} connections via script mode..."
},
"test": {
"success": "Connection test successful!",
"failed": "Connection test failed: {error}",
"latencyTooltip": "This measures the time to establish a new SSH connection (TCP, Proxy, SSH Handshake, Auth). It's typically higher than interaction latency on an already established connection.",
"errorMissingFields": "Please fill in Host, Port, Username, and select an Auth Method.",
"errorUnknown": "An unknown error occurred during testing.",
"errorNetwork": "Network error or server unreachable.",
"testingInProgress": "Testing...",
"errorPrefix": "Error:"
},
"prompts": {
"confirmDelete": "Are you sure you want to delete the connection \"{name}\"? This cannot be undone."
},
"errors": {
"deleteFailed": "Failed to delete connection: {error}",
"createFailed": "Failed to add connection: {error}",
"cloneFailed": "Failed to clone connection: {error}"
},
"status": {
"never": "Never"
},
"untaggedGroup": "Untagged",
"noUntaggedConnections": "No untagged connections found."
},
"proxies": {
"title": "Proxy Management",
"addProxy": "Add New Proxy",
"loading": "Loading proxies...",
"error": "Failed to load proxies: {error}",
"noProxies": "No proxies yet. Click 'Add New Proxy' to create one!",
"actions": {
"edit": "Edit",
"delete": "Delete"
},
"form": {
"title": "Add New Proxy",
"titleEdit": "Edit Proxy",
"name": "Name:",
"type": "Type:",
"host": "Host/IP:",
"port": "Port:",
"username": "Username:",
"password": "Password:",
"optional": "Optional",
"confirm": "Confirm Add",
"confirmEdit": "Confirm Edit",
"adding": "Adding...",
"saving": "Saving...",
"cancel": "Cancel",
"errorRequiredFields": "Please fill in all required fields.",
"errorPort": "Port must be between 1 and 65535.",
"errorAdd": "Failed to add proxy: {error}",
"errorUpdate": "Failed to update proxy: {error}",
"passwordUpdateNote": "Leave password blank to keep the existing password."
},
"prompts": {
"confirmDelete": "Are you sure you want to delete the proxy \"{name}\"? This cannot be undone."
},
"errors": {
"deleteFailed": "Failed to delete proxy: {error}"
}
},
"workspace": {
"terminal": {
"reconnectingMsg": "Attempting to reconnect..."
}
},
"fileEditor": {
"title": "File Editor"
},
"fileManager": {
"modalTitle": "File Manager",
"currentPath": "Current Path",
"loading": "Loading directory...",
"emptyDirectory": "Directory is empty",
"uploadTasks": "Upload Tasks",
"actions": {
"refresh": "Refresh",
"parentDirectory": "Parent Directory",
"uploadFile": "Upload File",
"upload": "Upload",
"newFolder": "New Folder",
"rename": "Rename",
"changePermissions": "Change Permissions",
"newFile": "New File",
"delete": "Delete",
"deleteMultiple": "Delete {count} items",
"download": "Download",
"downloadMultiple": "Download {count} items",
"downloadFolder": "Download Folder",
"cancel": "Cancel",
"save": "Save",
"closeTab": "Close Tab",
"closeEditor": "Close Editor",
"cdToTerminal": "Change terminal directory to current path",
"copy": "Copy",
"cut": "Cut",
"paste": "Paste",
"openEditor": "Open Editor"
},
"contextMenu": {
"compress": "Compress",
"compressZip": "Compress to zip",
"compressTarGz": "Compress to tar.gz",
"compressTarBz2": "Compress to tar.bz2",
"decompress": "Decompress",
"sendTo": "Send to..."
},
"headers": {
"type": "Type",
"name": "Name",
"size": "Size",
"permissions": "Permissions",
"modified": "Modified"
},
"uploadStatus": {
"cancelled": "Cancelled",
"pending": "Pending",
"uploading": "Uploading"
},
"errors": {
"generic": "Error",
"missingConnectionId": "Cannot get current connection ID",
"createFolderFailed": "Failed to create folder",
"deleteFailed": "Failed to delete",
"renameFailed": "Failed to rename",
"chmodFailed": "Failed to change permissions",
"invalidPermissionsFormat": "Invalid permissions format. Please enter 3 or 4 octal digits (e.g., 755 or 0755).",
"readFileError": "Error reading file",
"readFileFailed": "Failed to read file",
"fileDecodeError": "File decoding failed (likely not UTF-8)",
"saveFailed": "Failed to save file",
"saveTimeout": "Save timed out",
"fileExists": "File \"{name}\" already exists.",
"loadDirectoryFailed": "Failed to load directory",
"copyFailed": "Copy failed",
"moveFailed": "Move failed",
"sftpNotReady": "SFTP session not ready",
"sftpManagerNotFound": "SFTP manager not found",
"noActiveSession": "No active session found",
"terminalManagerNotFound": "Terminal manager not found",
"sendCommandFailed": "Failed to send command",
"downloadDirectoryFailed": "Failed to download directory",
"downloadDirectoryNotImplemented": "Directory download feature is not yet implemented on the server.",
"compressFailed": "Compression failed",
"compressTimeout": "Compression timed out",
"compressErrorDetailed": "Compression failed: {error}",
"decompressFailed": "Decompression failed",
"decompressTimeout": "Decompression timed out",
"decompressErrorDetailed": "Decompression failed: {error}",
"commandNotFoundCompress": "Command '{command}' not found on server, cannot complete compression.",
"commandNotFoundDecompress": "Command '{command}' not found on server, cannot complete decompression.",
"genericCommandNotFound": "Command '{command}' not found on server, cannot complete '{operation}' operation."
},
"notifications": {
"copySuccess": "Copy successful",
"moveSuccess": "Move successful",
"cdCommandSent": "CD command sent to terminal",
"compressSuccess": "Compressed {name} successfully",
"decompressSuccess": "Decompressed {name} successfully"
},
"warnings": {
"moveSameDirectory": "Cannot cut and paste in the same directory."
},
"prompts": {
"enterFolderName": "Enter the name for the new folder:",
"confirmOverwrite": "File \"{name}\" already exists. Overwrite?",
"confirmDeleteMultiple": "Are you sure you want to delete the selected {count} items? This cannot be undone.",
"confirmDeleteFolder": "Are you sure you want to delete the directory \"{name}\" and all its contents? This cannot be undone.",
"confirmDeleteFile": "Are you sure you want to delete the file \"{name}\"? This cannot be undone.",
"enterNewName": "Enter the new name for \"{oldName}\":",
"enterNewPermissions": "Enter new permissions for \"{name}\" (octal, e.g., 755):",
"enterFileName": "Enter the name for the new file:"
},
"editingFile": "Editing",
"loadingFile": "Loading file...",
"saving": "Saving",
"saveSuccess": "Save successful",
"saveError": "Save error",
"editPathTooltip": "Click path to edit",
"noOpenFile": "No file open",
"selectFileToEdit": "Select a file from the file manager to start editing.",
"searchPlaceholder": "Search files...",
"dropFilesHere": "Drop files here to upload",
"changeEncodingTooltip": "Change file encoding",
"loadingEncoding": "Loading...",
"noSearchResults": "No search results found",
"modals": {
"titles": {
"delete": "Delete \"{name}\"",
"deleteMultiple": "Delete {count} Items",
"rename": "Rename \"{name}\"",
"chmod": "Change Permissions for \"{name}\"",
"newFile": "Create New File",
"newFolder": "Create New Folder"
},
"buttons": {
"delete": "Delete",
"rename": "Rename",
"changePermissions": "Set Permissions",
"create": "Create",
"confirm": "Confirm",
"cancel": "Cancel",
"close": "Close"
},
"messages": {
"confirmDelete": "Are you sure you want to delete the {type} \"{name}\"? This action cannot be undone.",
"confirmDeleteMultiple": "Are you sure you want to delete these {count} items? This action cannot be undone.\nItems: {names}"
},
"labels": {
"newName": "New name:",
"newPermissions": "New permissions (octal):",
"fileName": "File name:",
"folderName": "Folder name:",
"folder": "folder",
"file": "file"
},
"placeholders": {
"newName": "Enter new name",
"newPermissions": "e.g., 755 or 0755",
"newFile": "Enter file name",
"newFolder": "Enter folder name"
},
"chmodHelp": "Enter permissions in octal format (e.g., 755 or 0755)."
}
},
"statusMonitor": {
"title": "Server Status",
"errorPrefix": "Error:",
"loading": "Waiting for data...",
"cpuModelLabel": "CPU Model:",
"osLabel": "OS:",
"cpuLabel": "CPU:",
"memoryLabel": "Memory:",
"swapLabel": "Swap:",
"diskLabel": "Disk:",
"networkLabel": "Network",
"notAvailable": "N/A",
"bytesPerSecond": "B/s",
"kiloBytesPerSecond": "KB/s",
"megaBytesPerSecond": "MB/s",
"gigaBytesPerSecond": "GB/s",
"megaBytes": "MB",
"gigaBytes": "GB",
"swapNotAvailable": "Swap Unavailable",
"cpuUsageTitle": "CPU Usage",
"memoryUsageTitleUnit": "Memory Usage ({unit})",
"networkSpeedTitleUnit": "Network Speed ({unit})",
"cpuUsageLabel": "CPU Usage (%)",
"memoryUsageLabelUnit": "Memory Usage ({unit})",
"networkDownloadLabelUnit": "Download ({unit})",
"networkUploadLabelUnit": "Upload ({unit})",
"latestCpuValue": "{value}%",
"latestMemoryValue": "{value} {unit}",
"latestNetworkValue": "↓ {download} ↑ {upload} {unit}"
},
"tags": {
"title": "Tag Management",
"addTag": "Add New Tag",
"loading": "Loading tags...",
"error": "Failed to load tags: {error}",
"noTags": "No tags yet. Click 'Add New Tag' to create one!",
"prompts": {
"confirmDelete": "Are you sure you want to delete the tag \"{name}\"? This cannot be undone."
},
"inputPlaceholder": "Type to search or create tags...",
"removeSelection": "Remove this tag selection",
"deleteTagGlobally": "Delete this tag globally",
"createSuccess": "Tag created successfully.",
"updateSuccess": "Tag updated successfully.",
"deleteSuccess": "Tag \"{name}\" deleted successfully.",
"deleteFailed": "Failed to delete tag \"{name}\": {error}"
},
"settings": {
"popupFileManager": {
"title": "Popup File Manager",
"enableLabel": "Enable Popup File Manager",
"description": "When enabled, the file manager button will be displayed in the command input bar, allowing you to open the popup file manager.",
"success": {
"saved": "Popup File Manager settings saved successfully."
},
"error": {
"saveFailed": "Failed to save Popup File Manager settings."
}
},
"title": "Settings",
"category": {
"security": "Security Settings",
"appearance": "Appearance Settings",
"system": "System Settings",
"about": "About",
"dataManagement": "Data Management"
},
"exportConnections": {
"title": "Export Connection Data",
"decryptKeyInfo": "The decryption password is the ENCRYPTION_KEY in your data/.env file. Please keep this file secure.",
"buttonText": "Start Export"
},
"timezone": {
"title": "Timezone Settings",
"selectLabel": "Select Timezone:",
"description": "Timestamps in notifications will be formatted according to this timezone.",
"success": {
"saved": "Timezone setting saved successfully."
},
"error": {
"saveFailed": "Failed to save timezone setting."
}
},
"changePassword": {
"title": "Change Password",
"currentPassword": "Current Password:",
"newPassword": "New Password:",
"confirmPassword": "Confirm New Password:",
"submit": "Change Password",
"success": "Password changed successfully!",
"error": {
"passwordsDoNotMatch": "New password and confirmation do not match.",
"generic": "Failed to change password. Please try again later."
}
},
"twoFactor": {
"title": "Two-Factor Authentication (TOTP)",
"status": {
"enabled": "Two-factor authentication is enabled.",
"disabled": "Two-factor authentication is currently disabled."
},
"enable": {
"button": "Enable Two-Factor Authentication"
},
"setup": {
"scanQrCode": "Scan the QR code below with your authenticator app:",
"orEnterSecret": "Or manually enter the secret key:",
"enterCode": "Enter the 6-digit code from your authenticator app:",
"verifyButton": "Verify & Activate"
},
"disable": {
"button": "Disable Two-Factor Authentication",
"passwordPrompt": "Enter your current password to confirm disabling:"
},
"success": {
"activated": "Two-factor authentication activated successfully!",
"disabled": "Two-factor authentication disabled successfully."
},
"error": {
"setupFailed": "Failed to get two-factor setup information.",
"codeRequired": "Please enter the verification code.",
"verificationFailed": "Invalid or expired verification code.",
"passwordRequiredForDisable": "Current password is required to disable.",
"disableFailed": "Failed to disable two-factor authentication."
}
},
"ipWhitelist": {
"title": "IP Whitelist Management",
"description": "Configure allowed IP addresses or ranges to access this application. Leave empty to allow all IPs.",
"label": "Allowed IP Addresses/Ranges (one per line or comma-separated):",
"hint": "Supports IPv4, IPv6, and CIDR (e.g., 192.168.1.100, 10.0.0.0/8, 2001:db8::/32).",
"saveButton": "Save Whitelist",
"success": {
"saved": "IP whitelist saved successfully."
},
"error": {
"saveFailed": "Failed to save IP whitelist."
}
},
"popupEditor": {
"title": "Popup File Editor",
"enableLabel": "Show popup editor when opening files",
"saveButton": "Save Setting",
"success": {
"saved": "Popup editor setting saved successfully."
},
"error": {
"saveFailed": "Failed to save popup editor setting."
}
},
"shareEditorTabs": {
"title": "Editor Tabs",
"enableLabel": "Share editor tabs across all sessions",
"description": "If enabled, all SSH sessions will share the same set of open file editor tabs. If disabled, each session will have its own independent set of tabs.",
"saveButton": "Save Setting",
"success": {
"saved": "Editor tab sharing setting saved successfully."
},
"error": {
"saveFailed": "Failed to save editor tab sharing setting."
}
},
"language": {
"title": "Language Settings",
"selectLabel": "Interface Language:",
"saveButton": "Save Language",
"success": {
"saved": "Language settings saved successfully."
},
"error": {
"saveFailed": "Failed to save language settings."
}
},
"passkey": {
"title": "Passkey Management",
"description": "Use Passkeys (biometrics or security keys) for passwordless authentication.",
"nameLabel": "Passkey Name",
"namePlaceholder": "e.g., My Laptop",
"registerNewButton": "Register New Passkey",
"registeredKeysTitle": "Registered Passkeys",
"unnamedKey": "Unnamed Passkey",
"createdDate": "Created",
"lastUsedDate": "Last Used",
"noKeysRegistered": "No Passkeys registered yet.",
"confirmDelete": "Are you sure you want to delete this Passkey? This action cannot be undone.",
"error": {
"nameRequired": "Please enter a Passkey name.",
"cancelled": "Passkey registration was cancelled by the user.",
"genericRegistration": "Could not register Passkey: {message}",
"verificationFailed": "Registration failed: {message}",
"userNotLoggedIn": "User not logged in or username unavailable.",
"registrationCancelled": "Passkey registration was cancelled.",
"registrationFailed": "Passkey registration failed.",
"deleteFailedGeneral": "Failed to delete Passkey. Please try again."
},
"success": {
"registered": "New Passkey registered successfully!",
"deleted": "Passkey deleted successfully.",
"nameUpdated": "Passkey name updated."
}
},
"notifications": {
"title": "Notification Settings",
"addChannel": "Add Notification Channel",
"noChannels": "No notification channels configured yet.",
"triggers": "Triggers",
"noEventsEnabled": "No events enabled",
"confirmDelete": "Are you sure you want to delete the notification channel \"{name}\"? This cannot be undone.",
"types": {
"webhook": "Webhook",
"email": "Email",
"telegram": "Telegram"
},
"form": {
"addTitle": "Add Notification Channel",
"editTitle": "Edit Notification Channel",
"name": "Channel Name:",
"channelType": "Channel Type:",
"channelTypeEditNote": "Channel type cannot be changed after creation.",
"webhookMethod": "HTTP Method:",
"webhookHeaders": "Custom Headers",
"webhookBodyTemplate": "Body Template (Optional)",
"webhookBodyPlaceholder": "Default: JSON payload. Use",
"emailTo": "Recipient Email(s):",
"emailToHelp": "Comma-separated list.",
"emailBodyTemplate": "Body Template (Optional)",
"emailBodyPlaceholder": "Default: Event-based notification content. Use",
"smtpHost": "SMTP Host:",
"smtpPort": "SMTP Port:",
"smtpSecure": "Use TLS/SSL",
"smtpUser": "SMTP Username:",
"smtpPass": "SMTP Password:",
"smtpFrom": "Sender Email:",
"smtpFromHelp": "Email address used in the 'From' field.",
"testButton": "Test Notification",
"testSuccess": "Test notification sent successfully!",
"testFailed": "Test notification failed",
"fillRequiredToTest": "Fill required fields to enable testing.",
"telegramToken": "Bot Token:",
"telegramTokenHelp": "Store securely. Consider environment variables.",
"telegramChatId": "Chat ID:",
"telegramMessageTemplate": "Message Template (Optional)",
"telegramMessagePlaceholder": "Default: Markdown format. Use",
"telegramCustomDomain": "Custom Telegram API Domain",
"enabledEvents": "Enabled Events:",
"templateHelp": "Placeholders:",
"invalidJson": "Invalid JSON"
},
"events": {
"LOGIN_SUCCESS": "Login Success",
"LOGIN_FAILURE": "Login Failure",
"LOGOUT": "Logout",
"PASSWORD_CHANGED": "Password Changed",
"2FA_ENABLED": "2FA Enabled",
"2FA_DISABLED": "2FA Disabled",
"PASSKEY_REGISTERED": "Passkey Registered",
"PASSKEY_AUTH_SUCCESS": "Passkey Authentication Successful",
"PASSKEY_AUTH_FAILURE": "Passkey Authentication Failed",
"PASSKEY_DELETED": "Passkey Deleted",
"CONNECTION_CREATED": "Connection Created",
"CONNECTION_UPDATED": "Connection Updated",
"CONNECTION_DELETED": "Connection Deleted",
"PROXY_CREATED": "Proxy Created",
"PROXY_UPDATED": "Proxy Updated",
"PROXY_DELETED": "Proxy Deleted",
"TAG_CREATED": "Tag Created",
"TAG_UPDATED": "Tag Updated",
"TAG_DELETED": "Tag Deleted",
"SETTINGS_UPDATED": "Settings Updated",
"IP_WHITELIST_UPDATED": "IP Whitelist Updated",
"IP_BLOCKED": "IP Blocked",
"NOTIFICATION_SETTING_CREATED": "Notification Setting Created",
"NOTIFICATION_SETTING_UPDATED": "Notification Setting Updated",
"NOTIFICATION_SETTING_DELETED": "Notification Setting Deleted",
"SSH_CONNECT_SUCCESS": "SSH Connection Successful",
"SSH_CONNECT_FAILURE": "SSH Connection Failed",
"SSH_SHELL_FAILURE": "SSH Shell Open Failed",
"DATABASE_MIGRATION": "Database Migration",
"ADMIN_SETUP_COMPLETE": "Initial Admin Setup Completed"
}
},
"appearance": {
"title": "Appearance Settings",
"description": "Customize the visual theme and background of the application.",
"customizeButton": "Customize Appearance"
},
"autoCopyOnSelect": {
"title": "Terminal Auto Copy",
"enableLabel": "Copy text automatically on selection release",
"saveButton": "Save",
"success": {
"saved": "Auto copy setting saved successfully."
},
"error": {
"saveFailed": "Failed to save auto copy setting."
}
},
"docker": {
"title": "Docker Manager Settings",
"refreshIntervalLabel": "Status Refresh Interval (seconds):",
"refreshIntervalHint": "How often to fetch Docker container status and stats (minimum 1).",
"defaultExpandLabel": "Expand container details by default",
"saveButton": "Save Docker Settings",
"success": {
"saved": "Docker settings saved successfully."
},
"error": {
"saveFailed": "Failed to save Docker settings.",
"invalidInterval": "Refresh interval must be a positive integer."
}
},
"statusMonitor": {
"title": "Status Monitor Settings",
"refreshIntervalLabel": "Status Refresh Interval (seconds):",
"refreshIntervalHint": "How often to fetch server CPU, memory, disk, etc. status (minimum 1).",
"saveButton": "Save Status Monitor Settings",
"success": {
"saved": "Status monitor settings saved successfully."
},
"error": {
"saveFailed": "Failed to save status monitor settings.",
"invalidInterval": "Refresh interval must be a positive integer."
}
},
"workspace": {
"title": "Workspace & Terminal",
"sidebarPersistentTitle": "Sidebar Behavior",
"sidebarPersistentLabel": "Pin sidebar when opened (prevent auto-collapse)",
"sidebarPersistentDescription": "When enabled, clicking outside the sidebar will not automatically collapse it.",
"success": {
"sidebarPersistentSaved": "Sidebar setting saved.",
"showConnectionTagsSaved": "Connection tags visibility setting saved.",
"showQuickCommandTagsSaved": "Quick command tags visibility setting saved."
},
"error": {
"sidebarPersistentSaveFailed": "Failed to save sidebar setting.",
"showConnectionTagsSaveFailed": "Failed to save connection tags visibility setting.",
"showQuickCommandTagsSaveFailed": "Failed to save quick command tags visibility setting."
},
"showConnectionTagsTitle": "Show Connection Tags",
"showConnectionTagsLabel": "Show tags in connection list",
"showConnectionTagsDescription": "Disable to hide tags in the connection list and exclude them from search.",
"showQuickCommandTagsTitle": "Show Quick Command Tags",
"showQuickCommandTagsLabel": "Show tags in quick command list",
"showQuickCommandTagsDescription": "Disable to hide tags in the quick command list and exclude them from search.",
"fileManagerDeleteConfirmTitle": "File Manager Delete Confirmation",
"fileManagerShowDeleteConfirmationLabel": "Show confirmation dialog when deleting files or folders",
"fileManagerDeleteConfirmSuccess": "File manager delete confirmation setting saved.",
"fileManagerDeleteConfirmError": "Failed to save file manager delete confirmation setting.",
"terminalRightClickPasteTitle": "Terminal Right Click Paste",
"terminalEnableRightClickPasteLabel": "Enable terminal right-click paste",
"terminalEnableRightClickPasteDescription": "Allows pasting clipboard content using the right mouse button within the terminal area.",
"terminalRightClickPasteSuccess": "Terminal right-click paste setting saved.",
"terminalRightClickPasteError": "Failed to save terminal right-click paste setting."
},
"statusMonitorShowIp": {
"title": "Status Monitor: Show IP Address",
"enableLabel": "Show IP address in status monitor"
},
"terminalScrollback": {
"title": "Terminal Scrollback Limit",
"limitLabel": "Maximum Lines",
"limitHint": "Set the maximum number of output lines the terminal keeps. 0 means unlimited (uses default 5000). This setting takes effect the next time a terminal is opened.",
"saveButton": "Save",
"success": {
"saved": "Terminal scrollback limit setting saved successfully."
},
"error": {
"saveFailed": "Failed to save terminal scrollback limit setting.",
"invalidInput": "Please enter a valid non-negative integer."
}
},
"ipBlacklist": {
"title": "IP Blacklist Management",
"description": "Configure login attempt limits and automatic ban duration. Local addresses (127.0.0.1, ::1) will not be banned.",
"maxAttemptsLabel": "Max Failed Attempts:",
"banDurationLabel": "Ban Duration (seconds):",
"saveConfigButton": "Save Configuration",
"currentBannedTitle": "Currently Banned IP Addresses",
"loadingList": "Loading blacklist...",
"noBannedIps": "No IP addresses are currently in the blacklist.",
"confirmRemoveIp": "Are you sure you want to remove the IP address \"{ip}\" from the blacklist?",
"table": {
"ipAddress": "IP Address",
"attempts": "Attempts",
"lastAttempt": "Last Attempt",
"bannedUntil": "Banned Until",
"actions": "Actions",
"removeButton": "Remove",
"deleting": "Deleting..."
},
"success": {
"configUpdated": "Blacklist configuration updated successfully."
},
"error": {
"fetchFailed": "Failed to fetch blacklist",
"deleteFailed": "Failed to delete",
"invalidMaxAttempts": "Max failed attempts must be a positive integer.",
"invalidBanDuration": "Ban duration must be a positive integer (seconds).",
"updateConfigFailed": "Failed to update blacklist configuration"
}
},
"captcha": {
"title": "CAPTCHA Settings",
"description": "Configure CAPTCHA verification for the login page to prevent automated attacks.",
"enableLabel": "Enable CAPTCHA on Login Page",
"providerLabel": "CAPTCHA Provider:",
"providerNone": "None (Disabled)",
"hcaptchaHint": "Get keys from",
"recaptchaHint": "Get keys from",
"siteKeyLabel": "Site Key (Public):",
"secretKeyLabel": "Secret Key (Private):",
"secretKeyHint": "Keep this secret. It is stored securely on the server.",
"saveButton": "Save CAPTCHA Settings",
"success": {
"saved": "CAPTCHA settings saved successfully."
},
"error": {
"saveFailed": "Failed to save CAPTCHA settings.",
"hcaptchaKeysRequired": "hCaptcha Site Key and Secret Key are required for verification.",
"recaptchaKeysRequired": "reCAPTCHA Site Key and Secret Key are required for verification.",
"verificationFailed": "CAPTCHA credential verification failed. Please check your Site Key and Secret Key."
}
},
"commandInputSync": {
"title": "Command Input Sync",
"selectLabel": "Sync Target:",
"targetNone": "None",
"targetQuickCommands": "Quick Commands",
"targetCommandHistory": "Command History",
"description": "Sync the content of the command input bar to the search box of the selected panel in real-time. After selecting with the up/down keys, press Enter to execute the command.",
"success": {
"saved": "Sync target saved."
},
"error": {
"saveFailed": "Failed to save sync target."
}
},
"about": {
"version": "Version",
"checkingUpdate": "Checking for update...",
"latestVersion": "Up to date",
"updateAvailable": "Update available: {version}!",
"error": {
"checkFailed": "Failed to check for updates",
"checkFailedShort": "Check failed",
"noReleases": "No releases found",
"rateLimit": "GitHub API rate limit exceeded, please try again later"
}
},
"tabs": {
"security": "Security",
"ipControl": "IP Control",
"workspace": "Workspace",
"system": "System",
"dataManagement": "Data Management",
"appearance": "Appearance",
"about": "About"
},
"loading": "Loading..."
},
"notificationController": {
"errorFetchSettings": "Failed to fetch notification settings",
"errorMissingFields": "Missing required notification setting fields (channel_type, name, config)",
"errorCreateSetting": "Failed to create notification setting",
"errorInvalidId": "Invalid notification setting ID",
"errorNoUpdateData": "No data provided for update",
"errorNotFound": "Notification setting with ID {id} not found",
"errorUpdateSetting": "Failed to update notification setting",
"errorDeleteNotFound": "Failed to delete notification setting with ID {id}, it might have already been deleted",
"errorDeleteSetting": "Failed to delete notification setting",
"testMessageSaved": "Test triggered for setting ID {id} ({name})",
"testEventTriggered": "Test notification event triggered. Please check the corresponding channel for reception.",
"errorTriggerTest": "Internal error occurred while triggering test notification",
"errorMissingTestInfo": "Missing required test information (channel_type, config)",
"errorInvalidChannelType": "Invalid channel type",
"testMessageUnsaved": "Test triggered for unsaved {channelType} configuration"
},
"common": {
"loading": "Loading...",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving...",
"saved": "Saved",
"testing": "Testing...",
"edit": "Edit",
"delete": "Delete",
"enabled": "Enabled",
"disabled": "Disabled",
"settings": "Settings",
"errorOccurred": "An error occurred.",
"close": "Close",
"remove": "Remove",
"expand": "Expand",
"collapse": "Collapse",
"search": "Search",
"all": "All",
"filter": "Filter",
"width": "Width",
"height": "Height",
"reconnect": "Reconnect",
"retry": "Retry",
"sortAscending": "Ascending",
"sortDescending": "Descending",
"restore": "Restore",
"minimize": "Minimize",
"send":"Send",
"updateSuccess":"Update successful",
"copied": "Copied to clipboard"
},
"layoutConfigurator": {
"title": "Layout Configurator",
"availablePanes": "Available Panes",
"layoutPreview": "Layout Preview",
"resetDefault": "Reset to Default",
"noAvailablePanes": "All panes are already in the layout",
"emptyLayout": "Layout is empty. Drag panes from the left or add a container.",
"leftSidebar": "Left Sidebar Panes",
"rightSidebar": "Right Sidebar Panes",
"dropHere": "Drop panes from available list here",
"saveError": "Error saving layout. Please try again later.",
"confirmClearLayout": "Are you sure you want to clear the entire layout? All panes will return to the available list.",
"lockLayout": "Lock Layout",
"lockUpdateError": "Failed to update layout lock status."
},
"layoutNodeEditor": {
"containerLabel": "Container ({direction})",
"horizontal": "Horizontal",
"vertical": "Vertical",
"toggleDirection": "Toggle Direction",
"addHorizontalContainer": "Add Horizontal Container",
"addVerticalContainer": "Add Vertical Container",
"removeNode": "Remove this node",
"dragHandle": "Drag to reorder or move",
"dropHere": "Drop panes or containers here"
},
"auditLog": {
"title": "Audit Logs",
"searchPlaceholder": "Search details...",
"noLogs": "No audit logs found.",
"table": {
"timestamp": "Timestamp",
"actionType": "Action Type",
"details": "Details"
},
"paginationInfo": "Page {currentPage} of {totalPages} ({totalLogs} total logs)",
"actions": {
"LOGIN_SUCCESS": "Login Success",
"LOGIN_FAILURE": "Login Failure",
"LOGOUT": "Logout",
"PASSWORD_CHANGED": "Password Changed",
"2FA_ENABLED": "2FA Enabled",
"2FA_DISABLED": "2FA Disabled",
"CONNECTION_CREATED": "Connection Created",
"CONNECTION_UPDATED": "Connection Updated",
"CONNECTION_DELETED": "Connection Deleted",
"PROXY_CREATED": "Proxy Created",
"PROXY_UPDATED": "Proxy Updated",
"PROXY_DELETED": "Proxy Deleted",
"TAG_CREATED": "Tag Created",
"TAG_UPDATED": "Tag Updated",
"TAG_DELETED": "Tag Deleted",
"SETTINGS_UPDATED": "Settings Updated",
"IP_WHITELIST_UPDATED": "IP Whitelist Updated",
"NOTIFICATION_SETTING_CREATED": "Notification Setting Created",
"NOTIFICATION_SETTING_UPDATED": "Notification Setting Updated",
"NOTIFICATION_SETTING_DELETED": "Notification Setting Deleted",
"SSH_CONNECT_SUCCESS": "SSH Connection Successful",
"SSH_CONNECT_FAILURE": "SSH Connection Failed",
"SSH_SHELL_FAILURE": "SSH Shell Open Failed",
"DATABASE_MIGRATION": "Database Migration",
"ADMIN_SETUP_COMPLETE": "Initial Admin Setup Completed",
"REMOTE_DESKTOP_CONNECTING": "Remote Desktop Connecting",
"REMOTE_DESKTOP_CONNECTED": "Remote Desktop Connected",
"REMOTE_DESKTOP_DISCONNECTED": "Remote Desktop Disconnected",
"PASSKEY_REGISTERED": "Passkey Registered",
"PASSKEY_AUTH_SUCCESS": "Passkey Authentication Successful",
"PASSKEY_AUTH_FAILURE": "Passkey Authentication Failed",
"PASSKEY_DELETED": "Passkey Deleted",
"PASSKEY_DELETE_UNAUTHORIZED": "Passkey Deletion Unauthorized",
"PASSKEY_NAME_UPDATED": "Passkey Name Updated",
"PASSKEY_NAME_UPDATE_UNAUTHORIZED": "Passkey Name Update Unauthorized"
}
},
"workspaceConnectionList": {
"untagged": "Untagged",
"searchPlaceholder": "Search name or host...",
"noResults": "No connections found matching \"{searchTerm}\".",
"allConnectionsTaggedSuccess": "All connections tagged successfully.",
"noConnectionsToTag": "No connections to tag.",
"clickToEditTag": "Click to edit tag name",
"connectAllInGroup": "Connect All in Group (SSH)",
"connectingAllInGroup": "Connecting all in group '{groupName}'...",
"noConnectionsInGroup": "No connections to connect in group '{groupName}'.",
"noConnectionsToConnect": "No connections to connect",
"connectingAllSshInGroup": "Connecting {count} SSH connections in group '{groupName}'...",
"noSshConnectionsInGroup": "No SSH connections to connect in group '{groupName}'.",
"connectAllSshInGroupMenu": "Connect All",
"noSshConnectionsToConnectMenu": "No SSH Connections",
"manageTags": {
"title": "Manage Tag Connections",
"searchPlaceholder": "Search connections...",
"selectAll": "Select All",
"deselectAll": "Deselect All",
"noConnectionsFound": "No connections found.",
"saveSuccess": "Tag connections updated successfully.",
"saveFailed": "Failed to update tag connections.",
"menuItem": "Manage Tag",
"cannotManageUntagged": "Cannot manage connections for 'Untagged' group.",
"invertSelection": "Invert Selection"
},
"deleteAllConnectionsInGroupMenu": "Delete All Connections in Group",
"noConnectionsToDeleteInGroup": "No connections to delete in group '{groupName}'.",
"confirmDeleteAllConnectionsInGroup": "Are you sure you want to delete all {count} connections in group '{groupName}'? This cannot be undone.",
"allConnectionsInGroupDeletedSuccess": "{count} connections successfully deleted from group '{groupName}'.",
"cannotDeleteFromUntagged": "Cannot use this option to delete connections from the 'Untagged' group.",
"someConnectionsInGroupDeleteFailed": "{count} connections in group '{groupName}' failed to delete."
},
"remoteDesktopModal": {
"title": "Remote Desktop",
"titlePlaceholder": "Remote Desktop Connection",
"status": {
"fetchingToken": "Fetching connection token...",
"connectingWs": "Connecting WebSocket...",
"idle": "Idle",
"connectingRdp": "Connecting Remote Desktop...",
"connectingVnc": "Connecting VNC...",
"waiting": "Waiting for server response...",
"connected": "Connected",
"disconnecting": "Disconnecting...",
"disconnected": "Disconnected",
"unknownState": "Unknown State",
"connecting": "Connecting...",
"error": "Error"
},
"errors": {
"missingInfo": "Connection info or display element missing.",
"tunnelError": "Tunnel Error",
"clientError": "Client Error",
"connectionFailed": "Connection Failed",
"inputError": "Error setting up input listeners.",
"noConnection": "No connection information provided.",
"tokenError": "Failed to retrieve token"
},
"reconnectTooltip": "Reconnect to the remote desktop"
},
"vncModal": {
"title": "VNC Session",
"textInputPlaceholder": "Enter text here to send to VNC",
"sendButtonTitle": "Send text to VNC (simulates keyboard input)",
"errors": {
"simulateInputError": "Error simulating keyboard input: {error}"
}
},
"commandInputBar": {
"placeholder": "Enter command and press Enter to send...",
"searchPlaceholder": "Search in terminal...",
"openSearch": "Open terminal search",
"closeSearch": "Close terminal search",
"findPrevious": "Find previous",
"findNext": "Find next",
"configureFocusSwitch": "Configure Focus Switcher",
"clearTerminal": "Clear Terminal"
},
"layout": {
"loading": "Loading...",
"configure": "Configure Layout",
"pane": {
"connections": "Connections",
"terminal": "Terminal",
"commandBar": "Command Bar",
"fileManager": "File Manager",
"editor": "Editor",
"statusMonitor": "Status Monitor",
"commandHistory": "Command History",
"quickCommands": "Quick Commands",
"dockerManager": "Docker Manager",
"suspendedSshSessions": "Suspended Sessions Management"
},
"panes": {
"suspendedSshSessions": "Suspended Session Manager"
},
"noActiveSession": {
"title": "No Active Session",
"message": "Please connect to a session first",
"fileManagerSidebar": "File Manager requires an active session",
"statusMonitorSidebar": "Status Monitor requires an active session"
}
},
"header": {
"hide": "Hide",
"show": "Show Top Navigation"
},
"commandHistory": {
"searchPlaceholder": "Search history...",
"clear": "Clear",
"copy": "Copy",
"delete": "Delete",
"loading": "Loading...",
"empty": "No history records",
"confirmClear": "Are you sure you want to clear all history?",
"copied": "Copied to clipboard",
"copyFailed": "Copy failed",
"actions": {
"sendToAllSessions": "Send to All Sessions"
},
"notifications": {
"sentToAllSessions": "Command sent to {count} sessions.",
"noActiveSshSessions": "No active SSH sessions to send command to."
}
},
"quickCommands": {
"searchPlaceholder": "Search name or command...",
"add": "Add",
"sortByName": "Name",
"sortByUsage": "Usage Frequency",
"usageCount": "Usage Count",
"empty": "No quick commands. Click '+' to create one!",
"addFirst": "Add your first quick command",
"confirmDelete": "Are you sure you want to delete the quick command \"{name}\"?",
"form": {
"titleAdd": "Add Quick Command",
"titleEdit": "Edit Quick Command",
"name": "Name:",
"namePlaceholder": "Optional, for quick identification",
"command": "Command:",
"commandPlaceholder": "e.g., ls -alh /home/user",
"errorCommandRequired": "Command cannot be empty",
"add": "Add",
"tags": "Tags:",
"tagsPlaceholder": "Select or create tags..."
},
"untagged": "Untagged",
"tags": {
"clickToEditTag": "Click to edit tag name"
},
"actions": {
"sendToAllSessions": "Send to All Sessions"
},
"notifications": {
"sentToAllSessions": "Command sent to {count} sessions.",
"noActiveSshSessions": "No active SSH sessions to send command to."
}
},
"setup": {
"title": "Initial Setup",
"description": "Create the first administrator account.",
"username": "Username",
"usernamePlaceholder": "Enter username",
"password": "Password",
"passwordPlaceholder": "Enter password",
"confirmPassword": "Confirm Password",
"confirmPasswordPlaceholder": "Confirm your password",
"submitButton": "Create Account",
"settingUp": "Creating account...",
"success": "Account created successfully! Redirecting to login...",
"error": {
"passwordsDoNotMatch": "Passwords do not match.",
"fieldsRequired": "Username and password are required.",
"generic": "An error occurred during setup. Please check the server logs."
}
},
"focusSwitcher": {
"configTitle": "Configure Focus Switcher",
"availableInputs": "Available Inputs",
"configuredSequence": "Configured Sequence (Drag to Sort)",
"dragHere": "Drag inputs from the left here",
"allInputsConfigured": "All available inputs are configured",
"input": {
"commandHistorySearch": "Command History Search",
"quickCommandsSearch": "Quick Commands Search",
"fileManagerSearch": "File Manager Search",
"commandInput": "Command Input",
"terminalSearch": "Terminal Search",
"connectionListSearch": "Connection List Search",
"fileEditorActive": "File Editor",
"fileManagerPathInput": "File Manager Path Input"
},
"confirmClose": "You have unsaved changes. Are you sure you want to close?",
"shortcutPlaceholder": "e.g., Alt+K",
"shortcutSettings": "Shortcut Settings",
"noInputsAvailable": "No configurable inputs available",
"altSwitchHint": "Hint: Press the Alt key to quickly switch focus between configured input sources."
},
"dockerManager": {
"loading": "Loading Docker Containers...",
"notAvailable": "Docker Not Available on Remote Host",
"installHintRemote": "Please ensure Docker is installed and running on the remote host.",
"error": {
"fetchFailed": "Failed to fetch remote container status",
"commandFailed": "Failed to execute remote command '{command}'",
"invalidResponse": "Received invalid response from server",
"noActiveSession": "No active session",
"connectFirst": "Please connect to a session first",
"sshDisconnected": "SSH session disconnected.",
"sshError": "SSH Connection Error",
"sshNotConnected": "SSH session is not connected."
},
"noContainers": "No running or stopped containers found on remote host.",
"header": {
"name": "Name",
"image": "Image",
"status": "Status",
"ports": "Ports",
"actions": "Actions"
},
"action": {
"restart": "Restart",
"stop": "Stop",
"start": "Start",
"remove": "Remove"
},
"waitingForSsh": "Waiting for SSH connection...",
"stats": {
"noData": "No stats data available.",
"cpu": "CPU %",
"memory": "Memory Usage / Limit",
"netIO": "Network I/O",
"blockIO": "Block I/O",
"pids": "PIDs"
}
},
"dashboard": {
"recentConnections": "Recent Connections",
"lastConnected": "Last connected:",
"noRecentConnections": "No recent connection records",
"viewAllConnections": "View All Connections",
"recentActivity": "Recent Activity",
"noRecentActivity": "No recent activity records",
"viewFullAuditLog": "View Full Audit Log",
"connectionList": "Connection List",
"noConnections": "No connection records",
"sortOptions": {
"lastConnected": "Last Connected",
"name": "Name",
"type": "Type",
"updated": "Updated",
"created": "Created"
},
"filterTags": {
"all": "All Tags"
},
"noConnectionsWithTag": "No connections found with this tag",
"noConnectionsMatchSearch": "No connections match your search.",
"searchConnectionsPlaceholder": "Search connections..."
},
"terminalTabBar": {
"selectServerTitle": "Select server to connect",
"showTransferProgressTooltip": "Show/Hide Transfer Progress"
},
"tabs": {
"contextMenu": {
"close": "Close Tab",
"closeOthers": "Close Other Tabs",
"closeRight": "Close Tabs to the Right",
"closeLeft": "Close Tabs to the Left",
"suspendSession": "Suspend Session",
"unmarkForSuspend": "Unmark Suspend"
},
"closeTabTooltip": "Close Tab",
"newTabTooltip": "New Connection Tab"
},
"sshKeys": {
"selector": {
"selectPlaceholder": "Select an SSH key...",
"useDirectInput": "Or input key content directly",
"manageKeysTitle": "Manage SSH Keys",
"loadingKeys": "Loading keys..."
},
"modal": {
"title": "SSH Key Management",
"addKey": "Add Key",
"keyName": "Key Name",
"actions": "Actions",
"loading": "Loading...",
"noKeys": "No SSH keys found. Please add one.",
"close": "Close",
"addTitle": "Add New SSH Key",
"editTitle": "Edit SSH Key",
"privateKey": "Private Key Content",
"passphrase": "Passphrase",
"cancel": "Cancel",
"saveChanges": "Save Changes",
"edit": "Edit",
"delete": "Delete",
"errorFetchDetails": "Failed to fetch key details",
"errorRequiredFields": "Key name and private key content cannot be empty.",
"confirmDelete": "Are you sure you want to delete the key \"{name}\"? This cannot be undone.",
"keyUpdateNote": "Leave private key blank to keep the existing key. Passphrase always needs re-entry if required.",
"passphraseUpdateNote": "Leave blank to keep or remove the passphrase. Enter a new passphrase to update."
}
},
"suspendedSshSessions": {
"modalTitle": "Suspended SSH Sessions",
"searchPlaceholder": "Search sessions (name, connection...)",
"loading": "Loading suspended sessions...",
"noResults": "No suspended sessions found matching your criteria.",
"tooltip": {
"editName": "Click to edit name"
},
"label": {
"originalConnection": "Original Connection",
"suspendedAt": "Suspended At"
},
"disconnectedAt": "Disconnected at {time}",
"status": {
"hanging": "Active",
"disconnected": "Disconnected"
},
"action": {
"resume": "Resume",
"remove": "Remove",
"exportLog": "Export Log"
}
},
"time": {
"unknown": "Unknown time",
"invalidDate": "Invalid date"
},
"sshSuspend": {
"notifications": {
"markedForSuspendInfo": "Session {id} marked for suspend. It will be suspended when the tab is closed exits.",
"wsNotConnectedError": "WebSocket not connected. Cannot perform suspend/resume action.",
"sessionNotFoundError": "Session not found or WebSocket manager unavailable.",
"notMarkedWarning": "Session was not marked for suspend.",
"fetchListError": "Failed to fetch suspended sessions list: {error}",
"resumeErrorInfoNotFound": "Resume error: Suspended session {id} not found in the list.",
"resumeErrorConnectionConfigNotFound": "Resume error: Original connection configuration for {id} not found.",
"resumeErrorGeneric": "Failed to resume session: {error}",
"terminatedSuccess": "Suspended session \"{name}\" terminated successfully.",
"terminateError": "Failed to terminate suspended session: {error}",
"entryRemovedSuccess": "Suspended session entry \"{name}\" removed successfully.",
"entryRemovedError": "Failed to remove suspended session entry: {error}",
"nameEditedSuccess": "Suspended session name updated to \"{name}\".",
"nameEditedError": "Failed to edit suspended session name: {error}",
"markedForSuspendSuccess": "Session {id} successfully marked for suspend.",
"markForSuspendError": "Failed to mark session for suspend: {error}",
"unmarkedSuccess": "Session {id} unmarked from suspend successfully.",
"unmarkError": "Failed to unmark session from suspend: {error}",
"defaultSessionName": "Session",
"resumeSuccess": "Session \"{name}\" resumed successfully.",
"resumeErrorBackend": "Backend failed to resume session: {error}",
"autoTerminated": "Suspended session \"{name}\" was auto-terminated by the backend due to: {reason}",
"logExportSuccess": "Suspended session log {name} has started downloading.",
"logExportError": "Failed to export suspended session log: {error}"
}
},
"transferProgressModal": {
"title": "File Transfer Progress",
"loading": "Loading transfer tasks...",
"errorLoadingTitle": "Loading Error",
"errorLoading": "Failed to load transfer tasks: {error}",
"error": {
"unknown": "Unknown error",
"cancelFailed": "Failed to cancel task."
},
"noTasks": "There are no active transfer tasks currently.",
"task": {
"idLabel": "Task",
"createdAt": "Created at",
"overallProgress": "Overall Progress"
},
"status": {
"queued": "Queued",
"inProgress": "In Progress",
"completed": "Completed",
"failed": "Failed",
"partiallyCompleted": "Partially Completed",
"connecting": "Connecting",
"transferring": "Transferring",
"cancelling": "Cancelling",
"cancelled": "Cancelled"
},
"confirmCancel": "Are you sure you want to cancel this transfer task?",
"cancelRequested": "Cancel request sent.",
"cancelTaskTooltip": "Cancel Task",
"cancellingTooltip": "Cancelling...",
"cancelButton": "Cancel",
"cancellingButton": "Cancelling",
"subTasks": {
"titleToggle": "View {count} Sub-tasks",
"noSubTasks": "No sub-tasks."
},
"subTask": {
"source": "Source File",
"connectionId": "Target Connection",
"status": "Status",
"method": "Method",
"error": "Error"
},
"connectionIdFallback": "Connection ID: {connectionId}",
"unknownFileName": "[Unknown File Name]",
"unknownSourceServer": "[Unknown Source Server]",
"unknownTargetPath": "[Unknown Target Path]",
"taskIdFallback": "Task ID: {taskId}"
},
"sendFilesModal": {
"title": "Send Files",
"searchConnectionsPlaceholder": "Search connections...",
"targetPathLabel": "Target Path",
"targetPathPlaceholder": "/remote/path/to/destination",
"transferMethodLabel": "Transfer Method",
"transferMethodAuto": "Auto",
"loadingConnections": "Loading connections...",
"noConnections": "No connections available. Please add connections first.",
"noConnectionsFound": "No connections found matching your search.",
"untaggedConnections": "Untagged",
"itemsToSendTitle": "Items to send:",
"noItemsSelected": "No items selected to send.",
"sendButton": "Send",
"cancelButton": "Cancel",
"errorFetchingData": "Error fetching data for modal.",
"errorFetchingConnections": "Error fetching connections.",
"errorFetchingTags": "Error fetching tags.",
"validationError": "Please select at least one connection and specify a target path.",
"transferInitiated": "Transfer task created, Task ID: ",
"transferInitiatedGeneric": "Transfer task created successfully.",
"transferFailedError": "Failed to initiate transfer. Please try again."
}
}