From f52824a62686bae9a8316e77571ac319d850bbad Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:56:44 -0600 Subject: [PATCH] New translations en.json (Chinese Traditional) --- src/locales/translated/zh.json | 4532 ++++++++++++++++---------------- 1 file changed, 2266 insertions(+), 2266 deletions(-) diff --git a/src/locales/translated/zh.json b/src/locales/translated/zh.json index 6fb6e49e..e319cfd7 100644 --- a/src/locales/translated/zh.json +++ b/src/locales/translated/zh.json @@ -1,882 +1,882 @@ { "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": "删除凭证失败", - "confirmDeleteCredential": "您确定要删除凭证“{{name}}”吗?", - "credentialCreatedSuccessfully": "凭证创建成功", - "credentialUpdatedSuccessfully": "凭证已成功更新", - "failedToSaveCredential": "保存凭证失败", - "failedToFetchCredentialDetails": "获取凭证详细信息失败", - "failedToFetchHostsUsing": "使用此凭证获取主机失败", - "loadingCredentials": "正在加载凭证...", - "retry": "重试", - "noCredentials": "没有凭证", - "noCredentialsMessage": "您尚未添加任何凭证。点击“添加凭证”开始操作。", - "sshCredentials": "SSH凭证", - "credentialsCount": "{{count}} 凭证", - "refresh": "刷新", - "passwordRequired": "需要密码", - "sshKeyRequired": "需要 SSH 密钥", - "credentialAddedSuccessfully": "凭证“{{name}}”已成功添加", - "general": "通用", - "description": "描述", - "folder": "文件夹", - "tags": "标签", - "addTagsSpaceToAdd": "添加标签(按空格键添加)", - "password": "密码", - "key": "密钥", - "sshPrivateKey": "SSH 私钥", - "upload": "上传", - "updateKey": "更新密钥", - "keyPassword": "密钥密码", - "keyType": "密钥类型", + "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": "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": "Refresh", + "passwordRequired": "Password is required", + "sshKeyRequired": "SSH key is required", + "credentialAddedSuccessfully": "Credential \"{{name}}\" added successfully", + "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": "使用情况统计", - "copiedToClipboard": "{{field}} 已复制到剪贴板", - "failedToCopy": "复制到剪贴板失败", - "sshKey": "SSH密钥", - "createCredentialDescription": "创建新的 SSH 凭证以实现安全访问", - "editCredentialDescription": "更新凭证信息", - "listView": "列表", - "folderView": "文件夹", - "unknownCredential": "未知", - "confirmRemoveFromFolder": "您确定要从文件夹“{{folder}}”中删除“{{name}}”吗?凭证将被移动到“未分类”文件夹。", - "removedFromFolder": "已成功从文件夹中移除凭证“{{name}}”。", - "failedToRemoveFromFolder": "无法从文件夹中删除凭证", - "folderRenamed": "文件夹“{{oldName}}”已成功重命名为“{{newName}}”。", - "failedToRenameFolder": "文件夹重命名失败", - "movedToFolder": "凭证“{{name}}”已成功移至“{{folder}}”。", - "failedToMoveToFolder": "无法将凭证移动到文件夹", - "sshPublicKey": "SSH 公钥", - "publicKeyNote": "公钥是可选的,但建议用于密钥验证。", - "publicKeyUploaded": "公钥已上传", - "uploadPublicKey": "上传公钥", - "uploadPrivateKeyFile": "上传私钥文件", - "uploadPublicKeyFile": "上传公钥文件", - "privateKeyRequiredForGeneration": "生成公钥需要私钥。", - "failedToGeneratePublicKey": "生成公钥失败", - "generatePublicKey": "从私钥生成", - "publicKeyGeneratedSuccessfully": "公钥生成成功", - "detectedKeyType": "检测到密钥类型", - "detectingKeyType": "正在检测中……", - "optional": "可选的", - "generateKeyPairNew": "生成新的密钥对", - "generateEd25519": "生成 Ed25519", - "generateECDSA": "生成 ECDSA", - "generateRSA": "生成 RSA", + "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": "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": "Failed to remove credential from folder", + "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", + "failedToRenameFolder": "Failed to rename folder", + "movedToFolder": "Credential \"{{name}}\" moved to \"{{folder}}\" successfully", + "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)", "keyTypeDsa": "DSA (SSH)", "keyTypeRsaSha256": "RSA-SHA2-256", "keyTypeRsaSha512": "RSA-SHA2-512", - "keyPairGeneratedSuccessfully": "{{keyType}}密钥对已成功生成", - "failedToGenerateKeyPair": "密钥对生成失败", - "generateKeyPairNote": "直接生成新的 SSH 密钥对。此操作将替换表单中的所有现有密钥。", - "invalidKey": "无效密钥", - "detectionError": "检测错误", - "removing": "移除:", - "clickToEditCredential": "点击编辑凭证", - "dragToMoveBetweenFolders": "拖动即可在文件夹之间移动。", - "keyBasedOnlyForDeployment": "仅可部署基于 SSH 密钥的凭证。", - "publicKeyRequiredForDeployment": "部署需要公钥", - "selectTargetHost": "请选择目标主机", - "keyDeployedSuccessfully": "SSH密钥已成功部署", - "deploymentFailed": "部署失败", - "failedToDeployKey": "部署 SSH 密钥失败", - "clickToRenameFolder": "点击重命名文件夹", - "renameFolder": "重命名文件夹", + "keyPairGeneratedSuccessfully": "{{keyType}} key pair generated successfully", + "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": { - "error": "错误:{{error}}", - "dragging": "拖拽 {{fileName}}", - "preparing": "准备 {{fileName}}", - "readySingle": "准备下载 {{fileName}}", - "readyMultiple": "准备下载 {{count}} 个文件", - "batchDrag": "将 {{count}} 个文件拖至桌面", - "dragToDesktop": "拖到桌面", - "canDragAnywhere": "您可以将文件拖放到桌面上的任何位置。" + "error": "Error: {{error}}", + "dragging": "Dragging {{fileName}}", + "preparing": "Preparing {{fileName}}", + "readySingle": "Ready to download {{fileName}}", + "readyMultiple": "Ready to download {{count}} files", + "batchDrag": "Drag {{count}} files to desktop", + "dragToDesktop": "Drag to desktop", + "canDragAnywhere": "You can drag files anywhere on your desktop" }, "sshTools": { - "title": "SSH 工具", - "closeTools": "关闭 SSH 工具", - "keyRecording": "按键录制", - "startKeyRecording": "开始按键录制", - "stopKeyRecording": "停止按键录制", - "selectTerminals": "选择终端:", - "typeCommands": "输入命令(支持所有密钥类型):", - "commandsWillBeSent": "命令将发送到 {{count}} 个已选定的终端。", - "settings": "设置", - "enableRightClickCopyPaste": "启用右键单击复制/粘贴", - "shareIdeas": "对 SSH 工具的未来发展方向有什么想法吗?欢迎分享!", + "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": "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 restart nginx", - "nameRequired": "名称是必填项", - "contentRequired": "命令内容是必填项", - "createDescription": "创建一个新的代码片段以便快速执行", - "editDescription": "编辑此代码片段", - "deleteConfirmTitle": "删除代码片段", - "deleteConfirmDescription": "您确定要删除“{{name}}”吗?", - "createSuccess": "代码片段创建成功", - "updateSuccess": "代码片段已成功更新", - "deleteSuccess": "代码片段已成功删除", - "createFailed": "创建代码片段失败", - "updateFailed": "更新代码片段失败", - "deleteFailed": "删除代码片段失败", - "failedToFetch": "获取代码片段失败", - "executeSuccess": "执行:{{name}}", - "copySuccess": "已将“{{name}}”复制到剪贴板", - "runTooltip": "在终端中执行此代码片段", - "copyTooltip": "复制代码片段到剪贴板", - "editTooltip": "编辑此代码片段", - "deleteTooltip": "删除此片段", - "newFolder": "新建文件夹", - "reorderSameFolder": "只能对同一文件夹内的代码片段进行重新排序", - "reorderSuccess": "代码片段已成功重新排序", - "reorderFailed": "重新排序代码片段失败", - "deleteFolderConfirm": "删除文件夹“{{name}}”?所有代码片段将被移至“未分类”。", - "deleteFolderSuccess": "文件夹已成功删除", - "deleteFolderFailed": "删除文件夹失败", - "updateFolderSuccess": "文件夹已成功更新", - "createFolderSuccess": "文件夹创建成功", - "updateFolderFailed": "更新文件夹失败", - "createFolderFailed": "创建文件夹失败", - "selectTerminals": "选择终端(可选)", - "executeOnSelected": "在 {{count}} 个已选定的终端上执行", - "executeOnCurrent": "在当前终端上执行(点击选择多个)", - "folder": "文件夹", - "selectFolder": "选择一个文件夹,或者留空。", - "noFolder": "无文件夹(未分类)", - "folderName": "文件夹名称", - "folderNameRequired": "文件夹名称为必填项", - "folderColor": "文件夹颜色", - "folderIcon": "文件夹图标", - "preview": "预览", - "updateFolder": "更新文件夹", - "createFolder": "创建文件夹", - "editFolder": "编辑文件夹", - "editFolderDescription": "自定义代码片段文件夹", - "createFolderDescription": "将你的代码片段归类到文件夹中" + "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": "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": "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": "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": "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": "未找到命令", - "noResultsHint": "没有与“{{query}}”匹配的命令", - "deleteSuccess": "命令已从历史记录中删除", - "deleteFailed": "删除命令失败。", - "deleteTooltip": "删除命令", - "tabHint": "若用户配置文件中已启用该功能,可在终端中使用 Tab 键从命令历史记录中自动补全命令。", - "authRequiredRefresh": "需要进行身份验证。请刷新页面。", - "dataAccessLockedReauth": "数据访问已锁定。请重新验证身份。", - "loading": "正在加载命令历史记录...", - "error": "加载历史记录时出错" + "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": "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": "2分屏", - "threeSplit": "3分屏", - "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": "请为该布局分配至少一个选项卡", - "fillAllSlots": "请在应用前补充所有 {{count}} 个分屏窗口" + "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": "配置 Termix 服务器 URL 以连接到您的后端服务", - "serverUrl": "服务器 URL", - "enterServerUrl": "请输入服务器URL", - "testConnectionFirst": "请先测试连接。", - "connectionSuccess": "连接成功!", - "connectionFailed": "连接失败", - "connectionError": "连接错误", - "connected": "已连接", - "disconnected": "断开连接", - "configSaved": "配置已成功保存", - "saveFailed": "配置保存失败", - "saveError": "保存配置时出错", - "saving": "保存中...", - "saveConfig": "保存配置", - "helpText": "输入您的 Termix 服务器运行所对应的 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": "应用已更新至最新版本", - "currentVersion": "您正在运行版本 {{version}}", - "updateAvailable": "更新可用", - "newVersionAvailable": "新版本已发布!您当前运行的是 {{current}} 版本,但 {{latest}} 版本可用。", - "releasedOn": "发布日期:{{date}}", - "downloadUpdate": "下载更新", - "dismiss": "关闭", - "checking": "正在检查更新...", - "checkUpdates": "检查更新", - "checkingUpdates": "正在检查更新...", - "refresh": "刷新", - "updateRequired": "需要更新", - "updateDismissed": "更新通知已关闭", - "noUpdatesFound": "未找到更新" + "error": "Version Check Error", + "checkFailed": "Failed to check for updates", + "upToDate": "App is Up to Date", + "currentVersion": "You are running version {{version}}", + "updateAvailable": "Update Available", + "newVersionAvailable": "A new version is available! You are running {{current}}, but {{latest}} is available.", + "releasedOn": "Released on {{date}}", + "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": "关闭", - "minimize": "最小化", - "online": "在线", - "offline": "离线", - "continue": "继续", - "maintenance": "维护", - "degraded": "降级", + "close": "Close", + "minimize": "Minimize", + "online": "Online", + "offline": "Offline", + "continue": "Continue", + "maintenance": "Maintenance", + "degraded": "Degraded", "discord": "Discord", - "error": "错误", - "warning": "警告", - "info": "信息", - "success": "成功", - "loading": "加载中...", - "required": "必需的", - "optional": "选修的", - "connect": "连接", - "connecting": "正在连接...", - "creating": "正在创建……", - "clear": "清除", - "toggleSidebar": "切换侧边栏", - "sidebar": "侧边栏", - "home": "首页", - "expired": "已到期", - "expiresToday": "今天到期", - "expiresTomorrow": "{{days}} 天后过期", - "updateAvailable": "更新可用", - "sshPath": "SSH路径", - "localPath": "本地路径", - "appName": "Termixe", - "resetSidebarWidth": "重置侧边栏宽度", - "dragToResizeSidebar": "拖动即可调整侧边栏大小", - "noAuthCredentials": "此 SSH 主机无可用的身份验证凭证", - "noReleases": "无发布", - "updatesAndReleases": "更新与发布", - "newVersionAvailable": "新版本({{version}})可用。", - "failedToFetchUpdateInfo": "获取更新信息失败", - "preRelease": "预发布", - "loginFailed": "登录失败", - "noReleasesFound": "未找到任何版本。", - "yourBackupCodes": "您的备用验证码", - "sendResetCode": "发送重置验证码", - "verifyCode": "验证码", - "resetPassword": "重置密码", - "resetCode": "重置验证码", - "newPassword": "新密码", - "folder": "文件夹", - "file": "文件", - "renamedSuccessfully": "重命名成功", - "deletedSuccessfully": "已成功删除", - "noTunnelConnections": "未配置隧道连接", - "sshTools": "SSH 工具", - "english": "英语", - "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": "请输入来自 Docker 容器日志中用户的 6 位验证码:", - "enterNewPassword": "请输入用户的新密码:", - "passwordsDoNotMatch": "密码不匹配", - "passwordMinLength": "密码长度必须至少为 6 个字符。", - "passwordResetSuccess": "密码重置成功!您现在可以使用新密码登录。", - "failedToInitiatePasswordReset": "密码重置失败", - "failedToVerifyResetCode": "重置验证码验证失败", - "failedToCompletePasswordReset": "密码重置失败", - "documentation": "文档", - "retry": "重试", - "checking": "检查...", - "checkingDatabase": "正在检查数据库连接...", - "actions": "激活", - "remove": "移除", - "revoke": "撤销", - "create": "创建" + "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": "Home", + "expired": "Expired", + "expiresToday": "Expires today", + "expiresTomorrow": "Expires in {{days}} days", + "updateAvailable": "Update Available", + "sshPath": "SSH Path", + "localPath": "Local Path", + "appName": "Termix", + "resetSidebarWidth": "Reset sidebar width", + "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": "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": "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" }, "nav": { - "home": "首页", - "hosts": "主机", - "credentials": "凭证", - "terminal": "终端", - "docker": "停靠栏", - "tunnels": "隧道", - "fileManager": "文件管理器", - "serverStats": "服务器统计信息", - "admin": "admin", - "userProfile": "用户配置", - "tools": "工具", - "snippets": "片段", - "newTab": "新选项卡", - "splitScreen": "分屏", - "closeTab": "关闭选项卡", - "sshManager": "SSH 管理器", - "hostManager": "主机管理器", - "cannotSplitTab": "无法拆分此选项卡", - "tabNavigation": "选项卡导航", + "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": "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": "移除管理员", - "deleteUser": "删除用户 {{username}}?此操作无法撤销。", - "allowRegistration": "允许注册", - "oidcSettings": "OIDC 设置", - "clientId": "客户端ID", - "clientSecret": "客户端密钥", - "issuerUrl": "发行者网址", - "authorizationUrl": "授权 URL", - "tokenUrl": "令牌网址", - "updateSettings": "更新设置", - "confirmDelete": "您确定要删除此用户吗?", - "confirmMakeAdmin": "你确定要将 {{username}} 设为管理员吗?", - "confirmRemoveAdmin": "你确定要移除 {{username}} 的管理员身份吗?", - "externalAuthentication": "外部认证(OIDC)", - "configureExternalProvider": "配置用于 OIDC/OAuth2 身份验证的外部身份提供程序。", - "userIdentifierPath": "用户标识符路径", - "displayNamePath": "显示名称路径", - "scopes": "权限范围", - "saving": "保存中...", - "saveConfiguration": "保存配置", - "reset": "重置", - "success": "成功", - "loading": "加载中...", - "refresh": "刷新", - "loadingUsers": "正在加载用户...", - "username": "用户名", - "type": "类型", - "actions": "操作", - "external": "外部", - "local": "本地的", - "adminManagement": "管理员管理", - "makeUserAdmin": "将用户设为管理员", - "adding": "添加中……", - "currentAdmins": "当前管理员", - "adminBadge": "管理员", - "removeAdminButton": "移除管理员", - "general": "通用", - "userRegistration": "用户注册", - "allowNewAccountRegistration": "允许新账户注册", - "allowPasswordLogin": "允许用户名/密码登录", - "missingRequiredFields": "缺少必填字段:{{fields}}", - "oidcConfigurationUpdated": "OIDC配置更新成功!", - "failedToFetchOidcConfig": "获取 OIDC 配置失败", - "failedToFetchRegistrationStatus": "获取注册状态失败", - "failedToFetchPasswordLoginStatus": "获取密码登录状态失败", - "failedToFetchUsers": "获取用户失败", - "oidcConfigurationDisabled": "OIDC配置已成功禁用!", - "failedToUpdateOidcConfig": "更新 OIDC 配置失败", - "failedToDisableOidcConfig": "禁用 OIDC 配置失败", - "enterUsernameToMakeAdmin": "输入用户名以创建管理员", - "userIsNowAdmin": "用户 {{username}} 现在是管理员", - "failedToMakeUserAdmin": "创建管理员用户失败", - "removeAdminStatus": "是否移除 {{username}} 的管理员身份?", - "adminStatusRemoved": "已移除 {{username}} 的管理员身份", - "failedToRemoveAdminStatus": "移除管理员状态失败", - "userDeletedSuccessfully": "用户 {{username}} 已成功删除", - "failedToDeleteUser": "删除用户失败", - "overrideUserInfoUrl": "覆盖用户信息 URL(非必填)", - "failedToFetchSessions": "获取sessions失败", - "sessionRevokedSuccessfully": "sessions已成功撤销", - "failedToRevokeSession": "撤销会话失败", - "confirmRevokeSession": "您确定要撤销本次会话吗?", - "confirmRevokeAllSessions": "您确定要撤销该用户的所有会话吗?", - "failedToRevokeSessions": "撤销会话失败", - "sessionsRevokedSuccessfully": "会话已成功撤销", - "linkToPasswordAccount": "关联到密码帐户", - "linkOIDCDialogTitle": "将 OIDC 帐户关联到密码帐户", - "linkOIDCDialogDescription": "将 {{username}}(OIDC 用户)关联至现有密码账户。此操作将为该密码账户启用双重认证。", - "createUser": "创建用户", - "createUserDescription": "使用用户名和密码创建一个新的本地用户", - "enterUsername": "请输入用户名", - "enterPassword": "输入密码", - "userCreatedSuccessfully": "用户 {{username}} 创建成功", - "failedToCreateUser": "创建用户失败", - "manageUser": "管理用户", - "manageUserDescription": "管理用户设置、角色和权限", - "authType": "身份验证类型", - "adminStatus": "管理员状态", - "userId": "用户ID", - "regularUser": "普通用户", - "adminPrivileges": "管理员权限", - "administratorRole": "管理员角色", - "administratorRoleDescription": "授予完整的系统访问权与管理权限", - "passwordManagement": "密码管理", - "passwordResetWarning": "重置用户密码会删除其所有数据(SSH 主机、凭证、设置)。此操作无法撤销。", - "resetUserPassword": "重置用户密码", - "resettingPassword": "正在重置……", - "passwordResetInitiated": "已对 {{username}} 发起密码重置。已发送重置码。", - "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": "正在连接……", - "accountsLinkedSuccessfully": "OIDC 用户 {{oidcUsername}} 已关联至 {{targetUsername}}", - "failedToLinkAccounts": "账户关联失败", - "linkTargetUsernameRequired": "目标用户名是必填项", - "unlinkOIDCTitle": "取消 OIDC 身份验证", - "unlinkOIDCDescription": "是否移除 {{username}} 的 OIDC 认证?操作后该用户将仅能通过用户名 / 密码登录。", - "unlinkOIDCSuccess": "OIDC 与 {{username}} 解除关联", - "failedToUnlinkOIDC": "取消关联 OIDC 失败", - "databaseSecurity": "数据库安全", - "encryptionStatus": "加密状态", - "encryptionEnabled": "已启用加密", - "enabled": "已启用", - "disabled": "已禁用", - "keyId": "密钥 ID", - "created": "已创建", - "migrationStatus": "迁移状态", - "migrationCompleted": "迁移完成", - "migrationRequired": "需要迁移", - "deviceProtectedMasterKey": "环境保护主密钥", - "legacyKeyStorage": "传统密钥存储", - "masterKeyEncryptedWithDeviceFingerprint": "主密钥已通过环境指纹加密(KEK 保护已激活)", - "keyNotProtectedByDeviceBinding": "密钥未受环境绑定保护(建议升级)", - "valid": "有效的", - "initializeDatabaseEncryption": "初始化数据库加密", - "enableAes256EncryptionWithDeviceBinding": "启用基于环境的主密钥保护的 AES-256 加密。这可为 SSH 密钥、密码和身份验证令牌创建企业级安全保障。", - "featuresEnabled": "已启用功能:", - "aes256GcmAuthenticatedEncryption": "AES-256-GCM 认证加密", - "deviceFingerprintMasterKeyProtection": "环境指纹主密钥保护(KEK)", - "pbkdf2KeyDerivation": "使用 10 万次迭代的 PBKDF2 密钥派生", - "automaticKeyManagement": "密钥自动管理与轮换", - "initializing": "正在初始化...", - "initializeEnterpriseEncryption": "初始化企业级加密", - "migrateExistingData": "迁移现有数据", - "encryptExistingUnprotectedData": "对数据库中现有的未加密数据进行加密。此过程安全可靠,并会自动创建备份。", - "testMigrationDryRun": "验证加密兼容性", - "migrating": "正在迁移……", - "migrateData": "迁移数据", - "securityInformation": "安全信息", - "sshPrivateKeysEncryptedWithAes256": "SSH 私钥与密码均采用 AES-256-GCM 算法加密", - "userAuthTokensProtected": "用户认证令牌与双因素认证密钥均已受保护", - "masterKeysProtectedByDeviceFingerprint": "主加密密钥已通过设备指纹(KEK)保护", - "keysBoundToServerInstance": "密钥已绑定至当前服务器环境(可通过环境变量迁移)", - "pbkdf2HkdfKeyDerivation": "采用 10 万轮迭代的 PBKDF2 + HKDF 密钥派生算法", - "backwardCompatibleMigration": "迁移过程中所有数据均保持向后兼容。", - "enterpriseGradeSecurityActive": "企业级安全已激活", - "masterKeysProtectedByDeviceBinding": "你的主加密密钥已通过环境指纹技术保护。该机制会利用服务器主机名、路径及其他环境信息生成保护密钥。如需迁移服务器,请在新服务器上设置 DB_ENCRYPTION_KEY 环境变量。", - "important": "重要的", - "keepEncryptionKeysSecure": "确保数据安全:定期备份数据库文件与服务器配置。如需迁移至新服务器,请在新环境中设置 DB_ENCRYPTION_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 文件,以便迁移到新硬件。", - "exportDatabase": "导出 SQLite 数据库", - "exporting": "导出中...", - "exportCreated": "SQLite导出已创建", - "exportContainsDecryptedData": "SQLite导出文件包含解密数据 - 请妥善保管!", - "databaseExportedSuccessfully": "SQLite数据库已成功导出", - "databaseExportFailed": "SQLite数据库导出失败", - "importFromMigration": "从迁移导入", - "importDatabaseFromAnotherSystem": "从其他系统或硬件导入 SQLite 数据库", - "importDatabase": "导入 SQLite 数据库", - "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 文件(跳过重复项)", - "criticalWarning": "严重警告", - "cannotDisablePasswordLoginWithoutOIDC": "未配置 OIDC 时无法禁用密码登录!您必须先配置 OIDC 身份验证,才能禁用密码登录,否则您将失去对 Termix 的访问权限。", - "confirmDisablePasswordLogin": "您确定要禁用密码登录吗?请确保 OIDC 配置正确且运行正常后再继续操作,否则您将失去对 Termix 实例的访问权限。", - "passwordLoginDisabled": "密码登录已成功禁用", - "passwordLoginAndRegistrationDisabled": "密码登录和新帐户注册功能已成功禁用", - "requiresPasswordLogin": "需要密码登录", - "passwordLoginDisabledWarning": "密码登录已禁用。请确保 OIDC 配置正确,否则您将无法登录 Termix。", - "oidcRequiredWarning": "重要提示:密码登录已禁用。如果您重置或错误配置 OIDC,您将失去对 Termix 的所有访问权限,并且您的实例将无法正常工作。请仅在您完全确定的情况下继续操作。", - "confirmDisableOIDCWarning": "警告:您即将禁用 OIDC,同时密码登录也已被禁用。这将导致您的 Termix 实例无法正常运行,您将失去所有访问权限。您确定要继续操作吗?", - "failedToUpdatePasswordLoginStatus": "更新密码登录状态失败", - "loadingSessions": "正在加载会话...", - "noActiveSessions": "未找到活动会话。", - "device": "设备", - "user": "用户", - "lastActive": "最后活跃时间", - "expires": "过期", - "revoked": "撤销", - "revokeAllUserSessionsTitle": "撤销此用户的所有会话", - "revokeAll": "撤销所有", - "linkOidcToPasswordAccount": "将 OIDC 帐户关联到密码帐户", - "linkOidcToPasswordAccountDescription": "将 {{username}}(OIDC 用户)关联到现有密码帐户。这将为该密码帐户启用双重身份验证。", - "linkOidcWarningTitle": "警告:OIDC用户数据将被删除", - "linkOidcWarningDescription": "此操作将:", - "linkOidcActionDeleteUser": "删除 OIDC 用户帐户及其所有数据", - "linkOidcActionAddCapability": "向目标密码帐户添加 OIDC 登录功能", - "linkOidcActionDualAuth": "允许密码帐户同时使用密码和 OIDC 登录", - "passwordMinLength": "密码长度必须至少为 6 个字符", - "currentRoles": "目前角色", - "noRolesAssigned": "未分配任何角色", - "assignNewRole": "分配新角色" + "users": "Users", + "userManagement": "User Management", + "makeAdmin": "Make Admin", + "removeAdmin": "Remove Admin", + "deleteUser": "Delete user {{username}}? This cannot be undone.", + "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": "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": "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 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": "Failed to make user admin", + "removeAdminStatus": "Remove admin status from {{username}}?", + "adminStatusRemoved": "Admin status removed from {{username}}", + "failedToRemoveAdminStatus": "Failed to remove admin status", + "userDeletedSuccessfully": "User {{username}} deleted successfully", + "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": "Create User", + "createUserDescription": "Create a new local user with username and password", + "enterUsername": "Enter username", + "enterPassword": "Enter password", + "userCreatedSuccessfully": "User {{username}} created successfully", + "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": "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": "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": "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": "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": "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": "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": "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": "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": "可选的", - "hostsCount": "{{count}} 台主机", - "importJson": "导入 JSON", - "importing": "导入中...", - "importJsonTitle": "从 JSON 导入 SSH 主机", - "importJsonDesc": "上传 JSON 文件以批量导入多个 SSH 主机(最多 100 个)。", - "downloadSample": "下载示例", - "formatGuide": "格式指南", - "exportCredentialWarning": "警告:主机“{{name}}”使用凭证身份验证。导出的文件将不包含凭证数据,导入后需要手动重新配置。是否继续?", - "exportSensitiveDataWarning": "警告:主机“{{name}}”包含敏感的身份验证数据(密码/SSH密钥)。导出的文件将以明文形式包含这些数据。请妥善保管该文件,并在使用后将其删除。是否继续?", - "uncategorized": "未分类", - "confirmDelete": "您确定要删除“{{name}}”吗?", - "failedToDeleteHost": "删除主机失败", - "failedToExportHost": "导出主机失败。请确保您已登录并拥有主机数据访问权限。", - "jsonMustContainHosts": "JSON 必须包含一个名为“hosts”的数组,或者本身就是一个 hosts 数组。", - "noHostsInJson": "JSON 文件中未找到主机", - "maxHostsAllowed": "每次导入最多允许 100 台主机", - "importCompleted": "导入完成:成功 {{success}} 个,失败 {{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": "更新主机", - "hostUpdatedSuccessfully": "主机“{{name}}”已成功更新!", - "hostAddedSuccessfully": "主机“{{name}}”添加成功!", - "hostDeletedSuccessfully": "主机“{{name}}”已成功删除!", - "failedToSaveHost": "保存主机失败,请重试。", - "savingHost": "保存主机中……", - "updatingHost": "正在更新主机...", - "cloningHost": "克隆主机...", - "enableTerminal": "启用终端", - "enableTerminalDesc": "在终端选项卡中启用/禁用主机可见性", - "enableTunnel": "启用隧道", - "enableTunnelDesc": "在隧道选项卡中启用/禁用主机可见性", - "enableFileManager": "启用文件管理器", - "enableFileManagerDesc": "在文件管理器选项卡中启用/禁用主机可见性", - "enableDockerDesc": "在 Docker 选项卡中启用/禁用主机可见性", - "enableDocker": "启用 Docker", - "defaultPath": "默认路径", - "defaultPathDesc": "打开此主机的文件管理器时的默认目录", - "tunnelConnections": "隧道连接", - "connection": "连接", - "remove": "移除", - "sourcePort": "源端口", - "sourcePortDesc": "(来源指的是「常规」选项卡中的「当前连接详情」)", - "endpointPort": "端点端口", - "endpointSshConfig": "端点 SSH 配置", - "tunnelForwardDescription": "此隧道会将源机器(「常规」选项卡中的当前连接详情)上 {{sourcePort}} 端口的流量,转发至目标机器上的 {{endpointPort}} 端口。", - "maxRetries": "最大重试次数", - "maxRetriesDescription": "隧道连接的最大重试次数。", - "retryInterval": "重试间隔(秒)", - "retryIntervalDescription": "重试之间需要等待一段时间。", - "autoStartContainer": "容器启动时自动启动", - "autoStartDesc": "容器启动时自动启动此隧道", - "addConnection": "添加隧道连接", - "sshpassRequired": "密码验证需要使用 SSH 密码", - "sshpassRequiredDesc": "对于隧道中的密码认证,系统必须安装 sshpass", - "otherInstallMethods": "其他安装方法:", - "debianUbuntuEquivalent": "(Debian/Ubuntu 或适用于您操作系统的同等版本)。", - "or": "或", + "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": "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", + "confirmDelete": "Are you sure you want to delete \"{{name}}\" ?", + "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": "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": "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": "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 restart 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,1015 +885,1015 @@ "dsa": "DSA", "rsaSha2256": "RSA SHA2-256", "rsaSha2512": "RSA SHA2-512", - "uploadFile": "上传文件", - "pasteKey": "粘贴密钥", - "updateKey": "更新密钥", - "existingKey": "现有密钥(点击更改)", - "existingCredential": "现有凭证(点击更改)", - "addTagsSpaceToAdd": "添加标签(空格添加)", - "terminalBadge": "终端", - "tunnelBadge": "隧道", - "fileManagerBadge": "文件管理器", - "general": "通用", - "terminal": "终端", - "tunnel": "隧道", - "fileManager": "文件管理器", - "serverStats": "服务器统计信息", - "hostViewer": "主机查看器", - "enableServerStats": "启用服务器统计信息", - "enableServerStatsDesc": "启用/禁用此主机的服务器统计信息收集", - "displayItems": "显示项", - "displayItemsDesc": "选择要在服务器统计页面上显示的指标", - "enableCpu": "CPU 使用率", - "enableMemory": "内存使用情况", - "enableDisk": "磁盘使用情况", - "enableNetwork": "网络统计数据(即将推出)", - "enableProcesses": "进程计数(即将推出)", - "enableUptime": "正常运行时间(即将推出)", - "enableHostname": "主机名(即将推出)", - "enableOs": "操作系统(即将推出)", - "customCommands": "自定义命令(即将推出)", - "customCommandsDesc": "为该服务器定义自定义关机和重启命令", - "shutdownCommand": "关闭命令", - "rebootCommand": "重启命令", - "confirmRemoveFromFolder": "您确定要从文件夹“{{folder}}”中删除“{{name}}”吗?主机将被移动到“无文件夹”区域。", - "removedFromFolder": "已成功从文件夹中移除主机“{{name}}”。", - "failedToRemoveFromFolder": "无法从文件夹中删除主机", - "folderRenamed": "文件夹“{{oldName}}”已成功重命名为“{{newName}}”。", - "failedToRenameFolder": "重命名文件夹失败", - "editFolderAppearance": "编辑文件夹外观", - "editFolderAppearanceDesc": "自定义文件夹的颜色和图标", - "folderColor": "文件夹颜色", - "folderIcon": "文件夹图标", - "preview": "预览", - "folderAppearanceUpdated": "文件夹外观已成功更新", - "failedToUpdateFolderAppearance": "文件夹外观更新失败", - "deleteAllHostsInFolder": "删除文件夹中的所有主机", - "confirmDeleteAllHostsInFolder": "您确定要删除文件夹“{{folder}}”中的所有 {{count}} 个主机吗?此操作无法撤销。", - "allHostsInFolderDeleted": "已成功从文件夹“{{folder}}”中删除 {{count}} 个主机", - "failedToDeleteHostsInFolder": "删除文件夹中的 hosts 文件失败", - "movedToFolder": "主机“{{name}}”已成功迁移至“{{folder}}”。", - "failedToMoveToFolder": "将主机移动到文件夹失败", - "clickToRenameFolder": "点击重命名文件夹", - "renameFolder": "重命名文件夹", - "removeFromFolder": "从文件夹“{{folder}}”中删除", - "editHostTooltip": "编辑主机", - "deleteHostTooltip": "删除主机", - "exportHostTooltip": "导出主机", - "cloneHostTooltip": "克隆主机", - "clickToEditHost": "点击编辑主机", - "dragToMoveBetweenFolders": "拖动即可在文件夹之间移动。", - "exportedHostConfig": "已导出 {{name}} 的主机配置", - "openTerminal": "打开终端", - "openFileManager": "打开文件管理器", - "openTunnels": "已开启隧道", - "openServerDetails": "打开服务器详情", - "statistics": "统计数据", - "enabledWidgets": "已启用的小部件", - "openServerStats": "打开服务器统计信息", - "enabledWidgetsDesc": "选择要为此主机显示的统计信息小部件", - "monitoringConfiguration": "监控配置", - "monitoringConfigurationDesc": "配置服务器统计信息和状态的检查频率", - "statusCheckEnabled": "启用状态监控", - "statusCheckEnabledDesc": "检查服务器是否在线或离线", - "statusCheckInterval": "状态检查间隔", - "statusCheckIntervalDesc": "检查主机是否在线的频率(5秒 - 1小时)", - "metricsEnabled": "启用指标监控", - "metricsEnabledDesc": "收集 CPU、RAM、磁盘和其他系统统计信息", - "metricsInterval": "指标收集间隔", - "metricsIntervalDesc": "服务器统计信息收集频率(5秒-1小时)", - "intervalSeconds": "秒", - "intervalMinutes": "分钟", - "intervalValidation": "监测间隔必须在 5 秒到 1 小时(3600 秒)之间。", - "monitoringDisabled": "此主机的服务器监控已禁用", - "enableMonitoring": "在主机管理器中启用监控 → 统计选项卡", - "monitoringDisabledBadge": "关闭监控", - "statusMonitoring": "状态", - "metricsMonitoring": "指标", - "terminalCustomization": "终端自定义", - "appearance": "外观", - "behavior": "行为", - "advanced": "高级", - "themePreview": "主题预览", - "theme": "主题", - "selectTheme": "选择主题", - "chooseColorTheme": "为终端选择颜色主题", - "fontFamily": "字体系列", - "selectFont": "选择字体", - "selectFontDesc": "选择终端中使用的字体。", - "fontSize": "字体大小", - "fontSizeValue": "字体大小:{{value}}px", - "adjustFontSize": "调整终端字体大小", - "letterSpacing": "字母间距", - "letterSpacingValue": "字母间距:{{value}}px", - "adjustLetterSpacing": "调整字符间距", - "lineHeight": "行高", - "lineHeightValue": "行高:{{value}}", - "adjustLineHeight": "调整行间距", - "cursorStyle": "光标样式", - "selectCursorStyle": "选择光标样式", - "cursorStyleBlock": "方块形", - "cursorStyleUnderline": "下划线形", - "cursorStyleBar": "竖线形", - "chooseCursorAppearance": "选择光标外观", - "cursorBlink": "光标闪烁", - "enableCursorBlink": "启用光标闪烁动画", - "scrollbackBuffer": "回滚缓冲区", - "scrollbackBufferValue": "回滚缓冲区:{{value}} 行", - "scrollbackBufferDesc": "回滚历史记录中要保留的行数", - "bellStyle": "提示音样式", - "selectBellStyle": "选择提示音样式", - "bellStyleNone": "无", - "bellStyleSound": "声音", - "bellStyleVisual": "视觉", - "bellStyleBoth": "两者皆有", - "bellStyleDesc": "终端提示音(BEL 字符,\\x07)的处理方式。程序在完成任务、遇到错误或发送通知时会触发该提示音。「声音」选项会播放音频提示音,「视觉」选项会使屏幕短暂闪烁,「两者皆有」会同时执行两种操作,「无」则禁用提示音告警。", - "rightClickSelectsWord": "右键单击选中单词", - "rightClickSelectsWordDesc": "右键单击会选中光标下方的单词", - "fastScrollModifier": "快速滚动修饰键", - "selectModifier": "选择修饰键", + "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": "Failed to remove host from folder", + "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", + "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": "Failed to delete hosts in folder", + "movedToFolder": "Host \"{{name}}\" moved to \"{{folder}}\" successfully", + "failedToMoveToFolder": "Failed to move host to folder", + "clickToRenameFolder": "Click to rename folder", + "renameFolder": "Rename folder", + "removeFromFolder": "Remove from folder \"{{folder}}\"", + "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": "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": "Select the font to use in the terminal", + "fontSize": "Font Size", + "fontSizeValue": "Font Size: {{value}}px", + "adjustFontSize": "Adjust the terminal font size", + "letterSpacing": "Letter Spacing", + "letterSpacingValue": "Letter Spacing: {{value}}px", + "adjustLetterSpacing": "Adjust spacing between characters", + "lineHeight": "Line Height", + "lineHeightValue": "Line Height: {{value}}", + "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": "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": "快速滚动灵敏度", - "fastScrollSensitivityValue": "快速滚动灵敏度:{{value}}", - "fastScrollSensitivityDesc": "按住修饰键时,滚动速度倍率会提高。", - "minimumContrastRatio": "最小对比度", - "minimumContrastRatioValue": "最小对比度:{{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": "配置 SOCKS5 代理以进行 SSH 连接。所有流量都将通过指定的代理服务器路由。", - "enableSocks5": "启用 SOCKS5 代理", - "enableSocks5Description": "此 SSH 连接请使用 SOCKS5 代理。", - "socks5Host": "代理主机", - "socks5Port": "代理端口", - "socks5Username": "代理用户名", - "socks5Password": "代理密码", - "socks5UsernameOptional": "可选:如果代理不需要身份验证,请留空。", - "socks5PasswordOptional": "可选:如果代理不需要身份验证,请留空。", - "socks5ProxyChain": "代理链", - "socks5ProxyChainDescription": "配置一个 SOCKS 代理链。链中的每个代理都会通过前一个代理连接。", - "socks5ProxyMode": "代理模式", - "socks5UseSingleProxy": "使用单一代理", - "socks5UseProxyChain": "使用代理链", - "socks5UsePreset": "使用已保存的预设", - "socks5SelectPreset": "选择预设", - "socks5ManagePresets": "管理预设", - "socks5ProxyNode": "代理 {{number}}", - "socks5AddProxy": "将代理添加到链", - "socks5RemoveProxy": "移除代理", - "socks5ProxyType": "代理类型", - "socks5SaveAsPreset": "另存为预设", - "socks5SavePresetTitle": "将代理链保存为预设", - "socks5SavePresetDescription": "将当前代理链配置保存为可重用的预设", - "socks5PresetName": "预设名称", - "socks5PresetDescription": "描述(可选)", - "socks5PresetCreated": "已创建代理链预设", - "socks5PresetUpdated": "代理链预设已更新", - "socks5PresetDeleted": "代理链预设已删除", - "socks5PresetSaved": "预设“{{name}}”已成功保存", - "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": "当 sudo 提示输入密码时,自动提示输入 SSH 密码", - "sudoPassword": "Sudo 密码", - "sudoPasswordDesc": "sudo 命令的可选密码(与密钥认证结合使用时很有用)", + "modifierShift": "Shift", + "fastScrollModifierDesc": "Modifier key for fast scrolling", + "fastScrollSensitivity": "Fast Scroll Sensitivity", + "fastScrollSensitivityValue": "Fast Scroll Sensitivity: {{value}}", + "fastScrollSensitivityDesc": "Scroll speed multiplier when modifier is held", + "minimumContrastRatio": "Minimum Contrast Ratio", + "minimumContrastRatioValue": "Minimum Contrast Ratio: {{value}}", + "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": "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": "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": "自动 MOSH", - "autoMoshDesc": "连接时自动运行 MOSH 命令", - "moshCommand": "MOSH 命令", - "moshCommandDesc": "要执行的 MOSH 命令", - "environmentVariables": "环境变量", - "environmentVariablesDesc": "为终端会话设置自定义环境变量", - "variableName": "变量名", - "variableValue": "变量值", - "addVariable": "添加变量", - "docker": "停靠栏", - "openDocker": "打开 Docker", - "notEnabled": "此主机未启用 Docker。请在主机设置中启用 Docker 以使用 Docker 功能。", - "validating": "正在验证 Docker...", - "error": "错误", - "errorCode": "错误代码:{{code}}", - "version": "Docker 版本 v{{version}}", - "current": "当前的", - "used_limit": "已用/限制", - "percentage": "百分比", - "input": "输入", - "output": "输出", - "read": "读", - "write": "写", + "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": "Current", + "used_limit": "Used / Limit", + "percentage": "Percentage", + "input": "Input", + "output": "Output", + "read": "Read", + "write": "Write", "pids": "PIDs", "id": "ID", - "state": "状态", - "console": "控制台", - "containerMustBeRunning": "容器必须正在运行才能连接到控制台。", - "authenticationRequired": "需要身份验证", - "connectedTo": "连接到 {{containerName}}", - "disconnected": "断开连接", - "consoleError": "控制台错误", - "errorMessage": "错误:{{message}}", - "failedToConnect": "连接控制台失败", - "disconnectedFromContainer": "已断开与容器控制台的连接。", - "containerNotRunning": "容器未运行", - "startContainerToAccess": "启动容器以访问控制台", - "selectShell": "选择shell", - "bash": "巴什文", - "sh": "沙子", - "ash": "阿什文", - "connecting": "正在连接...", - "connect": "连接", - "disconnect": "断开", - "notConnected": "未连接", - "clickToConnect": "点击“连接”启动交互式 shell", - "connectingTo": "正在连接到 {{containerName}}...", - "containerMustBeRunningToViewStats": "容器必须处于运行状态才能查看统计信息。", - "failedToFetchStats": "获取统计数据失败", - "noContainersFound": "未找到容器", - "noContainersFoundHint": "首先在服务器上创建容器。", - "searchPlaceholder": "按名称、镜像、ID 搜索……", - "filterByStatusPlaceholder": "按状态筛选", - "allContainersCount": "全部 ({{count}})", + "state": "State", + "console": "Console", + "containerMustBeRunning": "Container must be running to connect to console", + "authenticationRequired": "Authentication required", + "connectedTo": "Connected to {{containerName}}", + "disconnected": "Disconnected", + "consoleError": "Console error", + "errorMessage": "Error: {{message}}", + "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": "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": "尝试调整搜索或筛选条件", - "containerStarted": "容器 {{name}} 已启动", - "failedToStartContainer": "容器启动失败:{{error}}", - "containerStopped": "容器 {{name}} 已停止", - "failedToStopContainer": "停止容器失败:{{error}}", - "containerRestarted": "容器 {{name}} 已重启", - "failedToRestartContainer": "容器重启失败:{{error}}", - "containerUnpaused": "容器 {{name}} 已解除暂停", - "containerPaused": "容器 {{name}} 已暂停", - "failedToTogglePauseContainer": "{{action}} 容器失败:{{error}}", - "containerRemoved": "容器 {{name}} 已移除", - "failedToRemoveContainer": "移除容器失败:{{error}}", - "image": "镜像:", - "idLabel": "ID:", - "ports": "端口:", - "noPorts": "无", - "created": "创建时间:", - "start": "开始", - "stop": "停止", - "unpause": "取消暂停", - "pause": "暂停", - "restart": "重启", - "removeContainer": "移除容器", - "confirmRemoveContainer": "您确定要删除容器“{{name}}”吗?", - "runningContainerWarning": "警告:此容器当前正在运行,将被强制移除。", - "removing": "移除:", - "containerNotFound": "未找到容器", - "backToList": "返回列表", - "logs": "日志", - "stats": "统计数据", - "consoleTab": "控制台", - "failedToFetchLogs": "获取日志失败:{{error}}", - "failedToDownloadLogs": "日志下载失败:{{error}}", - "linesToShow": "显示行数", - "last50Lines": "最后50行", - "last100Lines": "最后100行", - "last500Lines": "最后500行", - "last1000Lines": "最后1000行", - "allLogs": "所有日志", - "showTimestamps": "显示时间戳", - "autoRefresh": "自动刷新", - "filterLogsPlaceholder": "过滤日志...", - "noLogsAvailable": "暂无日志数据" + "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", + "failedToStopContainer": "Failed to stop container: {{error}}", + "containerRestarted": "Container {{name}} restarted", + "failedToRestartContainer": "Failed to restart container: {{error}}", + "containerUnpaused": "Container {{name}} unpaused", + "containerPaused": "Container {{name}} paused", + "failedToTogglePauseContainer": "Failed to {{action}} container: {{error}}", + "containerRemoved": "Container {{name}} removed", + "failedToRemoveContainer": "Failed to remove container: {{error}}", + "image": "Image:", + "idLabel": "ID:", + "ports": "Ports:", + "noPorts": "None", + "created": "Created:", + "start": "Start", + "stop": "Stop", + "unpause": "Unpause", + "pause": "Pause", + "restart": "Restart", + "removeContainer": "Remove Container", + "confirmRemoveContainer": "Are you sure you want to remove container \"{{name}}\"?", + "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": "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": "连接丢失", - "error": "错误:{{message}}", - "disconnected": "断开连接", - "connectionClosed": "连接已关闭", - "connectionError": "连接错误:{{message}}", - "connected": "已连接", - "sshConnected": "已建立 SSH 连接", - "authError": "身份验证失败:{{message}}", - "unknownError": "发生未知错误", - "messageParseError": "解析服务器消息失败", - "websocketError": "WebSocket 连接错误", - "connecting": "正在连接...", - "reconnecting": "正在重新连接... ({{attempt}}/{{max}})", - "reconnected": "已成功重新连接", - "maxReconnectAttemptsReached": "已达到最大重连尝试次数", - "connectionTimeout": "连接超时", - "terminalTitle": "终端 - {{host}}", - "terminalWithPath": "终端 - {{host}}:{{path}}", - "runTitle": "运行 {{command}} - {{host}}", - "totpRequired": "需要双因素身份验证", - "totpCodeLabel": "验证码", + "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": "Disconnected", + "connectionClosed": "Connection closed", + "connectionError": "Connection error: {{message}}", + "connected": "Connected", + "sshConnected": "SSH connection established", + "authError": "Authentication failed: {{message}}", + "unknownError": "Unknown error occurred", + "messageParseError": "Failed to parse server message", + "websocketError": "WebSocket connection error", + "connecting": "Connecting...", + "reconnecting": "Reconnecting... ({{attempt}}/{{max}})", + "reconnected": "Reconnected successfully", + "maxReconnectAttemptsReached": "Maximum reconnection attempts reached", + "connectionTimeout": "Connection timeout", + "terminalTitle": "Terminal - {{host}}", + "terminalWithPath": "Terminal - {{host}}:{{path}}", + "runTitle": "Running {{command}} - {{host}}", + "totpRequired": "Two-Factor Authentication Required", + "totpCodeLabel": "Verification Code", "totpPlaceholder": "000000", - "totpVerify": "验证", - "sudoPasswordPopupTitle": "输入密码?", - "sudoPasswordPopupHint": "按 Enter 键插入,按 Esc 键关闭", - "sudoPasswordPopupConfirm": "确认", - "sudoPasswordPopupDismiss": "取消" + "totpVerify": "Verify", + "sudoPasswordPopupTitle": "Insert Password?", + "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", + "sudoPasswordPopupConfirm": "Insert", + "sudoPasswordPopupDismiss": "Dismiss" }, "fileManager": { - "title": "文件管理器", - "file": "文件", - "folder": "文件夹", - "connectToSsh": "连接到 SSH 以使用文件操作", - "uploadFile": "上传文件", - "downloadFile": "下载", - "extractArchive": "解压归档文件", - "extractingArchive": "正在提取 {{name}}...", - "archiveExtractedSuccessfully": "{{name}} 提取成功", - "extractFailed": "提取失败", - "compressFile": "压缩文件", - "compressFiles": "压缩多个文件", - "compressFilesDesc": "将 {{count}} 个项目压缩为归档文件", - "archiveName": "归档文件名", - "enterArchiveName": "请输入归档文件名...", - "compressionFormat": "压缩格式", - "selectedFiles": "选定文件", - "andMoreFiles": "及 {{count}} 个其他文件...", - "compress": "压缩", - "compressingFiles": "正在将 {{count}} 个项目压缩为 {{name}}...", - "filesCompressedSuccessfully": "{{name}} 创建成功", - "compressFailed": "压缩失败", - "edit": "编辑", - "preview": "预览", - "previous": "上一页", - "next": "下一页", - "pageXOfY": "第 {{current}} 页 / 共 {{total}} 页", - "zoomOut": "缩小", - "zoomIn": "放大", - "newFile": "新建文件", - "newFolder": "新建文件夹", - "rename": "重命名", - "renameItem": "重命名项目", - "deleteItem": "删除项目", - "currentPath": "当前路径", - "uploadFileTitle": "上传文件", - "maxFileSize": "最大:1GB(JSON)/ 5GB(二进制) - 支持大文件上传", - "removeFile": "删除文件", - "clickToSelectFile": "点击选择文件", - "chooseFile": "选择文件", - "uploading": "正在上传...", - "downloading": "正在下载……", - "uploadingFile": "正在上传 {{name}}...", - "uploadingLargeFile": "正在上传大文件 {{name}} ({{size}})...", - "downloadingFile": "正在下载 {{name}}...", - "creatingFile": "正在创建文件 {{name}}...", - "creatingFolder": "正在创建文件夹 {{name}}...", - "deletingItem": "正在删除 {{type}} {{name}}...", - "renamingItem": "正在将 {{type}} {{oldName}} 重命名为 {{newName}}...", - "createNewFile": "创建新文件", - "fileName": "文件名", - "creating": "正在创建……", - "createFile": "创建文件", - "createNewFolder": "创建新文件夹", - "folderName": "文件夹名称", - "createFolder": "创建文件夹", - "warningCannotUndo": "警告:此操作无法撤销。", - "itemPath": "项目路径", - "thisIsDirectory": "这是一个目录(将递归删除)", - "deleting": "正在删除……", - "currentPathLabel": "当前路径", - "newName": "新名称", - "thisIsDirectoryRename": "这是一个目录", - "renaming": "重命名...", - "fileUploadedSuccessfully": "文件“{{name}}”已成功上传", - "failedToUploadFile": "文件上传失败", - "fileDownloadedSuccessfully": "文件“{{name}}”已成功下载", - "failedToDownloadFile": "文件下载失败", - "noFileContent": "未收到文件内容", - "filePath": "文件路径", - "fileCreatedSuccessfully": "文件“{{name}}”创建成功", - "failedToCreateFile": "文件创建失败", - "folderCreatedSuccessfully": "文件夹“{{name}}”已成功创建", - "failedToCreateFolder": "创建文件夹失败", - "failedToCreateItem": "创建项目失败", - "operationFailed": "{{operation}} {{name}} 操作失败,: {{error}}", - "failedToResolveSymlink": "解析符号链接失败", - "itemDeletedSuccessfully": "{{type}} 已成功删除", - "itemsDeletedSuccessfully": "已成功删除 {{count}} 个项目", - "failedToDeleteItems": "删除项目失败", - "dragFilesToUpload": "文件拖放到这里即可上传", - "emptyFolder": "此文件夹为空。", - "itemCount": "{{count}} 个项目", - "selectedCount": "{{count}} 已选", - "searchFiles": "搜索文件...", - "upload": "上传", - "selectHostToStart": "选择主机以启动文件管理", - "failedToConnect": "SSH连接失败。", - "failedToLoadDirectory": "加载目录失败", - "noSSHConnection": "没有可用的 SSH 连接", - "enterFolderName": "请输入文件夹名称:", - "enterFileName": "请输入文件名:", - "copy": "复制", - "cut": "剪切", - "paste": "粘贴", - "copyPath": "复制路径", - "copyPaths": "复制路径", - "delete": "删除", - "properties": "属性", - "refresh": "刷新", - "downloadFiles": "将 {{count}} 个文件下载至浏览器", - "copyFiles": "复制 {{count}} 个项目", - "cutFiles": "剪切 {{count}} 个项目", - "deleteFiles": "删除 {{count}} 个项目", - "filesCopiedToClipboard": "已将 {{count}} 个项目复制到剪贴板", - "filesCutToClipboard": "{{count}} 个项目已剪切至剪贴板", - "pathCopiedToClipboard": "路径已复制到剪贴板", - "pathsCopiedToClipboard": "已将 {{count}} 个路径复制到剪贴板", - "failedToCopyPath": "无法将路径复制到剪贴板", - "movedItems": "已移动 {{count}} 个项目", - "failedToDeleteItem": "删除项目失败", - "itemRenamedSuccessfully": "{{type}} 已成功重命名", - "failedToRenameItem": "重命名项目失败", - "download": "下载", - "permissions": "权限", - "size": "大小", - "modified": "修改时间", - "path": "路径", - "confirmDelete": "你确定要删除 {{name}} 吗?", - "uploadSuccess": "文件上传成功", - "uploadFailed": "文件上传失败", - "downloadSuccess": "文件下载成功", - "downloadFailed": "文件下载失败", - "permissionDenied": "没有权限", - "checkDockerLogs": "查看 Docker 日志以获取详细的错误信息", - "internalServerError": "发生内部服务器错误", - "serverError": "服务器错误", - "error": "错误", - "requestFailed": "请求失败,状态码", - "unknownFileError": "未知", - "cannotReadFile": "无法读取文件", - "noSshSessionId": "没有可用的 SSH 会话 ID", - "noFilePath": "没有可用的文件路径", - "noCurrentHost": "当前没有可用主机", - "fileSavedSuccessfully": "文件已成功保存", - "saveTimeout": "保存操作超时。文件可能已成功保存,但操作耗时过长。请查看 Docker 日志以确认。", - "failedToSaveFile": "文件保存失败", - "deletedSuccessfully": "已成功删除", - "connectToServer": "连接到服务器", - "selectServerToEdit": "从侧边栏选择服务器即可开始编辑文件", - "fileOperations": "文件操作", - "confirmDeleteMessage": "您确定要删除 {{name}} 吗?", - "confirmDeleteSingleItem": "您确定要永久删除“{{name}}”吗?", - "confirmDeleteMultipleItems": "您确定要永久删除 {{count}} 个项目吗?", - "confirmDeleteMultipleItemsWithFolders": "您确定要永久删除 {{count}} 个项目吗?这包括文件夹及其内容。", - "confirmDeleteFolder": "您确定要永久删除文件夹“{{name}}”及其所有内容吗?", - "deleteDirectoryWarning": "这将删除该文件夹及其所有内容。", - "actionCannotBeUndone": "此操作无法撤销。", - "permanentDeleteWarning": "此操作不可撤销,相关项目将从服务器中被永久删除。", - "recent": "最近", - "pinned": "置顶", - "folderShortcuts": "文件夹快捷方式", - "noRecentFiles": "没有最近文件。", - "noPinnedFiles": "没有已置顶的文件。", - "enterFolderPath": "输入文件夹路径", - "noShortcuts": "暂无快捷方式。", - "searchFilesAndFolders": "搜索文件和文件夹……", - "noFilesOrFoldersFound": "未找到任何文件或文件夹。", - "failedToConnectSSH": "SSH连接失败。", - "failedToReconnectSSH": "SSH 会话重新连接失败", - "failedToListFiles": "文件列表失败", - "fetchHomeDataTimeout": "获取home数据超时", - "sshStatusCheckTimeout": "SSH 状态检查超时", - "sshReconnectionTimeout": "SSH 重新连接超时", - "saveOperationTimeout": "保存操作超时", - "cannotSaveFile": "无法保存文件", - "dragSystemFilesToUpload": "将系统文件拖到此处上传", - "dragFilesToWindowToDownload": "将文件拖出窗口即可下载", - "openTerminalHere": "在此处打开终端", - "run": "运行", - "saveToSystem": "另存为...", - "selectLocationToSave": "选择保存位置", - "openTerminalInFolder": "在此文件夹中打开终端", - "openTerminalInFileLocation": "打开终端,指向文件位置", - "terminalWithPath": "终端 - {{host}}:{{path}}", - "runningFile": "运行 - {{file}}", - "onlyRunExecutableFiles": "只能运行可执行文件", - "noHostSelected": "未选择主机", - "starred": "已标星", - "shortcuts": "快捷方式", - "directories": "目录", - "removedFromRecentFiles": "已将“{{name}}”从最近文件中移除", - "removeFailed": "移除失败", - "unpinnedSuccessfully": "已成功取消置顶“{{name}}”", - "unpinFailed": "取消置顶失败", - "removedShortcut": "已移除快捷方式“{{name}}”", - "removeShortcutFailed": "移除快捷方式失败", - "clearedAllRecentFiles": "已清除所有最近文件", - "clearFailed": "清除失败", - "removeFromRecentFiles": "从最近文件中删除", - "clearAllRecentFiles": "清除所有最近文件", - "unpinFile": "取消置顶文件", - "removeShortcut": "移除快捷方式", - "saveFilesToSystem": "将 {{count}} 个文件另存为...", - "pinFile": "置顶文件", - "addToShortcuts": "添加到快捷方式", - "downloadToDefaultLocation": "下载到默认位置", - "pasteFailed": "粘贴失败", - "noUndoableActions": "没有可撤销的操作", - "undoCopySuccess": "撤销复制操作:已删除 {{count}} 个已复制的文件", - "undoCopyFailedDelete": "撤销失败:无法删除任何已复制的文件", - "undoCopyFailedNoInfo": "撤销失败:找不到已复制的文件信息", - "undoMoveSuccess": "撤销移动操作:已将 {{count}} 个文件移回原始位置", - "undoMoveFailedMove": "撤销失败:无法将任何文件移回。", - "undoMoveFailedNoInfo": "撤销失败:找不到已移动的文件信息", - "undoDeleteNotSupported": "删除操作无法撤销:文件已从服务器永久删除。", - "undoTypeNotSupported": "不支持的撤销操作类型", - "undoOperationFailed": "撤销操作失败", - "unknownError": "未知错误", - "enterPath": "输入路径...", - "editPath": "编辑路径", - "confirm": "确认", - "cancel": "取消", - "find": "查找...", - "replaceWith": "替换为……", - "replace": "替换", - "replaceAll": "全部替换", - "downloadInstead": "下载", - "keyboardShortcuts": "快捷键", - "searchAndReplace": "查找与替换", - "editing": "编辑", - "navigation": "导航", - "code": "代码", - "search": "搜索", - "findNext": "查找下一个", - "findPrevious": "查找上一个", - "save": "保存", - "selectAll": "全选", - "undo": "撤销", - "redo": "重做", - "goToLine": "跳转到行", - "moveLineUp": "上移行", - "moveLineDown": "下移行", - "toggleComment": "切换注释", - "indent": "增加缩进", - "outdent": "减少缩进", - "autoComplete": "自动补全", - "imageLoadError": "图片加载失败", - "rotate": "旋转", - "originalSize": "原尺寸", - "startTyping": "开始输入……", - "unknownSize": "尺寸未知", - "fileIsEmpty": "文件为空", - "largeFileWarning": "大文件警告", - "largeFileWarningDesc": "此文件大小为 {{size}},以文本格式打开时可能会导致性能问题。", - "fileNotFoundAndRemoved": "文件“{{name}}”未找到,已从最近/置顶文件中移除。", - "failedToLoadFile": "文件加载失败:{{error}}", - "serverErrorOccurred": "服务器出错,请稍后再试。", - "autoSaveFailed": "自动保存失败", - "fileAutoSaved": "文件自动保存", - "moveFileFailed": "移动 {{name}} 失败", - "moveOperationFailed": "移动操作失败", - "canOnlyCompareFiles": "只能比较两个文件", - "comparingFiles": "正在比较文件:{{file1}} 和 {{file2}}", - "dragFailed": "拖拽操作失败", - "filePinnedSuccessfully": "文件“{{name}}”已成功固定", - "pinFileFailed": "文件固定失败", - "fileUnpinnedSuccessfully": "文件“{{name}}”已成功取消固定", - "unpinFileFailed": "取消固定文件失败", - "shortcutAddedSuccessfully": "文件夹快捷方式“{{name}}”已成功添加", - "addShortcutFailed": "添加快捷方式失败", - "operationCompletedSuccessfully": "{{operation}} {{count}} 个项目成功", - "operationCompleted": "{{operation}} {{count}} 个项目", - "downloadFileSuccess": "文件 {{name}} 下载成功", - "downloadFileFailed": "下载失败", - "moveTo": "移至 {{name}}", - "diffCompareWith": "比较与 {{name}} 的差异", - "dragOutsideToDownload": "向外拖动窗口即可下载({{count}} 个文件)", - "newFolderDefault": "新建文件夹", - "newFileDefault": "新建文件 txt", - "successfullyMovedItems": "已成功将 {{count}} 个项目移动到 {{target}}", - "move": "移动", - "searchInFile": "在文件中搜索(Ctrl+F)", - "showKeyboardShortcuts": "显示快捷键", - "startWritingMarkdown": "开始编写你的 Markdown 内容……", - "loadingFileComparison": "正在加载文件比较...", - "reload": "重新加载", - "compare": "对比", - "sideBySide": "左右分栏", - "inline": "行内对比", - "fileComparison": "文件对比:{{file1}} 与 {{file2}}", - "fileTooLarge": "文件过大:{{error}}", - "sshConnectionFailed": "SSH 连接失败,请检查你与 {{name}}({{ip}}:{{port}})的连接状态", - "loadFileFailed": "文件加载失败:{{error}}", - "connectedSuccessfully": "连接成功", - "totpVerificationFailed": "TOTP验证失败", - "verificationCodePrompt": "验证码:", - "changePermissions": "更改权限", - "changePermissionsDesc": "修改文件权限", - "currentPermissions": "当前权限", - "newPermissions": "新权限", - "owner": "所有者", - "group": "用户组", - "others": "其他的", - "read": "读", - "write": "写", - "execute": "执行", - "permissionsChangedSuccessfully": "权限已成功更改", - "failedToChangePermissions": "更改权限失败" + "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": "Extract failed", + "compressFile": "Compress File", + "compressFiles": "Compress Files", + "compressFilesDesc": "Compress {{count}} items into an archive", + "archiveName": "Archive Name", + "enterArchiveName": "Enter archive name...", + "compressionFormat": "Compression Format", + "selectedFiles": "Selected files", + "andMoreFiles": "and {{count}} more...", + "compress": "Compress", + "compressingFiles": "Compressing {{count}} items into {{name}}...", + "filesCompressedSuccessfully": "{{name}} created successfully", + "compressFailed": "Compression failed", + "edit": "Edit", + "preview": "Preview", + "previous": "Previous", + "next": "Next", + "pageXOfY": "Page {{current}} of {{total}}", + "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}}...", + "creatingFile": "Creating {{name}}...", + "creatingFolder": "Creating {{name}}...", + "deletingItem": "Deleting {{type}} {{name}}...", + "renamingItem": "Renaming {{type}} {{oldName}} to {{newName}}...", + "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": "Failed to upload file", + "fileDownloadedSuccessfully": "File \"{{name}}\" downloaded successfully", + "failedToDownloadFile": "Failed to download file", + "noFileContent": "No file content received", + "filePath": "File Path", + "fileCreatedSuccessfully": "File \"{{name}}\" created successfully", + "failedToCreateFile": "Failed to create file", + "folderCreatedSuccessfully": "Folder \"{{name}}\" created successfully", + "failedToCreateFolder": "Failed to create folder", + "failedToCreateItem": "Failed to create item", + "operationFailed": "{{operation}} operation failed for {{name}}: {{error}}", + "failedToResolveSymlink": "Failed to resolve symlink", + "itemDeletedSuccessfully": "{{type}} deleted successfully", + "itemsDeletedSuccessfully": "{{count}} items deleted successfully", + "failedToDeleteItems": "Failed to delete items", + "dragFilesToUpload": "Drop files here to upload", + "emptyFolder": "This folder is empty", + "itemCount": "{{count}} items", + "selectedCount": "{{count}} selected", + "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": "Path copied to clipboard", + "pathsCopiedToClipboard": "{{count}} paths copied to clipboard", + "failedToCopyPath": "Failed to copy path to clipboard", + "movedItems": "Moved {{count}} items", + "failedToDeleteItem": "Failed to delete item", + "itemRenamedSuccessfully": "{{type}} renamed successfully", + "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": "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": "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": "Can only run executable files", + "noHostSelected": "No host selected", + "starred": "Starred", + "shortcuts": "Shortcuts", + "directories": "Directories", + "removedFromRecentFiles": "Removed \"{{name}}\" from recent files", + "removeFailed": "Remove failed", + "unpinnedSuccessfully": "Unpinned \"{{name}}\" successfully", + "unpinFailed": "Unpin failed", + "removedShortcut": "Removed shortcut \"{{name}}\"", + "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": "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": "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": "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": "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": "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": "Server error occurred. Please try again later.", + "autoSaveFailed": "Auto-save failed", + "fileAutoSaved": "File auto-saved", + "moveFileFailed": "Failed to move {{name}}", + "moveOperationFailed": "Move operation failed", + "canOnlyCompareFiles": "Can only compare two files", + "comparingFiles": "Comparing files: {{file1}} and {{file2}}", + "dragFailed": "Drag operation failed", + "filePinnedSuccessfully": "File \"{{name}}\" pinned successfully", + "pinFileFailed": "Failed to pin file", + "fileUnpinnedSuccessfully": "File \"{{name}}\" unpinned successfully", + "unpinFileFailed": "Failed to unpin file", + "shortcutAddedSuccessfully": "Folder shortcut \"{{name}}\" added successfully", + "addShortcutFailed": "Failed to add shortcut", + "operationCompletedSuccessfully": "{{operation}} {{count}} items successfully", + "operationCompleted": "{{operation}} {{count}} items", + "downloadFileSuccess": "File {{name}} downloaded successfully", + "downloadFileFailed": "Download failed", + "moveTo": "Move to {{name}}", + "diffCompareWith": "Diff compare with {{name}}", + "dragOutsideToDownload": "Drag outside window to download ({{count}} files)", + "newFolderDefault": "NewFolder", + "newFileDefault": "NewFile.txt", + "successfullyMovedItems": "Successfully moved {{count}} items to {{target}}", + "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": "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": "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": "未配置隧道", - "configureTunnelsInHostSettings": "首先在主机管理器中配置隧道连接,即可开始使用。" + "noTunnelsConfigured": "No Tunnels Configured", + "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" }, "tunnels": { - "title": "SSH隧道", - "noSshTunnels": "没有 SSH 隧道", - "createFirstTunnelMessage": "您尚未创建任何 SSH 隧道。请在主机管理器中配置隧道连接以开始操作。", - "connected": "已连接", - "disconnected": "断开连接", - "connecting": "正在连接...", - "disconnecting": "正在断开连接……", - "unknownTunnelStatus": "未知", - "statusUnknown": "未知", - "unknown": "未知", - "error": "错误", - "failed": "失败的", - "retrying": "重试", - "waiting": "等待", - "waitingForRetry": "等待重试", - "retryingConnection": "正在重试连接", - "canceling": "正在取消……", - "connect": "连接", - "disconnect": "断开", - "cancel": "取消", - "port": "港口", - "attempt": "尝试 {{current}} 次,共 {{max}} 次", - "nextRetryIn": "下次重试时间为 {{seconds}} 秒", - "checkDockerLogs": "检查 Docker 日志以查找错误原因,并加入讨论。", - "orCreate": "或者创建一个", - "noTunnelConnections": "未配置隧道连接", - "tunnelConnections": "隧道连接", - "addTunnel": "添加隧道", - "editTunnel": "编辑隧道", - "deleteTunnel": "删除隧道", - "tunnelName": "隧道名称", - "localPort": "本地端口", - "remoteHost": "远程主机", - "remotePort": "远程端口", - "autoStart": "自动启动", - "status": "状态", - "active": "已激活", - "inactive": "未激活", - "start": "开始", - "stop": "停止", - "restart": "重启", - "connectionType": "连接类型", - "local": "本地", - "remote": "远程", - "dynamic": "动态", - "unknownConnectionStatus": "未知", - "portMapping": "端口 {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", - "endpointHostNotFound": "未找到目标主机", + "title": "SSH Tunnels", + "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": "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": "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": "运行时长", - "loadAverage": "平均负载:{{avg1}}、{{avg5}}、{{avg15}}", - "processes": "进程数", - "connections": "连接数", - "usage": "已使用", - "available": "可用", - "total": "总计", - "free": "空闲", - "used": "已使用", - "percentage": "占比", - "refreshStatusAndMetrics": "刷新状态和指标", - "refreshStatus": "刷新状态", - "fileManagerAlreadyOpen": "该主机的文件管理器已打开", - "openFileManager": "打开文件管理器", + "memory": "Memory", + "disk": "Disk", + "network": "Network", + "uptime": "Uptime", + "loadAverage": "Avg: {{avg1}}, {{avg5}}, {{avg15}}", + "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": "CPU 信息未获取", - "loadAverageNA": "平均负载:未获取", - "cpuUsage": "CPU 使用率", - "memoryUsage": "内存使用率", - "diskUsage": "磁盘使用率", - "rootStorageSpace": "根目录存储空间", - "of": "共", - "feedbackMessage": "对服务器管理的未来发展方向有什么想法吗?欢迎分享!", - "failedToFetchHostConfig": "获取主机配置失败", - "failedToFetchStatus": "获取服务器状态失败", - "failedToFetchMetrics": "获取服务器指标失败", - "failedToFetchHomeData": "获取home数据失败", - "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": "系统信息", - "hostname": "主机名", - "operatingSystem": "操作系统", - "kernel": "核心", - "totalUptime": "总运行时长", - "seconds": "秒", - "networkInterfaces": "网络接口", - "noInterfacesFound": "未找到网络接口", - "totalProcesses": "进程总数", - "running": "运行中", - "noProcessesFound": "未找到任何进程", - "loginStats": "SSH 登录统计信息", - "totalLogins": "总登录次数", - "uniqueIPs": "独立 IP 数", - "recentSuccessfulLogins": "最近成功登录记录", - "recentFailedAttempts": "最近登录失败尝试", - "noRecentLoginData": "暂无最近登录数据", - "from": "来自", - "quickActions": "快速操作", - "executeQuickAction": "执行 {{name}}", - "executingQuickAction": "正在执行 {{name}}...", - "quickActionSuccess": "{{name}} 已成功完成", - "quickActionFailed": "{{name}} 失败", - "quickActionError": "执行 {{name}} 失败" + "naCpus": "N/A CPU(s)", + "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": "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", + "quickActionFailed": "{{name}} failed", + "quickActionError": "Failed to execute {{name}}" }, "auth": { - "tagline": "SSH 服务器管理器", - "description": "安全、强大且直观的 SSH 连接管理", - "welcomeBack": "欢迎回到 TERMIX", - "createAccount": "创建您的 TERMIX 帐户", - "continueExternal": "通过第三方账号继续", - "loginTitle": "登录 Termix", - "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": "禁用 2FA", - "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": "您是第一个用户,将被授予管理员权限。您可以在侧边栏用户下拉菜单中查看管理员设置。如果您认为这是一个错误,请查看 Docker 日志或在 GitHub 上创建一个 issue。", - "external": "第三方", - "loginWithExternal": "通过第三方账号登录", - "loginWithExternalDesc": "使用你配置的第三方身份提供商登录", - "externalNotSupportedInElectron": "Electron 应用暂不支持第三方认证。请使用网页版进行 OIDC 登录。", - "resetPasswordButton": "重置密码", - "sendResetCode": "发送重置码", - "resetCodeDesc": "输入你的用户名以接收密码重置码。该码将记录在 docker 容器日志中。", - "resetCode": "重置码", - "verifyCodeButton": "验证码", - "enterResetCode": "请输入 Docker 容器日志中该用户的 6 位代码:", - "goToLogin": "前往登录", - "newPassword": "新密码", - "confirmNewPassword": "确认密码", - "enterNewPassword": "请输入用户的新密码:", - "signUp": "注册", - "mobileApp": "移动应用", - "loggingInToMobileApp": "正在登录移动应用", - "desktopApp": "桌面应用程序", - "loggingInToDesktopApp": "正在登录桌面应用", - "loggingInToDesktopAppViaWeb": "通过网页界面登录桌面应用程序", - "loadingServer": "正在加载服务器...", - "authenticating": "正在验证身份...", - "dataLossWarning": "使用此方法重置密码将删除您保存的所有 SSH 主机、凭证和其他加密数据。此操作无法撤销。仅当您忘记密码且未登录时才使用此方法。", - "authenticationDisabled": "身份验证已禁用", - "authenticationDisabledDesc": "所有身份验证方式目前均已禁用。请联系您的管理员。", - "passwordResetSuccess": "密码重置成功", - "passwordResetSuccessDesc": "您的密码已成功重置。您现在可以使用新密码登录。" + "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": "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": "密码重置失败", - "invalidTotpCode": "无效的 TOTP 代码", - "failedOidcLogin": "OIDC 登录启动失败", - "failedUserInfo": "OIDC登录后获取用户信息失败", - "oidcAuthFailed": "OIDC 身份验证失败", - "noTokenReceived": "登录未收到令牌", - "invalidAuthUrl": "从后端收到的授权 URL 无效", - "invalidInput": "输入无效", - "requiredField": "此字段是必需的", - "minLength": "最短长度为 {{min}}", - "maxLength": "最大长度为 {{max}}", - "invalidEmail": "无效的电子邮件地址", - "passwordMismatch": "密码不匹配", - "passwordLoginDisabled": "目前已禁用用户名/密码登录。", - "weakPassword": "密码强度不足", - "usernameExists": "用户名已存在", - "emailExists": "邮箱地址已存在", - "loadFailed": "数据加载失败", - "saveError": "保存失败", - "sessionExpired": "会话已过期 - 请重新登录" + "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": "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": "This field is required", + "minLength": "Minimum length is {{min}}", + "maxLength": "Maximum length is {{max}}", + "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": "复制失败", - "copiedToClipboard": "{{item}} 已复制到剪贴板", - "connectionEstablished": "连接已建立", - "connectionClosed": "连接已关闭", - "reconnecting": "正在重新连接……", - "processing": "处理中...", - "pleaseWait": "请稍等...", - "registrationDisabled": "管理员已禁用新账号注册功能。请登录或联系管理员。", - "databaseConnected": "数据库连接成功", - "databaseConnectionFailed": "连接数据库服务器失败", - "checkServerConnection": "请检查您的服务器连接并重试。", - "resetCodeSent": "重置码已发送到 Docker 日志", - "codeVerified": "验证码验证成功", - "passwordResetSuccess": "密码重置成功", - "loginSuccess": "登录成功", - "registrationSuccess": "注册成功" + "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": "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": "启用 Tab 键根据命令历史为终端命令提供自动补全建议", - "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,502 +1901,502 @@ "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": "请输入您的密码", - "totpCode": "6位数的TOTP代码", - "searchHostsAny": "搜索主机(尝试:tag:prod,user:root,ip:192.168)...", - "confirmPassword": "请输入密码以确认", - "typeHere": "在此输入", - "fileName": "请输入文件名(例如,example.txt)", - "folderName": "输入文件夹名称", - "fullPath": "请输入项目的完整路径", - "currentPath": "输入项目的当前路径", - "newName": "输入新名称", + "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": "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": "创建用户管理员失败", - "userIsNowAdmin": "用户 {{username}} 已设为管理员", - "removeAdminConfirm": "确定要移除 {{username}} 的管理员权限吗?", - "deleteUserConfirm": "确定要删除用户 {{username}} 吗?此操作不可撤销。", - "deleteAccount": "删除账号", - "closeDeleteAccount": "关闭删除账号窗口", - "deleteAccountWarning": "此操作不可撤销,将永久删除你的账号及所有关联数据。", - "deleteAccountWarningDetails": "删除您的帐户将清除您的所有数据,包括 SSH 主机、配置和设置。此操作不可逆。", - "deleteAccountWarningShort": "此操作不可逆,将永久删除您的帐户。", - "cannotDeleteAccount": "无法删除帐户", - "lastAdminWarning": "您是最后一位管理员用户。您不能删除您的帐户,因为这会导致系统失去所有管理员。请先将其他用户设为管理员,或联系系统支持。", - "confirmPassword": "确认密码", - "deleting": "正在删除……", - "cancel": "取消" + "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": "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": "侧边栏", - "toggleSidebar": "切换侧边栏", - "close": "关闭", - "online": "在线", - "offline": "离线", - "maintenance": "维护中", - "degraded": "降级状态", - "noTunnelConnections": "未配置隧道连接", + "sidebar": "Sidebar", + "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": "密钥", - "totpQrCode": "TOTP二维码", - "passwordRequired": "使用密码验证时,需要输入密码。", - "sshKeyRequired": "使用密钥认证时需要 SSH 私钥。", - "keyTypeRequired": "使用密钥认证时,需要指定密钥类型。", - "validSshConfigRequired": "必须从列表中选择有效的 SSH 配置。", - "updateHost": "更新主机", - "addHost": "添加主机", - "editHost": "编辑主机", - "pinConnection": "固定连接", - "authentication": "身份验证", - "password": "密码", - "key": "密钥", - "sshPrivateKey": "SSH 私钥", - "keyPassword": "密钥密码", - "keyType": "密钥类型", - "enableTerminal": "启用终端", - "enableTunnel": "启用隧道", - "enableFileManager": "启用文件管理器", - "defaultPath": "默认路径", - "tunnelConnections": "隧道连接", - "maxRetries": "最大重试次数", - "upload": "上传", - "updateKey": "更新密钥", - "productionFolder": "生产环境", - "databaseServer": "数据库服务器", - "developmentServer": "开发服务器", - "developmentFolder": "开发环境", - "webServerProduction": "Web 服务器 - 生产环境", - "unknownError": "未知错误", - "failedToInitiatePasswordReset": "初始化密码重置失败", - "failedToVerifyResetCode": "验证重置码失败", - "failedToCompletePasswordReset": "完成密码重置失败", - "invalidTotpCode": "无效的 TOTP 代码", - "failedToStartOidcLogin": "OIDC 登录启动失败", - "failedToGetUserInfoAfterOidc": "OIDC登录后获取用户信息失败", - "loginWithExternalProvider": "通过第三方账号登录", - "loginWithExternal": "通过第三方账号登录", - "sendResetCode": "发送重置代码", - "verifyCode": "验证验证码", - "resetPassword": "重置密码", - "login": "登录", - "signUp": "注册", - "failedToUpdateOidcConfig": "更新 OIDC 配置失败", - "failedToMakeUserAdmin": "设置用户为管理员失败", - "failedToStartTotpSetup": "TOTP 设置启动失败", - "invalidVerificationCode": "验证码无效", - "failedToDisableTotp": "禁用 TOTP 失败", - "failedToGenerateBackupCodes": "生成备用码失败" + "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": "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": "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": "最近活动", - "reset": "重置", - "loadingRecentActivity": "加载最近活动...", - "noRecentActivity": "暂无最近活动", - "quickActions": "快捷操作", - "addHost": "添加主机", - "addCredential": "添加凭证", - "adminSettings": "管理员设置", - "userProfile": "用户资料", - "serverStats": "服务器统计信息", - "loadingServerStats": "加载服务器统计信息...", - "noServerData": "暂无服务器数据", + "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": "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": "内存", - "notAvailable": "未获取" + "ram": "RAM", + "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": "屏蔽危险命令(passwd、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": "在服务器上创建受限用户而非共享你的凭证。需要 sudo 权限。这是最安全的选项。", - "expiresAt": "过期时间", - "expiresIn": "{{hours}} 小时后过期", - "expired": "已过期", - "grantedBy": "授权人", - "accessLevel": "访问级别", - "lastAccessed": "最后访问时间", - "accessCount": "访问次数", - "revokeAccess": "撤销访问权限", - "confirmRevokeAccess": "确定要撤销 {{username}} 的访问权限吗?", - "hostSharedSuccessfully": "已成功与 {{username}} 共享主机", - "hostAccessUpdated": "主机访问权限已更新", - "failedToShareHost": "共享主机失败", - "accessRevokedSuccessfully": "访问权限已成功撤销", - "failedToRevokeAccess": "撤销访问权限失败", - "shared": "共享", - "sharedHosts": "共享主机", - "sharedWithMe": "共享给我的主机", - "noSharedHosts": "暂无共享给您的主机", - "owner": "所有者", - "viewAccessList": "查看访问列表", - "accessList": "访问列表", - "noAccessGranted": "此主机未被授予访问权限", - "noAccessGrantedMessage": "暂无用户被授予此主机的访问权限", - "manageAccessFor": "管理访问权限", - "totalAccessRecords": "{{count}} 条访问记录", - "neverAccessed": "从未访问", - "timesAccessed": "访问 {{count}} 次", - "daysRemaining": "剩余 {{days}} 天", - "hoursRemaining": "剩余 {{hours}} 小时", - "failedToFetchAccessList": "获取访问列表失败", - "currentAccess": "当前访问权限", - "securityWarning": "安全警告", - "securityWarningMessage": "共享凭证将赋予用户对服务器的完全访问权限,可以执行任何操作,包括更改密码和删除文件。请仅与受信任的用户共享凭证。", - "tempUserRecommended": "为了提高安全性,我们建议启用“创建临时用户”功能。", - "roleManagement": "角色管理", - "manageRoles": "管理角色", - "manageRolesFor": "管理 {{username}} 的角色", - "assignRole": "分配角色", - "removeRole": "移除角色", - "userRoles": "用户角色", - "permissions": "权限", - "systemRole": "系统角色", - "customRole": "自定义角色", - "roleAssignedSuccessfully": "已成功为 {{username}} 分配角色", - "failedToAssignRole": "角色分配失败", - "roleRemovedSuccessfully": "已成功从 {{username}} 移除角色", - "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": "你对此主机的共享访问权限已过期", - "sharedAccessExpiresIn": "共享访问权限将在 {{hours}} 小时后过期", + "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": "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": "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": "Never", + "timesAccessed": "{{count}} time(s)", + "daysRemaining": "{{days}} day(s)", + "hoursRemaining": "{{hours}} hour(s)", + "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": "Assign Role", + "removeRole": "Remove Role", + "userRoles": "User Roles", + "permissions": "Permissions", + "systemRole": "System Role", + "customRole": "Custom Role", + "roleAssignedSuccessfully": "Role assigned to {{username}} successfully", + "failedToAssignRole": "Failed to assign role", + "roleRemovedSuccessfully": "Role removed from {{username}} successfully", + "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": "删除角色", - "confirmDeleteRoleDescription": "您确定要删除角色“{{name}}”吗?此操作无法撤销。", - "confirmRemoveRole": "移除角色", - "confirmRemoveRoleDescription": "您确定要从该用户中移除此角色吗?", - "editRoleDescription": "更新角色信息", - "createRoleDescription": "创建一个新的自定义角色,用于对用户进行分组。", - "assignRolesDescription": "管理用户角色分配", - "noRoles": "未找到角色", - "selectRole": "共享给角色", - "type": "类型", - "user": "用户", - "role": "角色", - "saveHostFirst": "请先保存主机", - "saveHostFirstDescription": "请先保存主机,然后再配置共享设置。", - "shareWithUser": "共享给用户", - "shareWithRole": "分享角色", - "share": "共享", - "target": "目标", - "expires": "过期时间", - "never": "永不", - "noAccessRecords": "未找到访问记录", - "sharedSuccessfully": "共享成功", - "failedToShare": "共享失败", - "confirmRevokeAccessDescription": "您确定要撤销此访问权限吗?", - "hours": "小时", - "sharing": "共享", - "selectUserAndRole": "请同时选择用户和角色", - "view": "仅查看", - "viewDesc": "由于 Termix 加密系统的原因,其他权限级别将在稍后推出。" + "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": "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": "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": "近期活动", - "navigation": "导航", - "addHost": "添加主机", - "addCredential": "添加凭证", - "adminSettings": "管理员设置", - "userProfile": "用户资料", - "updateLog": "更新日志", - "hosts": "主机", - "openServerDetails": "打开服务器详情", - "openFileManager": "打开文件管理器", - "edit": "编辑", - "links": "相关链接", + "searchPlaceholder": "Search for hosts or quick actions...", + "recentActivity": "Recent Activity", + "navigation": "Navigation", + "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": "双击左 Shift 键打开命令面板" + "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": "正在验证 Docker...", - "connectingToHost": "正在连接主机...", - "error": "错误", - "errorCode": "错误代码:{{code}}", + "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": "容器 {{name}} 已启动", - "failedToStartContainer": "启动容器 {{name}} 失败", - "containerStopped": "容器 {{name}} 已停止", - "failedToStopContainer": "停止容器 {{name}} 失败", - "containerRestarted": "容器 {{name}} 已重启", - "failedToRestartContainer": "重启容器 {{name}} 失败", - "containerPaused": "容器 {{name}} 已暂停", - "containerUnpaused": "容器 {{name}} 已取消暂停", - "failedToTogglePauseContainer": "切换容器 {{name}} 暂停状态失败", - "containerRemoved": "容器 {{name}} 已移除", - "failedToRemoveContainer": "移除容器 {{name}} 失败", - "image": "镜像", + "containerStarted": "Container {{name}} started", + "failedToStartContainer": "Failed to start container {{name}}", + "containerStopped": "Container {{name}} stopped", + "failedToStopContainer": "Failed to stop container {{name}}", + "containerRestarted": "Container {{name}} restarted", + "failedToRestartContainer": "Failed to restart container {{name}}", + "containerPaused": "Container {{name}} paused", + "containerUnpaused": "Container {{name}} unpaused", + "failedToTogglePauseContainer": "Failed to toggle pause state for container {{name}}", + "containerRemoved": "Container {{name}} removed", + "failedToRemoveContainer": "Failed to remove container {{name}}", + "image": "Image", "idLabel": "ID", - "ports": "端口", - "noPorts": "无端口", - "created": "创建时间", - "start": "启动", - "stop": "停止", - "pause": "暂停", - "unpause": "取消暂停", - "restart": "重启", - "remove": "移除", - "removeContainer": "移除容器", - "confirmRemoveContainer": "您确定要删除容器“{{name}}”吗?此操作无法撤销。", - "runningContainerWarning": "警告:此容器当前正在运行。移除此容器会先停止其运行。", - "removing": "移除中……", - "loadingContainers": "加载容器列表...", - "noContainersFound": "未找到容器", - "noContainersFoundHint": "此主机上没有可用的 Docker 容器", - "searchPlaceholder": "搜索容器……", - "filterByStatusPlaceholder": "按状态筛选", - "allContainersCount": "全部 ({{count}})", + "ports": "Ports", + "noPorts": "No ports", + "created": "Created", + "start": "Start", + "stop": "Stop", + "pause": "Pause", + "unpause": "Unpause", + "restart": "Restart", + "remove": "Remove", + "removeContainer": "Remove Container", + "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", + "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", - "input": "流入", - "output": "流出", - "blockIo": "块 I/O", - "read": "读取", - "write": "写入", + "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": "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验证失败,请重试。", - "connectedTo": "已连接到 {{containerName}}", - "disconnected": "已断开", - "consoleError": "控制台错误", - "errorMessage": "错误:{{message}}", - "failedToConnect": "连接容器失败", - "console": "控制台", - "selectShell": "选择 Shell", - "bash": "巴什文", + "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": "Disconnected", + "consoleError": "Console error", + "errorMessage": "Error: {{message}}", + "failedToConnect": "Failed to connect to container", + "console": "Console", + "selectShell": "Select shell", + "bash": "Bash", "sh": "sh", - "ash": "灰度", - "connecting": "正在连接...", - "connect": "连接", - "disconnect": "断开连接", - "notConnected": "未连接", - "clickToConnect": "单击“连接”以启动 shell 会话", - "connectingTo": "正在连接到 {{containerName}}...", - "containerNotFound": "未找到容器", - "backToList": "返回列表", - "logs": "日志", - "stats": "统计信息", - "consoleTab": "控制台", - "startContainerToAccess": "启动容器以访问控制台" + "ash": "ash", + "connecting": "Connecting...", + "connect": "Connect", + "disconnect": "Disconnect", + "notConnected": "Not connected", + "clickToConnect": "Click connect to start a shell session", + "connectingTo": "Connecting to {{containerName}}...", + "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" } }