From 012a3e07b86e5b9e5fec7492e760f3abff7d0645 Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Thu, 1 Jan 2026 01:57:33 -0600 Subject: [PATCH] New translations en.json (Afrikaans) --- src/locales/translated/af.json | 2402 ++++++++++++++++++++++++++++++++ 1 file changed, 2402 insertions(+) create mode 100644 src/locales/translated/af.json diff --git a/src/locales/translated/af.json b/src/locales/translated/af.json new file mode 100644 index 00000000..e319cfd7 --- /dev/null +++ b/src/locales/translated/af.json @@ -0,0 +1,2402 @@ +{ + "credentials": { + "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": "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}} 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: {{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 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": "e.g., System Commands, Docker Scripts" + } + }, + "snippets": { + "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": "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": "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": "Please assign at least one tab to the layout", + "fillAllSlots": "Please fill all {{count}} slots before applying" + } + }, + "homepage": { + "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": "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": "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": "Close", + "minimize": "Minimize", + "online": "Online", + "offline": "Offline", + "continue": "Continue", + "maintenance": "Maintenance", + "degraded": "Degraded", + "discord": "Discord", + "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": "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": "Admin Settings", + "oidc": "OIDC", + "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": "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": "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", + "ecdsaNistP384": "ECDSA NIST P-384", + "ecdsaNistP521": "ECDSA NIST P-521", + "dsa": "DSA", + "rsaSha2256": "RSA SHA2-256", + "rsaSha2512": "RSA SHA2-512", + "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": "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": "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": "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": "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": "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": "Verify", + "sudoPasswordPopupTitle": "Insert Password?", + "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", + "sudoPasswordPopupConfirm": "Insert", + "sudoPasswordPopupDismiss": "Dismiss" + }, + "fileManager": { + "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": "No Tunnels Configured", + "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" + }, + "tunnels": { + "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 issue", + "forHelp": "for help" + }, + "serverStats": { + "title": "Server Statistics", + "cpu": "CPU", + "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": "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 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": "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": "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": "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": "Failed to load version information" + }, + "placeholders": { + "enterCode": "000000", + "ipAddress": "127.0.0.1", + "port": "22", + "maxRetries": "3", + "retryInterval": "10", + "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": "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": "sub", + "usernameField": "name", + "scopes": "openid email profile", + "userinfoUrl": "https://your-provider.com/application/o/userinfo/", + "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": "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": "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": "Sidebar", + "toggleSidebar": "Toggle Sidebar", + "close": "Close", + "online": "Online", + "offline": "Offline", + "maintenance": "Maintenance", + "degraded": "Degraded", + "noTunnelConnections": "No tunnel connections configured", + "discord": "Discord", + "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": "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": "Dashboard", + "github": "GitHub", + "support": "Support", + "discord": "Discord", + "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": "RAM", + "notAvailable": "N/A" + }, + "rbac": { + "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": "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": "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": "Roles", + "admin": "Administrator", + "user": "User" + }, + "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": "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", + "discord": "Discord", + "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 is not enabled for this host", + "validating": "Validating Docker...", + "connectingToHost": "Connecting to host...", + "error": "Error", + "errorCode": "Error code: {{code}}", + "version": "Docker {{version}}", + "containerStarted": "Container {{name}} started", + "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": "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": "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": "Container Information", + "name": "Name", + "id": "ID", + "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": "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": "Switch to Light", + "switchToDark": "Switch to Dark" + } +}