From 4d4703114af58c99e0fa475fac701b9b6ecaf9db Mon Sep 17 00:00:00 2001 From: Kang Date: Sat, 11 Apr 2026 00:01:54 +0800 Subject: [PATCH] feat(prettier): add Prettier configuration for JSON sorting and update package scripts for i18n checks --- .prettierrc | 12 + package.json | 7 +- pnpm-lock.yaml | 23 + src/i18n/locales/en.json | 1350 +++++++++++++++++----------------- src/i18n/locales/zh-CN.json | 1364 ++++++++++++++++++----------------- 5 files changed, 1409 insertions(+), 1347 deletions(-) create mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..16c72b59 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,12 @@ +{ + "plugins": ["prettier-plugin-sort-json"], + "overrides": [ + { + "files": "src/i18n/locales/*.json", + "options": { + "jsonRecursiveSort": true, + "jsonSortOrder": "{\"/.*/\": \"lexical\"}" + } + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 3937386d..39697de4 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,10 @@ "preview": "vite preview", "tauri": "tauri", "lint": "biome check src/", - "format": "biome check --write src/" + "format": "biome check --write src/", + "format:check": "biome check --check src/", + "i18n:check": "prettier --check src/i18n/locales/*.json", + "i18n:fix": "prettier --write src/i18n/locales/*.json" }, "dependencies": { "@fontsource-variable/noto-sans-sc": "^5.2.10", @@ -59,6 +62,8 @@ "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", + "prettier": "^3.8.2", + "prettier-plugin-sort-json": "^4.2.0", "shadcn": "^3.8.5", "tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 986b5fa2..e9576bfe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,6 +108,12 @@ importers: '@vitejs/plugin-react': specifier: ^4.6.0 version: 4.7.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.2)) + prettier: + specifier: ^3.8.2 + version: 3.8.2 + prettier-plugin-sort-json: + specifier: ^4.2.0 + version: 4.2.0(prettier@3.8.2) shadcn: specifier: ^3.8.5 version: 3.8.5(@types/node@25.3.0)(typescript@5.8.3) @@ -2647,6 +2653,17 @@ packages: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} + prettier-plugin-sort-json@4.2.0: + resolution: {integrity: sha512-jK1w3/7otTvHtv1eoLji2U9mEoOGeyl7QQQ/afLnjht1YtRLSUUk8o0rIIC/HUVXhoGPCFe4SVZbRGYjjUVgvA==} + engines: {node: '>=18.0.0'} + peerDependencies: + prettier: ^3.0.0 + + prettier@3.8.2: + resolution: {integrity: sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==} + engines: {node: '>=14'} + hasBin: true + pretty-ms@9.3.0: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} @@ -5511,6 +5528,12 @@ snapshots: powershell-utils@0.1.0: {} + prettier-plugin-sort-json@4.2.0(prettier@3.8.2): + dependencies: + prettier: 3.8.2 + + prettier@3.8.2: {} + pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 955240f2..00902376 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -1,754 +1,772 @@ { + "about": { + "close": "Close", + "description": "A modern, high-performance SSH client built with Tauri and React.", + "issues": "Issues", + "website": "Website" + }, + "activityBar": { + "leftBottom": "Left Bottom", + "leftTop": "Left Top", + "moveTo": "Move to", + "rightBottom": "Right Bottom", + "rightTop": "Right Top", + "showLabel": "Show Tool Name" + }, + "app": { + "newConnection": "New Connection", + "noActiveSessions": "No active sessions" + }, "common": { - "cancel": "Cancel", - "save": "Save", - "saving": "Saving...", - "delete": "Delete", - "remove": "Remove", - "minutes": "minutes", - "seconds": "seconds", - "hours": "hours", - "days": "days", - "weeks": "weeks", - "months": "months", - "years": "years", "add": "Add", + "cancel": "Cancel", + "close": "Close", + "days": "days", + "delete": "Delete", "deleting": "Deleting...", "deletingConfirm": "Are you sure you want to delete '{{name}}'?", "deletingConfirmDesc": "This action cannot be undone.", - "deletingSuccess": "Deleted successfully!", "deletingFailed": "Deletion failed: {{error}}", - "unknownWindowType": "Unknown window type", + "deletingSuccess": "Deleted successfully!", + "edit": "Edit", + "hours": "hours", "loading": "Loading...", - "close": "Close", - "edit": "Edit" + "minutes": "minutes", + "months": "months", + "remove": "Remove", + "save": "Save", + "saving": "Saving...", + "seconds": "seconds", + "unknownWindowType": "Unknown window type", + "weeks": "weeks", + "years": "years" + }, + "dialog": { + "advancedConfig": "Advanced Configuration", + "authentication": "Authentication", + "autoFillOtp": "Auto-fill verification code", + "baudRate": "Baud Rate", + "cancel": "Cancel", + "confirmClose": "Quit Application", + "confirmCloseAction": "Quit", + "confirmCloseDesc": "There are active sessions. Are you sure you want to quit? All sessions will be disconnected.", + "connectionName": "Connection Name", + "connectionSaved": "Connection saved successfully!", + "dataBits": "Data Bits", + "description": "Description", + "descriptionPlaceholder": "e.g. Web server for project X", + "editConnection": "Edit Connection", + "group": "Group", + "host": "Host", + "hostRequired": "Host is required", + "icon": "Icon", + "localTerminal": "Local Terminal", + "manageKeys": "Manage Keys...", + "managePasswords": "Manage Passwords...", + "newConnection": "New Connection", + "newGroupPlaceholder": "New group...", + "noKeys": "No keys configured", + "noOtp": "None", + "noPasswords": "No passwords configured", + "noProxy": "No Proxy", + "none": "None", + "openLocalShell": "Open a local shell session", + "parity": "Parity", + "parityEven": "Even", + "parityMark": "Mark", + "parityNone": "None", + "parityOdd": "Odd", + "paritySpace": "Space", + "password": "Password", + "port": "Port", + "privateKey": "Private Key", + "proxySelect": "Proxy", + "quickConnectLocal": "Quick Connect (Unsaved)", + "save": "Save", + "saving": "Saving...", + "selectKey": "Select Key", + "selectOtp": "OTP Entry", + "selectPassword": "Select Password", + "selectShell": "Select Shell", + "serial": "Serial", + "serialPort": "Serial Port", + "serialPortPlaceholder": "COM1 or /dev/ttyS0", + "serverPlaceholder": "My Server", + "shellBash": "Bash", + "shellCmd": "Command Prompt", + "shellCustom": "Custom...", + "shellPath": "Shell Path", + "shellPathPlaceholder": "e.g. /bin/zsh or pwsh.exe", + "shellPowerShell": "PowerShell", + "shellWsl": "WSL", + "sshConnection": "SSH Connection", + "stopBits": "Stop Bits", + "twoFactorAuth": "Two-Factor Authentication", + "username": "Username", + "workingDir": "Working Directory", + "workingDirPlaceholder": "e.g. C:\\Projects or ~/workspace" + }, + "error": { + "reloadApplication": "Reload Application", + "somethingWentWrong": "Something went wrong" + }, + "fileExplorer": { + "alwaysUpload": "Always upload", + "atime": "Access Time", + "autoSyncTerminalPath": "Auto Sync from Terminal", + "cmCopyDirPath": "Copy Directory Path", + "cmCopyName": "Copy Name", + "cmCopyPath": "Copy Path", + "cmDelete": "Delete", + "cmDownload": "Download...", + "cmMove": "Move to...", + "cmOpen": "Open", + "cmOpenDefault": "Open with Default Editor", + "cmProperties": "Properties...", + "cmRefresh": "Refresh", + "cmRename": "Rename...", + "cmTerminalDirPath": "Send Directory Path to Terminal", + "cmTerminalName": "Send Name to Terminal", + "cmTerminalPath": "Send Path to Terminal", + "cmUpload": "Upload to Current Folder...", + "connectToSession": "Connect to a session to browse files", + "copyDirPath": "Copy Directory Path", + "cwdTrackingUnavailable": "CWD tracking unavailable (shell integration not supported)", + "delete": "Delete", + "downloadSelected": "Download Selected", + "editPath": "Click to edit path", + "emptyDirectory": "Empty directory", + "file": "File", + "fileLabel": "File:", + "fileModified": "File modified", + "folder": "Folder", + "folderLabel": "Folder:", + "general": "General", + "gid": "GID", + "goUp": "Go Up", + "group": "Group", + "loading": "Loading...", + "location": "Location", + "moveTo": "Move '{{name}}' to (full path):", + "mtime": "Modified Time", + "newFile": "New File", + "newFileName": "Enter new file name:", + "newFolder": "New Folder", + "newFolderName": "Enter new folder name:", + "newSymlink": "New Symlink", + "noFileSelected": "No file selected", + "octal": "Octal", + "openAfterCreateFile": "Open file after creation", + "openAfterCreateFolder": "Open folder after creation", + "owner": "Owner", + "permGroup": "Group", + "permOther": "Other", + "permSticky": "Sticky", + "permUser": "User", + "permissions": "Permissions", + "properties": "Properties", + "propertiesOf": "Properties of {{name}}", + "refresh": "Refresh", + "renameTo": "Rename '{{name}}' to:", + "sendDirPathToTerminal": "Send Directory Path to Terminal", + "sendToTerminal": "Copy current path to terminal", + "shellScript": "Shell Script", + "size": "Size", + "special": "Special", + "sureDelete": "Are you sure you want to delete '{{name}}'?", + "symlinkName": "Symlink Name", + "symlinkTarget": "Symlink Target", + "syncFailed": "Failed to sync terminal path", + "syncTerminalPath": "Sync from Terminal", + "totalItems": "{{count}} items", + "type": "Type", + "uid": "UID", + "upload": "Upload Files", + "uploadFolder": "Upload Folder", + "uploadOnce": "Upload Once", + "uploadPrompt": "The remote file has been modified. Would you like to upload the changes?" + }, + "fileTransfer": { + "clearAll": "Clear all", + "clearCompleted": "Clear completed", + "completed": "Completed", + "downloadPath": "Download Path", + "error": "Error", + "noTransfers": "No transfers", + "openDownloadPath": "Open Download Path", + "savePath": "Save to: {{path}}", + "transferring": "Transferring" + }, + "lockScreen": { + "message": "This application has been locked due to inactivity.", + "passwordPlaceholder": "Enter unlock password", + "title": "Application Locked", + "unlock": "Unlock", + "wrongPassword": "Incorrect password, please try again." }, "menu": { - "file": "File", - "edit": "Edit", - "view": "View", - "terminal": "Terminal", - "help": "Help", - "newSshConnection": "New SSH Connection", - "exit": "Exit", - "copy": "Copy", - "paste": "Paste", - "selectAll": "Select All", - "layout": "Layout", - "theme": "Theme", - "language": "Language", - "zoomIn": "Zoom In", - "zoomOut": "Zoom Out", - "resetZoom": "Reset Zoom", - "resetLayout": "Reset Panel Layout", - "fullscreen": "Fullscreen", - "minimize": "Minimize", - "maximize": "Maximize", - "restore": "Restore", - "newLocalTerminal": "New Local Terminal", - "documentation": "Documentation", + "about": "About", "checkForUpdates": "Check for Updates", + "copy": "Copy", + "documentation": "Documentation", + "edit": "Edit", + "exit": "Exit", + "file": "File", + "fullscreen": "Fullscreen", + "help": "Help", + "language": "Language", + "layout": "Layout", + "maximize": "Maximize", + "minimize": "Minimize", + "newLocalTerminal": "New Local Terminal", + "newSshConnection": "New SSH Connection", + "paste": "Paste", + "resetLayout": "Reset Panel Layout", + "resetZoom": "Reset Zoom", + "restore": "Restore", + "selectAll": "Select All", + "terminal": "Terminal", + "theme": "Theme", + "view": "View", "viewLogs": "View Logs", - "about": "About" - }, - "panel": { - "fileExplorer": "File Explorer", - "fileTransfer": "File Transfer", - "network": "Network", - "savedConnections": "Saved Connections", - "activeSessions": "Active Sessions", - "commandHistory": "Command History", - "quickCommands": "Quick Commands", - "noSavedConnections": "No saved connections", - "noActiveSessions": "No active sessions", - "noCommandsYet": "No commands yet", - "resourceMonitor": "Resource Monitor", - "resourceMonitorNoSession": "Connect to an SSH session to view resource usage", - "resourceMonitorDisabled": "Enable \"Show Remote Resource Stats\" in Settings to use this feature", - "resourceMonitorError": "Failed to fetch resource stats" - }, - "resourceMonitor": { - "system": "System", - "hostname": "Hostname", - "uptime": "Uptime", - "os": "OS", - "arch": "Architecture", - "systemLoad": "System Load", - "cpu": "CPU", - "memory": "Memory", - "network": "Network", - "disk": "Disk", - "used": "Used", - "available": "Available", - "cached": "Cache", - "send": "Send", - "receive": "Receive", - "nic": "NIC", - "mountPath": "Mount Path", - "totalSize": "Total Size", - "availSpace": "Available", - "usagePercent": "Usage", - "day": "{{count}} day", - "days": "{{count}} days", - "Load1": "1 min", - "Load5": "5 mins", - "Load15": "15 mins" + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out" }, "network": { - "proxy": "Proxy", - "tunnels": "Tunnels", - "proxyConfig": "Proxy Configurations", - "tunnelConfig": "Tunnel Configurations", - "newProxy": "New Proxy", - "editProxy": "Edit Proxy", - "newTunnel": "New Tunnel", - "editTunnel": "Edit Tunnel", - "proxyDialogDescription": "Configure a reusable proxy that can be assigned to any saved connection.", - "tunnelDialogDescription": "Create an SSH tunnel to forward traffic through a saved connection.", - "proxySectionDescription": "Standalone proxy configurations, assignable to connections via Advanced Configuration.", - "tunnelSectionDescription": "Manage local, remote, or dynamic port forwarding for a specific connection.", - "noProxyConfigs": "No proxy configurations", - "noTunnels": "No tunnels configured", - "proxyEmptyHint": "Create a proxy configuration, then assign it to connections in their advanced settings.", - "tunnelEmptyHint": "Create local, remote, or dynamic forwarding for a specific connection.", - "noConnections": "No saved connections available", - "noConnectionsHint": "Create a connection first, then configure tunnels for it.", - "bindConnectionFirst": "Create a connection before adding a new item.", - "alreadyConfigured": "Configured", - "proxyName": "Proxy Name", - "proxyNamePlaceholder": "e.g. Office SOCKS5", - "proxyNameRequired": "Please enter a proxy name.", - "proxyUsername": "Username", - "proxyUsernamePlaceholder": "Optional", - "proxyPassword": "Password", - "proxyPasswordPlaceholder": "Optional", - "proxyPasswordKeep": "Leave empty to keep current", - "tunnelName": "Tunnel Name", - "tunnelNameHint": "Shown in the tunnel list, so name it by purpose.", - "tunnelType": "Tunnel Type", - "localTunnel": "Local", - "remoteTunnel": "Remote", - "dynamicTunnel": "Dynamic", - "selectedConnection": "Connection", - "connectionPickerPlaceholder": "Choose a connection", - "searchConnections": "Search by name, group, or host...", - "ungroupedConnections": "Ungrouped", - "connectionRequired": "Please choose a connection.", - "connectionMissing": "Connection was removed", - "proxyHostRequired": "Please enter a proxy host.", - "proxyPortRequired": "Please enter a valid proxy port.", - "tunnelOpen": "Open", - "tunnelClosed": "Closed", - "tunnelListenPortRequired": "Please enter a valid listen port.", - "tunnelTargetRequired": "Please enter a target host and port.", - "tunnelConnectionHint": "Automatically opens this tunnel when the connection is established.", "advancedOptions": "Advanced Options", - "savedConnection": "Saved Connection", - "listenPort": "Listen Port", - "targetHost": "Target Host", - "targetPort": "Target Port", + "alreadyConfigured": "Configured", "autoOpen": "Auto-open on connect", + "bindAddress": "Bind Scope", + "bindAddressHint": "Choose whether the listening port is reachable only on this device or from other hosts too.", + "bindAllInterfaces": "All Interfaces", + "bindAllInterfacesHint": "Listen on 0.0.0.0 so LAN or other hosts can reach it.", + "bindConnectionFirst": "Create a connection before adding a new item.", "bindLocalhost": "Bind to localhost only", - "tunnelNamePlaceholder": "e.g. Local port for web server", - "tunnelNameRequired": "Please enter a tunnel name.", + "bindLocalhostOnly": "Localhost Only", + "bindLocalhostOnlyHint": "Listen on 127.0.0.1 only. Recommended for safety.", + "connectionMissing": "Connection was removed", + "connectionPickerPlaceholder": "Choose a connection", + "connectionRequired": "Please choose a connection.", + "dynamicTunnel": "Dynamic", + "editProxy": "Edit Proxy", + "editTunnel": "Edit Tunnel", + "listenPort": "Listen Port", + "listenPortDynamic": "SOCKS Listen Port", + "listenPortDynamicHint": "This port exposes a SOCKS5 proxy on your current device.", "listenPortLocal": "Local Listen Port", "listenPortLocalHint": "This port listens on your current device and forwards traffic to a remote target service.", "listenPortRemote": "Remote Listen Port", "listenPortRemoteHint": "This port listens on the remote SSH host and forwards traffic back to a local service.", - "listenPortDynamic": "SOCKS Listen Port", - "listenPortDynamicHint": "This port exposes a SOCKS5 proxy on your current device.", + "localTunnel": "Local", + "newProxy": "New Proxy", + "newTunnel": "New Tunnel", + "noConnections": "No saved connections available", + "noConnectionsHint": "Create a connection first, then configure tunnels for it.", + "noProxyConfigs": "No proxy configurations", + "noTunnels": "No tunnels configured", + "proxy": "Proxy", + "proxyConfig": "Proxy Configurations", + "proxyDialogDescription": "Configure a reusable proxy that can be assigned to any saved connection.", + "proxyEmptyHint": "Create a proxy configuration, then assign it to connections in their advanced settings.", + "proxyHostRequired": "Please enter a proxy host.", + "proxyName": "Proxy Name", + "proxyNamePlaceholder": "e.g. Office SOCKS5", + "proxyNameRequired": "Please enter a proxy name.", + "proxyPassword": "Password", + "proxyPasswordKeep": "Leave empty to keep current", + "proxyPasswordPlaceholder": "Optional", + "proxyPortRequired": "Please enter a valid proxy port.", + "proxySectionDescription": "Standalone proxy configurations, assignable to connections via Advanced Configuration.", + "proxyUsername": "Username", + "proxyUsernamePlaceholder": "Optional", + "remoteTunnel": "Remote", + "savedConnection": "Saved Connection", + "searchConnections": "Search by name, group, or host...", + "selectedConnection": "Connection", + "targetHost": "Target Host", "targetHostLocal": "Target Service Address", "targetHostLocalHint": "The remote service address to reach through the SSH tunnel.", "targetHostRemote": "Local Service Address", "targetHostRemoteHint": "The local service address that remote traffic should be forwarded to.", + "targetPort": "Target Port", "targetPortLocal": "Target Service Port", "targetPortLocalHint": "The port used by the remote target service.", "targetPortRemote": "Local Service Port", "targetPortRemoteHint": "The port used by the local service on your current device.", + "tunnelClosed": "Closed", + "tunnelConfig": "Tunnel Configurations", + "tunnelConnectionHint": "Automatically opens this tunnel when the connection is established.", + "tunnelDialogDescription": "Create an SSH tunnel to forward traffic through a saved connection.", + "tunnelEmptyHint": "Create local, remote, or dynamic forwarding for a specific connection.", + "tunnelListenPortRequired": "Please enter a valid listen port.", + "tunnelName": "Tunnel Name", + "tunnelNameHint": "Shown in the tunnel list, so name it by purpose.", + "tunnelNamePlaceholder": "e.g. Local port for web server", + "tunnelNameRequired": "Please enter a tunnel name.", + "tunnelOpen": "Open", "tunnelPreview": "Forwarding Preview", + "tunnelPreviewDynamic": "SOCKS5 on {{bindHost}}:{{listenPort}}", "tunnelPreviewLocal": "{{bindHost}}:{{listenPort}} �?{{targetHost}}:{{targetPort}}", "tunnelPreviewRemote": "remote ({{bindHost}}):{{listenPort}} �?{{targetHost}}:{{targetPort}}", - "tunnelPreviewDynamic": "SOCKS5 on {{bindHost}}:{{listenPort}}", - "bindAddress": "Bind Scope", - "bindAddressHint": "Choose whether the listening port is reachable only on this device or from other hosts too.", - "bindLocalhostOnly": "Localhost Only", - "bindLocalhostOnlyHint": "Listen on 127.0.0.1 only. Recommended for safety.", - "bindAllInterfaces": "All Interfaces", - "bindAllInterfacesHint": "Listen on 0.0.0.0 so LAN or other hosts can reach it." + "tunnelSectionDescription": "Manage local, remote, or dynamic port forwarding for a specific connection.", + "tunnelTargetRequired": "Please enter a target host and port.", + "tunnelType": "Tunnel Type", + "tunnels": "Tunnels", + "ungroupedConnections": "Ungrouped" }, - "dialog": { - "confirmClose": "Quit Application", - "confirmCloseDesc": "There are active sessions. Are you sure you want to quit? All sessions will be disconnected.", - "confirmCloseAction": "Quit", - "editConnection": "Edit Connection", - "newConnection": "New Connection", - "localTerminal": "Local Terminal", - "openLocalShell": "Open a local shell session", - "sshConnection": "SSH Connection", - "connectionName": "Connection Name", - "icon": "Icon", - "group": "Group", - "host": "Host", - "port": "Port", - "username": "Username", - "authentication": "Authentication", - "password": "Password", - "privateKey": "Private Key", - "selectKey": "Select Key", - "noKeys": "No keys configured", - "manageKeys": "Manage Keys...", - "selectPassword": "Select Password", - "noPasswords": "No passwords configured", - "managePasswords": "Manage Passwords...", - "description": "Description", - "descriptionPlaceholder": "e.g. Web server for project X", - "serverPlaceholder": "My Server", - "newGroupPlaceholder": "New group...", - "none": "None", - "hostRequired": "Host is required", - "advancedConfig": "Advanced Configuration", - "proxySelect": "Proxy", - "noProxy": "No Proxy", - "twoFactorAuth": "Two-Factor Authentication", - "selectOtp": "OTP Entry", - "noOtp": "None", - "autoFillOtp": "Auto-fill verification code", - "connectionSaved": "Connection saved successfully!", + "otp": { "cancel": "Cancel", - "save": "Save", - "saving": "Saving...", - "selectShell": "Select Shell", - "shellPowerShell": "PowerShell", - "shellCmd": "Command Prompt", - "shellBash": "Bash", - "shellWsl": "WSL", - "shellCustom": "Custom...", - "shellPath": "Shell Path", - "shellPathPlaceholder": "e.g. /bin/zsh or pwsh.exe", - "workingDir": "Working Directory", - "workingDirPlaceholder": "e.g. C:\\Projects or ~/workspace", - "quickConnectLocal": "Quick Connect (Unsaved)", - "serial": "Serial", - "serialPort": "Serial Port", - "serialPortPlaceholder": "COM1 or /dev/ttyS0", - "baudRate": "Baud Rate", - "dataBits": "Data Bits", - "parity": "Parity", - "parityNone": "None", - "parityOdd": "Odd", - "parityEven": "Even", - "parityMark": "Mark", - "paritySpace": "Space", - "stopBits": "Stop Bits" + "cancelled": "2FA authentication cancelled", + "copied": "Copied", + "copyCode": "Copy Code", + "currentCode": "Current Code", + "description": "\"{{name}}\" requires additional verification.", + "expiresIn": "{{seconds}}s remaining", + "generateCode": "Generate Code", + "hotpHint": "Generate on demand. The counter advances each time.", + "loadingCode": "Loading code", + "sendToInput": "Send to Input", + "submit": "Verify", + "title": "Two-Factor Authentication" }, - "about": { - "description": "A modern, high-performance SSH client built with Tauri and React.", - "website": "Website", - "issues": "Issues", - "close": "Close" + "otpManager": { + "add": "Add", + "advanced": "Advanced Settings", + "algorithm": "Algorithm", + "counter": "Counter", + "deleteConfirm": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.", + "deleteTitle": "Delete OTP Entry", + "digits": "Digits", + "hide": "Hide", + "hideCodes": "Hide codes", + "issuerPlaceholder": "Issuer (e.g. GitHub)", + "noEntries": "No OTP entries", + "period": "Period (seconds)", + "qrImportFailed": "Failed to import from QR code", + "scanQr": "Scan QR", + "scanningQr": "Scanning...", + "secretPlaceholder": "Secret (Base32)", + "secretUnchanged": "Secret unchanged", + "selectQrImage": "Select QR Code Image", + "showCodes": "Show codes", + "title": "OTP Entries", + "usernamePlaceholder": "Username (e.g. user@example.com)", + "view": "View" }, - "terminal": { - "newConnection": "New Connection", - "sessionDisconnected": "Session disconnected", - "pressEnterToReconnect": "Press Enter to reconnect", - "reconnecting": "Reconnecting...", - "reconnectFailed": "Reconnect failed", - "linkOpenHint": "{{modifier}}+Click to open link", - "actionLinkKind_ip": "IPv4", - "actionLinkKind_hostPort": "Host:Port", - "actionLinkKind_archive": "Archive", - "actionLinkKind_url": "URL", - "actionLinkKind_file": "File", - "actionLinkKind_custom": "Match", - "actionLinkAltClickHint": "Alt+Click: more actions", - "actionLinkDefaultBadge": "default", - "click": "Click" + "panel": { + "activeSessions": "Active Sessions", + "commandHistory": "Command History", + "fileExplorer": "File Explorer", + "fileTransfer": "File Transfer", + "network": "Network", + "noActiveSessions": "No active sessions", + "noCommandsYet": "No commands yet", + "noSavedConnections": "No saved connections", + "quickCommands": "Quick Commands", + "resourceMonitor": "Resource Monitor", + "resourceMonitorDisabled": "Enable \"Show Remote Resource Stats\" in Settings to use this feature", + "resourceMonitorError": "Failed to fetch resource stats", + "resourceMonitorNoSession": "Connect to an SSH session to view resource usage", + "savedConnections": "Saved Connections" }, - "terminalCtx": { - "copy": "Copy", - "paste": "Paste", - "pasteSelectedText": "Paste Selected Text", - "find": "Find...", - "searchOnline": "Search Online", - "translate": "Translate", - "clearScreen": "Clear Screen", - "clearAll": "Clear All", - "selectAll": "Select All" - }, - "fileExplorer": { - "goUp": "Go Up", - "refresh": "Refresh", - "connectToSession": "Connect to a session to browse files", - "loading": "Loading...", - "emptyDirectory": "Empty directory", - "totalItems": "{{count}} items", - "sendToTerminal": "Copy current path to terminal", - "cmRefresh": "Refresh", - "cmOpen": "Open", - "cmOpenDefault": "Open with Default Editor", - "cmDelete": "Delete", - "cmRename": "Rename...", - "cmMove": "Move to...", - "cmProperties": "Properties...", - "cmDownload": "Download...", - "cmUpload": "Upload to Current Folder...", - "cmCopyDirPath": "Copy Directory Path", - "cmCopyName": "Copy Name", - "cmCopyPath": "Copy Path", - "cmTerminalDirPath": "Send Directory Path to Terminal", - "cmTerminalName": "Send Name to Terminal", - "cmTerminalPath": "Send Path to Terminal", - "sureDelete": "Are you sure you want to delete '{{name}}'?", - "renameTo": "Rename '{{name}}' to:", - "moveTo": "Move '{{name}}' to (full path):", - "propertiesOf": "Properties of {{name}}", - "size": "Size", - "permissions": "Permissions", - "general": "General", - "file": "File", - "folder": "Folder", - "shellScript": "Shell Script", - "location": "Location", - "mtime": "Modified Time", - "atime": "Access Time", - "owner": "Owner", - "group": "Group", - "type": "Type", - "special": "Special", - "uid": "UID", - "gid": "GID", - "permUser": "User", - "permGroup": "Group", - "permOther": "Other", - "permSticky": "Sticky", - "octal": "Octal", - "downloadSelected": "Download Selected", - "upload": "Upload Files", - "uploadFolder": "Upload Folder", - "newFile": "New File", - "newFolder": "New Folder", - "delete": "Delete", - "newFileName": "Enter new file name:", - "newFolderName": "Enter new folder name:", - "editPath": "Click to edit path", - "noFileSelected": "No file selected", - "fileLabel": "File:", - "folderLabel": "Folder:", - "openAfterCreateFile": "Open file after creation", - "openAfterCreateFolder": "Open folder after creation", - "newSymlink": "New Symlink", - "symlinkName": "Symlink Name", - "symlinkTarget": "Symlink Target", - "copyDirPath": "Copy Directory Path", - "sendDirPathToTerminal": "Send Directory Path to Terminal", - "properties": "Properties", - "syncTerminalPath": "Sync from Terminal", - "autoSyncTerminalPath": "Auto Sync from Terminal", - "syncFailed": "Failed to sync terminal path", - "cwdTrackingUnavailable": "CWD tracking unavailable (shell integration not supported)", - "fileModified": "File modified", - "uploadPrompt": "The remote file has been modified. Would you like to upload the changes?", - "alwaysUpload": "Always upload", - "uploadOnce": "Upload Once" + "passwordManager": { + "add": "Add Password", + "deleteConfirm": "Are you sure you want to delete password '{{name}}'?", + "deleteTitle": "Delete Password", + "namePlaceholder": "e.g. Production Server", + "noPasswords": "No passwords stored.", + "passwordPlaceholder": "Enter password", + "passwordUnchanged": "Leave empty to keep current password", + "title": "Password Manager" }, "quickCommands": { - "label": "Label", - "command": "Command", "add": "Add", - "edit": "Edit", - "delete": "Delete", - "errorLabelRequired": "Label is required", - "errorCommandRequired": "Command script is required", "addCommand": "Add Quick Command", - "editCommand": "Edit Quick Command", - "labelName": "Label", - "labelPlaceholder": "e.g. List files", + "allCategories": "All Categories", + "appendHint": "Command will be placed at the prompt for review before executing.", + "appendOnly": "Append to prompt", "category": "Category", "categoryPlaceholder": "e.g. K8s", + "colorTag": "Color Tag", + "command": "Command", + "commandPlaceholder": "e.g. ls -la\nUse {{varName}} for variables.", + "commandScript": "Command Script", + "createCategory": "Create \"{{name}}\"", + "delete": "Delete", "description": "Description (optional)", "descriptionPlaceholder": "Details about this command", - "colorTag": "Color Tag", - "pin": "Pin to top", - "executionMode": "Execution Mode", - "executeImmediately": "Execute immediately", - "appendOnly": "Append to prompt", + "edit": "Edit", + "editCommand": "Edit Quick Command", + "errorCommandRequired": "Command script is required", + "errorLabelRequired": "Label is required", "executeHint": "Command will be executed automatically when clicked.", - "appendHint": "Command will be placed at the prompt for review before executing.", - "commandScript": "Command Script", - "commandPlaceholder": "e.g. ls -la\nUse {{varName}} for variables.", + "executeImmediately": "Execute immediately", + "executionMode": "Execution Mode", "fillVariables": "Fill Command Variables", + "label": "Label", + "labelName": "Label", + "labelPlaceholder": "e.g. List files", + "newCategoryPlaceholder": "New Category...", + "noCommandsFound": "No commands found.", + "pin": "Pin to top", "run": "Run Command", "search": "Search cmd...", - "allCategories": "All Categories", - "uncategorized": "Uncategorized", - "noCommandsFound": "No commands found.", - "selectIcon": "Select Icon", - "newCategoryPlaceholder": "New Category...", "searchOrCreateCategory": "Search or create category...", - "createCategory": "Create \"{{name}}\"" + "selectIcon": "Select Icon", + "uncategorized": "Uncategorized" }, - "suggestions": { - "title": "Suggestions", - "match": "match", - "matches": "matches", - "select": "select", - "execute": "execute", - "fill": "fill", - "dismiss": "dismiss" + "recording": { + "recording": "Recording", + "saved": "Saved to {{path}}", + "start": "Start Recording", + "stop": "Stop Recording" + }, + "resourceMonitor": { + "Load1": "1 min", + "Load15": "15 mins", + "Load5": "5 mins", + "arch": "Architecture", + "availSpace": "Available", + "available": "Available", + "cached": "Cache", + "cpu": "CPU", + "day": "{{count}} day", + "days": "{{count}} days", + "disk": "Disk", + "hostname": "Hostname", + "memory": "Memory", + "mountPath": "Mount Path", + "network": "Network", + "nic": "NIC", + "os": "OS", + "receive": "Receive", + "send": "Send", + "system": "System", + "systemLoad": "System Load", + "totalSize": "Total Size", + "uptime": "Uptime", + "usagePercent": "Usage", + "used": "Used" }, "savedConnections": { - "connect": "Connect", - "edit": "Edit", - "delete": "Delete", - "host": "Host", - "port": "Port", - "user": "User", "auth": "Auth", - "group": "Group", - "connecting": "Connecting to {{name}}...", - "connectionFailed": "Connection failed: {{error}}", - "deleteFailed": "Failed to delete connection: {{error}}", - "deleteConfirm": "Are you sure you want to delete '{{name}}'? This action cannot be undone.", - "filter": "Filter...", - "noResults": "No results", - "newConnection": "New Connection", - "importSessions": "Import Sessions", - "importFrom": "Import from...", - "importSelectSource": "Select the application to import sessions from", - "windtermHint": ".wind/profiles/default.v10/terminal/user.sessions", - "importSuccess": "Successfully imported {{count}} sessions", - "importFailed": "Import failed: {{error}}", - "newFolder": "New Folder", - "newSubfolder": "New Subfolder", - "renameFolder": "Rename Folder", - "deleteFolder": "Delete Folder", - "deleteFolderConfirm": "Are you sure you want to delete folder '{{name}}' and all its contents?", - "rename": "Rename", - "copy": "Copy", "clearAll": "Clear All", "clearAllConfirm": "Are you sure you want to clear all connections and folders? This action cannot be undone.", "clearAllSuccess": "All connections cleared", + "connect": "Connect", + "connecting": "Connecting to {{name}}...", + "connectionFailed": "Connection failed: {{error}}", + "connectionName": "Connection Name", + "copy": "Copy", + "delete": "Delete", + "deleteConfirm": "Are you sure you want to delete '{{name}}'? This action cannot be undone.", + "deleteFailed": "Failed to delete connection: {{error}}", + "deleteFolder": "Delete Folder", + "deleteFolderConfirm": "Are you sure you want to delete folder '{{name}}' and all its contents?", + "edit": "Edit", + "filter": "Filter...", "folderName": "Folder Name", "folderNamePlaceholder": "New folder...", - "connectionName": "Connection Name", + "group": "Group", + "host": "Host", + "importFailed": "Import failed: {{error}}", + "importFrom": "Import from...", + "importSelectSource": "Select the application to import sessions from", + "importSessions": "Import Sessions", + "importSuccess": "Successfully imported {{count}} sessions", + "newConnection": "New Connection", + "newFolder": "New Folder", + "newSubfolder": "New Subfolder", + "noResults": "No results", + "port": "Port", + "rename": "Rename", + "renameFolder": "Rename Folder", "sortDefault": "Custom Order", "sortNameAsc": "Name A → Z", - "sortNameDesc": "Name Z → A" + "sortNameDesc": "Name Z → A", + "user": "User", + "windtermHint": ".wind/profiles/default.v10/terminal/user.sessions" }, - "app": { - "noActiveSessions": "No active sessions", - "newConnection": "New Connection" - }, - "statusBar": { - "lock": "Lock Screen", - "cpuUsage": "CPU Usage", - "memUsage": "Memory Usage" - }, - "error": { - "somethingWentWrong": "Something went wrong", - "reloadApplication": "Reload Application" - }, - "fileTransfer": { - "noTransfers": "No transfers", - "clearCompleted": "Clear completed", - "clearAll": "Clear all", - "transferring": "Transferring", - "completed": "Completed", - "error": "Error", - "savePath": "Save to: {{path}}", - "openDownloadPath": "Open Download Path", - "downloadPath": "Download Path" + "securityAuth": { + "keys": "Keys", + "otp": "OTP", + "passwords": "Passwords", + "title": "Security Authentication" }, "settings": { - "title": "Settings", - "general": "General", - "appearance": "Appearance", - "proxy": "Proxy", - "search": "Search", - "translation": "Translation", - "security": "Security", - "terminal": "Terminal", - "interaction": "Interaction", - "startupBehavior": "Startup Behavior", - "startupRestore": "Restore previous session tabs on startup", - "startupRestoreDesc": "Automatically reopen the terminal sessions that were active when the application was last closed.", - "defaultShell": "Default Local Shell", - "defaultShellDesc": "The command line shell to use when creating a new local terminal session.", - "windowBehavior": "Window Behavior", - "minimizeToTray": "Minimize to tray on close", - "minimizeToTrayDesc": "Keep the application running in the background when the window is closed.", - "confirmOnClose": "Confirm on close", - "confirmOnCloseDesc": "Show a confirmation dialog when closing the application with active sessions.", - "noCustomEngines": "No custom search engines defined.", - "theme": "UI Theme", - "themeDesc": "Select the color theme for the application interface.", - "terminalTheme": "Terminal Theme", - "terminalThemeDesc": "Select the color theme for the terminal. Choose \"Follow UI Theme\" to use the same theme as the application.", - "followUiTheme": "Follow UI Theme", - "language": "Language", - "languageDesc": "Select the display language for the application interface.", - "defaultLocalShell": "Default Local Shell", - "defaultLocalShellDesc": "The shell path to use when opening a local terminal.", - "credentialStorage": "Credential Storage", - "sessionSecurity": "Session Security", - "enableProxy": "Enable Proxy", - "enableProxyDesc": "Enable proxy for the application.", - "fontBuiltIn": "Built-in", - "fontFamily": "Font Family", - "fontFamilyDesc": "The font family used in the terminal and app UI. Topmost font has highest priority.", - "fontPrimary": "Primary", - "fontFallback": "Fallback", - "addFallbackFont": "Add Fallback", - "fontSize": "Terminal Font Size (px)", - "uiFontSize": "UI Font Size (px)", - "cursorStyle": "Cursor Style", - "cursorBlock": "Block", - "cursorUnderline": "Underline", - "cursorBar": "Bar", - "cursorBlink": "Cursor Blink", - "fontLigatures": "Enable Font Ligatures", - "fontLigaturesDesc": "Combine multiple characters into a single typographical glyph.", - "scrollbackLines": "Scrollback Buffer (lines)", - "scrollbackLinesDesc": "Number of lines kept in memory for scrolling up.", - "keepAliveInterval": "Keep-Alive Interval (seconds)", - "keepAliveIntervalDesc": "Send SSH keep-alive packets every X seconds. 0 to disable.", - "hardwareAcceleration": "Hardware Acceleration", - "hardwareAccelerationDesc": "Use GPU for terminal rendering (WebGL/Canvas). Requires restart.", - "showRemoteStats": "Show Remote Resource Stats", - "showRemoteStatsDesc": "Display resource usage of the active SSH host in the Resource Monitor panel.", - "remoteStatsInterval": "Stats Polling Interval (seconds)", - "remoteStatsIntervalDesc": "How often to fetch resource usage from the remote host. Default: 3 seconds.", "actionLinks": "Action Links", "actionLinksDesc": "Recognize patterns (IP, archive, host:port, path) in terminal output. Ctrl/Cmd+Click to run the default command. Alt+Click to show all actions.", - "actionLinksMatchers": "Enabled Matchers", - "actionLinksMatcherIpv4": "IPv4 Address", - "actionLinksMatcherIpv4Desc": "ping, traceroute, ssh, curl", - "actionLinksMatcherHostPort": "Host:Port", - "actionLinksMatcherHostPortDesc": "curl, nc -vz, telnet", "actionLinksMatcherArchive": "Archive File", "actionLinksMatcherArchiveDesc": "extract, list contents", - "clipboard": "Clipboard & Selection", - "copyOnSelect": "Copy on Select", - "copyOnSelectDesc": "Automatically copy text to clipboard when selected in the terminal.", - "rightClickPaste": "Right-click Paste", - "rightClickPasteDesc": "Paste text from clipboard when right-clicking in the terminal.", - "wordSeparators": "Word Separators", - "wordSeparatorsDesc": "Characters that break words when double-clicking to select text.", - "encoding": "Data Encoding", - "defaultEncoding": "Default Terminal Encoding", - "defaultEncodingDesc": "The character encoding used for the terminal PTY streams.", - "terminalShortcuts": "Terminal Shortcuts", - "terminalShortcutsDesc": "Shortcuts available within the terminal emulator.", - "globalShortcuts": "Global Shortcuts", - "globalShortcutsDesc": "Global hotkeys available throughout the application.", - "shortcutCategories": { - "terminal": "Terminal Operations", - "tab": "Tabs & Sessions", - "view": "View & Layout", - "special": "Special Features" - }, - "shortcutLabels": { - "newSession": "New SSH Session", - "newLocalTerminal": "New Local Terminal", - "closeTab": "Close Active Tab", - "nextTab": "Next Tab", - "prevTab": "Previous Tab", - "switchTab": "Switch to Tab 1-9", - "toggleLeftSidebar": "Toggle Left Sidebar", - "toggleRightSidebar": "Toggle Right Sidebar", - "zoomIn": "Zoom In", - "zoomOut": "Zoom Out", - "resetZoom": "Reset Zoom", - "toggleFullscreen": "Toggle Fullscreen", - "openSettings": "Open Settings", - "lockScreen": "Lock Screen" - }, - "transfer": "Transfer", - "downloadThreads": "Download Threads", - "downloadThreadsDesc": "Number of parallel threads for file downloads (1-10).", - "uploadThreads": "Upload Threads", - "uploadThreadsDesc": "Number of parallel threads for file uploads (1-10).", - "duplicateStrategy": "Duplicate File Strategy", - "duplicateStrategyDesc": "Action to take when a file with the same name already exists on the target.", - "strategyOverwrite": "Overwrite", - "strategySkip": "Skip", - "strategyRename": "Rename (add suffix)", - "strategyAsk": "Ask every time", - "preserveTimestamps": "Preserve Timestamps", - "preserveTimestampsDesc": "Keep original modification timestamps when transferring files.", - "resumeBrokenTransfer": "Resume Broken Transfers", - "resumeBrokenTransferDesc": "Attempt to resume incomplete file transfers instead of restarting.", - "defaultFilePermissions": "Default File Permissions", - "defaultFilePermissionsDesc": "Octal permission mode for uploaded files (e.g. 644).", - "maxTransferRetries": "Max Retries", - "maxTransferRetriesDesc": "Number of retry attempts when a transfer fails (0-10).", - "transferBufferSize": "Buffer Size (KB)", - "transferBufferSizeDesc": "Read/write buffer size in kilobytes for file transfers.", - "proxyEnable": "Enable Proxy", - "proxyProtocol": "Protocol", - "proxyHost": "Host", - "proxyPort": "Port", - "defaultSearchEngine": "Default Search Engine", - "defaultSearchEngineDesc": "The primary engine used when double-clicking or right-clicking to search.", - "customEngines": "Search Engines", - "engineName": "Engine Name", - "engineUrl": "URL Template (%s for query)", - "noEngines": "No custom search engines defined.", + "actionLinksMatcherHostPort": "Host:Port", + "actionLinksMatcherHostPortDesc": "curl, nc -vz, telnet", + "actionLinksMatcherIpv4": "IPv4 Address", + "actionLinksMatcherIpv4Desc": "ping, traceroute, ssh, curl", + "actionLinksMatchers": "Enabled Matchers", + "addFallbackFont": "Add Fallback", + "addKey": "Add Key", "addNew": "Add New", - "translationProvider": "Provider", - "targetLanguage": "Target Language", - "targetLanguageDesc": "The language to translate selected text into.", - "translationProviders": "Translation Providers", - "translationProvidersDesc": "Configure API credentials for translation services. Google and Microsoft require no configuration.", "apiKey": "API Key", "appId": "App ID", "appKey": "App Key", - "configured": "Configured", - "notConfigured": "Not Configured", - "noKeyRequired": "No key required", + "appearance": "Appearance", + "askSaveLocation": "Ask for save location before downloading", + "askSaveLocationDesc": "Show a dialog to select the save location before each download.", "authentication": "Authentication", - "useOsKeyring": "Use OS Keyring", - "useOsKeyringDesc": "Securely store credentials in the system's native keychain (macOS Keychain, Windows Credential Manager, Secret Service).", - "requireMasterPassword": "Require Master Password", - "requireMasterPasswordDesc": "Encrypt session data with a master password that must be entered on startup.", - "sessionLock": "Session Lock", + "browse": "Browse", + "clipboard": "Clipboard & Selection", + "configured": "Configured", + "confirmOnClose": "Confirm on close", + "confirmOnCloseDesc": "Show a confirmation dialog when closing the application with active sessions.", + "connectionSecurity": "Connection Security", + "copyOnSelect": "Copy on Select", + "copyOnSelectDesc": "Automatically copy text to clipboard when selected in the terminal.", + "credentialStorage": "Credential Storage", + "cursorBar": "Bar", + "cursorBlink": "Cursor Blink", + "cursorBlock": "Block", + "cursorStyle": "Cursor Style", + "cursorUnderline": "Underline", + "customEngines": "Search Engines", + "defaultEditor": "Default Editor", + "defaultEditorDesc": "The program to use for local opening of remote files. Leave empty to use the system default application.", + "defaultEncoding": "Default Terminal Encoding", + "defaultEncodingDesc": "The character encoding used for the terminal PTY streams.", + "defaultFilePermissions": "Default File Permissions", + "defaultFilePermissionsDesc": "Octal permission mode for uploaded files (e.g. 644).", + "defaultLocalShell": "Default Local Shell", + "defaultLocalShellDesc": "The shell path to use when opening a local terminal.", + "defaultShell": "Default Local Shell", + "defaultShellDesc": "The command line shell to use when creating a new local terminal session.", + "deleteKey": "Delete Key", + "deleteKeyConfirm": "Are you sure you want to delete key '{{name}}'?", + "downloadPath": "Download Path", + "downloadPathDesc": "The default local directory for downloading files. Leave empty to use the system download folder.", + "downloadThreads": "Download Threads", + "downloadThreadsDesc": "Number of parallel threads for file downloads (1-10).", + "duplicateStrategy": "Duplicate File Strategy", + "duplicateStrategyDesc": "Action to take when a file with the same name already exists on the target.", + "enableProxy": "Enable Proxy", + "enableProxyDesc": "Enable proxy for the application.", "enableScreenLock": "Enable Screen Lock", "enableScreenLockDesc": "When enabled, the application will lock automatically on startup or after a period of inactivity.", + "encoding": "Data Encoding", + "engineName": "Engine Name", + "engineUrl": "URL Template (%s for query)", + "engineUrlHint": "Must include %s to represent the search term.", + "engineUrlInvalid": "This template is missing %s, so the query cannot be injected.", + "followUiTheme": "Follow UI Theme", + "fontBuiltIn": "Built-in", + "fontFallback": "Fallback", + "fontFamily": "Font Family", + "fontFamilyDesc": "The font family used in the terminal and app UI. Topmost font has highest priority.", + "fontLigatures": "Enable Font Ligatures", + "fontLigaturesDesc": "Combine multiple characters into a single typographical glyph.", + "fontPrimary": "Primary", + "fontSize": "Terminal Font Size (px)", + "general": "General", + "globalShortcuts": "Global Shortcuts", + "globalShortcutsDesc": "Global hotkeys available throughout the application.", + "hardwareAcceleration": "Hardware Acceleration", + "hardwareAccelerationDesc": "Use GPU for terminal rendering (WebGL/Canvas). Requires restart.", + "hostKeyAccept": "Accept (Auto-add)", + "hostKeyPolicy": "Host Key Policy", + "hostKeyPolicyDesc": "How to handle unknown SSH host keys during connection.", + "hostKeyPrompt": "Prompt (Ask user)", + "hostKeyStrict": "Strict (Reject unknown)", "idleLockMinutes": "Idle Lock (minutes)", "idleLockMinutesDesc": "Automatically lock the application after X minutes of inactivity. 0 to disable.", + "interaction": "Interaction", + "keepAliveInterval": "Keep-Alive Interval (seconds)", + "keepAliveIntervalDesc": "Send SSH keep-alive packets every X seconds. 0 to disable.", + "keyFileLoaded": "Key file loaded", + "keyManagement": "Key Management", + "keyName": "Key Name", + "keyNamePlaceholder": "e.g. My SSH Key", + "keywordHighlightBuiltinNote": "Applied automatically and adapt to the current theme. Your custom rules override these.", + "keywordHighlightBuiltinRules": "Built-in Rules", + "keywordHighlightDarkPalette": "Dark theme palette", + "keywordHighlightLightPalette": "Light theme palette", + "keywordHighlightNewRule": "New Rule", + "keywordHighlightNoRules": "No custom rules yet. Click + to add one.", + "keywordHighlightPatternCount": "{{count}} patterns", + "keywordHighlightPatternCount_one": "{{count}} pattern", + "keywordHighlightPatternCount_other": "{{count}} patterns", + "keywordHighlightPickColor": "Click to open color picker", + "keywordHighlightRuleColor": "Color", + "keywordHighlightRuleName": "Rule Name", + "keywordHighlightRuleNamePlaceholder": "e.g. My Keyword", + "keywordHighlightRulePatterns": "Patterns (one per line, supports regex)", + "keywordHighlightRulePatternsPlaceholder": "e.g.\nerror\nfail(ed)?\nfatal", + "keywordHighlightRules": "Custom Rules", + "keywordHighlightWrappedLines": "Highlight Across Soft Wraps", + "keywordHighlightWrappedLinesDesc": "Treat consecutive soft-wrapped buffer lines as one logical line so matches can continue across wraps. Enabling this adds extra scanning and cell-mapping work, so performance may drop on large terminals.", + "keywordHighlighting": "Keyword Highlighting", + "keywordHighlightingDesc": "Overlay colors on matching text. Built-in rules always apply; your rules take priority.", + "keywordHighlightingExperimental": "Keyword Highlighting (Experimental)", + "keywordHighlightingExperimentalDesc": "Overlay colors on matching text. Built-in rules always apply; your rules take priority. This is an unfinished experimental feature, please enable with caution.", + "language": "Language", + "languageDesc": "Select the display language for the application interface.", "lockPassword": "Unlock Password", "lockPasswordDesc": "Set a password required to unlock the application. Leave empty for click-to-unlock.", "lockPasswordPlaceholder": "Optional", - "keyManagement": "Key Management", - "addKey": "Add Key", - "keyName": "Key Name", - "keyNamePlaceholder": "e.g. My SSH Key", + "maxTransferRetries": "Max Retries", + "maxTransferRetriesDesc": "Number of retry attempts when a transfer fails (0-10).", + "minimizeToTray": "Minimize to tray on close", + "minimizeToTrayDesc": "Keep the application running in the background when the window is closed.", + "noCustomEngines": "No custom search engines defined.", + "noEngines": "No custom search engines defined.", + "noKeyRequired": "No key required", + "noKeys": "No SSH keys configured.", + "notConfigured": "Not Configured", + "passphrase": "Passphrase (optional)", + "policyAccept": "Accept (Auto-add)", + "policyPrompt": "Prompt (Ask user)", + "policyStrict": "Strict (Reject unknown)", + "preserveTimestamps": "Preserve Timestamps", + "preserveTimestampsDesc": "Keep original modification timestamps when transferring files.", + "proxy": "Proxy", + "proxyEnable": "Enable Proxy", + "proxyHost": "Host", + "proxyPort": "Port", + "proxyProtocol": "Protocol", + "recordingPath": "Recording Path", + "recordingPathDesc": "The directory to save terminal recording files. Leave empty to use the system download folder.", + "remoteStatsInterval": "Stats Polling Interval (seconds)", + "remoteStatsIntervalDesc": "How often to fetch resource usage from the remote host. Default: 3 seconds.", + "requireMasterPassword": "Require Master Password", + "requireMasterPasswordDesc": "Encrypt session data with a master password that must be entered on startup.", + "resumeBrokenTransfer": "Resume Broken Transfers", + "resumeBrokenTransferDesc": "Attempt to resume incomplete file transfers instead of restarting.", + "rightClickPaste": "Right-click Paste", + "rightClickPasteDesc": "Paste text from clipboard when right-clicking in the terminal.", + "scrollbackLines": "Scrollback Buffer (lines)", + "scrollbackLinesDesc": "Number of lines kept in memory for scrolling up.", + "search": "Search", + "searchEngineActions": "More actions", + "security": "Security", + "selectIcon": "Select Icon", "selectKeyFile": "Select private key file...", "selectKeyFileTitle": "Select Private Key File", - "keyFileLoaded": "Key file loaded", - "passphrase": "Passphrase (optional)", - "deleteKey": "Delete Key", - "noKeys": "No SSH keys configured.", - "deleteKeyConfirm": "Are you sure you want to delete key '{{name}}'?", - "connectionSecurity": "Connection Security", - "hostKeyPolicy": "Host Key Policy", - "hostKeyPolicyDesc": "How to handle unknown SSH host keys during connection.", - "policyPrompt": "Prompt (Ask user)", - "policyAccept": "Accept (Auto-add)", - "policyStrict": "Strict (Reject unknown)", - "hostKeyPrompt": "Prompt (Ask user)", - "hostKeyAccept": "Accept (Auto-add)", - "hostKeyStrict": "Strict (Reject unknown)", - "keywordHighlighting": "Keyword Highlighting", - "keywordHighlightingExperimental": "Keyword Highlighting (Experimental)", - "keywordHighlightingDesc": "Overlay colors on matching text. Built-in rules always apply; your rules take priority.", - "keywordHighlightingExperimentalDesc": "Overlay colors on matching text. Built-in rules always apply; your rules take priority. This is an unfinished experimental feature, please enable with caution.", - "keywordHighlightWrappedLines": "Highlight Across Soft Wraps", - "keywordHighlightWrappedLinesDesc": "Treat consecutive soft-wrapped buffer lines as one logical line so matches can continue across wraps. Enabling this adds extra scanning and cell-mapping work, so performance may drop on large terminals.", - "keywordHighlightBuiltinRules": "Built-in Rules", - "keywordHighlightBuiltinNote": "Applied automatically and adapt to the current theme. Your custom rules override these.", - "keywordHighlightRules": "Custom Rules", - "keywordHighlightNoRules": "No custom rules yet. Click + to add one.", - "keywordHighlightNewRule": "New Rule", - "keywordHighlightRuleName": "Rule Name", - "keywordHighlightRuleNamePlaceholder": "e.g. My Keyword", - "keywordHighlightRuleColor": "Color", - "keywordHighlightPickColor": "Click to open color picker", - "keywordHighlightRulePatterns": "Patterns (one per line, supports regex)", - "keywordHighlightRulePatternsPlaceholder": "e.g.\nerror\nfail(ed)?\nfatal", - "keywordHighlightDarkPalette": "Dark theme palette", - "keywordHighlightLightPalette": "Light theme palette", - "keywordHighlightPatternCount_one": "{{count}} pattern", - "keywordHighlightPatternCount_other": "{{count}} patterns", - "keywordHighlightPatternCount": "{{count}} patterns" + "sessionLock": "Session Lock", + "sessionSecurity": "Session Security", + "shortcutCategories": { + "special": "Special Features", + "tab": "Tabs & Sessions", + "terminal": "Terminal Operations", + "view": "View & Layout" + }, + "shortcutLabels": { + "closeTab": "Close Active Tab", + "lockScreen": "Lock Screen", + "newLocalTerminal": "New Local Terminal", + "newSession": "New SSH Session", + "nextTab": "Next Tab", + "openSettings": "Open Settings", + "prevTab": "Previous Tab", + "resetZoom": "Reset Zoom", + "switchTab": "Switch to Tab 1-9", + "toggleFullscreen": "Toggle Fullscreen", + "toggleLeftSidebar": "Toggle Left Sidebar", + "toggleRightSidebar": "Toggle Right Sidebar", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out" + }, + "showInSearchMenu": "Show in search menu", + "showRemoteStats": "Show Remote Resource Stats", + "showRemoteStatsDesc": "Display resource usage of the active SSH host in the Resource Monitor panel.", + "startupBehavior": "Startup Behavior", + "startupRestore": "Restore previous session tabs on startup", + "startupRestoreDesc": "Automatically reopen the terminal sessions that were active when the application was last closed.", + "strategyAsk": "Ask every time", + "strategyOverwrite": "Overwrite", + "strategyRename": "Rename (add suffix)", + "strategySkip": "Skip", + "targetLanguage": "Target Language", + "targetLanguageDesc": "The language to translate selected text into.", + "terminal": "Terminal", + "terminalShortcuts": "Terminal Shortcuts", + "terminalShortcutsDesc": "Shortcuts available within the terminal emulator.", + "terminalTheme": "Terminal Theme", + "terminalThemeDesc": "Select the color theme for the terminal. Choose \"Follow UI Theme\" to use the same theme as the application.", + "testSearchEngine": "Test", + "theme": "UI Theme", + "themeDesc": "Select the color theme for the application interface.", + "title": "Settings", + "transfer": "Transfer", + "transferBufferSize": "Buffer Size (KB)", + "transferBufferSizeDesc": "Read/write buffer size in kilobytes for file transfers.", + "translation": "Translation", + "translationProvider": "Provider", + "translationProviders": "Translation Providers", + "translationProvidersDesc": "Configure API credentials for translation services. Google and Microsoft require no configuration.", + "uiFontSize": "UI Font Size (px)", + "uploadThreads": "Upload Threads", + "uploadThreadsDesc": "Number of parallel threads for file uploads (1-10).", + "useOsKeyring": "Use OS Keyring", + "useOsKeyringDesc": "Securely store credentials in the system's native keychain (macOS Keychain, Windows Credential Manager, Secret Service).", + "windowBehavior": "Window Behavior", + "wordSeparators": "Word Separators", + "wordSeparatorsDesc": "Characters that break words when double-clicking to select text." + }, + "statusBar": { + "cpuUsage": "CPU Usage", + "lock": "Lock Screen", + "memUsage": "Memory Usage" + }, + "suggestions": { + "dismiss": "dismiss", + "execute": "execute", + "fill": "fill", + "match": "match", + "matches": "matches", + "select": "select", + "title": "Suggestions" + }, + "terminal": { + "actionLinkAltClickHint": "Alt+Click: more actions", + "actionLinkDefaultBadge": "default", + "actionLinkKind_archive": "Archive", + "actionLinkKind_custom": "Match", + "actionLinkKind_file": "File", + "actionLinkKind_hostPort": "Host:Port", + "actionLinkKind_ip": "IPv4", + "actionLinkKind_url": "URL", + "click": "Click", + "linkOpenHint": "{{modifier}}+Click to open link", + "newConnection": "New Connection", + "pressEnterToReconnect": "Press Enter to reconnect", + "reconnectFailed": "Reconnect failed", + "reconnecting": "Reconnecting...", + "sessionDisconnected": "Session disconnected" + }, + "terminalCtx": { + "clearAll": "Clear All", + "clearScreen": "Clear Screen", + "copy": "Copy", + "find": "Find...", + "paste": "Paste", + "pasteSelectedText": "Paste Selected Text", + "searchOnline": "Search Online", + "selectAll": "Select All", + "translate": "Translate" }, "translation": { - "title": "Translation", - "sourceText": "Source Text", - "translatedText": "Translated Text", - "loading": "Translating...", - "error": "Translation failed", - "copy": "Copy Translation", - "copied": "Copied!", - "close": "Close", - "detectedLang": "Detected: {{lang}}", - "provider": "Provider", - "google": "Google Translate", - "microsoft": "Microsoft Translate", - "deepl": "DeepL", - "baidu": "Baidu Translate", "ali": "Alibaba Translate", + "baidu": "Baidu Translate", + "close": "Close", + "copied": "Copied!", + "copy": "Copy Translation", + "deepl": "DeepL", + "detectedLang": "Detected: {{lang}}", + "error": "Translation failed", + "google": "Google Translate", + "loading": "Translating...", + "microsoft": "Microsoft Translate", + "provider": "Provider", + "sourceText": "Source Text", + "title": "Translation", + "translatedText": "Translated Text", "youdao": "Youdao Translate" - }, - "lockScreen": { - "title": "Application Locked", - "message": "This application has been locked due to inactivity.", - "unlock": "Unlock", - "passwordPlaceholder": "Enter unlock password", - "wrongPassword": "Incorrect password, please try again." - }, - "securityAuth": { - "title": "Security Authentication", - "passwords": "Passwords", - "keys": "Keys", - "otp": "OTP" - }, - "passwordManager": { - "title": "Password Manager", - "add": "Add Password", - "namePlaceholder": "e.g. Production Server", - "passwordPlaceholder": "Enter password", - "passwordUnchanged": "Leave empty to keep current password", - "noPasswords": "No passwords stored.", - "deleteTitle": "Delete Password", - "deleteConfirm": "Are you sure you want to delete password '{{name}}'?" - }, - "activityBar": { - "moveTo": "Move to", - "leftTop": "Left Top", - "leftBottom": "Left Bottom", - "rightTop": "Right Top", - "rightBottom": "Right Bottom", - "showLabel": "Show Tool Name" - }, - "otp": { - "title": "Two-Factor Authentication", - "description": "\"{{name}}\" requires additional verification.", - "submit": "Verify", - "cancel": "Cancel", - "cancelled": "2FA authentication cancelled", - "currentCode": "Current Code", - "sendToInput": "Send to Input", - "copyCode": "Copy Code", - "copied": "Copied", - "generateCode": "Generate Code", - "loadingCode": "Loading code", - "expiresIn": "{{seconds}}s remaining", - "hotpHint": "Generate on demand. The counter advances each time." - }, - "otpManager": { - "title": "OTP Entries", - "add": "Add", - "noEntries": "No OTP entries", - "issuerPlaceholder": "Issuer (e.g. GitHub)", - "usernamePlaceholder": "Username (e.g. user@example.com)", - "secretPlaceholder": "Secret (Base32)", - "secretUnchanged": "Secret unchanged", - "advanced": "Advanced Settings", - "algorithm": "Algorithm", - "digits": "Digits", - "period": "Period (seconds)", - "counter": "Counter", - "deleteTitle": "Delete OTP Entry", - "deleteConfirm": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.", - "view": "View", - "hide": "Hide", - "scanQr": "Scan QR", - "showCodes": "Show codes", - "hideCodes": "Hide codes", - "scanningQr": "Scanning...", - "qrImportFailed": "Failed to import from QR code", - "selectQrImage": "Select QR Code Image" } } - diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index 1301dede..d5f023be 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -1,768 +1,772 @@ { + "about": { + "close": "关闭", + "description": "基于 Tauri 和 React 构建的现代高性能 SSH 客户端。", + "issues": "问题反馈", + "website": "官网" + }, + "activityBar": { + "leftBottom": "左侧底部", + "leftTop": "左侧顶部", + "moveTo": "移动至", + "rightBottom": "右侧底部", + "rightTop": "右侧顶部", + "showLabel": "显示工具名称" + }, + "app": { + "newConnection": "新建连接", + "noActiveSessions": "暂无活动会话" + }, "common": { - "cancel": "取消", - "save": "保存", - "saving": "保存中...", - "delete": "删除", - "remove": "移除", - "minutes": "分钟", - "seconds": "秒", - "hours": "小时", - "days": "天", - "weeks": "周", - "months": "月", - "years": "年", "add": "添加", + "cancel": "取消", + "close": "关闭", + "days": "天", + "delete": "删除", "deleting": "删除中...", "deletingConfirm": "确定要删除“{{name}}”吗?", "deletingConfirmDesc": "此操作不可撤销。", - "deletingSuccess": "删除成功!", "deletingFailed": "删除失败:{{error}}", - "unknownWindowType": "未知窗口类型", + "deletingSuccess": "删除成功!", + "edit": "编辑", + "hours": "小时", "loading": "加载中...", - "close": "关闭", - "edit": "编辑" + "minutes": "分钟", + "months": "月", + "remove": "移除", + "save": "保存", + "saving": "保存中...", + "seconds": "秒", + "unknownWindowType": "未知窗口类型", + "weeks": "周", + "years": "年" + }, + "dialog": { + "advancedConfig": "高级配置", + "authentication": "认证方式", + "autoFillOtp": "自动填入验证码", + "baudRate": "波特率", + "cancel": "取消", + "confirmClose": "退出应用程序", + "confirmCloseAction": "退出", + "confirmCloseDesc": "当前有活动会话。确定要退出吗?所有会话将被断开连接。", + "connectionName": "连接名称", + "connectionSaved": "连接保存成功!", + "dataBits": "数据位", + "description": "描述", + "descriptionPlaceholder": "例如:项目 X 的 Web 服务器", + "editConnection": "编辑连接", + "group": "分组", + "host": "主机", + "hostRequired": "主机地址不能为空", + "icon": "图标", + "localTerminal": "本地终端", + "manageKeys": "管理密钥...", + "managePasswords": "管理密码...", + "newConnection": "新建连接", + "newGroupPlaceholder": "新建分组...", + "noKeys": "暂无密钥", + "noOtp": "无", + "noPasswords": "暂无密码", + "noProxy": "不使用代理", + "none": "无", + "openLocalShell": "打开本地 Shell 会话", + "parity": "校验位", + "parityEven": "偶校验 (Even)", + "parityMark": "标记 (Mark)", + "parityNone": "无 (None)", + "parityOdd": "奇校验 (Odd)", + "paritySpace": "空格 (Space)", + "password": "密码", + "port": "端口", + "privateKey": "私钥", + "proxySelect": "代理", + "quickConnectLocal": "快速连接 (不保存)", + "save": "保存", + "saving": "保存中...", + "selectKey": "选择密钥", + "selectOtp": "OTP 条目", + "selectPassword": "选择密码", + "selectShell": "选择终端", + "serial": "串口", + "serialPort": "串口名", + "serialPortPlaceholder": "例如 COM1 或 /dev/ttyS0", + "serverPlaceholder": "我的服务器", + "shellBash": "Bash", + "shellCmd": "命令提示符", + "shellCustom": "自定义...", + "shellPath": "终端路径", + "shellPathPlaceholder": "例如:/bin/zsh 或 pwsh.exe", + "shellPowerShell": "PowerShell", + "shellWsl": "WSL", + "sshConnection": "SSH 连接", + "stopBits": "停止位", + "twoFactorAuth": "双因素认证", + "username": "用户名", + "workingDir": "工作目录", + "workingDirPlaceholder": "例如:C:\\Projects 或 ~/workspace" + }, + "error": { + "reloadApplication": "重新加载应用", + "somethingWentWrong": "出现错误" + }, + "fileExplorer": { + "alwaysUpload": "总是上传", + "atime": "访问时间", + "autoSyncTerminalPath": "自动同步终端路径", + "cmCopyDirPath": "复制目录路径", + "cmCopyName": "复制名称", + "cmCopyPath": "复制路径", + "cmDelete": "删除", + "cmDownload": "下载...", + "cmMove": "移动到...", + "cmOpen": "打开", + "cmOpenDefault": "使用默认编辑器打开", + "cmProperties": "属性...", + "cmRefresh": "刷新", + "cmRename": "重命名...", + "cmTerminalDirPath": "将目录路径发送到终端", + "cmTerminalName": "将名称发送到终端", + "cmTerminalPath": "将路径发送到终端", + "cmUpload": "上传到当前文件夹...", + "connectToSession": "连接会话以浏览文件", + "copyDirPath": "复制目录路径", + "cwdTrackingUnavailable": "目录跟踪不可用(Shell 集成不受支持)", + "delete": "删除", + "downloadSelected": "下载选中", + "editPath": "点击编辑路径", + "emptyDirectory": "空目录", + "file": "文件", + "fileLabel": "文件:", + "fileModified": "文件已修改", + "folder": "文件夹", + "folderLabel": "目录:", + "general": "常规", + "gid": "GID", + "goUp": "返回上级", + "group": "组", + "loading": "加载中...", + "location": "位置", + "moveTo": "将“{{name}}”移动到 (完整路径):", + "mtime": "修改时间", + "newFile": "新建文件", + "newFileName": "请输入新文件名:", + "newFolder": "新建文件夹", + "newFolderName": "请输入新文件夹名:", + "newSymlink": "新建符号链接", + "noFileSelected": "未选中文件", + "octal": "八进制", + "openAfterCreateFile": "创建后打开文件", + "openAfterCreateFolder": "创建后打开目录", + "owner": "所有者", + "permGroup": "组", + "permOther": "其他", + "permSticky": "粘性", + "permUser": "用户", + "permissions": "权限", + "properties": "属性", + "propertiesOf": "{{name}} 的属性", + "refresh": "刷新", + "renameTo": "将“{{name}}”重命名为:", + "sendDirPathToTerminal": "将目录路径发送到终端", + "sendToTerminal": "将当前路径复制到终端", + "shellScript": "Shell 脚本", + "size": "大小", + "special": "特殊", + "sureDelete": "确定要删除“{{name}}”吗?", + "symlinkName": "符号链接名称", + "symlinkTarget": "符号链接目标", + "syncFailed": "同步终端路径失败", + "syncTerminalPath": "同步终端路径", + "totalItems": "共 {{count}} 项", + "type": "类型", + "uid": "UID", + "upload": "上传文件", + "uploadFolder": "上传文件夹", + "uploadOnce": "上传一次", + "uploadPrompt": "远程文件已修改,是否上传更改?" + }, + "fileTransfer": { + "clearAll": "清除全部", + "clearCompleted": "清除已完成", + "completed": "已完成", + "downloadPath": "下载目录", + "error": "错误", + "noTransfers": "无传输记录", + "openDownloadPath": "打开下载目录", + "savePath": "保存至:{{path}}", + "transferring": "传输中" + }, + "lockScreen": { + "message": "由于长时间无操作,应用程序已自动锁定。", + "passwordPlaceholder": "请输入解锁密码", + "title": "应用程序已锁定", + "unlock": "解锁", + "wrongPassword": "密码错误,请重试。" }, "menu": { - "file": "文件", - "edit": "编辑", - "view": "视图", - "terminal": "终端", - "help": "帮助", - "newSshConnection": "新建 SSH 连接", - "exit": "退出", - "copy": "复制", - "paste": "粘贴", - "selectAll": "全选", - "layout": "布局", - "theme": "主题", - "language": "语言", - "zoomIn": "放大", - "zoomOut": "缩小", - "resetZoom": "重置缩放", - "resetLayout": "重置面板布局", - "fullscreen": "全屏", - "minimize": "最小化", - "maximize": "最大化", - "restore": "还原", - "newLocalTerminal": "新建本地终端", - "documentation": "文档", + "about": "关于", "checkForUpdates": "检查更新", + "copy": "复制", + "documentation": "文档", + "edit": "编辑", + "exit": "退出", + "file": "文件", + "fullscreen": "全屏", + "help": "帮助", + "language": "语言", + "layout": "布局", + "maximize": "最大化", + "minimize": "最小化", + "newLocalTerminal": "新建本地终端", + "newSshConnection": "新建 SSH 连接", + "paste": "粘贴", + "resetLayout": "重置面板布局", + "resetZoom": "重置缩放", + "restore": "还原", + "selectAll": "全选", + "terminal": "终端", + "theme": "主题", + "view": "视图", "viewLogs": "查看日志", - "about": "关于" - }, - "panel": { - "fileExplorer": "文件浏览器", - "fileTransfer": "文件传输", - "network": "网络", - "savedConnections": "已保存的连接", - "activeSessions": "活动会话", - "commandHistory": "命令历史", - "quickCommands": "快捷命令", - "noSavedConnections": "暂无已保存的连接", - "noActiveSessions": "暂无活动会话", - "noCommandsYet": "暂无命令记录", - "resourceMonitor": "资源监控", - "resourceMonitorNoSession": "连接 SSH 会话以查看资源使用情况", - "resourceMonitorDisabled": "请在设置中启用「显示远程资源统计」以使用此功能", - "resourceMonitorError": "获取资源统计失败" - }, - "resourceMonitor": { - "system": "系统", - "hostname": "主机名称", - "uptime": "运行时长", - "os": "操作系统", - "arch": "系统架构", - "systemLoad": "系统负载", - "cpu": "CPU", - "memory": "内存", - "network": "网络", - "disk": "磁盘", - "used": "已使用", - "available": "剩余", - "cached": "缓存", - "send": "发送", - "receive": "接收", - "nic": "网卡", - "mountPath": "挂载路径", - "totalSize": "总计大小", - "availSpace": "剩余空间", - "usagePercent": "使用占比", - "day": "{{count}}天", - "days": "{{count}}天", - "Load1": "1分钟", - "Load5": "5分钟", - "Load15": "15分钟" + "zoomIn": "放大", + "zoomOut": "缩小" }, "network": { - "proxy": "代理", - "tunnels": "隧道", - "proxyConfig": "代理配置", - "tunnelConfig": "隧道配置", - "newProxy": "新建代理", - "editProxy": "编辑代理", - "newTunnel": "新建隧道", - "editTunnel": "编辑隧道", - "tunnelNamePlaceholder": "例如:Web 服务器的本地端口", - "proxyDialogDescription": "配置可复用的代理,可在任意已保存连接的高级设置中关联使用。", - "tunnelDialogDescription": "创建 SSH 隧道,通过已保存的连接转发流量。", - "proxySectionDescription": "独立代理配置,可在连接的高级配置中关联使用。", - "tunnelSectionDescription": "为特定连接管理本地、远程或动态端口转发。", - "noProxyConfigs": "暂无代理配置", - "noTunnels": "暂无隧道配置", - "proxyEmptyHint": "创建代理配置后,可在连接的高级设置中选择使用。", - "tunnelEmptyHint": "为特定连接创建本地、远程或动态端口转发。", - "noConnections": "暂无可用连接", - "noConnectionsHint": "请先创建连接,再配置隧道。", - "bindConnectionFirst": "请先创建连接后再新增。", - "alreadyConfigured": "已配置", - "proxyName": "代理名称", - "proxyNamePlaceholder": "例如:公司 SOCKS5", - "proxyNameRequired": "请输入代理名称。", - "proxyUsername": "用户名", - "proxyUsernamePlaceholder": "可选", - "proxyPassword": "密码", - "proxyPasswordPlaceholder": "可选", - "proxyPasswordKeep": "留空保留当前密码", - "tunnelName": "隧道名称", - "tunnelNameHint": "显示在隧道列表中,建议直接写明用途。", - "tunnelNameRequired": "请输入隧道名称。", - "tunnelType": "隧道类型", - "localTunnel": "本地", - "remoteTunnel": "远程", - "dynamicTunnel": "动态", - "selectedConnection": "关联连接", - "connectionPickerPlaceholder": "选择一个连接", - "searchConnections": "搜索连接名称、分组或主机...", - "ungroupedConnections": "未分组", - "connectionRequired": "请选择一个连接。", - "connectionMissing": "连接已删除", - "proxyHostRequired": "请输入代理主机。", - "proxyPortRequired": "请输入有效的代理端口。", - "tunnelOpen": "已打开", - "tunnelClosed": "已关闭", - "tunnelListenPortRequired": "请输入有效的监听端口。", - "tunnelTargetRequired": "请输入目标主机和端口。", - "tunnelConnectionHint": "连接建立后自动打开此隧道。", "advancedOptions": "高级选项", - "savedConnection": "已保存的连接", - "listenPort": "监听端口", - "targetHost": "目标主机", - "targetPort": "目标端口", + "alreadyConfigured": "已配置", "autoOpen": "连接时自动打开", + "bindAddress": "监听范围", + "bindAddressHint": "决定监听端口只对当前设备可见,还是对其他主机也可见。", + "bindAllInterfaces": "所有网络接口", + "bindAllInterfacesHint": "监听 0.0.0.0,允许局域网或其他主机访问。", + "bindConnectionFirst": "请先创建连接后再新增。", "bindLocalhost": "仅绑定到本地回环地址", + "bindLocalhostOnly": "仅本地回环地址", + "bindLocalhostOnlyHint": "只监听 127.0.0.1,更安全,默认推荐。", + "connectionMissing": "连接已删除", + "connectionPickerPlaceholder": "选择一个连接", + "connectionRequired": "请选择一个连接。", + "dynamicTunnel": "动态", + "editProxy": "编辑代理", + "editTunnel": "编辑隧道", + "listenPort": "监听端口", + "listenPortDynamic": "SOCKS 监听端口", + "listenPortDynamicHint": "该端口会在当前设备上提供一个 SOCKS5 代理入口。", "listenPortLocal": "本地监听端口", "listenPortLocalHint": "该端口会在当前设备上监听,并把流量转发到远端目标服务。", "listenPortRemote": "远端监听端口", "listenPortRemoteHint": "该端口会在远端 SSH 主机上监听,并把流量转发回本地服务。", - "listenPortDynamic": "SOCKS 监听端口", - "listenPortDynamicHint": "该端口会在当前设备上提供一个 SOCKS5 代理入口。", + "localTunnel": "本地", + "newProxy": "新建代理", + "newTunnel": "新建隧道", + "noConnections": "暂无可用连接", + "noConnectionsHint": "请先创建连接,再配置隧道。", + "noProxyConfigs": "暂无代理配置", + "noTunnels": "暂无隧道配置", + "proxy": "代理", + "proxyConfig": "代理配置", + "proxyDialogDescription": "配置可复用的代理,可在任意已保存连接的高级设置中关联使用。", + "proxyEmptyHint": "创建代理配置后,可在连接的高级设置中选择使用。", + "proxyHostRequired": "请输入代理主机。", + "proxyName": "代理名称", + "proxyNamePlaceholder": "例如:公司 SOCKS5", + "proxyNameRequired": "请输入代理名称。", + "proxyPassword": "密码", + "proxyPasswordKeep": "留空保留当前密码", + "proxyPasswordPlaceholder": "可选", + "proxyPortRequired": "请输入有效的代理端口。", + "proxySectionDescription": "独立代理配置,可在连接的高级配置中关联使用。", + "proxyUsername": "用户名", + "proxyUsernamePlaceholder": "可选", + "remoteTunnel": "远程", + "savedConnection": "已保存的连接", + "searchConnections": "搜索连接名称、分组或主机...", + "selectedConnection": "关联连接", + "targetHost": "目标主机", "targetHostLocal": "目标服务地址", "targetHostLocalHint": "填写要访问的远端服务地址,例如远端机器上的内网服务。", "targetHostRemote": "本地服务地址", "targetHostRemoteHint": "填写当前设备上的服务地址,远端收到流量后会转发到这里。", + "targetPort": "目标端口", "targetPortLocal": "目标服务端口", "targetPortLocalHint": "远端目标服务正在监听的端口。", "targetPortRemote": "本地服务端口", "targetPortRemoteHint": "当前设备上的目标服务端口。", + "tunnelClosed": "已关闭", + "tunnelConfig": "隧道配置", + "tunnelConnectionHint": "连接建立后自动打开此隧道。", + "tunnelDialogDescription": "创建 SSH 隧道,通过已保存的连接转发流量。", + "tunnelEmptyHint": "为特定连接创建本地、远程或动态端口转发。", + "tunnelListenPortRequired": "请输入有效的监听端口。", + "tunnelName": "隧道名称", + "tunnelNameHint": "显示在隧道列表中,建议直接写明用途。", + "tunnelNamePlaceholder": "例如:Web 服务器的本地端口", + "tunnelNameRequired": "请输入隧道名称。", + "tunnelOpen": "已打开", "tunnelPreview": "转发结果预览", + "tunnelPreviewDynamic": "SOCKS5 on {{bindHost}}:{{listenPort}}", "tunnelPreviewLocal": "{{bindHost}}:{{listenPort}} → {{targetHost}}:{{targetPort}}", "tunnelPreviewRemote": "remote ({{bindHost}}):{{listenPort}} → {{targetHost}}:{{targetPort}}", - "tunnelPreviewDynamic": "SOCKS5 on {{bindHost}}:{{listenPort}}", - "bindAddress": "监听范围", - "bindAddressHint": "决定监听端口只对当前设备可见,还是对其他主机也可见。", - "bindLocalhostOnly": "仅本地回环地址", - "bindLocalhostOnlyHint": "只监听 127.0.0.1,更安全,默认推荐。", - "bindAllInterfaces": "所有网络接口", - "bindAllInterfacesHint": "监听 0.0.0.0,允许局域网或其他主机访问。" + "tunnelSectionDescription": "为特定连接管理本地、远程或动态端口转发。", + "tunnelTargetRequired": "请输入目标主机和端口。", + "tunnelType": "隧道类型", + "tunnels": "隧道", + "ungroupedConnections": "未分组" }, - "dialog": { - "confirmClose": "退出应用程序", - "confirmCloseDesc": "当前有活动会话。确定要退出吗?所有会话将被断开连接。", - "confirmCloseAction": "退出", - "editConnection": "编辑连接", - "newConnection": "新建连接", - "localTerminal": "本地终端", - "openLocalShell": "打开本地 Shell 会话", - "sshConnection": "SSH 连接", - "connectionName": "连接名称", - "icon": "图标", - "group": "分组", - "host": "主机", - "port": "端口", - "username": "用户名", - "authentication": "认证方式", - "password": "密码", - "privateKey": "私钥", - "selectKey": "选择密钥", - "noKeys": "暂无密钥", - "manageKeys": "管理密钥...", - "selectPassword": "选择密码", - "noPasswords": "暂无密码", - "managePasswords": "管理密码...", - "description": "描述", - "descriptionPlaceholder": "例如:项目 X 的 Web 服务器", - "serverPlaceholder": "我的服务器", - "newGroupPlaceholder": "新建分组...", - "none": "无", - "hostRequired": "主机地址不能为空", - "advancedConfig": "高级配置", - "proxySelect": "代理", - "noProxy": "不使用代理", - "twoFactorAuth": "双因素认证", - "selectOtp": "OTP 条目", - "noOtp": "无", - "autoFillOtp": "自动填入验证码", - "connectionSaved": "连接保存成功!", + "otp": { "cancel": "取消", - "save": "保存", - "saving": "保存中...", - "selectShell": "选择终端", - "shellPowerShell": "PowerShell", - "shellCmd": "命令提示符", - "shellBash": "Bash", - "shellWsl": "WSL", - "shellCustom": "自定义...", - "shellPath": "终端路径", - "shellPathPlaceholder": "例如:/bin/zsh 或 pwsh.exe", - "workingDir": "工作目录", - "workingDirPlaceholder": "例如:C:\\Projects 或 ~/workspace", - "quickConnectLocal": "快速连接 (不保存)", - "serial": "串口", - "serialPort": "串口名", - "serialPortPlaceholder": "例如 COM1 或 /dev/ttyS0", - "baudRate": "波特率", - "dataBits": "数据位", - "parity": "校验位", - "parityNone": "无 (None)", - "parityOdd": "奇校验 (Odd)", - "parityEven": "偶校验 (Even)", - "parityMark": "标记 (Mark)", - "paritySpace": "空格 (Space)", - "stopBits": "停止位" + "cancelled": "双因素认证已取消", + "copied": "已复制", + "copyCode": "复制验证码", + "currentCode": "当前验证码", + "description": "\"{{name}}\" 需要额外的身份验证。", + "expiresIn": "剩余 {{seconds}} 秒", + "generateCode": "生成验证码", + "hotpHint": "按需生成验证码,每次生成都会推进计数器。", + "loadingCode": "正在加载验证码", + "sendToInput": "发送到输入框", + "submit": "验证", + "title": "双因素认证" }, - "about": { - "description": "基于 Tauri 和 React 构建的现代高性能 SSH 客户端。", - "website": "官网", - "issues": "问题反馈", - "close": "关闭" + "otpManager": { + "add": "添加", + "advanced": "高级设置", + "algorithm": "算法", + "counter": "计数器", + "deleteConfirm": "确定要删除「{{name}}」吗?此操作无法撤销。", + "deleteTitle": "删除 OTP 条目", + "digits": "位数", + "hide": "隐藏", + "hideCodes": "隐藏验证码", + "issuerPlaceholder": "发行方(如 GitHub)", + "noEntries": "暂无 OTP 条目", + "period": "时间间隔(秒)", + "qrImportFailed": "从二维码导入失败", + "scanQr": "扫描二维码", + "scanningQr": "扫描中...", + "secretPlaceholder": "密钥(Base32 编码)", + "secretUnchanged": "密钥未更改", + "selectQrImage": "选择二维码图片", + "showCodes": "显示验证码", + "title": "OTP 条目", + "usernamePlaceholder": "用户名(如 user@example.com)", + "view": "查看" }, - "terminal": { - "newConnection": "新建连接", - "sessionDisconnected": "会话已断开", - "pressEnterToReconnect": "按回车键重新连接", - "reconnecting": "正在重新连接...", - "reconnectFailed": "重新连接失败", - "linkOpenHint": "按住 {{modifier}} 并点击以打开链接", - "actionLinkKind_ip": "IPv4", - "actionLinkKind_hostPort": "Host:Port", - "actionLinkKind_archive": "压缩文件", - "actionLinkKind_url": "URL", - "actionLinkKind_file": "文件", - "actionLinkKind_custom": "匹配", - "actionLinkAltClickHint": "Alt+单击:更多动作", - "actionLinkDefaultBadge": "默认", - "click": "单击" + "panel": { + "activeSessions": "活动会话", + "commandHistory": "命令历史", + "fileExplorer": "文件浏览器", + "fileTransfer": "文件传输", + "network": "网络", + "noActiveSessions": "暂无活动会话", + "noCommandsYet": "暂无命令记录", + "noSavedConnections": "暂无已保存的连接", + "quickCommands": "快捷命令", + "resourceMonitor": "资源监控", + "resourceMonitorDisabled": "请在设置中启用「显示远程资源统计」以使用此功能", + "resourceMonitorError": "获取资源统计失败", + "resourceMonitorNoSession": "连接 SSH 会话以查看资源使用情况", + "savedConnections": "已保存的连接" }, - "terminalCtx": { - "copy": "复制", - "paste": "粘贴", - "pasteSelectedText": "粘贴选定的文本", - "find": "查找...", - "searchOnline": "在线搜索", - "translate": "翻译", - "clearScreen": "清屏", - "clearAll": "全部清除", - "selectAll": "全选" - }, - "fileExplorer": { - "goUp": "返回上级", - "refresh": "刷新", - "connectToSession": "连接会话以浏览文件", - "loading": "加载中...", - "emptyDirectory": "空目录", - "totalItems": "共 {{count}} 项", - "sendToTerminal": "将当前路径复制到终端", - "cmRefresh": "刷新", - "cmOpen": "打开", - "cmOpenDefault": "使用默认编辑器打开", - "cmDelete": "删除", - "cmRename": "重命名...", - "cmMove": "移动到...", - "cmProperties": "属性...", - "cmDownload": "下载...", - "cmUpload": "上传到当前文件夹...", - "cmCopyDirPath": "复制目录路径", - "cmCopyName": "复制名称", - "cmCopyPath": "复制路径", - "cmTerminalDirPath": "将目录路径发送到终端", - "cmTerminalName": "将名称发送到终端", - "cmTerminalPath": "将路径发送到终端", - "sureDelete": "确定要删除“{{name}}”吗?", - "renameTo": "将“{{name}}”重命名为:", - "moveTo": "将“{{name}}”移动到 (完整路径):", - "propertiesOf": "{{name}} 的属性", - "size": "大小", - "permissions": "权限", - "general": "常规", - "file": "文件", - "folder": "文件夹", - "shellScript": "Shell 脚本", - "location": "位置", - "mtime": "修改时间", - "atime": "访问时间", - "owner": "所有者", - "group": "组", - "type": "类型", - "special": "特殊", - "uid": "UID", - "gid": "GID", - "permUser": "用户", - "permGroup": "组", - "permOther": "其他", - "permSticky": "粘性", - "octal": "八进制", - "downloadSelected": "下载选中", - "upload": "上传文件", - "uploadFolder": "上传文件夹", - "newFile": "新建文件", - "newFolder": "新建文件夹", - "delete": "删除", - "newFileName": "请输入新文件名:", - "newFolderName": "请输入新文件夹名:", - "editPath": "点击编辑路径", - "noFileSelected": "未选中文件", - "fileLabel": "文件:", - "folderLabel": "目录:", - "openAfterCreateFile": "创建后打开文件", - "openAfterCreateFolder": "创建后打开目录", - "newSymlink": "新建符号链接", - "symlinkName": "符号链接名称", - "symlinkTarget": "符号链接目标", - "copyDirPath": "复制目录路径", - "sendDirPathToTerminal": "将目录路径发送到终端", - "properties": "属性", - "syncTerminalPath": "同步终端路径", - "autoSyncTerminalPath": "自动同步终端路径", - "syncFailed": "同步终端路径失败", - "cwdTrackingUnavailable": "目录跟踪不可用(Shell 集成不受支持)", - "fileModified": "文件已修改", - "uploadPrompt": "远程文件已修改,是否上传更改?", - "alwaysUpload": "总是上传", - "uploadOnce": "上传一次" + "passwordManager": { + "add": "添加密码", + "deleteConfirm": "确定要删除密码「{{name}}」吗?", + "deleteTitle": "删除密码", + "namePlaceholder": "例如:生产服务器", + "noPasswords": "暂无已存储的密码。", + "passwordPlaceholder": "输入密码", + "passwordUnchanged": "留空保持当前密码不变", + "title": "密码" }, "quickCommands": { - "label": "标签", - "command": "命令", "add": "添加", - "edit": "编辑", - "delete": "删除", - "errorLabelRequired": "标签名称不能为空", - "errorCommandRequired": "命令脚本不能为空", "addCommand": "添加快捷命令", - "editCommand": "编辑快捷命令", - "labelName": "标签名称", - "labelPlaceholder": "例如:列出文件", + "allCategories": "所有分类", + "appendHint": "点击后命令只会被放置在终端的输入行上供您检查,不会立即执行。", + "appendOnly": "追加到输入行", "category": "分类", "categoryPlaceholder": "例如:K8s", + "colorTag": "颜色标签", + "command": "命令", + "commandPlaceholder": "例如:ls -la\n使用 {{变量名}} 注入动态参数。", + "commandScript": "命令脚本", + "createCategory": "创建 \"{{name}}\"", + "delete": "删除", "description": "描述(可选)", "descriptionPlaceholder": "关于此命令的详细说明", - "colorTag": "颜色标签", - "pin": "置顶显示", - "executionMode": "执行模式", - "executeImmediately": "立即执行", - "appendOnly": "追加到输入行", + "edit": "编辑", + "editCommand": "编辑快捷命令", + "errorCommandRequired": "命令脚本不能为空", + "errorLabelRequired": "标签名称不能为空", "executeHint": "点击后命令将自动在终端回车执行。", - "appendHint": "点击后命令只会被放置在终端的输入行上供您检查,不会立即执行。", - "commandScript": "命令脚本", - "commandPlaceholder": "例如:ls -la\n使用 {{变量名}} 注入动态参数。", + "executeImmediately": "立即执行", + "executionMode": "执行模式", "fillVariables": "填写命令参数", + "label": "标签", + "labelName": "标签名称", + "labelPlaceholder": "例如:列出文件", + "newCategoryPlaceholder": "新建分类...", + "noCommandsFound": "未找到匹配的命令。", + "pin": "置顶显示", "run": "运行命令", "search": "搜索命令...", - "allCategories": "所有分类", - "uncategorized": "未分类", - "noCommandsFound": "未找到匹配的命令。", - "selectIcon": "选择图标", - "newCategoryPlaceholder": "新建分类...", "searchOrCreateCategory": "搜索或创建分类...", - "createCategory": "创建 \"{{name}}\"" + "selectIcon": "选择图标", + "uncategorized": "未分类" }, - "suggestions": { - "title": "联想补全", - "match": "条匹配", - "matches": "条匹配", - "select": "选择", - "execute": "执行", - "fill": "填充", - "dismiss": "关闭" + "recording": { + "recording": "录制中", + "saved": "录制已保存至 {{path}}", + "start": "开始录制", + "stop": "停止录制" + }, + "resourceMonitor": { + "Load1": "1分钟", + "Load15": "15分钟", + "Load5": "5分钟", + "arch": "系统架构", + "availSpace": "剩余空间", + "available": "剩余", + "cached": "缓存", + "cpu": "CPU", + "day": "{{count}}天", + "days": "{{count}}天", + "disk": "磁盘", + "hostname": "主机名称", + "memory": "内存", + "mountPath": "挂载路径", + "network": "网络", + "nic": "网卡", + "os": "操作系统", + "receive": "接收", + "send": "发送", + "system": "系统", + "systemLoad": "系统负载", + "totalSize": "总计大小", + "uptime": "运行时长", + "usagePercent": "使用占比", + "used": "已使用" }, "savedConnections": { - "connect": "连接", - "edit": "编辑", - "delete": "删除", - "host": "主机", - "port": "端口", - "user": "用户", "auth": "认证", - "group": "分组", - "connecting": "正在连接 {{name}}…", - "connectionFailed": "连接失败:{{error}}", - "deleteFailed": "删除连接失败:{{error}}", - "deleteConfirm": "确定要删除「{{name}}」吗?此操作不可撤销。", - "filter": "筛选...", - "noResults": "无匹配结果", - "newConnection": "新建连接", - "importSessions": "导入会话", - "importFrom": "导入来源...", - "importSelectSource": "请选择要导入会话的应用", - "windtermHint": ".wind/profiles/default.v10/terminal/user.sessions", - "importSuccess": "成功导入 {{count}} 个会话", - "importFailed": "导入失败:{{error}}", - "newFolder": "新建文件夹", - "newSubfolder": "新建子文件夹", - "renameFolder": "重命名文件夹", - "deleteFolder": "删除文件夹", - "deleteFolderConfirm": "确定要删除文件夹「{{name}}」及其所有内容吗?", - "rename": "重命名", - "copy": "复制", "clearAll": "清空所有", "clearAllConfirm": "确定要清空所有连接和文件夹吗?此操作不可撤销。", "clearAllSuccess": "已清空所有连接", + "connect": "连接", + "connecting": "正在连接 {{name}}…", + "connectionFailed": "连接失败:{{error}}", + "connectionName": "连接名称", + "copy": "复制", + "delete": "删除", + "deleteConfirm": "确定要删除「{{name}}」吗?此操作不可撤销。", + "deleteFailed": "删除连接失败:{{error}}", + "deleteFolder": "删除文件夹", + "deleteFolderConfirm": "确定要删除文件夹「{{name}}」及其所有内容吗?", + "edit": "编辑", + "filter": "筛选...", "folderName": "文件夹名称", "folderNamePlaceholder": "新文件夹...", - "connectionName": "连接名称", + "group": "分组", + "host": "主机", + "importFailed": "导入失败:{{error}}", + "importFrom": "导入来源...", + "importSelectSource": "请选择要导入会话的应用", + "importSessions": "导入会话", + "importSuccess": "成功导入 {{count}} 个会话", + "newConnection": "新建连接", + "newFolder": "新建文件夹", + "newSubfolder": "新建子文件夹", + "noResults": "无匹配结果", + "port": "端口", + "rename": "重命名", + "renameFolder": "重命名文件夹", "sortDefault": "自定义顺序", "sortNameAsc": "名称 A → Z", - "sortNameDesc": "名称 Z → A" + "sortNameDesc": "名称 Z → A", + "user": "用户", + "windtermHint": ".wind/profiles/default.v10/terminal/user.sessions" }, - "app": { - "noActiveSessions": "暂无活动会话", - "newConnection": "新建连接" - }, - "statusBar": { - "lock": "锁定屏幕", - "cpuUsage": "CPU 占用", - "memUsage": "内存占用" - }, - "error": { - "somethingWentWrong": "出现错误", - "reloadApplication": "重新加载应用" - }, - "fileTransfer": { - "noTransfers": "无传输记录", - "clearCompleted": "清除已完成", - "clearAll": "清除全部", - "transferring": "传输中", - "completed": "已完成", - "error": "错误", - "savePath": "保存至:{{path}}", - "openDownloadPath": "打开下载目录", - "downloadPath": "下载目录" - }, - "recording": { - "start": "开始录制", - "stop": "停止录制", - "recording": "录制中", - "saved": "录制已保存至 {{path}}" + "securityAuth": { + "keys": "密钥", + "otp": "双因素", + "passwords": "密码", + "title": "安全认证" }, "settings": { - "title": "设置", - "general": "常规", - "appearance": "外观", - "proxy": "代理", - "search": "搜索", - "translation": "翻译", - "security": "安全", - "terminal": "终端", - "interaction": "交互", - "startupBehavior": "启动行为", - "startupRestore": "启动时恢复先前的会话标签", - "startupRestoreDesc": "自动重新打开在应用程序上次关闭时处于活动状态的终端会话。", - "defaultShell": "默认本地 Shell", - "defaultShellDesc": "创建新的本地终端会话时使用的命令行 shell。", - "windowBehavior": "窗口行为", - "minimizeToTray": "关闭时最小化到系统托盘", - "minimizeToTrayDesc": "窗口关闭时保持应用程序在后台运行。", - "confirmOnClose": "关闭时确认", - "confirmOnCloseDesc": "在有活动会话时关闭应用程序时显示确认对话框。", - "noCustomEngines": "未定义自定义搜索引擎。", - "theme": "界面主题", - "themeDesc": "选择应用程序界面的颜色主题。", - "terminalTheme": "终端主题", - "terminalThemeDesc": "选择终端的颜色主题。选择「跟随界面主题」可使用与应用程序相同的主题。", - "followUiTheme": "跟随界面主题", - "language": "语言", - "languageDesc": "选择应用程序界面的显示语言。", - "defaultLocalShell": "默认本地 Shell", - "defaultLocalShellDesc": "打开本地终端时使用的 Shell 路径。", - "credentialStorage": "凭据存储", - "sessionSecurity": "会话安全", - "enableProxy": "启用代理", - "enableProxyDesc": "启用应用程序的代理。", - "fontBuiltIn": "内置", - "fontFamily": "字体系列", - "fontFamilyDesc": "终端和应用程序 UI 中使用的字体系列。最顶部的字体优先级最高。", - "fontPrimary": "首选字体", - "fontFallback": "备选字体", - "addFallbackFont": "添加备选字体", - "fontSize": "终端字体大小 (px)", - "uiFontSize": "界面字体大小 (px)", - "cursorStyle": "光标样式", - "cursorBlock": "块", - "cursorUnderline": "下划线", - "cursorBar": "竖线", - "cursorBlink": "光标闪烁", - "fontLigatures": "启用字体连字", - "fontLigaturesDesc": "将多个字符组合成单个排版字形。", - "scrollbackLines": "回滚缓冲区 (行)", - "scrollbackLinesDesc": "保留在内存中以供向上滚动的行数。", - "keepAliveInterval": "Keep-Alive 间隔 (秒)", - "keepAliveIntervalDesc": "每隔 X 秒发送 SSH keep-alive 数据包。设置为 0 以禁用。", - "hardwareAcceleration": "硬件加速", - "hardwareAccelerationDesc": "使用 GPU 进行终端渲染 (WebGL/Canvas)。需要重启。", - "showRemoteStats": "显示远程资源信息", - "showRemoteStatsDesc": "在资源监控面板显示当前 SSH 主机的资源使用情况。", - "remoteStatsInterval": "资源采集间隔(秒)", - "remoteStatsIntervalDesc": "从远程主机采集资源使用情况的频率。默认 3 秒。", "actionLinks": "快捷动作", "actionLinksDesc": "识别终端输出中的 IP、压缩包、host:port 和路径,并提供快捷操作。Ctrl/Cmd + 单击执行默认动作,Alt + 单击查看所有动作。", - "actionLinksMatchers": "启用的匹配器", - "actionLinksMatcherIpv4": "IPv4 地址", - "actionLinksMatcherIpv4Desc": "ping、traceroute、ssh、curl", - "actionLinksMatcherHostPort": "Host:Port", - "actionLinksMatcherHostPortDesc": "curl、nc -vz、telnet", "actionLinksMatcherArchive": "压缩文件", "actionLinksMatcherArchiveDesc": "解压、查看内容", - "clipboard": "剪贴板和选择", - "copyOnSelect": "选中即复制", - "copyOnSelectDesc": "在终端中选中文本时自动将其复制到剪贴板。", - "rightClickPaste": "右键粘贴", - "rightClickPasteDesc": "在终端中右键点击时从剪贴板粘贴文本。", - "wordSeparators": "单词分隔符", - "wordSeparatorsDesc": "双击选中文本时断开单词的字符。", - "encoding": "数据编码", - "defaultEncoding": "默认终端编码", - "defaultEncodingDesc": "终端 PTY 流使用的字符编码。", - "terminalShortcuts": "终端快捷键", - "terminalShortcutsDesc": "在终端内使用的快捷操作。", - "globalShortcuts": "全局快捷键", - "globalShortcutsDesc": "在应用程序任何位置都可用的快捷键操作。", - "shortcutCategories": { - "terminal": "终端操作", - "tab": "标签与会话", - "view": "视图与布局", - "special": "特殊功能" - }, - "shortcutLabels": { - "newSession": "新建 SSH 会话", - "newLocalTerminal": "新建本地终端", - "closeTab": "关闭当前标签", - "nextTab": "下一个标签", - "prevTab": "上一个标签", - "switchTab": "切换到标签 1-9", - "toggleLeftSidebar": "切换左侧边栏", - "toggleRightSidebar": "切换右侧边栏", - "zoomIn": "放大", - "zoomOut": "缩小", - "resetZoom": "重置缩放", - "toggleFullscreen": "切换全屏", - "openSettings": "打开设置", - "lockScreen": "锁定屏幕" - }, - "transfer": "传输", - "downloadThreads": "下载线程数", - "downloadThreadsDesc": "文件下载的并行线程数 (1-10)。", - "uploadThreads": "上传线程数", - "uploadThreadsDesc": "文件上传的并行线程数 (1-10)。", - "duplicateStrategy": "同名文件处理策略", - "duplicateStrategyDesc": "当目标位置已存在同名文件时的处理方式。", - "strategyOverwrite": "覆盖", - "strategySkip": "跳过", - "strategyRename": "重命名(添加后缀)", - "strategyAsk": "每次询问", - "preserveTimestamps": "保留时间戳", - "preserveTimestampsDesc": "传输文件时保留原始修改时间。", - "resumeBrokenTransfer": "断点续传", - "resumeBrokenTransferDesc": "尝试恢复未完成的文件传输而非重新开始。", - "defaultFilePermissions": "默认文件权限", - "defaultFilePermissionsDesc": "上传文件的八进制权限模式(例如 644)。", - "maxTransferRetries": "最大重试次数", - "maxTransferRetriesDesc": "传输失败时的重试次数 (0-10)。", - "transferBufferSize": "缓冲区大小 (KB)", - "transferBufferSizeDesc": "文件传输的读写缓冲区大小(千字节)。", - "downloadPath": "下载路径", - "downloadPathDesc": "下载文件的默认本地目录。留空则使用系统下载文件夹。", - "askSaveLocation": "下载前询问保存位置", - "askSaveLocationDesc": "每次下载文件前弹出对话框选择保存位置。", - "defaultEditor": "默认编辑器", - "defaultEditorDesc": "用于本地打开远程文件的程序。留空则使用系统默认应用程序。", - "recordingPath": "录制保存路径", - "recordingPathDesc": "终端录制文件的保存目录。留空则使用系统下载文件夹。", - "browse": "浏览", - "proxyEnable": "启用代理", - "proxyProtocol": "协议", - "proxyHost": "主机", - "proxyPort": "端口", - "defaultSearchEngine": "默认搜索引擎", - "defaultSearchEngineDesc": "双击或右键点击搜索时使用的主要引擎。", - "customEngines": "搜索引擎配置", - "engineName": "引擎名称", - "engineUrl": "URL 模板 (用 %s 代替查询词)", - "noEngines": "未定义自定义搜索引擎。", + "actionLinksMatcherHostPort": "Host:Port", + "actionLinksMatcherHostPortDesc": "curl、nc -vz、telnet", + "actionLinksMatcherIpv4": "IPv4 地址", + "actionLinksMatcherIpv4Desc": "ping、traceroute、ssh、curl", + "actionLinksMatchers": "启用的匹配器", + "addFallbackFont": "添加备选字体", + "addKey": "添加密钥", "addNew": "新增", - "translationProvider": "翻译提供商", - "targetLanguage": "目标语言", - "targetLanguageDesc": "将选中的文本翻译为此语言。", - "translationProviders": "翻译服务商", - "translationProvidersDesc": "配置翻译服务的 API 凭据。Google 和 Microsoft 无需配置即可使用。", "apiKey": "API 密钥", "appId": "App ID", "appKey": "App Key", - "configured": "已配置", - "notConfigured": "未配置", - "noKeyRequired": "无需密钥", + "appearance": "外观", + "askSaveLocation": "下载前询问保存位置", + "askSaveLocationDesc": "每次下载文件前弹出对话框选择保存位置。", "authentication": "系统认证与加密", - "useOsKeyring": "使用系统凭据管理器(OS Keyring)", - "useOsKeyringDesc": "将凭据安全地存储在系统原生钥匙串中 (macOS Keychain, Windows Credential Manager, Secret Service)。", - "requireMasterPassword": "需要主密码", - "requireMasterPasswordDesc": "使用主密码加密会话数据,必须在启动时输入才能解密。", - "sessionLock": "会话锁定", + "browse": "浏览", + "clipboard": "剪贴板和选择", + "configured": "已配置", + "confirmOnClose": "关闭时确认", + "confirmOnCloseDesc": "在有活动会话时关闭应用程序时显示确认对话框。", + "connectionSecurity": "连接安全", + "copyOnSelect": "选中即复制", + "copyOnSelectDesc": "在终端中选中文本时自动将其复制到剪贴板。", + "credentialStorage": "凭据存储", + "cursorBar": "竖线", + "cursorBlink": "光标闪烁", + "cursorBlock": "块", + "cursorStyle": "光标样式", + "cursorUnderline": "下划线", + "customEngines": "搜索引擎配置", + "defaultEditor": "默认编辑器", + "defaultEditorDesc": "用于本地打开远程文件的程序。留空则使用系统默认应用程序。", + "defaultEncoding": "默认终端编码", + "defaultEncodingDesc": "终端 PTY 流使用的字符编码。", + "defaultFilePermissions": "默认文件权限", + "defaultFilePermissionsDesc": "上传文件的八进制权限模式(例如 644)。", + "defaultLocalShell": "默认本地 Shell", + "defaultLocalShellDesc": "打开本地终端时使用的 Shell 路径。", + "defaultShell": "默认本地 Shell", + "defaultShellDesc": "创建新的本地终端会话时使用的命令行 shell。", + "deleteKey": "删除密钥", + "deleteKeyConfirm": "确定要删除密钥「{{name}}」吗?", + "downloadPath": "下载路径", + "downloadPathDesc": "下载文件的默认本地目录。留空则使用系统下载文件夹。", + "downloadThreads": "下载线程数", + "downloadThreadsDesc": "文件下载的并行线程数 (1-10)。", + "duplicateStrategy": "同名文件处理策略", + "duplicateStrategyDesc": "当目标位置已存在同名文件时的处理方式。", + "enableProxy": "启用代理", + "enableProxyDesc": "启用应用程序的代理。", "enableScreenLock": "启用锁屏保护", "enableScreenLockDesc": "开启后,应用程序会在启动时或空闲一段设定时间后自动锁定。", + "encoding": "数据编码", + "engineName": "引擎名称", + "engineUrl": "URL 模板 (用 %s 代替查询词)", + "engineUrlHint": "必须包含 %s,表示搜索词。", + "engineUrlInvalid": "当前模板缺少 %s,搜索时无法注入关键词。", + "followUiTheme": "跟随界面主题", + "fontBuiltIn": "内置", + "fontFallback": "备选字体", + "fontFamily": "字体系列", + "fontFamilyDesc": "终端和应用程序 UI 中使用的字体系列。最顶部的字体优先级最高。", + "fontLigatures": "启用字体连字", + "fontLigaturesDesc": "将多个字符组合成单个排版字形。", + "fontPrimary": "首选字体", + "fontSize": "终端字体大小 (px)", + "general": "常规", + "globalShortcuts": "全局快捷键", + "globalShortcutsDesc": "在应用程序任何位置都可用的快捷键操作。", + "hardwareAcceleration": "硬件加速", + "hardwareAccelerationDesc": "使用 GPU 进行终端渲染 (WebGL/Canvas)。需要重启。", + "hostKeyAccept": "接受 (自动添加)", + "hostKeyPolicy": "主机密钥策略", + "hostKeyPolicyDesc": "连接期间处理未知 SSH 主机密钥的方法。", + "hostKeyPrompt": "提示 (询问用户)", + "hostKeyStrict": "严格 (拒绝未知)", "idleLockMinutes": "空闲锁定 (分钟)", "idleLockMinutesDesc": "在 X 分钟无活动后自动锁定应用程序。设置为 0 以禁用。", + "interaction": "交互", + "keepAliveInterval": "Keep-Alive 间隔 (秒)", + "keepAliveIntervalDesc": "每隔 X 秒发送 SSH keep-alive 数据包。设置为 0 以禁用。", + "keyFileLoaded": "密钥文件已加载", + "keyManagement": "密钥", + "keyName": "密钥名称", + "keyNamePlaceholder": "例如:我的 SSH 密钥", + "keywordHighlightBuiltinNote": "随当前主题自动切换配色,无需配置。自定义规则可覆盖内置规则的颜色。", + "keywordHighlightBuiltinRules": "内置规则", + "keywordHighlightDarkPalette": "夜间主题配色", + "keywordHighlightLightPalette": "日间主题配色", + "keywordHighlightNewRule": "新建规则", + "keywordHighlightNoRules": "暂无自定义规则,点击 + 添加。", + "keywordHighlightPatternCount": "{{count}} 个模式", + "keywordHighlightPatternCount_one": "{{count}} 个模式", + "keywordHighlightPatternCount_other": "{{count}} 个模式", + "keywordHighlightPickColor": "点击打开取色板", + "keywordHighlightRuleColor": "颜色", + "keywordHighlightRuleName": "规则名称", + "keywordHighlightRuleNamePlaceholder": "例如:我的关键词", + "keywordHighlightRulePatterns": "匹配模式(每行一个,支持正则表达式)", + "keywordHighlightRulePatternsPlaceholder": "例如:\nerror\nfail(ed)?\nfatal", + "keywordHighlightRules": "自定义规则", + "keywordHighlightWrappedLines": "折行连续高亮", + "keywordHighlightWrappedLinesDesc": "将自动换行的连续内容视为同一行,支持跨行匹配。开启后可能降低性能。", + "keywordHighlighting": "关键词高亮", + "keywordHighlightingDesc": "在终端匹配文本上叠加颜色。内置规则始终生效;自定义规则优先级更高。", + "keywordHighlightingExperimental": "关键词高亮(实验性)", + "keywordHighlightingExperimentalDesc": "在终端匹配文本上叠加颜色。内置规则始终生效;自定义规则优先级更高。此为还未完善的实验性功能,请谨慎启用。", + "language": "语言", + "languageDesc": "选择应用程序界面的显示语言。", "lockPassword": "解锁密码", "lockPasswordDesc": "设置解锁应用程序所需的密码。留空则点击即可解锁。", "lockPasswordPlaceholder": "可选", - "keyManagement": "密钥", - "addKey": "添加密钥", - "keyName": "密钥名称", - "keyNamePlaceholder": "例如:我的 SSH 密钥", + "maxTransferRetries": "最大重试次数", + "maxTransferRetriesDesc": "传输失败时的重试次数 (0-10)。", + "minimizeToTray": "关闭时最小化到系统托盘", + "minimizeToTrayDesc": "窗口关闭时保持应用程序在后台运行。", + "noCustomEngines": "未定义自定义搜索引擎。", + "noEngines": "未定义自定义搜索引擎。", + "noKeyRequired": "无需密钥", + "noKeys": "暂无 SSH 密钥。", + "notConfigured": "未配置", + "passphrase": "密码短语(可选)", + "policyAccept": "接受 (自动添加)", + "policyPrompt": "提示 (询问用户)", + "policyStrict": "严格 (拒绝未知)", + "preserveTimestamps": "保留时间戳", + "preserveTimestampsDesc": "传输文件时保留原始修改时间。", + "proxy": "代理", + "proxyEnable": "启用代理", + "proxyHost": "主机", + "proxyPort": "端口", + "proxyProtocol": "协议", + "recordingPath": "录制保存路径", + "recordingPathDesc": "终端录制文件的保存目录。留空则使用系统下载文件夹。", + "remoteStatsInterval": "资源采集间隔(秒)", + "remoteStatsIntervalDesc": "从远程主机采集资源使用情况的频率。默认 3 秒。", + "requireMasterPassword": "需要主密码", + "requireMasterPasswordDesc": "使用主密码加密会话数据,必须在启动时输入才能解密。", + "resumeBrokenTransfer": "断点续传", + "resumeBrokenTransferDesc": "尝试恢复未完成的文件传输而非重新开始。", + "rightClickPaste": "右键粘贴", + "rightClickPasteDesc": "在终端中右键点击时从剪贴板粘贴文本。", + "scrollbackLines": "回滚缓冲区 (行)", + "scrollbackLinesDesc": "保留在内存中以供向上滚动的行数。", + "search": "搜索", + "searchEngineActions": "更多操作", + "security": "安全", + "selectIcon": "选择图标", "selectKeyFile": "选择私钥文件...", "selectKeyFileTitle": "选择私钥文件", - "keyFileLoaded": "密钥文件已加载", - "passphrase": "密码短语(可选)", - "deleteKey": "删除密钥", - "noKeys": "暂无 SSH 密钥。", - "deleteKeyConfirm": "确定要删除密钥「{{name}}」吗?", - "connectionSecurity": "连接安全", - "hostKeyPolicy": "主机密钥策略", - "hostKeyPolicyDesc": "连接期间处理未知 SSH 主机密钥的方法。", - "policyPrompt": "提示 (询问用户)", - "policyAccept": "接受 (自动添加)", - "policyStrict": "严格 (拒绝未知)", - "hostKeyPrompt": "提示 (询问用户)", - "hostKeyAccept": "接受 (自动添加)", - "hostKeyStrict": "严格 (拒绝未知)", - "keywordHighlighting": "关键词高亮", - "keywordHighlightingExperimental": "关键词高亮(实验性)", - "keywordHighlightingDesc": "在终端匹配文本上叠加颜色。内置规则始终生效;自定义规则优先级更高。", - "keywordHighlightingExperimentalDesc": "在终端匹配文本上叠加颜色。内置规则始终生效;自定义规则优先级更高。此为还未完善的实验性功能,请谨慎启用。", - "keywordHighlightWrappedLines": "折行连续高亮", - "keywordHighlightWrappedLinesDesc": "将自动换行的连续内容视为同一行,支持跨行匹配。开启后可能降低性能。", - "keywordHighlightBuiltinRules": "内置规则", - "keywordHighlightBuiltinNote": "随当前主题自动切换配色,无需配置。自定义规则可覆盖内置规则的颜色。", - "keywordHighlightRules": "自定义规则", - "keywordHighlightNoRules": "暂无自定义规则,点击 + 添加。", - "keywordHighlightNewRule": "新建规则", - "keywordHighlightRuleName": "规则名称", - "keywordHighlightRuleNamePlaceholder": "例如:我的关键词", - "keywordHighlightRuleColor": "颜色", - "keywordHighlightPickColor": "点击打开取色板", - "keywordHighlightRulePatterns": "匹配模式(每行一个,支持正则表达式)", - "keywordHighlightRulePatternsPlaceholder": "例如:\nerror\nfail(ed)?\nfatal", - "keywordHighlightDarkPalette": "夜间主题配色", - "keywordHighlightLightPalette": "日间主题配色", - "keywordHighlightPatternCount_one": "{{count}} 个模式", - "keywordHighlightPatternCount_other": "{{count}} 个模式", - "keywordHighlightPatternCount": "{{count}} 个模式" + "sessionLock": "会话锁定", + "sessionSecurity": "会话安全", + "shortcutCategories": { + "special": "特殊功能", + "tab": "标签与会话", + "terminal": "终端操作", + "view": "视图与布局" + }, + "shortcutLabels": { + "closeTab": "关闭当前标签", + "lockScreen": "锁定屏幕", + "newLocalTerminal": "新建本地终端", + "newSession": "新建 SSH 会话", + "nextTab": "下一个标签", + "openSettings": "打开设置", + "prevTab": "上一个标签", + "resetZoom": "重置缩放", + "switchTab": "切换到标签 1-9", + "toggleFullscreen": "切换全屏", + "toggleLeftSidebar": "切换左侧边栏", + "toggleRightSidebar": "切换右侧边栏", + "zoomIn": "放大", + "zoomOut": "缩小" + }, + "showInSearchMenu": "在搜索菜单显示", + "showRemoteStats": "显示远程资源信息", + "showRemoteStatsDesc": "在资源监控面板显示当前 SSH 主机的资源使用情况。", + "startupBehavior": "启动行为", + "startupRestore": "启动时恢复先前的会话标签", + "startupRestoreDesc": "自动重新打开在应用程序上次关闭时处于活动状态的终端会话。", + "strategyAsk": "每次询问", + "strategyOverwrite": "覆盖", + "strategyRename": "重命名(添加后缀)", + "strategySkip": "跳过", + "targetLanguage": "目标语言", + "targetLanguageDesc": "将选中的文本翻译为此语言。", + "terminal": "终端", + "terminalShortcuts": "终端快捷键", + "terminalShortcutsDesc": "在终端内使用的快捷操作。", + "terminalTheme": "终端主题", + "terminalThemeDesc": "选择终端的颜色主题。选择「跟随界面主题」可使用与应用程序相同的主题。", + "testSearchEngine": "测试", + "theme": "界面主题", + "themeDesc": "选择应用程序界面的颜色主题。", + "title": "设置", + "transfer": "传输", + "transferBufferSize": "缓冲区大小 (KB)", + "transferBufferSizeDesc": "文件传输的读写缓冲区大小(千字节)。", + "translation": "翻译", + "translationProvider": "翻译提供商", + "translationProviders": "翻译服务商", + "translationProvidersDesc": "配置翻译服务的 API 凭据。Google 和 Microsoft 无需配置即可使用。", + "uiFontSize": "界面字体大小 (px)", + "uploadThreads": "上传线程数", + "uploadThreadsDesc": "文件上传的并行线程数 (1-10)。", + "useOsKeyring": "使用系统凭据管理器(OS Keyring)", + "useOsKeyringDesc": "将凭据安全地存储在系统原生钥匙串中 (macOS Keychain, Windows Credential Manager, Secret Service)。", + "windowBehavior": "窗口行为", + "wordSeparators": "单词分隔符", + "wordSeparatorsDesc": "双击选中文本时断开单词的字符。" + }, + "statusBar": { + "cpuUsage": "CPU 占用", + "lock": "锁定屏幕", + "memUsage": "内存占用" + }, + "suggestions": { + "dismiss": "关闭", + "execute": "执行", + "fill": "填充", + "match": "条匹配", + "matches": "条匹配", + "select": "选择", + "title": "联想补全" + }, + "terminal": { + "actionLinkAltClickHint": "Alt+单击:更多动作", + "actionLinkDefaultBadge": "默认", + "actionLinkKind_archive": "压缩文件", + "actionLinkKind_custom": "匹配", + "actionLinkKind_file": "文件", + "actionLinkKind_hostPort": "Host:Port", + "actionLinkKind_ip": "IPv4", + "actionLinkKind_url": "URL", + "click": "单击", + "linkOpenHint": "按住 {{modifier}} 并点击以打开链接", + "newConnection": "新建连接", + "pressEnterToReconnect": "按回车键重新连接", + "reconnectFailed": "重新连接失败", + "reconnecting": "正在重新连接...", + "sessionDisconnected": "会话已断开" + }, + "terminalCtx": { + "clearAll": "全部清除", + "clearScreen": "清屏", + "copy": "复制", + "find": "查找...", + "paste": "粘贴", + "pasteSelectedText": "粘贴选定的文本", + "searchOnline": "在线搜索", + "selectAll": "全选", + "translate": "翻译" }, "translation": { - "title": "翻译", - "sourceText": "原文", - "translatedText": "译文", - "loading": "翻译中...", - "error": "翻译失败", - "copy": "复制译文", - "copied": "已复制!", - "close": "关闭", - "detectedLang": "检测到:{{lang}}", - "provider": "翻译服务", - "google": "谷歌翻译", - "microsoft": "微软翻译", - "deepl": "DeepL", - "baidu": "百度翻译", "ali": "阿里翻译", + "baidu": "百度翻译", + "close": "关闭", + "copied": "已复制!", + "copy": "复制译文", + "deepl": "DeepL", + "detectedLang": "检测到:{{lang}}", + "error": "翻译失败", + "google": "谷歌翻译", + "loading": "翻译中...", + "microsoft": "微软翻译", + "provider": "翻译服务", + "sourceText": "原文", + "title": "翻译", + "translatedText": "译文", "youdao": "有道翻译" - }, - "lockScreen": { - "title": "应用程序已锁定", - "message": "由于长时间无操作,应用程序已自动锁定。", - "unlock": "解锁", - "passwordPlaceholder": "请输入解锁密码", - "wrongPassword": "密码错误,请重试。" - }, - "securityAuth": { - "title": "安全认证", - "passwords": "密码", - "keys": "密钥", - "otp": "双因素" - }, - "passwordManager": { - "title": "密码", - "add": "添加密码", - "namePlaceholder": "例如:生产服务器", - "passwordPlaceholder": "输入密码", - "passwordUnchanged": "留空保持当前密码不变", - "noPasswords": "暂无已存储的密码。", - "deleteTitle": "删除密码", - "deleteConfirm": "确定要删除密码「{{name}}」吗?" - }, - "activityBar": { - "moveTo": "移动至", - "leftTop": "左侧顶部", - "leftBottom": "左侧底部", - "rightTop": "右侧顶部", - "rightBottom": "右侧底部", - "showLabel": "显示工具名称" - }, - "otp": { - "title": "双因素认证", - "description": "\"{{name}}\" 需要额外的身份验证。", - "submit": "验证", - "cancel": "取消", - "cancelled": "双因素认证已取消", - "currentCode": "当前验证码", - "sendToInput": "发送到输入框", - "copyCode": "复制验证码", - "copied": "已复制", - "generateCode": "生成验证码", - "loadingCode": "正在加载验证码", - "expiresIn": "剩余 {{seconds}} 秒", - "hotpHint": "按需生成验证码,每次生成都会推进计数器。" - }, - "otpManager": { - "title": "OTP 条目", - "add": "添加", - "noEntries": "暂无 OTP 条目", - "issuerPlaceholder": "发行方(如 GitHub)", - "usernamePlaceholder": "用户名(如 user@example.com)", - "secretPlaceholder": "密钥(Base32 编码)", - "secretUnchanged": "密钥未更改", - "advanced": "高级设置", - "algorithm": "算法", - "digits": "位数", - "period": "时间间隔(秒)", - "counter": "计数器", - "deleteTitle": "删除 OTP 条目", - "deleteConfirm": "确定要删除「{{name}}」吗?此操作无法撤销。", - "view": "查看", - "hide": "隐藏", - "scanQr": "扫描二维码", - "showCodes": "显示验证码", - "hideCodes": "隐藏验证码", - "scanningQr": "扫描中...", - "qrImportFailed": "从二维码导入失败", - "selectQrImage": "选择二维码图片" } }