mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 14:15:24 +00:00
3141 lines
154 KiB
JSON
3141 lines
154 KiB
JSON
{
|
|
"connection": {
|
|
"retryingIn": "Retrying in {{seconds}}s ({{attempt}}/{{max}})",
|
|
"retryingNow": "Retrying... ({{attempt}}/{{max}})",
|
|
"disconnected": "Unable to connect",
|
|
"reconnect": "Reconnect"
|
|
},
|
|
"termixId": {
|
|
"title": "Termix ID",
|
|
"loadFailed": "Failed to load Termix ID",
|
|
"claimTitle": "Claim your Termix ID",
|
|
"claimIntro": "Pick a unique handle. Your SSH public keys will be published at a public URL you can add to any server's authorized_keys file.",
|
|
"handleLabel": "Handle",
|
|
"handlePlaceholder": "alice",
|
|
"checking": "Checking…",
|
|
"available": "Available",
|
|
"taken": "Already taken",
|
|
"invalidHandle": "Lowercase letters, numbers, - and _ only",
|
|
"descriptionLabel": "Description (optional)",
|
|
"descriptionPlaceholder": "Work laptop & phone keys",
|
|
"create": "Create Termix ID",
|
|
"created": "Termix ID created",
|
|
"createFailed": "Failed to create Termix ID",
|
|
"deleteConfirm": "Delete your Termix ID and all published keys? Servers you provisioned will keep the keys until you remove them manually.",
|
|
"deleted": "Termix ID deleted",
|
|
"deleteFailed": "Failed to delete Termix ID",
|
|
"copyFailed": "Copy failed",
|
|
"resolverUrlLabel": "Public resolver URL",
|
|
"provisionLabel": "Provision a server",
|
|
"publishTitle": "Publish a public key",
|
|
"generate": "Generate",
|
|
"generateTooltip": "Generate an Ed25519 key pair — publishes the public key and downloads the private key to your device",
|
|
"saveToVault": "Save To Credentials",
|
|
"keyPlaceholder": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... user@host",
|
|
"labelPlaceholder": "Label (optional)",
|
|
"add": "Add",
|
|
"importFromCredential": "Or import from a stored credential",
|
|
"keyPublished": "Key published",
|
|
"addKeyFailed": "Failed to add key",
|
|
"generatedSaved": "Key pair generated and saved to your credentials vault. Private key also downloaded.",
|
|
"generatedOnly": "Key pair generated — private key downloaded (shown only once).",
|
|
"generateFailed": "Failed to generate key",
|
|
"imported": "Key imported from credential",
|
|
"importFailed": "Failed to import key",
|
|
"noKeys": "No public keys published yet.",
|
|
"keysTitle": "Published keys",
|
|
"published": "Published",
|
|
"hidden": "Hidden",
|
|
"keyRemoved": "Key removed",
|
|
"removeKeyFailed": "Failed to remove key",
|
|
"updateKeyFailed": "Failed to update key",
|
|
"fromVault": "From credentials vault",
|
|
"linkedToTermixId": "Published via Termix ID",
|
|
"selectCredential": "Select a credential...",
|
|
"import": "Import",
|
|
"caTitle": "Certificate authority",
|
|
"caIntro": "Trust this CA on a server and it accepts any certificate you sign. Rotate to revoke everything at once; certificates also expire on their own.",
|
|
"caEnable": "Enable CA",
|
|
"caEnabled": "CA enabled",
|
|
"caCreateFailed": "Failed to enable CA",
|
|
"caPublicKeyLabel": "CA public key",
|
|
"caTrustLabel": "Trust on a server (run as root)",
|
|
"caRotate": "Rotate",
|
|
"caRotateConfirm": "Rotate the CA? Every certificate it has signed will stop being accepted and must be re-issued.",
|
|
"caRotated": "CA rotated — previous certificates revoked",
|
|
"caRotateFailed": "Failed to rotate CA",
|
|
"caDelete": "Remove CA",
|
|
"caDeleteConfirm": "Remove the certificate authority?",
|
|
"caDeleted": "CA removed",
|
|
"caDeleteFailed": "Failed to remove CA",
|
|
"caValidityLabel": "Cert validity (days)",
|
|
"issueCert": "Certificate",
|
|
"issueCertTooltip": "Issue an SSH certificate for this key, signed by your CA",
|
|
"certIssued": "Certificate issued and downloaded",
|
|
"certIssueFailed": "Failed to issue certificate"
|
|
},
|
|
"credentials": {
|
|
"folders": "Folders",
|
|
"folder": "Folder",
|
|
"password": "Password",
|
|
"key": "Key",
|
|
"sshPrivateKey": "SSH Private Key",
|
|
"upload": "Upload",
|
|
"keyPassword": "Key Password",
|
|
"sshKey": "SSH Key",
|
|
"uploadPrivateKeyFile": "Upload Private Key File",
|
|
"searchCredentials": "Search credentials...",
|
|
"addCredential": "Add Credential",
|
|
"caCertificate": "CA Certificate (-cert.pub)",
|
|
"caCertificateDescription": "Optional: Upload or paste the CA-signed certificate file (e.g. id_ed25519-cert.pub). Required when your SSH server uses certificate-based authorization.",
|
|
"uploadCertFile": "Upload -cert.pub File",
|
|
"clearCert": "Clear",
|
|
"certLoaded": "Certificate loaded",
|
|
"certPublicKeyLabel": "CA Certificate",
|
|
"certTypeLabel": "Certificate type",
|
|
"pasteOrUploadCert": "Paste or upload a -cert.pub certificate...",
|
|
"hasCaCert": "Has CA Certificate",
|
|
"noCaCert": "No CA Certificate",
|
|
"noPublicKeyAvailable": "No public key available. Open the credential editor first.",
|
|
"deployCommandCopied": "Deploy command copied",
|
|
"sortCredentials": "Sort Credentials",
|
|
"sortDefault": "Default Order",
|
|
"sortNameAsc": "Name (A → Z)",
|
|
"sortNameDesc": "Name (Z → A)",
|
|
"sortUsernameAsc": "Username (A → Z)",
|
|
"sortUsernameDesc": "Username (Z → A)",
|
|
"filterCredentials": "Filter Credentials",
|
|
"filterClearAll": "Clear Filters",
|
|
"filterTypeGroup": "Type",
|
|
"filterTypePassword": "Password",
|
|
"filterTypeKey": "SSH Key",
|
|
"filterTagsGroup": "Tags",
|
|
"copyDeployCommand": "Copy deploy command",
|
|
"cloneCredentialAction": "Clone credential",
|
|
"clonedCredential": "Cloned {{name}}",
|
|
"clonedCredentialName": "{{name}} (copy)",
|
|
"shareCredentialAction": "Share credential",
|
|
"sharedBadge": "shared",
|
|
"sharedBy": "Shared by {{owner}}",
|
|
"share": {
|
|
"title": "Share \"{{name}}\"",
|
|
"description": "Recipients get their own encrypted copy of the secrets. It is refreshed whenever the credential changes and removed when the share is revoked.",
|
|
"users": "Users",
|
|
"roles": "Roles",
|
|
"searchPlaceholder": "Search...",
|
|
"permission": "Permission",
|
|
"levelUse": "Use",
|
|
"levelManage": "Manage",
|
|
"levelUseDesc": "Use: attach the credential to hosts and connect. The secret itself stays hidden.",
|
|
"levelManageDesc": "Manage: also edit the credential and share it with others.",
|
|
"expires": "Expires",
|
|
"expiry": {
|
|
"never": "Never",
|
|
"oneDay": "1 day",
|
|
"sevenDays": "7 days",
|
|
"thirtyDays": "30 days"
|
|
},
|
|
"currentAccess": "Shared with",
|
|
"revoke": "Revoke",
|
|
"shared": "Credential shared",
|
|
"shareButton": "Share"
|
|
},
|
|
"deleteCredentialAction": "Delete credential",
|
|
"editCredentialAction": "Edit credential",
|
|
"failedToCloneCredential": "Failed to clone credential",
|
|
"failedToDeleteCredential": "Failed to delete credential",
|
|
"idBadge": "ID",
|
|
"keyBadge": "KEY",
|
|
"passwordBadge": "PWD",
|
|
"renameFolder": "Rename folder",
|
|
"deleteFolder": "Delete folder",
|
|
"deleteCredentialConfirm": "Delete credential \"{{name}}\"?",
|
|
"deletedCredential": "Deleted {{name}}",
|
|
"deploySSHKeyTitle": "Deploy key to host",
|
|
"loadingCredentials": "Loading credentials...",
|
|
"noCredentialsFound": "No credentials found",
|
|
"noCredentialsMatchSearch": "No credentials match your search",
|
|
"addCredentialBtn": "Add Credential",
|
|
"failedToReorder": "Failed to reorder credentials",
|
|
"failedToMoveCredential": "Failed to move credential",
|
|
"sortManual": "Manual (drag to reorder)",
|
|
"customizeSidebar": "Customize Sidebar",
|
|
"customizeSidebarDescription": "Choose how the credential list looks and behaves.",
|
|
"customizeDensityTitle": "Density",
|
|
"densityComfortableDesc": "One credential per row, with extra detail.",
|
|
"densityCompactDesc": "One line per credential, for longer lists.",
|
|
"displayDensityComfortable": "Comfortable",
|
|
"displayDensityCompact": "Compact",
|
|
"customizeBehaviorTitle": "Behavior",
|
|
"showCredentialTags": "Show Tags",
|
|
"showCredentialTagsDesc": "Display tags in the credential list",
|
|
"actionsVisibility": "Credential actions",
|
|
"actionsVisibilityDesc": "When the connection and management buttons on each credential show up",
|
|
"actionsAlways": "Always visible",
|
|
"actionsOnly": "Connect only, rest on click",
|
|
"actionsHover": "Show on hover",
|
|
"actionsClick": "Show on click",
|
|
"customizeSortHint": "Sort order lives in the sort menu in the toolbar.",
|
|
"expandActions": "Expand actions",
|
|
"collapseActions": "Collapse actions",
|
|
"backToHosts": "Back to Hosts",
|
|
"backToCredentials": "Back to Credentials",
|
|
"searchCredentialsPlaceholder": "Search credentials…",
|
|
"deployDialogTitle": "Deploy SSH Key",
|
|
"deployDialogDesc": "Deploy {{name}} to a host's authorized_keys.",
|
|
"targetHostLabel": "Target Host",
|
|
"selectHostOption": "Select a host...",
|
|
"deployingBtn": "Deploying...",
|
|
"deployBtn": "Deploy",
|
|
"keyDeployedSuccess": "Key deployed successfully",
|
|
"failedToDeployKey": "Failed to deploy key",
|
|
"folderRenamedTo": "Folder renamed to \"{{name}}\"",
|
|
"failedToRenameFolder": "Failed to rename folder",
|
|
"arrangeUnlockedSwitchedToManual": "Switched to manual sort so your order sticks",
|
|
"arrangeUnlocked": "Unlock drag to rearrange"
|
|
},
|
|
"homepage": {
|
|
"title": "Homepage",
|
|
"addWidget": "Add Widget",
|
|
"editWidget": "Edit Widget",
|
|
"deleteWidget": "Delete",
|
|
"widgetTypes": "Widget Types",
|
|
"serviceLink": "Service Link",
|
|
"folder": "Folder",
|
|
"clock": "Clock",
|
|
"notes": "Notes",
|
|
"hostStatus": "Host Status",
|
|
"bookmarkList": "Bookmarks",
|
|
"zoomIn": "Zoom In",
|
|
"zoomOut": "Zoom Out",
|
|
"resetView": "Reset View",
|
|
"lockLayout": "Lock Layout",
|
|
"unlockLayout": "Unlock Layout",
|
|
"noWidgets": "Right-click or click + to add your first widget",
|
|
"openFullView": "Open Full View",
|
|
"previewTitle": "Homepage Preview",
|
|
"cancel": "Cancel",
|
|
"save": "Save",
|
|
"title_label": "Title",
|
|
"widgetTitlePlaceholder": "Widget title (optional)",
|
|
"url": "URL",
|
|
"imageUrl": "Custom Image URL",
|
|
"imageUrlHint": "Leave blank to use the site favicon automatically",
|
|
"showImage": "Show Image",
|
|
"description": "Description",
|
|
"color": "Color",
|
|
"icon": "Icon",
|
|
"expanded": "Expanded by default",
|
|
"timezone": "Timezone",
|
|
"invalidTimezone": "Invalid timezone. Use an IANA name such as America/New_York",
|
|
"showSeconds": "Show seconds",
|
|
"format12h": "12-hour",
|
|
"format24h": "24-hour",
|
|
"content": "Content",
|
|
"backgroundColor": "Background Color",
|
|
"host": "Host",
|
|
"showMetrics": "Show Metrics",
|
|
"links": "Links",
|
|
"addLink": "Add Link",
|
|
"linkLabel": "Label",
|
|
"linkUrl": "URL",
|
|
"removeLink": "Remove",
|
|
"categoryLinks": "Links",
|
|
"categoryInfo": "Info",
|
|
"categorySystem": "System",
|
|
"widgetServiceLinkDesc": "A clickable tile linking to a service URL",
|
|
"widgetFolderDesc": "A container to group related widgets",
|
|
"widgetClockDesc": "A live clock with configurable timezone",
|
|
"widgetNotesDesc": "A markdown notes widget",
|
|
"widgetHostStatusDesc": "Shows live CPU, memory and disk for an SSH host",
|
|
"widgetBookmarkListDesc": "A list of quick links",
|
|
"copyLink": "Copy Link",
|
|
"linkCopied": "Link copied!",
|
|
"location": "Location",
|
|
"temperatureUnit": "Temperature Unit",
|
|
"showForecast": "Show 3-day forecast",
|
|
"scrolling": "Allow Scrolling",
|
|
"feedUrl": "Feed URL",
|
|
"maxItems": "Max Items",
|
|
"showDescription": "Show Description",
|
|
"widgetWeatherName": "Weather",
|
|
"widgetWeatherDesc": "Live weather for any location",
|
|
"widgetIframeName": "iFrame Embed",
|
|
"widgetIframeDesc": "Embed any URL in an iframe",
|
|
"widgetRssName": "RSS Feed",
|
|
"widgetRssDesc": "Display items from an RSS or Atom feed",
|
|
"dragToFolder": "Drag widgets here or use + to add",
|
|
"showDisk": "Show Disk Usage",
|
|
"addToFolder": "Add widget to folder",
|
|
"noHostSelected": "No host selected",
|
|
"selectHost": "Select a host...",
|
|
"displayedMetrics": "Displayed Metrics",
|
|
"metricCpu": "CPU",
|
|
"metricMemory": "Memory",
|
|
"metricDisk": "Disk",
|
|
"metricUptime": "Uptime",
|
|
"metricSystem": "System",
|
|
"metricNetwork": "Network",
|
|
"metricProcesses": "Processes",
|
|
"categoryMonitoring": "Monitoring",
|
|
"loading": "Loading...",
|
|
"allClear": "All clear",
|
|
"noPingUrls": "No URLs configured",
|
|
"pingLabel": "Label",
|
|
"addPingUrl": "Add URL",
|
|
"showLatency": "Show Latency",
|
|
"refreshInterval": "Refresh Interval",
|
|
"seconds": "seconds",
|
|
"filterActivityTypes": "Filter Types",
|
|
"filterTypesHint": "Leave empty to show all",
|
|
"showTimestamp": "Show Timestamp",
|
|
"uptimeUnavailable": "Uptime unavailable",
|
|
"uptimeLabel": "Uptime",
|
|
"overviewVersion": "Version",
|
|
"overviewUpdate": "Up to date",
|
|
"overviewUpdateLabel": "Update",
|
|
"overviewUpdateAvailable": "Update available",
|
|
"overviewDatabase": "Database",
|
|
"overviewUptime": "Uptime",
|
|
"noHosts": "No hosts configured",
|
|
"hostGridHosts": "Hosts",
|
|
"hostGridAllHint": "Leave empty to show all hosts",
|
|
"columns": "Columns",
|
|
"showIp": "Show IP Address",
|
|
"connectionType": "Connection Type",
|
|
"layout": "Layout",
|
|
"showStatus": "Show Status",
|
|
"showHostName": "Show Host Name",
|
|
"noDockerActivity": "No Docker activity",
|
|
"noActivity": "No activity",
|
|
"showAcknowledged": "Show Acknowledged",
|
|
"widgetMetricsChartName": "Metrics Chart",
|
|
"widgetMetricsChartDesc": "Historical CPU, memory, disk or network chart for a host",
|
|
"widgetHostGridName": "Host Grid",
|
|
"widgetHostGridDesc": "Grid view of SSH host statuses",
|
|
"widgetPingStatusName": "Ping Status",
|
|
"widgetPingStatusDesc": "HTTP ping status for one or more URLs",
|
|
"widgetRecentActivityName": "Recent Activity",
|
|
"widgetRecentActivityDesc": "Scrollable feed of recent Termix activity",
|
|
"widgetTermixUptimeName": "Termix Uptime",
|
|
"widgetTermixUptimeDesc": "Live uptime counter for the Termix server",
|
|
"widgetSystemOverviewName": "System Overview",
|
|
"widgetSystemOverviewDesc": "Termix version, database health and uptime at a glance",
|
|
"widgetSshQuickConnectName": "SSH Quick Connect",
|
|
"widgetSshQuickConnectDesc": "One-click buttons to open SSH sessions",
|
|
"widgetDockerActivityName": "Docker Activity",
|
|
"widgetDockerActivityDesc": "Recent Docker container events across all hosts",
|
|
"widgetCalendarName": "Calendar",
|
|
"widgetCalendarDesc": "A monthly calendar with today highlighted",
|
|
"widgetCountdownName": "Countdown",
|
|
"widgetCountdownDesc": "Countdown timer to a target date",
|
|
"widgetSearchBarName": "Search Bar",
|
|
"widgetSearchBarDesc": "Quick web search widget",
|
|
"widgetTextBannerName": "Text Banner",
|
|
"widgetTextBannerDesc": "A bold label or section header for the canvas",
|
|
"widgetImageWidgetName": "Image",
|
|
"widgetImageWidgetDesc": "Display an image from a URL",
|
|
"widgetMarkdownNotesName": "Markdown Notes",
|
|
"widgetMarkdownNotesDesc": "Rich notes with inline markdown rendering",
|
|
"widgetCustomApiName": "Custom API",
|
|
"widgetCustomApiDesc": "Fetch and display data from any JSON API",
|
|
"widgetServiceGridName": "Service Grid",
|
|
"widgetServiceGridDesc": "A configurable grid of service tile links",
|
|
"widgetDashboardLinksName": "Dashboard Links",
|
|
"widgetDashboardLinksDesc": "Display your configured service links from the dashboard",
|
|
"widgetSearchLinksName": "Search Shortcuts",
|
|
"widgetSearchLinksDesc": "Quick search shortcut buttons with inline input",
|
|
"widgetLinkTreeName": "Link Tree",
|
|
"widgetLinkTreeDesc": "Grouped sections of links with headings",
|
|
"calMon": "Mo",
|
|
"calTue": "Tu",
|
|
"calWed": "We",
|
|
"calThu": "Th",
|
|
"calFri": "Fr",
|
|
"calSat": "Sa",
|
|
"calSun": "Su",
|
|
"startOnMonday": "Start week on Monday",
|
|
"countdownNoDate": "No target date set",
|
|
"countdownPast": "Event has passed",
|
|
"countdownDays": "days",
|
|
"countdownHours": "hrs",
|
|
"countdownMinutes": "min",
|
|
"countdownSeconds": "sec",
|
|
"countdownLabel": "Label",
|
|
"countdownLabelPlaceholder": "e.g. Launch Day",
|
|
"countdownShowDays": "Show Days",
|
|
"countdownShowHours": "Show Hours",
|
|
"targetDate": "Target Date",
|
|
"searchEngine": "Search Engine",
|
|
"customSearchUrl": "Custom Search URL",
|
|
"searchPlaceholder": "Search...",
|
|
"searchGo": "Go",
|
|
"searchPlaceholderLabel": "Placeholder Text",
|
|
"searchPlaceholderHint": "Text shown inside the search input",
|
|
"openInNewTab": "Open in New Tab",
|
|
"searchQueryPlaceholder": "Enter query...",
|
|
"noSearchShortcuts": "No shortcuts configured",
|
|
"addSearchShortcut": "Add Shortcut",
|
|
"fontSize": "Font Size",
|
|
"textAlign": "Text Align",
|
|
"fontWeight": "Font Weight",
|
|
"clearColor": "Clear Color",
|
|
"imageFit": "Image Fit",
|
|
"imageLinkUrl": "Link URL",
|
|
"noImage": "No image URL set",
|
|
"altText": "Alt Text",
|
|
"altTextPlaceholder": "Describe the image",
|
|
"renderMarkdown": "Render Markdown",
|
|
"displayMode": "Display Mode",
|
|
"displayField": "Display Field",
|
|
"jsonPath": "JSON Path",
|
|
"customApiLabel": "Label",
|
|
"customApiLabelPlaceholder": "e.g. Temperature",
|
|
"customApiUnit": "Unit",
|
|
"customApiNoUrl": "No API URL configured",
|
|
"customApiError": "Failed to fetch",
|
|
"customApiNotArray": "Response is not an array",
|
|
"addService": "Add Service",
|
|
"showLabels": "Show Labels",
|
|
"iconSize": "Icon Size",
|
|
"noDashboardLinks": "No dashboard links configured",
|
|
"noLimit": "No limit",
|
|
"sectionHeading": "Section Heading",
|
|
"addSection": "Add Section",
|
|
"compactMode": "Compact Mode",
|
|
"showDetailed": "Show Detailed",
|
|
"selectHosts": "Select Hosts",
|
|
"allHosts": "All hosts",
|
|
"listLayout": "List",
|
|
"gridLayout": "Grid",
|
|
"terminal": "Terminal",
|
|
"files": "Files",
|
|
"docker": "Docker",
|
|
"range15m": "15 minutes",
|
|
"range1h": "1 hour",
|
|
"range6h": "6 hours",
|
|
"range24h": "24 hours",
|
|
"metricNetRx": "Net Download",
|
|
"metricNetTx": "Net Upload",
|
|
"severityFilter": "Severity Filter",
|
|
"filterAll": "All",
|
|
"accentColor": "Accent Color",
|
|
"widgetSshTerminalName": "SSH Terminal",
|
|
"widgetSshTerminalDesc": "An inline SSH terminal connected to a configured host",
|
|
"sshTerminalNoHost": "No host configured",
|
|
"sshTerminalConnect": "Connect",
|
|
"sshTerminalAutoConnect": "Auto-connect on load",
|
|
"widgetQuickConnectName": "Quick Connect",
|
|
"widgetQuickConnectDesc": "One-click launch buttons for any connection type across your hosts",
|
|
"connectionTypes": "Connection Types",
|
|
"connType_terminal": "Terminal",
|
|
"connType_files": "File Manager",
|
|
"connType_docker": "Docker",
|
|
"connType_host-metrics": "Host Metrics",
|
|
"connType_rdp": "RDP",
|
|
"connType_vnc": "VNC",
|
|
"connType_telnet": "Telnet",
|
|
"widgetFileManagerName": "File Manager",
|
|
"widgetFileManagerDesc": "Embedded SFTP file manager for a configured host",
|
|
"widgetDockerName": "Docker Manager",
|
|
"widgetDockerDesc": "Embedded Docker container manager for a configured host",
|
|
"widgetTunnelName": "Tunnel Manager",
|
|
"widgetTunnelDesc": "Embedded SSH tunnel manager for a configured host",
|
|
"widgetNoHostSelected": "No host configured"
|
|
},
|
|
"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",
|
|
"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)",
|
|
"changeServer": "Change Server",
|
|
"mustIncludeProtocol": "Server URL must start with http:// or https://",
|
|
"allowInvalidCertificate": "Allow invalid certificate",
|
|
"allowInvalidCertificateDesc": "Use only for trusted self-hosted servers with self-signed or IP-address certificates.",
|
|
"useEmbedded": "Use Local Server",
|
|
"embeddedDesc": "Run Termix with the built-in local server (no remote server needed)",
|
|
"embeddedConnecting": "Connecting to local server...",
|
|
"embeddedNotReady": "Local server is not ready yet. Please wait a moment and try again.",
|
|
"localServer": "Local Server",
|
|
"savedServers": "Saved Servers",
|
|
"noSavedServers": "No saved servers",
|
|
"removeServer": "Remove"
|
|
},
|
|
"migrationNotice": {
|
|
"title": "Termix Desktop now runs standalone",
|
|
"body1": "This app used to connect straight to your Termix server. It's been reworked to run fully on its own, storing hosts and credentials locally so it keeps working offline. Two-way sync with a self-hosted Termix server is now optional.",
|
|
"body2": "Your existing hosts and credentials are still on {{url}}. Turn on Remote Sync and reconnect to that server to bring them back and keep both in sync going forward.",
|
|
"dismiss": "Not now",
|
|
"setUpSync": "Set Up Remote Sync"
|
|
},
|
|
"remoteSync": {
|
|
"title": "Remote Sync",
|
|
"description": "Optionally connect this desktop app to a self-hosted Termix server to sync your hosts, credentials, and snippets across devices. The app always works fully offline whether or not you connect.",
|
|
"notConnected": "Not connected",
|
|
"connected": "Connected",
|
|
"connectedTo": "Connected to {{url}}",
|
|
"lastSynced": "Last synced {{time}}",
|
|
"neverSynced": "Never synced",
|
|
"syncError": "Sync error: {{message}}",
|
|
"needsReauth": "Sign-in expired",
|
|
"connectButton": "Connect to Server",
|
|
"disconnectButton": "Disconnect",
|
|
"syncNowButton": "Sync Now",
|
|
"syncing": "Syncing...",
|
|
"syncSuccess": "Remote sync completed",
|
|
"syncUnavailable": "Remote sync could not be started",
|
|
"serverUrl": "Server URL",
|
|
"enterServerUrl": "Please enter a server URL",
|
|
"mustIncludeProtocol": "Server URL must start with http:// or https://",
|
|
"connectionTestFailed": "Could not reach a Termix server at that URL",
|
|
"allowInvalidCertificate": "Allow invalid certificate",
|
|
"allowInvalidCertificateDesc": "Use only for trusted self-hosted servers with self-signed or IP-address certificates.",
|
|
"savedServers": "Saved Servers",
|
|
"removeServer": "Remove",
|
|
"continueButton": "Continue",
|
|
"cancelButton": "Cancel",
|
|
"signInTitle": "Sign in to {{url}}",
|
|
"originTitle": "Connection Origin",
|
|
"originDescription": "Choose where SSH connections originate from by default. This can be overridden per host.",
|
|
"originLocal": "This device (local network)",
|
|
"originRemote": "Remote server",
|
|
"bannerReconnect": "Reconnect",
|
|
"bannerMessage": "Remote sync needs re-authentication"
|
|
},
|
|
"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",
|
|
"updateLinkLabel": "Update available — open the release notes on GitHub",
|
|
"newVersionAvailable": "A new version is available! You are running {{current}}, but {{latest}} is available.",
|
|
"betaVersion": "Beta Version",
|
|
"betaVersionDesc": "You are running {{current}}, which is newer than the latest stable release {{latest}}.",
|
|
"releasedOn": "Released on {{date}}",
|
|
"downloadUpdate": "Download Update",
|
|
"checking": "Checking for updates...",
|
|
"checkUpdates": "Check for Updates",
|
|
"checkingUpdates": "Checking for updates...",
|
|
"updateRequired": "Update Required"
|
|
},
|
|
"common": {
|
|
"close": "Close",
|
|
"minimize": "Minimize",
|
|
"online": "Online",
|
|
"offline": "Offline",
|
|
"unknown": "Unknown",
|
|
"continue": "Continue",
|
|
"maintenance": "Maintenance",
|
|
"degraded": "Degraded",
|
|
"error": "Error",
|
|
"warning": "Warning",
|
|
"unsavedChanges": "Unsaved changes",
|
|
"dismiss": "Dismiss",
|
|
"more": "More",
|
|
"loading": "Loading...",
|
|
"optional": "Optional",
|
|
"connect": "Connect",
|
|
"copied": "Copied",
|
|
"connecting": "Connecting...",
|
|
"updateAvailable": "Update Available",
|
|
"appName": "Termix",
|
|
"openInNewTab": "Open in New Tab",
|
|
"noReleases": "No Releases",
|
|
"updatesAndReleases": "Updates & Releases",
|
|
"newVersionAvailable": "A new version ({{version}}) is available.",
|
|
"failedToFetchUpdateInfo": "Failed to fetch update information",
|
|
"preRelease": "Pre-release",
|
|
"noReleasesFound": "No releases found.",
|
|
"cancel": "Cancel",
|
|
"username": "Username",
|
|
"login": "Login",
|
|
"logout": "Logout",
|
|
"register": "Register",
|
|
"password": "Password",
|
|
"confirmPassword": "Confirm Password",
|
|
"back": "Back",
|
|
"save": "Save",
|
|
"saving": "Saving...",
|
|
"delete": "Delete",
|
|
"rename": "Rename",
|
|
"edit": "Edit",
|
|
"confirm": "Confirm",
|
|
"no": "No",
|
|
"or": "OR",
|
|
"next": "Next",
|
|
"previous": "Previous",
|
|
"refresh": "Refresh",
|
|
"language": "Language",
|
|
"checking": "Checking...",
|
|
"checkingDatabase": "Checking database connection...",
|
|
"checkingAuthentication": "Checking authentication...",
|
|
"backendReconnected": "Server connection restored",
|
|
"connectionDegraded": "Server connection lost, recovering…",
|
|
"reload": "Reload",
|
|
"create": "Create",
|
|
"copy": "Copy",
|
|
"copyFailed": "Failed to copy to clipboard",
|
|
"maximize": "Maximize",
|
|
"restore": "Restore",
|
|
"of": "of",
|
|
"saved": "Saved",
|
|
"deleted": "Deleted",
|
|
"deleteFailed": "Failed to delete",
|
|
"saveFailed": "Failed to save",
|
|
"required": "Required",
|
|
"remove": "Remove",
|
|
"add": "Add",
|
|
"update": "Update"
|
|
},
|
|
"onboarding": {
|
|
"stepCounter": "Step {{current}} of {{total}}",
|
|
"skip": "Skip setup",
|
|
"next": "Next",
|
|
"finish": "Get started",
|
|
"welcomeTitle": "Welcome to Termix",
|
|
"welcomeIntro": "Termix manages your servers from one place. This setup takes about a minute and nothing here is permanent.",
|
|
"welcome_hosts": "Save your servers",
|
|
"welcome_hosts_desc": "Keep every machine you manage in one list.",
|
|
"welcome_terminal": "Connect instantly",
|
|
"welcome_terminal_desc": "Open a terminal in a tab, no separate SSH client.",
|
|
"welcome_files": "Browse and edit files",
|
|
"welcome_files_desc": "Upload, download and edit remote files.",
|
|
"presetTitle": "How much do you want on screen?",
|
|
"presetIntro": "Termix can be as simple or as detailed as you like. Pick a starting point.",
|
|
"presetChangeLater": "You can switch presets or change any single setting later in Settings, under Interface.",
|
|
"appearanceTitle": "Make it yours",
|
|
"appearanceIntro": "Pick a theme, an accent color and your language. All three can be changed later in Settings.",
|
|
"featuresTitle": "What else Termix does",
|
|
"featuresIntro": "Every server you save can be opened in more than a terminal. Here is what is waiting behind the icons on the left.",
|
|
"feature_files": "File manager",
|
|
"feature_files_desc": "Browse, upload, download and edit files over SFTP without leaving the app.",
|
|
"feature_tunnels": "Tunnels",
|
|
"feature_tunnels_desc": "Forward ports through a server to reach services that are not exposed.",
|
|
"featuresRailHint": "Do not need one of these? Hide any icon from the sidebar in Settings, under Navigation.",
|
|
"workflowTitle": "Move around faster",
|
|
"workflowIntro": "A few habits that save the most time once you have a couple of servers.",
|
|
"workflow_palette": "Command palette",
|
|
"workflow_palette_desc": "Jump to any server or action by typing. Tap Shift twice to open it.",
|
|
"workflow_split": "Split screen",
|
|
"workflow_split_desc": "Show up to four tabs side by side to watch logs while you work.",
|
|
"workflow_dock": "Side panel",
|
|
"workflow_dock_desc": "Middle click or right click a sidebar icon to open it as a tab or pin it to the right.",
|
|
"securityTitle": "Keeping your logins safe",
|
|
"securityIntro": "Termix stores credentials for you, so it is worth a minute to see how that works.",
|
|
"security_credentials": "Reusable credentials",
|
|
"security_credentials_desc": "Save a key or password once and attach it to as many servers as you like.",
|
|
"security_twofa": "Two factor and passkeys",
|
|
"security_twofa_desc": "Add TOTP or a passkey to your account in Settings, under Security.",
|
|
"security_identity": "Termix ID",
|
|
"security_identity_desc": "Issue short lived SSH certificates instead of copying keys to every server.",
|
|
"security_sharing": "Sharing",
|
|
"security_sharing_desc": "Give other users access to a server without handing over the password.",
|
|
"securityEncryptionNote": "Credentials are encrypted before they are stored, and only decrypted when a connection needs them.",
|
|
"doneTitle": "You are all set",
|
|
"doneHeading": "Setup complete",
|
|
"doneDesc": "Pick a server from the sidebar to open a terminal, browse its files or see its metrics.",
|
|
"done_settings": "Change anything later",
|
|
"done_settings_desc": "Themes, layout density and which icons show up all live in Settings.",
|
|
"done_rerun": "Want this again?",
|
|
"done_rerun_desc": "Open Settings, go to Interface and choose Run setup to walk through these steps again.",
|
|
"done_desktop": "Desktop app",
|
|
"done_desktop_desc": "Termix runs as a desktop app on Windows, macOS and Linux.",
|
|
"done_desktop_link": "Get the desktop app",
|
|
"done_mobile": "Mobile app",
|
|
"done_mobile_desc": "Take your servers with you on iOS and Android.",
|
|
"done_mobile_link": "Get the mobile app",
|
|
"done_docs": "Full documentation",
|
|
"done_docs_desc": "Guides for every feature, including ones not covered here.",
|
|
"done_docs_link": "Open the docs",
|
|
"done_cli": "Command line tool",
|
|
"done_cli_desc": "Manage your servers from a terminal, and use Termix in your own scripts.",
|
|
"done_cli_link": "Open the CLI docs"
|
|
},
|
|
"nav": {
|
|
"home": "Home",
|
|
"terminal": "Terminal",
|
|
"localTerminal": "Local Terminal",
|
|
"fileManager": "File Manager",
|
|
"serverStats": "Host Metrics",
|
|
"admin": "Admin",
|
|
"termixId": "ID",
|
|
"userProfile": "User Profile",
|
|
"splitScreen": "Split Screen",
|
|
"confirmClose": "Close this active session?",
|
|
"close": "Close",
|
|
"cancel": "Cancel",
|
|
"sshManager": "SSH Manager",
|
|
"cannotSplitTab": "Cannot split this tab",
|
|
"hostTabTitle": "{{username}}@{{ip}}:{{port}}",
|
|
"copyPassword": "Copy Password",
|
|
"copySudoPassword": "Copy Sudo Password",
|
|
"passwordCopied": "Password copied to clipboard",
|
|
"noPasswordAvailable": "No password available",
|
|
"failedToCopyPassword": "Failed to copy password",
|
|
"refreshTab": "Refresh connection",
|
|
"renameTab": "Rename tab",
|
|
"openFileManager": "Open File Manager",
|
|
"dashboard": "Dashboard",
|
|
"homepage": "Homepage",
|
|
"quickConnect": "Quick Connect",
|
|
"sshTools": "SSH Tools",
|
|
"history": "History",
|
|
"openAsTabHint": "Ctrl+click or middle click to open as a tab",
|
|
"openAsTab": "Open as tab",
|
|
"openInRightDock": "Open in right dock",
|
|
"closeRightDock": "Close right dock",
|
|
"toggleRightDock": "Toggle right dock",
|
|
"multiPanelHintTitle": "Work with more than one panel",
|
|
"multiPanelHintBody": "Keep this panel open while the sidebar is used for something else. Two ways to move it:",
|
|
"multiPanelHintTabHow": "Ctrl+click its rail icon, or use the button in this header.",
|
|
"multiPanelHintDockHow": "Right-click its rail icon, or use the panel icon in the tab bar.",
|
|
"sidebarSettings": "Sidebar Settings...",
|
|
"hosts": "Hosts",
|
|
"macros": "Macros",
|
|
"hostManager": "Host Manager",
|
|
"credentials": "Credentials",
|
|
"connections": "Connections",
|
|
"keepSideMenuOpen": "Keep Menu Open",
|
|
"collapseSideMenu": "Collapse Menu",
|
|
"roleAdministrator": "Administrator",
|
|
"roleUser": "User"
|
|
},
|
|
"hosts": {
|
|
"hosts": "Hosts",
|
|
"noHosts": "No SSH Hosts",
|
|
"retry": "Retry",
|
|
"refresh": "Refresh",
|
|
"optional": "Optional",
|
|
"downloadSample": "Download Sample",
|
|
"failedToDeleteHost": "Failed to delete {{name}}",
|
|
"importSkipExisting": "Import (skip existing)",
|
|
"importSSHConfig": "Import from SSH config",
|
|
"connectionDetails": "Connection Details",
|
|
"ssh": "SSH",
|
|
"telnet": "Telnet",
|
|
"port": "Port",
|
|
"username": "Username",
|
|
"folder": "Folder",
|
|
"tags": "Tags",
|
|
"pin": "Pin",
|
|
"addHost": "Add Host",
|
|
"editHost": "Edit Host",
|
|
"cloneHost": "Clone Host",
|
|
"enableTunnel": "Enable Tunnel",
|
|
"enableFileManager": "Enable File Manager",
|
|
"enableDocker": "Enable Docker",
|
|
"defaultPath": "Default Path",
|
|
"connection": "Connection",
|
|
"upload": "Upload",
|
|
"authentication": "Authentication",
|
|
"password": "Password",
|
|
"passwordSaved": "Password saved, type to change",
|
|
"key": "Key",
|
|
"credential": "Credential",
|
|
"none": "None",
|
|
"sshPrivateKey": "SSH Private Key",
|
|
"keyType": "Key Type",
|
|
"uploadFile": "Upload File",
|
|
"tabGeneral": "General",
|
|
"tabSsh": "SSH",
|
|
"tabTerminal": "Terminal",
|
|
"tabStats": "Host Metrics",
|
|
"tabSharing": "Sharing",
|
|
"tabAuthentication": "Authentication",
|
|
"terminal": "Terminal",
|
|
"tunnel": "Tunnel",
|
|
"serverStats": "Host Metrics",
|
|
"status": {
|
|
"available": "Available",
|
|
"reachable": "Reachable, not authenticated",
|
|
"offline": "Offline",
|
|
"monitoringDisabled": "Monitoring disabled",
|
|
"label": "Status"
|
|
},
|
|
"folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully",
|
|
"failedToRenameFolder": "Failed to rename folder",
|
|
"unsavedChangesDescription": "Your host changes have not been saved. Discard them?",
|
|
"keepEditing": "Keep editing",
|
|
"discardChanges": "Discard changes",
|
|
"movedToFolder": "Moved {{count}} host(s) to \"{{folder}}\"",
|
|
"editHostTooltip": "Edit host",
|
|
"behavior": "Behavior",
|
|
"themePreview": "Theme Preview",
|
|
"theme": "Theme",
|
|
"fontFamily": "Font Family",
|
|
"fontSize": "Font Size",
|
|
"letterSpacing": "Letter Spacing",
|
|
"lineHeight": "Line Height",
|
|
"cursorStyle": "Cursor Style",
|
|
"cursorBlink": "Cursor Blink",
|
|
"scrollbackBuffer": "Scrollback Buffer",
|
|
"bellStyle": "Bell Style",
|
|
"rightClickSelectsWord": "Right Click Selects Word",
|
|
"fastScrollModifier": "Fast Scroll Modifier",
|
|
"fastScrollSensitivity": "Fast Scroll Sensitivity",
|
|
"sshAgentForwarding": "SSH Agent Forwarding",
|
|
"backspaceMode": "Backspace Mode",
|
|
"startupSnippet": "Startup Snippet",
|
|
"selectSnippet": "Select snippet",
|
|
"forceKeyboardInteractive": "Force Keyboard-Interactive",
|
|
"overrideCredentialUsername": "Override Credential Username",
|
|
"overrideCredentialUsernameDesc": "Use the username specified above instead of the credential's username",
|
|
"oidcUsernameHint": "Use $oidc.preferred_username to substitute your OIDC login name.",
|
|
"jumpHostChain": "Jump Host Chain",
|
|
"portKnocking": "Port Knocking",
|
|
"addKnock": "Add Port",
|
|
"addProxyNode": "Add Node",
|
|
"proxyNode": "Proxy Node",
|
|
"proxyType": "Proxy Type",
|
|
"quickActions": "Quick Actions",
|
|
"sudoPasswordAutoFill": "Sudo Password Auto-Fill",
|
|
"sudoPassword": "Sudo Password",
|
|
"keepaliveInterval": "Keepalive Interval (ms)",
|
|
"moshCommand": "MOSH Command",
|
|
"environmentVariables": "Environment Variables",
|
|
"addVariable": "Add Variable",
|
|
"docker": "Docker",
|
|
"copyTerminalUrl": "Copy Terminal URL",
|
|
"copyFileManagerUrl": "Copy File Manager URL",
|
|
"copyRemoteDesktopUrl": "Copy Remote Desktop URL",
|
|
"failedToConnect": "Failed to connect to console",
|
|
"connect": "Connect",
|
|
"disconnect": "Disconnect",
|
|
"start": "Start",
|
|
"enableStatusCheck": "Enable Status Check",
|
|
"enableMetrics": "Enable Metrics",
|
|
"bulkUpdateFailed": "Bulk update failed",
|
|
"selectAll": "Select All",
|
|
"deselectAll": "Deselect All",
|
|
"protocols": "Protocols",
|
|
"secureShell": "Secure Shell",
|
|
"addressIp": "Address / IP",
|
|
"friendlyName": "Friendly Name",
|
|
"macAddress": "MAC Address",
|
|
"wolBroadcastAddress": "WoL Broadcast Address",
|
|
"wolBroadcastAddressDesc": "Optional directed broadcast for Docker/routed networks (e.g. 192.168.1.255). Leave empty to use 255.255.255.255.",
|
|
"folderAndAdvanced": "Folder & Advanced",
|
|
"showAdvancedSettings": "Show advanced settings",
|
|
"hideAdvancedSettings": "Hide advanced settings",
|
|
"privateNotes": "Private Notes",
|
|
"privateNotesPlaceholder": "Details about this server...",
|
|
"pinToTop": "Pin to Top",
|
|
"pinToTopDesc": "Always show this host at the top of the list",
|
|
"portKnockingSequence": "Port Knocking Sequence",
|
|
"addKnockBtn": "Add Knock",
|
|
"noPortKnocking": "No port knocking configured.",
|
|
"knockPort": "Knock Port",
|
|
"protocol": "Protocol",
|
|
"delayAfterMs": "Delay After (ms)",
|
|
"useSocks5Proxy": "Use SOCKS5 Proxy",
|
|
"useSocks5ProxyDesc": "Route connection through a proxy server",
|
|
"connectionOrigin": "Connection Origin",
|
|
"connectionOriginDesc": "Where this host's connection originates from. Overrides the desktop app's global default.",
|
|
"connectionOriginDefault": "Use default",
|
|
"connectionOriginLocal": "This device (local network)",
|
|
"connectionOriginRemote": "Remote server",
|
|
"proxyHost": "Proxy Host",
|
|
"proxyPort": "Proxy Port",
|
|
"proxyUsername": "Proxy Username",
|
|
"proxyPassword": "Proxy Password",
|
|
"proxySingleMode": "Single Proxy",
|
|
"proxyChainMode": "Proxy Chain",
|
|
"you": "You",
|
|
"jumpHostChainLabel": "Jump Host Chain",
|
|
"addJumpBtn": "Add Jump",
|
|
"noJumpHosts": "No jump hosts configured.",
|
|
"selectAServer": "Select a server...",
|
|
"sshPort": "SSH Port",
|
|
"authMethod": "Auth Method",
|
|
"authenticationMethod": "Authentication Method",
|
|
"authenticationMethodDesc": "Select the one method Termix will use to authenticate this SSH connection. Other methods are not tried automatically.",
|
|
"storedCredential": "Stored Credential",
|
|
"selectACredential": "Select a credential...",
|
|
"vaultProfile": "Vault Signer Profile",
|
|
"selectAVaultProfile": "Select a Vault profile...",
|
|
"vaultProfileHint": "Settings come from the shared profile; you'll sign in to Vault via OIDC when you connect. No secrets are stored.",
|
|
"vaultNewProfile": "New profile",
|
|
"secretRefHint": "You can paste a 1Password reference (op://vault/item/field) instead of the secret; it is fetched from your secret source when connecting.",
|
|
"secretSourcesManage": "Manage secret sources",
|
|
"secretSourcesTitle": "Secret sources",
|
|
"secretSourcesDesc": "External password managers Termix reads secrets from at connect time. Currently 1Password Connect (self-hosted). The access token is stored encrypted with your data key.",
|
|
"secretSourceNew": "New source",
|
|
"secretSourceUrlLabel": "Connect server URL",
|
|
"secretSourceTokenLabel": "Connect access token",
|
|
"secretSourceTokenKeep": "Leave empty to keep the current token",
|
|
"secretSourceSharedLabel": "Share with all users (admins only; resolves while you are signed in)",
|
|
"secretSourceShared": "shared",
|
|
"secretSourceTest": "Test",
|
|
"secretSourceTestOk": "Connected — {{count}} vault(s) visible",
|
|
"secretSourceTestFailed": "Connection test failed",
|
|
"secretSourceRequired": "Name, server URL and token are required",
|
|
"secretSourceSaved": "Secret source saved",
|
|
"secretSourceDeleted": "Secret source deleted",
|
|
"vaultManageProfiles": "Manage Vault profiles",
|
|
"vaultAddrLabel": "Vault Address",
|
|
"vaultNamespaceLabel": "Namespace",
|
|
"vaultOidcMountLabel": "OIDC Auth Mount",
|
|
"vaultOidcRoleLabel": "OIDC Role",
|
|
"vaultSshMountLabel": "SSH Secrets Mount",
|
|
"vaultSshRoleLabel": "SSH Signer Role",
|
|
"vaultValidPrincipalsLabel": "Valid Principals",
|
|
"vaultKeyTypeLabel": "Ephemeral Key Type",
|
|
"vaultSharedLabel": "Share with all users",
|
|
"vaultCreateProfile": "Create profile",
|
|
"vaultProfileCreated": "Vault profile created",
|
|
"vaultProfileSaved": "Vault profile saved",
|
|
"vaultProfileDeleted": "Vault profile deleted",
|
|
"vaultProfileSaveFailed": "Failed to save Vault profile",
|
|
"vaultProfileDeleteFailed": "Failed to delete Vault profile",
|
|
"vaultSaveProfile": "Save profile",
|
|
"vaultProfileValidationError": "Name, Vault address and SSH signer role are required",
|
|
"vaultNoProfiles": "No Vault profiles yet.",
|
|
"vaultSharedBadge": "shared",
|
|
"keyTypeLabel": "Key Type",
|
|
"keyTypeAuto": "Auto Detect",
|
|
"keyPasteTab": "Paste",
|
|
"keyUploadTab": "Upload",
|
|
"keyFileLoaded": "Key file loaded",
|
|
"keyUploadClick": "Click to upload .pem / .key / .ppk",
|
|
"clearKey": "Clear key",
|
|
"keySaved": "SSH key saved",
|
|
"keyReplaceNotice": "paste a new key below to replace it",
|
|
"keyPassphraseSaved": "Passphrase saved, type to change",
|
|
"replaceKey": "Replace key",
|
|
"docsLink": "View docs",
|
|
"stepcaLabel": "Step CA",
|
|
"stepcaDesc": "Sign in through your identity provider and let your Step CA issue a short-lived SSH certificate for this host. The CA URL, root fingerprint and OIDC provisioner are set by an administrator under Admin Settings.",
|
|
"opksshLabel": "OPKSSH",
|
|
"opksshDesc": "Sign in to this host using your identity provider instead of a password or key. Requires OPKSSH set up on the server.",
|
|
"warpgateLabel": "Warpgate Gateway",
|
|
"warpgateDesc": "This host connects through a Warpgate SSH proxy. Termix will handle the browser-based approval flow automatically after authenticating.",
|
|
"agentLabel": "SSH Agent",
|
|
"agentDesc": "Authenticate using an SSH agent running on the Termix server (Bitwarden, 1Password, gpg-agent, KeeAgent, ssh-agent). The agent must be running on the machine where Termix is hosted.",
|
|
"agentAuthenticationDesc": "Use keys from an SSH agent to authenticate this connection. Leave the socket path empty to use SSH_AUTH_SOCK.",
|
|
"agentSocketPathLabel": "Agent Socket Path",
|
|
"agentSocketPathPlaceholder": "Leave empty to use SSH_AUTH_SOCK",
|
|
"agentSocketPathHint": "Leave empty to auto-detect from the SSH_AUTH_SOCK environment variable, or enter a custom socket path (e.g. /run/user/1000/gnupg/S.gpg-agent.ssh).",
|
|
"agentIdentityLabel": "Agent Identity (Public Key)",
|
|
"agentIdentityPlaceholder": "Leave empty to try all keys from the agent",
|
|
"agentIdentityHint": "Paste a public key (e.g. ssh-ed25519 AAAA...) to only offer that key from the agent. Recommended when the agent holds many keys, to avoid exceeding the server's MaxAuthTries.",
|
|
"shareSshAuthLabel": "Share SSH Authentication",
|
|
"shareSshAuthDesc": "Give recipients encrypted copies of this host's SSH authentication. A recipient's personal credential still takes precedence.",
|
|
"forceKeyboardInteractiveLabel": "Force Keyboard Interactive",
|
|
"forceKeyboardInteractiveShortDesc": "Force manual password entry even if keys are present",
|
|
"allowLegacyAlgorithmsLabel": "Allow Legacy Algorithms",
|
|
"allowLegacyAlgorithmsDesc": "Enable deprecated SSH algorithms (ssh-dss, ssh-rsa, diffie-hellman-group1-sha1, hmac-md5, 3des-cbc) for connections to old devices that cannot be upgraded.",
|
|
"insecure": "Insecure",
|
|
"terminalAppearance": "Terminal Appearance",
|
|
"colorTheme": "Color Theme",
|
|
"fontFamilyLabel": "Font Family",
|
|
"fontFamilyCustomOption": "Custom...",
|
|
"fontFamilyCustomPlaceholder": "Exact font name, e.g. MesloLGS NF",
|
|
"fontFamilyCustomHint": "Pick a bundled font, or choose Custom and type the exact name of a font already installed on your system (e.g. MesloLGS NF, Noto Sans Mono). Termix cannot install fonts for you, install it on your OS first.",
|
|
"fontSizeLabel": "Font Size",
|
|
"cursorStyleLabel": "Cursor Style",
|
|
"letterSpacingPx": "Letter Spacing (px)",
|
|
"lineHeightLabel": "Line Height",
|
|
"bellStyleLabel": "Bell Style",
|
|
"backspaceModeLabel": "Backspace Mode",
|
|
"cursorBlinking": "Cursor Blinking",
|
|
"cursorBlinkingDesc": "Enable blinking animation for the terminal cursor",
|
|
"rightClickSelectsWordLabel": "Right-click Selects Word",
|
|
"rightClickSelectsWordShortDesc": "Select the word under cursor on right-click",
|
|
"macOptionIsMetaLabel": "Option Key Sends Meta",
|
|
"macOptionIsMetaShortDesc": "Disable to type special characters (like @ or |) with the Option/Alt key on macOS instead of sending Meta",
|
|
"backgroundImageLabel": "Background Image URL",
|
|
"backgroundImageDesc": "Optional URL for a terminal background image",
|
|
"backgroundImageOpacityLabel": "Background Image Opacity",
|
|
"customThemeColors": "Custom Colors",
|
|
"customThemeBackground": "Background",
|
|
"customThemeForeground": "Foreground",
|
|
"customThemeCursor": "Cursor",
|
|
"customThemeCursorAccent": "Cursor Accent",
|
|
"customThemeSelection": "Selection",
|
|
"customThemeAnsiColors": "ANSI Colors",
|
|
"customThemeBlack": "Black",
|
|
"customThemeRed": "Red",
|
|
"customThemeGreen": "Green",
|
|
"customThemeYellow": "Yellow",
|
|
"customThemeBlue": "Blue",
|
|
"customThemeMagenta": "Magenta",
|
|
"customThemeCyan": "Cyan",
|
|
"customThemeWhite": "White",
|
|
"customThemeBrightBlack": "Bright Black",
|
|
"customThemeBrightRed": "Bright Red",
|
|
"customThemeBrightGreen": "Bright Green",
|
|
"customThemeBrightYellow": "Bright Yellow",
|
|
"customThemeBrightBlue": "Bright Blue",
|
|
"customThemeBrightMagenta": "Bright Magenta",
|
|
"customThemeBrightCyan": "Bright Cyan",
|
|
"customThemeBrightWhite": "Bright White",
|
|
"customThemeResetTooltip": "Reset to defaults",
|
|
"savedThemesLabel": "Saved Themes",
|
|
"saveAsGlobalTheme": "Save as Global Theme",
|
|
"saveGlobalThemeNamePrompt": "Enter a name for this theme",
|
|
"saveGlobalThemeSuccess": "Theme saved",
|
|
"saveGlobalThemeError": "Failed to save theme",
|
|
"applyGlobalThemeTooltip": "Apply this theme",
|
|
"deleteGlobalThemeTooltip": "Delete this theme",
|
|
"noSavedThemes": "No saved themes yet",
|
|
"syntaxHighlightingLabel": "Syntax Highlighting",
|
|
"syntaxHighlightingDesc": "Colorize terminal output (errors, paths, IPs, timestamps)",
|
|
"syntaxHighlightingCategories": "Highlight Categories",
|
|
"syntaxHighlightingCategoriesDesc": "Choose which types of content to colorize",
|
|
"syntaxCategoryLogLevels": "Log Levels",
|
|
"syntaxCategoryLogLevelsDesc": "error, warn, info, debug, fatal",
|
|
"syntaxCategoryPaths": "File Paths",
|
|
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/file.txt",
|
|
"syntaxCategoryTimestamps": "Timestamps",
|
|
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
|
|
"syntaxCategoryIpAddresses": "IP Addresses",
|
|
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
|
|
"syntaxCategoryUrls": "URLs",
|
|
"syntaxCategoryUrlsDesc": "https://example.com",
|
|
"syntaxCategoryNumbers": "Labeled Numbers",
|
|
"syntaxCategoryNumbersDesc": "port 8080, exit 1, status 404",
|
|
"behaviorAndAdvanced": "Behavior & Advanced",
|
|
"scrollbackBufferLabel": "Scrollback Buffer",
|
|
"scrollbackMaxLines": "Maximum number of lines kept in history",
|
|
"sshAgentForwardingLabel": "SSH Agent Forwarding",
|
|
"sshAgentForwardingShortDesc": "Allow this remote host to use your local SSH agent for onward connections. This is not required for Agent authentication.",
|
|
"useSSHTitleLabel": "Use SSH Window Title",
|
|
"useSSHTitleDesc": "Update the tab title from the shell's window title instead of the host name",
|
|
"enableAutoMosh": "Enable Auto-Mosh",
|
|
"enableAutoMoshDesc": "Prefer Mosh over SSH if available",
|
|
"enableAutoTmux": "Enable Auto-Tmux",
|
|
"enableAutoTmuxDesc": "Keep your shell and anything running in it alive across disconnects and browser restarts by running inside tmux (tmux must be installed on the host)",
|
|
"localEchoLabel": "Local Echo",
|
|
"localEchoDesc": "Predict safe printable keystrokes locally on slow connections. Password prompts and control input are never echoed.",
|
|
"localEchoDefault": "Use global setting",
|
|
"localEchoOff": "Off",
|
|
"localEchoAuto": "Automatic",
|
|
"localEchoOn": "Always on",
|
|
"linkClickBehaviorLabel": "Link Click Behavior",
|
|
"linkClickBehaviorDesc": "Controls what happens when you click a link in the terminal. Use 'Default' to follow the app-level setting.",
|
|
"linkClickBehaviorDefault": "Default (follow app setting)",
|
|
"linkClickBehaviorConfirm": "Show popup to open or copy",
|
|
"linkClickBehaviorDirect": "Open directly",
|
|
"sudoPasswordAutoFillLabel": "Sudo Password Auto-fill",
|
|
"sudoPasswordAutoFillShortDesc": "Automatically provide sudo password when prompted",
|
|
"sudoPasswordAutoFillDesc": "Store a sudo password so host metrics, terminal prompts, and others can run privileged commands automatically.",
|
|
"sudoPasswordLabel": "Sudo Password",
|
|
"sudoPasswordSaved": "Password saved, type to change",
|
|
"environmentVariablesLabel": "Environment Variables",
|
|
"addVariableBtn": "Add Variable",
|
|
"noEnvVars": "No environment variables configured.",
|
|
"fastScrollModifierLabel": "Fast Scroll Modifier",
|
|
"fastScrollSensitivityLabel": "Fast Scroll Sensitivity",
|
|
"moshCommandLabel": "Mosh Command",
|
|
"startupSnippetLabel": "Startup Snippet",
|
|
"keepaliveIntervalLabel": "Keepalive Interval (seconds)",
|
|
"maxKeepaliveMisses": "Max Keepalive Misses",
|
|
"sameHost": "This host (direct tunnel)",
|
|
"bindHost": "Bind Host",
|
|
"connectionToolbar": "Connection Toolbar",
|
|
"showConnectionToolbar": "Show connection toolbar",
|
|
"showConnectionToolbarDesc": "Show the toolbar in this host's SSH, RDP, VNC, and Telnet sessions. You can also hide it temporarily from the toolbar itself.",
|
|
"enableAiAssistant": "Enable AI Assistant",
|
|
"enableAiAssistantDesc": "Allow the AI assistant to help in this host's terminal. Off by default, and still needs AI enabled for your account.",
|
|
"proxmoxLastSyncStatus": {
|
|
"success": "Success"
|
|
},
|
|
"proxmoxGuestsSelected_one": "{{count}} guest — {{selected}} selected",
|
|
"proxmoxGuestsSelected_other": "{{count}} guests — {{selected}} selected",
|
|
"proxmoxImportButton_one": "Import {{count}} host",
|
|
"proxmoxImportButton_other": "Import {{count}} hosts",
|
|
"proxmoxResultSkippedNoIp": "{{count}} skipped (no IP found)",
|
|
"proxmoxStatsUrlCopied": "Proxmox Stats URL copied to clipboard",
|
|
"copyProxmoxStatsUrlAction": "Copy Proxmox Stats URL",
|
|
"statusChecksLabel": "Status Checks",
|
|
"enableStatusChecks": "Enable Status Checks",
|
|
"enableStatusChecksDesc": "Periodically ping this host to verify availability",
|
|
"useGlobalInterval": "Use Global Interval",
|
|
"useGlobalIntervalDesc": "Override with the server-wide status check interval",
|
|
"checkIntervalS": "Check Interval (s)",
|
|
"checkIntervalDesc": "Seconds between each connectivity ping",
|
|
"cpuUsageLabel": "CPU Usage",
|
|
"cpuUsageDesc": "CPU percent, load averages, sparkline graph",
|
|
"memoryLabel": "Memory Usage",
|
|
"memoryDesc": "RAM usage, swap, cached",
|
|
"storageLabel": "Disk Usage",
|
|
"storageDesc": "Disk usage per mount point",
|
|
"networkLabel": "Network Interfaces",
|
|
"networkDesc": "Interface list and bandwidth",
|
|
"uptimeLabel": "Uptime",
|
|
"uptimeDesc": "System uptime and boot time",
|
|
"systemInfoLabel": "System Info",
|
|
"systemInfoDesc": "OS, kernel, hostname, architecture",
|
|
"recentLoginsLabel": "Recent Logins",
|
|
"recentLoginsDesc": "Successful and failed login events",
|
|
"topProcessesLabel": "Top Processes",
|
|
"topProcessesDesc": "PID, CPU%, MEM%, command",
|
|
"listeningPortsLabel": "Listening Ports",
|
|
"listeningPortsDesc": "Open ports with process and state",
|
|
"firewallLabel": "Firewall",
|
|
"firewallDesc": "Firewall, AppArmor, SELinux status",
|
|
"hostSharedSuccessfully": "Host shared successfully",
|
|
"failedToShareHost": "Failed to share host",
|
|
"accessRevoked": "Access revoked",
|
|
"failedToRevokeAccess": "Failed to revoke access",
|
|
"cancelBtn": "Cancel",
|
|
"savingBtn": "Saving...",
|
|
"addHostBtn": "Add Host",
|
|
"hostUpdated": "Host updated",
|
|
"hostCreated": "Host created",
|
|
"failedToSave": "Failed to save host",
|
|
"credentialUpdated": "Credential updated",
|
|
"credentialCreated": "Credential created",
|
|
"failedToSaveCredential": "Failed to save credential",
|
|
"credentialNameRequired": "Please enter a name for the credential",
|
|
"credentialAuthRequired": "Add a password, an SSH key, or both",
|
|
"createCredentialFromHostBtn": "Create Credential",
|
|
"createCredentialFromHostTitle": "Create Credential From Host",
|
|
"createCredentialFromHostDesc": "Create a reusable, shareable credential entry prefilled with this host's current username, password, and/or SSH key.",
|
|
"backToHosts": "Back to Hosts",
|
|
"pinned": "Pinned",
|
|
"noHostsFound": "No hosts found",
|
|
"tryDifferentTerm": "Try a different term",
|
|
"addFirstHost": "Add your first host to get started",
|
|
"noCredentialsFound": "No credentials found",
|
|
"addCredentialBtn": "Add Credential",
|
|
"updateCredentialBtn": "Update Credential",
|
|
"editCredentialAction": "Edit credential",
|
|
"backToHost": "Back to Host",
|
|
"saveCredentialAsNewBtn": "Save as New",
|
|
"saveCredentialAsNewDesc": "Creates a new credential with these changes and assigns it to this host. The original credential is left unchanged.",
|
|
"credentialSavedAsNew": "Saved as a new credential",
|
|
"failedToSaveCredentialAsNew": "Failed to save as a new credential",
|
|
"features": "Features",
|
|
"noFolder": "(No folder)",
|
|
"deleteSelected": "Delete",
|
|
"exitSelection": "Exit selection",
|
|
"importSkip": "Import (skip existing)",
|
|
"importOverwrite": "Import (overwrite)",
|
|
"collapseBtn": "Collapse",
|
|
"importExportBtn": "Import / Export",
|
|
"hostStatusesRefreshed": "Host statuses refreshed",
|
|
"failedToRefreshHosts": "Failed to refresh hosts",
|
|
"movedHostTo": "Moved {{host}} to \"{{folder}}\"",
|
|
"failedToMoveHost": "Failed to move host",
|
|
"deletedFolder": "Deleted folder \"{{name}}\"",
|
|
"failedToDeleteFolder": "Failed to delete folder",
|
|
"deleteAllInFolder": "Delete all hosts in \"{{name}}\"? This cannot be undone.",
|
|
"folderPickerPlaceholder": "No folder",
|
|
"folderPickerSearch": "Search or create (use / for subfolders)...",
|
|
"folderPickerNone": "No folder",
|
|
"folderPickerCreate": "Create \"{{path}}\"",
|
|
"folderPickerEmpty": "No matching folders",
|
|
"parentHost": "Parent host",
|
|
"useFolderInstead": "Use folder instead",
|
|
"useParentHostInstead": "Use parent host instead",
|
|
"parentHostPickerPlaceholder": "No parent host",
|
|
"parentHostPickerSearch": "Search hosts...",
|
|
"parentHostPickerNone": "No parent host",
|
|
"parentHostPickerEmpty": "No matching hosts",
|
|
"collapseSubHosts": "Collapse sub-hosts",
|
|
"expandSubHosts": "Expand sub-hosts",
|
|
"cannotNestUnderDescendant": "Can't nest a host under its own sub-host",
|
|
"movedToParent": "Moved {{count}} host(s) under \"{{parent}}\"",
|
|
"newFolder": "New folder",
|
|
"createFolderTitle": "Create folder",
|
|
"editFolderTitle": "Edit folder",
|
|
"folderDialogDescription": "Choose a name, color, and icon. Use / to nest folders.",
|
|
"folderNameLabel": "Folder name",
|
|
"folderNamePlaceholder": "e.g. Production/Web",
|
|
"folderNestingHint": "Use / to separate levels and create nested folders.",
|
|
"folderNameDuplicate": "A folder with this name already exists here.",
|
|
"folderColor": "Color",
|
|
"folderIcon": "Icon",
|
|
"folderCredential": "Credential",
|
|
"folderCredentialNone": "No credential assigned",
|
|
"folderCredentialHint": "Hosts in this folder that use \"Stored credential\" auth without their own credential selected will inherit this one.",
|
|
"folderPreview": "Preview",
|
|
"folderNameFallback": "Untitled folder",
|
|
"createFolderButton": "Create folder",
|
|
"saveFolderButton": "Save folder",
|
|
"cancel": "Cancel",
|
|
"iconSearchPlaceholder": "Search icons...",
|
|
"openAllSessions": "Open all sessions",
|
|
"editFolder": "Edit folder",
|
|
"deleteFolder": "Delete folder",
|
|
"selectFolder": "Select all hosts in folder",
|
|
"deselectFolder": "Deselect all hosts in folder",
|
|
"folderSaved": "Folder saved",
|
|
"failedToSaveFolder": "Failed to save folder",
|
|
"folderDeleted": "Deleted folder \"{{name}}\"",
|
|
"deleteFolderConfirm": "Delete \"{{name}}\" and its {{count}} host(s)? This cannot be undone.",
|
|
"failedToMoveHosts": "Failed to move hosts",
|
|
"failedToReorder": "Failed to reorder",
|
|
"expandAll": "Expand all folders",
|
|
"collapseAll": "Collapse all folders",
|
|
"moreActions": "More",
|
|
"groupBy": "Group by",
|
|
"GroupByFolder": "Folder",
|
|
"GroupByTag": "Tag",
|
|
"GroupByStatus": "Status",
|
|
"GroupByProtocol": "Protocol",
|
|
"GroupByAuth": "Auth type",
|
|
"groupUngrouped": "Ungrouped",
|
|
"customizeSidebar": "Customize sidebar",
|
|
"customizeSidebarDescription": "Choose how the host list looks and behaves.",
|
|
"customizeDensityTitle": "Density",
|
|
"customizeBehaviorTitle": "Behavior",
|
|
"customizeSortHint": "Sort order and grouping live in the sort and group menus in the toolbar.",
|
|
"densityComfortableDesc": "More detail per host: address, tags, and resource usage.",
|
|
"densityCompactDesc": "One line per host, for longer lists.",
|
|
"display": "Display",
|
|
"displayDensity": "Density",
|
|
"displayDensityComfortable": "Comfortable",
|
|
"displayDensityCompact": "Compact",
|
|
"displayShowTags": "Show tags",
|
|
"displayTrayOnClick": "Open actions on click (instead of hover)",
|
|
"actionsVisibility": "Host action display",
|
|
"actionsVisibilityDesc": "Choose when host actions expand. Select click to restore the former click-to-expand behavior.",
|
|
"actionsAlways": "Always visible",
|
|
"actionsOnly": "Connect only, rest on click",
|
|
"actionsHover": "Show on hover",
|
|
"actionsClick": "Click to expand/collapse",
|
|
"openOnDoubleClick": "Open on double click",
|
|
"openOnDoubleClickDesc": "Require a double click to open a host session instead of a single click",
|
|
"showFolderPaths": "Show folder paths",
|
|
"showFolderPathsDesc": "Show the parent folder path above nested subfolder names. Subfolders stay indented either way.",
|
|
"focusExistingTab": "Focus existing tab",
|
|
"focusExistingTabDesc": "Clicking a host with an open tab switches to it instead of opening a new session. Ctrl/Cmd click, middle click, or \"Open in new tab\" always start a new one.",
|
|
"openInNewTab": "Open in new tab",
|
|
"deletedHost": "Deleted {{name}}",
|
|
"copiedToClipboard": "Copied to clipboard",
|
|
"terminalUrlCopied": "Terminal URL copied",
|
|
"dockerUrlCopied": "Docker URL copied",
|
|
"hostMetricsUrlCopied": "Host Metrics URL copied",
|
|
"rdpUrlCopied": "RDP URL copied",
|
|
"vncUrlCopied": "VNC URL copied",
|
|
"telnetUrlCopied": "Telnet URL copied",
|
|
"remoteDesktopUrlCopied": "Remote Desktop URL copied",
|
|
"expandActions": "Expand actions",
|
|
"collapseActions": "Collapse actions",
|
|
"wakeOnLanAction": "Wake on LAN",
|
|
"wakeOnLanSuccess": "Magic packet sent to {{name}}",
|
|
"wakeOnLanError": "Failed to send magic packet",
|
|
"cloneHostAction": "Clone Host",
|
|
"copyAddress": "Copy Address",
|
|
"copyLink": "Copy Link",
|
|
"copyTerminalUrlAction": "Copy Terminal URL",
|
|
"copyDockerUrlAction": "Copy Docker URL",
|
|
"copyHostMetricsUrlAction": "Copy Host Metrics URL",
|
|
"copyRdpUrlAction": "Copy RDP URL",
|
|
"copyVncUrlAction": "Copy VNC URL",
|
|
"copyTelnetUrlAction": "Copy Telnet URL",
|
|
"copyRemoteDesktopUrlAction": "Copy Remote Desktop URL",
|
|
"deleteCredentialConfirm": "Delete credential \"{{name}}\"?",
|
|
"deletedCredential": "Deleted {{name}}",
|
|
"deleteHostsConfirm": "Delete {{count}} host{{plural}}? This cannot be undone.",
|
|
"movedToRoot": "Moved to root",
|
|
"enableTerminalFeature": "Enable Terminal",
|
|
"disableTerminalFeature": "Disable Terminal",
|
|
"enableFilesFeature": "Enable Files",
|
|
"disableFilesFeature": "Disable Files",
|
|
"enableProxmoxFeature": "Enable Proxmox",
|
|
"disableProxmoxFeature": "Disable Proxmox",
|
|
"addTagsPlaceholder": "Add tags...",
|
|
"authDetails": "Authentication Details",
|
|
"credType": "Type",
|
|
"generateKeyPairDesc": "Generate a new key pair, both private and public keys will be filled automatically.",
|
|
"generatingKey": "Generating...",
|
|
"generateLabel": "Generate {{label}}",
|
|
"uploadFileBtn": "Upload file",
|
|
"keyPassphraseOptional": "Key Passphrase (Optional)",
|
|
"sshPublicKeyOptional": "SSH Public Key (Optional)",
|
|
"publicKeyGenerated": "Public key generated",
|
|
"failedToGeneratePublicKey": "Failed to derive public key",
|
|
"publicKeyCopied": "Public key copied",
|
|
"keyPairGenerated": "{{label}} key pair generated",
|
|
"failedToGenerateKeyPair": "Failed to generate key pair",
|
|
"searchHostsPlaceholder": "Search hosts, addresses, tags…",
|
|
"refreshBtn": "Refresh",
|
|
"addTag": "Add tags...",
|
|
"deleteConfirmBtn": "Delete",
|
|
"deleteHostConfirm": "Delete \"{{name}}\"?",
|
|
"enableAtLeastOneProtocol": "Enable at least one protocol above to configure authentication and connection settings.",
|
|
"keyPassphrase": "Key Passphrase",
|
|
"basicInformation": "Basic Information",
|
|
"authDetailsSection": "Authentication Details",
|
|
"credTypeLabel": "Type",
|
|
"hostsTab": "Hosts",
|
|
"credentialsTab": "Credentials",
|
|
"selectMultiple": "Select multiple",
|
|
"selectHosts": "Select hosts",
|
|
"connectionLabel": "Connection",
|
|
"authenticationLabel": "Authentication",
|
|
"generateKeyPairTitle": "Generate Key Pair",
|
|
"generateKeyPairDescription": "Generate a new key pair, both private and public keys will be filled automatically.",
|
|
"generateFromPrivateKey": "Generate from Private Key",
|
|
"refreshBtn2": "Refresh",
|
|
"exitSelectionTitle": "Exit selection",
|
|
"addHostBtn2": "Add Host",
|
|
"addCredentialBtn2": "Add Credential",
|
|
"checkingHostStatuses": "Checking host statuses...",
|
|
"pinnedSection": "Pinned",
|
|
"hostsExported": "Hosts exported successfully",
|
|
"export": {
|
|
"menuItem": "Export...",
|
|
"title": "Export hosts",
|
|
"scope": "Scope",
|
|
"scopeAll": "All",
|
|
"scopeSelected": "Selected",
|
|
"searchHosts": "Search hosts...",
|
|
"include": "Include",
|
|
"groupConnection": "Connection",
|
|
"groupCredentials": "Credentials",
|
|
"groupNotes": "Notes",
|
|
"groupTags": "Tags & pin",
|
|
"groupProxy": "Proxy",
|
|
"groupJumpHosts": "Jump hosts",
|
|
"groupQuickActions": "Quick actions",
|
|
"groupFeatureFlags": "Feature flags",
|
|
"groupAdvanced": "Advanced config",
|
|
"preview": "Preview",
|
|
"moreHosts": "... {{count}} more hosts",
|
|
"summary": "{{selected}} of {{total}} hosts",
|
|
"credentialsIncluded": "credentials included",
|
|
"credentialsExcluded": "credentials excluded",
|
|
"noneSelected": "No hosts selected",
|
|
"cancel": "Cancel",
|
|
"confirm": "Export",
|
|
"fetchFailed": "Failed to load hosts for export",
|
|
"bulkButton": "Export"
|
|
},
|
|
"sampleDownloaded": "Sample file downloaded",
|
|
"failedToDeleteCredential2": "Failed to delete credential",
|
|
"noFolderOption": "(No folder)",
|
|
"nSelected": "{{count}} selected",
|
|
"featuresMenu": "Features",
|
|
"moveMenu": "Move",
|
|
"connectSelected": "Connect",
|
|
"cancelSelection": "Cancel",
|
|
"deletedCount": "Deleted {{count}} hosts",
|
|
"failedToDeleteCount": "Failed to delete {{count}} hosts",
|
|
"duplicatedHost": "Duplicated \"{{name}}\"",
|
|
"failedToDuplicateHost": "Failed to duplicate host",
|
|
"updatedCount": "Updated {{count}} hosts",
|
|
"friendlyNameLabel": "Friendly Name",
|
|
"descriptionLabel": "Description",
|
|
"loadingHost": "Loading host...",
|
|
"loadingHosts": "Loading hosts...",
|
|
"loadingCredentials": "Loading credentials...",
|
|
"noHostsYet": "No hosts yet",
|
|
"noHostsYetHint": "Add a server to open terminals, browse files and see metrics.",
|
|
"noHostsMatchSearch": "No hosts match your search",
|
|
"hostNotFound": "Host not found",
|
|
"searchHosts": "Search hosts...",
|
|
"sortHosts": "Sort Hosts",
|
|
"sortDefault": "Default Order",
|
|
"sortNameAsc": "Name (A → Z)",
|
|
"sortNameDesc": "Name (Z → A)",
|
|
"sortIpAsc": "IP Address (Asc)",
|
|
"sortIpDesc": "IP Address (Desc)",
|
|
"sortOnlineFirst": "Online First",
|
|
"sortOfflineFirst": "Offline First",
|
|
"sortManual": "Manual (drag to reorder)",
|
|
"sortPinnedFirst": "Pinned First",
|
|
"filterHosts": "Filter Hosts",
|
|
"filterClearAll": "Clear Filters",
|
|
"filterStatusGroup": "Status",
|
|
"filterOnline": "Online",
|
|
"filterOffline": "Offline",
|
|
"filterPinned": "Pinned",
|
|
"filterAuthGroup": "Auth Type",
|
|
"filterAuthPassword": "Password",
|
|
"filterAuthKey": "SSH Key",
|
|
"filterAuthCredential": "Credential",
|
|
"filterAuthNone": "None",
|
|
"filterAuthOpkssh": "OPKSSH",
|
|
"filterAuthStepca": "Step CA",
|
|
"filterProtocolGroup": "Protocol",
|
|
"filterProtocolSsh": "SSH",
|
|
"filterFeaturesGroup": "Features",
|
|
"filterFeatureTerminal": "Terminal",
|
|
"filterFeatureFileManager": "File Manager",
|
|
"filterTagsGroup": "Tags",
|
|
"connectRdp": "RDP",
|
|
"connectVnc": "VNC",
|
|
"connectTelnet": "Telnet",
|
|
"editHostAction": "Edit Host",
|
|
"moreOptions": "More options",
|
|
"shareHost": "Share Host",
|
|
"shareHostTitle": "Share: {{name}}",
|
|
"shareFolder": "Share Folder",
|
|
"shareFolderTitle": "Share folder: {{name}}",
|
|
"folderSharedSuccessfully": "Shared {{count}} host(s) in folder",
|
|
"failedToShareFolder": "Failed to share folder",
|
|
"sharing": {
|
|
"loadError": "Failed to load sharing data. Please try again.",
|
|
"shareWithSection": "Share with",
|
|
"usersTab": "Users",
|
|
"rolesTab": "Roles",
|
|
"searchPlaceholder": "Search users or roles...",
|
|
"noMatches": "No matches found",
|
|
"permissionLevelLabel": "Permission level",
|
|
"levels": {
|
|
"connect": {
|
|
"label": "Connect",
|
|
"description": "Open sessions only: terminal, remote desktop, file manager, tunnels and Docker. No access to the host configuration."
|
|
},
|
|
"view": {
|
|
"label": "View",
|
|
"description": "Connect, plus see the host configuration. Secrets are never shown."
|
|
},
|
|
"edit": {
|
|
"label": "Edit",
|
|
"description": "View, plus modify non-authentication host settings. The owner's SSH authentication stays private and owner-only."
|
|
},
|
|
"manage": {
|
|
"label": "Manage",
|
|
"description": "Edit, plus share the host with others, change permission levels and revoke access."
|
|
}
|
|
},
|
|
"expiryLabel": "Access expiry",
|
|
"expiry": {
|
|
"never": "Never",
|
|
"oneHour": "1 hour",
|
|
"oneDay": "24 hours",
|
|
"sevenDays": "7 days",
|
|
"thirtyDays": "30 days",
|
|
"custom": "Custom"
|
|
},
|
|
"customHoursPlaceholder": "Hours until access expires",
|
|
"shareButton": "Share",
|
|
"shareWithCount": "Share ({{count}})",
|
|
"currentAccess": "Current access",
|
|
"noAccessEntries": "This host has not been shared yet",
|
|
"folderRulesTitle": "Applies to hosts added later",
|
|
"folderRulesHint": "These shares stay on the folder: a host created in or moved into it (or a subfolder) gets the same access automatically. Removing a rule only stops future inheritance.",
|
|
"folderRuleRemove": "Stop inheriting",
|
|
"folderShareSummary": "Shared {{shared}} of {{total}} host(s) in this folder",
|
|
"grantedBy": "Granted by",
|
|
"expires": "Expires",
|
|
"expired": "Expired",
|
|
"never": "Never",
|
|
"revoke": "Revoke",
|
|
"accessUpdated": "Access updated",
|
|
"accessUpdateFailed": "Failed to update access",
|
|
"sharedBadge": "Shared",
|
|
"sharedBadgeTooltip": "Shared by {{owner}} ({{level}} access)",
|
|
"viewOnlyBanner": "This host is shared with you by {{owner}} with view access. The configuration is read-only.",
|
|
"sharedEditBanner": "This host is shared with you by {{owner}} with edit access. Changes apply to the real host; authentication references can only be changed by the owner.",
|
|
"ownerOnlyControl": "Only the host owner can change this",
|
|
"ownerAuthPrivate": "The host owner's SSH authentication is private. Use “Set personal SSH authentication” from the host menu to choose your own credential.",
|
|
"ownerAuthShared": "The host owner has shared SSH authentication for this host. You can use it or choose your own credential from “Set personal SSH authentication.”",
|
|
"authOverrideAction": "Set personal SSH authentication",
|
|
"authOverrideActionProtocol": "Set personal {{protocol}} authentication",
|
|
"authOverrideTitle": "Personal SSH authentication",
|
|
"authOverrideTitleProtocol": "Personal {{protocol}} authentication",
|
|
"authOverrideDescriptionPrivate": "The host owner's SSH credentials stay private. Choose one of your saved credentials for connections to {{host}}.",
|
|
"authOverrideDescriptionShared": "Use the authentication shared by the host owner, or replace it with one of your saved credentials for connections to {{host}}.",
|
|
"authOverrideCredentialLabel": "Authentication credential",
|
|
"useSharedAuthentication": "Use shared host authentication",
|
|
"noPersonalCredential": "No personal credential",
|
|
"authOverrideNoCredentials": "You do not have any saved SSH credentials yet. Create one in Credentials to connect to hosts that require authentication.",
|
|
"authOverrideRequired": "This host requires one of your saved credentials before you can connect.",
|
|
"authOverridePrivateHint": "This credential is private to you. The host owner and other recipients cannot see or use it.",
|
|
"authOverrideSaved": "Personal SSH authentication saved",
|
|
"authOverrideCleared": "Personal SSH authentication removed",
|
|
"authOverrideClearedToShared": "Using shared host authentication",
|
|
"authOverrideLoadError": "Failed to load your SSH authentication. Please try again.",
|
|
"authOverrideSaveError": "Failed to save your SSH authentication"
|
|
},
|
|
"guac": {
|
|
"noCredential": "No credential (direct credentials below)",
|
|
"authTypeDirect": "Direct",
|
|
"authTypeCredential": "Credential",
|
|
"authTypeNone": "None",
|
|
"recordingPath": "Recording Path",
|
|
"recordingName": "Recording Name",
|
|
"saveHostFirst": "Save the host first.",
|
|
"sharingOptionsAfterSave": "Sharing options are available after the host has been saved.",
|
|
"permissionLevel": "Permission Level",
|
|
"typeHeader": "Type",
|
|
"targetHeader": "Target",
|
|
"permissionHeader": "Permission",
|
|
"cancelBtn": "Cancel",
|
|
"savingBtn": "Saving...",
|
|
"updateHostBtn": "Update Host",
|
|
"addHostBtn": "Add Host"
|
|
},
|
|
"arrangeUnlockedSwitchedToManual": "Switched to manual sort so your order sticks",
|
|
"dragToRearrange": "Drag to rearrange",
|
|
"arrangeUnlocked": "Unlock drag to rearrange",
|
|
"webUiBindHostUnreachable": "Your browser cannot reach 127.0.0.1 on the machine running Termix, so this endpoint will not load. Use an address that machine answers on, such as 0.0.0.0.",
|
|
"webUiBindHostSharesSessionCookie": "From this browser, the forward would be reached at the same hostname Termix is served from, so the tunnelled service would receive your Termix session. Cookies ignore the port. This endpoint will refuse to open here; it works from the Termix desktop app, or when Termix is opened at localhost.",
|
|
"webUiErrorLabelRequired": "Endpoint {{row}} needs a label.",
|
|
"webUiErrorLabelDuplicate": "Each endpoint needs a different name.",
|
|
"webUiErrorPortRange": "Endpoint {{row}} needs a port between 1 and 65535.",
|
|
"webUiErrorPathInvalid": "Endpoint {{row}} has an invalid path. Use a path like /admin.",
|
|
"copyViewUrlAction": "Copy {{name}} link",
|
|
"filterAuthAgent": "SSH Agent",
|
|
"filterAuthVault": "Vault",
|
|
"filterAuthTailscale": "Tailscale",
|
|
"authTypeNeedsPlugin": "This host uses {{type}}, which needs the {{plugin}} plugin. Turn it on to connect.",
|
|
"authTypeUnknown": "This host uses {{type}}, which no enabled plugin provides.",
|
|
"authFieldsAfterSave": "Save the host first, then fill in these fields."
|
|
},
|
|
"commandPalette": {
|
|
"searchPlaceholder": "Search hosts, commands, or settings...",
|
|
"quickActions": "Quick Actions",
|
|
"navigation": "Navigation",
|
|
"orShortcut": "or",
|
|
"hostManager": "Host Manager",
|
|
"hostManagerDesc": "Manage, add, or edit hosts",
|
|
"addNewHost": "Add New Host",
|
|
"addNewHostDesc": "Register a new host",
|
|
"adminSettings": "Admin Settings",
|
|
"adminSettingsDesc": "Configure system preferences and users",
|
|
"userProfile": "User Profile",
|
|
"userProfileDesc": "Manage your account and preferences",
|
|
"addCredential": "Add Credential",
|
|
"addCredentialDesc": "Store SSH keys or passwords",
|
|
"snippets": "Snippets",
|
|
"runSnippetDesc": "Run in the active terminal tab",
|
|
"noSnippetsFound": "No snippets found matching \"{{search}}\"",
|
|
"recentActivity": "Recent Activity",
|
|
"serversAndHosts": "Servers & Hosts",
|
|
"noHostsFound": "No hosts found matching \"{{search}}\"",
|
|
"links": "Links",
|
|
"navigate": "Navigate",
|
|
"select": "Select",
|
|
"toggleWith": "Toggle with",
|
|
"pluginActions": "From plugins"
|
|
},
|
|
"splitScreen": {
|
|
"paneEmpty": "Pane {{index}} - empty",
|
|
"noTabAssigned": "No tab assigned",
|
|
"focusedPane": "Active pane"
|
|
},
|
|
"connections": {
|
|
"noConnections": "No connections",
|
|
"noConnectionsDesc": "Open a terminal, file manager, or remote desktop to see connections here",
|
|
"connectedFor": "Connected for {{duration}}",
|
|
"connected": "Connected",
|
|
"disconnected": "Disconnected",
|
|
"closeTab": "Close tab",
|
|
"closeConnection": "Close connection",
|
|
"forgetTab": "Forget",
|
|
"removeBackground": "Remove",
|
|
"reconnect": "Reconnect",
|
|
"reopenTab": "Reopen",
|
|
"sectionOpen": "Open",
|
|
"sectionBackground": "Background",
|
|
"backgroundDesc": "Sessions persist for {{minutes}} minutes after disconnect and can be reconnected.",
|
|
"persisted": "Persisted in background",
|
|
"expiresIn": "Expires in {{duration}}",
|
|
"search": "Search connections...",
|
|
"noSearchResults": "No connections match your search",
|
|
"rename": "Rename session",
|
|
"sectionSharedWithMe": "Shared with me",
|
|
"sharedBy": "Shared by {{username}}",
|
|
"join": "Join",
|
|
"sharedSessionLabel": "{{hostName}} (shared)"
|
|
},
|
|
"sessionSharing": {
|
|
"permissionLevel": {
|
|
"readOnly": "Read-only",
|
|
"readWrite": "Read-write"
|
|
}
|
|
},
|
|
"terminal": {
|
|
"connect": "Connect to Host",
|
|
"clear": "Clear",
|
|
"paste": "Paste",
|
|
"connected": "Connected",
|
|
"clipboardWriteFailed": "Failed to copy to clipboard. Make sure the page is served over HTTPS or localhost.",
|
|
"clipboardReadFailed": "Failed to read from clipboard. Make sure clipboard permissions are granted.",
|
|
"tmuxDetach": "Detach from tmux session",
|
|
"terminalTitle": "Terminal - {{host}}",
|
|
"terminalWithPath": "Terminal - {{host}}:{{path}}",
|
|
"runTitle": "Running {{command}} - {{host}}",
|
|
"totpRequired": "Two-Factor Authentication Required",
|
|
"totpCodeLabel": "Verification Code",
|
|
"totpVerify": "Verify",
|
|
"mfaPromptRequired": "Authentication Required",
|
|
"mfaPushRequired": "Push Authentication Required",
|
|
"mfaMenuPlaceholder": "Enter your response",
|
|
"mfaCodeOrPushPlaceholder": "Code or \"push\"",
|
|
"mfaWaitingApproval": "Waiting for approval on your device...",
|
|
"mfaSendRequest": "Send Request",
|
|
"warpgateAuthRequired": "Warpgate Authentication Required",
|
|
"warpgateSecurityKey": "Security Key",
|
|
"warpgateAuthUrl": "Authentication URL",
|
|
"warpgateOpenBrowser": "Open in Browser",
|
|
"warpgateContinue": "I've Completed Authentication",
|
|
"certAuthRequired": "{{provider}} Sign-in Required",
|
|
"opksshAuthRequired": "OPKSSH Authentication Required",
|
|
"opksshAuthDescription": "Complete authentication in your browser to continue. This session will remain valid for 24 hours.",
|
|
"opksshOpenBrowser": "Open Browser to Authenticate",
|
|
"opksshWaitingForAuth": "Waiting for authentication in browser...",
|
|
"opksshAuthenticating": "Processing authentication...",
|
|
"opksshSignInWith": "Sign in with {{provider}}",
|
|
"sudoPasswordPopupTitle": "Insert Password?",
|
|
"connectionLogTitle": "Connection Log",
|
|
"connectionLogCopy": "Copy logs to clipboard",
|
|
"connectionLogEmpty": "No connection logs yet",
|
|
"connectionLogWaiting": "Waiting for connection logs...",
|
|
"connectionLogCopied": "Connection logs copied to clipboard",
|
|
"connectionLogCopyFailed": "Failed to copy logs to clipboard",
|
|
"split": {
|
|
"splitTab": "Split Tab",
|
|
"addToSplit": "Add to Split",
|
|
"removeFromSplit": "Remove from Split"
|
|
}
|
|
},
|
|
"transfer": {
|
|
"copyToHost": "Copy to host…",
|
|
"moveToHost": "Move to host…",
|
|
"copyItemsToHost": "Copy {{count}} items to host…",
|
|
"moveItemsToHost": "Move {{count}} items to host…",
|
|
"noHostsConnected": "No other file-manager hosts available.",
|
|
"noHostsConnectedHint": "Add another SSH host with File Manager enabled in Host Manager.",
|
|
"selectDestinationHost": "Select destination host",
|
|
"destinationPath": "Destination path",
|
|
"recentDestinations": "Recent destinations",
|
|
"collapseRecentDestinations": "Collapse recent destinations",
|
|
"expandRecentDestinations": "Expand recent destinations",
|
|
"browseFolders": "Browse destination folders",
|
|
"browseDestination": "Browse or enter path",
|
|
"confirmCopy": "Copy",
|
|
"confirmMove": "Move",
|
|
"transferring": "Transferring…",
|
|
"progressVerifying": "Verifying file integrity…",
|
|
"progressBenchmarking": "Selecting the fastest transfer route…",
|
|
"compressing": "Compressing…",
|
|
"extracting": "Extracting…",
|
|
"transferringItems": "Transferring {{current}} of {{total}} items…",
|
|
"transferSuccess": "Transfer complete",
|
|
"transferError": "Transfer failed",
|
|
"transferPartial": "Transfer completed with {{count}} errors",
|
|
"transferPartialHint": "Could not transfer: {{paths}}",
|
|
"itemsSummary": "{{count}} items",
|
|
"destMustBeDirectory": "Destination must be a directory for multi-item transfers",
|
|
"selectThisFolder": "Select this folder",
|
|
"browsePathWillBeCreated": "This folder does not exist yet. It will be created when the transfer starts.",
|
|
"browsePathError": "Could not open this path on the destination host.",
|
|
"goUp": "Go up",
|
|
"copyFolderToHost": "Copy folder to host…",
|
|
"moveFolderToHost": "Move folder to host…",
|
|
"hostReady": "Ready",
|
|
"hostConnecting": "Connecting…",
|
|
"hostDisconnected": "Not connected",
|
|
"hostAuthRequired": "Authentication required — open File Manager on this host first",
|
|
"hostConnectionFailed": "Connection failed",
|
|
"metricsTitle": "Transfer timings",
|
|
"metricsPrepare": "Prepare destination: {{duration}}",
|
|
"metricsCompress": "Compress on source: {{duration}}",
|
|
"metricsHopSourceRead": "Source → server: {{throughput}}",
|
|
"metricsHopDestSftpWrite": "Server → dest (SFTP): {{throughput}}",
|
|
"metricsHopDestLocalWrite": "Server → dest (local): {{throughput}}",
|
|
"metricsTransfer": "End-to-end: {{throughput}} ({{duration}})",
|
|
"metricsExtract": "Extract on destination: {{duration}}",
|
|
"metricsVerify": "SHA-256 verified: {{duration}}",
|
|
"metricsRouteBenchmark": "Route probe — direct: {{direct}}, relay: {{relay}}",
|
|
"metricsSourceDelete": "Remove from source: {{duration}}",
|
|
"metricsTotal": "Total: {{duration}}",
|
|
"progressCompressing": "Compressing on source host…",
|
|
"progressExtracting": "Extracting on destination…",
|
|
"progressTransferring": "Transferring data…",
|
|
"progressReconnecting": "Reconnecting…",
|
|
"parallelSegmentsLabel": "Parallel transfer lanes",
|
|
"parallelSegmentsOption": "{{count}} lanes",
|
|
"parallelSegmentsHint": "Large files are split into 256 MB chunks. Multiple lanes use separate connections (like starting several transfers) for higher total throughput.",
|
|
"progressTotalSpeed": "{{speed}} total ({{lanes}} lanes)",
|
|
"progressTransferringItems": "Transferring files ({{current}} of {{total}})…",
|
|
"progressBytes": "{{transferred}} / {{total}}",
|
|
"progressItems": "{{current}} / {{total}} files",
|
|
"sourceNotDeletedPartial": "Source files kept (partial transfer)",
|
|
"jumpHostLimitation": "Both hosts must be reachable from the Termix server. Direct host-to-host routing is not supported.",
|
|
"cancel": "Cancel",
|
|
"methodLabel": "Transfer method",
|
|
"methodAuto": "Auto",
|
|
"methodTar": "Tar archive",
|
|
"methodItemSftp": "Per-file SFTP",
|
|
"methodAutoHint": "Picks tar or per-file SFTP based on file count, size, and compressibility. Single files always use streaming SFTP.",
|
|
"methodTarHint": "Compress on source, transfer one archive, extract on destination. Requires tar on both Unix hosts.",
|
|
"methodItemSftpHint": "Transfer each file individually over SFTP. Works on all hosts including Windows.",
|
|
"methodPreviewLoading": "Calculating transfer method…",
|
|
"methodPreviewError": "Could not preview transfer method. The server will still pick a method when you start.",
|
|
"methodPreviewWillUseTar": "Will use: Tar archive",
|
|
"methodPreviewWillUseItemSftp": "Will use: Per-file SFTP",
|
|
"methodPreviewScanSummary": "{{fileCount}} files, {{totalSize}} total (scanned on source host).",
|
|
"methodItemSftpLimitation": "Each file uses the same SFTP stream as a single-file copy, one after another. Progress is combined across all files, so the bar moves slowly during large files.",
|
|
"methodReason": {
|
|
"user_item_sftp": "You chose per-file SFTP.",
|
|
"user_tar": "You chose tar archive.",
|
|
"tar_unavailable": "Tar is not available on one or both hosts — per-file SFTP will be used instead.",
|
|
"windows_host": "A Windows host is involved — tar is not used.",
|
|
"auto_multi_large": "Auto: multiple files including a large file ({{largestSize}}) with compressible data — tar bundles into one transfer.",
|
|
"auto_single_large_in_archive": "Auto: one large file ({{largestSize}}) in this set — per-file SFTP.",
|
|
"auto_many_incompressible": "Auto: mostly incompressible data — per-file SFTP.",
|
|
"auto_many_files": "Auto: many files ({{fileCount}}) — tar reduces per-file overhead.",
|
|
"auto_default": "Auto: per-file SFTP for this set."
|
|
},
|
|
"progressCancel": "Cancel",
|
|
"progressCancelling": "Cancelling…",
|
|
"progressStalled": "Stalled",
|
|
"resumedHint": "Reconnected to an active transfer started in another window.",
|
|
"transferCancelled": "Transfer cancelled",
|
|
"transferCancelledCopyHint": "Partial files may remain on the destination.",
|
|
"transferCancelledMoveHint": "Partial files may remain on the destination. Source files were not removed.",
|
|
"cleanupDestFiles": "Clean up destination",
|
|
"cleanupDestFilesSuccess": "Removed partial files from the destination",
|
|
"cleanupDestFilesPartial": "Some partial files could not be removed",
|
|
"cleanupDestFilesNothing": "Nothing to clean up on the destination",
|
|
"cleanupDestFilesError": "Cleanup failed",
|
|
"retryTransfer": "Retry",
|
|
"retryTransferError": "Retry failed",
|
|
"transferFailedRetryHint": "Partial data was kept on the destination. Retry will resume when the connection is back."
|
|
},
|
|
"tunnels": {
|
|
"connect": "Connect",
|
|
"disconnect": "Disconnect",
|
|
"bindIp": "Local IP",
|
|
"remoteAddress": "Remote Address",
|
|
"endpointSshConfig": "Endpoint SSH Configuration",
|
|
"clientTunnel": "Client Tunnel",
|
|
"addClientTunnel": "Add Client Tunnel",
|
|
"start": "Start",
|
|
"stop": "Stop",
|
|
"typeServerLocalDesc": "Current host to endpoint.",
|
|
"typeServerRemoteDesc": "Endpoint back to current host.",
|
|
"typeClientLocalDesc": "Local computer to endpoint.",
|
|
"typeClientRemoteDesc": "Endpoint back to local computer.",
|
|
"typeClientDynamicDesc": "SOCKS on local computer.",
|
|
"typeDynamicDesc": "Forward SOCKS5 CONNECT traffic through SSH",
|
|
"maxRetriesDescription": "Maximum amount of retry attempts.",
|
|
"retryIntervalDescription": "Time to wait between retry attempts.",
|
|
"local": "Local",
|
|
"remote": "Remote"
|
|
},
|
|
"cardGrid": {
|
|
"dragToMove": "Drag to move",
|
|
"dragToResize": "Drag to resize",
|
|
"changeWidth": "Change width",
|
|
"removeCard": "Remove {{label}}",
|
|
"addCard": "Add",
|
|
"columns": "Columns",
|
|
"empty": "No cards. Use Add below to place cards."
|
|
},
|
|
"auth": {
|
|
"tagline": "Self-hosted SSH and remote desktop management",
|
|
"loginTitle": "Welcome back",
|
|
"registerTitle": "Create Account",
|
|
"forgotPassword": "Forgot Password?",
|
|
"rememberMe": "Remember Device for 30 Days (includes TOTP)",
|
|
"noAccount": "Don't have an account?",
|
|
"hasAccount": "Already have an account?",
|
|
"twoFactorAuth": "Two-Factor Authentication",
|
|
"enterCode": "Enter verification code",
|
|
"backupCode": "Or use backup code",
|
|
"verifyCode": "Verify Code",
|
|
"redirectingToApp": "Redirecting to app...",
|
|
"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.",
|
|
"passphraseRequired": "Passphrase Required",
|
|
"passphraseRequiredDescription": "The SSH key is encrypted. Please enter the passphrase to unlock it.",
|
|
"back": "Back",
|
|
"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.",
|
|
"loginWithProvider": "Login with {{name}}",
|
|
"orContinueWith": "or continue with",
|
|
"ldapUsername": "LDAP Username",
|
|
"ldapPassword": "LDAP Password",
|
|
"ldapSignIn": "Sign In",
|
|
"ldapLoginFailed": "LDAP login failed",
|
|
"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:",
|
|
"newPassword": "New Password",
|
|
"confirmNewPassword": "Confirm Password",
|
|
"enterNewPassword": "Enter your new password for user:",
|
|
"signUp": "Sign Up",
|
|
"desktopApp": "Desktop App",
|
|
"loggingInToDesktopApp": "Logging in to the desktop app",
|
|
"loadingServer": "Loading server...",
|
|
"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.",
|
|
"passwordLoginDisabledDesc": "Password login is disabled. Use a passkey or an external authentication provider.",
|
|
"signInWithPasskey": "Sign in with passkey",
|
|
"passkeyLoginFailed": "Passkey login failed",
|
|
"attemptsRemaining": "{{count}} attempts remaining",
|
|
"confirmResetDataWipe": "This account has not logged in since the encryption upgrade, so its stored data cannot be recovered without the old password. Resetting will permanently delete its hosts, credentials and snippets. Continue?",
|
|
"loginWithSso": "Sign in with SSO",
|
|
"loginWithLdap": "Sign in with LDAP",
|
|
"password": "Password",
|
|
"totpFactor": "Authenticator code",
|
|
"backupCodeHint": "You can also enter one of your backup codes.",
|
|
"secondFactorUnavailable": "Your account uses a second factor that is not available right now. Contact an admin to reset it.",
|
|
"secondFactorNoUI": "This second factor cannot be shown on this screen. Contact an admin."
|
|
},
|
|
"hostKey": {
|
|
"verifyNewHost": "Verify SSH Host Key",
|
|
"keyChangedWarning": "SSH Host Key Changed",
|
|
"firstConnectionTitle": "First time connecting to this host",
|
|
"firstConnectionDescription": "The authenticity of this host cannot be established. Verify the fingerprint matches what you expect.",
|
|
"keyChangedDescription": "The host key for this server has changed since your last connection. This could indicate a security issue.",
|
|
"previousKey": "Previous Key",
|
|
"newFingerprint": "New Fingerprint",
|
|
"fingerprint": "Fingerprint",
|
|
"verifyInstructions": "If you trust this host, click Accept to continue and save this fingerprint for future connections.",
|
|
"securityWarning": "Security Warning",
|
|
"acceptAndContinue": "Accept & Continue",
|
|
"acceptNewKey": "Accept New Key & Continue"
|
|
},
|
|
"errors": {
|
|
"databaseConnection": "Could not connect to the database",
|
|
"embeddedServerFailed": "Termix's local server could not start",
|
|
"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",
|
|
"silentSigninOidcUnavailable": "Silent sign-in was requested, but OIDC login is not available.",
|
|
"failedUserInfo": "Failed to get user info after login",
|
|
"oidcAuthFailed": "OIDC authentication failed",
|
|
"invalidAuthUrl": "Invalid authorization URL received from backend",
|
|
"requiredField": "This field is required",
|
|
"minLength": "Minimum length is {{min}}",
|
|
"passwordMismatch": "Passwords do not match",
|
|
"passwordLoginDisabled": "Username/password login is currently disabled",
|
|
"sessionExpired": "Session expired - please log in again",
|
|
"totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.",
|
|
"totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.",
|
|
"resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.",
|
|
"resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again.",
|
|
"authTokenSaveFailed": "Failed to save authentication token",
|
|
"authTokenMissing": "The server did not return a new authentication token. Please sign in again.",
|
|
"authTokenRejected": "The remote server rejected the new authentication token",
|
|
"keyringUnavailable": "Signed in, but the session could not be stored: this system has no keyring available to encrypt it with. Start a Secret Service (such as gnome-keyring or KWallet) and sign in again.",
|
|
"failedToLoadServer": "Failed to load server",
|
|
"remoteServerRequired": "Remote server required. Connect a remote server in Settings to use this connection type."
|
|
},
|
|
"messages": {
|
|
"registrationDisabled": "New account registration is currently disabled by an admin. Please log in or contact an administrator.",
|
|
"userNotAllowed": "Your account is not authorized to register. Please contact an administrator.",
|
|
"databaseConnectionFailed": "Failed to connect to the database server",
|
|
"embeddedServerPortInUse": "Port {{port}} is already in use by another program. This is usually a Termix Docker container or a leftover Termix process from a previous session. Close it, then restart Termix.",
|
|
"embeddedServerPortInUseUnknownPort": "One of the ports Termix needs is already in use by another program. Close whatever is using it, then restart Termix.",
|
|
"embeddedServerCrashed": "The local server stopped unexpectedly. Restart Termix, and check the desktop log if this keeps happening.",
|
|
"resetCodeSent": "Reset code sent to Docker logs",
|
|
"codeVerified": "Code verified successfully",
|
|
"passwordResetSuccess": "Password reset successfully",
|
|
"loginSuccess": "Login successful",
|
|
"registrationSuccess": "Registration successful"
|
|
},
|
|
"profile": {
|
|
"c2sTunnelConfigDesc": "Local desktop tunnels targeting configured SSH hosts.",
|
|
"c2sTunnelPresetsDesc": "Save this desktop client's local tunnel list as a named server preset, or load a preset back into this client."
|
|
},
|
|
"placeholders": {
|
|
"language": "Language",
|
|
"keyPassword": "key password",
|
|
"pastePrivateKey": "Paste your private key here...",
|
|
"enterPassword": "Enter your password"
|
|
},
|
|
"dashboard": {
|
|
"title": "Dashboard",
|
|
"loading": "Loading dashboard...",
|
|
"github": "GitHub",
|
|
"support": "Support",
|
|
"discord": "Discord",
|
|
"docs": "Docs",
|
|
"donate": "Donate",
|
|
"serverOverview": "Server Overview",
|
|
"version": "Version",
|
|
"upToDate": "Up to Date",
|
|
"updateAvailable": "Update Available",
|
|
"beta": "Beta",
|
|
"uptime": "Uptime",
|
|
"database": "Database",
|
|
"healthy": "Healthy",
|
|
"error": "Error",
|
|
"totalHosts": "Total Hosts",
|
|
"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",
|
|
"customizeLayout": "Customize Dashboard",
|
|
"dashboardSettings": "Dashboard Settings",
|
|
"enableDisableCards": "Enable/Disable Cards",
|
|
"resetLayout": "Reset to Default",
|
|
"serverOverviewCard": "Server Overview",
|
|
"recentActivityCard": "Recent Activity",
|
|
"networkGraphCard": "Network Graph",
|
|
"quickActionsCard": "Quick Actions",
|
|
"serverStatsCard": "Server Stats",
|
|
"panelMain": "Main",
|
|
"panelSide": "Side",
|
|
"justNow": "just now",
|
|
"serviceLinks": "Service Links",
|
|
"homepagePreview": "Homepage Preview",
|
|
"activityFileManager": "File manager"
|
|
},
|
|
"donation": {
|
|
"title": "Enjoying Termix?",
|
|
"body": "Termix is free and open source, built and maintained by a two-person team in our spare time. If it's replaced a commercial tool you'd otherwise be paying for, a donation helps cover hosting costs and keeps development going. As of now, donations are crypto only.",
|
|
"milestones": "Donations also help fund the time to research and learn what's needed to build features like SAML and Kubernetes support. See the progress on the donate page.",
|
|
"cta": "Donate",
|
|
"dismiss": "Maybe later"
|
|
},
|
|
"dashboardTab": {
|
|
"stable": "STABLE",
|
|
"hostsOnline": "Hosts Online",
|
|
"activeTunnels": "Active Tunnels",
|
|
"registerNewServer": "Register a new server",
|
|
"storeSshKeysOrPasswords": "Store SSH keys or passwords",
|
|
"manageUsersAndRoles": "Manage users and roles",
|
|
"manageYourAccount": "Manage your account",
|
|
"hostStatus": "Host Status",
|
|
"noHostsConfigured": "No hosts configured",
|
|
"online": "ONLINE",
|
|
"offline": "OFFLINE",
|
|
"checking": "CHECKING",
|
|
"onlineLower": "Online",
|
|
"add": "Add:",
|
|
"commandPalette": "Command Palette",
|
|
"done": "Done",
|
|
"editModeInstructions": "Drag cards to reorder · Drag the column divider to resize columns · Drag the bottom edge of a card to resize its height · Trash to remove",
|
|
"empty": "Empty",
|
|
"clear": "Clear",
|
|
"serviceLinksTitle": "Service Links",
|
|
"serviceLinksEmpty": "No service links yet",
|
|
"serviceLinksAddLabel": "Label",
|
|
"serviceLinksAddUrl": "URL",
|
|
"serviceLinksAdd": "Add",
|
|
"serviceLinksLabelPlaceholder": "My Service",
|
|
"serviceLinksUrlPlaceholder": "http://192.168.1.10:8080",
|
|
"serviceLinksInvalidUrl": "Enter a valid web address",
|
|
"serviceLinksAddFailed": "Failed to add service link",
|
|
"viewServerDetails": "View server details"
|
|
},
|
|
"admin": {
|
|
"sectionGeneral": "General",
|
|
"sectionOidc": "OIDC",
|
|
"sectionSso": "SSO Providers",
|
|
"ssoAddProvider": "Add Provider",
|
|
"ssoDocsLink": "View docs",
|
|
"ssoProviderDocsLink": "View docs",
|
|
"ssoNoProviders": "No SSO providers configured.",
|
|
"ssoProviderName": "Display Name",
|
|
"ssoProviderType": "Provider Type",
|
|
"ssoDeleteProvider": "Delete Provider",
|
|
"ssoDeleteConfirm": "Delete this provider? Associated users will be unable to login.",
|
|
"ssoTypeOidc": "OIDC",
|
|
"ssoTypeLdap": "LDAP",
|
|
"ssoTypeGithub": "GitHub",
|
|
"ssoTypeGoogle": "Google",
|
|
"ssoEnabled": "Enabled",
|
|
"ssoDisabled": "Disabled",
|
|
"ssoSaveProvider": "Save Provider",
|
|
"ssoTestConnection": "Test Connection",
|
|
"ssoEditProvider": "Edit Provider",
|
|
"ldapHost": "LDAP Host",
|
|
"ldapPort": "Port",
|
|
"ldapUseTls": "Use TLS (LDAPS)",
|
|
"ldapBindDn": "Bind DN",
|
|
"ldapBindPassword": "Bind Password",
|
|
"ldapUserSearchBase": "User Search Base",
|
|
"ldapUserSearchFilter": "User Search Filter",
|
|
"ldapUsernameAttr": "Username Attribute",
|
|
"ldapDisplayNameAttr": "Display Name Attribute",
|
|
"ldapGroupSearchBase": "Group Search Base",
|
|
"ldapAdminGroup": "Admin Group",
|
|
"ldapAllowedUsers": "Allowed Users",
|
|
"sectionUsers": "Users",
|
|
"sectionSessions": "Sessions",
|
|
"sectionRoles": "Roles",
|
|
"sectionDatabase": "Database",
|
|
"sectionApiKeys": "API Keys",
|
|
"sectionAuditLog": "Audit Log",
|
|
"sectionSsl": "SSL / Let's Encrypt",
|
|
"sectionBranding": "White Label",
|
|
"brandingAppName": "Application Name",
|
|
"brandingAppNameDesc": "Shown on the login screen and browser tab. Leave empty to use \"Termix\".",
|
|
"brandingTagline": "Tagline",
|
|
"brandingTaglineDesc": "Shown under the application name on the login screen. Leave empty to use the default tagline.",
|
|
"brandingLogo": "Logo",
|
|
"brandingLogoDesc": "PNG, JPEG or WEBP, up to 750 KB. Replaces the default icon on the login screen and browser tab.",
|
|
"brandingLogoUpload": "Upload logo",
|
|
"brandingLogoReset": "Reset to default",
|
|
"brandingLogoInvalid": "Invalid image. Use a PNG, JPEG or WEBP file up to 750 KB.",
|
|
"brandingSaved": "Branding settings saved",
|
|
"brandingSaveFailed": "Failed to save branding settings",
|
|
"sslDescription": "Automatically issue and renew a trusted SSL certificate from Let's Encrypt. Requires a public domain and port 80 or DNS access.",
|
|
"sslDocsLink": "View SSL docs",
|
|
"sslDomain": "Domain",
|
|
"sslDomainPlaceholder": "termix.example.com",
|
|
"sslDomainDesc": "The public domain name for the certificate.",
|
|
"sslEmail": "Email",
|
|
"sslEmailPlaceholder": "admin@example.com",
|
|
"sslEmailDesc": "Contact email for Let's Encrypt notifications and account.",
|
|
"sslChallengeType": "Challenge Type",
|
|
"sslChallengeTypeDesc": "How to prove domain ownership to Let's Encrypt.",
|
|
"sslChallengeHttp": "HTTP (webroot) - requires port 80 accessible from the internet",
|
|
"sslChallengeDns": "DNS (Cloudflare) - requires a Cloudflare API token",
|
|
"sslCloudflareToken": "Cloudflare API Token",
|
|
"sslCloudflareTokenPlaceholder": "Enter token...",
|
|
"sslCloudflareTokenDesc": "Scoped token with Zone:DNS:Edit permission for your domain.",
|
|
"sslCertStatus": "Certificate Status",
|
|
"sslCertStatusNone": "No certificate",
|
|
"sslCertStatusValid": "Valid",
|
|
"sslCertStatusExpiring": "Expiring soon",
|
|
"sslCertStatusExpired": "Expired",
|
|
"sslCertExpiresAt": "Expires {{date}}",
|
|
"sslLastIssued": "Last issued {{date}}",
|
|
"sslRequestCert": "Issue / Renew Certificate",
|
|
"sslRequestCertLoading": "Requesting certificate...",
|
|
"sslRequestCertSuccess": "Certificate issued and installed successfully",
|
|
"sslRequestCertFailed": "Certificate request failed",
|
|
"sslSave": "Save Settings",
|
|
"sslSaved": "SSL settings saved",
|
|
"sslSaveFailed": "Failed to save SSL settings",
|
|
"sslRequiresDomain": "Domain and email are required",
|
|
"sslInfoNote": "After issuing or uploading a certificate, Termix will automatically enable HTTPS on SSL_PORT (default 8443) in addition to the existing HTTP port. Make sure that port is published/mapped to this container so it is reachable.",
|
|
"sslManualOption": "Manual (upload certificate)",
|
|
"sslManualCert": "Certificate (PEM)",
|
|
"sslManualCertPlaceholder": "-----BEGIN CERTIFICATE-----",
|
|
"sslManualKey": "Private Key (PEM)",
|
|
"sslManualKeyPlaceholder": "-----BEGIN PRIVATE KEY-----",
|
|
"sslManualDesc": "Paste your existing certificate and private key, including a full chain if required by your CA.",
|
|
"sslManualUpload": "Upload & Install Certificate",
|
|
"sslManualUploadLoading": "Uploading certificate...",
|
|
"sslManualUploadSuccess": "Certificate uploaded and installed successfully",
|
|
"sslManualUploadFailed": "Certificate upload failed",
|
|
"sslManualRequiresFields": "Certificate and private key are required",
|
|
"auditLogTotal": "{{total}} total entries",
|
|
"auditLogEmpty": "No audit log entries found",
|
|
"auditLogSuccess": "Success",
|
|
"auditLogFailed": "Failed",
|
|
"auditLogClearFilters": "Clear Filters",
|
|
"auditLogPage": "Page {{page}} of {{totalPages}} ({{total}} total)",
|
|
"auditLogIp": "IP",
|
|
"auditLogResourceId": "Resource ID",
|
|
"auditLogFilterUser": "User",
|
|
"auditLogFilterAction": "Action",
|
|
"auditLogFilterResourceType": "Resource Type",
|
|
"auditLogFilterStatus": "Status",
|
|
"auditLogFilterFrom": "From",
|
|
"auditLogFilterTo": "To",
|
|
"auditLogFilterAll": "All",
|
|
"allowRegistration": "Allow User Registration",
|
|
"allowRegistrationDesc": "Let new users self-register with a username and password",
|
|
"allowPasswordLogin": "Allow Password Login",
|
|
"allowPasswordLoginDesc": "Username/password login",
|
|
"oidcAutoProvision": "OIDC Auto-Provision",
|
|
"oidcAutoProvisionDesc": "Auto-create accounts for OIDC/SSO users on first login (independent of the registration toggle)",
|
|
"secondFactorAfterExternalLogin": "Ask for a second factor after external logins (SSO, GitHub, Google, LDAP)",
|
|
"secondFactorAfterExternalLoginDesc": "Off, an enrolled second factor is only asked for after password and other local logins, same as before. On, it is asked for after every login method, including SSO and LDAP.",
|
|
"oidcSilentLoginDefault": "Silent OIDC Login by Default",
|
|
"oidcSilentLoginDefaultDesc": "Automatically redirect to OIDC login on every visit, skipping the login form entirely",
|
|
"oidcSilentLoginDefaultLockedDesc": "This setting is locked by the OIDC_SILENT_LOGIN_DEFAULT environment variable and cannot be changed here.",
|
|
"allowPasswordReset": "Allow Password Reset",
|
|
"allowPasswordResetDesc": "Reset code via Docker logs",
|
|
"analyticsEnabled": "Share Anonymous Usage Statistics",
|
|
"analyticsEnabledDesc": "Sends an anonymous daily count of users, hosts, and feature usage to help improve Termix. No personal data or connection details are ever included.",
|
|
"analyticsEnabledLockedDesc": "This setting is locked by the ENABLE_TELEMETRY environment variable and cannot be changed here.",
|
|
"updateAnalyticsFailed": "Failed to update analytics setting",
|
|
"auditForwardingTitle": "Forward to SIEM",
|
|
"auditForwardingDesc": "Ship a copy of every audit entry to an external collector as NDJSON. Local logs stay the source of truth.",
|
|
"auditForwardingEnvNotice": "An environment variable also configures forwarding; the URL saved here takes precedence.",
|
|
"auditForwardingToken": "Bearer token (optional)",
|
|
"auditForwardingTokenStored": "Bearer token (stored)",
|
|
"auditForwardingSaved": "Audit forwarding settings saved",
|
|
"auditForwardingSaveError": "Failed to save audit forwarding settings",
|
|
"sessionTimeout": "Session Timeout",
|
|
"hours": "hours",
|
|
"sessionTimeoutRange": "Min 1h · Max 720h",
|
|
"monitoringDefaults": "Monitoring Defaults",
|
|
"statusCheck": "Status Check",
|
|
"sec": "sec",
|
|
"logLevel": "Log Level",
|
|
"oidcDescription": "Configure OpenID Connect for SSO. Fields marked * are required.",
|
|
"oidcDocsLink": "View docs",
|
|
"oidcClientId": "Client ID",
|
|
"oidcClientSecret": "Client Secret",
|
|
"oidcAuthUrl": "Authorization URL",
|
|
"oidcIssuerUrl": "Issuer URL",
|
|
"oidcTokenUrl": "Token URL",
|
|
"oidcUserIdentifier": "User Identifier Path",
|
|
"oidcDisplayName": "Display Name Path",
|
|
"oidcScopes": "Scopes",
|
|
"oidcUserinfoUrl": "Override Userinfo URL",
|
|
"oidcAllowedUsers": "Allowed Users",
|
|
"oidcAllowedUsersDesc": "One email per line. Leave empty to allow all.",
|
|
"oidcAdminGroup": "Admin Group",
|
|
"oidcAdminGroupDesc": "Users in this group are granted admin. Leave empty to disable group sync.",
|
|
"oidcGroupClaim": "Group Claim",
|
|
"oidcGroupClaimDesc": "Optional. The claim path that contains the user's groups. Defaults to groups, roles, then group. Use this for providers with a custom claim (e.g. Zitadel).",
|
|
"oidcCaCert": "Custom CA Certificate",
|
|
"oidcCaCertDesc": "Optional. PEM-encoded CA certificate for OIDC providers using a private or self-signed CA. Leave empty to use the system trust store.",
|
|
"removeOidc": "Remove",
|
|
"usersCount": "{{count}} users",
|
|
"searchUsers": "Search users...",
|
|
"noUsers": "No users",
|
|
"noUsersMatch": "No users match your search",
|
|
"pageOf": "Page {{page}} of {{total}}",
|
|
"createUser": "Create",
|
|
"newRole": "New Role",
|
|
"roleName": "Name",
|
|
"roleDisplayName": "Display Name",
|
|
"roleDescription": "Description",
|
|
"rolesCount": "{{count}} roles",
|
|
"createRole": "Create",
|
|
"creating": "Creating...",
|
|
"exportDatabase": "Export Database",
|
|
"exportDatabaseDesc": "Download a portable SQLite backup of all hosts, credentials, and settings",
|
|
"export": "Export",
|
|
"exporting": "Exporting...",
|
|
"importDatabase": "Import Database",
|
|
"importDatabaseDesc": "Restore from a portable .sqlite backup on any database backend",
|
|
"importDatabaseSelected": "Selected: {{name}}",
|
|
"selectFile": "Select File",
|
|
"changeFile": "Change",
|
|
"import": "Import",
|
|
"importing": "Importing...",
|
|
"apiKeysCount": "{{count}} keys",
|
|
"apiKeysDocsLink": "View docs",
|
|
"apiKeysCliHint": "Use an API key with the Termix CLI to manage servers from your terminal.",
|
|
"apiKeysCliLink": "View CLI docs",
|
|
"newApiKey": "New API Key",
|
|
"apiKeyCreatedWarning": "Key created - copy it now, it won't be shown again.",
|
|
"apiKeyName": "Name",
|
|
"apiKeyUser": "User",
|
|
"apiKeySelectUser": "Select a user...",
|
|
"apiKeyExpiresAt": "Expires At",
|
|
"createKey": "Create Key",
|
|
"apiKeyNoExpiry": "No expiry",
|
|
"revokedBadge": "REVOKED",
|
|
"authTypeDual": "Dual Auth",
|
|
"authTypeOidc": "OIDC",
|
|
"authTypeLocal": "Local",
|
|
"adminStatusAdministrator": "Administrator",
|
|
"adminStatusRegularUser": "Regular User",
|
|
"adminBadge": "ADMIN",
|
|
"systemBadge": "SYS",
|
|
"customBadge": "CUSTOM",
|
|
"youBadge": "YOU",
|
|
"sessionsActive": "{{count}} active",
|
|
"sessionActive": "Active: {{time}}",
|
|
"sessionExpires": "Exp: {{time}}",
|
|
"revokeAll": "All",
|
|
"revokeAllSessionsSuccess": "All sessions for user revoked",
|
|
"revokeAllSessionsFailed": "Failed to revoke sessions",
|
|
"revokeSessionFailed": "Failed to revoke session",
|
|
"addRole": "Add role",
|
|
"noCustomRoles": "No custom roles defined",
|
|
"removeRoleFailed": "Failed to remove role",
|
|
"assignRoleFailed": "Failed to assign role",
|
|
"deleteRoleFailed": "Failed to delete role",
|
|
"userAdminAccess": "Administrator",
|
|
"userAdminAccessDesc": "Full access to all admin settings",
|
|
"userRoles": "Roles",
|
|
"revokeAllUserSessions": "Revoke All Sessions",
|
|
"revokeAllUserSessionsDesc": "Force re-login on all devices",
|
|
"revoke": "Revoke",
|
|
"deleteUserWarning": "Deleting this user is permanent.",
|
|
"deleteUser": "Delete {{username}}",
|
|
"deleting": "Deleting...",
|
|
"deleteUserFailed": "Failed to delete user",
|
|
"deleteUserSuccess": "User \"{{username}}\" deleted",
|
|
"deleteRoleSuccess": "Role \"{{name}}\" deleted",
|
|
"revokeKeySuccess": "Key \"{{name}}\" revoked",
|
|
"revokeKeyFailed": "Failed to revoke key",
|
|
"copiedToClipboard": "Copied to clipboard",
|
|
"done": "Done",
|
|
"createUserTitle": "Create User",
|
|
"createUserDesc": "Create a new local account.",
|
|
"createUserUsername": "Username",
|
|
"createUserPassword": "Password",
|
|
"createUserPasswordHint": "Minimum 6 characters.",
|
|
"createUserEnterUsername": "Enter username",
|
|
"createUserEnterPassword": "Enter password",
|
|
"createUserSubmit": "Create User",
|
|
"editUserTitle": "Manage User: {{username}}",
|
|
"editUserDesc": "Edit roles, admin status, sessions, and account settings.",
|
|
"editUserUsername": "Username",
|
|
"editUserAuthType": "Auth Type",
|
|
"editUserAdminStatus": "Admin Status",
|
|
"editUserUserId": "User ID",
|
|
"linkAccountTitle": "Link Accounts",
|
|
"linkAccountDesc": "Merge the OIDC account {{username}} with an existing local account.",
|
|
"linkAccountDescLocal": "Link a local account {{username}} with an existing OIDC-only account.",
|
|
"linkAccountWarningTitle": "This will:",
|
|
"linkAccountEffect1": "Delete the OIDC-only account",
|
|
"linkAccountEffect2": "Add OIDC login to the target account",
|
|
"linkAccountEffect3": "Allow both OIDC and password login",
|
|
"linkAccountTargetUsername": "Local Account Username",
|
|
"linkAccountTargetPlaceholder": "Enter the local account username to link to",
|
|
"linkAccountOidcUsername": "OIDC Account Username",
|
|
"linkAccountOidcPlaceholder": "Enter the OIDC-only account username to merge in",
|
|
"linkAccountOidcNotFound": "No OIDC-only account found with that username",
|
|
"linkAccounts": "Link Accounts",
|
|
"linkAccountSuccess": "Accounts linked successfully",
|
|
"linkAccountFailed": "Failed to link accounts",
|
|
"linkAccountInProgress": "Linking...",
|
|
"unlinkAccountTitle": "Unlink OIDC",
|
|
"unlinkAccountDesc": "Remove OIDC authentication from {{username}}. They will only be able to log in with their password.",
|
|
"unlinkAccountWarning": "This will remove OIDC login from this account. The user must have a password set to continue logging in.",
|
|
"unlinkAccount": "Unlink OIDC",
|
|
"unlinkAccountInProgress": "Unlinking...",
|
|
"unlinkAccountSuccess": "OIDC unlinked successfully",
|
|
"unlinkAccountFailed": "Failed to unlink OIDC",
|
|
"saving": "Saving...",
|
|
"updateRegistrationFailed": "Failed to update registration setting",
|
|
"updatePasswordLoginFailed": "Failed to update password login setting",
|
|
"cannotDisablePasswordLoginWithTotp": "Cannot disable password login while 2FA is enabled for one or more users. Disable 2FA first.",
|
|
"updateOidcAutoProvisionFailed": "Failed to update OIDC auto-provision setting",
|
|
"updateSecondFactorAfterExternalLoginFailed": "Failed to update second factor setting",
|
|
"updateOidcSilentLoginDefaultFailed": "Failed to update silent OIDC login setting",
|
|
"updatePasswordResetFailed": "Failed to update password reset setting",
|
|
"sessionTimeoutRange2": "Session timeout must be between 1 and 720 hours",
|
|
"sessionTimeoutSaved": "Session timeout saved",
|
|
"sessionTimeoutSaveFailed": "Failed to save session timeout",
|
|
"monitoringIntervalInvalid": "Invalid interval values",
|
|
"monitoringSaved": "Monitoring settings saved",
|
|
"monitoringSaveFailed": "Failed to save monitoring settings",
|
|
"logLevelUpdateFailed": "Failed to update log level",
|
|
"oidcSaved": "OIDC configuration saved",
|
|
"oidcSaveFailed": "Failed to save OIDC config",
|
|
"oidcRemoved": "OIDC configuration removed",
|
|
"oidcRemoveFailed": "Failed to remove OIDC config",
|
|
"createUserRequired": "Username and password are required",
|
|
"createUserPasswordTooShort": "Password must be at least 6 characters",
|
|
"createUserSuccess": "User \"{{username}}\" created",
|
|
"createUserFailed": "Failed to create user",
|
|
"updateAdminStatusFailed": "Failed to update admin status",
|
|
"allSessionsRevoked": "All sessions revoked",
|
|
"revokeSessionsFailed": "Failed to revoke sessions",
|
|
"manageUserData": "Manage user data",
|
|
"backToUsers": "Back to users",
|
|
"manageTabAccount": "Account",
|
|
"manageTabHosts": "Hosts",
|
|
"manageTabCredentials": "Credentials",
|
|
"manageTabSnippets": "Snippets",
|
|
"manageTabSessions": "Sessions",
|
|
"manageTabDanger": "Danger",
|
|
"manageEditorBack": "Back to {{username}}'s data",
|
|
"dataLockedBadge": "LOCKED",
|
|
"dataLockedNotice": "{{username}}'s data stays locked until they next log in. Their hosts, credentials and snippets cannot be viewed or edited until then.",
|
|
"resetPasswordTitle": "Reset Password",
|
|
"resetPasswordOidcOnly": "This user signs in through an external provider and has no password.",
|
|
"resetPasswordPlaceholder": "New password",
|
|
"resetPasswordBtn": "Reset",
|
|
"resetPasswordWorking": "Resetting...",
|
|
"resetPasswordSuccess": "Password reset",
|
|
"resetPasswordSuccessWiped": "Password reset. The user's encrypted data was wiped.",
|
|
"resetPasswordFailed": "Failed to reset password",
|
|
"resetPasswordConfirmWipe": "{{username}} has not logged in since the encryption upgrade, so their data cannot be recovered. Resetting now will delete their hosts, credentials and snippets. Continue?",
|
|
"totpSectionTitle": "Two-Factor Authentication",
|
|
"totpStatusEnabled": "TOTP is enabled for this user",
|
|
"totpStatusDisabled": "TOTP is not enabled for this user",
|
|
"disableTotp": "Disable",
|
|
"disableTotpConfirm": "Disable two-factor authentication for {{username}}? They will be able to log in with only their password.",
|
|
"totpDisabledSuccess": "TOTP disabled",
|
|
"totpDisableFailed": "Failed to disable TOTP",
|
|
"manageApiKeys": "API Keys",
|
|
"apiKeyNamePlaceholder": "Key name",
|
|
"apiKeyCopyNotice": "Copy this key now, it won't be shown again.",
|
|
"noApiKeysForUser": "No API keys",
|
|
"apiKeyDeleteFailed": "Failed to delete API key",
|
|
"exportUserData": "Data Export",
|
|
"exportUserDataDesc": "Download this user's hosts, credentials and file manager data as JSON. Secrets are decrypted.",
|
|
"exportUserDataSuccess": "User data exported",
|
|
"exportUserDataFailed": "Failed to export user data",
|
|
"hostsCount": "{{count}} hosts",
|
|
"addHostForUser": "Add Host",
|
|
"noHostsForUser": "This user has no hosts",
|
|
"connectToHost": "Connect",
|
|
"deleteHostConfirm": "Delete host \"{{name}}\" belonging to {{username}}?",
|
|
"hostDeletedSuccess": "Host deleted",
|
|
"hostDeleteFailed": "Failed to delete host",
|
|
"credentialsCount": "{{count}} credentials",
|
|
"addCredentialForUser": "Add Credential",
|
|
"noCredentialsForUser": "This user has no credentials",
|
|
"deleteCredentialConfirm": "Delete credential \"{{name}}\" belonging to {{username}}?",
|
|
"credentialDeletedSuccess": "Credential deleted",
|
|
"credentialDeleteFailed": "Failed to delete credential",
|
|
"snippetsCount": "{{count}} snippets",
|
|
"addSnippetForUser": "Add Snippet",
|
|
"noSnippetsForUser": "This user has no snippets",
|
|
"snippetRequiredFields": "Snippet name and content are required",
|
|
"snippetNamePlaceholder": "Snippet name",
|
|
"snippetContentPlaceholder": "Command content",
|
|
"snippetFolderPlaceholder": "Folder (optional)",
|
|
"snippetSaved": "Snippet saved",
|
|
"snippetSaveFailed": "Failed to save snippet",
|
|
"deleteSnippetConfirm": "Delete snippet \"{{name}}\" belonging to {{username}}?",
|
|
"snippetDeletedSuccess": "Snippet deleted",
|
|
"snippetDeleteFailed": "Failed to delete snippet",
|
|
"noSessionsForUser": "No active sessions",
|
|
"deleteSuccessorLabel": "Hand over hosts and credentials to",
|
|
"deleteSuccessorMe": "Me (the deleting admin)",
|
|
"deleteSuccessorNone": "Nobody — delete them",
|
|
"deleteSuccessorDesc": "Everything this user shared keeps working under the new owner; choosing nobody removes their hosts, credentials and shares.",
|
|
"deleteUserDangerDesc": "Permanently delete {{username}} and all of their data (hosts, credentials, snippets, history). This cannot be undone.",
|
|
"deleteUserConfirm": "Permanently delete {{username}} and all of their data?",
|
|
"deleteUserAdminBlocked": "Remove admin status before deleting this user.",
|
|
"createRoleRequired": "Name and display name are required",
|
|
"createRoleSuccess": "Role \"{{name}}\" created",
|
|
"createRoleFailed": "Failed to create role",
|
|
"apiKeyNameRequired": "Key name is required",
|
|
"apiKeyUserRequired": "User ID is required",
|
|
"apiKeyCreatedSuccess": "API key \"{{name}}\" created",
|
|
"apiKeyCreateFailed": "Failed to create API key",
|
|
"exportSuccess": "Database exported successfully",
|
|
"exportFailed": "Database export failed",
|
|
"importSelectFile": "Please select a file first",
|
|
"importCompleted": "Import completed: {{total}} items imported, {{skipped}} skipped",
|
|
"importFailed": "Import failed: {{error}}",
|
|
"importError": "Database import failed",
|
|
"sectionHostDefaults": "Host Defaults",
|
|
"hostDefaultsDesc": "Settings applied automatically when creating a new host. Individual hosts can still override these.",
|
|
"hostDefaultsSocks5": "SOCKS5 Proxy",
|
|
"hostDefaultsUseSocks5": "Enable SOCKS5 Proxy",
|
|
"hostDefaultsUseSocks5Desc": "Pre-fill SOCKS5 proxy on all new hosts",
|
|
"hostDefaultsSocks5Host": "Proxy Host / Port",
|
|
"hostDefaultsSocks5Username": "Proxy Username",
|
|
"hostDefaultsSocks5Password": "Proxy Password",
|
|
"hostDefaultsStatusCheckEnabled": "Enable Status Check",
|
|
"hostDefaultsStatusCheckEnabledDesc": "Poll online/offline status on new hosts by default",
|
|
"hostDefaultsStatus": "Status Checks",
|
|
"hostDefaultsTerminal": "Terminal",
|
|
"hostDefaultsAutoTmux": "Auto-Tmux",
|
|
"hostDefaultsAutoTmuxDesc": "Run new hosts' terminals inside tmux so sessions survive disconnects (needs tmux on the host)",
|
|
"minutes": "minutes",
|
|
"hostDefaultsSessionLogging": "Session Logging",
|
|
"hostDefaultsSessionLoggingDesc": "Record terminal sessions on new hosts by default",
|
|
"hostDefaultsCommandHistory": "Command History",
|
|
"hostDefaultsCommandHistoryDesc": "Track command history on new hosts by default",
|
|
"hostDefaultsSaved": "Host defaults saved",
|
|
"hostDefaultsSaveFailed": "Failed to save host defaults",
|
|
"rolePermissions": {
|
|
"count": "{{count}} permissions",
|
|
"editAction": "Edit permissions",
|
|
"loadError": "Failed to load the permissions catalog",
|
|
"saved": "Role permissions saved",
|
|
"saveError": "Failed to save role permissions",
|
|
"save": "Save",
|
|
"saving": "Saving...",
|
|
"pluginDisabled": "Plugin disabled",
|
|
"groups": {
|
|
"hosts": "Hosts",
|
|
"credentials": "Credentials",
|
|
"admin": "Administration"
|
|
}
|
|
},
|
|
"stepCa": "Step CA",
|
|
"stepCaDesc": "Issue short-lived SSH certificates from a smallstep CA. Enter the CA URL, its root fingerprint (as shown by step ca bootstrap) and the name of the OIDC provisioner; then choose \"Step CA\" as a host's authentication type. Leave all three empty to disable.",
|
|
"stepCaFingerprint": "Root fingerprint (SHA-256)",
|
|
"stepCaProvisioner": "OIDC provisioner name",
|
|
"stepCaSaved": "Step CA settings saved",
|
|
"stepCaSaveFailed": "Failed to save Step CA settings",
|
|
"secretSourcePrivateEndpoints": "Allowed private secret source hosts",
|
|
"secretSourcePrivateEndpointsDesc": "Private hosts that secret sources (1Password Connect) may contact. Separate them with commas.",
|
|
"updateSecretSourceEndpointsFailed": "Failed to update the secret source endpoint allowlist",
|
|
"stepCaPrivateEndpoints": "Allowed private Step CA hosts",
|
|
"stepCaPrivateEndpointsDesc": "Private hosts the Step CA certificate flow may contact: the CA itself and, if internal, your identity provider. Separate them with commas.",
|
|
"updateStepCaEndpointsFailed": "Failed to update the Step CA endpoint allowlist",
|
|
"notificationPrivateEndpoints": "Allowed private notification hosts",
|
|
"notificationPrivateEndpointsDesc": "Exact private hosts that notification channels may contact. Separate them with commas.",
|
|
"updateNotificationEndpointsFailed": "Failed to update notification endpoint allowlist",
|
|
"plugins": "Plugins",
|
|
"pluginsNone": "No plugins installed.",
|
|
"pluginsLoadFailed": "Failed to load plugins",
|
|
"pluginToggleFailed": "Failed to change the plugin",
|
|
"pluginBuiltIn": "BUILT IN",
|
|
"pluginEnabled": "{{name}} enabled",
|
|
"pluginDisabled": "{{name}} disabled",
|
|
"pluginPermissions": "Permissions",
|
|
"pluginPermissionsNone": "This plugin does not declare any capabilities that need to be granted.",
|
|
"pluginPermissionGranted": "Granted",
|
|
"pluginPermissionNotGranted": "Not granted",
|
|
"pluginGrantFailed": "Failed to grant the capability",
|
|
"pluginRevokeFailed": "Failed to revoke the capability",
|
|
"secondFactorsSectionTitle": "Second factors",
|
|
"secondFactorsNone": "No second factors enrolled",
|
|
"secondFactorUnavailable": "The {{plugin}} plugin is off",
|
|
"resetSecondFactors": "Reset second factors",
|
|
"resetSecondFactorsConfirm": "Remove every second factor for {{username}}? They can sign in with their password or SSO and enrol again.",
|
|
"secondFactorsResetSuccess": "Second factors reset",
|
|
"secondFactorsResetFailed": "Failed to reset second factors",
|
|
"passwordLoginForced": "Password login is turned off, but no other login method is enabled, so it stays on for now. Nobody gets locked out."
|
|
},
|
|
"newUi": {
|
|
"sidebar": {
|
|
"quickConnect": {
|
|
"hostLabel": "Host",
|
|
"hostPlaceholder": "192.168.1.1 or example.com",
|
|
"portLabel": "Port",
|
|
"portPlaceholder": "22",
|
|
"usernameLabel": "Username",
|
|
"usernamePlaceholder": "username",
|
|
"authLabel": "Auth",
|
|
"passwordLabel": "Password",
|
|
"passwordPlaceholder": "password",
|
|
"privateKeyLabel": "Private Key",
|
|
"privateKeyPlaceholder": "Paste private key...",
|
|
"credentialLabel": "Credential",
|
|
"credentialPlaceholder": "Select a saved credential",
|
|
"protocolLabel": "Protocol",
|
|
"domainLabel": "Domain",
|
|
"domainPlaceholder": "optional",
|
|
"connectToTerminal": "Connect to Terminal",
|
|
"connectToFiles": "Connect to Files",
|
|
"connectWith": "Connect via {{protocol}}"
|
|
},
|
|
"sshTools": {
|
|
"keyRecordingTitle": "Key Recording",
|
|
"recordToTerminals": "Record to terminals",
|
|
"selectAll": "All",
|
|
"selectNone": "None",
|
|
"noTerminalTabsOpen": "No terminal tabs open",
|
|
"selectTerminalsAbove": "Select terminals above",
|
|
"broadcastInputPlaceholder": "Type here to broadcast keystrokes...",
|
|
"fillPassword": "Fill password",
|
|
"fillPasswordSuccess": "Filled password into {{count}} terminal(s)",
|
|
"fillPasswordMissing": "No saved password for {{count}} selected terminal(s)",
|
|
"stopRecording": "Stop Recording",
|
|
"startRecording": "Start Recording",
|
|
"settingsTitle": "Settings",
|
|
"enableRightClickCopyPaste": "Enable right-click copy/paste",
|
|
"copyOnSelect": "Copy selected text automatically"
|
|
},
|
|
"splitScreen": {
|
|
"layoutTitle": "Layout",
|
|
"selectLayoutAbove": "Select a layout above",
|
|
"selectLayoutHint": "Choose how many panes to display",
|
|
"panesTitle": "Panes",
|
|
"openTabsTitle": "Open Tabs",
|
|
"dragTabsHint": "Drag tabs into panes above, or use Quick Assign",
|
|
"dropHere": "Drop here",
|
|
"emptyPane": "Empty",
|
|
"dashboard": "Dashboard",
|
|
"clearSplitScreen": "Clear Split Screen",
|
|
"quickAssign": "Quick Assign",
|
|
"alreadyAssigned": "Pane {{index}}",
|
|
"splitTab": "Split Tab",
|
|
"addToSplit": "Add to Split",
|
|
"removeFromSplit": "Remove from Split",
|
|
"assignToPane": "Assign to pane",
|
|
"hotkeysTitle": "Keyboard Shortcuts",
|
|
"hotkeysSplitRight": "Toggle 2-way split",
|
|
"hotkeysSplitBelow": "Toggle 3-way split",
|
|
"hotkeysNavigatePane": "Navigate panes",
|
|
"hotkeysNextTab": "Next tab",
|
|
"hotkeysPrevTab": "Previous tab",
|
|
"hotkeysJumpTab": "Jump to tab"
|
|
},
|
|
"snippets": {
|
|
"title": "Snippets",
|
|
"createSnippetTitle": "Create Snippet",
|
|
"createSnippetDescription": "Create a new command snippet for quick execution",
|
|
"nameLabel": "Name",
|
|
"namePlaceholder": "e.g., Restart Nginx",
|
|
"descriptionLabel": "Description",
|
|
"descriptionPlaceholder": "Optional description",
|
|
"optional": "Optional",
|
|
"folderLabel": "Folder",
|
|
"noFolder": "No folder (Uncategorized)",
|
|
"commandLabel": "Command",
|
|
"commandPlaceholder": "e.g., sudo systemctl restart nginx",
|
|
"typeLabel": "Type",
|
|
"typeCommand": "Command",
|
|
"typeNote": "Note",
|
|
"noteLabel": "Note",
|
|
"notePlaceholder": "e.g., a reusable prompt or reminder text",
|
|
"cancel": "Cancel",
|
|
"createSnippetButton": "Create Snippet",
|
|
"createFolderTitle": "Create Folder",
|
|
"createFolderDescription": "Organize your snippets into folders",
|
|
"folderNameLabel": "Folder Name",
|
|
"folderNamePlaceholder": "e.g., System Commands, Docker Scripts",
|
|
"folderColorLabel": "Folder Color",
|
|
"folderIconLabel": "Folder Icon",
|
|
"previewLabel": "Preview",
|
|
"folderNameFallback": "Folder Name",
|
|
"createFolderButton": "Create Folder",
|
|
"targetTerminals": "Target Terminals",
|
|
"selectAll": "All",
|
|
"selectNone": "None",
|
|
"noTerminalTabsOpen": "No terminal tabs open",
|
|
"searchPlaceholder": "Search snippets...",
|
|
"newSnippet": "New Snippet",
|
|
"newFolder": "New Folder",
|
|
"run": "Run",
|
|
"noSnippetsInFolder": "No snippets in this folder",
|
|
"uncategorized": "Uncategorized",
|
|
"editSnippetTitle": "Edit Snippet",
|
|
"editSnippetDescription": "Update this command snippet",
|
|
"saveSnippetButton": "Save Changes",
|
|
"createSuccess": "Snippet created successfully",
|
|
"createFailed": "Failed to create snippet",
|
|
"updateSuccess": "Snippet updated successfully",
|
|
"updateFailed": "Failed to update snippet",
|
|
"deleteFailed": "Failed to delete snippet",
|
|
"folderCreateSuccess": "Folder created successfully",
|
|
"folderCreateFailed": "Failed to create folder",
|
|
"editFolderTitle": "Edit Folder",
|
|
"editFolderDescription": "Rename or change the appearance of this folder",
|
|
"saveFolderButton": "Save Changes",
|
|
"editFolder": "Edit folder",
|
|
"deleteFolder": "Delete folder",
|
|
"folderDeleteSuccess": "Folder \"{{name}}\" deleted",
|
|
"folderDeleteFailed": "Failed to delete folder",
|
|
"folderEditSuccess": "Folder updated successfully",
|
|
"folderEditFailed": "Failed to update folder",
|
|
"confirmRunMessage": "Run \"{{name}}\"?",
|
|
"confirmRunButton": "Run",
|
|
"runSuccess": "Ran \"{{name}}\" in {{count}} terminal(s)",
|
|
"pasteSuccess": "Pasted \"{{name}}\" into {{count}} terminal(s)",
|
|
"pasteToTerminal": "Paste",
|
|
"copySuccess": "Copied \"{{name}}\" to clipboard",
|
|
"shareTitle": "Share Snippet",
|
|
"shareUser": "User",
|
|
"shareRole": "Role",
|
|
"selectUser": "Select a user...",
|
|
"selectRole": "Select a role...",
|
|
"shareSuccess": "Snippet shared successfully",
|
|
"shareFailed": "Failed to share snippet",
|
|
"revokeSuccess": "Access revoked",
|
|
"revokeFailed": "Failed to revoke access",
|
|
"currentAccess": "Current Access",
|
|
"shareLoadError": "Failed to load share data",
|
|
"loading": "Loading...",
|
|
"close": "Close",
|
|
"reorderFailed": "Failed to save snippet order",
|
|
"importExport": "Import / Export",
|
|
"exportBtn": "Export JSON",
|
|
"importBtn": "Import JSON",
|
|
"exportSuccess": "Snippets exported successfully",
|
|
"exportFailed": "Failed to export snippets",
|
|
"importTitle": "Import Snippets",
|
|
"importDescription": "Import snippets and folders from a JSON file exported by Termix",
|
|
"importDropOrClick": "Drop a JSON file here or click to browse",
|
|
"importSelectedFile": "Selected: {{name}}",
|
|
"importOverwrite": "Overwrite existing snippets with the same name and folder",
|
|
"importStartBtn": "Import",
|
|
"importSuccess": "Import complete: {{snippets}} snippet(s) added, {{updated}} updated, {{skipped}} skipped, {{folders}} folder(s) added",
|
|
"importFailed": "Failed to import snippets",
|
|
"importInvalidFile": "Invalid file: expected a JSON object with snippets or folders arrays",
|
|
"targetHostsLabel": "Target Hosts",
|
|
"targetHostsHint": "Assign hosts to run this snippet directly without an open terminal.",
|
|
"noHostsAvailable": "No hosts configured",
|
|
"clearTargetHosts": "Clear all",
|
|
"hasTargetHosts": "Has target hosts",
|
|
"runOnTargets": "Run on Targets",
|
|
"directRunSuccess": "Ran \"{{name}}\" on {{count}} host(s)",
|
|
"directRunPartialFail": "\"{{name}}\" failed on one or more hosts",
|
|
"executionResultTitle": "Execution Results: {{name}}",
|
|
"executionResultDescription": "Output from running the snippet on each target host.",
|
|
"executionSuccess": "Success",
|
|
"executionFailed": "Failed",
|
|
"expandAll": "Expand all folders",
|
|
"collapseAll": "Collapse all folders",
|
|
"settings": "Snippet settings",
|
|
"variablesHint": "Variables: $HOST, $USER, $PORT, $NAME, ${INPUT_1:Label}",
|
|
"variablesDialogTitle": "Run \"{{name}}\"",
|
|
"variablesDialogDescription": "Fill in the values this snippet needs before running it.",
|
|
"variablesPreviewLabel": "Preview",
|
|
"variablesConfirmButton": "Run"
|
|
},
|
|
"keybindings": {
|
|
"title": "Keyboard Shortcuts",
|
|
"description": "Customize terminal copy, paste, and control shortcuts, or bind keys to send text or run a snippet.",
|
|
"defaultsHeading": "Built-in Shortcuts",
|
|
"customHeading": "Custom Shortcuts",
|
|
"addBinding": "Add Shortcut",
|
|
"addBindingTitle": "Add Shortcut",
|
|
"editBindingTitle": "Edit Shortcut",
|
|
"loading": "Loading...",
|
|
"noCustomBindings": "No custom shortcuts yet",
|
|
"defaultBadge": "Default",
|
|
"customizedBadge": "Customized",
|
|
"customize": "Customize",
|
|
"resetToDefault": "Reset to default",
|
|
"resetAllToDefaults": "Reset all to defaults",
|
|
"close": "Close",
|
|
"cancel": "Cancel",
|
|
"saveBinding": "Save Shortcut",
|
|
"saveError": "Failed to save keyboard shortcuts",
|
|
"pressKeysToRecord": "Key combination",
|
|
"pressKeysPlaceholder": "Click and press keys",
|
|
"recording": "Press keys...",
|
|
"comboRequiredError": "Press a key combination first",
|
|
"textRequiredError": "Enter the text to send",
|
|
"controlCodeRequiredError": "Enter a single letter for the control code",
|
|
"snippetRequiredError": "Select a snippet",
|
|
"conflictWarning": "This combination is already bound to {{combo}}. Saving will make both fire.",
|
|
"actionLabel": "Action",
|
|
"actionCopy": "Copy selection",
|
|
"actionPaste": "Paste",
|
|
"actionSendControlCode": "Send Ctrl+letter signal",
|
|
"actionSendText": "Send text",
|
|
"actionRunSnippet": "Run existing snippet",
|
|
"actionNextTab": "Switch to next tab",
|
|
"actionPreviousTab": "Switch to previous tab",
|
|
"actionOpenCommandPalette": "Open quick search",
|
|
"actionReconnectSession": "Reconnect current session",
|
|
"controlCodeLabel": "Letter",
|
|
"textLabel": "Text to send",
|
|
"appendEnterLabel": "Press Enter after sending",
|
|
"snippetLabel": "Snippet",
|
|
"selectSnippetPlaceholder": "Select a snippet",
|
|
"orphanedSnippetWarning": "snippet not found",
|
|
"clipboardPermissionNote": "May prompt for clipboard permission on first use in some browsers."
|
|
},
|
|
"connectionDefaults": {
|
|
"title": "Connection Defaults",
|
|
"description": "Set values that every host inherits unless it overrides them.",
|
|
"manage": "Manage",
|
|
"dialogDescription": "These apply to hosts that leave a setting unset. Anything set on a host wins.",
|
|
"inherit": "Inherit",
|
|
"on": "On",
|
|
"off": "Off",
|
|
"clearAll": "Clear All",
|
|
"saved": "Connection defaults saved",
|
|
"saveFailed": "Failed to save connection defaults",
|
|
"savedThemeLabel": "Apply Saved Theme",
|
|
"savedThemePlaceholder": "Choose a saved theme"
|
|
},
|
|
"userProfile": {
|
|
"donateTitle": "Keep Termix alive",
|
|
"donateDescription": "Termix is free, self-hosted, and built by only a few people in their spare time. If it's saved you time or money, a crypto donation helps keep it going.",
|
|
"donateMilestones": "Donations help fund the time to research and learn what's needed to build SAML, Kubernetes, and Agent support. See the progress and donate.",
|
|
"donateButton": "Donate crypto",
|
|
"storageModeLocal": "Browser",
|
|
"storageModeCloud": "Database",
|
|
"storageModeDescription": "Browser stores settings in this browser only. Database syncs to the server and loads on any device.",
|
|
"resetToDefaults": "Reset to Defaults",
|
|
"resetToDefaultsSuccess": "Settings reset to defaults.",
|
|
"storageModeSwitch": "Preference Storage",
|
|
"sectionAccount": "Account",
|
|
"desktopProfileTitle": "Automatic local desktop profile",
|
|
"desktopProfileDescription": "This profile is restricted to the embedded backend and signs in automatically. It has no login password; Remote Sync below uses a separate server account.",
|
|
"sectionInterface": "Interface",
|
|
"interfacePresetDesc": "How much detail Termix shows. Every feature stays available.",
|
|
"preset_simple": "Simple",
|
|
"preset_simple_desc": "The essentials only.",
|
|
"preset_balanced": "Balanced",
|
|
"preset_balanced_desc": "The standard layout.",
|
|
"preset_advanced": "Advanced",
|
|
"preset_advanced_desc": "Everything on, densely packed.",
|
|
"presetClearOverrides": "Reset all",
|
|
"presetOverridesTitle": "Customized",
|
|
"presetRevertArea": "Revert",
|
|
"presetConfirmTitle": "Switch to {{preset}}?",
|
|
"presetConfirmDesc": "This resets your sidebar, navigation, dashboard layout, terminal toolbar and file manager view. Your hosts, credentials and homepage are not touched.",
|
|
"presetConfirmApply": "Apply preset",
|
|
"runSetupAgainDesc": "Walk through the first-run setup again.",
|
|
"runSetupAgainButton": "Run setup",
|
|
"uiArea_chrome": "App chrome",
|
|
"uiArea_hostList": "Host list",
|
|
"uiArea_credentialList": "Credential list",
|
|
"uiArea_rail": "Navigation",
|
|
"uiArea_dashboard": "Dashboard",
|
|
"uiArea_terminal": "Terminal",
|
|
"uiArea_fileManager": "File manager",
|
|
"uiArea_docker": "Docker",
|
|
"uiArea_hostMetrics": "Host metrics",
|
|
"uiArea_hostEditor": "Host editor",
|
|
"uiArea_homepage": "Homepage",
|
|
"sectionAppearance": "Appearance",
|
|
"sectionSecurity": "Security",
|
|
"sectionApiKeys": "API Keys",
|
|
"sectionData": "Data",
|
|
"usernameLabel": "Username",
|
|
"roleLabel": "Role",
|
|
"roleAdministrator": "Administrator",
|
|
"authMethodLabel": "Auth Method",
|
|
"authMethodLocal": "Local",
|
|
"twoFaLabel": "2FA",
|
|
"twoFaOn": "On",
|
|
"twoFaOff": "Off",
|
|
"versionLabel": "Version",
|
|
"betaProgramTitle": "Beta Program",
|
|
"betaProgramDescription": "Try upcoming features early with the weekly rolling :beta Docker tag. Unstable, not for production.",
|
|
"betaProgramFeedback": "Found a bug? Report it here.",
|
|
"betaProgramLearnMore": "Learn More",
|
|
"cliTitle": "Termix CLI",
|
|
"cliDescription": "Open terminals, run commands and move files from your own shell.",
|
|
"cliLearnMore": "Learn More",
|
|
"deleteAccount": "Delete Account",
|
|
"deleteAccountDescription": "Permanently delete your account",
|
|
"changeServerDescription": "Switch to a different Termix backend server",
|
|
"deleteButton": "Delete",
|
|
"deleteAccountPermanent": "This action is permanent and cannot be undone.",
|
|
"deleteAccountWarning": "All sessions, hosts, credentials, and settings will be permanently deleted.",
|
|
"confirmPasswordDeletePlaceholder": "Enter your password to confirm",
|
|
"languageLabel": "Language",
|
|
"themeLabel": "Theme",
|
|
"fontSizeLabel": "Font Size",
|
|
"interfaceFontLabel": "Interface Font",
|
|
"interfaceFontDescription": "Changes the application interface font. Terminal profiles keep their own font settings.",
|
|
"accentColorLabel": "Accent Color",
|
|
"settingsTerminal": "Terminal",
|
|
"commandAutocomplete": "Command Autocomplete",
|
|
"commandAutocompleteDesc": "Show autocomplete while typing if you press tab",
|
|
"localEcho": "Local Echo",
|
|
"localEchoDesc": "Reduce perceived input latency using safe local keystroke prediction",
|
|
"keyboardShortcuts": "Keyboard Shortcuts",
|
|
"keyboardShortcutsDescription": "Customize terminal copy, paste, and command shortcuts",
|
|
"manageShortcuts": "Manage",
|
|
"terminalLinkBehavior": "Terminal Link Click",
|
|
"terminalLinkBehaviorDesc": "Default behavior when clicking links in the terminal",
|
|
"historyTracking": "History Tracking",
|
|
"historyTrackingDesc": "Track terminal commands",
|
|
"commandPalette": "Command Palette",
|
|
"commandPaletteDesc": "Enable keyboard shortcut",
|
|
"reopenTabsOnLogin": "Reopen Tabs on Login",
|
|
"reopenTabsOnLoginDesc": "Restore your open tabs when you log in or refresh the page, even from another device",
|
|
"confirmTabClose": "Confirm Tab Close",
|
|
"confirmTabCloseDesc": "Ask before closing terminal tabs",
|
|
"showTabNumbers": "Show Tab Numbers",
|
|
"showTabNumbersDesc": "Display a number on each tab to help tell them apart",
|
|
"transferConcurrency": "Simultaneous File Transfers",
|
|
"transferConcurrencyDesc": "How many files the side by side local/remote manager uploads or downloads at the same time. Lower this if your server limits SFTP channels.",
|
|
"settingsAppRail": "App Rail",
|
|
"sidebarSettingsMoved": "Host sidebar display settings have moved to the Customize sidebar panel, opened from the Hosts toolbar.",
|
|
"showHostTags": "Show Host Tags",
|
|
"showHostTagsDesc": "Display tags in host list",
|
|
"hostTrayOnClick": "Click to Expand Host Actions",
|
|
"hostTrayOnClickDesc": "Always show connection buttons; click to expand management options instead of hover",
|
|
"compactHostView": "Compact Host View",
|
|
"compactHostViewDesc": "Collapse each host to a single line showing only its name and address",
|
|
"statusColors": "Real Status Colors",
|
|
"statusColorsDesc": "Use green/red for online/offline status instead of the accent color",
|
|
"pinAppRail": "Pin App Rail",
|
|
"pinAppRailDesc": "Keep the left sidebar app rail always expanded instead of expanding on hover",
|
|
"openFullscreenSettings": "Open settings full screen",
|
|
"exitFullscreenSettings": "Exit full-screen settings",
|
|
"expandAppRailOnHover": "Expand App Rail on Hover",
|
|
"expandAppRailOnHoverDesc": "Allow the left sidebar app rail to expand when the pointer moves over it",
|
|
"showPinAppRailButton": "Show Pin App Rail Button",
|
|
"showPinAppRailButtonDesc": "Show a button in the app rail to pin it open. Off by default.",
|
|
"settingsNavigation": "Navigation",
|
|
"navigationTabsDesc": "Choose which tabs appear in the app rail",
|
|
"showSnippetCommands": "Show Commands",
|
|
"showSnippetCommandsDesc": "Show each snippet's command under its name. Turn off for a compact list.",
|
|
"foldersCollapsed": "Folders Collapsed",
|
|
"foldersCollapsedDesc": "Collapse folders by default",
|
|
"confirmExecution": "Confirm Execution",
|
|
"confirmExecutionDesc": "Confirm before running snippets",
|
|
"settingsUpdates": "Updates",
|
|
"disableUpdateChecks": "Disable Update Checks",
|
|
"disableUpdateChecksDesc": "Stop checking for updates",
|
|
"totpAuthenticator": "TOTP Authenticator",
|
|
"totpEnabled": "2FA is enabled",
|
|
"totpDisabled": "Add extra login security",
|
|
"totpAddAuthenticator": "Add device",
|
|
"totpAddTitle": "Add authenticator device",
|
|
"totpAddDescription": "Confirm your identity to enroll another authenticator with the same secure TOTP key.",
|
|
"totpAddInputRequired": "Enter your TOTP code or password",
|
|
"totpAddFailed": "Failed to add authenticator",
|
|
"totpAddScanInstructions": "Scan this QR code with the additional authenticator. Existing authenticators will continue to work.",
|
|
"totpAddSuccess": "Additional authenticator enrolled",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"setupTotp": "Setup TOTP",
|
|
"qrCode": "QR Code",
|
|
"totpInstructions": "Scan QR code or enter secret in your authenticator app, then enter the 6-digit code",
|
|
"totpCodePlaceholder": "000000",
|
|
"verify": "Verify",
|
|
"changePassword": "Change Password",
|
|
"currentPasswordLabel": "Current Password",
|
|
"currentPasswordPlaceholder": "Current password",
|
|
"newPasswordLabel": "New Password",
|
|
"newPasswordPlaceholder": "New password",
|
|
"confirmPasswordLabel": "Confirm New Password",
|
|
"confirmPasswordPlaceholder": "Confirm new password",
|
|
"updatePassword": "Update Password",
|
|
"createApiKeyTitle": "Create API Key",
|
|
"createApiKeyDescription": "Generate a new API key for programmatic access.",
|
|
"apiKeyNameLabel": "Name",
|
|
"apiKeyNamePlaceholder": "e.g. CI Pipeline",
|
|
"expiryDateLabel": "Expiry Date",
|
|
"optional": "optional",
|
|
"cancel": "Cancel",
|
|
"createKey": "Create Key",
|
|
"apiKeyCreatedWarning": "Key created - copy it now, it won't be shown again.",
|
|
"copyApiKey": "Copy API key",
|
|
"copiedToClipboard": "Copied to clipboard",
|
|
"apiKeyCount": "{{count}} keys",
|
|
"newKey": "New Key",
|
|
"noApiKeys": "No API keys yet.",
|
|
"apiKeyActive": "Active",
|
|
"apiKeyUsageHint": "Include your key in the",
|
|
"apiKeyUsageHintHeader": "header.",
|
|
"apiKeyPermissionsHint": "Keys inherit the permissions of the creating user.",
|
|
"exportData": "Export My Data",
|
|
"exportDataDesc": "Download a backup of your hosts, credentials, and settings to transfer to another device",
|
|
"export": "Export",
|
|
"exporting": "Exporting...",
|
|
"importData": "Import My Data",
|
|
"importDataDesc": "Restore your hosts, credentials, and settings from a .sqlite backup file",
|
|
"importDataSelected": "Selected: {{name}}",
|
|
"selectFile": "Select File",
|
|
"changeFile": "Change",
|
|
"import": "Import",
|
|
"importing": "Importing...",
|
|
"exportSuccess": "Data exported successfully",
|
|
"exportFailed": "Data export failed",
|
|
"importSelectFile": "Please select a file first",
|
|
"importCompleted": "Import completed: {{total}} items imported, {{skipped}} skipped",
|
|
"importFailed": "Import failed: {{error}}",
|
|
"roleUser": "User",
|
|
"authMethodDual": "Dual Auth",
|
|
"authMethodOidc": "OIDC",
|
|
"totpSetupFailed": "Failed to start TOTP setup",
|
|
"totpEnter6Digits": "Enter a 6-digit code",
|
|
"totpEnabledSuccess": "Two-factor authentication enabled",
|
|
"totpInvalidCode": "Invalid code, please try again",
|
|
"totpDisableInputRequired": "Enter your TOTP code or password",
|
|
"totpDisabledSuccess": "Two-factor authentication disabled",
|
|
"totpDisableFailed": "Failed to disable 2FA",
|
|
"totpDisableTitle": "Disable 2FA",
|
|
"totpDisablePlaceholder": "Enter TOTP code or password",
|
|
"totpDisableConfirm": "Disable 2FA",
|
|
"totpContinueVerify": "Continue to Verify",
|
|
"totpVerifyTitle": "Verify Code",
|
|
"totpBackupTitle": "Backup Codes",
|
|
"totpDownloadBackup": "Download Backup Codes",
|
|
"passkeys": "Passkeys",
|
|
"passkeysDesc": "Use WebAuthn/FIDO2 credentials to sign in without a password",
|
|
"passkeyName": "Passkey name",
|
|
"passkeyUvPreferred": "Preferred",
|
|
"passkeyUvRequired": "Required",
|
|
"passkeyUvDiscouraged": "Discouraged",
|
|
"addPasskey": "Add Passkey",
|
|
"noPasskeys": "No passkeys registered.",
|
|
"passkeyAdded": "Passkey added",
|
|
"passkeyAddFailed": "Failed to add passkey",
|
|
"passkeyDeleted": "Passkey deleted",
|
|
"passkeyDeleteFailed": "Failed to delete passkey",
|
|
"done": "Done",
|
|
"secretCopied": "Secret copied to clipboard",
|
|
"apiKeyNameRequired": "Key name is required",
|
|
"apiKeyCreated": "API key \"{{name}}\" created",
|
|
"apiKeyCreateFailed": "Failed to create API key",
|
|
"apiKeyUser": "User",
|
|
"apiKeyExpires": "Expires",
|
|
"apiKeyRevoked": "API key \"{{name}}\" revoked",
|
|
"apiKeyRevokeFailed": "Failed to revoke API key",
|
|
"passwordFieldsRequired": "Current and new passwords are required",
|
|
"passwordMismatch": "Passwords do not match",
|
|
"passwordTooShort": "Password must be at least 6 characters",
|
|
"passwordUpdated": "Password updated successfully",
|
|
"passwordUpdateFailed": "Failed to update password",
|
|
"deletePasswordRequired": "Password is required to delete your account",
|
|
"deleteFailed": "Failed to delete account",
|
|
"deleting": "Deleting...",
|
|
"colorPickerTooltip": "Open color picker",
|
|
"themeSystem": "System",
|
|
"themeLight": "Light",
|
|
"themeDark": "Dark",
|
|
"themeDracula": "Dracula",
|
|
"themeCatppuccin": "Catppuccin",
|
|
"themeNord": "Nord",
|
|
"themeSolarized": "Solarized",
|
|
"themeTokyoNight": "Tokyo Night",
|
|
"themeOneDark": "One Dark",
|
|
"themeGruvbox": "Gruvbox"
|
|
}
|
|
}
|
|
},
|
|
"terminalToolbar": {
|
|
"title": "Terminal Toolbar",
|
|
"showActions": "Show toolbar",
|
|
"cpu": "CPU",
|
|
"memory": "Memory",
|
|
"disk": "Disk",
|
|
"statsUnavailable": "Live stats unavailable",
|
|
"tmuxDetach": "Detach tmux session",
|
|
"openFiles": "Open Files",
|
|
"openDocker": "Open Docker",
|
|
"openTunnel": "Open Tunnel",
|
|
"openHostMetrics": "Open Host Metrics",
|
|
"openProxmoxStats": "Open Proxmox Stats",
|
|
"openTmuxMonitor": "Open Tmux Monitor"
|
|
},
|
|
"alerts": {
|
|
"addChannel": "Add Channel",
|
|
"editChannel": "Edit Channel",
|
|
"channelName": "Name",
|
|
"channelType": "Type",
|
|
"channelNameRequired": "Name is required",
|
|
"webhookUrl": "URL",
|
|
"webhookUrlRequired": "Webhook URL is required",
|
|
"webhookDesc": "POST JSON payload to this URL on each alert firing",
|
|
"ntfyServer": "Server URL",
|
|
"ntfyTopic": "Topic",
|
|
"ntfyTopicRequired": "Topic is required",
|
|
"ntfyToken": "Access Token (optional)",
|
|
"channelSaveFailed": "Failed to save channel",
|
|
"discordUrlInvalid": "Discord URL must be a valid Discord webhook URL",
|
|
"discordWebhookDesc": "POST a Discord embed to this webhook URL on each alert firing",
|
|
"discordUsername": "Display name (optional)",
|
|
"discordAvatar": "Avatar URL (optional)"
|
|
},
|
|
"macros": {
|
|
"title": "Macros",
|
|
"description": "Run a saved series of commands in a terminal, and react to what the server sends back.",
|
|
"target": "Target",
|
|
"noTerminal": "No terminal open",
|
|
"empty": "No macros yet",
|
|
"emptyHint": "Create a macro to automate a terminal flow, like logging in, restarting a service, or answering prompts.",
|
|
"create": "New macro",
|
|
"back": "Back to macros",
|
|
"name": "Name",
|
|
"namePlaceholder": "Restart web server",
|
|
"nameRequired": "Give the macro a name before saving",
|
|
"descriptionLabel": "Description",
|
|
"descriptionPlaceholder": "What this macro does (optional)",
|
|
"unsaved": "Unsaved changes",
|
|
"save": "Save",
|
|
"saved": "Macro saved",
|
|
"saveFailed": "Could not save the macro",
|
|
"delete": "Delete",
|
|
"deleteTitle": "Delete this macro?",
|
|
"deleteBody": "\"{{name}}\" will be permanently deleted. This cannot be undone.",
|
|
"deleted": "Macro deleted",
|
|
"cancel": "Cancel",
|
|
"run": "Run",
|
|
"stop": "Stop",
|
|
"running": "Running...",
|
|
"completed": "Macro finished",
|
|
"failed": "Macro failed",
|
|
"loadFailed": "Could not load macros",
|
|
"needTerminal": "Open and connect a terminal first",
|
|
"noSteps": "This macro has no steps yet. Add one below.",
|
|
"addStep": "Add step",
|
|
"stepNumber": "Step {{number}}",
|
|
"removeStep": "Remove step",
|
|
"confirmRunTitle": "Run this macro?",
|
|
"confirmRunBody": "\"{{name}}\" will send commands to {{host}}.",
|
|
"confirmRunAction": "Run macro",
|
|
"stepTypes": {
|
|
"send": {
|
|
"label": "Send command",
|
|
"help": "Types text into the terminal, the same as if you typed it."
|
|
},
|
|
"wait": {
|
|
"label": "Wait for output",
|
|
"help": "Pauses until the server prints the text you name, like a password prompt."
|
|
},
|
|
"delay": {
|
|
"label": "Pause",
|
|
"help": "Waits a fixed amount of time before the next step."
|
|
},
|
|
"if": {
|
|
"label": "If output contains",
|
|
"help": "Checks everything the server has printed so far, then runs one of two branches."
|
|
},
|
|
"repeat": {
|
|
"label": "Repeat",
|
|
"help": "Runs the steps inside it a set number of times."
|
|
}
|
|
},
|
|
"send": {
|
|
"text": "Command or text",
|
|
"textPlaceholder": "systemctl restart nginx",
|
|
"pressEnter": "Press Enter after sending",
|
|
"pressEnterHelp": "Turn this off to type text without submitting it."
|
|
},
|
|
"wait": {
|
|
"pattern": "Wait until the output contains",
|
|
"patternPlaceholder": "password:",
|
|
"timeout": "Give up after",
|
|
"onTimeout": "If it never appears",
|
|
"stop": "Stop the macro",
|
|
"continue": "Keep going anyway"
|
|
},
|
|
"delay": {
|
|
"duration": "Wait for"
|
|
},
|
|
"ifStep": {
|
|
"pattern": "If the output contains",
|
|
"patternPlaceholder": "Active: active (running)",
|
|
"then": "Then do this",
|
|
"else": "Otherwise do this",
|
|
"emptyBranch": "No steps"
|
|
},
|
|
"repeat": {
|
|
"count": "Number of times",
|
|
"times": "times"
|
|
},
|
|
"match": {
|
|
"useRegex": "Match with a regular expression",
|
|
"useRegexHelp": "Leave this off to match the text exactly as written.",
|
|
"invalidRegex": "Not a valid regular expression, it will be matched as plain text"
|
|
},
|
|
"seconds": "seconds",
|
|
"secondsShort": "{{count}}s"
|
|
},
|
|
"plugins": {
|
|
"capabilities": {
|
|
"credentials:read": {
|
|
"title": "See your passwords and keys",
|
|
"consequence": "It can read the stored secret for any host you can reach."
|
|
},
|
|
"ssh:connect": {
|
|
"title": "Run commands on your servers",
|
|
"consequence": "Any command, on hosts you connect it to, with your access."
|
|
},
|
|
"process:spawn": {
|
|
"title": "Run programs on this machine",
|
|
"consequence": "Programs run on the Termix server itself, not on your hosts."
|
|
},
|
|
"users:write": {
|
|
"title": "Create and change user accounts",
|
|
"consequence": "It can add users and change their roles."
|
|
},
|
|
"auth:provide": {
|
|
"title": "Handle sign in",
|
|
"consequence": "It can add a login method, a second factor or an SSH sign-in type."
|
|
},
|
|
"system:tls": {
|
|
"title": "Manage certificates",
|
|
"consequence": "It can request and replace the server certificate."
|
|
},
|
|
"device:serial": {
|
|
"title": "Access serial and USB devices",
|
|
"consequence": "It can open a physical serial port on the machine running Termix."
|
|
},
|
|
"hosts:write": {
|
|
"title": "Create and change hosts",
|
|
"consequence": "It can add hosts and edit the ones you already have."
|
|
},
|
|
"credentials:use": {
|
|
"title": "Connect to your servers",
|
|
"consequence": "It cannot see your passwords or keys."
|
|
},
|
|
"network:outbound": {
|
|
"title": "Reach the internet",
|
|
"consequence": "It can send requests to outside services."
|
|
},
|
|
"network:serve": {
|
|
"title": "Accept connections",
|
|
"consequence": "It opens a port on the Termix server."
|
|
},
|
|
"users:read": {
|
|
"title": "See usernames and roles",
|
|
"consequence": "Never password hashes, never two factor state."
|
|
},
|
|
"events:core": {
|
|
"title": "Watch everything happening",
|
|
"consequence": "Including activity from other users, not just yours."
|
|
},
|
|
"notify:send": {
|
|
"title": "Send notifications",
|
|
"consequence": "Through the channels you have already set up."
|
|
},
|
|
"audit:read": {
|
|
"title": "Read the audit log",
|
|
"consequence": "It can see who did what and when."
|
|
},
|
|
"desktop:window": {
|
|
"title": "Open desktop windows",
|
|
"consequence": "Only in the Termix desktop app."
|
|
},
|
|
"hosts:read": {
|
|
"title": "See your host list",
|
|
"consequence": "Names and addresses for hosts you can already see."
|
|
},
|
|
"db:own": {
|
|
"title": "Store its own data",
|
|
"consequence": "Kept in its own tables, separate from other plugins."
|
|
},
|
|
"kv:own": {
|
|
"title": "Remember small settings",
|
|
"consequence": "Kept separate from other plugins."
|
|
},
|
|
"files:own": {
|
|
"title": "Store its own files",
|
|
"consequence": "In its own folder on disk, separate from other plugins."
|
|
},
|
|
"secrets:own": {
|
|
"title": "Store its own secrets",
|
|
"consequence": "Encrypted by Termix. The plugin never holds the key."
|
|
},
|
|
"settings:read-core": {
|
|
"title": "Read Termix settings",
|
|
"consequence": "Server settings, not your hosts or credentials."
|
|
},
|
|
"ui:surface": {
|
|
"title": "Add its own screens",
|
|
"consequence": "Tabs, panels and settings you can hide later."
|
|
}
|
|
},
|
|
"runtime": {
|
|
"needsPlugin": "This needs the {{name}} plugin",
|
|
"needsUnknownPlugin": "This needs a plugin that is not installed",
|
|
"disabledHint": "An admin can turn it on in Settings under Plugins.",
|
|
"missingHint": "It was added by a plugin that has since been removed.",
|
|
"failed": "The {{name}} plugin could not start",
|
|
"failedHint": "An admin can see why in Settings under Plugins.",
|
|
"loading": "Loading {{name}}",
|
|
"crashed": "Something went wrong in the {{name}} plugin",
|
|
"retry": "Try again"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"bandYou": "You",
|
|
"bandPlugins": "Plugins",
|
|
"bandInstance": "Instance",
|
|
"account": "Account",
|
|
"secretSet": "Set",
|
|
"secretNotSet": "Not set",
|
|
"secretReplace": "Replace",
|
|
"pluginGroupAdmin": "Server settings",
|
|
"pluginGroupUser": "Your settings",
|
|
"pluginNoSettings": "{{name}} has no settings you can change.",
|
|
"pluginStoppedNotice": "{{name}} is installed but not running. These settings are saved but will not take effect.",
|
|
"pluginSettingsSaved": "Settings saved",
|
|
"pluginSettingsInvalid": "Some settings could not be saved. Check the highlighted fields.",
|
|
"pluginSettingsSaveFailed": "Failed to save settings",
|
|
"pluginSettingsLoadFailed": "Failed to load settings",
|
|
"pluginsGroupLabel": "Plugins",
|
|
"hostPluginNotRunning": "{{name}} is installed but not running. These settings are saved but will not take effect."
|
|
}
|
|
}
|