From b6b5c06da887425bdadbf54c1b485fc4341fe17b Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Mon, 12 Jan 2026 06:03:33 -0500 Subject: [PATCH] New translations en.json (Chinese Traditional) --- src/locales/translated/zh.json | 4050 ++++++++++++++++---------------- 1 file changed, 2025 insertions(+), 2025 deletions(-) diff --git a/src/locales/translated/zh.json b/src/locales/translated/zh.json index 56c4b9ca..e319cfd7 100644 --- a/src/locales/translated/zh.json +++ b/src/locales/translated/zh.json @@ -1,165 +1,165 @@ { "credentials": { - "credentialsViewer": "凭据查看器", - "manageYourSSHCredentials": "安全地管理您的 SSH 凭据", - "addCredential": "添加凭据", - "createCredential": "创建证书", - "editCredential": "编辑凭据", - "viewCredential": "查看凭据", - "duplicateCredential": "复制凭据", - "deleteCredential": "删除凭据", - "updateCredential": "更新凭据", - "credentialName": "凭据名称", - "credentialDescription": "描述", - "username": "用户名", - "searchCredentials": "搜索凭据...", - "selectFolder": "选择文件夹", - "selectAuthType": "选择认证类型", - "allFolders": "所有文件夹", - "allAuthTypes": "所有认证类型", - "uncategorized": "未分类", - "totalCredentials": "总计", - "keyBased": "基于密钥", - "passwordBased": "基于密码", - "folders": "文件夹", - "noCredentialsMatchFilters": "没有与您的过滤规则匹配的凭据", - "noCredentialsYet": "尚未创建凭据", - "createFirstCredential": "创建您的第一张凭据", - "failedToFetchCredentials": "获取凭据失败", - "credentialDeletedSuccessfully": "凭据删除成功", - "failedToDeleteCredential": "删除凭证失败", + "credentialsViewer": "Credentials Viewer", + "manageYourSSHCredentials": "Manage your SSH credentials securely", + "addCredential": "Add Credential", + "createCredential": "Create Credential", + "editCredential": "Edit Credential", + "viewCredential": "View Credential", + "duplicateCredential": "Duplicate Credential", + "deleteCredential": "Delete Credential", + "updateCredential": "Update Credential", + "credentialName": "Credential Name", + "credentialDescription": "Description", + "username": "Username", + "searchCredentials": "Search credentials...", + "selectFolder": "Select Folder", + "selectAuthType": "Select Auth Type", + "allFolders": "All Folders", + "allAuthTypes": "All Auth Types", + "uncategorized": "Uncategorized", + "totalCredentials": "Total", + "keyBased": "Key-based", + "passwordBased": "Password-based", + "folders": "Folders", + "noCredentialsMatchFilters": "No credentials match your filters", + "noCredentialsYet": "No credentials created yet", + "createFirstCredential": "Create your first credential", + "failedToFetchCredentials": "Failed to fetch credentials", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "failedToDeleteCredential": "Failed to delete credential", "confirmDeleteCredential": "Are you sure you want to delete credential \"{{name}}\"?", - "credentialCreatedSuccessfully": "凭据创建成功", - "credentialUpdatedSuccessfully": "凭据更新成功", - "failedToSaveCredential": "保存凭据失败", - "failedToFetchCredentialDetails": "获取凭证详细信息失败", - "failedToFetchHostsUsing": "使用此凭据获取主机失败", - "loadingCredentials": "正在加载凭据...", - "retry": "重试", - "noCredentials": "无凭据", - "noCredentialsMessage": "您还没有添加任何凭据。点击“添加凭据”开始。", - "sshCredentials": "SSH 证书", + "credentialCreatedSuccessfully": "Credential created successfully", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToSaveCredential": "Failed to save credential", + "failedToFetchCredentialDetails": "Failed to fetch credential details", + "failedToFetchHostsUsing": "Failed to fetch hosts using this credential", + "loadingCredentials": "Loading credentials...", + "retry": "Retry", + "noCredentials": "No Credentials", + "noCredentialsMessage": "You haven't added any credentials yet. Click \"Add Credential\" to get started.", + "sshCredentials": "SSH Credentials", "credentialsCount": "{{count}} credentials", - "refresh": "刷新", - "passwordRequired": "密码是必需的", - "sshKeyRequired": "需要 SSH 密钥", + "refresh": "Refresh", + "passwordRequired": "Password is required", + "sshKeyRequired": "SSH key is required", "credentialAddedSuccessfully": "Credential \"{{name}}\" added successfully", - "general": "A. 概况", - "description": "描述", - "folder": "文件夹", - "tags": "标签", - "addTagsSpaceToAdd": "添加标签 (按空格添加)", - "password": "密码", - "key": "关键字", - "sshPrivateKey": "SSH 私钥", - "upload": "上传", - "updateKey": "更新密钥", - "keyPassword": "密钥密码", - "keyType": "密钥类型", + "general": "General", + "description": "Description", + "folder": "Folder", + "tags": "Tags", + "addTagsSpaceToAdd": "Add tags (press space to add)", + "password": "Password", + "key": "Key", + "sshPrivateKey": "SSH Private Key", + "upload": "Upload", + "updateKey": "Update Key", + "keyPassword": "Key Password", + "keyType": "Key Type", "keyTypeRSA": "RSA", "keyTypeECDSA": "ECDSA", "keyTypeEd25519": "Ed25519", - "basicInfo": "基本信息", - "authentication": "认证", - "organization": "组织", - "basicInformation": "基本信息", - "basicInformationDescription": "输入此凭证的基本信息", - "authenticationMethod": "身份验证方法", - "authenticationMethodDescription": "选择如何使用 SSH 服务器", - "organizationDescription": "使用文件夹和标签组织您的凭据", - "enterCredentialName": "输入凭据名称", - "enterCredentialDescription": "输入描述(可选)", - "enterUsername": "输入用户名", - "nameIsRequired": "凭据名称是必需的", - "usernameIsRequired": "必须输入用户名", - "authenticationType": "身份验证类型", - "passwordAuthDescription": "使用密码验证", - "sshKeyAuthDescription": "使用 SSH 密钥身份验证", - "passwordIsRequired": "密码是必需的", - "sshKeyIsRequired": "需要 SSH 密钥", - "sshKeyType": "SSH 密钥类型", - "privateKey": "私钥", - "enterPassword": "输入密码", - "enterPrivateKey": "输入私钥", - "keyPassphrase": "密钥密码", - "enterKeyPassphrase": "输入密钥密码(可选)", - "keyPassphraseOptional": "可选:如果您的密钥没有密码,请留空", - "leaveEmptyToKeepCurrent": "留空以保留当前值", - "uploadKeyFile": "上传密钥文件", - "generateKeyPairButton": "生成密钥对", - "generateKeyPair": "生成密钥对", - "generateKeyPairDescription": "生成一个新的 SSH 密钥对。如果您想用密码句保护密钥,请先在下面的密钥密码字段中输入它。", - "deploySSHKey": "部署 SSH 密钥", - "deploySSHKeyDescription": "部署公钥到目标服务器", - "sourceCredential": "源证书", - "targetHost": "目标主机", - "deploymentProcess": "部署进程", - "deploymentProcessDescription": "这将安全地将公钥添加到目标主机的 ~/.ssh/authorized_keys 文件,而不会覆盖现有的密钥。该操作是可逆的。", - "chooseHostToDeploy": "选择要部署到的主机...", - "deploying": "正在部署...", - "name": "名称", - "noHostsAvailable": "没有可用的主机", - "noHostsMatchSearch": "没有符合您搜索条件的主机", - "sshKeyGenerationNotImplemented": "SSH 密钥生成功能即将推出", - "connectionTestingNotImplemented": "连接测试功能即将推出", - "testConnection": "测试连接", - "selectOrCreateFolder": "选择或创建文件夹", - "noFolder": "没有文件夹", - "orCreateNewFolder": "或创建新文件夹", - "addTag": "添加标签", - "saving": "保存中...", - "credentialId": "凭据ID", - "overview": "概览", - "security": "安全", - "usage": "用法", - "securityDetails": "安全信息", - "securityDetailsDescription": "查看加密凭据信息", - "credentialSecured": "凭据保护", - "credentialSecuredDescription": "所有敏感数据都使用 AES-256 加密", - "passwordAuthentication": "密码验证", - "keyAuthentication": "密钥认证", - "securityReminder": "安全提醒", - "securityReminderText": "永远不要分享您的凭据。其余所有数据都是加密的。", - "hostsUsingCredential": "使用此凭据的主机", - "noHostsUsingCredential": "没有主机正在使用此凭据", - "timesUsed": "已使用时间", - "lastUsed": "上次使用", - "connectedHosts": "连接的主机", - "created": "已创建", - "lastModified": "最后修改", - "usageStatistics": "使用情况统计", + "basicInfo": "Basic Info", + "authentication": "Authentication", + "organization": "Organization", + "basicInformation": "Basic Information", + "basicInformationDescription": "Enter the basic information for this credential", + "authenticationMethod": "Authentication Method", + "authenticationMethodDescription": "Choose how you want to authenticate with SSH servers", + "organizationDescription": "Organize your credentials with folders and tags", + "enterCredentialName": "Enter credential name", + "enterCredentialDescription": "Enter description (optional)", + "enterUsername": "Enter username", + "nameIsRequired": "Credential name is required", + "usernameIsRequired": "Username is required", + "authenticationType": "Authentication Type", + "passwordAuthDescription": "Use password authentication", + "sshKeyAuthDescription": "Use SSH key authentication", + "passwordIsRequired": "Password is required", + "sshKeyIsRequired": "SSH key is required", + "sshKeyType": "SSH Key Type", + "privateKey": "Private Key", + "enterPassword": "Enter password", + "enterPrivateKey": "Enter private key", + "keyPassphrase": "Key Passphrase", + "enterKeyPassphrase": "Enter key passphrase (optional)", + "keyPassphraseOptional": "Optional: leave empty if your key has no passphrase", + "leaveEmptyToKeepCurrent": "Leave empty to keep current value", + "uploadKeyFile": "Upload Key File", + "generateKeyPairButton": "Generate Key Pair", + "generateKeyPair": "Generate Key Pair", + "generateKeyPairDescription": "Generate a new SSH key pair. If you want to protect the key with a passphrase, enter it in the Key Password field below first.", + "deploySSHKey": "Deploy SSH Key", + "deploySSHKeyDescription": "Deploy public key to target server", + "sourceCredential": "Source Credential", + "targetHost": "Target Host", + "deploymentProcess": "Deployment Process", + "deploymentProcessDescription": "This will safely add the public key to the target host's ~/.ssh/authorized_keys file without overwriting existing keys. The operation is reversible.", + "chooseHostToDeploy": "Choose a host to deploy to...", + "deploying": "Deploying...", + "name": "Name", + "noHostsAvailable": "No hosts available", + "noHostsMatchSearch": "No hosts match your search", + "sshKeyGenerationNotImplemented": "SSH key generation feature coming soon", + "connectionTestingNotImplemented": "Connection testing feature coming soon", + "testConnection": "Test Connection", + "selectOrCreateFolder": "Select or create folder", + "noFolder": "No folder", + "orCreateNewFolder": "Or create new folder", + "addTag": "Add tag", + "saving": "Saving...", + "credentialId": "Credential ID", + "overview": "Overview", + "security": "Security", + "usage": "Usage", + "securityDetails": "Security Details", + "securityDetailsDescription": "View encrypted credential information", + "credentialSecured": "Credential Secured", + "credentialSecuredDescription": "All sensitive data is encrypted with AES-256", + "passwordAuthentication": "Password Authentication", + "keyAuthentication": "Key Authentication", + "securityReminder": "Security Reminder", + "securityReminderText": "Never share your credentials. All data is encrypted at rest.", + "hostsUsingCredential": "Hosts Using This Credential", + "noHostsUsingCredential": "No hosts are currently using this credential", + "timesUsed": "Times Used", + "lastUsed": "Last Used", + "connectedHosts": "Connected Hosts", + "created": "Created", + "lastModified": "Last Modified", + "usageStatistics": "Usage Statistics", "copiedToClipboard": "{{field}} copied to clipboard", - "failedToCopy": "复制到剪贴板失败", - "sshKey": "SSH 密钥", - "createCredentialDescription": "创建新的 SSH 凭据以安全访问", - "editCredentialDescription": "更新凭据信息", - "listView": "列表", - "folderView": "文件夹", - "unknownCredential": "未知的", + "failedToCopy": "Failed to copy to clipboard", + "sshKey": "SSH Key", + "createCredentialDescription": "Create a new SSH credential for secure access", + "editCredentialDescription": "Update the credential information", + "listView": "List", + "folderView": "Folders", + "unknownCredential": "Unknown", "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The credential will be moved to \"Uncategorized\".", "removedFromFolder": "Credential \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "从文件夹中删除凭证失败", + "failedToRemoveFromFolder": "Failed to remove credential from folder", "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "重命名文件夹失败", + "failedToRenameFolder": "Failed to rename folder", "movedToFolder": "Credential \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "无法将凭据移动到文件夹", - "sshPublicKey": "SSH 公钥", - "publicKeyNote": "公钥是可选的,但推荐用于密钥验证", - "publicKeyUploaded": "公钥已上传", - "uploadPublicKey": "上传公钥", - "uploadPrivateKeyFile": "上传私钥文件", - "uploadPublicKeyFile": "上传公钥文件", - "privateKeyRequiredForGeneration": "需要私钥才能生成公钥", - "failedToGeneratePublicKey": "无法生成公钥", - "generatePublicKey": "从私钥生成", - "publicKeyGeneratedSuccessfully": "已成功生成公钥", - "detectedKeyType": "检测到的密钥类型", - "detectingKeyType": "正在检测...", - "optional": "可选的", - "generateKeyPairNew": "生成新密钥对", - "generateEd25519": "生成 Ed25519", - "generateECDSA": "生成 ECDSA", - "generateRSA": "生成 RSA", + "failedToMoveToFolder": "Failed to move credential to folder", + "sshPublicKey": "SSH Public Key", + "publicKeyNote": "Public key is optional but recommended for key validation", + "publicKeyUploaded": "Public Key Uploaded", + "uploadPublicKey": "Upload Public Key", + "uploadPrivateKeyFile": "Upload Private Key File", + "uploadPublicKeyFile": "Upload Public Key File", + "privateKeyRequiredForGeneration": "Private key is required to generate public key", + "failedToGeneratePublicKey": "Failed to generate public key", + "generatePublicKey": "Generate from Private Key", + "publicKeyGeneratedSuccessfully": "Public key generated successfully", + "detectedKeyType": "Detected key type", + "detectingKeyType": "detecting...", + "optional": "Optional", + "generateKeyPairNew": "Generate New Key Pair", + "generateEd25519": "Generate Ed25519", + "generateECDSA": "Generate ECDSA", + "generateRSA": "Generate RSA", "keyTypeEcdsaP256": "ECDSA P-256 (SSH)", "keyTypeEcdsaP384": "ECDSA P-384 (SSH)", "keyTypeEcdsaP521": "ECDSA P-521 (SSH)", @@ -167,21 +167,21 @@ "keyTypeRsaSha256": "RSA-SHA2-256", "keyTypeRsaSha512": "RSA-SHA2-512", "keyPairGeneratedSuccessfully": "{{keyType}} key pair generated successfully", - "failedToGenerateKeyPair": "生成密钥对失败", - "generateKeyPairNote": "直接生成新的 SSH 密钥对。这将替换表单中的任何现有密钥。", - "invalidKey": "无效密钥", - "detectionError": "检测错误", - "removing": "正在删除:", - "clickToEditCredential": "点击编辑凭据", - "dragToMoveBetweenFolders": "拖动以在文件夹之间移动", - "keyBasedOnlyForDeployment": "只有基于SSH 密钥的凭据可以被部署", - "publicKeyRequiredForDeployment": "部署需要公钥", - "selectTargetHost": "请选择目标主机", - "keyDeployedSuccessfully": "SSH 密钥已成功部署", - "deploymentFailed": "部署失败", - "failedToDeployKey": "部署 SSH 密钥失败", - "clickToRenameFolder": "点击重命名文件夹", - "renameFolder": "重命名文件夹", + "failedToGenerateKeyPair": "Failed to generate key pair", + "generateKeyPairNote": "Generate a new SSH key pair directly. This will replace any existing keys in the form.", + "invalidKey": "Invalid Key", + "detectionError": "Detection Error", + "removing": "Removing:", + "clickToEditCredential": "Click to edit credential", + "dragToMoveBetweenFolders": "Drag to move between folders", + "keyBasedOnlyForDeployment": "Only SSH key-based credentials can be deployed", + "publicKeyRequiredForDeployment": "Public key is required for deployment", + "selectTargetHost": "Please select a target host", + "keyDeployedSuccessfully": "SSH key deployed successfully", + "deploymentFailed": "Deployment failed", + "failedToDeployKey": "Failed to deploy SSH key", + "clickToRenameFolder": "Click to rename folder", + "renameFolder": "Rename folder", "idLabel": "ID:" }, "dragIndicator": { @@ -191,692 +191,692 @@ "readySingle": "Ready to download {{fileName}}", "readyMultiple": "Ready to download {{count}} files", "batchDrag": "Drag {{count}} files to desktop", - "dragToDesktop": "拖动到桌面", - "canDragAnywhere": "您可以在桌面任何地方拖动文件" + "dragToDesktop": "Drag to desktop", + "canDragAnywhere": "You can drag files anywhere on your desktop" }, "sshTools": { - "title": "SSH 工具", - "closeTools": "关闭 SSH 工具", - "keyRecording": "按键录制", - "startKeyRecording": "开始密钥录制", - "stopKeyRecording": "停止密钥录制", - "selectTerminals": "选择终端:", - "typeCommands": "输入命令(支持所有键):", + "title": "SSH Tools", + "closeTools": "Close SSH Tools", + "keyRecording": "Key Recording", + "startKeyRecording": "Start Key Recording", + "stopKeyRecording": "Stop Key Recording", + "selectTerminals": "Select terminals:", + "typeCommands": "Type commands (all keys supported):", "commandsWillBeSent": "Commands will be sent to {{count}} selected terminal(s).", - "settings": "设置", - "enableRightClickCopyPaste": "启用右键点击复制/粘贴", - "shareIdeas": "有人想知道应该在什么旁边找到什么工具?分享它", + "settings": "Settings", + "enableRightClickCopyPaste": "Enable right‑click copy/paste", + "shareIdeas": "Have ideas for what should come next for ssh tools? Share them on", "scripts": { - "inputPlaceholder": "例如: 系统命令, Docker 脚本" + "inputPlaceholder": "e.g., System Commands, Docker Scripts" } }, "snippets": { - "title": "片段", - "new": "新片段", - "create": "创建代码片段", - "edit": "编辑代码片段", - "run": "运行", - "empty": "尚无代码片段", - "emptyHint": "创建代码片段以保存常用命令", - "searchSnippets": "搜索代码片段...", - "name": "名称", - "description": "描述", - "content": "命令", - "namePlaceholder": "例如,重启 Nginx", - "descriptionPlaceholder": "可选描述", - "contentPlaceholder": "例如: sudo systemctl 重启 nginx", - "nameRequired": "名称是必填项", - "contentRequired": "命令是必需的", - "createDescription": "创建一个新的命令代码片段以便快速执行", - "editDescription": "编辑此命令片段", - "deleteConfirmTitle": "删除代码片段", + "title": "Snippets", + "new": "New Snippet", + "create": "Create Snippet", + "edit": "Edit Snippet", + "run": "Run", + "empty": "No snippets yet", + "emptyHint": "Create a snippet to save commonly used commands", + "searchSnippets": "Search snippets...", + "name": "Name", + "description": "Description", + "content": "Command", + "namePlaceholder": "e.g., Restart Nginx", + "descriptionPlaceholder": "Optional description", + "contentPlaceholder": "e.g., sudo systemctl restart nginx", + "nameRequired": "Name is required", + "contentRequired": "Command is required", + "createDescription": "Create a new command snippet for quick execution", + "editDescription": "Edit this command snippet", + "deleteConfirmTitle": "Delete Snippet", "deleteConfirmDescription": "Are you sure you want to delete \"{{name}}\"?", - "createSuccess": "代码片段创建成功", - "updateSuccess": "代码片段更新成功", - "deleteSuccess": "代码片段删除成功", - "createFailed": "创建代码片段失败", - "updateFailed": "更新代码片段失败", - "deleteFailed": "删除代码片段失败", - "failedToFetch": "获取代码片段失败", + "createSuccess": "Snippet created successfully", + "updateSuccess": "Snippet updated successfully", + "deleteSuccess": "Snippet deleted successfully", + "createFailed": "Failed to create snippet", + "updateFailed": "Failed to update snippet", + "deleteFailed": "Failed to delete snippet", + "failedToFetch": "Failed to fetch snippets", "executeSuccess": "Executing: {{name}}", "copySuccess": "Copied \"{{name}}\" to clipboard", - "runTooltip": "在终端中执行此片段", - "copyTooltip": "复制代码片段到剪贴板", - "editTooltip": "编辑此代码片段", - "deleteTooltip": "删除此代码片段", - "newFolder": "新建文件夹", - "reorderSameFolder": "只能重新排序同一文件夹中的代码片段", - "reorderSuccess": "代码片段重新排序成功", - "reorderFailed": "重新排序片段失败", + "runTooltip": "Execute this snippet in the terminal", + "copyTooltip": "Copy snippet to clipboard", + "editTooltip": "Edit this snippet", + "deleteTooltip": "Delete this snippet", + "newFolder": "New Folder", + "reorderSameFolder": "Can only reorder snippets within the same folder", + "reorderSuccess": "Snippets reordered successfully", + "reorderFailed": "Failed to reorder snippets", "deleteFolderConfirm": "Delete folder \"{{name}}\"? All snippets will be moved to Uncategorized.", - "deleteFolderSuccess": "文件夹删除成功", - "deleteFolderFailed": "删除文件夹失败", - "updateFolderSuccess": "文件夹更新成功", - "createFolderSuccess": "文件夹创建成功", - "updateFolderFailed": "更新文件夹失败", - "createFolderFailed": "创建文件夹失败", - "selectTerminals": "选择终端(可选)", + "deleteFolderSuccess": "Folder deleted successfully", + "deleteFolderFailed": "Failed to delete folder", + "updateFolderSuccess": "Folder updated successfully", + "createFolderSuccess": "Folder created successfully", + "updateFolderFailed": "Failed to update folder", + "createFolderFailed": "Failed to create folder", + "selectTerminals": "Select Terminals (optional)", "executeOnSelected": "Execute on {{count}} selected terminal(s)", - "executeOnCurrent": "在当前终端执行 (点击选择多个)", - "folder": "文件夹", - "selectFolder": "选择一个文件夹或留空", - "noFolder": "没有文件夹(未分类)", - "folderName": "文件夹名称", - "folderNameRequired": "文件夹名称是必需的", - "folderColor": "文件夹颜色", - "folderIcon": "文件夹图标", - "preview": "预览", - "updateFolder": "更新文件夹", - "createFolder": "创建文件夹", - "editFolder": "编辑文件夹", - "editFolderDescription": "自定义代码片段文件夹", - "createFolderDescription": "将你的代码片段整理到文件夹" + "executeOnCurrent": "Execute on current terminal (click to select multiple)", + "folder": "Folder", + "selectFolder": "Select a folder or leave empty", + "noFolder": "No folder (Uncategorized)", + "folderName": "Folder Name", + "folderNameRequired": "Folder name is required", + "folderColor": "Folder Color", + "folderIcon": "Folder Icon", + "preview": "Preview", + "updateFolder": "Update Folder", + "createFolder": "Create Folder", + "editFolder": "Edit Folder", + "editFolderDescription": "Customize your snippet folder", + "createFolderDescription": "Organize your snippets into folders" }, "commandHistory": { - "title": "历史记录", - "searchPlaceholder": "搜索命令...", - "noTerminal": "没有活动的终端", - "noTerminalHint": "打开终端以查看其命令历史。", - "empty": "尚无命令历史", - "emptyHint": "在活动终端中执行命令以建立历史记录。", - "noResults": "未找到命令", + "title": "History", + "searchPlaceholder": "Search commands...", + "noTerminal": "No active terminal", + "noTerminalHint": "Open a terminal to see its command history.", + "empty": "No command history yet", + "emptyHint": "Execute commands in the active terminal to build its history.", + "noResults": "No commands found", "noResultsHint": "No commands matching \"{{query}}\"", - "deleteSuccess": "从历史记录中删除命令", - "deleteFailed": "删除命令失败。", - "deleteTooltip": "删除命令", - "tabHint": "如果在用户配置文件中启用,使用终端中的选项卡自动完成命令历史记录", - "authRequiredRefresh": "需要身份验证。请刷新页面。", - "dataAccessLockedReauth": "数据访问被锁定。请重新验证。", - "loading": "正在加载命令历史...", - "error": "加载历史记录出错" + "deleteSuccess": "Command deleted from history", + "deleteFailed": "Failed to delete command.", + "deleteTooltip": "Delete command", + "tabHint": "Use Tab in Terminal to autocomplete from command history if enabled in User Profile", + "authRequiredRefresh": "Authentication required. Please refresh the page.", + "dataAccessLockedReauth": "Data access locked. Please re-authenticate.", + "loading": "Loading command history...", + "error": "Error Loading History" }, "splitScreen": { - "title": "分割屏幕", - "none": "无", - "twoSplit": "双向路径", - "threeSplit": "三路", - "fourSplit": "4 路径", - "availableTabs": "可用标签", - "dragTabsHint": "拖动标签到下面的布局单元格进行分配", - "layout": "分割屏幕布局", - "dropHere": "拖放标签到这里", - "apply": "应用拆分", - "clear": "清除拆分", - "selectMode": "选择分割屏幕模式", - "helpText": "选择您想要一次查看的标签数量", - "success": "分割屏幕应用成功", - "cleared": "拆分屏幕已清除", + "title": "Split Screen", + "none": "None", + "twoSplit": "2-Way", + "threeSplit": "3-Way", + "fourSplit": "4-Way", + "availableTabs": "Available Tabs", + "dragTabsHint": "Drag tabs to the layout cells below to assign them", + "layout": "Split Screen Layout", + "dropHere": "Drop tab here", + "apply": "Apply Split", + "clear": "Clear Split", + "selectMode": "Select a split screen mode", + "helpText": "Choose how many tabs you want to view at once", + "success": "Split screen applied successfully", + "cleared": "Split screen cleared", "error": { - "noAssignments": "请将至少一个标签分配到布局", + "noAssignments": "Please assign at least one tab to the layout", "fillAllSlots": "Please fill all {{count}} slots before applying" } }, "homepage": { - "loggedInTitle": "登录成功!", - "loggedInMessage": "您已登录!使用侧边栏访问所有可用的工具。要启动,请在 SSH 管理器选项卡中创建一个 SSH 主机。 一旦创建,您可以使用侧边栏中的其他应用程序连接到该主机。", - "failedToLoadAlerts": "加载警报失败", - "failedToDismissAlert": "关闭警报失败" + "loggedInTitle": "Logged in!", + "loggedInMessage": "You are logged in! Use the sidebar to access all available tools. To get started, create an SSH Host in the SSH Manager tab. Once created, you can connect to that host using the other apps in the sidebar.", + "failedToLoadAlerts": "Failed to load alerts", + "failedToDismissAlert": "Failed to dismiss alert" }, "serverConfig": { - "title": "服务器配置", - "description": "配置连接到后端服务的 Termixed 服务器 URL", - "serverUrl": "服务器 URL", - "enterServerUrl": "请输入服务器 URL", - "testConnectionFirst": "请先测试连接", - "connectionSuccess": "连接成功!", - "connectionFailed": "连接失败", - "connectionError": "发生连接错误", - "connected": "已连接", - "disconnected": "断开连接", - "configSaved": "配置保存成功", - "saveFailed": "保存配置失败", - "saveError": "保存配置时出错", - "saving": "保存中...", - "saveConfig": "保存配置", - "helpText": "输入您的 Termixe 服务器运行的 URL (例如,http://localhost:30001 或 https://your-server.com)", - "warning": "警告", - "notValidatedWarning": "URL未验证 - 确保其正确", - "changeServer": "更改服务器", - "mustIncludeProtocol": "服务器 URL 必须以 http:// 或 https://开始" + "title": "Server Configuration", + "description": "Configure the Termix server URL to connect to your backend services", + "serverUrl": "Server URL", + "enterServerUrl": "Please enter a server URL", + "testConnectionFirst": "Please test the connection first", + "connectionSuccess": "Connection successful!", + "connectionFailed": "Connection failed", + "connectionError": "Connection error occurred", + "connected": "Connected", + "disconnected": "Disconnected", + "configSaved": "Configuration saved successfully", + "saveFailed": "Failed to save configuration", + "saveError": "Error saving configuration", + "saving": "Saving...", + "saveConfig": "Save Configuration", + "helpText": "Enter the URL where your Termix server is running (e.g., http://localhost:30001 or https://your-server.com)", + "warning": "Warning", + "notValidatedWarning": "URL not validated - ensure it's correct", + "changeServer": "Change Server", + "mustIncludeProtocol": "Server URL must start with http:// or https://" }, "versionCheck": { - "error": "版本检查错误", - "checkFailed": "检查更新失败", - "upToDate": "应用程序是最新的", + "error": "Version Check Error", + "checkFailed": "Failed to check for updates", + "upToDate": "App is Up to Date", "currentVersion": "You are running version {{version}}", - "updateAvailable": "可用更新", + "updateAvailable": "Update Available", "newVersionAvailable": "A new version is available! You are running {{current}}, but {{latest}} is available.", "releasedOn": "Released on {{date}}", - "downloadUpdate": "下载更新", - "dismiss": "关闭", - "checking": "正在检查更新...", - "checkUpdates": "检查更新", - "checkingUpdates": "正在检查更新...", - "refresh": "刷新", - "updateRequired": "需要更新", - "updateDismissed": "更新通知已拒绝", - "noUpdatesFound": "未找到更新" + "downloadUpdate": "Download Update", + "dismiss": "Dismiss", + "checking": "Checking for updates...", + "checkUpdates": "Check for Updates", + "checkingUpdates": "Checking for updates...", + "refresh": "Refresh", + "updateRequired": "Update Required", + "updateDismissed": "Update notification dismissed", + "noUpdatesFound": "No updates found" }, "common": { - "close": "关闭", + "close": "Close", "minimize": "Minimize", - "online": "在线", - "offline": "离线的", - "continue": "继续", - "maintenance": "维护费", - "degraded": "降级", + "online": "Online", + "offline": "Offline", + "continue": "Continue", + "maintenance": "Maintenance", + "degraded": "Degraded", "discord": "Discord", - "error": "错误", - "warning": "警告", - "info": "信息", - "success": "成功", - "loading": "加载中...", - "required": "必填", - "optional": "可选的", - "connect": "连接", - "connecting": "正在连接...", - "creating": "创建中...", - "clear": "清空", - "toggleSidebar": "切换侧边栏", + "error": "Error", + "warning": "Warning", + "info": "Info", + "success": "Success", + "loading": "Loading...", + "required": "Required", + "optional": "Optional", + "connect": "Connect", + "connecting": "Connecting...", + "creating": "Creating...", + "clear": "Clear", + "toggleSidebar": "Toggle Sidebar", "sidebar": "Sidebar", - "home": "首页", - "expired": "已过期", - "expiresToday": "今天过期", + "home": "Home", + "expired": "Expired", + "expiresToday": "Expires today", "expiresTomorrow": "Expires in {{days}} days", - "updateAvailable": "可用更新", - "sshPath": "SSH 路径", - "localPath": "本地路径", - "appName": "Termixe", + "updateAvailable": "Update Available", + "sshPath": "SSH Path", + "localPath": "Local Path", + "appName": "Termix", "resetSidebarWidth": "Reset sidebar width", - "dragToResizeSidebar": "拖动以调整侧边栏", - "noAuthCredentials": "此 SSH 主机没有可用的身份验证凭据", - "noReleases": "无发布", - "updatesAndReleases": "更新与发布", + "dragToResizeSidebar": "Drag to resize sidebar", + "noAuthCredentials": "No authentication credentials available for this SSH host", + "noReleases": "No Releases", + "updatesAndReleases": "Updates & Releases", "newVersionAvailable": "A new version ({{version}}) is available.", - "failedToFetchUpdateInfo": "获取更新信息失败", - "preRelease": "预发布", - "loginFailed": "登录失败", - "noReleasesFound": "未找到释放。", - "yourBackupCodes": "您的备份代码", - "sendResetCode": "发送重置代码", - "verifyCode": "验证代码", - "resetPassword": "重置密码", + "failedToFetchUpdateInfo": "Failed to fetch update information", + "preRelease": "Pre-release", + "loginFailed": "Login failed", + "noReleasesFound": "No releases found.", + "yourBackupCodes": "Your Backup Codes", + "sendResetCode": "Send Reset Code", + "verifyCode": "Verify Code", + "resetPassword": "Reset Password", "resetCode": "Reset Code", - "newPassword": "新密码", - "folder": "文件夹", - "file": "文件", - "renamedSuccessfully": "重命名成功", - "deletedSuccessfully": "删除成功", - "noTunnelConnections": "未配置隧道连接", - "sshTools": "SSH 工具", - "english": "Distr.", - "chinese": "中文", - "german": "德文", - "cancel": "取消", - "username": "用户名", - "name": "名称", - "login": "登录", - "logout": "注销", - "register": "注册", - "password": "密码", - "version": "版本", - "confirmPassword": "确认密码", - "back": "后退", - "email": "电子邮件地址", - "submit": "提交", - "change": "更改", - "save": "保存", - "saving": "保存中...", - "delete": "删除", - "edit": "编辑", - "add": "添加", - "search": "搜索", - "confirm": "确认", - "yes": "否", - "no": "否", - "ok": "好的", - "enabled": "已启用", - "disabled": "已禁用", - "important": "重要的", - "notEnabled": "未启用", - "settingUp": "正在设置...", - "next": "下一个", - "previous": "上一个", - "refresh": "刷新", - "settings": "设置", - "profile": "个人信息", - "help": "帮助", - "about": "关于", - "language": "语言", - "autoDetect": "自动检测", - "changeAccountPassword": "更改您的帐户密码", - "passwordResetTitle": "密码重置", - "passwordResetDescription": "您即将重置您的密码。这将使您退出所有活动的会话。", - "enterSixDigitCode": "从停靠容器日志中为用户输入6位数字代码:", - "enterNewPassword": "输入您的新用户密码:", - "passwordsDoNotMatch": "密码不匹配", - "passwordMinLength": "密码长度必须至少为6个字符", - "passwordResetSuccess": "密码重置成功!您现在可以使用新密码登录。", - "failedToInitiatePasswordReset": "启动密码重置失败", - "failedToVerifyResetCode": "验证重置代码失败", - "failedToCompletePasswordReset": "密码重置失败", - "documentation": "文件", - "retry": "重试", - "checking": "正在检查...", - "checkingDatabase": "正在检查数据库连接...", - "actions": "行动", - "remove": "删除", + "newPassword": "New Password", + "folder": "Folder", + "file": "File", + "renamedSuccessfully": "renamed successfully", + "deletedSuccessfully": "deleted successfully", + "noTunnelConnections": "No tunnel connections configured", + "sshTools": "SSH Tools", + "english": "English", + "chinese": "Chinese", + "german": "German", + "cancel": "Cancel", + "username": "Username", + "name": "Name", + "login": "Login", + "logout": "Logout", + "register": "Register", + "password": "Password", + "version": "Version", + "confirmPassword": "Confirm Password", + "back": "Back", + "email": "Email", + "submit": "Submit", + "change": "Change", + "save": "Save", + "saving": "Saving...", + "delete": "Delete", + "edit": "Edit", + "add": "Add", + "search": "Search", + "confirm": "Confirm", + "yes": "Yes", + "no": "No", + "ok": "OK", + "enabled": "Enabled", + "disabled": "Disabled", + "important": "Important", + "notEnabled": "Not Enabled", + "settingUp": "Setting up...", + "next": "Next", + "previous": "Previous", + "refresh": "Refresh", + "settings": "Settings", + "profile": "Profile", + "help": "Help", + "about": "About", + "language": "Language", + "autoDetect": "Auto-detect", + "changeAccountPassword": "Change your account password", + "passwordResetTitle": "Password Reset", + "passwordResetDescription": "You are about to reset your password. This will log you out of all active sessions.", + "enterSixDigitCode": "Enter the 6-digit code from the docker container logs for user:", + "enterNewPassword": "Enter your new password for user:", + "passwordsDoNotMatch": "Passwords do not match", + "passwordMinLength": "Password must be at least 6 characters long", + "passwordResetSuccess": "Password reset successfully! You can now log in with your new password.", + "failedToInitiatePasswordReset": "Failed to initiate password reset", + "failedToVerifyResetCode": "Failed to verify reset code", + "failedToCompletePasswordReset": "Failed to complete password reset", + "documentation": "Documentation", + "retry": "Retry", + "checking": "Checking...", + "checkingDatabase": "Checking database connection...", + "actions": "Actions", + "remove": "Remove", "revoke": "Revoke", - "create": "创建" + "create": "Create" }, "nav": { - "home": "首页", - "hosts": "主机", - "credentials": "全权证书", - "terminal": "终端", - "docker": "停靠栏", - "tunnels": "隧道设置", - "fileManager": "文件管理器", - "serverStats": "服务器统计", - "admin": "管理员", - "userProfile": "用户资料", - "tools": "工具", - "snippets": "片段", + "home": "Home", + "hosts": "Hosts", + "credentials": "Credentials", + "terminal": "Terminal", + "docker": "Docker", + "tunnels": "Tunnels", + "fileManager": "File Manager", + "serverStats": "Server Stats", + "admin": "Admin", + "userProfile": "User Profile", + "tools": "Tools", + "snippets": "Snippets", "newTab": "New Tab", - "splitScreen": "分割屏幕", - "closeTab": "关闭标签", - "sshManager": "SSH 管理器", - "hostManager": "主机管理器", - "cannotSplitTab": "无法拆分此标签", + "splitScreen": "Split Screen", + "closeTab": "Close Tab", + "sshManager": "SSH Manager", + "hostManager": "Host Manager", + "cannotSplitTab": "Cannot split this tab", "tabNavigation": "Tab Navigation", "hostTabTitle": "{{username}}@{{ip}}:{{port}}" }, "admin": { - "title": "管理员设置", + "title": "Admin Settings", "oidc": "OIDC", - "users": "用户", - "userManagement": "用户管理", - "makeAdmin": "管理员设置", - "removeAdmin": "删除管理员", + "users": "Users", + "userManagement": "User Management", + "makeAdmin": "Make Admin", + "removeAdmin": "Remove Admin", "deleteUser": "Delete user {{username}}? This cannot be undone.", - "allowRegistration": "允许注册", - "oidcSettings": "OIDC 设置", - "clientId": "客户端ID", - "clientSecret": "客户端密钥", - "issuerUrl": "发行者网址", - "authorizationUrl": "授权 URL", - "tokenUrl": "令牌网址", - "updateSettings": "更新设置", - "confirmDelete": "您确定要删除此用户吗?", + "allowRegistration": "Allow Registration", + "oidcSettings": "OIDC Settings", + "clientId": "Client ID", + "clientSecret": "Client Secret", + "issuerUrl": "Issuer URL", + "authorizationUrl": "Authorization URL", + "tokenUrl": "Token URL", + "updateSettings": "Update Settings", + "confirmDelete": "Are you sure you want to delete this user?", "confirmMakeAdmin": "Are you sure you want to make {{username}} an admin?", "confirmRemoveAdmin": "Are you sure you want to remove admin status from {{username}}?", - "externalAuthentication": "外部身份验证 (OIDC)", - "configureExternalProvider": "配置OIDC/OAuth2 身份验证的外部身份提供商。", - "userIdentifierPath": "用户标识路径", - "displayNamePath": "显示名称路径", - "scopes": "范围", - "saving": "保存中...", - "saveConfiguration": "保存配置", + "externalAuthentication": "External Authentication (OIDC)", + "configureExternalProvider": "Configure external identity provider for OIDC/OAuth2 authentication.", + "userIdentifierPath": "User Identifier Path", + "displayNamePath": "Display Name Path", + "scopes": "Scopes", + "saving": "Saving...", + "saveConfiguration": "Save Configuration", "reset": "Reset", - "success": "成功", - "loading": "加载中...", - "refresh": "刷新", - "loadingUsers": "正在加载用户...", - "username": "用户名", - "type": "类型", - "actions": "行动", - "external": "外部", - "local": "本地的", - "adminManagement": "管理管理", - "makeUserAdmin": "设置用户管理员", - "adding": "添加中...", - "currentAdmins": "当前管理员", - "adminBadge": "管理员", - "removeAdminButton": "删除管理员", - "general": "A. 概况", - "userRegistration": "用户注册", - "allowNewAccountRegistration": "允许新账户注册", - "allowPasswordLogin": "允许用户名/密码登录", + "success": "Success", + "loading": "Loading...", + "refresh": "Refresh", + "loadingUsers": "Loading users...", + "username": "Username", + "type": "Type", + "actions": "Actions", + "external": "External", + "local": "Local", + "adminManagement": "Admin Management", + "makeUserAdmin": "Make User Admin", + "adding": "Adding...", + "currentAdmins": "Current Admins", + "adminBadge": "Admin", + "removeAdminButton": "Remove Admin", + "general": "General", + "userRegistration": "User Registration", + "allowNewAccountRegistration": "Allow new account registration", + "allowPasswordLogin": "Allow username/password login", "missingRequiredFields": "Missing required fields: {{fields}}", - "oidcConfigurationUpdated": "OIDC 配置更新成功!", - "failedToFetchOidcConfig": "获取 OIDC 配置失败", - "failedToFetchRegistrationStatus": "获取注册状态失败", - "failedToFetchPasswordLoginStatus": "获取密码登录状态失败", - "failedToFetchUsers": "获取用户失败", - "oidcConfigurationDisabled": "OIDC 配置已成功禁用!", - "failedToUpdateOidcConfig": "更新OIDC配置失败", - "failedToDisableOidcConfig": "禁用 OIDC 配置失败", - "enterUsernameToMakeAdmin": "输入管理员用户名", + "oidcConfigurationUpdated": "OIDC configuration updated successfully!", + "failedToFetchOidcConfig": "Failed to fetch OIDC configuration", + "failedToFetchRegistrationStatus": "Failed to fetch registration status", + "failedToFetchPasswordLoginStatus": "Failed to fetch password login status", + "failedToFetchUsers": "Failed to fetch users", + "oidcConfigurationDisabled": "OIDC configuration disabled successfully!", + "failedToUpdateOidcConfig": "Failed to update OIDC configuration", + "failedToDisableOidcConfig": "Failed to disable OIDC configuration", + "enterUsernameToMakeAdmin": "Enter username to make admin", "userIsNowAdmin": "User {{username}} is now an admin", - "failedToMakeUserAdmin": "无法设置用户管理员", + "failedToMakeUserAdmin": "Failed to make user admin", "removeAdminStatus": "Remove admin status from {{username}}?", "adminStatusRemoved": "Admin status removed from {{username}}", - "failedToRemoveAdminStatus": "删除管理状态失败", + "failedToRemoveAdminStatus": "Failed to remove admin status", "userDeletedSuccessfully": "User {{username}} deleted successfully", - "failedToDeleteUser": "删除用户失败", - "overrideUserInfoUrl": "覆盖用户信息 URL (不需要)", - "failedToFetchSessions": "获取会话失败", - "sessionRevokedSuccessfully": "会话已成功取消", - "failedToRevokeSession": "取消会话失败", - "confirmRevokeSession": "您确定要撤销此会话吗?", - "confirmRevokeAllSessions": "您确定要撤销此用户的所有会话吗?", - "failedToRevokeSessions": "取消会话失败", - "sessionsRevokedSuccessfully": "会话已成功取消", - "linkToPasswordAccount": "链接到密码帐户", - "linkOIDCDialogTitle": "将OIDC账户链接到密码帐户", + "failedToDeleteUser": "Failed to delete user", + "overrideUserInfoUrl": "Override User Info URL (not required)", + "failedToFetchSessions": "Failed to fetch sessions", + "sessionRevokedSuccessfully": "Session revoked successfully", + "failedToRevokeSession": "Failed to revoke session", + "confirmRevokeSession": "Are you sure you want to revoke this session?", + "confirmRevokeAllSessions": "Are you sure you want to revoke all sessions for this user?", + "failedToRevokeSessions": "Failed to revoke sessions", + "sessionsRevokedSuccessfully": "Sessions revoked successfully", + "linkToPasswordAccount": "Link to Password Account", + "linkOIDCDialogTitle": "Link OIDC Account to Password Account", "linkOIDCDialogDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "createUser": "创建用户", - "createUserDescription": "使用用户名和密码创建新的本地用户", - "enterUsername": "输入用户名", - "enterPassword": "输入密码", + "createUser": "Create User", + "createUserDescription": "Create a new local user with username and password", + "enterUsername": "Enter username", + "enterPassword": "Enter password", "userCreatedSuccessfully": "User {{username}} created successfully", - "failedToCreateUser": "创建用户失败", - "manageUser": "管理用户", - "manageUserDescription": "管理用户设置、角色和权限", - "authType": "身份验证类型", - "adminStatus": "管理员状态", - "userId": "用户 ID", - "regularUser": "普通用户", - "adminPrivileges": "管理员权限", - "administratorRole": "管理员角色", - "administratorRoleDescription": "授予全系统访问权限和管理权限", - "passwordManagement": "密码管理", - "passwordResetWarning": "重置用户密码将删除他们所有的数据(SSH 主机、 凭据、 设置)。此操作无法撤消。", - "resetUserPassword": "重置用户密码", - "resettingPassword": "正在重置...", + "failedToCreateUser": "Failed to create user", + "manageUser": "Manage User", + "manageUserDescription": "Manage user settings, roles, and permissions", + "authType": "Authentication Type", + "adminStatus": "Admin Status", + "userId": "User ID", + "regularUser": "Regular User", + "adminPrivileges": "Administrator Privileges", + "administratorRole": "Administrator Role", + "administratorRoleDescription": "Grant full system access and management privileges", + "passwordManagement": "Password Management", + "passwordResetWarning": "Resetting a user's password will delete all their data (SSH hosts, credentials, settings). This action cannot be undone.", + "resetUserPassword": "Reset User Password", + "resettingPassword": "Resetting...", "passwordResetInitiated": "Password reset initiated for {{username}}. Reset code sent.", - "failedToResetPassword": "启动密码重置失败", - "sessionManagement": "会话管理", - "revokeAllSessions": "撤销所有会话", - "revokeAllSessionsDescription": "强制退出所有设备和会话", - "revoking": "正在撤销...", - "revoke": "全部取消", - "dangerZone": "危险区域", - "deleteUserTitle": "删除用户帐户", - "deleteUserWarning": "永久删除此用户帐户和所有相关数据。此操作无法撤消。", - "deleting": "正在删除...", - "cannotDeleteSelf": "您不能删除您自己的帐户", - "cannotRemoveLastAdmin": "无法删除最后一个管理员", - "cannotRemoveOwnAdmin": "您不能删除您自己的管理员权限", - "cannotModifyOwnAdminStatus": "您不能修改您自己的管理状态", - "dualAuth": "双重认证", - "externalOIDC": "外部 (OIDC)", - "localPassword": "本地密码", - "confirmRevokeOwnSessions": "您确定要撤销所有您自己的会话吗?您将被注销。", - "linkOIDCWarningTitle": "警告:OIDC 用户数据将被删除", - "linkOIDCActionDeleteUser": "删除OIDC 用户帐户及其所有数据", - "linkOIDCActionAddCapability": "将OIDC 登录能力添加到目标密码帐户", - "linkOIDCActionDualAuth": "允许密码帐户同时使用密码和 OIDC 登录", - "linkTargetUsernameLabel": "目标密码帐户用户名", - "linkTargetUsernamePlaceholder": "输入密码帐户的用户名", - "linkAccountsButton": "链接账户", - "linkingAccounts": "链接中...", + "failedToResetPassword": "Failed to initiate password reset", + "sessionManagement": "Session Management", + "revokeAllSessions": "Revoke All Sessions", + "revokeAllSessionsDescription": "Force logout from all devices and sessions", + "revoking": "Revoking...", + "revoke": "Revoke All", + "dangerZone": "Danger Zone", + "deleteUserTitle": "Delete User Account", + "deleteUserWarning": "Permanently delete this user account and all associated data. This action cannot be undone.", + "deleting": "Deleting...", + "cannotDeleteSelf": "You cannot delete your own account", + "cannotRemoveLastAdmin": "Cannot remove the last administrator", + "cannotRemoveOwnAdmin": "You cannot remove your own admin privileges", + "cannotModifyOwnAdminStatus": "You cannot modify your own admin status", + "dualAuth": "Dual Auth", + "externalOIDC": "External (OIDC)", + "localPassword": "Local Password", + "confirmRevokeOwnSessions": "Are you sure you want to revoke all your own sessions? You will be logged out.", + "linkOIDCWarningTitle": "Warning: OIDC User Data Will Be Deleted", + "linkOIDCActionDeleteUser": "Delete the OIDC user account and all their data", + "linkOIDCActionAddCapability": "Add OIDC login capability to the target password account", + "linkOIDCActionDualAuth": "Allow the password account to login with both password and OIDC", + "linkTargetUsernameLabel": "Target Password Account Username", + "linkTargetUsernamePlaceholder": "Enter username of password account", + "linkAccountsButton": "Link Accounts", + "linkingAccounts": "Linking...", "accountsLinkedSuccessfully": "OIDC user {{oidcUsername}} has been linked to {{targetUsername}}", - "failedToLinkAccounts": "连接帐户失败", - "linkTargetUsernameRequired": "目标用户名是必需的", - "unlinkOIDCTitle": "取消链接 OIDC 认证", + "failedToLinkAccounts": "Failed to link accounts", + "linkTargetUsernameRequired": "Target username is required", + "unlinkOIDCTitle": "Unlink OIDC Authentication", "unlinkOIDCDescription": "Remove OIDC authentication from {{username}}? The user will only be able to login with username/password after this.", "unlinkOIDCSuccess": "OIDC unlinked from {{username}}", - "failedToUnlinkOIDC": "断开连接 OIDC 失败", - "databaseSecurity": "数据库安全", - "encryptionStatus": "加密状态", - "encryptionEnabled": "启用加密", - "enabled": "已启用", - "disabled": "已禁用", - "keyId": "密钥ID", - "created": "已创建", - "migrationStatus": "迁移状态", - "migrationCompleted": "迁移完成", - "migrationRequired": "需要迁移", - "deviceProtectedMasterKey": "受保护的主密钥", - "legacyKeyStorage": "旧密钥存储", - "masterKeyEncryptedWithDeviceFingerprint": "使用环境指纹加密主密钥(KEK 保护活动)", - "keyNotProtectedByDeviceBinding": "不受环境绑定保护的密钥(推荐升级)", + "failedToUnlinkOIDC": "Failed to unlink OIDC", + "databaseSecurity": "Database Security", + "encryptionStatus": "Encryption Status", + "encryptionEnabled": "Encryption Enabled", + "enabled": "Enabled", + "disabled": "Disabled", + "keyId": "Key ID", + "created": "Created", + "migrationStatus": "Migration Status", + "migrationCompleted": "Migration completed", + "migrationRequired": "Migration required", + "deviceProtectedMasterKey": "Environment-Protected Master Key", + "legacyKeyStorage": "Legacy Key Storage", + "masterKeyEncryptedWithDeviceFingerprint": "Master key encrypted with environment fingerprint (KEK protection active)", + "keyNotProtectedByDeviceBinding": "Key not protected by environment binding (upgrade recommended)", "valid": "Valid", - "initializeDatabaseEncryption": "初始化数据库加密", - "enableAes256EncryptionWithDeviceBinding": "启用带有环境主密钥保护的 AES-256 加密。这将为SSH 密钥、密码和身份验证令牌创建企业级安全。", - "featuresEnabled": "功能已启用:", - "aes256GcmAuthenticatedEncryption": "AES-256-GCM 身份验证加密", - "deviceFingerprintMasterKeyProtection": "环境指纹主密钥保护 (KEK)", - "pbkdf2KeyDerivation": "PBKDF2 密钥导出与 100K 迭代的", - "automaticKeyManagement": "自动密钥管理和旋转", - "initializing": "初始化中...", - "initializeEnterpriseEncryption": "初始化企业加密", - "migrateExistingData": "迁移现有数据", - "encryptExistingUnprotectedData": "在您的数据库中加密现有的未保护数据。此过程是安全的,并创建自动备份。", - "testMigrationDryRun": "验证加密兼容性", - "migrating": "迁移中...", - "migrateData": "迁移数据", - "securityInformation": "安全信息", - "sshPrivateKeysEncryptedWithAes256": "SSH 私钥和密码使用 AES-256-GCM 加密", - "userAuthTokensProtected": "用户身份验证令牌和 2FA 密钥受到保护", - "masterKeysProtectedByDeviceFingerprint": "主加密密钥受设备指纹保护(KEK)", - "keysBoundToServerInstance": "按键绑定到当前服务器环境 (可通过环境变量迁移)", - "pbkdf2HkdfKeyDerivation": "PBKDF2 + HKDF 密钥导出与 100K 迭代的", - "backwardCompatibleMigration": "迁移过程中所有数据仍然是后向兼容的", - "enterpriseGradeSecurityActive": "企业级安全活动", - "masterKeysProtectedByDeviceBinding": "您的主加密密钥受环境指纹保护。这将使用服务器主机名、路径和其他环境信息生成保护密钥。 要迁移服务器,请在新服务器上设置DB_ENCRYPION_KEY 环境变量。", - "important": "重要的", - "keepEncryptionKeysSecure": "确保数据安全:定期备份您的数据库文件和服务器配置。 要迁移到新服务器,请在新环境中设置DB_ENCRYPION_KEY 环境变量,或保持相同的主机名和目录结构。", - "loadingEncryptionStatus": "正在加密状态...", - "testMigrationDescription": "验证现有数据是否可以安全迁移到加密格式,而不会实际修改任何数据", - "serverMigrationGuide": "服务器迁移指南", - "migrationInstructions": "要将加密数据迁移到新服务器:1) 备份数据库文件,2) 在新服务器上设置环境变量 DB_ENCRYPTION_KEY=\"您的密钥\",3) 还原数据库文件", - "environmentProtection": "环境保护", - "environmentProtectionDesc": "保护基于服务器环境信息(主机名、路径等)、可通过环境变量迁移的加密密钥", - "verificationCompleted": "兼容性验证已完成 - 数据未更改", - "verificationInProgress": "验证完成", - "dataMigrationCompleted": "数据迁移成功完成!", - "verificationFailed": "兼容性验证失败", - "migrationFailed": "迁移失败", - "runningVerification": "正在运行兼容性验证...", - "startingMigration": "正在开始迁移...", - "hardwareFingerprintSecurity": "硬件指纹安全", - "hardwareBoundEncryption": "硬件绑定加密活动中", - "masterKeysNowProtectedByHardwareFingerprint": "主密钥现在由实际硬件指纹保护而不是环境变量", - "cpuSerialNumberDetection": "CPU 序列号检测", - "motherboardUuidIdentification": "主板UUID 识别", - "diskSerialNumberVerification": "磁盘序列号验证", - "biosSerialNumberCheck": "BIOS 序列号检查", - "stableMacAddressFiltering": "稳定的 MAC 地址过滤", - "databaseFileEncryption": "数据库文件加密", - "dualLayerProtection": "双层保护活动中", - "bothFieldAndFileEncryptionActive": "现场级和文件级加密现在都在激活以获得最大安全", - "fieldLevelAes256Encryption": "敏感数据的字段级AES-256加密", - "fileLevelDatabaseEncryption": "带硬件绑定的文件级数据库加密", - "hardwareBoundFileKeys": "硬件绑定文件加密密钥", - "automaticEncryptedBackups": "自动加密备份创建", - "createEncryptedBackup": "创建加密备份", - "creatingBackup": "正在创建备份...", - "backupCreated": "备份已创建", - "encryptedBackupCreatedSuccessfully": "已成功创建加密备份", - "backupCreationFailed": "备份创建失败", - "databaseMigration": "数据库迁移", - "exportForMigration": "导出为移徙服务", - "exportDatabaseForHardwareMigration": "将数据库导出为 SQLite 文件,并将解密数据转换到新硬件", + "initializeDatabaseEncryption": "Initialize Database Encryption", + "enableAes256EncryptionWithDeviceBinding": "Enable AES-256 encryption with environment-bound master key protection. This creates enterprise-grade security for SSH keys, passwords, and authentication tokens.", + "featuresEnabled": "Features enabled:", + "aes256GcmAuthenticatedEncryption": "AES-256-GCM authenticated encryption", + "deviceFingerprintMasterKeyProtection": "Environment fingerprint master key protection (KEK)", + "pbkdf2KeyDerivation": "PBKDF2 key derivation with 100K iterations", + "automaticKeyManagement": "Automatic key management and rotation", + "initializing": "Initializing...", + "initializeEnterpriseEncryption": "Initialize Enterprise Encryption", + "migrateExistingData": "Migrate Existing Data", + "encryptExistingUnprotectedData": "Encrypt existing unprotected data in your database. This process is safe and creates automatic backups.", + "testMigrationDryRun": "Verify Encryption Compatibility", + "migrating": "Migrating...", + "migrateData": "Migrate Data", + "securityInformation": "Security Information", + "sshPrivateKeysEncryptedWithAes256": "SSH private keys and passwords are encrypted with AES-256-GCM", + "userAuthTokensProtected": "User authentication tokens and 2FA secrets are protected", + "masterKeysProtectedByDeviceFingerprint": "Master encryption keys are protected by device fingerprint (KEK)", + "keysBoundToServerInstance": "Keys are bound to current server environment (migratable via environment variables)", + "pbkdf2HkdfKeyDerivation": "PBKDF2 + HKDF key derivation with 100K iterations", + "backwardCompatibleMigration": "All data remains backward compatible during migration", + "enterpriseGradeSecurityActive": "Enterprise-Grade Security Active", + "masterKeysProtectedByDeviceBinding": "Your master encryption keys are protected by environment fingerprinting. This uses server hostname, paths, and other environment info to generate protection keys. To migrate servers, set the DB_ENCRYPTION_KEY environment variable on the new server.", + "important": "Important", + "keepEncryptionKeysSecure": "Ensure data security: regularly backup your database files and server configuration. To migrate to a new server, set the DB_ENCRYPTION_KEY environment variable on the new environment, or maintain the same hostname and directory structure.", + "loadingEncryptionStatus": "Loading encryption status...", + "testMigrationDescription": "Verify that existing data can be safely migrated to encrypted format without actually modifying any data", + "serverMigrationGuide": "Server Migration Guide", + "migrationInstructions": "To migrate encrypted data to a new server: 1) Backup database files, 2) Set environment variable DB_ENCRYPTION_KEY=\"your-key\" on new server, 3) Restore database files", + "environmentProtection": "Environment Protection", + "environmentProtectionDesc": "Protects encryption keys based on server environment info (hostname, paths, etc.), migratable via environment variables", + "verificationCompleted": "Compatibility verification completed - no data was changed", + "verificationInProgress": "Verification completed", + "dataMigrationCompleted": "Data migration completed successfully!", + "verificationFailed": "Compatibility verification failed", + "migrationFailed": "Migration failed", + "runningVerification": "Running compatibility verification...", + "startingMigration": "Starting migration...", + "hardwareFingerprintSecurity": "Hardware Fingerprint Security", + "hardwareBoundEncryption": "Hardware-Bound Encryption Active", + "masterKeysNowProtectedByHardwareFingerprint": "Master keys are now protected by real hardware fingerprinting instead of environment variables", + "cpuSerialNumberDetection": "CPU serial number detection", + "motherboardUuidIdentification": "Motherboard UUID identification", + "diskSerialNumberVerification": "Disk serial number verification", + "biosSerialNumberCheck": "BIOS serial number check", + "stableMacAddressFiltering": "Stable MAC address filtering", + "databaseFileEncryption": "Database File Encryption", + "dualLayerProtection": "Dual-Layer Protection Active", + "bothFieldAndFileEncryptionActive": "Both field-level and file-level encryption are now active for maximum security", + "fieldLevelAes256Encryption": "Field-level AES-256 encryption for sensitive data", + "fileLevelDatabaseEncryption": "File-level database encryption with hardware binding", + "hardwareBoundFileKeys": "Hardware-bound file encryption keys", + "automaticEncryptedBackups": "Automatic encrypted backup creation", + "createEncryptedBackup": "Create Encrypted Backup", + "creatingBackup": "Creating Backup...", + "backupCreated": "Backup Created", + "encryptedBackupCreatedSuccessfully": "Encrypted backup created successfully", + "backupCreationFailed": "Backup creation failed", + "databaseMigration": "Database Migration", + "exportForMigration": "Export for Migration", + "exportDatabaseForHardwareMigration": "Export database as SQLite file with decrypted data for migration to new hardware", "exportDatabase": "Export SQLite Database", - "exporting": "导出中...", - "exportCreated": "已创建 SQLite 导出", - "exportContainsDecryptedData": "SQLite 导出包含解密的数据 - 保持安全!", - "databaseExportedSuccessfully": "SQLite 数据库导出成功", - "databaseExportFailed": "SQLite 数据库导出失败", - "importFromMigration": "从迁移导入", - "importDatabaseFromAnotherSystem": "从另一个系统或硬件导入 SQLite 数据库", + "exporting": "Exporting...", + "exportCreated": "SQLite Export Created", + "exportContainsDecryptedData": "SQLite export contains decrypted data - keep secure!", + "databaseExportedSuccessfully": "SQLite database exported successfully", + "databaseExportFailed": "SQLite database export failed", + "importFromMigration": "Import from Migration", + "importDatabaseFromAnotherSystem": "Import SQLite database from another system or hardware", "importDatabase": "Import SQLite Database", - "importing": "导入中...", - "selectedFile": "选择的 SQLite 文件", - "importWillReplaceExistingData": "SQLite 导入将替换现有数据 - 推荐备份!", - "pleaseSelectImportFile": "请选择一个 SQLite 导入文件", - "databaseImportedSuccessfully": "SQLite 数据库导入成功", - "databaseImportFailed": "SQLite 数据库导入失败", - "manageEncryptionAndBackups": "管理加密密钥、数据库安全和备份操作", - "activeSecurityFeatures": "目前积极的安全措施和保护措施", - "deviceBindingTechnology": "基于硬件的高级密钥保护技术", - "backupAndRecovery": "安全备份创建和数据库恢复选项", - "crossSystemDataTransfer": "跨越不同系统进出口数据库", - "noMigrationNeeded": "无需迁移", - "encryptionKey": "加密密钥", - "keyProtection": "密钥保护", - "active": "已启用", - "legacy": "遗留问题", - "dataStatus": "数据状态", - "encrypted": "加密的", - "needsMigration": "需要迁移", - "ready": "准备好", - "initializeEncryption": "初始化加密", - "initialize": "初始化", - "test": "测试", - "migrate": "迁移", - "backup": "备份", - "createBackup": "创建备份", - "exportImport": "导出/导入", - "export": "导出", - "import": "导入", - "passwordRequired": "需要密码", - "confirmExport": "确认导出", - "exportDescription": "导出 SSH 主机和凭据为 SQLite 文件", - "importDescription": "导入含增量合并的 SQLite 文件 (skips 重复)", - "criticalWarning": "临界警告", - "cannotDisablePasswordLoginWithoutOIDC": "未配置OIDC 无法禁用密码登录!您必须先配置OIDC 身份验证才能禁用密码登录,否则您将失去访问 Termix。", - "confirmDisablePasswordLogin": "您确定要禁用密码登录吗? 请确保OIDC 已正确配置并正常工作,然后继续操作,否则您将无法访问您的 Termixed 实例。", - "passwordLoginDisabled": "成功禁用密码登录", - "passwordLoginAndRegistrationDisabled": "密码登录和新账户注册成功禁用", - "requiresPasswordLogin": "需要密码登录已启用", - "passwordLoginDisabledWarning": "密码登录已禁用。请确保OIDC 配置正确,否则您将无法登录到 Termix。", - "oidcRequiredWarning": "CRITICAL: 密码登录已禁用。如果您重置或配置错误OIDC,您将失去对 Termixed 和积木实例的所有访问权限。 仅在您绝对确定的情况下继续。", - "confirmDisableOIDCWarning": "警告:当密码登录也被禁用时,您将禁用OIDC。 这将使您的 Termixed 实例更加丰富,您将失去所有访问权限。您确定要继续吗?", - "failedToUpdatePasswordLoginStatus": "更新密码登录状态失败", - "loadingSessions": "正在载入会话...", - "noActiveSessions": "未找到活动的会话。", - "device": "设备", - "user": "用户", - "lastActive": "上次激活", - "expires": "过期时间", + "importing": "Importing...", + "selectedFile": "Selected SQLite File", + "importWillReplaceExistingData": "SQLite import will replace existing data - backup recommended!", + "pleaseSelectImportFile": "Please select a SQLite import file", + "databaseImportedSuccessfully": "SQLite database imported successfully", + "databaseImportFailed": "SQLite database import failed", + "manageEncryptionAndBackups": "Manage encryption keys, database security, and backup operations", + "activeSecurityFeatures": "Currently active security measures and protections", + "deviceBindingTechnology": "Advanced hardware-based key protection technology", + "backupAndRecovery": "Secure backup creation and database recovery options", + "crossSystemDataTransfer": "Export and import databases across different systems", + "noMigrationNeeded": "No migration needed", + "encryptionKey": "Encryption Key", + "keyProtection": "Key Protection", + "active": "Active", + "legacy": "Legacy", + "dataStatus": "Data Status", + "encrypted": "Encrypted", + "needsMigration": "Needs Migration", + "ready": "Ready", + "initializeEncryption": "Initialize Encryption", + "initialize": "Initialize", + "test": "Test", + "migrate": "Migrate", + "backup": "Backup", + "createBackup": "Create Backup", + "exportImport": "Export/Import", + "export": "Export", + "import": "Import", + "passwordRequired": "Password required", + "confirmExport": "Confirm Export", + "exportDescription": "Export SSH hosts and credentials as SQLite file", + "importDescription": "Import SQLite file with incremental merge (skips duplicates)", + "criticalWarning": "Critical Warning", + "cannotDisablePasswordLoginWithoutOIDC": "Cannot disable password login without OIDC configured! You must configure OIDC authentication before disabling password login, or you will lose access to Termix.", + "confirmDisablePasswordLogin": "Are you sure you want to disable password login? Make sure OIDC is properly configured and working before proceeding, or you will lose access to your Termix instance.", + "passwordLoginDisabled": "Password login disabled successfully", + "passwordLoginAndRegistrationDisabled": "Password login and new account registration disabled successfully", + "requiresPasswordLogin": "Requires password login enabled", + "passwordLoginDisabledWarning": "Password login is disabled. Ensure OIDC is properly configured or you will not be able to log in to Termix.", + "oidcRequiredWarning": "CRITICAL: Password login is disabled. If you reset or misconfigure OIDC, you will lose all access to Termix and brick your instance. Only proceed if you are absolutely certain.", + "confirmDisableOIDCWarning": "WARNING: You are about to disable OIDC while password login is also disabled. This will brick your Termix instance and you will lose all access. Are you absolutely sure you want to proceed?", + "failedToUpdatePasswordLoginStatus": "Failed to update password login status", + "loadingSessions": "Loading sessions...", + "noActiveSessions": "No active sessions found.", + "device": "Device", + "user": "User", + "lastActive": "Last Active", + "expires": "Expires", "revoked": "Revoked", - "revokeAllUserSessionsTitle": "撤销此用户的所有会话", - "revokeAll": "全部取消", - "linkOidcToPasswordAccount": "将OIDC账户链接到密码帐户", + "revokeAllUserSessionsTitle": "Revoke all sessions for this user", + "revokeAll": "Revoke All", + "linkOidcToPasswordAccount": "Link OIDC Account to Password Account", "linkOidcToPasswordAccountDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "linkOidcWarningTitle": "警告:OIDC 用户数据将被删除", - "linkOidcWarningDescription": "此操作将:", - "linkOidcActionDeleteUser": "删除OIDC 用户帐户及其所有数据", - "linkOidcActionAddCapability": "将OIDC 登录能力添加到目标密码帐户", - "linkOidcActionDualAuth": "允许密码帐户同时使用密码和 OIDC 登录", - "passwordMinLength": "密码必须至少 6 个字符", - "currentRoles": "当前角色", - "noRolesAssigned": "未分配角色", - "assignNewRole": "分配新角色" + "linkOidcWarningTitle": "Warning: OIDC User Data Will Be Deleted", + "linkOidcWarningDescription": "This action will:", + "linkOidcActionDeleteUser": "Delete the OIDC user account and all their data", + "linkOidcActionAddCapability": "Add OIDC login capability to the target password account", + "linkOidcActionDualAuth": "Allow the password account to login with both password and OIDC", + "passwordMinLength": "Password must be at least 6 characters", + "currentRoles": "Current Roles", + "noRolesAssigned": "No roles assigned", + "assignNewRole": "Assign New Role" }, "hosts": { - "title": "主机管理器", - "sshHosts": "SSH 主机", - "noHosts": "没有 SSH 主机", - "noHostsMessage": "您尚未添加任何 SSH 主机。点击“添加主机”开始。", - "loadingHosts": "正在加载主机...", - "failedToLoadHosts": "加载主机失败", - "retry": "重试", - "refresh": "刷新", - "optional": "可选的", + "title": "Host Manager", + "sshHosts": "SSH Hosts", + "noHosts": "No SSH Hosts", + "noHostsMessage": "You haven't added any SSH hosts yet. Click \"Add Host\" to get started.", + "loadingHosts": "Loading hosts...", + "failedToLoadHosts": "Failed to load hosts", + "retry": "Retry", + "refresh": "Refresh", + "optional": "Optional", "hostsCount": "{{count}} hosts", - "importJson": "导入 JSON", - "importing": "导入中...", - "importJsonTitle": "从 JSON 导入 SSH 主机", - "importJsonDesc": "上传JSON文件批量导入多个SSH主机 (最大100)。", - "downloadSample": "下载示例", - "formatGuide": "格式指南", + "importJson": "Import JSON", + "importing": "Importing...", + "importJsonTitle": "Import SSH Hosts from JSON", + "importJsonDesc": "Upload a JSON file to bulk import multiple SSH hosts (max 100).", + "downloadSample": "Download Sample", + "formatGuide": "Format Guide", "exportCredentialWarning": "Warning: Host \"{{name}}\" uses credential authentication. The exported file will not include the credential data and will need to be manually reconfigured after import. Do you want to continue?", "exportSensitiveDataWarning": "Warning: Host \"{{name}}\" contains sensitive authentication data (password/SSH key). The exported file will include this data in plaintext. Please keep the file secure and delete it after use. Do you want to continue?", - "uncategorized": "未分类", + "uncategorized": "Uncategorized", "confirmDelete": "Are you sure you want to delete \"{{name}}\" ?", - "failedToDeleteHost": "删除主机失败", - "failedToExportHost": "导出主机失败。请确保您登录并访问主机数据。", - "jsonMustContainHosts": "JSON必须包含“主机”数组或主机数组", - "noHostsInJson": "在 JSON 文件中没有找到主机", - "maxHostsAllowed": "每次导入最多允许100个主机", + "failedToDeleteHost": "Failed to delete host", + "failedToExportHost": "Failed to export host. Please ensure you're logged in and have access to the host data.", + "jsonMustContainHosts": "JSON must contain a \"hosts\" array or be an array of hosts", + "noHostsInJson": "No hosts found in JSON file", + "maxHostsAllowed": "Maximum 100 hosts allowed per import", "importCompleted": "Import completed: {{success}} successful, {{failed}} failed", - "importFailed": "导入失败", - "importError": "导入错误", - "failedToImportJson": "导入 JSON 文件失败", - "connectionDetails": "连接详情", - "organization": "组织", - "ipAddress": "IP 地址", - "port": "端口", - "name": "名称", - "username": "用户名", - "folder": "文件夹", - "tags": "标签", - "pin": "置顶", - "notes": "注", - "expirationDate": "过期日期", - "passwordRequired": "使用密码验证时需要密码", - "sshKeyRequired": "使用密钥验证时需要 SSH 私钥", - "keyTypeRequired": "使用密钥身份验证时需要密钥类型", - "mustSelectValidSshConfig": "必须从列表中选择一个有效的 SSH 配置", - "addHost": "添加主机", - "editHost": "编辑主机", - "cloneHost": "复制主机", - "updateHost": "更新主机", + "importFailed": "Import failed", + "importError": "Import error", + "failedToImportJson": "Failed to import JSON file", + "connectionDetails": "Connection Details", + "organization": "Organization", + "ipAddress": "IP Address", + "port": "Port", + "name": "Name", + "username": "Username", + "folder": "Folder", + "tags": "Tags", + "pin": "Pin", + "notes": "Notes", + "expirationDate": "Expiration Date", + "passwordRequired": "Password is required when using password authentication", + "sshKeyRequired": "SSH Private Key is required when using key authentication", + "keyTypeRequired": "Key Type is required when using key authentication", + "mustSelectValidSshConfig": "Must select a valid SSH configuration from the list", + "addHost": "Add Host", + "editHost": "Edit Host", + "cloneHost": "Clone Host", + "updateHost": "Update Host", "hostUpdatedSuccessfully": "Host \"{{name}}\" updated successfully!", "hostAddedSuccessfully": "Host \"{{name}}\" added successfully!", "hostDeletedSuccessfully": "Host \"{{name}}\" deleted successfully!", - "failedToSaveHost": "无法保存主机。请重试。", - "savingHost": "正在保存主机...", - "updatingHost": "正在更新主机...", - "cloningHost": "正在克隆主机...", - "enableTerminal": "启用终端", - "enableTerminalDesc": "启用/禁用终端标签中的主机可见性", - "enableTunnel": "启用Tunnel", - "enableTunnelDesc": "启用/禁用隧道选项卡中的主机可见性", - "enableFileManager": "启用文件管理器", - "enableFileManagerDesc": "在文件管理器选项卡中启用/禁用主机可见性", - "enableDockerDesc": "启用/禁用停靠选项卡中的主机可见性", - "enableDocker": "启用停靠栏", - "defaultPath": "默认路径", - "defaultPathDesc": "打开主机文件管理器时的默认目录", - "tunnelConnections": "隧道连接", - "connection": "连接", - "remove": "删除", - "sourcePort": "源端口", - "sourcePortDesc": " (ource refers to the current Connection details in General tab", - "endpointPort": "端点端口", - "endpointSshConfig": "端点SSH 配置", + "failedToSaveHost": "Failed to save host. Please try again.", + "savingHost": "Saving host...", + "updatingHost": "Updating host...", + "cloningHost": "Cloning host...", + "enableTerminal": "Enable Terminal", + "enableTerminalDesc": "Enable/disable host visibility in Terminal tab", + "enableTunnel": "Enable Tunnel", + "enableTunnelDesc": "Enable/disable host visibility in Tunnel tab", + "enableFileManager": "Enable File Manager", + "enableFileManagerDesc": "Enable/disable host visibility in File Manager tab", + "enableDockerDesc": "Enable/disable host visibility in Docker tab", + "enableDocker": "Enable Docker", + "defaultPath": "Default Path", + "defaultPathDesc": "Default directory when opening file manager for this host", + "tunnelConnections": "Tunnel Connections", + "connection": "Connection", + "remove": "Remove", + "sourcePort": "Source Port", + "sourcePortDesc": " (Source refers to the Current Connection Details in the General tab)", + "endpointPort": "Endpoint Port", + "endpointSshConfig": "Endpoint SSH Configuration", "tunnelForwardDescription": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", - "maxRetries": "最大重试次数", - "maxRetriesDescription": "重新尝试隧道连接的最大次数。", - "retryInterval": "重试间隔 (秒)", - "retryIntervalDescription": "重试之间等待的时间。", - "autoStartContainer": "容器启动时自动启动", - "autoStartDesc": "当容器启动时自动启动隧道。", - "addConnection": "添加隧道连接", - "sshpassRequired": "密码认证需要Sshpass", - "sshpassRequiredDesc": "对于隧道中的密码身份验证,必须在系统上安装sshpass。", - "otherInstallMethods": "其他安装方式:", - "debianUbuntuEquivalent": "(Debian/Ubuntu) 或等效的 OS。", - "or": "或", + "maxRetries": "Max Retries", + "maxRetriesDescription": "Maximum number of retry attempts for tunnel connection.", + "retryInterval": "Retry Interval (seconds)", + "retryIntervalDescription": "Time to wait between retry attempts.", + "autoStartContainer": "Auto Start on Container Launch", + "autoStartDesc": "Automatically start this tunnel when the container launches", + "addConnection": "Add Tunnel Connection", + "sshpassRequired": "Sshpass Required For Password Authentication", + "sshpassRequiredDesc": "For password authentication in tunnels, sshpass must be installed on the system.", + "otherInstallMethods": "Other installation methods:", + "debianUbuntuEquivalent": "(Debian/Ubuntu) or the equivalent for your OS.", + "or": "or", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "窗口", - "sshServerConfigRequired": "需要 SSH 服务器配置", - "sshServerConfigDesc": "对于隧道连接,必须配置SSH服务器以允许端口转发:", - "gatewayPortsYes": "将远程端口绑定到所有接口", - "allowTcpForwardingYes": "启用端口转发功能", - "permitRootLoginYes": "如果使用 root 用户来隧道设置", - "editSshConfig": "编辑 /etc/ssh/sshd_config 并重启 SSH: sudo systemctl 重启 sshd", - "upload": "上传", - "authentication": "认证", - "password": "密码", - "key": "关键字", - "credential": "凭据", - "none": "无", - "selectCredential": "选择凭据", - "selectCredentialPlaceholder": "选择凭据...", - "credentialRequired": "使用凭据身份验证时需要凭据", - "credentialDescription": "选择凭据将覆盖当前用户名并使用凭据的身份验证信息。", - "cannotChangeAuthAsSharedUser": "无法将身份验证改变为共享用户", - "sshPrivateKey": "SSH 私钥", - "keyPassword": "密钥密码", - "keyType": "密钥类型", - "autoDetect": "自动检测", + "windows": "Windows", + "sshServerConfigRequired": "SSH Server Configuration Required", + "sshServerConfigDesc": "For tunnel connections, the SSH server must be configured to allow port forwarding:", + "gatewayPortsYes": "to bind remote ports to all interfaces", + "allowTcpForwardingYes": "to enable port forwarding", + "permitRootLoginYes": "if using root user for tunneling", + "editSshConfig": "Edit /etc/ssh/sshd_config and restart SSH: sudo systemctl restart sshd", + "upload": "Upload", + "authentication": "Authentication", + "password": "Password", + "key": "Key", + "credential": "Credential", + "none": "None", + "selectCredential": "Select Credential", + "selectCredentialPlaceholder": "Choose a credential...", + "credentialRequired": "Credential is required when using credential authentication", + "credentialDescription": "Selecting a credential will overwrite the current username and use the credential's authentication details.", + "cannotChangeAuthAsSharedUser": "Cannot change authentication as shared user", + "sshPrivateKey": "SSH Private Key", + "keyPassword": "Key Password", + "keyType": "Key Type", + "autoDetect": "Auto-detect", "rsa": "RSA", "ed25519": "ED25519", "ecdsaNistP256": "ECDSA NIST P-256", @@ -885,282 +885,282 @@ "dsa": "DSA", "rsaSha2256": "RSA SHA2-256", "rsaSha2512": "RSA SHA2-512", - "uploadFile": "上传文件", - "pasteKey": "粘贴密钥", - "updateKey": "更新密钥", - "existingKey": "现有密钥(点击更改)", - "existingCredential": "现有凭据(点击更改)", - "addTagsSpaceToAdd": "添加标签 (要添加的空间)", - "terminalBadge": "终端", - "tunnelBadge": "隧道:", - "fileManagerBadge": "文件管理器", - "general": "A. 概况", - "terminal": "终端", - "tunnel": "隧道:", - "fileManager": "文件管理器", - "serverStats": "服务器统计", - "hostViewer": "主机查看器", - "enableServerStats": "启用服务器统计", - "enableServerStatsDesc": "启用/禁用此主机的服务器统计收藏", - "displayItems": "显示项目", - "displayItemsDesc": "选择在服务器统计页面显示的指标", - "enableCpu": "CPU 使用", - "enableMemory": "内存使用", - "enableDisk": "磁盘使用", - "enableNetwork": "网络统计(即将到来)", - "enableProcesses": "进程计数 (即将到来)", - "enableUptime": "运行时间 (即将到来)", - "enableHostname": "主机名(即将到来)", - "enableOs": "操作系统 (即将到来)", - "customCommands": "自定义命令 (即将到来)", - "customCommandsDesc": "为此服务器定义自定义关机和重启命令", - "shutdownCommand": "关闭命令", - "rebootCommand": "重启命令", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "updateKey": "Update Key", + "existingKey": "Existing Key (click to change)", + "existingCredential": "Existing Credential (click to change)", + "addTagsSpaceToAdd": "add tags (space to add)", + "terminalBadge": "Terminal", + "tunnelBadge": "Tunnel", + "fileManagerBadge": "File Manager", + "general": "General", + "terminal": "Terminal", + "tunnel": "Tunnel", + "fileManager": "File Manager", + "serverStats": "Server Stats", + "hostViewer": "Host Viewer", + "enableServerStats": "Enable Server Stats", + "enableServerStatsDesc": "Enable/disable server statistics collection for this host", + "displayItems": "Display Items", + "displayItemsDesc": "Choose which metrics to display on the server stats page", + "enableCpu": "CPU Usage", + "enableMemory": "Memory Usage", + "enableDisk": "Disk Usage", + "enableNetwork": "Network Statistics (Coming Soon)", + "enableProcesses": "Process Count (Coming Soon)", + "enableUptime": "Uptime (Coming Soon)", + "enableHostname": "Hostname (Coming Soon)", + "enableOs": "Operating System (Coming Soon)", + "customCommands": "Custom Commands (Coming Soon)", + "customCommandsDesc": "Define custom shutdown and reboot commands for this server", + "shutdownCommand": "Shutdown Command", + "rebootCommand": "Reboot Command", "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The host will be moved to \"No Folder\".", "removedFromFolder": "Host \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "从文件夹中删除主机失败", + "failedToRemoveFromFolder": "Failed to remove host from folder", "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "重命名文件夹失败", - "editFolderAppearance": "编辑文件夹外观", - "editFolderAppearanceDesc": "自定义文件夹的颜色和图标", - "folderColor": "文件夹颜色", - "folderIcon": "文件夹图标", - "preview": "预览", - "folderAppearanceUpdated": "文件夹外观更新成功", - "failedToUpdateFolderAppearance": "更新文件夹外观失败", - "deleteAllHostsInFolder": "删除文件夹中的所有主机", + "failedToRenameFolder": "Failed to rename folder", + "editFolderAppearance": "Edit Folder Appearance", + "editFolderAppearanceDesc": "Customize the color and icon for folder", + "folderColor": "Folder Color", + "folderIcon": "Folder Icon", + "preview": "Preview", + "folderAppearanceUpdated": "Folder appearance updated successfully", + "failedToUpdateFolderAppearance": "Failed to update folder appearance", + "deleteAllHostsInFolder": "Delete All Hosts in Folder", "confirmDeleteAllHostsInFolder": "Are you sure you want to delete all {{count}} hosts in folder \"{{folder}}\"? This action cannot be undone.", "allHostsInFolderDeleted": "Deleted {{count}} hosts from folder \"{{folder}}\" successfully", - "failedToDeleteHostsInFolder": "删除文件夹中的主机失败", + "failedToDeleteHostsInFolder": "Failed to delete hosts in folder", "movedToFolder": "Host \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "无法将主机移动到文件夹", - "clickToRenameFolder": "点击重命名文件夹", - "renameFolder": "重命名文件夹", + "failedToMoveToFolder": "Failed to move host to folder", + "clickToRenameFolder": "Click to rename folder", + "renameFolder": "Rename folder", "removeFromFolder": "Remove from folder \"{{folder}}\"", - "editHostTooltip": "编辑主机", - "deleteHostTooltip": "删除主机", - "exportHostTooltip": "导出主机", - "cloneHostTooltip": "克隆主机", - "clickToEditHost": "点击编辑主机", - "dragToMoveBetweenFolders": "拖动以在文件夹之间移动", + "editHostTooltip": "Edit host", + "deleteHostTooltip": "Delete host", + "exportHostTooltip": "Export host", + "cloneHostTooltip": "Clone host", + "clickToEditHost": "Click to edit host", + "dragToMoveBetweenFolders": "Drag to move between folders", "exportedHostConfig": "Exported host configuration for {{name}}", - "openTerminal": "打开终端", - "openFileManager": "打开文件管理器", - "openTunnels": "打开Tunnels", - "openServerDetails": "打开服务器详细信息", - "statistics": "统计", - "enabledWidgets": "已启用的部件", - "openServerStats": "打开服务器统计", - "enabledWidgetsDesc": "选择此主机显示的统计小部件", - "monitoringConfiguration": "监控配置", - "monitoringConfigurationDesc": "配置服务器统计数据和状态检查频率", - "statusCheckEnabled": "启用状态监测", - "statusCheckEnabledDesc": "检查服务器是在线还是离线的", - "statusCheckInterval": "状态检查间隔", - "statusCheckIntervalDesc": "检查主机是否在线的频率(5s - 1h)", - "metricsEnabled": "启用计量监测", - "metricsEnabledDesc": "收集 CPU 、 RAM、 磁盘和其他系统统计", - "metricsInterval": "计量采集间隔", - "metricsIntervalDesc": "收集服务器统计数据的频率(5s-1h)", - "intervalSeconds": "秒", - "intervalMinutes": "分钟", - "intervalValidation": "监视间隔必须介于 5 秒到 1 小时 (3600 秒)", - "monitoringDisabled": "此主机已禁用服务器监测", - "enableMonitoring": "在主机管理器 → 统计选项卡中启用监测", - "monitoringDisabledBadge": "监测关闭", - "statusMonitoring": "状态", - "metricsMonitoring": "指标", - "terminalCustomization": "终端自定义", - "appearance": "外观", - "behavior": "行为", - "advanced": "高级版", - "themePreview": "主题预览", - "theme": "主题", - "selectTheme": "选择主题", - "chooseColorTheme": "选择终端的颜色主题", - "fontFamily": "字体类", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnels": "Open Tunnels", + "openServerDetails": "Open Server Details", + "statistics": "Statistics", + "enabledWidgets": "Enabled Widgets", + "openServerStats": "Open Server Stats", + "enabledWidgetsDesc": "Select which statistics widgets to display for this host", + "monitoringConfiguration": "Monitoring Configuration", + "monitoringConfigurationDesc": "Configure how often server statistics and status are checked", + "statusCheckEnabled": "Enable Status Monitoring", + "statusCheckEnabledDesc": "Check if the server is online or offline", + "statusCheckInterval": "Status Check Interval", + "statusCheckIntervalDesc": "How often to check if host is online (5s - 1h)", + "metricsEnabled": "Enable Metrics Monitoring", + "metricsEnabledDesc": "Collect CPU, RAM, disk, and other system statistics", + "metricsInterval": "Metrics Collection Interval", + "metricsIntervalDesc": "How often to collect server statistics (5s - 1h)", + "intervalSeconds": "seconds", + "intervalMinutes": "minutes", + "intervalValidation": "Monitoring intervals must be between 5 seconds and 1 hour (3600 seconds)", + "monitoringDisabled": "Server monitoring is disabled for this host", + "enableMonitoring": "Enable monitoring in Host Manager → Statistics tab", + "monitoringDisabledBadge": "Monitoring Off", + "statusMonitoring": "Status", + "metricsMonitoring": "Metrics", + "terminalCustomization": "Terminal Customization", + "appearance": "Appearance", + "behavior": "Behavior", + "advanced": "Advanced", + "themePreview": "Theme Preview", + "theme": "Theme", + "selectTheme": "Select theme", + "chooseColorTheme": "Choose a color theme for the terminal", + "fontFamily": "Font Family", "selectFont": "Select font", - "selectFontDesc": "选择要在终端中使用的字体", + "selectFontDesc": "Select the font to use in the terminal", "fontSize": "Font Size", "fontSizeValue": "Font Size: {{value}}px", - "adjustFontSize": "调整终端字体大小", - "letterSpacing": "字母间距", + "adjustFontSize": "Adjust the terminal font size", + "letterSpacing": "Letter Spacing", "letterSpacingValue": "Letter Spacing: {{value}}px", - "adjustLetterSpacing": "调整字符间距", - "lineHeight": "行高度", + "adjustLetterSpacing": "Adjust spacing between characters", + "lineHeight": "Line Height", "lineHeightValue": "Line Height: {{value}}", - "adjustLineHeight": "调整行之间的间距", - "cursorStyle": "光标样式", - "selectCursorStyle": "选择光标样式", - "cursorStyleBlock": "封禁", - "cursorStyleUnderline": "下划线", - "cursorStyleBar": "条形图", - "chooseCursorAppearance": "选择光标外观", - "cursorBlink": "光标闪烁", - "enableCursorBlink": "启用光标闪烁动画", - "scrollbackBuffer": "回滚缓存", + "adjustLineHeight": "Adjust spacing between lines", + "cursorStyle": "Cursor Style", + "selectCursorStyle": "Select cursor style", + "cursorStyleBlock": "Block", + "cursorStyleUnderline": "Underline", + "cursorStyleBar": "Bar", + "chooseCursorAppearance": "Choose the cursor appearance", + "cursorBlink": "Cursor Blink", + "enableCursorBlink": "Enable cursor blinking animation", + "scrollbackBuffer": "Scrollback Buffer", "scrollbackBufferValue": "Scrollback Buffer: {{value}} lines", - "scrollbackBufferDesc": "在回滚历史中保留的行数", - "bellStyle": "铃声样式", - "selectBellStyle": "选择铃声样式", - "bellStyleNone": "无", - "bellStyleSound": "声音", - "bellStyleVisual": "可视化", - "bellStyleBoth": "两者都是", - "bellStyleDesc": "如何处理终端响铃(BEL 字符, \\x07)。程序在完成任务、遇到错误或通知时触发它。 “声音”播放音频蜜蜂,“视觉”短暂地闪烁屏幕,“机器人”同时“无”禁用铃声。", - "rightClickSelectsWord": "右键点击选择单词", - "rightClickSelectsWordDesc": "右键点击光标下的单词", - "fastScrollModifier": "快速滚动修饰符", - "selectModifier": "选择修饰符", + "scrollbackBufferDesc": "Number of lines to keep in scrollback history", + "bellStyle": "Bell Style", + "selectBellStyle": "Select bell style", + "bellStyleNone": "None", + "bellStyleSound": "Sound", + "bellStyleVisual": "Visual", + "bellStyleBoth": "Both", + "bellStyleDesc": "How to handle terminal bell (BEL character, \\x07). Programs trigger this when completing tasks, encountering errors, or for notifications. \"Sound\" plays an audio beep, \"Visual\" flashes the screen briefly, \"Both\" does both, \"None\" disables bell alerts.", + "rightClickSelectsWord": "Right Click Selects Word", + "rightClickSelectsWordDesc": "Right-clicking selects the word under cursor", + "fastScrollModifier": "Fast Scroll Modifier", + "selectModifier": "Select modifier", "modifierAlt": "Alt", "modifierCtrl": "Ctrl", - "modifierShift": "偏移", - "fastScrollModifierDesc": "快速滚动的修饰键", - "fastScrollSensitivity": "快速滚动灵敏度", + "modifierShift": "Shift", + "fastScrollModifierDesc": "Modifier key for fast scrolling", + "fastScrollSensitivity": "Fast Scroll Sensitivity", "fastScrollSensitivityValue": "Fast Scroll Sensitivity: {{value}}", - "fastScrollSensitivityDesc": "按住修饰符时滚动速度乘数", - "minimumContrastRatio": "最小对比率", + "fastScrollSensitivityDesc": "Scroll speed multiplier when modifier is held", + "minimumContrastRatio": "Minimum Contrast Ratio", "minimumContrastRatioValue": "Minimum Contrast Ratio: {{value}}", - "minimumContrastRatioDesc": "自动调整颜色以提高可读性", - "sshAgentForwarding": "SSH 代理转发中", - "sshAgentForwardingDesc": "将 SSH 认证代理转发到远程主机", - "backspaceMode": "背空模式", - "selectBackspaceMode": "选择后空格模式", - "backspaceModeNormal": "普通(DEL)", - "backspaceModeControlH": "控制(^H)", - "backspaceModeDesc": "兼容性的背空键行为", - "startupSnippet": "启动代码片段", - "selectSnippet": "选择代码片段", - "searchSnippets": "搜索代码片段...", - "snippetNone": "无", - "noneAuthTitle": "键盘交互验证", - "noneAuthDescription": "此身份验证方法将使用键盘交互身份验证连接到 SSH 服务器。", - "noneAuthDetails": "键盘交互式身份验证允许服务器在连接期间提示您凭据。 这对于需要多元素身份验证或不想保存本地凭据的服务器是有用的。", - "forceKeyboardInteractive": "强制键盘交互方式", - "forceKeyboardInteractiveDesc": "强制使用键盘交互式身份验证。使用双重身份验证的服务器有时需要 (TOTP/2FA)。", - "overrideCredentialUsername": "覆盖凭据用户名", - "overrideCredentialUsernameDesc": "使用不同于凭据中存储的用户名。这允许您使用不同的凭据名称。", - "jumpHosts": "跳转主机", - "jumpHostsDescription": "跳转主机(也称为地下室主机),允许您通过一个或多个中间服务器连接到目标服务器。 这有助于访问防火墙后面或私人网络中的服务器。", - "jumpHostChain": "跳转主机链接", - "addJumpHost": "添加跳转主机", - "selectServer": "选择服务器", - "searchServers": "搜索服务器...", - "noServerFound": "未找到服务器", - "jumpHostsOrder": "连接将按以下顺序进行:跳转主机 1 → 跳转主机 2 -> ................................", - "socks5Proxy": "SOCKS5 代理", - "socks5Description": "配置 SSH 连接的 SOCKS5 代理。所有流量将通过指定的代理服务器路由。", - "enableSocks5": "启用 SOCKS5 代理", - "enableSocks5Description": "为此 SSH 连接使用 SOCKS5 代理", - "socks5Host": "代理主机", - "socks5Port": "代理端口", - "socks5Username": "代理用户名", - "socks5Password": "代理密码", - "socks5UsernameOptional": "可选:如果代理服务器不需要身份验证则留空", - "socks5PasswordOptional": "可选:如果代理服务器不需要身份验证则留空", - "socks5ProxyChain": "代理链接", - "socks5ProxyChainDescription": "配置SOCKS代理的链。链中每个代理都会连接到前一个。", - "socks5ProxyMode": "代理模式", - "socks5UseSingleProxy": "使用单个代理", - "socks5UseProxyChain": "使用代理服务器", - "socks5UsePreset": "使用保存预设", - "socks5SelectPreset": "选择预设", - "socks5ManagePresets": "管理预设", + "minimumContrastRatioDesc": "Automatically adjust colors for better readability", + "sshAgentForwarding": "SSH Agent Forwarding", + "sshAgentForwardingDesc": "Forward SSH authentication agent to remote host", + "backspaceMode": "Backspace Mode", + "selectBackspaceMode": "Select backspace mode", + "backspaceModeNormal": "Normal (DEL)", + "backspaceModeControlH": "Control-H (^H)", + "backspaceModeDesc": "Backspace key behavior for compatibility", + "startupSnippet": "Startup Snippet", + "selectSnippet": "Select snippet", + "searchSnippets": "Search snippets...", + "snippetNone": "None", + "noneAuthTitle": "Keyboard-Interactive Authentication", + "noneAuthDescription": "This authentication method will use keyboard-interactive authentication when connecting to the SSH server.", + "noneAuthDetails": "Keyboard-interactive authentication allows the server to prompt you for credentials during connection. This is useful for servers that require multi-factor authentication or if you do not want to save credentials locally.", + "forceKeyboardInteractive": "Force Keyboard-Interactive", + "forceKeyboardInteractiveDesc": "Forces the use of keyboard-interactive authentication. This is sometimes required for servers that use Two-Factor Authentication (TOTP/2FA).", + "overrideCredentialUsername": "Override Credential Username", + "overrideCredentialUsernameDesc": "Use a different username than the one stored in the credential. This allows you to use the same credential with different usernames.", + "jumpHosts": "Jump Hosts", + "jumpHostsDescription": "Jump hosts (also known as bastion hosts) allow you to connect to a target server through one or more intermediate servers. This is useful for accessing servers behind firewalls or in private networks.", + "jumpHostChain": "Jump Host Chain", + "addJumpHost": "Add Jump Host", + "selectServer": "Select Server", + "searchServers": "Search servers...", + "noServerFound": "No server found", + "jumpHostsOrder": "Connections will be made in order: Jump Host 1 → Jump Host 2 → ... → Target Server", + "socks5Proxy": "SOCKS5 Proxy", + "socks5Description": "Configure SOCKS5 proxy for SSH connection. All traffic will be routed through the specified proxy server.", + "enableSocks5": "Enable SOCKS5 Proxy", + "enableSocks5Description": "Use SOCKS5 proxy for this SSH connection", + "socks5Host": "Proxy Host", + "socks5Port": "Proxy Port", + "socks5Username": "Proxy Username", + "socks5Password": "Proxy Password", + "socks5UsernameOptional": "Optional: leave empty if proxy doesn't require authentication", + "socks5PasswordOptional": "Optional: leave empty if proxy doesn't require authentication", + "socks5ProxyChain": "Proxy Chain", + "socks5ProxyChainDescription": "Configure a chain of SOCKS proxies. Each proxy in the chain will connect through the previous one.", + "socks5ProxyMode": "Proxy Mode", + "socks5UseSingleProxy": "Use Single Proxy", + "socks5UseProxyChain": "Use Proxy Chain", + "socks5UsePreset": "Use Saved Preset", + "socks5SelectPreset": "Select Preset", + "socks5ManagePresets": "Manage Presets", "socks5ProxyNode": "Proxy {{number}}", - "socks5AddProxy": "将代理服务器添加到锁定中", - "socks5RemoveProxy": "移除代理", - "socks5ProxyType": "代理类型", - "socks5SaveAsPreset": "另存为预设", - "socks5SavePresetTitle": "将代理链保存为预设", - "socks5SavePresetDescription": "保存当前代理链配置为可重复使用的预设", - "socks5PresetName": "预设名称", - "socks5PresetDescription": "描述(可选)", - "socks5PresetCreated": "代理链预设已创建", - "socks5PresetUpdated": "代理链预设已更新", - "socks5PresetDeleted": "代理链预设已删除", + "socks5AddProxy": "Add Proxy to Chain", + "socks5RemoveProxy": "Remove Proxy", + "socks5ProxyType": "Proxy Type", + "socks5SaveAsPreset": "Save as Preset", + "socks5SavePresetTitle": "Save Proxy Chain as Preset", + "socks5SavePresetDescription": "Save the current proxy chain configuration as a reusable preset", + "socks5PresetName": "Preset Name", + "socks5PresetDescription": "Description (optional)", + "socks5PresetCreated": "Proxy chain preset created", + "socks5PresetUpdated": "Proxy chain preset updated", + "socks5PresetDeleted": "Proxy chain preset deleted", "socks5PresetSaved": "Preset \"{{name}}\" saved successfully", - "socks5PresetSaveError": "保存预设失败", - "socks5PresetNameRequired": "必须输入预设名称", - "socks5EmptyChainError": "无法保存一个空的代理服务器", - "socks5ProxyChainEmpty": "在链中至少添加一个代理", - "socks5HostDescription": "SOCKS 代理服务器的主机名或IP地址", - "socks5PortDescription": "SOCKS 代理服务器端口号(默认: 1080)", - "addProxyNode": "添加代理节点", - "noProxyNodes": "未配置代理节点。点击“添加代理节点”添加一个。", - "proxyNode": "代理节点", - "proxyType": "代理类型", - "quickActions": "快速操作", - "quickActionsDescription": "快速操作允许您创建自定义按钮,在此服务器上执行 SSH 代码片段。 这些按钮将出现在服务器统计页面顶部以便快速访问。", - "quickActionsList": "快速操作列表", - "addQuickAction": "添加快速操作", - "quickActionName": "动作名称", - "noSnippetFound": "未找到代码片段", - "quickActionsOrder": "快速动作按钮将出现在上面列出的服务器统计页面中的顺序", - "advancedAuthSettings": "高级认证设置", - "sudoPasswordAutoFill": "Sudo 密码自动填充", - "sudoPasswordAutoFillDesc": "当确认提示密码时自动提供插入 SSH 密码", - "sudoPassword": "Sudo 密码", - "sudoPasswordDesc": "Sudo命令的可选密码 (对密钥身份验证有用)", + "socks5PresetSaveError": "Failed to save preset", + "socks5PresetNameRequired": "Preset name is required", + "socks5EmptyChainError": "Cannot save an empty proxy chain", + "socks5ProxyChainEmpty": "Add at least one proxy to the chain", + "socks5HostDescription": "Hostname or IP address of the SOCKS proxy server", + "socks5PortDescription": "Port number of the SOCKS proxy server (default: 1080)", + "addProxyNode": "Add Proxy Node", + "noProxyNodes": "No proxy nodes configured. Click 'Add Proxy Node' to add one.", + "proxyNode": "Proxy Node", + "proxyType": "Proxy Type", + "quickActions": "Quick Actions", + "quickActionsDescription": "Quick actions allow you to create custom buttons that execute SSH snippets on this server. These buttons will appear at the top of the Server Stats page for quick access.", + "quickActionsList": "Quick Actions List", + "addQuickAction": "Add Quick Action", + "quickActionName": "Action name", + "noSnippetFound": "No snippet found", + "quickActionsOrder": "Quick action buttons will appear in the order listed above on the Server Stats page", + "advancedAuthSettings": "Advanced Authentication Settings", + "sudoPasswordAutoFill": "Sudo Password Auto-Fill", + "sudoPasswordAutoFillDesc": "Automatically offer to insert SSH password when sudo prompts for password", + "sudoPassword": "Sudo Password", + "sudoPasswordDesc": "Optional password for sudo commands (useful with key authentication)", "socks4": "SOCKS4", "socks5": "SOCKS5", - "executeSnippetOnConnect": "当终端连接时执行代码片段", - "autoMosh": "自动最小化", - "autoMoshDesc": "连接时自动运行 MOSH 命令", - "moshCommand": "MOSH 命令", - "moshCommandDesc": "要执行的 MOSH 命令", - "environmentVariables": "环境变量", - "environmentVariablesDesc": "设置终端会话的自定义环境变量", - "variableName": "变量名称", - "variableValue": "值", - "addVariable": "添加变量", - "docker": "停靠栏", - "openDocker": "打开停靠栏", - "notEnabled": "没有为此主机启用停靠功能。请在主机设置中启用停靠功能。", - "validating": "正在校验码头...", - "error": "错误", + "executeSnippetOnConnect": "Execute a snippet when the terminal connects", + "autoMosh": "Auto-MOSH", + "autoMoshDesc": "Automatically run MOSH command on connect", + "moshCommand": "MOSH Command", + "moshCommandDesc": "The MOSH command to execute", + "environmentVariables": "Environment Variables", + "environmentVariablesDesc": "Set custom environment variables for the terminal session", + "variableName": "Variable name", + "variableValue": "Value", + "addVariable": "Add Variable", + "docker": "Docker", + "openDocker": "Open Docker", + "notEnabled": "Docker is not enabled for this host. Enable it in Host Settings to use Docker features.", + "validating": "Validating Docker...", + "error": "Error", "errorCode": "Error code: {{code}}", "version": "Docker v{{version}}", - "current": "当前的", - "used_limit": "使用/限制", - "percentage": "百分比", + "current": "Current", + "used_limit": "Used / Limit", + "percentage": "Percentage", "input": "Input", - "output": "产出", - "read": "已读", - "write": "写入", + "output": "Output", + "read": "Read", + "write": "Write", "pids": "PIDs", "id": "ID", - "state": "状态", - "console": "控制台", - "containerMustBeRunning": "容器必须运行才能连接到控制台", - "authenticationRequired": "需要身份验证", + "state": "State", + "console": "Console", + "containerMustBeRunning": "Container must be running to connect to console", + "authenticationRequired": "Authentication required", "connectedTo": "Connected to {{containerName}}", - "disconnected": "断开连接", - "consoleError": "控制台错误", + "disconnected": "Disconnected", + "consoleError": "Console error", "errorMessage": "Error: {{message}}", - "failedToConnect": "无法连接到控制台", - "disconnectedFromContainer": "从容器控制台断开连接。", - "containerNotRunning": "容器未运行", - "startContainerToAccess": "启动容器以访问控制台", - "selectShell": "选择 shell", - "bash": "巴什文", - "sh": "沙子", - "ash": "阿什文", - "connecting": "正在连接...", - "connect": "连接", - "disconnect": "断开连接", - "notConnected": "未连接", - "clickToConnect": "单击Connect 开始交互式外壳。", + "failedToConnect": "Failed to connect to console", + "disconnectedFromContainer": "Disconnected from container console.", + "containerNotRunning": "Container is not running", + "startContainerToAccess": "Start the container to access the console", + "selectShell": "Select shell", + "bash": "Bash", + "sh": "Sh", + "ash": "Ash", + "connecting": "Connecting...", + "connect": "Connect", + "disconnect": "Disconnect", + "notConnected": "Not connected", + "clickToConnect": "Click Connect to start an interactive shell", "connectingTo": "Connecting to {{containerName}}...", - "containerMustBeRunningToViewStats": "容器必须运行才能查看统计", - "failedToFetchStats": "获取统计数据失败", - "noContainersFound": "未找到容器", - "noContainersFoundHint": "从在您的服务器上创建容器开始", - "searchPlaceholder": "按名称、图像或ID搜索...", - "filterByStatusPlaceholder": "按状态过滤", + "containerMustBeRunningToViewStats": "Container must be running to view stats", + "failedToFetchStats": "Failed to fetch stats", + "noContainersFound": "No containers found", + "noContainersFoundHint": "Start by creating containers on your server", + "searchPlaceholder": "Search by name, image, or ID...", + "filterByStatusPlaceholder": "Filter by status", "allContainersCount": "All ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "没有符合筛选条件的容器", - "noContainersMatchFiltersHint": "尝试调整您的搜索或过滤器", + "noContainersMatchFilters": "No containers match your filters", + "noContainersMatchFiltersHint": "Try adjusting your search or filter", "containerStarted": "Container {{name}} started", "failedToStartContainer": "Failed to start container: {{error}}", "containerStopped": "Container {{name}} stopped", @@ -1172,123 +1172,123 @@ "failedToTogglePauseContainer": "Failed to {{action}} container: {{error}}", "containerRemoved": "Container {{name}} removed", "failedToRemoveContainer": "Failed to remove container: {{error}}", - "image": "图片:", + "image": "Image:", "idLabel": "ID:", - "ports": "端口:", - "noPorts": "无", - "created": "创建于:", - "start": "开始", - "stop": "停止", + "ports": "Ports:", + "noPorts": "None", + "created": "Created:", + "start": "Start", + "stop": "Stop", "unpause": "Unpause", - "pause": "暂停", - "restart": "重新启动", - "removeContainer": "删除容器", + "pause": "Pause", + "restart": "Restart", + "removeContainer": "Remove Container", "confirmRemoveContainer": "Are you sure you want to remove container \"{{name}}\"?", - "runningContainerWarning": "警告:此容器正在运行,将被强制删除。", - "removing": "正在删除:", - "containerNotFound": "找不到容器", - "backToList": "返回列表", - "logs": "日志", - "stats": "统计信息", - "consoleTab": "控制台", + "runningContainerWarning": "Warning: This container is currently running and will be force-removed.", + "removing": "Removing:", + "containerNotFound": "Container not found", + "backToList": "Back to list", + "logs": "Logs", + "stats": "Stats", + "consoleTab": "Console", "failedToFetchLogs": "Failed to fetch logs: {{error}}", "failedToDownloadLogs": "Failed to download logs: {{error}}", - "linesToShow": "要显示的行", - "last50Lines": "最后50行", - "last100Lines": "最后100行", - "last500Lines": "最后500行", - "last1000Lines": "最近1000行", - "allLogs": "所有日志", - "showTimestamps": "显示时间戳", - "autoRefresh": "自动刷新", - "filterLogsPlaceholder": "过滤日志...", - "noLogsAvailable": "无可用日志" + "linesToShow": "Lines to show", + "last50Lines": "Last 50 lines", + "last100Lines": "Last 100 lines", + "last500Lines": "Last 500 lines", + "last1000Lines": "Last 1000 lines", + "allLogs": "All logs", + "showTimestamps": "Show Timestamps", + "autoRefresh": "Auto Refresh", + "filterLogsPlaceholder": "Filter logs...", + "noLogsAvailable": "No logs available" }, "terminal": { - "title": "终端", - "connect": "连接到主机", - "disconnect": "断开连接", - "clear": "清空", - "copy": "复制", - "paste": "粘贴", - "find": "查找", - "fullscreen": "全屏", - "splitHorizontal": "水平拆分", - "splitVertical": "垂直拆分", - "closePanel": "关闭面板", - "reconnect": "重新连接", - "sessionEnded": "会话结束", - "connectionLost": "连接丢失", + "title": "Terminal", + "connect": "Connect to Host", + "disconnect": "Disconnect", + "clear": "Clear", + "copy": "Copy", + "paste": "Paste", + "find": "Find", + "fullscreen": "Fullscreen", + "splitHorizontal": "Split Horizontal", + "splitVertical": "Split Vertical", + "closePanel": "Close Panel", + "reconnect": "Reconnect", + "sessionEnded": "Session Ended", + "connectionLost": "Connection Lost", "error": "ERROR: {{message}}", - "disconnected": "断开连接", - "connectionClosed": "连接已关闭", + "disconnected": "Disconnected", + "connectionClosed": "Connection closed", "connectionError": "Connection error: {{message}}", - "connected": "已连接", - "sshConnected": "已建立SSH 连接", + "connected": "Connected", + "sshConnected": "SSH connection established", "authError": "Authentication failed: {{message}}", - "unknownError": "发生未知错误", - "messageParseError": "解析服务器消息失败", - "websocketError": "WebSocket 连接错误", - "connecting": "正在连接...", + "unknownError": "Unknown error occurred", + "messageParseError": "Failed to parse server message", + "websocketError": "WebSocket connection error", + "connecting": "Connecting...", "reconnecting": "Reconnecting... ({{attempt}}/{{max}})", - "reconnected": "重新连接成功", - "maxReconnectAttemptsReached": "已达到最大重连尝试次数", - "connectionTimeout": "连接超时", + "reconnected": "Reconnected successfully", + "maxReconnectAttemptsReached": "Maximum reconnection attempts reached", + "connectionTimeout": "Connection timeout", "terminalTitle": "Terminal - {{host}}", "terminalWithPath": "Terminal - {{host}}:{{path}}", "runTitle": "Running {{command}} - {{host}}", - "totpRequired": "需要两步验证", - "totpCodeLabel": "验证码", + "totpRequired": "Two-Factor Authentication Required", + "totpCodeLabel": "Verification Code", "totpPlaceholder": "000000", - "totpVerify": "验证", - "sudoPasswordPopupTitle": "输入密码?", - "sudoPasswordPopupHint": "按回车键插入,Esc键关闭", + "totpVerify": "Verify", + "sudoPasswordPopupTitle": "Insert Password?", + "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "关闭" + "sudoPasswordPopupDismiss": "Dismiss" }, "fileManager": { - "title": "文件管理器", - "file": "文件", - "folder": "文件夹", - "connectToSsh": "连接到 SSH 以使用文件操作", - "uploadFile": "上传文件", - "downloadFile": "下载", - "extractArchive": "解压缩存档", + "title": "File Manager", + "file": "File", + "folder": "Folder", + "connectToSsh": "Connect to SSH to use file operations", + "uploadFile": "Upload File", + "downloadFile": "Download", + "extractArchive": "Extract Archive", "extractingArchive": "Extracting {{name}}...", "archiveExtractedSuccessfully": "{{name}} extracted successfully", - "extractFailed": "提取失败", - "compressFile": "压缩文件", - "compressFiles": "压缩文件", + "extractFailed": "Extract failed", + "compressFile": "Compress File", + "compressFiles": "Compress Files", "compressFilesDesc": "Compress {{count}} items into an archive", - "archiveName": "归档名称", - "enterArchiveName": "输入归档名称...", - "compressionFormat": "压缩格式", - "selectedFiles": "选定的文件", + "archiveName": "Archive Name", + "enterArchiveName": "Enter archive name...", + "compressionFormat": "Compression Format", + "selectedFiles": "Selected files", "andMoreFiles": "and {{count}} more...", - "compress": "压缩", + "compress": "Compress", "compressingFiles": "Compressing {{count}} items into {{name}}...", "filesCompressedSuccessfully": "{{name}} created successfully", - "compressFailed": "压缩失败", - "edit": "编辑", - "preview": "预览", - "previous": "上一个", - "next": "下一个", + "compressFailed": "Compression failed", + "edit": "Edit", + "preview": "Preview", + "previous": "Previous", + "next": "Next", "pageXOfY": "Page {{current}} of {{total}}", - "zoomOut": "缩放", - "zoomIn": "放大区域", - "newFile": "新建文件", - "newFolder": "新建文件夹", - "rename": "重命名:", - "renameItem": "重命名项目", - "deleteItem": "删除项目", - "currentPath": "当前路径", - "uploadFileTitle": "上传文件", - "maxFileSize": "最大值:1GB (JSON) / 5GB (Binal) - 支持的大文件", - "removeFile": "删除文件", - "clickToSelectFile": "点击选择一个文件", - "chooseFile": "选择文件", - "uploading": "正在上传...", - "downloading": "正在下载...", + "zoomOut": "Zoom Out", + "zoomIn": "Zoom In", + "newFile": "New File", + "newFolder": "New Folder", + "rename": "Rename", + "renameItem": "Rename Item", + "deleteItem": "Delete Item", + "currentPath": "Current Path", + "uploadFileTitle": "Upload File", + "maxFileSize": "Max: 1GB (JSON) / 5GB (Binary) - Large files supported", + "removeFile": "Remove File", + "clickToSelectFile": "Click to select a file", + "chooseFile": "Choose File", + "uploading": "Uploading...", + "downloading": "Downloading...", "uploadingFile": "Uploading {{name}}...", "uploadingLargeFile": "Uploading large file {{name}} ({{size}})...", "downloadingFile": "Downloading {{name}}...", @@ -1296,388 +1296,388 @@ "creatingFolder": "Creating {{name}}...", "deletingItem": "Deleting {{type}} {{name}}...", "renamingItem": "Renaming {{type}} {{oldName}} to {{newName}}...", - "createNewFile": "创建新文件", - "fileName": "文件名称", - "creating": "创建中...", - "createFile": "创建文件", - "createNewFolder": "创建新文件夹", - "folderName": "文件夹名称", - "createFolder": "创建文件夹", - "warningCannotUndo": "警告: 此操作不能恢复", - "itemPath": "项目路径", - "thisIsDirectory": "这是一个目录(将递归删除)", - "deleting": "正在删除...", - "currentPathLabel": "当前路径", - "newName": "新名称", - "thisIsDirectoryRename": "这是一个目录", - "renaming": "重命名中...", + "createNewFile": "Create New File", + "fileName": "File Name", + "creating": "Creating...", + "createFile": "Create File", + "createNewFolder": "Create New Folder", + "folderName": "Folder Name", + "createFolder": "Create Folder", + "warningCannotUndo": "Warning: This action cannot be undone", + "itemPath": "Item Path", + "thisIsDirectory": "This is a directory (will delete recursively)", + "deleting": "Deleting...", + "currentPathLabel": "Current Path", + "newName": "New Name", + "thisIsDirectoryRename": "This is a directory", + "renaming": "Renaming...", "fileUploadedSuccessfully": "File \"{{name}}\" uploaded successfully", - "failedToUploadFile": "上传文件失败", + "failedToUploadFile": "Failed to upload file", "fileDownloadedSuccessfully": "File \"{{name}}\" downloaded successfully", - "failedToDownloadFile": "下载文件失败", - "noFileContent": "没有收到文件内容", - "filePath": "文件路径", + "failedToDownloadFile": "Failed to download file", + "noFileContent": "No file content received", + "filePath": "File Path", "fileCreatedSuccessfully": "File \"{{name}}\" created successfully", - "failedToCreateFile": "创建文件失败", + "failedToCreateFile": "Failed to create file", "folderCreatedSuccessfully": "Folder \"{{name}}\" created successfully", - "failedToCreateFolder": "创建文件夹失败", - "failedToCreateItem": "创建项目失败", + "failedToCreateFolder": "Failed to create folder", + "failedToCreateItem": "Failed to create item", "operationFailed": "{{operation}} operation failed for {{name}}: {{error}}", - "failedToResolveSymlink": "无法解析符号链接", + "failedToResolveSymlink": "Failed to resolve symlink", "itemDeletedSuccessfully": "{{type}} deleted successfully", "itemsDeletedSuccessfully": "{{count}} items deleted successfully", - "failedToDeleteItems": "删除项目失败", - "dragFilesToUpload": "拖放文件到此处上传", - "emptyFolder": "此文件夹为空", + "failedToDeleteItems": "Failed to delete items", + "dragFilesToUpload": "Drop files here to upload", + "emptyFolder": "This folder is empty", "itemCount": "{{count}} items", "selectedCount": "{{count}} selected", - "searchFiles": "搜索文件...", - "upload": "上传", - "selectHostToStart": "选择要开始文件管理的主机", - "failedToConnect": "连接到 SSH 失败", - "failedToLoadDirectory": "加载目录失败", - "noSSHConnection": "没有可用的 SSH 连接", - "enterFolderName": "输入文件夹名称:", - "enterFileName": "输入文件名称:", - "copy": "复制", - "cut": "剪辑", - "paste": "粘贴", - "copyPath": "复制路径", - "copyPaths": "复制路径", - "delete": "删除", - "properties": "属性", - "refresh": "刷新", + "searchFiles": "Search files...", + "upload": "Upload", + "selectHostToStart": "Select a host to start file management", + "failedToConnect": "Failed to connect to SSH", + "failedToLoadDirectory": "Failed to load directory", + "noSSHConnection": "No SSH connection available", + "enterFolderName": "Enter folder name:", + "enterFileName": "Enter file name:", + "copy": "Copy", + "cut": "Cut", + "paste": "Paste", + "copyPath": "Copy Path", + "copyPaths": "Copy Paths", + "delete": "Delete", + "properties": "Properties", + "refresh": "Refresh", "downloadFiles": "Download {{count}} files to Browser", "copyFiles": "Copy {{count}} items", "cutFiles": "Cut {{count}} items", "deleteFiles": "Delete {{count}} items", "filesCopiedToClipboard": "{{count}} items copied to clipboard", "filesCutToClipboard": "{{count}} items cut to clipboard", - "pathCopiedToClipboard": "路径已复制到剪贴板", + "pathCopiedToClipboard": "Path copied to clipboard", "pathsCopiedToClipboard": "{{count}} paths copied to clipboard", - "failedToCopyPath": "复制路径到剪贴板失败", + "failedToCopyPath": "Failed to copy path to clipboard", "movedItems": "Moved {{count}} items", - "failedToDeleteItem": "删除项目失败", + "failedToDeleteItem": "Failed to delete item", "itemRenamedSuccessfully": "{{type}} renamed successfully", - "failedToRenameItem": "重命名项目失败", - "download": "下载", - "permissions": "权限", - "size": "大小", - "modified": "已修改", - "path": "路径", + "failedToRenameItem": "Failed to rename item", + "download": "Download", + "permissions": "Permissions", + "size": "Size", + "modified": "Modified", + "path": "Path", "confirmDelete": "Are you sure you want to delete {{name}}?", - "uploadSuccess": "文件上传成功", - "uploadFailed": "文件上传失败", - "downloadSuccess": "文件下载成功", - "downloadFailed": "文件下载失败", - "permissionDenied": "权限被拒绝", - "checkDockerLogs": "检查停靠日志获取详细错误信息", - "internalServerError": "发生内部服务器错误", - "serverError": "服务器错误", - "error": "错误", - "requestFailed": "请求失败,状态码", - "unknownFileError": "未知", - "cannotReadFile": "无法读取文件", - "noSshSessionId": "没有可用的 SSH 会话 ID", - "noFilePath": "没有可用的文件路径", - "noCurrentHost": "无可用主机", - "fileSavedSuccessfully": "文件保存成功", - "saveTimeout": "保存操作超时。文件可能已成功保存,但操作需要太长时间才能完成。检查Docker日志以便确认。", - "failedToSaveFile": "保存文件失败", - "deletedSuccessfully": "删除成功", - "connectToServer": "连接到服务器", - "selectServerToEdit": "从侧边栏选择一个服务器开始编辑文件", - "fileOperations": "文件操作", + "uploadSuccess": "File uploaded successfully", + "uploadFailed": "File upload failed", + "downloadSuccess": "File downloaded successfully", + "downloadFailed": "File download failed", + "permissionDenied": "Permission denied", + "checkDockerLogs": "Check the Docker logs for detailed error information", + "internalServerError": "Internal server error occurred", + "serverError": "Server Error", + "error": "Error", + "requestFailed": "Request failed with status code", + "unknownFileError": "unknown", + "cannotReadFile": "Cannot read file", + "noSshSessionId": "No SSH session ID available", + "noFilePath": "No file path available", + "noCurrentHost": "No current host available", + "fileSavedSuccessfully": "File saved successfully", + "saveTimeout": "Save operation timed out. The file may have been saved successfully, but the operation took too long to complete. Check the Docker logs for confirmation.", + "failedToSaveFile": "Failed to save file", + "deletedSuccessfully": "deleted successfully", + "connectToServer": "Connect to a Server", + "selectServerToEdit": "Select a server from the sidebar to start editing files", + "fileOperations": "File Operations", "confirmDeleteMessage": "Are you sure you want to delete {{name}}?", "confirmDeleteSingleItem": "Are you sure you want to permanently delete \"{{name}}\"?", "confirmDeleteMultipleItems": "Are you sure you want to permanently delete {{count}} items?", "confirmDeleteMultipleItemsWithFolders": "Are you sure you want to permanently delete {{count}} items? This includes folders and their contents.", "confirmDeleteFolder": "Are you sure you want to permanently delete the folder \"{{name}}\" and all its contents?", - "deleteDirectoryWarning": "这将删除文件夹及其所有内容。", - "actionCannotBeUndone": "此操作不能撤消。", - "permanentDeleteWarning": "此操作无法撤消。项目将从服务器上永久删除。", - "recent": "最近的", - "pinned": "固定的", - "folderShortcuts": "文件夹快捷键", - "noRecentFiles": "没有最近的文件。", - "noPinnedFiles": "没有固定的文件。", - "enterFolderPath": "输入文件夹路径", - "noShortcuts": "没有快捷方式。", - "searchFilesAndFolders": "搜索文件和文件夹...", - "noFilesOrFoldersFound": "未找到文件或文件夹。", - "failedToConnectSSH": "连接到 SSH 失败", - "failedToReconnectSSH": "重新连接 SSH 会话失败", - "failedToListFiles": "列出文件失败", - "fetchHomeDataTimeout": "获取家庭数据超时", - "sshStatusCheckTimeout": "SSH 状态检查超时", - "sshReconnectionTimeout": "SSH 重新连接超时", - "saveOperationTimeout": "保存操作超时", - "cannotSaveFile": "无法保存文件", - "dragSystemFilesToUpload": "拖动系统文件到此处上传", - "dragFilesToWindowToDownload": "将文件拖动到窗口以下载", - "openTerminalHere": "在此打开终端", - "run": "运行", - "saveToSystem": "另存为...", - "selectLocationToSave": "选择要保存的位置", - "openTerminalInFolder": "在此文件夹中打开终端", - "openTerminalInFileLocation": "在文件位置打开终端", + "deleteDirectoryWarning": "This will delete the folder and all its contents.", + "actionCannotBeUndone": "This action cannot be undone.", + "permanentDeleteWarning": "This action cannot be undone. The item(s) will be permanently deleted from the server.", + "recent": "Recent", + "pinned": "Pinned", + "folderShortcuts": "Folder Shortcuts", + "noRecentFiles": "No recent files.", + "noPinnedFiles": "No pinned files.", + "enterFolderPath": "Enter folder path", + "noShortcuts": "No shortcuts.", + "searchFilesAndFolders": "Search files and folders...", + "noFilesOrFoldersFound": "No files or folders found.", + "failedToConnectSSH": "Failed to connect to SSH", + "failedToReconnectSSH": "Failed to reconnect SSH session", + "failedToListFiles": "Failed to list files", + "fetchHomeDataTimeout": "Fetch home data timed out", + "sshStatusCheckTimeout": "SSH status check timed out", + "sshReconnectionTimeout": "SSH reconnection timed out", + "saveOperationTimeout": "Save operation timed out", + "cannotSaveFile": "Cannot save file", + "dragSystemFilesToUpload": "Drag system files here to upload", + "dragFilesToWindowToDownload": "Drag files outside window to download", + "openTerminalHere": "Open Terminal Here", + "run": "Run", + "saveToSystem": "Save as...", + "selectLocationToSave": "Select Location to Save", + "openTerminalInFolder": "Open Terminal in This Folder", + "openTerminalInFileLocation": "Open Terminal at File Location", "terminalWithPath": "Terminal - {{host}}:{{path}}", "runningFile": "Running - {{file}}", - "onlyRunExecutableFiles": "只能运行可执行文件", - "noHostSelected": "没有选择主机", - "starred": "星标", - "shortcuts": "快捷键", - "directories": "目录", + "onlyRunExecutableFiles": "Can only run executable files", + "noHostSelected": "No host selected", + "starred": "Starred", + "shortcuts": "Shortcuts", + "directories": "Directories", "removedFromRecentFiles": "Removed \"{{name}}\" from recent files", - "removeFailed": "删除失败", + "removeFailed": "Remove failed", "unpinnedSuccessfully": "Unpinned \"{{name}}\" successfully", - "unpinFailed": "取消引脚失败", + "unpinFailed": "Unpin failed", "removedShortcut": "Removed shortcut \"{{name}}\"", - "removeShortcutFailed": "删除快捷方式失败", - "clearedAllRecentFiles": "清除所有最近的文件", - "clearFailed": "清除失败", - "removeFromRecentFiles": "从最近的文件删除", - "clearAllRecentFiles": "清除所有最近的文件", - "unpinFile": "取消固定文件", - "removeShortcut": "删除快捷方式", + "removeShortcutFailed": "Remove shortcut failed", + "clearedAllRecentFiles": "Cleared all recent files", + "clearFailed": "Clear failed", + "removeFromRecentFiles": "Remove from recent files", + "clearAllRecentFiles": "Clear all recent files", + "unpinFile": "Unpin file", + "removeShortcut": "Remove shortcut", "saveFilesToSystem": "Save {{count}} files as...", - "pinFile": "置顶文件", - "addToShortcuts": "添加到快捷方式", - "downloadToDefaultLocation": "下载到默认位置", - "pasteFailed": "粘贴失败", - "noUndoableActions": "没有可撤销的操作", + "pinFile": "Pin file", + "addToShortcuts": "Add to shortcuts", + "downloadToDefaultLocation": "Download to default location", + "pasteFailed": "Paste failed", + "noUndoableActions": "No undoable actions", "undoCopySuccess": "Undid copy operation: Deleted {{count}} copied files", - "undoCopyFailedDelete": "撤销失败:无法删除任何已复制的文件", - "undoCopyFailedNoInfo": "撤销失败:找不到复制的文件信息", + "undoCopyFailedDelete": "Undo failed: Could not delete any copied files", + "undoCopyFailedNoInfo": "Undo failed: Could not find copied file information", "undoMoveSuccess": "Undid move operation: Moved {{count}} files back to original location", - "undoMoveFailedMove": "撤销失败:无法移动任何文件", - "undoMoveFailedNoInfo": "撤销失败:找不到移动的文件信息", - "undoDeleteNotSupported": "删除操作不能撤消:文件已从服务器永久删除", - "undoTypeNotSupported": "不支持撤消操作类型", - "undoOperationFailed": "撤销操作失败", - "unknownError": "未知错误", - "enterPath": "输入路径...", - "editPath": "编辑路径", - "confirm": "确认", - "cancel": "取消", - "find": "查找...", - "replaceWith": "替换为...", - "replace": "替换", - "replaceAll": "全部替换", - "downloadInstead": "而不是下载", - "keyboardShortcuts": "键盘快捷键", - "searchAndReplace": "搜索和替换", - "editing": "编辑", + "undoMoveFailedMove": "Undo failed: Could not move any files back", + "undoMoveFailedNoInfo": "Undo failed: Could not find moved file information", + "undoDeleteNotSupported": "Delete operation cannot be undone: Files have been permanently deleted from server", + "undoTypeNotSupported": "Unsupported undo operation type", + "undoOperationFailed": "Undo operation failed", + "unknownError": "Unknown error", + "enterPath": "Enter path...", + "editPath": "Edit path", + "confirm": "Confirm", + "cancel": "Cancel", + "find": "Find...", + "replaceWith": "Replace with...", + "replace": "Replace", + "replaceAll": "Replace All", + "downloadInstead": "Download Instead", + "keyboardShortcuts": "Keyboard Shortcuts", + "searchAndReplace": "Search & Replace", + "editing": "Editing", "navigation": "Navigation", - "code": "代码", - "search": "搜索", - "findNext": "查找下一个", - "findPrevious": "查找上一个", - "save": "保存", - "selectAll": "选择所有", - "undo": "撤消操作", - "redo": "重做", - "goToLine": "转到直线", - "moveLineUp": "上移行", - "moveLineDown": "下移行", - "toggleComment": "切换注释", - "indent": "缩进", - "outdent": "外置", + "code": "Code", + "search": "Search", + "findNext": "Find Next", + "findPrevious": "Find Previous", + "save": "Save", + "selectAll": "Select All", + "undo": "Undo", + "redo": "Redo", + "goToLine": "Go to Line", + "moveLineUp": "Move Line Up", + "moveLineDown": "Move Line Down", + "toggleComment": "Toggle Comment", + "indent": "Indent", + "outdent": "Outdent", "autoComplete": "Auto Complete", - "imageLoadError": "加载图像失败", - "rotate": "旋转", - "originalSize": "原始大小", - "startTyping": "开始输入...", - "unknownSize": "未知大小", - "fileIsEmpty": "文件为空", - "largeFileWarning": "大文件警告", + "imageLoadError": "Failed to load image", + "rotate": "Rotate", + "originalSize": "Original Size", + "startTyping": "Start typing...", + "unknownSize": "Unknown size", + "fileIsEmpty": "File is empty", + "largeFileWarning": "Large File Warning", "largeFileWarningDesc": "This file is {{size}} in size, which may cause performance issues when opened as text.", "fileNotFoundAndRemoved": "File \"{{name}}\" not found and has been removed from recent/pinned files", "failedToLoadFile": "Failed to load file: {{error}}", - "serverErrorOccurred": "服务器发生错误。请稍后再试。", - "autoSaveFailed": "自动保存失败", - "fileAutoSaved": "文件自动保存", + "serverErrorOccurred": "Server error occurred. Please try again later.", + "autoSaveFailed": "Auto-save failed", + "fileAutoSaved": "File auto-saved", "moveFileFailed": "Failed to move {{name}}", - "moveOperationFailed": "移动操作失败", - "canOnlyCompareFiles": "只能比较两个文件", + "moveOperationFailed": "Move operation failed", + "canOnlyCompareFiles": "Can only compare two files", "comparingFiles": "Comparing files: {{file1}} and {{file2}}", - "dragFailed": "拖动操作失败", + "dragFailed": "Drag operation failed", "filePinnedSuccessfully": "File \"{{name}}\" pinned successfully", - "pinFileFailed": "无法固定文件", + "pinFileFailed": "Failed to pin file", "fileUnpinnedSuccessfully": "File \"{{name}}\" unpinned successfully", - "unpinFileFailed": "取消固定文件失败", + "unpinFileFailed": "Failed to unpin file", "shortcutAddedSuccessfully": "Folder shortcut \"{{name}}\" added successfully", - "addShortcutFailed": "添加快捷方式失败", + "addShortcutFailed": "Failed to add shortcut", "operationCompletedSuccessfully": "{{operation}} {{count}} items successfully", "operationCompleted": "{{operation}} {{count}} items", "downloadFileSuccess": "File {{name}} downloaded successfully", - "downloadFileFailed": "下载失败", + "downloadFileFailed": "Download failed", "moveTo": "Move to {{name}}", "diffCompareWith": "Diff compare with {{name}}", "dragOutsideToDownload": "Drag outside window to download ({{count}} files)", - "newFolderDefault": "新文件夹", - "newFileDefault": "新建文件 txt", + "newFolderDefault": "NewFolder", + "newFileDefault": "NewFile.txt", "successfullyMovedItems": "Successfully moved {{count}} items to {{target}}", - "move": "移动", - "searchInFile": "在文件中搜索(Ctrl+F)", - "showKeyboardShortcuts": "显示键盘快捷键", - "startWritingMarkdown": "开始写下您的Markdown内容...", - "loadingFileComparison": "正在加载文件比较...", + "move": "Move", + "searchInFile": "Search in file (Ctrl+F)", + "showKeyboardShortcuts": "Show keyboard shortcuts", + "startWritingMarkdown": "Start writing your markdown content...", + "loadingFileComparison": "Loading file comparison...", "reload": "Reload", - "compare": "比较", - "sideBySide": "侧面", - "inline": "内联", + "compare": "Compare", + "sideBySide": "Side by Side", + "inline": "Inline", "fileComparison": "File Comparison: {{file1}} vs {{file2}}", "fileTooLarge": "File too large: {{error}}", "sshConnectionFailed": "SSH connection failed. Please check your connection to {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Failed to load file: {{error}}", - "connectedSuccessfully": "连接成功", - "totpVerificationFailed": "TOTP 验证失败", - "verificationCodePrompt": "验证码:", - "changePermissions": "更改权限", - "changePermissionsDesc": "修改文件权限", - "currentPermissions": "当前权限", - "newPermissions": "新增权限", - "owner": "所有者", - "group": "组别", - "others": "其 他", - "read": "已读", - "write": "写入", - "execute": "执行", - "permissionsChangedSuccessfully": "权限修改成功", - "failedToChangePermissions": "更改权限失败" + "connectedSuccessfully": "Connected successfully", + "totpVerificationFailed": "TOTP verification failed", + "verificationCodePrompt": "Verification code:", + "changePermissions": "Change Permissions", + "changePermissionsDesc": "Modify file permissions for", + "currentPermissions": "Current Permissions", + "newPermissions": "New Permissions", + "owner": "Owner", + "group": "Group", + "others": "Others", + "read": "Read", + "write": "Write", + "execute": "Execute", + "permissionsChangedSuccessfully": "Permissions changed successfully", + "failedToChangePermissions": "Failed to change permissions" }, "tunnel": { - "noTunnelsConfigured": "未配置 Tunnels", - "configureTunnelsInHostSettings": "配置主机管理器中的隧道连接来启动" + "noTunnelsConfigured": "No Tunnels Configured", + "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" }, "tunnels": { "title": "SSH Tunnels", - "noSshTunnels": "没有 SSH Tunnels", - "createFirstTunnelMessage": "您尚未创建任何 SSH 隧道。配置主机管理器中的隧道连接来启动。", - "connected": "已连接", - "disconnected": "断开连接", - "connecting": "正在连接...", - "disconnecting": "正在断开连接...", - "unknownTunnelStatus": "未知的", - "statusUnknown": "未知的", - "unknown": "未知的", - "error": "错误", - "failed": "失败", - "retrying": "重试", - "waiting": "等待中", - "waitingForRetry": "等待重试", - "retryingConnection": "重试连接", - "canceling": "正在取消...", - "connect": "连接", - "disconnect": "断开连接", - "cancel": "取消", - "port": "端口", + "noSshTunnels": "No SSH Tunnels", + "createFirstTunnelMessage": "You haven't created any SSH tunnels yet. Configure tunnel connections in the Host Manager to get started.", + "connected": "Connected", + "disconnected": "Disconnected", + "connecting": "Connecting...", + "disconnecting": "Disconnecting...", + "unknownTunnelStatus": "Unknown", + "statusUnknown": "Unknown", + "unknown": "Unknown", + "error": "Error", + "failed": "Failed", + "retrying": "Retrying", + "waiting": "Waiting", + "waitingForRetry": "Waiting for retry", + "retryingConnection": "Retrying connection", + "canceling": "Canceling...", + "connect": "Connect", + "disconnect": "Disconnect", + "cancel": "Cancel", + "port": "Port", "attempt": "Attempt {{current}} of {{max}}", "nextRetryIn": "Next retry in {{seconds}} seconds", - "checkDockerLogs": "检查您的 Docker 日志是否有错误原因,请加入", - "orCreate": "或创建一个 ", - "noTunnelConnections": "未配置隧道连接", - "tunnelConnections": "隧道连接", - "addTunnel": "添加Tunnel", - "editTunnel": "编辑隧道...", - "deleteTunnel": "删除Tunnel", - "tunnelName": "隧道名称", - "localPort": "本地端口", - "remoteHost": "远程主机", - "remotePort": "远程端口", - "autoStart": "自动启动", - "status": "状态", - "active": "已启用", - "inactive": "未激活", - "start": "开始", - "stop": "停止", - "restart": "重新启动", - "connectionType": "连接类型", - "local": "本地的", - "remote": "远程", - "dynamic": "动态", - "unknownConnectionStatus": "未知的", + "checkDockerLogs": "Check your Docker logs for the error reason, join the", + "orCreate": "or create a ", + "noTunnelConnections": "No tunnel connections configured", + "tunnelConnections": "Tunnel Connections", + "addTunnel": "Add Tunnel", + "editTunnel": "Edit Tunnel", + "deleteTunnel": "Delete Tunnel", + "tunnelName": "Tunnel Name", + "localPort": "Local Port", + "remoteHost": "Remote Host", + "remotePort": "Remote Port", + "autoStart": "Auto Start", + "status": "Status", + "active": "Active", + "inactive": "Inactive", + "start": "Start", + "stop": "Stop", + "restart": "Restart", + "connectionType": "Connection Type", + "local": "Local", + "remote": "Remote", + "dynamic": "Dynamic", + "unknownConnectionStatus": "Unknown", "portMapping": "Port {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", - "endpointHostNotFound": "未找到端点主机", + "endpointHostNotFound": "Endpoint host not found", "discord": "Discord", - "githubIssue": "GitHub 问题", - "forHelp": "寻求帮助" + "githubIssue": "GitHub issue", + "forHelp": "for help" }, "serverStats": { - "title": "服务器统计", + "title": "Server Statistics", "cpu": "CPU", - "memory": "内存", - "disk": "磁盘", - "network": "网络", - "uptime": "运行时间", + "memory": "Memory", + "disk": "Disk", + "network": "Network", + "uptime": "Uptime", "loadAverage": "Avg: {{avg1}}, {{avg5}}, {{avg15}}", - "processes": "进程", - "connections": "连接", - "usage": "用法", - "available": "可用", - "total": "总计", - "free": "免费的", - "used": "已使用", - "percentage": "百分比", - "refreshStatusAndMetrics": "刷新状态和指标", - "refreshStatus": "刷新状态", - "fileManagerAlreadyOpen": "文件管理器已经打开此主机", - "openFileManager": "打开文件管理器", + "processes": "Processes", + "connections": "Connections", + "usage": "Usage", + "available": "Available", + "total": "Total", + "free": "Free", + "used": "Used", + "percentage": "Percentage", + "refreshStatusAndMetrics": "Refresh status and metrics", + "refreshStatus": "Refresh Status", + "fileManagerAlreadyOpen": "File Manager already open for this host", + "openFileManager": "Open File Manager", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPUs", "naCpus": "N/A CPU(s)", - "loadAverageNA": "平均值:不/A", - "cpuUsage": "CPU 使用", - "memoryUsage": "内存使用", - "diskUsage": "磁盘使用", - "rootStorageSpace": "根存储空间", - "of": "共", - "feedbackMessage": "有关于服务器管理下一步应该怎么办的想法?分享它", - "failedToFetchHostConfig": "获取主机配置失败", - "failedToFetchStatus": "获取服务器状态失败", - "failedToFetchMetrics": "获取服务器计量失败", - "failedToFetchHomeData": "获取家庭数据失败", - "loadingMetrics": "正在加载矩阵...", - "connecting": "正在连接...", - "refreshing": "正在刷新...", - "serverOffline": "服务器脱机", - "cannotFetchMetrics": "无法从离线服务器获取指标", - "totpRequired": "需要TOTP 身份验证", - "totpUnavailable": "TOTP 服务器统计不可用", - "totpVerified": "TOTP 验证后,计量集已启动", - "totpFailed": "TOTP 验证失败", - "totpInvalidCode": "无效的验证码", - "totpCancelled": "计量收藏已取消", - "authenticationFailed": "身份验证失败", - "noneAuthNotSupported": "服务器统计不支持“无”认证类型。", - "load": "负载", - "editLayout": "编辑布局", - "cancelEdit": "取消", - "addWidget": "添加部件", - "saveLayout": "保存布局", - "unsavedChanges": "未保存的更改", - "layoutSaved": "布局保存成功", - "failedToSaveLayout": "保存布局失败", - "systemInfo": "系统信息", + "loadAverageNA": "Avg: N/A", + "cpuUsage": "CPU Usage", + "memoryUsage": "Memory Usage", + "diskUsage": "Disk Usage", + "rootStorageSpace": "Root Storage Space", + "of": "of", + "feedbackMessage": "Have ideas for what should come next for server management? Share them on", + "failedToFetchHostConfig": "Failed to fetch host configuration", + "failedToFetchStatus": "Failed to fetch server status", + "failedToFetchMetrics": "Failed to fetch server metrics", + "failedToFetchHomeData": "Failed to fetch home data", + "loadingMetrics": "Loading metrics...", + "connecting": "Connecting...", + "refreshing": "Refreshing...", + "serverOffline": "Server Offline", + "cannotFetchMetrics": "Cannot fetch metrics from offline server", + "totpRequired": "TOTP Authentication Required", + "totpUnavailable": "Server Stats unavailable for TOTP-enabled servers", + "totpVerified": "TOTP verified, metrics collection started", + "totpFailed": "TOTP verification failed", + "totpInvalidCode": "Invalid verification code", + "totpCancelled": "Metrics collection cancelled", + "authenticationFailed": "Authentication failed", + "noneAuthNotSupported": "Server Stats does not support 'none' authentication type.", + "load": "Load", + "editLayout": "Edit Layout", + "cancelEdit": "Cancel", + "addWidget": "Add Widget", + "saveLayout": "Save Layout", + "unsavedChanges": "Unsaved changes", + "layoutSaved": "Layout saved successfully", + "failedToSaveLayout": "Failed to save layout", + "systemInfo": "System Information", "hostname": "Hostname", - "operatingSystem": "操作系统", - "kernel": "内核数", - "totalUptime": "总运行时间", - "seconds": "秒", - "networkInterfaces": "网络接口", - "noInterfacesFound": "没有找到网络接口", - "totalProcesses": "总进程数", - "running": "正在运行", - "noProcessesFound": "未找到进程", - "loginStats": "SSH 登录统计", - "totalLogins": "登录总数", - "uniqueIPs": "唯一IP地址", - "recentSuccessfulLogins": "最近成功登录", - "recentFailedAttempts": "最近失败的尝试", - "noRecentLoginData": "没有最近的登录数据", - "from": "来自", - "quickActions": "快速操作", + "operatingSystem": "Operating System", + "kernel": "Kernel", + "totalUptime": "Total Uptime", + "seconds": "seconds", + "networkInterfaces": "Network Interfaces", + "noInterfacesFound": "No network interfaces found", + "totalProcesses": "Total Processes", + "running": "Running", + "noProcessesFound": "No processes found", + "loginStats": "SSH Login Statistics", + "totalLogins": "Total Logins", + "uniqueIPs": "Unique IPs", + "recentSuccessfulLogins": "Recent Successful Logins", + "recentFailedAttempts": "Recent Failed Attempts", + "noRecentLoginData": "No recent login data", + "from": "from", + "quickActions": "Quick Actions", "executeQuickAction": "Execute {{name}}", "executingQuickAction": "Executing {{name}}...", "quickActionSuccess": "{{name}} completed successfully", @@ -1685,215 +1685,215 @@ "quickActionError": "Failed to execute {{name}}" }, "auth": { - "tagline": "SSH 服务管理", - "description": "安全、 强大和直观的 SSH 连接管理", - "welcomeBack": "欢迎回到TERMIX", - "createAccount": "创建您的TERMIX账户", - "continueExternal": "继续使用外部提供商", - "loginTitle": "登录到 Termixe", - "registerTitle": "创建帐户", - "loginButton": "登录", - "registerButton": "注册", - "forgotPassword": "忘记密码?", - "rememberMe": "记住我", - "noAccount": "没有账户?", - "hasAccount": "已经有一个帐户?", - "loginSuccess": "登录成功", - "loginFailed": "登录失败", - "registerSuccess": "注册成功", - "registerFailed": "注册失败", - "logoutSuccess": "成功登出", - "invalidCredentials": "无效的用户名或密码", - "accountCreated": "帐户创建成功", - "passwordReset": "密码重置链接已发送", - "twoFactorAuth": "两步验证", - "enterCode": "输入验证码", - "backupCode": "或者使用备份代码", - "verifyCode": "验证代码", - "redirectingToApp": "重定向到应用...", - "enableTwoFactor": "启用两步验证", - "disableTwoFactor": "禁用两步验证", - "scanQRCode": "用您的身份验证程序扫描这个二维码", - "backupCodes": "备份代码", - "saveBackupCodes": "将这些备份代码保存到一个安全的地方", - "twoFactorEnabledSuccess": "两步验证已成功启用!", - "twoFactorDisabled": "两步验证已禁用", - "newBackupCodesGenerated": "生成新的备份代码", - "backupCodesDownloaded": "已下载备份代码", - "pleaseEnterSixDigitCode": "请输入一个6位数字", - "invalidVerificationCode": "无效的验证码", - "failedToDisableTotp": "禁用TOTP 失败", - "failedToGenerateBackupCodes": "生成备份码失败", - "enterPassword": "输入您的密码", - "lockedOidcAuth": "已锁定 (OIDC 认证)", - "twoFactorTitle": "两步验证", - "twoFactorProtected": "您的帐户受到双重身份验证的保护", - "twoFactorActive": "两步验证当前在您的帐户上激活", - "disable2FA": "禁用两步验证", - "disableTwoFactorWarning": "禁用双重身份验证会降低您的帐户的安全", - "passwordOrTotpCode": "密码或TOTP 代码", - "or": "或", - "generateNewBackupCodesText": "生成新的备份代码,如果您已经丢失了现有代码", - "generateNewBackupCodes": "生成新的备份代码", - "yourBackupCodes": "您的备份代码", - "download": "下载", - "setupTwoFactorTitle": "设置两步验证", - "sshAuthenticationRequired": "需要 SSH 认证", - "sshNoKeyboardInteractive": "键盘交互式身份验证不可用", - "sshAuthenticationFailed": "身份验证失败", - "sshAuthenticationTimeout": "认证超时", - "sshNoKeyboardInteractiveDescription": "服务器不支持键盘互动身份验证。请提供您的密码或SSH密钥。", - "sshAuthFailedDescription": "提供的凭据不正确。请使用有效凭据再试一次。", - "sshTimeoutDescription": "验证尝试超时。请重试。", - "sshProvideCredentialsDescription": "请提供您的 SSH 凭据以连接到此服务器。", - "sshPasswordDescription": "输入此 SSH 连接的密码。", - "sshKeyPasswordDescription": "如果您的 SSH 密钥已加密,请在此输入密码。", - "step1ScanQR": "第 1 步:用您的身份验证程序扫描二维码", - "manualEntryCode": "手动条目代码", - "cannotScanQRText": "如果您不能扫描二维码,请在您的身份验证程序中手动输入此代码", - "nextVerifyCode": "下一步:验证代码", - "verifyAuthenticator": "验证您的身份验证器", - "step2EnterCode": "第 2 步:从您的身份验证器应用程序中输入6位数字代码", - "verificationCode": "验证码", - "back": "后退", - "verifyAndEnable": "验证并启用", - "saveBackupCodesTitle": "保存您的备份代码", - "step3StoreCodesSecurely": "第 3 步:将这些代码存储在一个安全的地方", - "importantBackupCodesText": "将这些备份代码保存到一个安全的位置。如果您丢失了您的身份验证器设备,您可以使用这些代码访问您的帐户。", - "completeSetup": "完成设置", - "notEnabledText": "双重身份验证通过在登录时要求您的身份验证器应用程序提供代码来增加额外的一层安全性。", - "enableTwoFactorButton": "启用两步验证", - "addExtraSecurityLayer": "为您的帐户添加额外的安全层", - "firstUser": "第一个用户", - "firstUserMessage": "您是第一个用户,将成为管理员。您可以在侧边栏用户下拉列表中查看管理员设置。 如果你认为这是一个错误,请检查停靠日志,或创建一个 GitHub 问题。", - "external": "外部", - "loginWithExternal": "使用外部提供者登录", - "loginWithExternalDesc": "使用您配置的外部身份提供商登录", - "externalNotSupportedInElectron": "Electron应用尚不支持外部身份验证。请使用 web 版本登录。", - "resetPasswordButton": "重置密码", - "sendResetCode": "发送重置代码", - "resetCodeDesc": "输入您的用户名以接收密码重置代码。该代码将登录到停靠容器日志。", + "tagline": "SSH SERVER MANAGER", + "description": "Secure, powerful, and intuitive SSH connection management", + "welcomeBack": "Welcome back to TERMIX", + "createAccount": "Create your TERMIX account", + "continueExternal": "Continue with external provider", + "loginTitle": "Login to Termix", + "registerTitle": "Create Account", + "loginButton": "Login", + "registerButton": "Register", + "forgotPassword": "Forgot Password?", + "rememberMe": "Remember Me", + "noAccount": "Don't have an account?", + "hasAccount": "Already have an account?", + "loginSuccess": "Login successful", + "loginFailed": "Login failed", + "registerSuccess": "Registration successful", + "registerFailed": "Registration failed", + "logoutSuccess": "Logged out successfully", + "invalidCredentials": "Invalid username or password", + "accountCreated": "Account created successfully", + "passwordReset": "Password reset link sent", + "twoFactorAuth": "Two-Factor Authentication", + "enterCode": "Enter verification code", + "backupCode": "Or use backup code", + "verifyCode": "Verify Code", + "redirectingToApp": "Redirecting to app...", + "enableTwoFactor": "Enable Two-Factor Authentication", + "disableTwoFactor": "Disable Two-Factor Authentication", + "scanQRCode": "Scan this QR code with your authenticator app", + "backupCodes": "Backup Codes", + "saveBackupCodes": "Save these backup codes in a safe place", + "twoFactorEnabledSuccess": "Two-factor authentication enabled successfully!", + "twoFactorDisabled": "Two-factor authentication disabled", + "newBackupCodesGenerated": "New backup codes generated", + "backupCodesDownloaded": "Backup codes downloaded", + "pleaseEnterSixDigitCode": "Please enter a 6-digit code", + "invalidVerificationCode": "Invalid verification code", + "failedToDisableTotp": "Failed to disable TOTP", + "failedToGenerateBackupCodes": "Failed to generate backup codes", + "enterPassword": "Enter your password", + "lockedOidcAuth": "Locked (OIDC Auth)", + "twoFactorTitle": "Two-Factor Authentication", + "twoFactorProtected": "Your account is protected with two-factor authentication", + "twoFactorActive": "Two-factor authentication is currently active on your account", + "disable2FA": "Disable 2FA", + "disableTwoFactorWarning": "Disabling two-factor authentication will make your account less secure", + "passwordOrTotpCode": "Password or TOTP Code", + "or": "Or", + "generateNewBackupCodesText": "Generate new backup codes if you've lost your existing ones", + "generateNewBackupCodes": "Generate New Backup Codes", + "yourBackupCodes": "Your Backup Codes", + "download": "Download", + "setupTwoFactorTitle": "Set Up Two-Factor Authentication", + "sshAuthenticationRequired": "SSH Authentication Required", + "sshNoKeyboardInteractive": "Keyboard-Interactive Authentication Unavailable", + "sshAuthenticationFailed": "Authentication Failed", + "sshAuthenticationTimeout": "Authentication Timeout", + "sshNoKeyboardInteractiveDescription": "The server does not support keyboard-interactive authentication. Please provide your password or SSH key.", + "sshAuthFailedDescription": "The provided credentials were incorrect. Please try again with valid credentials.", + "sshTimeoutDescription": "The authentication attempt timed out. Please try again.", + "sshProvideCredentialsDescription": "Please provide your SSH credentials to connect to this server.", + "sshPasswordDescription": "Enter the password for this SSH connection.", + "sshKeyPasswordDescription": "If your SSH key is encrypted, enter the passphrase here.", + "step1ScanQR": "Step 1: Scan the QR code with your authenticator app", + "manualEntryCode": "Manual Entry Code", + "cannotScanQRText": "If you can't scan the QR code, enter this code manually in your authenticator app", + "nextVerifyCode": "Next: Verify Code", + "verifyAuthenticator": "Verify Your Authenticator", + "step2EnterCode": "Step 2: Enter the 6-digit code from your authenticator app", + "verificationCode": "Verification Code", + "back": "Back", + "verifyAndEnable": "Verify and Enable", + "saveBackupCodesTitle": "Save Your Backup Codes", + "step3StoreCodesSecurely": "Step 3: Store these codes in a safe place", + "importantBackupCodesText": "Save these backup codes in a secure location. You can use them to access your account if you lose your authenticator device.", + "completeSetup": "Complete Setup", + "notEnabledText": "Two-factor authentication adds an extra layer of security by requiring a code from your authenticator app when signing in.", + "enableTwoFactorButton": "Enable Two-Factor Authentication", + "addExtraSecurityLayer": "Add an extra layer of security to your account", + "firstUser": "First User", + "firstUserMessage": "You are the first user and will be made an admin. You can view admin settings in the sidebar user dropdown. If you think this is a mistake, check the docker logs, or create a GitHub issue.", + "external": "External", + "loginWithExternal": "Login with External Provider", + "loginWithExternalDesc": "Login using your configured external identity provider", + "externalNotSupportedInElectron": "External authentication is not supported in the Electron app yet. Please use the web version for OIDC login.", + "resetPasswordButton": "Reset Password", + "sendResetCode": "Send Reset Code", + "resetCodeDesc": "Enter your username to receive a password reset code. The code will be logged in the docker container logs.", "resetCode": "Reset Code", - "verifyCodeButton": "验证代码", - "enterResetCode": "从停靠容器日志中为用户输入6位数字代码:", - "goToLogin": "转到登录", - "newPassword": "新密码", - "confirmNewPassword": "确认密码", - "enterNewPassword": "输入您的新用户密码:", - "signUp": "注册", - "mobileApp": "移动应用", - "loggingInToMobileApp": "正在登录到移动应用", - "desktopApp": "桌面应用程序", - "loggingInToDesktopApp": "登录到桌面应用", - "loggingInToDesktopAppViaWeb": "通过 web 界面登录到桌面应用", - "loadingServer": "正在加载服务器...", - "authenticating": "正在验证...", - "dataLossWarning": "以这种方式重置您的密码将删除您保存的所有SSH主机、 凭据和其他加密数据。 此操作不能撤消。只有当您忘记了您的密码并且未登录时才使用此操作。", - "authenticationDisabled": "身份验证已禁用", - "authenticationDisabledDesc": "所有身份验证方法目前已禁用。请联系您的管理员。", - "passwordResetSuccess": "密码重置成功", - "passwordResetSuccessDesc": "您的密码已成功重置。您现在可以使用您的新密码登录。" + "verifyCodeButton": "Verify Code", + "enterResetCode": "Enter the 6-digit code from the docker container logs for user:", + "goToLogin": "Go to Login", + "newPassword": "New Password", + "confirmNewPassword": "Confirm Password", + "enterNewPassword": "Enter your new password for user:", + "signUp": "Sign Up", + "mobileApp": "Mobile App", + "loggingInToMobileApp": "Logging in to the mobile app", + "desktopApp": "Desktop App", + "loggingInToDesktopApp": "Logging in to the desktop app", + "loggingInToDesktopAppViaWeb": "Logging in to the desktop app via web interface", + "loadingServer": "Loading server...", + "authenticating": "Authenticating...", + "dataLossWarning": "Resetting your password this way will delete all your saved SSH hosts, credentials, and other encrypted data. This action cannot be undone. Only use this if you have forgotten your password and are not logged in.", + "authenticationDisabled": "Authentication Disabled", + "authenticationDisabledDesc": "All authentication methods are currently disabled. Please contact your administrator.", + "passwordResetSuccess": "Password Reset Successful", + "passwordResetSuccessDesc": "Your password has been reset successfully. You can now log in with your new password." }, "errors": { - "notFound": "找不到页面", - "unauthorized": "未经授权的访问", - "forbidden": "禁止访问", - "serverError": "服务器错误", - "networkError": "网络错误", - "databaseConnection": "无法连接到数据库", - "unknownError": "未知错误", - "loginFailed": "登录失败", - "failedPasswordReset": "启动密码重置失败", - "failedVerifyCode": "验证重置代码失败", - "failedCompleteReset": "密码重置失败", + "notFound": "Page not found", + "unauthorized": "Unauthorized access", + "forbidden": "Access forbidden", + "serverError": "Server error", + "networkError": "Network error", + "databaseConnection": "Could not connect to the database", + "unknownError": "Unknown error", + "loginFailed": "Login failed", + "failedPasswordReset": "Failed to initiate password reset", + "failedVerifyCode": "Failed to verify reset code", + "failedCompleteReset": "Failed to complete password reset", "invalidTotpCode": "Invalid TOTP code", - "failedOidcLogin": "启动 OIDC 登录失败", - "failedUserInfo": "在 OIDC 登录后无法获取用户信息", - "oidcAuthFailed": "OIDC 身份验证失败", - "noTokenReceived": "未从登录中收到令牌", - "invalidAuthUrl": "从后端收到无效的认证 URL", + "failedOidcLogin": "Failed to start OIDC login", + "failedUserInfo": "Failed to get user info after OIDC login", + "oidcAuthFailed": "OIDC authentication failed", + "noTokenReceived": "No token received from login", + "invalidAuthUrl": "Invalid authorization URL received from backend", "invalidInput": "Invalid input", - "requiredField": "此字段是必填项", + "requiredField": "This field is required", "minLength": "Minimum length is {{min}}", "maxLength": "Maximum length is {{max}}", - "invalidEmail": "无效的电子邮件地址", - "passwordMismatch": "密码不匹配", - "passwordLoginDisabled": "用户名/密码登录目前已禁用", - "weakPassword": "密码太弱了", - "usernameExists": "用户名已存在", - "emailExists": "电子邮件已存在", - "loadFailed": "加载数据失败", - "saveError": "保存失败", - "sessionExpired": "会话已过期 - 请重新登录" + "invalidEmail": "Invalid email address", + "passwordMismatch": "Passwords do not match", + "passwordLoginDisabled": "Username/password login is currently disabled", + "weakPassword": "Password is too weak", + "usernameExists": "Username already exists", + "emailExists": "Email already exists", + "loadFailed": "Failed to load data", + "saveError": "Failed to save", + "sessionExpired": "Session expired - please log in again" }, "messages": { - "saveSuccess": "保存成功", - "saveError": "保存失败", - "deleteSuccess": "已成功删除", - "deleteError": "删除失败", - "updateSuccess": "更新成功", - "updateError": "更新失败", - "copySuccess": "复制到剪贴板", - "copyError": "复制失败", + "saveSuccess": "Saved successfully", + "saveError": "Failed to save", + "deleteSuccess": "Deleted successfully", + "deleteError": "Failed to delete", + "updateSuccess": "Updated successfully", + "updateError": "Failed to update", + "copySuccess": "Copied to clipboard", + "copyError": "Failed to copy", "copiedToClipboard": "{{item}} copied to clipboard", - "connectionEstablished": "连接已建立", - "connectionClosed": "连接已关闭", - "reconnecting": "正在重新连接...", - "processing": "正在处理...", - "pleaseWait": "请稍候...", - "registrationDisabled": "新帐户注册目前被管理员禁用。请登录或联系管理员。", - "databaseConnected": "数据库连接成功", - "databaseConnectionFailed": "无法连接到数据库服务器", - "checkServerConnection": "请检查您的服务器连接并重试", - "resetCodeSent": "重置发送到停靠日志的代码", - "codeVerified": "验证码成功", - "passwordResetSuccess": "密码重置成功", - "loginSuccess": "登录成功", - "registrationSuccess": "注册成功" + "connectionEstablished": "Connection established", + "connectionClosed": "Connection closed", + "reconnecting": "Reconnecting...", + "processing": "Processing...", + "pleaseWait": "Please wait...", + "registrationDisabled": "New account registration is currently disabled by an admin. Please log in or contact an administrator.", + "databaseConnected": "Database connected successfully", + "databaseConnectionFailed": "Failed to connect to the database server", + "checkServerConnection": "Please check your server connection and try again", + "resetCodeSent": "Reset code sent to Docker logs", + "codeVerified": "Code verified successfully", + "passwordResetSuccess": "Password reset successfully", + "loginSuccess": "Login successful", + "registrationSuccess": "Registration successful" }, "profile": { - "title": "用户资料", - "description": "管理您的帐户设置和安全", - "security": "安全", - "changePassword": "更改密码", - "twoFactorAuth": "两步验证", - "accountInfo": "帐户信息", - "role": "作用", - "admin": "管理员", - "user": "用户", - "authMethod": "身份验证方法", - "local": "本地的", - "external": "外部 (OIDC)", - "externalAndLocal": "双重认证", - "selectPreferredLanguage": "选择您首选的接口语言", - "fileColorCoding": "文件颜色编码", - "fileColorCodingDesc": "按类型分类的颜色代码文件:文件夹 (红色), 文件 (蓝色), 符号链接 (绿色)", - "commandAutocomplete": "命令自动完成", - "commandAutocompleteDesc": "基于您的命令历史记录启用终端命令选项卡密钥自动补全建议", - "defaultSnippetFoldersCollapsed": "默认情况下折叠代码文件夹", - "defaultSnippetFoldersCollapsedDesc": "如果启用,当您打开代码片段标签时,所有代码片段文件夹都将折叠。", - "terminalSyntaxHighlighting": "终端语法高亮", - "showHostTags": "显示主机标签", - "showHostTagsDesc": "在侧边栏每个主机下显示标签。禁用以隐藏所有标签。", - "account": "账户", - "appearance": "外观", - "languageLocalization": "语言和本地化", - "fileManagerSettings": "文件管理器", - "terminalSettings": "终端", - "hostSidebarSettings": "主机与侧边栏", - "snippetsSettings": "片段", - "currentPassword": "当前密码", - "passwordChangedSuccess": "密码修改成功!请重新登录。", - "failedToChangePassword": "更改密码失败。请检查您当前的密码,然后重试。", - "theme": "主题", - "themeLight": "亮色的", - "themeDark": "深色", - "themeSystem": "系统", - "appearanceDesc": "选择应用程序的颜色主题", - "terminalSyntaxHighlightingDesc": "自动高亮终端输出中的命令、路径、IP和日志级别" + "title": "User Profile", + "description": "Manage your account settings and security", + "security": "Security", + "changePassword": "Change Password", + "twoFactorAuth": "Two-Factor Authentication", + "accountInfo": "Account Information", + "role": "Role", + "admin": "Administrator", + "user": "User", + "authMethod": "Authentication Method", + "local": "Local", + "external": "External (OIDC)", + "externalAndLocal": "Dual Auth", + "selectPreferredLanguage": "Select your preferred language for the interface", + "fileColorCoding": "File Color Coding", + "fileColorCodingDesc": "Color-code files by type: folders (red), files (blue), symlinks (green)", + "commandAutocomplete": "Command Autocomplete", + "commandAutocompleteDesc": "Enable Tab key autocomplete suggestions for terminal commands based on your command history", + "defaultSnippetFoldersCollapsed": "Collapse Snippet Folders by Default", + "defaultSnippetFoldersCollapsedDesc": "When enabled, all snippet folders will be collapsed when you open the snippets tab", + "terminalSyntaxHighlighting": "Terminal Syntax Highlighting", + "showHostTags": "Show Host Tags", + "showHostTagsDesc": "Display tags under each host in the sidebar. Disable to hide all tags.", + "account": "Account", + "appearance": "Appearance", + "languageLocalization": "Language & Localization", + "fileManagerSettings": "File Manager", + "terminalSettings": "Terminal", + "hostSidebarSettings": "Host & Sidebar", + "snippetsSettings": "Snippets", + "currentPassword": "Current Password", + "passwordChangedSuccess": "Password changed successfully! Please log in again.", + "failedToChangePassword": "Failed to change password. Please check your current password and try again.", + "theme": "Theme", + "themeLight": "Light", + "themeDark": "Dark", + "themeSystem": "System", + "appearanceDesc": "Select the color theme for the application", + "terminalSyntaxHighlightingDesc": "Automatically highlight commands, paths, IPs, and log levels in terminal output" }, "user": { - "failedToLoadVersionInfo": "加载版本信息失败" + "failedToLoadVersionInfo": "Failed to load version information" }, "placeholders": { "enterCode": "000000", @@ -1901,412 +1901,412 @@ "port": "22", "maxRetries": "3", "retryInterval": "10", - "language": "语言", - "username": "用户名", - "hostname": "主机名", - "folder": "文件夹", - "password": "密碼", - "keyPassword": "密钥密码", - "sudoPassword": "sudo 密码(可选)", - "notes": "添加关于此主机的备注...", - "expirationDate": "选择过期日期", - "pastePrivateKey": "在这里粘贴您的私钥...", - "pastePublicKey": "在这里粘贴您的公钥...", - "credentialName": "我的 SSH 服务器", - "description": "SSH 凭证描述", - "searchCredentials": "按名称、用户名或标签搜索凭据...", - "sshConfig": "端点ssh 配置", + "language": "Language", + "username": "username", + "hostname": "host name", + "folder": "folder", + "password": "password", + "keyPassword": "key password", + "sudoPassword": "sudo password (optional)", + "notes": "add notes about this host...", + "expirationDate": "Select expiration date", + "pastePrivateKey": "Paste your private key here...", + "pastePublicKey": "Paste your public key here...", + "credentialName": "My SSH Server", + "description": "SSH credential description", + "searchCredentials": "Search credentials by name, username, or tags...", + "sshConfig": "endpoint ssh configuration", "homePath": "/home", - "clientId": "您的客户端ID", - "clientSecret": "您的客户端密码", + "clientId": "your-client-id", + "clientSecret": "your-client-secret", "authUrl": "https://your-provider.com/application/o/authorize/", "redirectUrl": "https://your-provider.com/application/o/termix/", "tokenUrl": "https://your-provider.com/application/o/token/", - "userIdField": "子项", - "usernameField": "名称", - "scopes": "openid 电子邮件配置文件", + "userIdField": "sub", + "usernameField": "name", + "scopes": "openid email profile", "userinfoUrl": "https://your-provider.com/application/o/userinfo/", - "enterUsername": "输入管理员用户名", - "searchHosts": "按名称、用户名、IP、文件夹、标签搜索主机...", - "enterPassword": "输入您的密码", + "enterUsername": "Enter username to make admin", + "searchHosts": "Search hosts by name, username, IP, folder, tags...", + "enterPassword": "Enter your password", "totpCode": "6-digit TOTP code", - "searchHostsAny": "搜索主机 (试试: tag:prod, user:root, ip:192.168)...", - "confirmPassword": "输入您的密码以确认", - "typeHere": "在此处输入", - "fileName": "输入文件名称(如示例.txt)", - "folderName": "输入文件夹名称", - "fullPath": "输入项目的完整路径", - "currentPath": "输入当前项目路径", - "newName": "输入新名称", + "searchHostsAny": "Search hosts (try: tag:prod, user:root, ip:192.168)...", + "confirmPassword": "Enter your password to confirm", + "typeHere": "Type here", + "fileName": "Enter file name (e.g., example.txt)", + "folderName": "Enter folder name", + "fullPath": "Enter full path to item", + "currentPath": "Enter current path to item", + "newName": "Enter new name", "socks5Host": "127.0.0.1", - "socks5Username": "代理用户名", - "socks5Password": "代理密码", - "socks5PresetName": "例如,工作 VPN 链条", - "socks5PresetDescription": "例如,访问工作服务器的代理链。", - "moshCommand": "mosh用户@服务器", + "socks5Username": "proxy username", + "socks5Password": "proxy password", + "socks5PresetName": "e.g., Work VPN Chain", + "socks5PresetDescription": "e.g., Proxy chain for accessing work servers", + "moshCommand": "mosh user@server", "defaultPort": "22", "defaultEndpointPort": "224", "defaultMaxRetries": "3", "defaultRetryInterval": "10" }, "leftSidebar": { - "failedToLoadHosts": "加载主机失败", - "noFolder": "没有文件夹", - "passwordRequired": "密码是必需的", - "failedToDeleteAccount": "删除帐户失败", - "failedToMakeUserAdmin": "无法设置用户管理员", + "failedToLoadHosts": "Failed to load hosts", + "noFolder": "No Folder", + "passwordRequired": "Password is required", + "failedToDeleteAccount": "Failed to delete account", + "failedToMakeUserAdmin": "Failed to make user admin", "userIsNowAdmin": "User {{username}} is now an admin", "removeAdminConfirm": "Are you sure you want to remove admin status from {{username}}?", "deleteUserConfirm": "Are you sure you want to delete user {{username}}? This action cannot be undone.", - "deleteAccount": "删除帐户", - "closeDeleteAccount": "关闭删除帐户", - "deleteAccountWarning": "此操作无法撤销。这将永久删除您的帐户和所有相关数据。", - "deleteAccountWarningDetails": "删除您的帐户将删除您的所有数据,包括SSH主机、 配置和设置。此操作是不可逆的。", - "deleteAccountWarningShort": "此操作不可逆,将永久删除您的帐户。", - "cannotDeleteAccount": "无法删除帐户", - "lastAdminWarning": "您是最后一个管理员用户。您不能删除您的帐户,因为这将使系统没有任何管理员。 请先让另一个用户成为管理员或联系系统支持。", - "confirmPassword": "确认密码", - "deleting": "正在删除...", - "cancel": "取消" + "deleteAccount": "Delete Account", + "closeDeleteAccount": "Close Delete Account", + "deleteAccountWarning": "This action cannot be undone. This will permanently delete your account and all associated data.", + "deleteAccountWarningDetails": "Deleting your account will remove all your data including SSH hosts, configurations, and settings. This action is irreversible.", + "deleteAccountWarningShort": "This action is not reversible and will permanently delete your account.", + "cannotDeleteAccount": "Cannot Delete Account", + "lastAdminWarning": "You are the last admin user. You cannot delete your account as this would leave the system without any administrators. Please make another user an admin first, or contact system support.", + "confirmPassword": "Confirm Password", + "deleting": "Deleting...", + "cancel": "Cancel" }, "interface": { "sidebar": "Sidebar", - "toggleSidebar": "切换侧边栏", - "close": "关闭", - "online": "在线", - "offline": "离线的", - "maintenance": "维护费", - "degraded": "降级", - "noTunnelConnections": "未配置隧道连接", + "toggleSidebar": "Toggle Sidebar", + "close": "Close", + "online": "Online", + "offline": "Offline", + "maintenance": "Maintenance", + "degraded": "Degraded", + "noTunnelConnections": "No tunnel connections configured", "discord": "Discord", - "connectToSshForOperations": "连接到 SSH 以使用文件操作", - "uploadFile": "上传文件", - "newFile": "新建文件", - "newFolder": "新建文件夹", - "rename": "重命名:", - "deleteItem": "删除项目", - "createNewFile": "创建新文件", - "createNewFolder": "创建新文件夹", - "renameItem": "重命名项目", - "clickToSelectFile": "点击选择一个文件", - "noSshHosts": "没有 SSH 主机", - "sshHosts": "SSH 主机", - "importSshHosts": "从 JSON 导入 SSH 主机", - "clientId": "客户端ID", - "clientSecret": "客户端密钥", - "error": "错误", - "warning": "警告", - "deleteAccount": "删除帐户", - "closeDeleteAccount": "关闭删除帐户", - "cannotDeleteAccount": "无法删除帐户", - "confirmPassword": "确认密码", - "deleting": "正在删除...", - "externalAuth": "外部身份验证 (OIDC)", - "configureExternalProvider": "配置外部身份提供商", - "waitingForRetry": "等待重试", - "retryingConnection": "重试连接", - "resetSplitSizes": "重置分割大小", - "sshManagerAlreadyOpen": "SSH 管理器已经打开", - "disabledDuringSplitScreen": "分割屏幕时禁用", - "unknown": "未知的", - "connected": "已连接", - "disconnected": "断开连接", - "maxRetriesExhausted": "最大重试耗尽量", - "endpointHostNotFound": "未找到端点主机", - "administrator": "管理员", - "user": "用户", - "external": "外部", - "local": "本地的", - "saving": "保存中...", - "saveConfiguration": "保存配置", - "loading": "加载中...", - "refresh": "刷新", - "adding": "添加中...", - "makeAdmin": "管理员设置", - "verifying": "正在验证...", - "verifyAndEnable": "验证并启用", - "secretKey": "秘密密钥", + "connectToSshForOperations": "Connect to SSH to use file operations", + "uploadFile": "Upload File", + "newFile": "New File", + "newFolder": "New Folder", + "rename": "Rename", + "deleteItem": "Delete Item", + "createNewFile": "Create New File", + "createNewFolder": "Create New Folder", + "renameItem": "Rename Item", + "clickToSelectFile": "Click to select a file", + "noSshHosts": "No SSH Hosts", + "sshHosts": "SSH Hosts", + "importSshHosts": "Import SSH Hosts from JSON", + "clientId": "Client ID", + "clientSecret": "Client Secret", + "error": "Error", + "warning": "Warning", + "deleteAccount": "Delete Account", + "closeDeleteAccount": "Close Delete Account", + "cannotDeleteAccount": "Cannot Delete Account", + "confirmPassword": "Confirm Password", + "deleting": "Deleting...", + "externalAuth": "External Authentication (OIDC)", + "configureExternalProvider": "Configure external identity provider for", + "waitingForRetry": "Waiting for retry", + "retryingConnection": "Retrying connection", + "resetSplitSizes": "Reset split sizes", + "sshManagerAlreadyOpen": "SSH Manager already open", + "disabledDuringSplitScreen": "Disabled during split screen", + "unknown": "Unknown", + "connected": "Connected", + "disconnected": "Disconnected", + "maxRetriesExhausted": "Max retries exhausted", + "endpointHostNotFound": "Endpoint host not found", + "administrator": "Administrator", + "user": "User", + "external": "External", + "local": "Local", + "saving": "Saving...", + "saveConfiguration": "Save Configuration", + "loading": "Loading...", + "refresh": "Refresh", + "adding": "Adding...", + "makeAdmin": "Make Admin", + "verifying": "Verifying...", + "verifyAndEnable": "Verify and Enable", + "secretKey": "Secret key", "totpQrCode": "TOTP QR Code", - "passwordRequired": "使用密码验证时需要密码", - "sshKeyRequired": "使用密钥验证时需要 SSH 私钥", - "keyTypeRequired": "使用密钥身份验证时需要密钥类型", - "validSshConfigRequired": "必须从列表中选择一个有效的 SSH 配置", - "updateHost": "更新主机", - "addHost": "添加主机", - "editHost": "编辑主机", - "pinConnection": "Pin 连接", - "authentication": "认证", - "password": "密码", - "key": "关键字", - "sshPrivateKey": "SSH 私钥", - "keyPassword": "密钥密码", - "keyType": "密钥类型", - "enableTerminal": "启用终端", - "enableTunnel": "启用Tunnel", - "enableFileManager": "启用文件管理器", - "defaultPath": "默认路径", - "tunnelConnections": "隧道连接", - "maxRetries": "最大重试次数", - "upload": "上传", - "updateKey": "更新密钥", - "productionFolder": "生产", - "databaseServer": "数据库服务器", - "developmentServer": "开发服务器", - "developmentFolder": "贸易和发展会议", - "webServerProduction": "Web 服务器 - 生产", - "unknownError": "未知错误", - "failedToInitiatePasswordReset": "启动密码重置失败", - "failedToVerifyResetCode": "验证重置代码失败", - "failedToCompletePasswordReset": "密码重置失败", + "passwordRequired": "Password is required when using password authentication", + "sshKeyRequired": "SSH Private Key is required when using key authentication", + "keyTypeRequired": "Key Type is required when using key authentication", + "validSshConfigRequired": "Must select a valid SSH configuration from the list", + "updateHost": "Update Host", + "addHost": "Add Host", + "editHost": "Edit Host", + "pinConnection": "Pin Connection", + "authentication": "Authentication", + "password": "Password", + "key": "Key", + "sshPrivateKey": "SSH Private Key", + "keyPassword": "Key Password", + "keyType": "Key Type", + "enableTerminal": "Enable Terminal", + "enableTunnel": "Enable Tunnel", + "enableFileManager": "Enable File Manager", + "defaultPath": "Default Path", + "tunnelConnections": "Tunnel Connections", + "maxRetries": "Max Retries", + "upload": "Upload", + "updateKey": "Update Key", + "productionFolder": "Production", + "databaseServer": "Database Server", + "developmentServer": "Development Server", + "developmentFolder": "Development", + "webServerProduction": "Web Server - Production", + "unknownError": "Unknown error", + "failedToInitiatePasswordReset": "Failed to initiate password reset", + "failedToVerifyResetCode": "Failed to verify reset code", + "failedToCompletePasswordReset": "Failed to complete password reset", "invalidTotpCode": "Invalid TOTP code", - "failedToStartOidcLogin": "启动 OIDC 登录失败", - "failedToGetUserInfoAfterOidc": "在 OIDC 登录后无法获取用户信息", - "loginWithExternalProvider": "与外部提供者登录", - "loginWithExternal": "使用外部提供者登录", - "sendResetCode": "发送重置代码", - "verifyCode": "验证代码", - "resetPassword": "重置密码", - "login": "登录", - "signUp": "注册", - "failedToUpdateOidcConfig": "更新OIDC配置失败", - "failedToMakeUserAdmin": "无法设置用户管理员", - "failedToStartTotpSetup": "启动TOTP 设置失败", - "invalidVerificationCode": "无效的验证码", - "failedToDisableTotp": "禁用TOTP 失败", - "failedToGenerateBackupCodes": "生成备份码失败" + "failedToStartOidcLogin": "Failed to start OIDC login", + "failedToGetUserInfoAfterOidc": "Failed to get user info after OIDC login", + "loginWithExternalProvider": "Login with external provider", + "loginWithExternal": "Login with External Provider", + "sendResetCode": "Send Reset Code", + "verifyCode": "Verify Code", + "resetPassword": "Reset Password", + "login": "Login", + "signUp": "Sign Up", + "failedToUpdateOidcConfig": "Failed to update OIDC configuration", + "failedToMakeUserAdmin": "Failed to make user admin", + "failedToStartTotpSetup": "Failed to start TOTP setup", + "invalidVerificationCode": "Invalid verification code", + "failedToDisableTotp": "Failed to disable TOTP", + "failedToGenerateBackupCodes": "Failed to generate backup codes" }, "mobile": { - "selectHostToStart": "选择一个主机以开始您的终端会话", - "limitedSupportMessage": "网站移动支持仍在进行中。使用移动应用程序以获得更好的体验。", - "mobileAppInProgress": "移动应用正在进行中", - "mobileAppInProgressDesc": "我们正在开发一个专用的移动应用程序,在移动设备上提供更好的体验。", - "viewMobileAppDocs": "安装手机应用程序", - "mobileAppDocumentation": "移动应用文档" + "selectHostToStart": "Select a host to start your terminal session", + "limitedSupportMessage": "Website mobile support is still in progress. Use the mobile app for a better experience.", + "mobileAppInProgress": "Mobile app is in progress", + "mobileAppInProgressDesc": "We're working on a dedicated mobile app to provide a better experience on mobile devices.", + "viewMobileAppDocs": "Install Mobile App", + "mobileAppDocumentation": "Mobile App Documentation" }, "dashboard": { - "title": "仪表板", + "title": "Dashboard", "github": "GitHub", - "support": "支持", + "support": "Support", "discord": "Discord", - "donate": "捐助", - "serverOverview": "服务器概述", - "version": "版本", - "upToDate": "最新的", - "updateAvailable": "可用更新", - "uptime": "运行时间", - "database": "数据库", - "healthy": "健康的", - "error": "错误", - "totalServers": "服务器总数", - "totalTunnels": "总隧道数", - "totalCredentials": "总凭证数", - "recentActivity": "最近活动", + "donate": "Donate", + "serverOverview": "Server Overview", + "version": "Version", + "upToDate": "Up to Date", + "updateAvailable": "Update Available", + "uptime": "Uptime", + "database": "Database", + "healthy": "Healthy", + "error": "Error", + "totalServers": "Total Servers", + "totalTunnels": "Total Tunnels", + "totalCredentials": "Total Credentials", + "recentActivity": "Recent Activity", "reset": "Reset", - "loadingRecentActivity": "正在加载最近的活动...", - "noRecentActivity": "没有最近的活动", - "quickActions": "快速操作", - "addHost": "添加主机", - "addCredential": "添加凭据", - "adminSettings": "管理员设置", - "userProfile": "用户资料", - "serverStats": "服务器统计", - "loadingServerStats": "正在加载服务器统计...", - "noServerData": "没有可用的服务器数据", + "loadingRecentActivity": "Loading recent activity...", + "noRecentActivity": "No recent activity", + "quickActions": "Quick Actions", + "addHost": "Add Host", + "addCredential": "Add Credential", + "adminSettings": "Admin Settings", + "userProfile": "User Profile", + "serverStats": "Server Stats", + "loadingServerStats": "Loading server stats...", + "noServerData": "No server data available", "cpu": "CPU", "ram": "RAM", - "notAvailable": "无" + "notAvailable": "N/A" }, "rbac": { - "shareHost": "共享主机", - "shareHostTitle": "共享主机访问权限", - "shareHostDescription": "给予此主机临时或永久访问权限", - "targetUser": "目标用户", - "selectUser": "选择要分享的用户", - "duration": "期限", - "durationHours": "持续时间(小时)", - "neverExpires": "永不过期", - "permissionLevel": "权限级别", + "shareHost": "Share Host", + "shareHostTitle": "Share Host Access", + "shareHostDescription": "Grant temporary or permanent access to this host", + "targetUser": "Target User", + "selectUser": "Select a user to share with", + "duration": "Duration", + "durationHours": "Duration (hours)", + "neverExpires": "Never expires", + "permissionLevel": "Permission Level", "permissionLevels": { - "readonly": "只读", - "readonlyDesc": "只能查看,不需要命令输入", - "restricted": "受限", - "restrictedDesc": "屏蔽危险命令 (传递、 rm -rf 等)", - "monitored": "监视过的", - "monitoredDesc": "记录所有命令但不屏蔽(推荐)", - "full": "完全访问", - "fullDesc": "没有限制(不推荐)" + "readonly": "Read-Only", + "readonlyDesc": "Can view only, no command input", + "restricted": "Restricted", + "restrictedDesc": "Blocks dangerous commands (passwd, rm -rf, etc.)", + "monitored": "Monitored", + "monitoredDesc": "Records all commands but doesn't block (Recommended)", + "full": "Full Access", + "fullDesc": "No restrictions (Not recommended)" }, - "blockedCommands": "被屏蔽的命令", - "blockedCommandsPlaceholder": "输入要屏蔽的命令,例如passwd, rm, dd", - "maxSessionDuration": "最大会话持续时间(分钟)", - "createTempUser": "创建临时用户", - "createTempUserDesc": "在服务器上创建受限用户而不是分享您的凭据。需要保证访问权限。最安全的选项。", - "expiresAt": "到期于", + "blockedCommands": "Blocked Commands", + "blockedCommandsPlaceholder": "Enter commands to block, e.g., passwd, rm, dd", + "maxSessionDuration": "Max Session Duration (minutes)", + "createTempUser": "Create Temporary User", + "createTempUserDesc": "Creates a restricted user on the server instead of sharing your credentials. Requires sudo access. Most secure option.", + "expiresAt": "Expires At", "expiresIn": "Expires in {{hours}} hours", - "expired": "已过期", - "grantedBy": "授予者", - "accessLevel": "访问级别", - "lastAccessed": "最后访问", - "accessCount": "访问次数", - "revokeAccess": "撤销访问", + "expired": "Expired", + "grantedBy": "Granted By", + "accessLevel": "Access Level", + "lastAccessed": "Last Accessed", + "accessCount": "Access Count", + "revokeAccess": "Revoke Access", "confirmRevokeAccess": "Are you sure you want to revoke access for {{username}}?", "hostSharedSuccessfully": "Host shared successfully with {{username}}", - "hostAccessUpdated": "主机访问权限已更新", - "failedToShareHost": "共享主机失败", - "accessRevokedSuccessfully": "成功撤销访问权限", - "failedToRevokeAccess": "吊销访问失败", - "shared": "共享的", - "sharedHosts": "共享主机", - "sharedWithMe": "与我共享", - "noSharedHosts": "没有与您共享的主机", - "owner": "所有者", - "viewAccessList": "查看访问列表", - "accessList": "访问列表", - "noAccessGranted": "此主机没有访问权限", - "noAccessGrantedMessage": "尚未允许用户访问此主机", - "manageAccessFor": "管理访问", + "hostAccessUpdated": "Host access updated", + "failedToShareHost": "Failed to share host", + "accessRevokedSuccessfully": "Access revoked successfully", + "failedToRevokeAccess": "Failed to revoke access", + "shared": "Shared", + "sharedHosts": "Shared Hosts", + "sharedWithMe": "Shared With Me", + "noSharedHosts": "No hosts shared with you", + "owner": "Owner", + "viewAccessList": "View Access List", + "accessList": "Access List", + "noAccessGranted": "No access has been granted for this host", + "noAccessGrantedMessage": "No users have been granted access to this host yet", + "manageAccessFor": "Manage access for", "totalAccessRecords": "{{count}} access record(s)", - "neverAccessed": "从不使用", + "neverAccessed": "Never", "timesAccessed": "{{count}} time(s)", "daysRemaining": "{{days}} day(s)", "hoursRemaining": "{{hours}} hour(s)", - "failedToFetchAccessList": "获取访问列表失败", - "currentAccess": "当前访问", - "securityWarning": "安全警告", - "securityWarningMessage": "共享凭据允许用户完全访问服务器上的任何操作,包括更改密码和删除文件。仅与受信任的用户分享。", - "tempUserRecommended": "我们建议启用\"创建临时用户\"以提高安全。", - "roleManagement": "角色管理", - "manageRoles": "管理角色", + "failedToFetchAccessList": "Failed to fetch access list", + "currentAccess": "Current Access", + "securityWarning": "Security Warning", + "securityWarningMessage": "Sharing credentials gives the user full access to perform any operations on the server, including changing passwords and deleting files. Only share with trusted users.", + "tempUserRecommended": "We recommend enabling 'Create Temporary User' for better security.", + "roleManagement": "Role Management", + "manageRoles": "Manage Roles", "manageRolesFor": "Manage roles for {{username}}", - "assignRole": "分配角色", - "removeRole": "删除角色", - "userRoles": "用户角色", - "permissions": "权限", - "systemRole": "系统角色", - "customRole": "自定义角色", + "assignRole": "Assign Role", + "removeRole": "Remove Role", + "userRoles": "User Roles", + "permissions": "Permissions", + "systemRole": "System Role", + "customRole": "Custom Role", "roleAssignedSuccessfully": "Role assigned to {{username}} successfully", - "failedToAssignRole": "分配角色失败", + "failedToAssignRole": "Failed to assign role", "roleRemovedSuccessfully": "Role removed from {{username}} successfully", - "failedToRemoveRole": "删除角色失败", - "cannotRemoveSystemRole": "无法删除系统角色", - "cannotShareWithSelf": "无法与自己共享主机", - "noCustomRolesToAssign": "没有可用的自定义角色。系统角色是自动分配的。", - "credentialSharingWarning": "凭据认证不支持共享", - "credentialRequired": "共享主机时需要证书", - "credentialRequiredDescription": "此主机不使用凭据认证。为了共享主机,因为每个用户加密,主机必须使用凭据身份验证。", - "auditLogs": "审核日志", - "viewAuditLogs": "查看审核日志", - "action": "行 动", - "resourceType": "资源类型", - "resourceName": "资源名称", - "timestamp": "时间戳", - "ipAddress": "IP 地址", - "userAgent": "用户代理", - "success": "成功", - "failed": "失败", - "details": "详细信息", - "noAuditLogs": "没有可用的审计日志", - "sessionRecordings": "会话录音", - "viewRecording": "查看录音", - "downloadRecording": "下载记录", - "dangerousCommand": "检测到危险命令", - "commandBlocked": "命令被阻止", - "terminateSession": "终止会话", - "sessionTerminated": "会话被主机所有者终止", - "sharedAccessExpired": "您对此主机的共享访问已过期", + "failedToRemoveRole": "Failed to remove role", + "cannotRemoveSystemRole": "Cannot remove system role", + "cannotShareWithSelf": "Cannot share host with yourself", + "noCustomRolesToAssign": "No custom roles available. System roles are auto-assigned.", + "credentialSharingWarning": "Credential Authentication Not Supported for Sharing", + "credentialRequired": "Credential is required when sharing a host", + "credentialRequiredDescription": "This host does not use credential-based authentication. In order to share hosts, due to per-user-encryption, the host must use credential based authentication.", + "auditLogs": "Audit Logs", + "viewAuditLogs": "View Audit Logs", + "action": "Action", + "resourceType": "Resource Type", + "resourceName": "Resource Name", + "timestamp": "Timestamp", + "ipAddress": "IP Address", + "userAgent": "User Agent", + "success": "Success", + "failed": "Failed", + "details": "Details", + "noAuditLogs": "No audit logs available", + "sessionRecordings": "Session Recordings", + "viewRecording": "View Recording", + "downloadRecording": "Download Recording", + "dangerousCommand": "Dangerous Command Detected", + "commandBlocked": "Command Blocked", + "terminateSession": "Terminate Session", + "sessionTerminated": "Session terminated by host owner", + "sharedAccessExpired": "Your shared access to this host has expired", "sharedAccessExpiresIn": "Shared access expires in {{hours}} hours", "roles": { - "label": "角色", - "admin": "管理员", - "user": "用户" + "label": "Roles", + "admin": "Administrator", + "user": "User" }, - "createRole": "创建角色", - "editRole": "编辑角色", - "roleName": "角色名称", - "displayName": "显示名称", - "description": "描述", - "assignRoles": "分配角色", - "userRoleAssignment": "用户角色分配", - "selectUserPlaceholder": "选择一个用户", - "searchUsers": "搜索用户...", - "noUserFound": "未找到用户", - "currentRoles": "当前角色", - "noRolesAssigned": "未分配角色", - "assignNewRole": "分配新角色", - "selectRolePlaceholder": "选择角色", - "searchRoles": "搜索角色...", - "noRoleFound": "未找到角色", - "assign": "分配", - "roleCreatedSuccessfully": "角色创建成功", - "roleUpdatedSuccessfully": "角色更新成功", - "roleDeletedSuccessfully": "角色删除成功", - "failedToLoadRoles": "加载角色失败", - "failedToSaveRole": "保存角色失败", - "failedToDeleteRole": "删除角色失败", - "roleDisplayNameRequired": "角色显示名称是必需的", - "roleNameRequired": "角色名称是必需的", - "roleNameHint": "仅使用小写字母、数字、下划线和连线", - "displayNamePlaceholder": "开发者", - "descriptionPlaceholder": "软件开发者和工程师", - "confirmDeleteRole": "删除角色", + "createRole": "Create Role", + "editRole": "Edit Role", + "roleName": "Role Name", + "displayName": "Display Name", + "description": "Description", + "assignRoles": "Assign Roles", + "userRoleAssignment": "User-Role Assignment", + "selectUserPlaceholder": "Select a user", + "searchUsers": "Search users...", + "noUserFound": "No user found", + "currentRoles": "Current Roles", + "noRolesAssigned": "No roles assigned", + "assignNewRole": "Assign New Role", + "selectRolePlaceholder": "Select a role", + "searchRoles": "Search roles...", + "noRoleFound": "No role found", + "assign": "Assign", + "roleCreatedSuccessfully": "Role created successfully", + "roleUpdatedSuccessfully": "Role updated successfully", + "roleDeletedSuccessfully": "Role deleted successfully", + "failedToLoadRoles": "Failed to load roles", + "failedToSaveRole": "Failed to save role", + "failedToDeleteRole": "Failed to delete role", + "roleDisplayNameRequired": "Role display name is required", + "roleNameRequired": "Role name is required", + "roleNameHint": "Use lowercase letters, numbers, underscores, and hyphens only", + "displayNamePlaceholder": "Developer", + "descriptionPlaceholder": "Software developers and engineers", + "confirmDeleteRole": "Delete Role", "confirmDeleteRoleDescription": "Are you sure you want to delete the role '{{name}}'? This action cannot be undone.", - "confirmRemoveRole": "删除角色", - "confirmRemoveRoleDescription": "您确定要从用户中删除此角色吗?", - "editRoleDescription": "更新角色信息", - "createRoleDescription": "为分组用户创建一个新的自定义角色", - "assignRolesDescription": "管理用户角色分配", - "noRoles": "未找到角色", - "selectRole": "选择角色", - "type": "类型", - "user": "用户", - "role": "作用", - "saveHostFirst": "首先保存主机", - "saveHostFirstDescription": "请在配置共享设置之前保存主机。", - "shareWithUser": "与用户分享", - "shareWithRole": "与角色分享", - "share": "分享", + "confirmRemoveRole": "Remove Role", + "confirmRemoveRoleDescription": "Are you sure you want to remove this role from the user?", + "editRoleDescription": "Update role information", + "createRoleDescription": "Create a new custom role for grouping users", + "assignRolesDescription": "Manage role assignments for users", + "noRoles": "No roles found", + "selectRole": "Select Role", + "type": "Type", + "user": "User", + "role": "Role", + "saveHostFirst": "Save Host First", + "saveHostFirstDescription": "Please save the host before configuring sharing settings.", + "shareWithUser": "Share with User", + "shareWithRole": "Share with Role", + "share": "Share", "target": "Target", - "expires": "过期时间", - "never": "从不使用", - "noAccessRecords": "未找到访问记录", - "sharedSuccessfully": "共享成功", - "failedToShare": "分享失败", - "confirmRevokeAccessDescription": "您确定要撤销此访问权限吗?", - "hours": "小时", - "sharing": "分享", - "selectUserAndRole": "请同时选择一个用户和角色", - "view": "仅查看", - "viewDesc": "由于使用 Termixed 加密系统,其他权限级别将在稍后的某个日期产生。" + "expires": "Expires", + "never": "Never", + "noAccessRecords": "No access records found", + "sharedSuccessfully": "Shared successfully", + "failedToShare": "Failed to share", + "confirmRevokeAccessDescription": "Are you sure you want to revoke this access?", + "hours": "hours", + "sharing": "Sharing", + "selectUserAndRole": "Please select both a user and a role", + "view": "View Only", + "viewDesc": "Due to the Termix encryption system, other permission levels will come at a later date" }, "commandPalette": { - "searchPlaceholder": "搜索主机或快速动作...", - "recentActivity": "最近活动", + "searchPlaceholder": "Search for hosts or quick actions...", + "recentActivity": "Recent Activity", "navigation": "Navigation", - "addHost": "添加主机", - "addCredential": "添加凭据", - "adminSettings": "管理员设置", - "userProfile": "用户资料", - "updateLog": "更新日志", - "hosts": "主机", - "openServerDetails": "打开服务器详细信息", - "openFileManager": "打开文件管理器", - "edit": "编辑", - "links": "链接", + "addHost": "Add Host", + "addCredential": "Add Credential", + "adminSettings": "Admin Settings", + "userProfile": "User Profile", + "updateLog": "Update Log", + "hosts": "Hosts", + "openServerDetails": "Open Server Details", + "openFileManager": "Open File Manager", + "edit": "Edit", + "links": "Links", "github": "GitHub", - "support": "支持", + "support": "Support", "discord": "Discord", - "donate": "捐助", - "press": "新闻社", - "toToggle": "切换", - "close": "关闭", - "hostManager": "主机管理器", - "pressToToggle": "按左移两次打开命令调色板" + "donate": "Donate", + "press": "Press", + "toToggle": "to toggle", + "close": "Close", + "hostManager": "Host Manager", + "pressToToggle": "Press Left Shift twice to open the command palette" }, "docker": { - "notEnabled": "此主机没有启用 Docker", - "validating": "正在校验码头...", - "connectingToHost": "正在连接主机...", - "error": "错误", + "notEnabled": "Docker is not enabled for this host", + "validating": "Validating Docker...", + "connectingToHost": "Connecting to host...", + "error": "Error", "errorCode": "Error code: {{code}}", "version": "Docker {{version}}", "containerStarted": "Container {{name}} started", @@ -2320,83 +2320,83 @@ "failedToTogglePauseContainer": "Failed to toggle pause state for container {{name}}", "containerRemoved": "Container {{name}} removed", "failedToRemoveContainer": "Failed to remove container {{name}}", - "image": "图片", + "image": "Image", "idLabel": "ID", - "ports": "端口", - "noPorts": "无端口", - "created": "已创建", - "start": "开始", - "stop": "停止", - "pause": "暂停", + "ports": "Ports", + "noPorts": "No ports", + "created": "Created", + "start": "Start", + "stop": "Stop", + "pause": "Pause", "unpause": "Unpause", - "restart": "重新启动", - "remove": "删除", - "removeContainer": "删除容器", + "restart": "Restart", + "remove": "Remove", + "removeContainer": "Remove Container", "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", - "runningContainerWarning": "警告:此容器正在运行。先删除它将停止容器。", - "removing": "正在移除...", - "loadingContainers": "正在加载容器...", - "noContainersFound": "未找到容器", - "noContainersFoundHint": "此主机上没有停靠容器", - "searchPlaceholder": "搜索容器...", - "filterByStatusPlaceholder": "按状态过滤", + "runningContainerWarning": "Warning: This container is currently running. Removing it will stop the container first.", + "removing": "Removing...", + "loadingContainers": "Loading containers...", + "noContainersFound": "No containers found", + "noContainersFoundHint": "No Docker containers are available on this host", + "searchPlaceholder": "Search containers...", + "filterByStatusPlaceholder": "Filter by status", "allContainersCount": "All ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "没有符合筛选条件的容器", - "noContainersMatchFiltersHint": "尝试调整您的搜索条件或过滤条件", - "containerMustBeRunningToViewStats": "容器必须运行才能查看统计", - "failedToFetchStats": "获取容器统计失败", - "containerNotRunning": "容器未运行", - "startContainerToViewStats": "启动容器以查看统计", - "loadingStats": "正在加载统计...", - "errorLoadingStats": "加载统计时出错", - "noStatsAvailable": "无可用统计", - "cpuUsage": "CPU 使用", - "current": "当前的", - "memoryUsage": "内存使用", - "usedLimit": "使用/限制", - "percentage": "百分比", - "networkIo": "网络 I/O", + "noContainersMatchFilters": "No containers match your filters", + "noContainersMatchFiltersHint": "Try adjusting your search or filter criteria", + "containerMustBeRunningToViewStats": "Container must be running to view statistics", + "failedToFetchStats": "Failed to fetch container statistics", + "containerNotRunning": "Container not running", + "startContainerToViewStats": "Start the container to view statistics", + "loadingStats": "Loading statistics...", + "errorLoadingStats": "Error loading statistics", + "noStatsAvailable": "No statistics available", + "cpuUsage": "CPU Usage", + "current": "Current", + "memoryUsage": "Memory Usage", + "usedLimit": "Used / Limit", + "percentage": "Percentage", + "networkIo": "Network I/O", "input": "Input", - "output": "产出", - "blockIo": "块 I/O", - "read": "已读", - "write": "写入", + "output": "Output", + "blockIo": "Block I/O", + "read": "Read", + "write": "Write", "pids": "PIDs", - "containerInformation": "容器信息", - "name": "名称", + "containerInformation": "Container Information", + "name": "Name", "id": "ID", - "state": "状态", - "disconnectedFromContainer": "从容器断开连接", - "containerMustBeRunning": "容器必须运行才能访问控制台", - "authenticationRequired": "需要身份验证", - "verificationCodePrompt": "输入验证码", - "totpVerificationFailed": "TOTP 验证失败。请重试。", + "state": "State", + "disconnectedFromContainer": "Disconnected from container", + "containerMustBeRunning": "Container must be running to access console", + "authenticationRequired": "Authentication required", + "verificationCodePrompt": "Enter verification code", + "totpVerificationFailed": "TOTP verification failed. Please try again.", "connectedTo": "Connected to {{containerName}}", - "disconnected": "断开连接", - "consoleError": "控制台错误", + "disconnected": "Disconnected", + "consoleError": "Console error", "errorMessage": "Error: {{message}}", - "failedToConnect": "连接到容器失败", - "console": "控制台", - "selectShell": "选择 shell", - "bash": "巴什文", + "failedToConnect": "Failed to connect to container", + "console": "Console", + "selectShell": "Select shell", + "bash": "Bash", "sh": "sh", - "ash": "灰度", - "connecting": "正在连接...", - "connect": "连接", - "disconnect": "断开连接", - "notConnected": "未连接", - "clickToConnect": "点击连接开始一个 shell 会话", + "ash": "ash", + "connecting": "Connecting...", + "connect": "Connect", + "disconnect": "Disconnect", + "notConnected": "Not connected", + "clickToConnect": "Click connect to start a shell session", "connectingTo": "Connecting to {{containerName}}...", - "containerNotFound": "找不到容器", - "backToList": "返回列表", - "logs": "日志", - "stats": "统计信息", - "consoleTab": "控制台", - "startContainerToAccess": "启动容器以访问控制台" + "containerNotFound": "Container not found", + "backToList": "Back to List", + "logs": "Logs", + "stats": "Stats", + "consoleTab": "Console", + "startContainerToAccess": "Start the container to access the console" }, "theme": { - "switchToLight": "切换到灯光", - "switchToDark": "切换到暗色" + "switchToLight": "Switch to Light", + "switchToDark": "Switch to Dark" } }