Files
ProxMenux/AppImage/messages/en/common.json
T
Codex d62fc29581 fix(monitor): localize dynamic labels and generated status text
Localize runtime labels for SMART/NVMe details, backup target badges, firewall interface types, settings units, and generated health status copy while keeping the English and Slovak catalogs in key parity.
2026-08-04 17:02:03 +02:00

3853 lines
188 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"app": {
"title": "ProxMenux Monitor",
"description": "Proxmox System Dashboard",
"loading": "Loading...",
"connecting": "Connecting to ProxMenux Monitor",
"unknown": "Unknown",
"notAvailable": "N/A",
"serverOffline": "Server Offline",
"supportProject": "Support and contribute to the project"
},
"common": {
"notAvailable": "N/A",
"unknown": "Unknown"
},
"actions": {
"refresh": "Refresh",
"toggleTheme": "Toggle theme",
"openUserMenu": "Open user menu",
"cancel": "Cancel",
"save": "Save",
"edit": "Edit",
"close": "Close",
"resetAll": "Reset all",
"undo": "Undo",
"copy": "Copy",
"copied": "Copied",
"copyToClipboard": "Copy to clipboard"
},
"navigation": {
"overview": "Overview",
"storage": "Storage",
"network": "Network",
"virtualMachines": "VMs & LXCs",
"hardware": "Hardware",
"backup": "Backup",
"terminal": "Terminal",
"systemLogs": "System Logs",
"security": "Security",
"settings": "Settings",
"about": "About",
"profile": "Profile",
"node": "Node",
"admin": "Admin",
"menu": "Navigation Menu"
},
"status": {
"healthy": "Healthy",
"warning": "Warning",
"critical": "Critical",
"uptime": "Uptime: {uptime}",
"node": "Node: {node}",
"connectionFailed": "ProxMenux Server Connection Failed",
"checkService": "Check that the monitor.service is running correctly.",
"serverPort": "The ProxMenux server should start automatically on port 8008",
"tryAccessing": "Try accessing:",
"normal": "Normal",
"warm": "Warm",
"hot": "Hot",
"moderate": "Moderate",
"high": "High",
"stopped": "Stopped",
"active": "Active",
"disabled": "Disabled",
"inactive": "inactive",
"saving": "Saving...",
"saved": "Saved",
"saveFailed": "Save failed",
"networkErrorWhileSaving": "Network error while saving"
},
"overview": {
"loadingTitle": "Loading system overview...",
"loadingDescription": "Fetching system status and metrics",
"topProcessesCpu": "View top processes by CPU",
"topProcessesMemory": "View top processes by memory",
"suggestedFix": "Suggested fix on the Proxmox host",
"noMetricsData": "No metrics data available",
"invalidMetricsData": "Invalid metrics data received from the server",
"metricsLoadError": "Error loading metrics",
"networkMetricsUnavailable": "Network metrics not available yet",
"noNetworkMetrics": "No network metrics available",
"cpuUsage": "CPU Usage",
"cpuUsageLoadAverage": "CPU Usage & Load Average",
"cpuPercent": "CPU %",
"loadAverage": "Load Avg",
"loadAxis": "Load",
"memory": "Memory",
"memoryUsage": "Memory Usage",
"user": "User",
"system": "System",
"cores": "Cores",
"used": "Used",
"cached": "Cached",
"total": "Total",
"free": "Free",
"activeVmLxc": "Active VM & LXC",
"runningCount": "{count} running",
"vmsCount": "{count} VMs",
"stoppedCount": "{count} stopped",
"temperature": "Temperature",
"noSensorAvailable": "No sensor available",
"collectingData": "Collecting data...",
"storageOverview": "Storage Overview",
"totalNodeCapacity": "Total Node Capacity:",
"totalCapacity": "Total Capacity:",
"physicalDisks": "Physical Disks:",
"diskSingular": "disk",
"diskPlural": "disks",
"vmLxcStorage": "VM/LXC Storage",
"available": "Available",
"storageVolumeSingular": "storage volume",
"storageVolumePlural": "storage volumes",
"noVmLxcStorage": "No VM/LXC storage configured",
"localStorageSystem": "Local Storage (System)",
"storageDataUnavailable": "Storage data not available",
"networkOverview": "Network Overview",
"activeInterfaces": "Active Interfaces:",
"received": "Received:",
"sent": "Sent:",
"receivedShort": "Received",
"sentShort": "Sent",
"networkDataUnavailable": "Network data not available",
"systemInformation": "System Information",
"uptime": "Uptime:",
"uptimeDuration": {
"dayOne": "{count} day",
"dayFew": "{count} days",
"dayMany": "{count} days"
},
"proxmoxVersion": "Proxmox Version:",
"kernel": "Kernel:",
"availableUpdates": "Available Updates:",
"packages": "packages",
"systemOverview": "System Overview",
"loadAverage1m": "Load Average (1m):",
"cpuThreads": "CPU Threads:",
"networkInterfaces": "Network Interfaces:",
"timeframes": {
"hour": "1 Hour",
"day": "24 Hours",
"week": "7 Days",
"month": "30 Days",
"year": "1 Year"
},
"stats": {
"avg": "avg",
"max": "max",
"min": "min"
},
"errors": {
"serverUnavailableTitle": "Monitor server is not available",
"serverUnavailableDescription": "Unable to connect to the Monitor server. Make sure the service is running and try again."
}
},
"storage": {
"loadingTitle": "Loading storage data...",
"loadingDescription": "Scanning disks, partitions and storage pools",
"loadingError": "Error loading storage data: {error}",
"storageUsed": "Storage Used",
"localUsed": "Local Used",
"remoteUsed": "Remote Used",
"physicalDisks": "Physical Disks",
"proxmoxStorage": "Proxmox Storage",
"remoteMounts": "Remote Mounts",
"externalStorageUsb": "External Storage (USB)",
"physicalDisksSmart": "Physical Disks & SMART Status",
"zfsPools": "ZFS Pools",
"local": "Local",
"remote": "Remote",
"free": "Free",
"used": "Used",
"total": "Total",
"available": "Available",
"size": "Size",
"allocated": "Allocated",
"none": "None",
"noRemoteStorage": "No remote storage",
"diskSingular": "disk",
"diskPlural": "disks",
"allHealthy": "all healthy",
"criticalCount": "{count} critical",
"warningCount": "{count} warning",
"remoteMount": "remote mount",
"remoteMountShort": "remote",
"excluded": "excluded",
"notMonitored": "not monitored",
"namespaceRestricted": "namespace-restricted",
"namespaceRestrictedTitle": "Storage reachable; datastore size hidden by ACL (e.g. PBS DatastoreAdmin on a single namespace)",
"managedByProxmox": "managed by Proxmox",
"readOnlyShort": "ro",
"stale": "stale",
"readOnly": "read-only",
"reachable": "reachable",
"source": "Source:",
"capacity": "Capacity",
"mountOptions": "Mount options",
"mountStaleSkipped": "df skipped: mount is stale.",
"notApplicable": "n/a",
"error": "Error",
"system": "System",
"standby": "Standby",
"standbyTitle": "Drive is in standby - smartctl skipped to keep it spun down",
"filesystemCorruption": "Filesystem corruption detected",
"ioErrorOne": "{count} I/O error in 5 min",
"ioErrorMany": "{count} I/O errors in 5 min",
"model": "Model",
"wearLevel": "Wear Level",
"powerCycles": "Power Cycles",
"powerOn": "Power On",
"crcErrors": "CRC Errors",
"reallocatedShort": "Realloc. Sectors",
"serialShort": "S/N:",
"viewDetails": "View details",
"diskDetails": "Disk Details: /dev/{name}",
"physicalDisk": "Physical disk",
"overview": "Overview",
"smart": "SMART",
"history": "History",
"schedule": "Schedule",
"serialNumber": "Serial Number",
"healthStatus": "Health Status",
"wearLifetime": "Wear & Lifetime",
"dataWritten": "Data Written",
"life": "life",
"lifeRemaining": "Life Remaining",
"realTest": "Real Test",
"wear": {
"label": "Wear",
"percentageUsed": "Percentage Used",
"mediaWearout": "Media Wearout",
"wearLevel": "Wear Level",
"lifeUsed": "Life Used"
},
"estimatedLife": "Est. Life",
"noWearDetected": "No wear detected yet",
"months": "months",
"years": "years",
"duration": {
"daysShort": "{days}d",
"monthsShort": "{months}m",
"yearsShort": "{years}y",
"monthsDaysShort": "{months}m {days}d",
"yearsMonthsShort": "{years}y {months}m",
"estimatedYears": "~{value} years",
"estimatedMonths": "~{value} months"
},
"availableSpare": "Avail. Spare",
"smartAttributes": "SMART Attributes",
"powerOnHours": "Power On Hours",
"rotationRate": "Rotation Rate",
"smartStatus": "SMART Status",
"reallocatedSectors": "Reallocated Sectors",
"pendingSectors": "Pending Sectors",
"temperature": "Temperature",
"noSmartData": "No SMART test data available for this disk.",
"smartDataHint": "Run a SMART test in the SMART Test tab to get detailed health information.",
"observations": "Observations",
"observationsDescription": "The following observations have been recorded for this disk:",
"loadingObservations": "Loading observations...",
"firstSeen": "First",
"lastSeen": "Last",
"occurrences": "Occurrences",
"observationShort": "obs.",
"observationTypes": {
"smart_error": "SMART issue",
"io_error": "I/O issue",
"filesystem_error": "Filesystem issue",
"zfs_pool_error": "ZFS pool issue",
"connection_error": "Connection issue"
},
"health": {
"healthy": "Healthy",
"warning": "Warning",
"critical": "Critical",
"unknown": "Unknown",
"passed": "Passed",
"online": "Online",
"failed": "Failed",
"degraded": "Degraded"
},
"status": {
"active": "active",
"inactive": "inactive",
"offline": "offline",
"error": "error",
"failed": "failed"
},
"smartTest": {
"loading": "Loading SMART data...",
"toolsMissing": "SMART tools are not installed",
"nvmeToolRequired": "nvme-cli is required to run SMART tests on NVMe disks.",
"smartctlRequired": "smartmontools is required to run SMART tests on this disk.",
"installingTools": "Installing SMART tools...",
"installTools": "Install SMART tools",
"installFailed": "Installation failed",
"installFailedManual": "Installation failed. Try manually: apt-get install smartmontools nvme-cli",
"installToolsManual": "Failed to install tools. Try manually: apt-get install smartmontools nvme-cli",
"runTest": "Run SMART test",
"shortTest": "Short test (~2 min)",
"longTest": "Long test (1-4 hours)",
"extendedTest": "Extended test (background)",
"testHelp": "A short test takes about 2 minutes. The extended test runs in the background and can take several hours on large disks. You will receive a notification when it finishes.",
"startFailed": "Failed to start test",
"short": "Short",
"extended": "Extended",
"testInProgress": "{type} test is running",
"testWait": "Please wait until the test finishes. Buttons will unlock automatically.",
"noProgress": "This disk's firmware does not report progress. The test is running in the background.",
"lastTest": "Last test",
"nvmeMetrics": "NVMe health metrics",
"sasMetrics": "SAS/SCSI health metrics",
"id": "ID",
"attribute": "Attribute",
"value": "Value",
"worst": "Worst",
"status": "Status",
"viewFullReport": "View full SMART report",
"reportHelp": "Generate a detailed SMART report with analysis and recommendations.",
"loadingReport": "Loading report...",
"reportLoadFailed": "Failed to load report data.",
"statusValues": {
"passed": "Passed",
"failed": "Failed",
"running": "Running",
"aborted": "Aborted",
"unknown": "Unknown"
}
},
"historyTab": {
"loading": "Loading test history...",
"empty": "No test history",
"emptyHint": "Run a SMART test to start building history for this disk.",
"title": "Test history",
"latest": "latest",
"today": "Today",
"yesterday": "Yesterday",
"daysAgo": "{count} days ago",
"downloadJson": "Download JSON",
"delete": "Delete",
"confirmDelete": "Delete this test record?",
"note": "Test results are stored locally and used to generate detailed SMART reports."
},
"smartReport": {
"title": "SMART Health Report",
"printPdf": "Print / Save as PDF",
"printHintMac": "Use Cmd+P to save as PDF",
"printHintCtrl": "Use Ctrl+P to save as PDF",
"subtitle": "ProxMenux Monitor - Disk Health Analysis",
"htmlLang": "en",
"date": "Date",
"device": "Device",
"executiveSummary": "Executive Summary",
"smartStatus": "SMART Status",
"healthAssessment": "Disk Health Assessment",
"passedUpper": "PASSED",
"testAgeWarning": "This report is based on a SMART test performed {days} days ago ({date}). Disk health may have changed since then. We recommend running a new SMART test for up-to-date results.",
"healthyAssessment": "This disk is operating within normal parameters. All SMART attributes are within acceptable thresholds. The disk has been powered on for approximately {uptime} and is currently operating at {temperature}. {sectors}",
"failedAssessment": "This disk has reported a SMART health failure. Immediate action is required. Back up all critical data and plan for disk replacement.",
"noBadSectors": "No bad sectors have been detected.",
"reallocatedSectors": "{count} reallocated sector(s) detected - monitor closely.",
"healthyMeaningTitle": "What does this mean? Your disk is healthy!",
"attentionTitle": "ATTENTION REQUIRED: Problems detected",
"monitorTitle": "Some issues need monitoring",
"healthyMeaning": "In simple terms: This disk is working properly. You can continue using it normally. We recommend running periodic SMART tests (monthly) to catch any issues early.",
"criticalMeaning": "In simple terms: This disk has problems that could cause data loss. Back up your important files immediately and consider replacing the disk soon.",
"warningMeaning": "In simple terms: The disk is working but shows some signs of wear. It is not critical yet, but monitor it closely and keep your backups up to date.",
"issuesFound": "Issues found",
"criticalStatus": "Critical - requires immediate attention",
"warningStatus": "Warning - should be monitored",
"moreIssues": "...and {count} more issues (see details below)",
"dismissed": "Dismissed",
"occurrences": "Occurrences",
"errorSignature": "Error Signature",
"rawMessage": "Raw Message",
"firstSeen": "First Seen",
"lastSeen": "Last Seen",
"observationsIntro": "The following events have been detected and logged for this disk. These observations may indicate potential issues that require attention.",
"temperatureHistory": "Temperature history",
"temperatureSamples": "{count} samples",
"temperatureBands": "Bands: amber = warn (>= {warn}°C), red = critical (>= {hot}°C). Sampled every 60s.",
"observationSummary": "{unique} unique, {total} total",
"observationsTitle": "Observations & Events ({count} recorded, {total} total occurrences)",
"outdatedTestTitle": "Outdated Test Data ({days} days old)",
"diskInformation": "Disk Information",
"attributeCount": "{total} total",
"attributeCountWithWarnings": "{total} total, {warnings} warning(s)",
"entriesCount": "{count} entries",
"fullSelfTestHistory": "Full Self-Test History ({count} entries)",
"firmwareNoSelfTestLog": "This disk's firmware does not maintain an internal self-test log. Test results are tracked by ProxMenux Monitor.",
"ssdWearNote": "SSD life estimates are based on manufacturer-reported wear indicators. Actual lifespan may vary based on workload and usage patterns.",
"labels": {
"model": "Model",
"serial": "Serial",
"estimatedLife": "Estimated Life Remaining",
"totalDataWritten": "Total Data Written",
"availableSpare": "Available Spare",
"reportGenerated": "Report Generated",
"testType": "Test Type",
"lastTestType": "Last Test Type",
"testResult": "Test Result",
"attributesChecked": "Attributes Checked",
"capacity": "Capacity",
"type": "Type",
"family": "Family",
"formFactor": "Form Factor",
"interface": "Interface",
"transport": "Transport",
"linkSpeed": "Link Speed",
"blockSize": "Block Size",
"temperature": "Temperature",
"optimal": "Optimal",
"powerOnTime": "Power On Time",
"powerCycles": "Power Cycles",
"uncorrectedErrors": "Uncorrected Errors",
"pendingSectors": "Pending Sectors",
"crcErrors": "CRC Errors",
"grownDefects": "Grown Defects",
"lifeRemaining": "LIFE REMAINING",
"estimated": "Estimated",
"usageStatistics": "USAGE STATISTICS",
"percentageUsed": "Percentage Used",
"dataWritten": "Data Written",
"source": "Source",
"ssdLifeIndicator": "SSD Life Indicator",
"wearLevel": "Wear Level",
"powerOnHours": "Power On Hours",
"smartStatus": "SMART Status",
"reallocatedSectors": "Reallocated Sectors",
"note": "Note",
"metric": "Metric",
"attribute": "Attribute",
"value": "Value",
"worst": "Worst",
"thresholdShort": "Thr",
"raw": "Raw",
"result": "Result",
"completed": "Completed",
"atPowerOnHours": "At Power-On Hours",
"ataErrorLog": "ATA error log",
"status": "Status",
"atPoh": "At POH",
"date": "Date",
"min": "Min",
"avg": "Avg",
"max": "Max"
},
"sections": {
"nvmeWearLifetime": "NVMe Wear & Lifetime",
"extendedNvmeHealth": "Extended NVMe Health",
"ssdWearLifetime": "SSD Wear & Lifetime",
"nvmeHealthMetrics": "NVMe Health Metrics",
"sasHealthMetrics": "SAS/SCSI Health Metrics",
"smartAttributes": "SMART Attributes",
"selfTestResult": "Self-Test Result",
"lastSelfTestResult": "Last Self-Test Result",
"recommendations": "Recommendations"
},
"statusValues": {
"ok": "OK",
"warning": "Warning",
"critical": "Critical",
"failed": "Failed",
"passed": "Passed",
"supported": "Supported",
"notSupported": "Not supported",
"none": "None",
"info": "Info"
},
"selfTestStatus": {
"completedWithoutError": "Completed without error",
"completedWithReadFailure": "Completed: read failure",
"completedWithWriteFailure": "Completed: write failure",
"completedWithUnknownFailure": "Completed: unknown failure",
"interrupted": "Interrupted",
"aborted": "Aborted",
"inProgress": "In progress"
},
"testTypes": {
"short": "Short test",
"extended": "Extended test"
},
"observationTypes": {
"io": "I/O Error",
"ioPlural": "I/O Errors",
"smart": "SMART Error",
"smartPlural": "SMART Errors",
"filesystem": "Filesystem Error",
"filesystemPlural": "Filesystem Errors"
},
"duration": {
"yearDayHours": "{years}y {days}d ({hours}h)",
"dayHours": "{days}d ({hours}h)",
"yearDay": "{years}y {days}d",
"minutes": "{minutes} min",
"approxMinutes": "~{minutes} min"
},
"estimatedLife": {
"years": "~{value} years",
"days": "~{value} days",
"hours": "~{value} hours",
"excellent": "Excellent"
},
"units": {
"bytes": "bytes"
},
"metrics": {
"criticalWarning": "Critical Warning",
"mediaErrors": "Media Errors",
"unsafeShutdowns": "Unsafe Shutdowns",
"enduranceWarning": "Endurance Warning",
"controllerBusy": "Controller Busy",
"errorLogEntries": "Error Log Entries",
"warningTempTime": "Warning Temp Time",
"criticalTempTime": "Critical Temp Time",
"dataRead": "Data Read",
"hostReadCommands": "Host Read Cmds",
"hostWriteCommands": "Host Write Cmds",
"hotspotTemp": "Hotspot Temp",
"sensors": "Sensors"
},
"metricNotes": {
"controllerAlertFlags": "Controller alert flags",
"flashCellDamage": "Flash cell damage",
"powerLossWithoutFlush": "Power loss without flush",
"groupEnduranceAlert": "Group endurance alert",
"totalBusyTime": "Total busy time",
"mayIncludeBenignArtifacts": "May include benign artifacts",
"minutesInWarningRange": "Minutes in warning range",
"minutesInCriticalRange": "Minutes in critical range",
"totalHostReads": "Total host reads",
"totalReadCommands": "Total read commands",
"totalWriteCommands": "Total write commands",
"sensorHotspot": "Sensor[1] hotspot"
},
"empty": {
"nvmeMetrics": "No NVMe metrics available",
"sasMetrics": "No SAS metrics available",
"smartAttributes": "No SMART attributes available",
"selfTestHistory": "No self-test history available. Run a SMART self-test to see results here."
},
"footer": {
"generatedBy": "Report generated by ProxMenux Monitor"
},
"attributeLabels": {
"criticalWarning": "Critical warning",
"nvmeTemperature": "Temperature",
"temperatureSensor1": "Temperature sensor 1",
"temperatureSensor2": "Temperature sensor 2",
"temperatureSensor3": "Temperature sensor 3",
"availableSpare": "Available spare",
"availableSpareThreshold": "Available spare threshold",
"percentageUsed": "Percentage used",
"enduranceGroupWarning": "Endurance group warning",
"mediaErrors": "Media errors",
"mediaIntegrityErrors": "Media and data integrity errors",
"unsafeShutdowns": "Unsafe shutdowns",
"nvmePowerCycles": "Power cycles",
"nvmePowerOnHours": "Power-on hours",
"dataUnitsRead": "Data units read",
"dataUnitsWritten": "Data units written",
"hostReadCommands": "Host read commands",
"hostWriteCommands": "Host write commands",
"controllerBusyTime": "Controller busy time",
"errorLogEntries": "Error log entries",
"warningTempTime": "Warning temperature time",
"criticalTempTime": "Critical temperature time",
"warningCompositeTemperatureTime": "Warning composite temperature time",
"criticalCompositeTemperatureTime": "Critical composite temperature time",
"thermalManagementT1TransCount": "Thermal management T1 transitions",
"thermalManagementT2TransCount": "Thermal management T2 transitions",
"thermalManagementT1TotalTime": "Thermal management T1 total time",
"thermalManagementT2TotalTime": "Thermal management T2 total time"
},
"attributeExplanations": {
"criticalWarning": "Active alert flags from the NVMe controller. Any non-zero value requires immediate investigation.",
"nvmeTemperature": "Composite temperature reported by the controller. Sustained high temperatures cause thermal throttling and reduce NAND lifespan.",
"temperatureSensor1": "Primary temperature sensor, usually the NAND flash. Most representative of flash health.",
"temperatureSensor2": "Secondary sensor, often the controller die. Typically runs hotter than Sensor 1.",
"temperatureSensor3": "Tertiary sensor, if present. Location varies by manufacturer.",
"availableSpare": "Percentage of spare NAND blocks remaining for bad-block replacement. An alert triggers below the threshold.",
"availableSpareThreshold": "Manufacturer-set minimum for Available Spare. Below this, the drive flags a critical warning.",
"percentageUsed": "Drive estimate of endurance consumed based on actual versus rated write cycles. 100% means the rated TBW was reached; the drive may keep working beyond this.",
"mediaErrors": "Unrecoverable read/write errors on NAND flash. Any non-zero value indicates permanent cell damage. Growing count means replace soon.",
"mediaIntegrityErrors": "Unrecoverable errors detected by the controller. Non-zero means data corruption risk.",
"unsafeShutdowns": "Power losses without proper flush or shutdown. Very high counts risk metadata corruption and firmware issues.",
"nvmePowerCycles": "Total on/off cycles. Frequent cycling increases connector and capacitor wear.",
"nvmePowerOnHours": "Total cumulative hours the drive has been powered on since manufacture.",
"dataUnitsRead": "Total data read in 512 KB units. Multiply by 512,000 for bytes. Useful for calculating daily read workload.",
"dataUnitsWritten": "Total data written in 512 KB units. Compare with TBW rating to estimate remaining endurance.",
"hostReadCommands": "Total read commands issued by the host. A high ratio versus write commands indicates a read-heavy workload.",
"hostWriteCommands": "Total write commands issued by the host. Includes filesystem metadata writes.",
"controllerBusyTime": "Total minutes the controller spent processing I/O commands. High values indicate sustained heavy workload.",
"errorLogEntries": "Number of entries in the error information log. Often includes benign self-test artifacts; cross-check with Media Errors.",
"warningTempTime": "Total minutes spent above the warning temperature threshold. Causes performance throttling. Zero is ideal.",
"criticalTempTime": "Total minutes spent above the critical temperature threshold. The drive may shut down to prevent damage. Should always be zero.",
"warningCompositeTemperatureTime": "Total minutes the composite temperature exceeded the warning threshold.",
"criticalCompositeTemperatureTime": "Total minutes the composite temperature exceeded the critical threshold. Must be zero.",
"thermalManagementT1TransCount": "Number of times the drive entered light thermal throttling (T1). Indicates cooling issues.",
"thermalManagementT2TransCount": "Number of times the drive entered heavy thermal throttling (T2). Significant performance impact.",
"thermalManagementT1TotalTime": "Total seconds spent in light thermal throttling. Indicates sustained cooling problems.",
"thermalManagementT2TotalTime": "Total seconds spent in heavy thermal throttling. Severe performance degradation.",
"rawReadErrorRate": "Hardware read errors detected. High raw values on Seagate/Samsung drives are normal because their proprietary formula makes VALUE more important than raw.",
"writeErrorRate": "Errors encountered during write operations. A growing count may indicate head or media issues.",
"multiZoneErrorRate": "Errors when writing to multi-zone regions. Manufacturer-specific; a rising trend is concerning.",
"softReadErrorRate": "Read errors corrected by firmware without data loss. High values may indicate degrading media.",
"readErrorRetryRate": "Number of read retries needed. Occasional retries are normal; persistent growth indicates wear.",
"reportedUncorrect": "Errors that ECC could not correct. Any non-zero value means data was lost or unreadable.",
"reportedUncorrectableErrors": "Errors that ECC could not correct. Non-zero means data loss risk.",
"reallocatedSectorCount": "Bad sectors replaced by spare sectors from the reserve pool. A growing count means drive degradation.",
"retiredBlockCount": "NAND blocks retired due to wear or failure (SSD). Similar to Reallocated Sector Count for HDDs.",
"reallocatedEventCount": "Number of remap operations performed. Each event means a bad sector was replaced.",
"currentPendingSector": "Unstable sectors waiting to be remapped on next write. They may resolve or become permanently reallocated.",
"pendingSectors": "Sectors waiting to be remapped. They may resolve or become reallocated.",
"offlineUncorrectable": "Sectors that failed during offline scan and could not be corrected. Indicates possible data loss.",
"offlineUncorrectableSectorCount": "Uncorrectable sectors found during background scan. Data on these sectors is lost.",
"sataTemperature": "Current drive temperature. Sustained high temperatures accelerate wear and reduce lifespan.",
"temperatureCelsius": "Current drive temperature in Celsius. HDDs should usually stay below 45°C; SSDs below 60°C.",
"airflowTemperatureCel": "Temperature measured by the airflow sensor. Usually slightly lower than the main temperature sensor.",
"temperatureCase": "Temperature of the drive casing. Useful for monitoring enclosure ventilation.",
"temperatureInternal": "Internal temperature sensor. May read higher than case temperature.",
"sataPowerOnHours": "Total cumulative hours the drive has been powered on. Used to estimate age and plan replacements.",
"powerOnHoursAndMsec": "Total powered-on time with millisecond precision.",
"powerCycleCount": "Total number of complete power on/off cycles. Frequent cycling stresses electronics.",
"powerOffRetractCount": "Times the heads were retracted due to power loss (HDD). High values indicate unstable power supply.",
"unexpectedPowerLossCt": "Unexpected power losses (SSD). Can cause metadata corruption if write cache was active.",
"unsafeShutdownCount": "Power losses without proper shutdown (SSD). High values risk firmware corruption.",
"startStopCount": "Spindle motor start/stop cycles (HDD). Each cycle causes mechanical wear.",
"spinUpTime": "Time for platters to reach full operating speed (HDD). Increasing values may indicate motor bearing wear.",
"spinRetryCount": "Failed attempts to spin up the motor (HDD). Non-zero usually indicates power supply or motor issues.",
"calibrationRetryCount": "Number of head calibration retries (HDD). Non-zero may indicate mechanical issues.",
"seekErrorRate": "Errors during head positioning (HDD). High raw values on Seagate are often normal due to a proprietary formula.",
"seekTimePerformance": "Average seek operation performance (HDD). Declining values suggest mechanical degradation.",
"loadCycleCount": "Head load/unload cycles (HDD). Rated for 300K-600K cycles on most drives.",
"loadUnloadCycleCount": "Head load/unload cycles (HDD). Each cycle causes small wear on the ramp mechanism.",
"headFlyingHours": "Hours the read/write heads have been positioned over the platters (HDD).",
"highFlyWrites": "Writes where the head flew higher than expected (HDD). Data may not be written correctly.",
"gSenseErrorRate": "Shock or vibration events detected by the accelerometer (HDD). High values indicate physical disturbance.",
"diskShift": "Distance the disk has shifted from its original position (HDD). Temperature or shock related.",
"loadedHours": "Hours spent with heads loaded over the platters (HDD).",
"loadInTime": "Time of the head loading process. Manufacturer-specific diagnostic metric.",
"torqueAmplificationCount": "Times the drive needed extra torque to spin up. May indicate stiction or motor issues.",
"flyingHeight": "Head-to-platter distance during operation (HDD). Critical for read/write reliability.",
"loadFriction": "Friction detected during head loading (HDD). Increasing values suggest ramp mechanism wear.",
"loadUnloadRetryCount": "Failed head load/unload attempts (HDD). Non-zero indicates mechanical issues.",
"udmaCrcErrorCount": "Data transfer checksum errors on the SATA cable. Usually caused by a bad cable, loose connection, or port issue.",
"crcErrors": "Interface communication errors. Usually caused by cable or connection issues.",
"crcErrorCount": "Data transfer checksum errors. Replace the SATA cable if this value grows.",
"commandTimeout": "Commands that took too long and timed out. May indicate controller or connection issues.",
"interfaceCrcErrorCount": "CRC errors on the interface link. Cable or connector problem.",
"hardwareEccRecovered": "Read errors corrected by hardware ECC. Non-zero is normal; rapid growth warrants attention.",
"eccErrorRate": "Rate of ECC-corrected errors. Proprietary formula; VALUE matters more than raw count.",
"endToEndError": "Data corruption detected between the controller cache and host interface. Should always be zero.",
"endToEndErrorDetectionCount": "Number of parity errors in the data path. Non-zero indicates controller issues.",
"wearLevelingCount": "Average erase cycles per NAND block (SSD). Lower VALUE means more wear consumed.",
"wearRangeDelta": "Difference between most-worn and least-worn blocks (SSD). High values indicate uneven wear.",
"mediaWearoutIndicator": "Intel SSD life remaining estimate. Starts at 100 and decreases to 0 as endurance is consumed.",
"ssdLifeLeft": "Estimated remaining SSD lifespan percentage based on NAND wear.",
"percentLifetimeRemain": "Estimated remaining lifespan percentage. 100 means new; 0 means end of rated life.",
"percentLifetimeUsed": "Percentage of rated endurance consumed. Inverse of Percent Lifetime Remain.",
"availableReservedSpace": "Remaining spare blocks as a percentage (SSD). Low values reduce the drive's ability to handle bad blocks.",
"usedReservedBlockCount": "Reserve blocks consumed for bad-block replacement (SSD). A growing value means aging.",
"unusedReservedBlockCount": "Reserve blocks still available for bad-block replacement (SSD). Zero means no more bad-block replacement is possible.",
"programFailCount": "NAND write failures (SSD). A growing count means flash cells are wearing out.",
"programFailCountChip": "Program failures at chip level (SSD). Non-zero indicates NAND degradation.",
"eraseFailCount": "NAND erase operation failures (SSD). Non-zero indicates severe flash wear.",
"eraseFailCountTotal": "Total NAND erase failures (SSD). Combined with Program Fail Count, it shows overall NAND health.",
"eraseFailCountChip": "Erase failures at chip level (SSD). Non-zero means NAND degradation.",
"runtimeBadBlock": "Bad blocks discovered during normal operation (SSD). A growing count means flash is wearing out.",
"totalLbasWritten": "Total logical block addresses written. Multiply by 512 bytes for total data volume.",
"totalLbasRead": "Total logical block addresses read. Useful for calculating daily workload.",
"lifetimeWritesGib": "Total data written in GiB over the drive's lifetime.",
"lifetimeReadsGib": "Total data read in GiB over the drive's lifetime.",
"totalWritesGib": "Total data written in GiB. Compare with TBW rating for endurance estimate.",
"totalReadsGib": "Total data read in GiB.",
"nandWritesGib": "Raw NAND writes in GiB. Higher than host writes due to write amplification.",
"hostWrites32Mib": "Total data written by the host in 32 MiB units.",
"hostReads32Mib": "Total data read by the host in 32 MiB units.",
"hostWritesMib": "Total data written by the host in MiB.",
"hostReadsMib": "Total data read by the host in MiB.",
"nandGbWrittenTlc": "Total data written to TLC NAND cells in GB. Includes write amplification overhead.",
"nandGibWritten": "Total NAND writes in GiB. Higher than host writes due to write amplification and garbage collection.",
"averageBlockEraseCount": "Average number of erase cycles per NAND block (SSD). Drives are typically rated for 3K-100K cycles.",
"averageEraseCount": "Average erase cycles per block. Compare with rated endurance for remaining life estimate.",
"maxEraseCount": "Maximum erase cycles on any single block. A large gap with average indicates uneven wear.",
"totalEraseCount": "Sum of all erase cycles across all blocks. Overall NAND write volume indicator.",
"powerLossCapTest": "Result of the power-loss protection capacitor self-test (SSD). Failed means risk of data loss on power failure.",
"powerLossProtection": "Status of the power-loss protection mechanism. Enterprise SSDs use capacitors to flush cache on power loss.",
"successfulRainRecovCnt": "Successful recoveries using RAIN (Redundant Array of Independent NAND). Shows NAND parity is working.",
"ssdEraseFailCount": "Total erase failures across the SSD. Indicates overall NAND degradation.",
"ssdProgramFailCount": "Total write failures across the SSD. Indicates flash cell reliability issues.",
"throughputPerformance": "Overall throughput performance rating (HDD). Declining values indicate degradation.",
"unknownAttribute": "Vendor-specific attribute not defined in the SMART standard. Check manufacturer documentation.",
"freeFallSensor": "Free-fall events detected (laptop HDD). The heads are parked to prevent damage during drops.",
"grownDefectList": "Sectors remapped due to defects found during operation. Equivalent to Reallocated Sectors on SATA. A growing count means drive degradation.",
"readErrorsCorrected": "Read errors corrected by ECC. Normal for enterprise drives under heavy workload; only uncorrected errors are critical.",
"readEccFast": "Errors corrected by fast on-the-fly ECC during read operations. Normal in SAS drives.",
"readEccDelayed": "Errors requiring delayed or offline ECC correction during reads. Non-zero is acceptable but should not grow rapidly.",
"readUncorrectedErrors": "Read errors that ECC could not correct. Non-zero means data was lost or unreadable. Critical metric.",
"readDataProcessed": "Total data read by the drive. Useful for calculating daily workload.",
"writeErrorsCorrected": "Write errors corrected by ECC. Normal for enterprise drives.",
"writeUncorrectedErrors": "Write errors that ECC could not correct. Non-zero means potential data loss. Critical.",
"writeDataProcessed": "Total data written to the drive. Useful for workload analysis.",
"verifyErrorsCorrected": "Verification errors corrected during background verify operations.",
"verifyUncorrectedErrors": "Verify errors that could not be corrected. Non-zero indicates media degradation.",
"nonMediumErrors": "Controller or bus errors not related to the media itself. High count may indicate backplane or cable issues.",
"sasTemperature": "Current drive temperature. Enterprise SAS drives tolerate up to 55-60°C under sustained load.",
"sasPowerOnHours": "Total hours the drive has been powered on. Enterprise drives are rated for 24/7 operation.",
"startStopCycles": "Motor start/stop cycles. Enterprise SAS drives are rated for 50,000+ cycles.",
"loadUnloadCycles": "Head load/unload cycles. Enterprise drives are rated for 600,000+ cycles.",
"backgroundScanStatus": "Status of the SCSI background media scan. Runs continuously to detect surface defects."
},
"recommendations": {
"healthyTitle": "Disk is Healthy",
"healthyText": "All SMART attributes are within normal ranges. Continue regular monitoring.",
"criticalTitle": "Critical: Disk Health Issue Detected",
"criticalText": "SMART has reported a health issue. Back up all data immediately and plan for disk replacement.",
"reallocatedTitle": "Reallocated Sectors Detected ({count})",
"reallocatedText": "The disk has bad sectors that have been remapped. Monitor it closely and consider replacement if the count increases.",
"pendingTitle": "Pending Sectors ({count})",
"pendingText": "Some sectors are waiting to be reallocated. This may indicate an impending failure.",
"highTemperature": "High Temperature ({temperature}°C)",
"hotHdd": "The HDD is running hot. Improve case airflow or add cooling.",
"hotSsd": "The SSD is running hot. Check airflow around the drive.",
"hotNvme": "The NVMe is overheating. Consider adding a heatsink or improving case airflow.",
"maintenanceTitle": "Regular Maintenance",
"maintenanceText": "Schedule an extended SMART test every month to catch issues early.",
"backupTitle": "Backup Strategy",
"backupText": "Back up critical data regularly, regardless of disk health.",
"nvmeWarningTitle": "NVMe Critical Warning Active (0x{value})",
"nvmeWarningText": "The NVMe controller has raised an alert. Back up data immediately and investigate further.",
"nvmeMediaTitle": "NVMe Media Errors Detected ({count})",
"nvmeMediaText": "Unrecoverable NAND flash errors indicate physical damage. Back up data and plan for replacement.",
"unsafeTitle": "High Unsafe Shutdown Count ({count})",
"unsafeText": "Frequent power losses increase the risk of firmware corruption. Ensure stable power or use a UPS.",
"seagateTitle": "Seagate Raw_Read_Error_Rate - Normal Behavior",
"seagateText": "Seagate drives report very large raw values for attribute #1. This is expected; only the normalized value matters and it should remain at 100.",
"smrTitle": "SMR Drive Detected - Write Limitations",
"smrText": "SMR disks write random data more slowly and may stall under a heavy mixed workload. They suit backups and archives, but are not recommended as primary Proxmox storage or ZFS vdevs."
}
},
"ataErrors": {
"idnf": "Sector address not found - possible bad sector or cable issue",
"unc": "Uncorrectable read error - bad sector",
"abrt": "Command aborted by drive",
"amnf": "Address mark not found - surface damage",
"tk0nf": "Track 0 not found - drive hardware failure",
"bbk": "Bad block detected",
"icrc": "Interface CRC error - cable or connector issue",
"mc": "Media changed",
"mcr": "Media change requested",
"wp": "Write protected"
},
"scheduleTab": {
"loading": "Loading schedules...",
"automaticTests": "Automatic SMART tests",
"toggleHelp": "Enable or disable all scheduled tests",
"enabled": "Enabled",
"disabled": "Disabled",
"configured": "Configured schedules",
"disks": "Disks",
"allDisks": "all disks",
"keepResults": "Keep {count} results",
"empty": "No scheduled tests configured",
"emptyHint": "Create a schedule to run SMART tests automatically.",
"edit": "Edit schedule",
"new": "New schedule",
"testType": "Test type",
"frequency": "Frequency",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly",
"dailyAt": "Daily at {time}",
"weeklyAt": "{day} at {time}",
"monthlyAt": "Day {day} of month at {time}",
"dayOfWeek": "Day of week",
"dayOfMonth": "Day of month",
"timeHour": "Time (hour)",
"retention": "Keep results",
"lastN": "Last {count}",
"keepAll": "Keep all",
"saving": "Saving...",
"save": "Save schedule",
"cancel": "Cancel",
"add": "Add schedule",
"note": "Scheduled tests run automatically via cron. Results are saved to the SMART history.",
"days": {
"sunday": "Sunday",
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday"
}
}
},
"details": {
"temperature": {
"title": "CPU Temperature",
"diskTitle": "Temperature",
"current": "Current",
"min": "Min",
"avg": "Avg",
"max": "Max",
"seriesName": "Temperature",
"noData": "No temperature data available for this period",
"collectionHint": "Data is collected every 60 seconds",
"openHistory": "Open temperature history",
"collectingSamples": "Collecting samples — chart populates after ~2 minutes",
"sampleInterval": "Samples are collected every 60 seconds",
"timeframes": {
"hour": "1 Hour",
"day": "24 Hours",
"week": "7 Days",
"month": "30 Days"
},
"status": {
"hot": "Hot",
"warm": "Warm",
"normal": "Normal"
}
},
"processes": {
"topByCpu": "Top processes by CPU",
"topByMemory": "Top processes by Memory",
"cpuDescription": "Current CPU usage per process, as a fraction of the host's total CPU - same scale as the CPU Usage card above. Refreshes every 3 s while open.",
"memoryDescription": "Current resident memory per process. Refreshes every 3 s while open.",
"filterPlaceholder": "Filter by command line, user or PID...",
"pid": "PID",
"user": "User",
"command": "Command",
"cpuPercent": "CPU %",
"memory": "Memory",
"memPercent": "Mem %",
"noMatches": "No processes match the filter",
"captured": "Captured {time}",
"matchCount": "{count} match of {total} processes",
"matchesCount": "{count} matches of {total} processes",
"topCount": "Top {shown} of {total} processes",
"loadFailed": "Failed to fetch processes",
"lifetimeAverageTitle": "Average CPU% across this process's lifetime - useful for finding long-running idle baselines",
"averageShort": "avg"
},
"processInfo": {
"titleFallback": "Process",
"descriptionLive": "Live snapshot from /proc/{pid}. Auto-refreshes every {seconds} s while open.",
"descriptionExited": "Last snapshot from /proc/{pid} before the process finished.",
"finishedTitle": "This process has finished",
"finishedDescription": "It was likely a short-lived helper, script, pct exec, or one-shot command that completed while the modal was open. The data below is the last snapshot captured before it exited — not a stale or broken read.",
"loading": "Loading…",
"fetchFailed": "Failed to fetch process",
"captured": "Captured",
"lastSeen": "Last seen",
"sections": {
"overview": "Overview",
"resources": "Resources",
"command": "Command",
"lifetime": "Lifetime"
},
"labels": {
"state": "State",
"parent": "Parent",
"threads": "Threads",
"openFds": "Open FDs",
"user": "User",
"group": "Group",
"cpu": "CPU",
"memory": "Memory",
"residentRss": "Resident (RSS)",
"virtualSize": "Virtual size",
"swap": "Swap",
"ioRead": "I/O read",
"ioWrite": "I/O write",
"name": "Name",
"commandLine": "Command line",
"executable": "Executable",
"workingDir": "Working dir",
"started": "Started",
"runningFor": "Running for"
},
"states": {
"running": "Running",
"sleeping": "Sleeping",
"diskWait": "Disk wait",
"zombie": "Zombie",
"stopped": "Stopped",
"tracingStop": "Tracing stop",
"dead": "Dead",
"idle": "Idle",
"exited": "Exited"
}
}
},
"vmLxc": {
"loadingTitle": "Loading VMs and LXCs...",
"loadingDescription": "Fetching VM and LXC container status",
"loadingError": "Error loading virtual machines: {error}",
"totalVmLxc": "Total VMs & LXCs",
"totalCpuAllocated": "Total CPU Allocated",
"totalMemory": "Total Memory",
"totalDisk": "Total Disk",
"running": "running",
"stopped": "stopped",
"vms": "VMs",
"used": "Used",
"configured": "Configured",
"inUse": "In use",
"allocated": "Alloc",
"total": "Total",
"utilization": "util",
"idle": "Idle",
"listTitle": "Virtual Machines & Containers",
"empty": "No virtual machines found",
"uptime": "Uptime: {uptime}",
"cpuUsage": "CPU Usage",
"memory": "Memory",
"disk": "Disk",
"diskUsage": "Disk Usage",
"diskIo": "Disk I/O",
"networkIo": "Network I/O",
"sinceBoot": "since boot",
"loadingConfiguration": "Loading configuration...",
"resources": "Resources",
"cpuCores": "CPU Cores",
"notes": "Notes",
"hideNotes": "Hide Notes",
"lessInfo": "Less Info",
"info": "Info",
"ipAddresses": "IP Addresses",
"enterNotes": "Enter notes here...",
"editNotes": "Edit",
"savingNotes": "Saving...",
"notesDecodeError": "Error decoding notes. Please edit to fix.",
"noNotes": "No notes yet. Click Edit to add notes.",
"containerConfiguration": "Container Configuration",
"mountedFromContainer": "Mounted from inside the container",
"openTerminal": "Open Terminal",
"coreCount": {
"one": "{count} core",
"few": "{count} cores",
"many": "{count} cores"
},
"duration": {
"dhm": "{days}d {hours}h {minutes}m"
},
"details": {
"sourceHost": "Source (host)",
"mountedAtCt": "Mounted at (CT)",
"total": "Total",
"used": "Used",
"available": "Available",
"swap": "Swap",
"privilegeLevel": "Privilege Level",
"gpuPassthrough": "GPU Passthrough",
"hardwareDevices": "Hardware Devices",
"cpuSockets": "CPU Sockets",
"cpuType": "CPU Type",
"numa": "NUMA",
"bios": "BIOS",
"machineType": "Machine Type",
"vga": "VGA",
"qemuAgent": "QEMU Agent",
"tabletPointer": "Tablet Pointer",
"localTime": "Local Time",
"rawConfig": "Raw config",
"scsiController": "SCSI controller",
"dnsNameserver": "DNS Nameserver",
"searchDomain": "Search Domain",
"hostname": "Hostname",
"storageType": "{type} storage",
"mountAttributes": "Mount attributes (LXC config)",
"runtimeMountOptions": "Runtime mount options",
"privileged": "Privileged",
"unprivileged": "Unprivileged",
"hardware": "Hardware",
"pciPassthrough": "PCI Passthrough",
"usbDevices": "USB Devices",
"serialPorts": "Serial Ports",
"bridge": "Bridge",
"enabled": "Enabled",
"disabled": "Disabled",
"on": "on",
"off": "off",
"included": "included",
"excluded": "excluded",
"storage": "Storage",
"rootFilesystem": "Root filesystem",
"efiDisk": "EFI disk",
"tpmState": "TPM state",
"mountPoint": "Mount point",
"mountPointIndexed": "Mount point {index}",
"network": "Network",
"networkInterface": "Network interface {index}",
"hostInterface": "Host: {interface}",
"gateway": "Gateway",
"gatewayV6": "Gateway v6",
"type": "Type",
"rateLimit": "Rate limit",
"firewall": "Firewall",
"backup": "Backup",
"replicate": "Replicate",
"volume": "Volume",
"path": "Path",
"media": "Media",
"discard": "Discard",
"cache": "Cache",
"efiType": "EFI type",
"preEnrolledKeys": "Pre-enrolled keys",
"serial": "Serial",
"mountTypes": {
"pveVolume": "PVE volume",
"pveStorageBind": "bind from PVE storage",
"hostBind": "bind from host",
"adHoc": "ad-hoc inside CT"
},
"mountStatus": {
"stale": "stale",
"notMounted": "not mounted",
"hostDetached": "host detached",
"readOnly": "read-only",
"stopped": "stopped",
"mounted": "mounted"
}
},
"logs": {
"header": "Logs for {name} (VMID: {vmid})",
"node": "Node",
"type": "Type",
"totalLines": "Total lines",
"generated": "Generated"
},
"tabs": {
"status": "Status",
"mounts": "Mounts",
"backups": "Backups",
"updates": "Updates",
"firewall": "Firewall"
},
"actions": {
"start": "Start",
"shutdown": "Shutdown",
"reboot": "Reboot",
"forceStop": "Force Stop",
"working": "Working..."
},
"confirm": {
"forceStopTitle": "Force Stop",
"rebootTitle": "Reboot",
"forceStopDescription": "This skips the guest OS shutdown sequence and can corrupt running databases or filesystems. The guest is killed immediately.",
"rebootDescription": "This forces a reboot without waiting for the guest OS to flush pending writes. Use a graceful Shutdown when possible.",
"typeToConfirm": "Type {vmid} to confirm:",
"guest": "Guest:"
},
"guestTypes": {
"container": "container",
"vm": "VM",
"containerUi": "Container"
},
"backups": {
"title": "Backups",
"create": "Create Backup",
"available": "Available backups",
"loading": "Loading backups...",
"empty": "No backups found",
"emptyHint": "Create your first backup using the button above"
},
"updatesPanel": {
"pendingTitle": "Pending package updates",
"total": "{count} total",
"lastChecked": "Last checked:",
"applyWith": "Apply with",
"securityUpdate": "Security update",
"security": "security",
"clickToView": "Click to view pending packages",
"updateSingular": "update",
"updatePlural": "updates",
"packagePending": "{count} package pending",
"packagesPending": "{count} packages pending",
"securityUpdatePending": "{count} security update",
"securityUpdatesPending": "{count} security updates",
"fullListInside": "Full list available inside the container:",
"loadingMountPoints": "Loading mount points..."
},
"errors": {
"unknown": "Unknown error",
"backupStartFailed": "Failed to start backup: {message}",
"controlFailed": "Failed to {action} VM {vmid}: {message}",
"saveNotesFailed": "Error saving notes. Please try again."
},
"backupModal": {
"title": "Backup {type} {vmid} ({name})",
"description": "Configure backup options for this {type}",
"storage": "Storage",
"selectStorage": "Select storage",
"free": "free",
"mode": "Mode",
"notification": "Notification",
"useGlobalSettings": "Use global settings",
"alwaysNotify": "Always notify",
"notifyOnFailure": "Notify on failure",
"neverNotify": "Never notify",
"protected": "Protected (prevent accidental deletion)",
"pbsChangeMode": "PBS change detection mode",
"forPbsStorage": "for PBS storage",
"notes": "Notes",
"variables": "Variables: {{cluster}}, {{guestname}}, {{node}}, {{vmid}}",
"creating": "Creating...",
"submit": "Backup",
"typeContainer": "container",
"typeVirtualMachine": "virtual machine",
"modes": {
"snapshot": "Snapshot",
"suspend": "Suspend",
"stop": "Stop"
},
"changeModes": {
"default": "Default",
"legacy": "Legacy",
"data": "Data"
}
},
"firewall": {
"title": "Firewall Logs",
"refresh": "Refresh",
"loading": "Loading firewall log...",
"disabledTitle": "Firewall is not enabled for this {type}",
"disabledHint": "Enable it in the Proxmox UI under {type} -> Firewall -> Options and add at least one rule with log: info or higher so packets start being recorded. New entries will appear here automatically on the next refresh.",
"readFailed": "Failed to read firewall log",
"empty": "No firewall events recorded yet.",
"emptyHint": "Rules with log: info or higher will populate this view as packets arrive."
}
},
"settings": {
"title": "Settings",
"description": "Manage your dashboard preferences",
"common": {
"health": "Health",
"alerts": "Alerts"
},
"interfaceLanguage": {
"title": "Interface language",
"description": "Choose the language used by the Monitor dashboard. Missing translations fall back to English.",
"label": "Dashboard language",
"fallbackNote": "Untranslated text is shown in English until the community fills it in.",
"statusComplete": "complete",
"statusPartial": "partial",
"statusNeedsTranslation": "community translation needed"
},
"networkUnits": {
"title": "Network Units",
"description": "Change how network traffic is displayed",
"label": "Network Unit Display",
"bytes": "Bytes",
"bits": "Bits"
},
"healthMonitor": {
"title": "Health Monitor",
"description": "Configure how long dismissed alerts stay hidden for each category. Changes apply to existing and future dismissed alerts.",
"category": "Category",
"suppressionDuration": "Suppression Duration",
"hours": "Hours",
"permanentNotice": "Alerts for {category} will stay hidden permanently after dismissal.",
"temperatureSafetyNotice": "Critical CPU temperature alerts still appear to protect the hardware.",
"longSuppressionNotice": "Long suppression period. Dismissed alerts in this category will stay hidden for a long time.",
"footerNote": "These settings apply when you dismiss a warning from the Health Monitor. Critical CPU temperature alerts always appear to protect your hardware.",
"activeSuppressions": "Active Suppressions",
"activeSuppressionsDescription": "Alerts you have hidden from the Health Monitor. Permanent dismisses can only be reverted here. Editing requires the Health Monitor",
"noActiveSuppressions": "No active suppressions. Dismissed alerts from the Health Monitor will appear here.",
"permanent": "Permanent",
"daysRemaining": "{count}d remaining",
"hoursRemaining": "{count}h remaining",
"reEnableDisabledTitle": "Enable Health Monitor Edit mode to re-enable",
"reEnableQueuedTitle": "Cancel re-enable; it will not be applied on Save",
"reEnableTitle": "Queue this alert for re-enable on Save",
"reEnable": "Re-enable",
"labels": {
"category": "category",
"severity": "severity",
"dismissed": "dismissed"
},
"errorNames": { "security_login_attempts": "Security login attempts" },
"options": {
"24h": "24 hours",
"3d": "3 days",
"1w": "1 week",
"1m": "1 month",
"1y": "1 year",
"custom": "Custom",
"permanent": "Permanent"
},
"categories": {
"cpu": "CPU Usage & Temperature",
"memory": "Memory & Swap",
"storage": "Storage Mounts & Space",
"disk": "Disk I/O & Errors",
"network": "Network Interfaces",
"vms": "VMs & Containers",
"services": "PVE Services",
"logs": "System Logs",
"updates": "System Updates",
"security": "Security & Certificates",
"temperature": "Temperature"
}
},
"remoteStorage": {
"title": "Remote Storage Exclusions",
"description": "Exclude remote storages (PBS, NFS, CIFS, etc.) from health monitoring and notifications. Use this for storages that are intentionally offline or have limited API access.",
"emptyTitle": "No remote storages detected",
"emptyDescription": "PBS, NFS, CIFS, and other remote storages will appear here when configured",
"storage": "Storage",
"offline": "Offline or unavailable",
"namespaceRestricted": "Reachable; datastore size hidden by ACL",
"healthHelp": "When OFF, this storage will not trigger warnings or critical alerts in the Health Monitor.",
"alertsHelp": "When OFF, no notifications will be sent for this storage."
},
"networkInterfaces": {
"title": "Network Interface Exclusions",
"description": "Exclude network interfaces (bridges, bonds, physical NICs) from health monitoring and notifications. Use this for interfaces that are intentionally disabled or unused.",
"emptyTitle": "No network interfaces detected",
"interface": "Interface",
"down": "DOWN",
"excluded": "Excluded",
"noIp": "No IP",
"healthHelp": "When OFF, this interface will not trigger warnings or critical alerts in the Health Monitor.",
"alertsHelp": "When OFF, no notifications will be sent for this interface."
},
"snippets": {
"title": "Snippets storage",
"description": "Where ProxMenux installs hookscripts, for example the GPU passthrough guard for VMs/LXCs. Pick a shared storage in cluster setups so VMs and LXCs migrate cleanly between nodes;",
"localNote": "is node-specific and breaks migration.",
"placeholder": "Pick a storage...",
"footer": "Existing VMs/LXCs already configured with the previous storage keep working. Only new GPU passthrough operations, or running \"sync hookscripts\" on the host, will use the new selection."
},
"lxcUpdateDetection": {
"title": "LXC Update Detection",
"descriptionStart": "Periodically check running Debian/Ubuntu/Alpine LXC containers for pending package updates",
"descriptionEnd": " and surface them on the dashboard. The corresponding notification toggle in Notifications -> Services appears only while detection is enabled.",
"enableLabel": "Enable LXC update detection",
"loadFailed": "Could not load the LXC update detection setting.",
"saveFailed": "Could not save the LXC update detection setting.",
"purgedMessage": "{count} LXC entries removed from the registry. Re-enabling detection will repopulate them on the next scan cycle."
},
"notifications": {
"title": "Notifications",
"description": "Configure notification channels and event filters. Receive alerts via Telegram, Gotify, Discord, or Email.",
"disabledDescription": "Get real-time alerts about your Proxmox environment via Telegram, Discord, Gotify, or Email.",
"enableService": "Enable notification service",
"enableServiceDescription": "Monitor system health, VM/CT events, backups, security alerts, and cluster status. PVE webhook integration is configured automatically.",
"enableButton": "Enable Notifications",
"configuring": "Configuring...",
"webhookConfigured": "PVE webhook configured automatically. Proxmox will send notifications to ProxMenux.",
"webhookFailed": "Automatic PVE configuration failed: {error}",
"webhookManualSetup": "Notifications are enabled. Run the commands below on the PVE host to complete webhook setup.",
"serviceRunning": "Service running",
"serviceStopped": "Service stopped",
"sentLast24h": "{count} sent in last 24h",
"channelCountOne": "{count} channel",
"channelCountMany": "{count} channels",
"activateService": "Activate the notification service",
"channels": "Channels",
"test": { "sent": "Test notification sent successfully.", "failed": "The test notification failed." },
"errors": { "saveFailed": "Could not save notification settings.", "unknown": "Unknown error", "setupUnavailable": "Could not reach the setup service." },
"categories": {
"vm_ct": { "label": "VM / CT" }, "backup": { "label": "Backups" }, "resources": { "label": "Resources" },
"storage": { "label": "Storage" }, "network": { "label": "Network" }, "security": { "label": "Security" },
"cluster": { "label": "Cluster" }, "services": { "label": "Services" }, "health": { "label": "Health Monitor" },
"updates": { "label": "Updates" }, "other": { "label": "Other" }
},
"eventTypes": {
"state_change": "Health state changed", "new_error": "New health issue", "error_resolved": "Recovery notification", "error_escalated": "Health issue escalated", "health_degraded": "Health check degraded", "lxc_updates_available": "LXC updates available (experimental)",
"vm_start": "VM started", "vm_start_warning": "VM started (warnings)", "vm_stop": "VM stopped", "vm_shutdown": "VM shut down", "vm_fail": "VM failed", "vm_restart": "VM restarted", "ct_start": "CT started", "ct_start_warning": "CT started (warnings)", "ct_stop": "CT stopped", "ct_shutdown": "CT shut down", "ct_restart": "CT restarted", "ct_fail": "CT failed",
"migration_start": "Migration started", "migration_complete": "Migration complete", "migration_warning": "Migration completed with warnings", "migration_fail": "Migration failed", "replication_fail": "Replication failed", "replication_complete": "Replication complete",
"backup_start": "Backup started", "backup_complete": "Backup complete", "backup_warning": "Backup completed with warnings", "backup_fail": "Backup failed", "host_backup_start": "Host backup started", "host_backup_complete": "Host backup complete", "host_backup_fail": "Host backup failed", "snapshot_complete": "Snapshot created", "snapshot_fail": "Snapshot failed",
"cpu_high": "High CPU usage", "ram_high": "High memory usage", "temp_high": "High temperature", "disk_space_low": "Low disk space", "disk_io_error": "Disk failure / I/O error", "storage_unavailable": "Storage unavailable", "smart_test_complete": "SMART test completed", "smart_test_failed": "SMART test failed", "gpu_mode_switch": "GPU mode switched", "gpu_passthrough_blocked": "GPU passthrough blocked", "pci_passthrough_conflict": "PCIe device conflict", "load_high": "High system load",
"network_down": "Network connectivity lost", "network_latency": "High network latency", "auth_fail": "Authentication failure", "ip_block": "IP blocked by Fail2Ban", "firewall_issue": "Firewall issue detected", "user_permission_change": "User permission changed", "burst_auth_fail": "Authentication failure burst", "burst_ip_block": "IP block burst", "burst_disk_io": "Disk I/O error burst", "burst_cluster": "Cluster connection flapping", "burst_service_fail": "Multiple service failures", "burst_system": "Multiple system problems", "burst_generic": "Multiple related events",
"split_brain": "Split-brain detected", "node_disconnect": "Node disconnected", "node_reconnect": "Node reconnected", "system_startup": "System startup report", "system_shutdown": "System shutting down", "system_reboot": "System rebooting", "system_restore_completed": "Host restore completed", "system_problem": "System problem detected", "service_fail": "Service failed", "oom_kill": "Out-of-memory process kill", "service_fail_batch": "Multiple service failures", "cron_output": "Cron job output", "system_mail": "Smartd / system mail", "webhook_test": "Webhook test",
"update_available": "Updates available (legacy)", "unknown_persistent": "Check unavailable", "health_persistent": "Active health issues (daily)", "health_issue_new": "New health issue", "health_issue_resolved": "Health issue resolved", "update_summary": "Updates available", "pve_update": "Proxmox VE update available", "update_complete": "Update completed", "ai_model_migrated": "AI model updated automatically", "proxmenux_update": "ProxMenux update available", "mount_stale": "Remote mount is stale", "mount_readonly": "Remote mount is read-only", "lxc_disk_low": "LXC rootfs nearly full", "vm_disk_low": "VM filesystems nearly full", "lxc_mount_low": "LXC mount nearly full", "pve_storage_full": "PVE storage nearly full", "zfs_pool_full": "ZFS pool nearly full", "post_install_update": "ProxMenux optimization updates available", "secure_gateway_update_available": "Secure Gateway update available", "nvidia_driver_update_available": "NVIDIA driver update available", "coral_driver_update_available": "Coral TPU driver update available"
},
"ui": {
"quietHours": "Quiet hours", "quietHoursDescription": "During this window only CRITICAL events reach this channel.", "from": "From", "until": "Until",
"quietSameTime": "Set a different start and end time to activate.", "quietActive": "Active now — only CRITICAL events pass until {time}.", "quietInactive": "Inactive now — starts at {time}.",
"nextDigest": "Next digest in {hours}h {minutes}m (at {time}).", "dailyDigest": "Daily digest of INFO events", "dailyDigestDescription": "INFO events accumulate during the day and arrive once as a summary. CRITICAL and WARNING events are never delayed.",
"sendAt": "Send at", "notificationCategories": "Notification categories", "enableTelegram": "Enable Telegram", "setupGuide": "+setup guide", "botToken": "Bot Token", "chatId": "Chat ID", "topicId": "Topic ID", "optional": "optional",
"topicHint": "For supergroups with topics enabled. Leave empty for regular chats.", "richMessages": "Rich messages", "richMessagesDescription": "Enrich notifications with contextual emojis and icons", "sendTest": "Send test",
"enableGotify": "Enable Gotify", "serverUrl": "Server URL", "appToken": "App Token", "enableDiscord": "Enable Discord", "webhookUrl": "Webhook URL", "enableEmail": "Enable Email",
"smtpHost": "SMTP host", "port": "Port", "tlsMode": "TLS mode", "noTls": "None (port 25)", "username": "Username", "password": "Password", "appPassword": "App password",
"fromAddress": "From address", "toAddresses": "To addresses (comma-separated)", "subjectPrefix": "Subject prefix", "emailHint": "Leave SMTP host empty to use local sendmail. For Gmail, use an app password.",
"enableApprise": "Enable Apprise", "urlFormats": "+URL formats", "appriseUrl": "Apprise URL", "showUrl": "Show URL", "hideUrl": "Hide URL", "appriseDescription": "One URL lets Apprise route the notification to the right service. Examples:", "seeThe": "See the", "fullList": "full list", "displayName": "Display name", "systemHostname": "System hostname",
"displayNameHint": "Name shown in notifications. Edit it or leave it empty to use the system hostname.", "activeFooter": "Notifications are active. Each channel follows its own category and event selection.",
"inactiveFooter": "Enable notifications to receive system, health and security alerts through the configured channels."
},
"ai": {
"title": "AI enhancement", "enhancedMessages": "AI-enhanced messages", "enhancedMessagesDescription": "Use AI to generate contextual notification messages", "provider": "Provider",
"customBaseUrl": "Custom base URL", "customBaseUrlPlaceholder": "Leave empty for OpenAI or enter a custom endpoint", "customBaseUrlHint": "For OpenAI-compatible APIs such as BytePlus, LocalAI, LM Studio or vLLM.",
"apiKey": "API key", "model": "Model", "promptMode": "Prompt mode", "defaultPrompt": "Default prompt", "customPrompt": "Custom prompt", "language": "Language", "selectLanguage": "Select language",
"detailLevel": "Detail level per channel", "suggestions": "AI suggestions", "suggestionsDescription": "Allow AI to add brief troubleshooting tips based on log context", "customPromptPlaceholder": "Enter your custom instructions for the AI…", "testing": "Testing…", "testConnection": "Test connection",
"ollamaUrl": "Ollama URL", "getKey": "Get key", "loadModelsPlaceholder": "Click Load to fetch models", "selectModel": "Select model", "noModelsLoaded": "No models loaded — click Load", "noModelSelected": "Select a model first. Click Load to fetch the available models.", "load": "Load", "modelsAvailable": "{count} models available", "detailHint": "AI translates and formats notifications in your selected language. Each channel can use a different level of detail.", "beta": "BETA", "export": "Export", "import": "Import", "communityPrompts": "Community prompts", "customPromptHint": "Define your own rules and format. You control the detail and style of all notifications. Export the prompt to share it, or import one from the community.", "local": "Local",
"detailLevels": { "brief": "Brief", "standard": "Standard", "detailed": "Detailed" },
"providersInfo": "AI provider information", "loadModelsHint": "Click Load to fetch the available models from this provider.", "openAiCompatible": "OpenAI-compatible APIs",
"openAiCompatibleDescription": "Set a custom base URL to use an OpenAI-compatible API. Supported services include:", "anyOpenAiService": "Any service using the OpenAI format",
"providers": { "groq": "Very fast, with a generous free tier. A good place to start.", "openai": "Industry standard, accurate and widely used.", "anthropic": "Excellent for writing and translation; fast and economical.", "gemini": "A free tier is available, with a good quality-to-price ratio.", "ollama": "Uses models on your Ollama server. Fully local, private and free to run.", "openrouter": "Access to more than 100 models through one API key." }
},
"telegramGuide": {
"title": "Telegram bot setup guide", "createBot": "Create a bot with BotFather", "create1": "1. Open Telegram and find", "create2": "2. Send the command", "create3": "3. Choose a name for the bot, for example ProxMenux Notifications.", "create4": "4. Choose a username ending in bot, for example proxmenux_alerts_bot.",
"getToken": "Get the bot token", "tokenIntro": "After creating the bot, BotFather gives you a token like this:", "tokenPaste": "Copy the token and paste it into the Bot Token field.", "getChatId": "Get your Chat ID",
"optionA": "Option A: use a bot (easiest)", "chat1": "1. Find", "or": "or", "chat2": "2. Send any message; the bot replies with your Chat ID.", "optionB": "Option B: manual method",
"manual1": "1. Send a message to your new bot.", "manual2": "2. Open this URL in your browser and replace YOUR_TOKEN:", "manual3": "3. Find this value; its number is your Chat ID:",
"groups": "Groups and channels", "group1": "1. Add the bot to the group or channel as an administrator.", "group2": "2. Send a message in the group.", "group3": "3. Use the getUpdates URL above to find the group Chat ID.", "group4": "4. Group IDs are negative numbers, for example",
"summary": "Quick summary", "summaryToken": "Identifies your bot (from BotFather)", "summaryChat": "Tells the bot where to send messages (your ID or a group ID)"
},
"validation": {
"discordWebhook": "Enter a Discord webhook URL in the format https://discord.com/api/webhooks/<id>/<token>.", "invalidUrl": "Enter a valid URL.", "unsupportedScheme": "Only an address beginning with http:// or https:// is allowed.", "localPveApi": "The address cannot point to the local PVE API (localhost:8006/8007).", "metadataIp": "The link-local metadata IP cannot be used as a Gotify endpoint."
},
"customPromptInfo": {
"title": "Custom prompt mode", "description": "Create your own AI prompt for ProxMenux Monitor notifications", "whatTitle": "What is a custom prompt?", "whatDescription": "The prompt defines how AI formats your notifications. A custom prompt lets you control the style, level of detail and format of every message.", "requirements": "Important requirements", "formatIntro": "Your prompt must use this output format:", "formatTitleThen": "followed by the title, then", "formatBodyThen": "followed by the message", "plainText": "Use plain text only, without Markdown, so the result works in every channel.", "rawData": "The prompt receives raw Proxmox event data as input.", "language": "Define the output language in the prompt. The Language selector only applies to the default mode.", "gettingStarted": "Getting started", "gettingStartedDescription": "An example prompt is ready to help you start. You can adjust it, export it to share with others, or import a prompt from the community.", "loadExample": "Load example", "startFromScratch": "Start from scratch"
}
},
"optimizations": {
"title": "ProxMenux Optimizations",
"description": "System optimizations and utilities installed via ProxMenux",
"emptyTitle": "No ProxMenux optimizations installed yet",
"emptyDescription": "Run ProxMenux to configure system optimizations",
"installedTools": "Installed Tools",
"activeCount": "{count} active",
"viewUpdates": "View available updates",
"updateCount": "{count} updates",
"updateOneTitle": "Update: {name}",
"updateManyTitle": "Update {count} optimizations",
"updateOneDescription": "Re-running {functionName} from the {source} flow.",
"updateManyDescription": "Re-running {count} post-install functions in sequence.",
"legacySourceTitle": "Legacy optimization - click to view source",
"sourceTitle": "Click to view source code",
"legacy": "legacy",
"updateToolTitle": "Update {name} to v{version}",
"availableUpdates": "Available updates",
"availableUpdatesDescription": "{count} optimizations can be updated to a newer version.",
"selectedCount": "{selected} of {total} selected",
"updateSelected": "Update selected"
},
"healthThresholds": {
"title": "Health Monitor Thresholds",
"description": "Health Monitor and notifications react when these limits are crossed. Drag the amber handle for the warning level and the red handle for the critical level. Values different from the recommendation appear in blue; hover a handle to see the recommendation, or use Reset to restore it.",
"loadFailed": "Failed to load thresholds.",
"invalidValue": "Invalid value for {key}: must be a number",
"resetFailed": "Reset failed",
"networkErrorWhileResetting": "Network error while resetting",
"resetSectionConfirm": "Reset all \"{section}\" thresholds to recommended values?",
"resetAllConfirm": "Reset ALL thresholds to recommended values? This affects every section.",
"resetAllTitle": "Reset every threshold to its recommended value",
"resetSectionTitle": "Reset this section to recommended",
"recommended": "Recommended",
"warning": "Warning",
"critical": "Critical",
"ok": "OK",
"warn": "WARN",
"crit": "CRIT",
"ram": "RAM",
"swapCriticalOnly": "Swap (critical only)",
"sections": {
"cpu": {
"title": "CPU usage"
},
"memory": {
"title": "Memory & Swap"
},
"cpu_temperature": {
"title": "CPU temperature"
},
"disk_temperature": {
"title": "Disk temperature",
"description": "Per-class thresholds. Same units (°C), different defaults because each class tolerates a different range."
},
"host_storage": {
"title": "Disk space - host",
"description": "Applies to / and every mountpoint under /var/lib/vz, /mnt/* etc."
},
"lxc_rootfs": {
"title": "Disk space - LXC rootfs",
"description": "Per-container root disk, evaluated against the rootfs size from PVE."
},
"lxc_mount": {
"title": "LXC mount points",
"description": "Capacity of mountpoints inside running CTs (mp0, mp1, NFS, bind mounts). Excludes the rootfs; that is covered above."
},
"pve_storage": {
"title": "PVE storage capacity",
"description": "Block-style PVE storages: LVM, LVM-thin, ZFS-pool, RBD/Ceph, PBS. Filesystem-style storage is already covered by host disk thresholds."
},
"zfs_pool": {
"title": "ZFS pool capacity",
"description": "ZFS pools at host level, independent of PVE registration, so rpool and dedicated backup pools are also monitored."
}
}
}
},
"login": {
"subtitle": "Sign in to access your dashboard",
"username": "Username",
"password": "Password",
"usernamePlaceholder": "Enter your username",
"passwordPlaceholder": "Enter your password",
"rememberMe": "Remember me",
"missingCredentials": "Please enter username and password",
"missingTotp": "Please enter your 2FA code",
"loginFailed": "Login failed",
"signingIn": "Signing in...",
"signIn": "Sign In",
"twoFactorTitle": "Two-Factor Authentication",
"twoFactorDescription": "Enter the 6-digit code from your authentication app",
"authenticationCode": "Authentication Code",
"backupCodeHint": "You can also use a backup code (format: XXXX-XXXX)",
"backToLogin": "Back to login",
"verifyCode": "Verify Code",
"version": "ProxMenux Monitor v1.2.4.1-beta"
},
"account": {
"signedIn": "Signed in",
"viewProfile": "View profile",
"security": "Security",
"signOut": "Sign out"
},
"authSetup": {
"choiceTitle": "Setup Dashboard Protection",
"passwordTitle": "Create Password",
"protectTitle": "Protect Your Dashboard?",
"protectDescription": "Add an extra layer of security to protect your Proxmox data when accessing from non-private networks.",
"setupPassword": "Yes, Setup Password",
"skipProtection": "No, Continue Without Protection",
"enableLater": "You can always enable this later in Settings",
"setupTitle": "Setup Authentication",
"setupDescription": "Create a username and password to protect your dashboard",
"fillFields": "Please fill in all fields",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "Password must be at least 6 characters",
"skipFailed": "Failed to skip authentication",
"savePreferenceFailed": "Failed to save preference",
"setupFailed": "Failed to setup authentication",
"username": "Username",
"usernamePlaceholder": "Enter username",
"password": "Password",
"passwordPlaceholder": "Enter password",
"confirmPassword": "Confirm Password",
"confirmPasswordPlaceholder": "Confirm password",
"profileOptional": "Profile · optional",
"displayName": "Display name",
"displayNamePlaceholder": "Shown above the username in the menu",
"displayNameHint": "Leave empty to render the username itself. Up to 64 characters.",
"avatar": "Avatar",
"change": "Change",
"chooseImage": "Choose image",
"clear": "Clear",
"avatarHint": "PNG, JPEG, WebP or GIF · up to 2 MB · pre-crop square for best results.",
"settingUp": "Setting up...",
"setupAuthentication": "Setup Authentication",
"back": "Back"
},
"securityPage": {
"title": "Security",
"description": "Protect access to the Monitor and the Proxmox host from one place.",
"values": {
"permanent": "Permanent",
"perm": "perm",
"enabled": "Enabled",
"disabled": "Disabled",
"enable": "Enable",
"disable": "Disable",
"enabledLower": "enabled",
"disabledLower": "disabled",
"clusterLower": "cluster",
"hostLower": "host",
"remove": "Remove",
"allow": "Allow",
"delete": "Delete",
"uninstall": "Uninstall",
"uninstalling": "Uninstalling...",
"serviceRunning": "Service running",
"serviceNotRunning": "Service not running",
"active": "Active",
"inactive": "Inactive",
"installed": "Installed",
"notInstalled": "Not installed",
"notFound": "Not found",
"never": "Never",
"unknownDate": "unknown date",
"system": "system",
"none": "None",
"external": "External",
"up": "Up",
"down": "Down"
},
"errors": {
"passwordMinLength": "Password must be at least 10 characters long.",
"passwordComplexity": "Use at least three of these: lowercase, uppercase, number, symbol.",
"passwordCommon": "This password is too common. Choose something harder to guess.",
"fail2banUninstallFailed": "Failed to uninstall Fail2Ban",
"lynisUninstallFailed": "Failed to uninstall Lynis",
"unbanIpFailed": "Failed to unblock IP address",
"applyMissingJailsFailed": "Failed to add missing protections",
"auditFailed": "Audit failed",
"startAuditFailed": "Failed to start audit",
"updateJailConfigFailed": "Failed to save protection settings",
"ruleNeedsPortOrSource": "Add a destination port or source address first.",
"addRuleFailed": "Failed to add rule",
"deleteRuleFailed": "Failed to delete rule",
"updateRuleFailed": "Failed to update rule",
"updateFirewallFailed": "Failed to update firewall",
"updateMonitorPortFailed": "Failed to update Monitor port rule",
"fillAllFields": "Fill in all fields.",
"passwordsDoNotMatch": "Passwords do not match.",
"enableAuthFailed": "Failed to enable authentication",
"authAlreadyConfigured": "Login protection is already configured. Refresh the page and try again.",
"disableAuthFailed": "Failed to disable authentication",
"disableAuthRetry": "Failed to disable authentication. Please try again.",
"newPasswordsDoNotMatch": "New passwords do not match.",
"changePasswordFailed": "Failed to change password",
"invalidPassword": "The password is not correct.",
"enterPassword": "Enter your password.",
"enter2faOrBackup": "Enter a 2FA code or backup code.",
"disable2faFailed": "Failed to disable 2FA",
"invalid2faCode": "The 2FA code is not correct.",
"enter2fa": "Enter a 2FA code.",
"revokeTokenFailed": "Failed to revoke token",
"generateTokenFailed": "Failed to generate token",
"noTokenReceived": "No token was returned by the server.",
"generateTokenRetry": "Failed to generate token. Please try again.",
"configureSslFailed": "Failed to configure SSL",
"disableSslFailed": "Failed to disable SSL",
"deleteReportFailed": "Failed to delete report"
},
"messages": {
"fail2banUninstalled": "Fail2Ban was uninstalled.",
"lynisUninstalled": "Lynis was uninstalled.",
"ipUnbanned": "{ip} was unblocked from {jail} protection.",
"missingJailsApplied": "Missing protections were added.",
"auditCompleted": "Lynis audit completed.",
"jailConfigUpdated": "Protection settings were saved.",
"ruleAdded": "Firewall rule was added.",
"ruleDeleted": "Firewall rule was deleted.",
"ruleUpdated": "Firewall rule was updated.",
"firewallUpdated": "{level} firewall is now {state}.",
"monitorPortAdded": "Monitor port rule was added.",
"monitorPortRemoved": "Monitor port rule was removed.",
"authEnabled": "Authentication is now enabled.",
"authDisabledReloading": "Authentication is disabled. Reloading...",
"passwordChanged": "Password was changed.",
"twoFactorDisabled": "Two-factor authentication is disabled.",
"tokenRevoked": "API token was revoked.",
"apiTokenGenerated": "API token was generated.",
"sslEnabledRestarting": "HTTPS is enabled. Restarting service...",
"sslDisabledRestarting": "HTTPS is disabled. Restarting service...",
"reportDeleted": "Audit report was deleted.",
"twoFactorEnabled": "Two-factor authentication is enabled."
},
"confirm": {
"disableAuth": "Disable authentication? Anyone who can reach the dashboard will be able to open it.",
"revokeToken": "Revoke this API token?",
"disableHttps": "Disable HTTPS and go back to plain HTTP?",
"deleteAuditReport": "Delete this audit report?",
"cannotBeUndone": "This cannot be undone."
},
"auth": {
"title": "Access & Authentication",
"description": "Control who can open the Monitor dashboard.",
"statusTitle": "Password protection",
"passwordEnabled": "Password login is enabled.",
"noPasswordProtection": "The dashboard is currently open without a password.",
"enableHint": "Add a username and password before exposing this dashboard outside your private network.",
"enable": "Enable authentication",
"setupTitle": "Create login",
"username": "Username",
"usernamePlaceholder": "admin",
"password": "Password",
"passwordPlaceholder": "Enter password",
"confirmPassword": "Confirm password",
"confirmPasswordPlaceholder": "Enter password again",
"enabling": "Enabling...",
"enableShort": "Enable",
"changePassword": "Change password",
"currentPassword": "Current password",
"currentPasswordPlaceholder": "Enter current password",
"newPassword": "New password",
"newPasswordPlaceholder": "Enter new password",
"confirmNewPassword": "Confirm new password",
"confirmNewPasswordPlaceholder": "Enter new password again",
"changing": "Changing...",
"enterYourPassword": "Enter your password",
"disable": "Disable authentication"
},
"twoFactor": {
"title": "Two-factor authentication",
"hint": "Add a one-time code from an authenticator app after the password.",
"enable": "Enable 2FA",
"enabled": "2FA is enabled.",
"disable": "Disable 2FA",
"disableTitle": "Disable two-factor authentication",
"disableDescription": "Confirm with your password and a current 2FA code or backup code.",
"codeOrBackup": "2FA code or backup code",
"codeOrBackupPlaceholder": "123456 or XXXX-XXXX",
"disabling": "Disabling...",
"code": "2FA code",
"codePlaceholder": "123456"
},
"ssl": {
"title": "SSL / HTTPS",
"description": "Encrypt the dashboard connection when it is opened in a browser.",
"httpsEnabled": "HTTPS is enabled.",
"httpNoSsl": "The dashboard is using plain HTTP.",
"usingCertificate": "Using {source} certificate.",
"proxmoxHost": "Proxmox host",
"custom": "custom",
"unencryptedHttp": "Traffic is not encrypted over HTTP.",
"activeCertificate": "Active certificate",
"cert": "Certificate",
"key": "Private key",
"disabling": "Disabling...",
"restarting": "Restarting...",
"disableHttps": "Disable HTTPS",
"proxmoxCertDetected": "Proxmox certificate detected",
"subject": "Subject",
"issuer": "Issuer",
"expires": "Expires",
"selfSignedWarning": "Self-signed certificates may show a browser warning. That is normal for local Proxmox setups.",
"configuring": "Configuring...",
"useProxmoxCertificate": "Use Proxmox certificate",
"noProxmoxCertificate": "No Proxmox certificate was detected.",
"useCustomCertificate": "Use custom certificate",
"customPaths": "Custom certificate paths",
"customPathsDescription": "Use existing certificate and key files from the host.",
"certificatePath": "Certificate path",
"privateKeyPath": "Private key path",
"enableHttps": "Enable HTTPS",
"restartTitle": "Service restart required",
"restartDescription": "Changing HTTPS settings restarts the Monitor service for a moment.",
"changesRestart": "The page may briefly disconnect while the service restarts."
},
"apiTokens": {
"defaultName": "Dashboard token",
"title": "API Tokens",
"description": "Create long-lived tokens for integrations and automation.",
"aboutTitle": "About API tokens",
"validFor": "Tokens stay valid until you revoke them.",
"externalServices": "Use them with external tools instead of your password.",
"authorizationHeader": "Send the token in the Authorization header.",
"seeGuideBefore": "See the",
"integrationsGuide": "integrations guide",
"seeGuideAfter": "for examples.",
"generateNew": "Generate new token",
"generateTitle": "Generate API token",
"generateDescription": "Enter your password and 2FA code if enabled.",
"tokenName": "Token name",
"tokenNamePlaceholder": "Homepage dashboard",
"generating": "Generating...",
"generate": "Generate token",
"yourToken": "Your API token",
"saveTokenNow": "Save this token now.",
"tokenOnlyShownOnce": "It will only be shown once.",
"token": "Token",
"copied": "Copied",
"howToUse": "How to use it",
"addToHeaders": "Add this header to your requests:",
"authorizationHeaderExample": "Authorization: Bearer <token>",
"readmeExamples": "See the README for integration examples.",
"done": "Done",
"activeTokens": "Active tokens",
"invalidRegenerate": "If a token is lost, revoke it and generate a new one.",
"legacy": "Legacy",
"revoke": "Revoke",
"loading": "Loading tokens...",
"empty": "No API tokens yet."
},
"firewall": {
"title": "Firewall",
"description": "Manage Proxmox firewall state and simple access rules.",
"notDetectedTitle": "Proxmox firewall was not detected",
"notDetectedDescription": "Firewall tools are not available on this host.",
"clusterTitle": "Cluster firewall",
"clusterActive": "Cluster firewall is active.",
"clusterDisabled": "Cluster firewall is disabled.",
"hostTitle": "Host firewall",
"hostActive": "Host firewall is active for this node.",
"clusterRequiredHint": "Enable the cluster firewall first, then enable the host firewall.",
"quickAccessRules": "Quick access rules",
"port8008": "Monitor port 8008",
"port8006AlwaysAllowed": "Proxmox port 8006 is always allowed.",
"builtIn": "Built in",
"monitorPortWarning": "Keep port 8008 allowed if you access the Monitor from another device.",
"rulesOverview": "Rules overview",
"totalRules": "Total rules",
"accept": "Accept",
"blockReject": "Block / reject",
"portsCovered": "Ports covered",
"drop": "Drop",
"reject": "Reject",
"cluster": "Cluster",
"host": "Host",
"rules": "{count} rules",
"addRule": "Add rule",
"newRule": "New rule",
"quickPresets": "Quick presets",
"incomingLower": "incoming",
"outgoingLower": "outgoing",
"allowLower": "allow",
"blockSilentlyLower": "block silently",
"blockWithResponseLower": "block with response",
"destinationPortHint": "For example 22, 80, 443 or 8008.",
"sourceAddressHint": "Optional IP or CIDR, for example 192.168.1.0/24.",
"anyInterface": "Any interface",
"hostFirewallThisNode": "Host firewall for this node",
"clusterFirewallAllNodes": "Cluster firewall for all nodes",
"any": "Any",
"anyLower": "any",
"incoming": "Incoming",
"outgoing": "Outgoing",
"saveChanges": "Save changes",
"noRules": "No firewall rules yet.",
"noRulesHint": "Add a rule or use a preset above.",
"fields": {
"direction": "Direction",
"action": "Action",
"protocol": "Protocol",
"proto": "Proto",
"destinationPort": "Destination port",
"sourceAddress": "Source address",
"interfaceOptional": "Interface (optional)",
"applyTo": "Apply to",
"commentOptional": "Comment (optional)",
"port": "Port",
"source": "Source",
"level": "Level",
"interface": "Interface",
"comment": "Comment",
"scope": "Scope"
},
"placeholders": {
"destinationPort": "22, 80, 443",
"sourceAddress": "192.168.1.0/24",
"comment": "What this rule is for",
"shortPort": "8008",
"ipOrCidr": "IP or CIDR",
"description": "Description"
},
"presets": {
"httpWeb": "HTTP web",
"httpsWeb": "HTTPS web",
"sshRemoteAccess": "SSH remote access",
"smtpMail": "SMTP mail",
"icmpPing": "ICMP ping"
}
},
"fail2ban": {
"description": "Block repeated failed login attempts against SSH, Proxmox and the Monitor.",
"notInstalled": "Fail2Ban is not installed.",
"notInstalledDescription": "Install it to automatically block repeated failed logins.",
"configureTitle": "The installer will configure:",
"configureSsh": "SSH protection",
"configureProxmox": "Proxmox login protection",
"configureMonitor": "Monitor login protection",
"configureGlobal": "Basic ban settings",
"customizeAfterInstall": "You can tune each protection after installation.",
"installConfigure": "Install and configure",
"jails": "Protections",
"bannedIps": "Blocked IPs",
"totalBans": "Total blocks",
"failedAttempts": "Failed attempts",
"missingProtectionsTitle": "Some protections are missing",
"missingProtectionsBefore": "Add missing protections for",
"applyMissingJails": "Add protections",
"permanentBan": "Permanent block",
"maxRetriesTitle": "Failed attempts before ban",
"retries": "Attempt limit",
"banDurationTitle": "How long the IP stays banned",
"ban": "Block time",
"findTimeTitle": "Time window for counting failed attempts",
"window": "Period",
"configureJailSettings": "Edit this protection",
"configureJail": "Edit {jail} protection",
"maxRetries": "Max retries",
"failedAttemptsBeforeBan": "Failed attempts before the IP is blocked.",
"banTimeSeconds": "Block time (seconds)",
"permanentBanNeverExpires": "Permanent block, never expires.",
"findTimeSeconds": "Find time (seconds)",
"timeWindowHint": "Failed attempts are counted within this window.",
"commonValuesHint": "Common values: 600 = 10 min, 3600 = 1 hour, -1 = permanent.",
"saveConfiguration": "Save configuration",
"banned": "Currently blocked",
"failedNow": "Failed now",
"totalFailed": "Total failed",
"bannedIpsWithCount": "Blocked IPs ({count})",
"unban": "Unblock",
"noBannedIps": "No IP addresses are currently blocked.",
"noJails": "No protections found.",
"noActivity": "No Fail2Ban activity yet.",
"installationTitle": "Install Fail2Ban",
"installationDescription": "The terminal will install Fail2Ban and configure login protections.",
"uninstallConfirmTitle": "Uninstall Fail2Ban?",
"uninstallConfirmDescription": "This removes the Fail2Ban package and its Monitor-created protection files.",
"removeSshJail": "Remove SSH protection",
"removeProxmoxProtection": "Remove Proxmox protection",
"removeMonitorProtection": "Remove Monitor protection",
"removeCustomJails": "Remove custom protection files created by the Monitor",
"removeAuthLogger": "Remove the Monitor auth logger",
"jailLabels": {
"sshd": "SSH",
"proxmox": "Proxmox",
"proxmenux": "ProxMenux Monitor"
},
"jailDescriptions": {
"sshd": "Blocks repeated SSH login failures.",
"proxmox": "Blocks repeated Proxmox UI login failures.",
"proxmenux": "Blocks repeated Monitor login failures."
},
"tabs": {
"jails": "Protections & blocked IPs",
"activity": "Activity"
},
"activity": {
"ban": "Blocked",
"unban": "Unblocked",
"fail": "Failed"
},
"placeholders": {
"maxRetries": "5",
"banTime": "3600",
"findTime": "600"
}
},
"lynis": {
"title": "Lynis security audit",
"description": "Run a local security audit and review practical hardening suggestions.",
"notInstalled": "Lynis is not installed.",
"notInstalledDescription": "Install Lynis to run local security audits on this host.",
"featuresTitle": "Lynis checks for:",
"featureScoring": "system hardening score",
"featureVulnerabilities": "known weak spots and risky settings",
"featureCompliance": "common security controls",
"featureGithub": "clear report you can print or save",
"install": "Install Lynis",
"installedDescription": "Lynis is installed and ready to audit this host.",
"lastScan": "Last scan",
"hardeningIndex": "Hardening index",
"warnings": "Warnings",
"pveExpectedPlus": "+ {count} expected for Proxmox",
"expectedWarningsSuffix": "+ {count} expected for Proxmox",
"suggestions": "Suggestions",
"securityHardeningScore": "Security hardening score",
"proxmoxAdjustedParen": "(Proxmox adjusted)",
"scoreBreakdown": "Lynis: {raw} | Proxmox: {adjusted}",
"scoreCritical": "Critical",
"scoreModerate": "Moderate",
"scoreGood": "Good",
"rawScorePrefix": "Raw score",
"expectedFindings": "{count} expected Proxmox findings",
"auditInProgress": "Audit in progress",
"auditInProgressDescription": "This can take a minute or two.",
"auditReports": "Audit reports",
"auditReportTitle": "Lynis report",
"reportSummary": "{host} · {tests} · score {score}/100 · {warnings} · {suggestions}",
"printSavePdf": "Print or save PDF",
"deleteReport": "Delete report",
"hostname": "Hostname",
"kernel": "Kernel",
"tests": "Tests",
"packages": "Packages",
"firewall": "Firewall",
"malwareScanner": "Malware scanner",
"malwareScannerNotInstalled": "Scanner not installed",
"quickStatus": "Quick status",
"allPveExpected": "all {count} expected for Proxmox",
"actionableCount": "{count} actionable",
"hardeningScorePve": "Hardening score (Proxmox adjusted)",
"noCheckDetails": "No detailed check results available.",
"checksCount": "{count} checks",
"noWarnings": "No warnings.",
"pveExpected": "Expected for Proxmox",
"lowRisk": "Low risk",
"solution": "Solution",
"noSuggestions": "No suggestions.",
"lowPriority": "Low priority",
"runningAudit": "Running audit...",
"runAudit": "Run audit",
"installationTitle": "Install Lynis",
"installationDescription": "The terminal will install Lynis and prepare report support.",
"uninstallConfirmTitle": "Uninstall Lynis?",
"uninstallConfirmDescription": "This removes Lynis and Monitor-created audit report files.",
"removeInstallation": "Remove Lynis installation",
"removeWrapper": "Remove Monitor Lynis wrapper",
"removeReports": "Remove saved audit reports",
"counts": {
"tests": {
"one": "{count} test",
"few": "{count} tests",
"many": "{count} tests"
},
"warnings": {
"one": "{count} warning",
"few": "{count} warnings",
"many": "{count} warnings"
},
"suggestions": {
"one": "{count} suggestion",
"few": "{count} suggestions",
"many": "{count} suggestions"
},
"testsExecuted": {
"one": "{count} test was executed.",
"few": "{count} tests were executed.",
"many": "{count} tests were executed."
},
"actionableWarnings": {
"one": "{count} actionable warning",
"few": "{count} actionable warnings",
"many": "{count} actionable warnings"
},
"actionableSuggestions": {
"one": "{count} actionable suggestion",
"few": "{count} actionable suggestions",
"many": "{count} actionable suggestions"
}
},
"tabs": {
"overview": "Overview",
"checksWithCount": "Checks ({count})",
"warningsWithCount": "Warnings ({count})",
"suggestionsWithCount": "Suggestions ({count})"
},
"report": {
"scoreGood": "Good",
"scoreModerate": "Moderate",
"scoreCritical": "Issue",
"scoreUnavailable": "Incomplete",
"title": "Lynis Audit Report",
"useCmdP": "Use ⌘+P to print or save as PDF.",
"useCtrlP": "Use Ctrl+P to print or save as PDF.",
"brandTitle": "ProxMenux Monitor · Lynis Audit",
"reviewHint": "Review generated for local hardening decisions.",
"subtitle": "Security audit report",
"date": "Date",
"auditor": "Auditor",
"executiveSummary": "Executive summary",
"hardeningAssessment": "Hardening assessment",
"auditOf": "Audit of",
"running": "running on",
"unknownOs": "unknown OS",
"noActionableWarnings": "No actionable warnings",
"and": "and",
"expectedBehavior": "Findings marked as expected for Proxmox are usually normal for Proxmox VE hosts.",
"lynisRaw": "Lynis raw",
"pveAdjusted": "Proxmox adjusted",
"rangeCritical": "0-49 critical",
"rangeModerate": "50-69 moderate",
"rangeGood": "70-100 good",
"systemInformation": "System information",
"operatingSystem": "Operating system",
"lynisVersion": "Lynis version",
"reportDate": "Report date",
"testsPerformed": "Tests performed",
"securityPosture": "Security posture",
"proxmoxScoreWithLabel": "Proxmox score ({label})",
"actionableWarningsLabel": "Actionable warnings",
"actionableSuggestionsLabel": "Actionable suggestions",
"warningsDescription": "Warnings worth reviewing first. Proxmox-expected findings are hidden here.",
"noWarningsDetected": "No actionable warnings were detected.",
"recommendation": "Recommendation",
"suggestionsDescription": "Lower-priority hardening suggestions. Proxmox-expected findings are hidden here too.",
"incompleteDescription": "Lynis created an incomplete report without a score or test count. Run the audit again to show a reliable result.",
"detailedChecks": "Detailed checks",
"categoriesCount": "{count} categories",
"detailedChecksDescription": "Raw Lynis check groups from the audit report.",
"check": "Check",
"status": "Status",
"generatedBy": "Generated by",
"confidential": "Keep this report private; it may contain host details."
},
"reportIncompleteTitle": "Audit does not have usable results yet",
"reportIncompleteDescription": "Lynis created an incomplete report without a score or test count. Run the audit again.",
"reportIncompleteShort": "Report is incomplete — run the audit again."
},
"twoFactorSetup": {
"setupFailed": "Failed to start 2FA setup",
"enterSixDigitCode": "Enter the 6-digit code.",
"invalidCode": "Invalid code",
"verificationFailed": "Failed to verify code",
"copyPrompt": "Copy this secret key:",
"title": "Set up two-factor authentication",
"description": "Use an authenticator app to add a one-time code to your login.",
"intro": "This adds a second step after your password, so a leaked password is not enough to sign in.",
"youWillNeed": "You will need:",
"needApp": "An authenticator app such as Aegis, 1Password, Bitwarden or Google Authenticator.",
"needQrOrKey": "A QR code or manual key from this setup.",
"needBackupCodes": "Backup codes saved somewhere safe.",
"starting": "Starting...",
"startSetup": "Start setup",
"scanTitle": "Scan the QR code",
"scanDescription": "Open your authenticator app and scan this code.",
"qrCodeAlt": "2FA QR code",
"manualKey": "Manual key",
"copyKey": "Copy key",
"verifyTitle": "Verify code",
"verifyDescription": "Enter the current 6-digit code from your app.",
"verifying": "Verifying...",
"verifyAndEnable": "Verify and enable",
"enabledTitle": "2FA is enabled.",
"enabledDescription": "Save the backup codes before you close this window.",
"saveCodesTitle": "Save your backup codes",
"saveCodesDescription": "Each code can be used once if you lose access to your authenticator app.",
"backupCodes": "Backup codes",
"copyAll": "Copy all",
"finish": "Finish"
},
"secureGateway": {
"title": "Secure Gateway",
"learnMore": "Learn more",
"noNetworkDetected": "No network detected",
"noNetworksDetected": "No networks were detected.",
"recommended": "Recommended",
"retry": "Retry",
"errors": {
"loadWizardFailed": "Failed to load Secure Gateway setup",
"updateFailed": "Failed to update Secure Gateway",
"networkUpdateFailed": "Network error while updating Secure Gateway",
"fieldRequired": "{field} is required.",
"deploymentFailed": "Deployment failed",
"ociRequiresPve": "Secure Gateway uses standard LXC and should work on this Proxmox host. If this keeps happening, check the backend logs.",
"authKeyRequired": "Enter a Tailscale auth key.",
"updateAuthKeyFailed": "Failed to update auth key",
"couldNotLoadSetupData": "Could not load setup data."
},
"messages": {
"updateApplied": "Update was applied.",
"preparingDeployment": "Preparing deployment...",
"creatingLxc": "Creating LXC container...",
"gatewayDeployed": "Secure Gateway deployed."
},
"logs": {
"empty": "No logs available.",
"failed": "Failed to load logs.",
"title": "Secure Gateway logs",
"description": "Recent service output from the gateway container."
},
"values": {
"never": "never",
"yesterdayAt": "yesterday at {time}",
"yes": "Yes",
"no": "No"
},
"wizard": {
"introTitle": "Secure remote access with Tailscale",
"introDescription": "Deploy a small LXC gateway so your devices can reach ProxMenux, Proxmox and selected local networks through your Tailscale tailnet.",
"whatYouGet": "What you get",
"benefitMonitorAnywhere": "Open the Monitor from anywhere on your tailnet.",
"benefitProxmoxUi": "Reach the Proxmox web UI without exposing port 8006.",
"benefitVmLxc": "Access selected VM and LXC networks when needed.",
"benefitEncryption": "Traffic stays encrypted through Tailscale.",
"benefitNoPorts": "No public port forwarding required.",
"tailscaleAccountBefore": "You need a Tailscale account and a pre-auth key from",
"reviewDeploy": "Review and deploy",
"reviewDescription": "Check the final settings before the LXC gateway is created.",
"storageLocation": "Storage location",
"storageDescription": "Choose where to store the gateway container.",
"gbAvailable": "{amount} GB available",
"configurationSummary": "Configuration summary",
"hostname": "Hostname",
"storage": "Storage",
"accessMode": "Access mode",
"accessModes": {
"hostOnly": "Proxmox only",
"proxmoxNetwork": "Full local network",
"customNetworks": "Custom networks"
},
"hostAccess": "Host access",
"networks": "Networks",
"exitNode": "Exit node",
"acceptRoutes": "Accept routes",
"important": "Important",
"approvalRequired": "After deployment, approve the advertised subnet routes in Tailscale Admin.",
"exitNodeApprovalRequired": "Exit Node mode also needs approval there.",
"showAfterDeploy": "We will show the exact approval steps after deployment.",
"setupTitle": "Secure Gateway setup"
},
"steps": {
"intro": {
"title": "Secure remote access",
"description": "Set up secure VPN access to your Proxmox server"
},
"auth": {
"title": "Tailscale authentication",
"description": "Connect the gateway to your Tailscale account"
},
"access": {
"title": "Access scope",
"description": "Choose what should be reachable through this gateway"
},
"options": {
"title": "Advanced options",
"description": "Additional routing settings"
},
"deploy": {
"title": "Deploy gateway",
"description": "Review and deploy"
}
},
"status": {
"connected": "Connected",
"stopped": "Stopped",
"error": "Error"
},
"installed": {
"description": "Secure Gateway is deployed and managed by the Monitor.",
"uptime": "Uptime"
},
"actions": {
"start": "Start",
"stop": "Stop",
"restart": "Restart",
"logs": "Logs",
"remove": "Remove",
"back": "Back",
"continue": "Continue",
"deploying": "Deploying...",
"deployGateway": "Deploy gateway"
},
"updates": {
"lastChecked": "Last checked",
"tailscaleAvailable": "Tailscale {version} available",
"updating": "Updating...",
"updateToVersion": "Update to {version}",
"otherPackagesPending": "+ {count} other packages pending",
"noneAvailable": "No updates available"
},
"authKey": {
"update": "Update auth key",
"description": "Use a new Tailscale auth key if the current one expired or was revoked.",
"newKey": "New auth key",
"generateAt": "Generate it at",
"adminKeys": "Tailscale Admin → Keys",
"updateKey": "Update key"
},
"tailscale": {
"openAdmin": "Open Tailscale Admin"
},
"remove": {
"title": "Remove Secure Gateway?",
"description": "This stops and removes the gateway container. Tailscale state may remain in saved data if the backend preserves it."
},
"postDeploy": {
"title": "Finish setup in Tailscale Admin",
"description": "The gateway is deployed. One approval step is still needed before remote devices can use the advertised routes.",
"nextStep": "Next step",
"approveDescription": "Approve the advertised subnet routes for this gateway.",
"subnetRoutes": "Subnet routes",
"exitNode": "Exit Node",
"routeAllTraffic": "Approve it if you want devices to route all internet traffic through this gateway.",
"howToApprove": "How to approve it",
"stepOpenAdmin": "Open the Tailscale Admin console.",
"stepFindBefore": "Find the machine named",
"stepFindAfter": "in the Machines list.",
"stepOpenDetails": "Open its details.",
"stepSubnetsBefore": "In",
"stepSubnetsMiddle": "click",
"stepSubnetsAfter": "and approve the advertised routes.",
"stepRoutingBefore": "For Exit Node, open",
"stepRoutingMiddle": "and approve",
"accessAfterApproval": "After approval, you can open",
"or": "or",
"fromAnyDevice": "from any device on your tailnet.",
"doLater": "I'll do this later"
},
"notInstalled": {
"subtitle": "Tailscale gateway is not deployed yet.",
"description": "Deploy it to reach ProxMenux and Proxmox securely from your tailnet without opening public ports.",
"deploy": "Deploy Secure Gateway"
},
"schema": {
"auth_key": {
"label": "Tailscale Auth Key",
"description": "Pre-authentication key from the Tailscale admin console. Generate one at the link below.",
"placeholder": "tskey-auth-xxxxx",
"helpText": "Generate auth key"
},
"hostname": {
"label": "Device hostname",
"description": "Name shown in the Tailscale admin console.",
"placeholder": "proxmox-gateway"
},
"access_mode": {
"label": "Access scope",
"description": "What should be reachable through this gateway.",
"options": {
"host_only": {
"label": "Proxmox only",
"description": "Access only this Proxmox server, the UI and ProxMenux Monitor."
},
"proxmox_network": {
"label": "Full local network",
"description": "Access all devices on your local network, such as NAS, printers, VMs and LXCs."
},
"custom": {
"label": "Custom subnets",
"description": "Choose exactly which subnets to expose."
}
}
},
"advertise_routes": {
"label": "Advertised networks",
"description": "Select networks that should be reachable through the VPN."
},
"exit_node": {
"label": "Exit Node",
"description": "Use this gateway as your internet exit point when away from home.",
"warning": "Requires approval in Tailscale Admin. When enabled on your device, all internet traffic goes through your Proxmox server."
},
"accept_routes": {
"label": "Accept routes",
"description": "Allow this gateway to reach networks advertised by other Tailscale nodes in your tailnet."
}
}
}
},
"about": {
"releaseNotes": "Release notes",
"changelog": "Changelog",
"logoAlt": "ProxMenux logo",
"heroDescription": "A web dashboard and management layer for Proxmox VE — health monitoring, notifications, terminal, optimization tracker and more, packaged as a single AppImage.",
"project": {
"title": "Project",
"description": "Repository, documentation and community channels."
},
"support": {
"title": "Support & License",
"description": "ProxMenux is free and open source under the GPL-3.0 license. If it is useful to you, a one-off contribution helps keep it that way."
},
"license": {
"label": "GPL-3.0 license",
"description": "Free software — see the LICENSE file for the full text."
},
"links": {
"repository": { "label": "GitHub repository", "description": "Source code, releases and issue tracker." },
"documentation": { "label": "Documentation", "description": "Full user guide for ProxMenux and the Monitor." },
"discussions": { "label": "Discussions", "description": "Ask questions, share custom AI prompts and exchange ideas." },
"issues": { "label": "Report a bug or request a feature", "description": "Open an issue on GitHub — bugs, ideas or regressions." },
"support": { "label": "Support the project on Ko-fi", "description": "ProxMenux is free and open source. Donations help cover hosting and development time." }
}
},
"systemLogs": {
"title": "System Logs & Events",
"sections": "Sections",
"loading": { "title": "Loading logs…", "description": "Fetching system logs and events" },
"errors": { "connectFailed": "Could not connect to the server.", "loadFailed": "Could not load the logs. Please try again." },
"cards": { "totalEntries": "Total entries", "selectedRange": "In the selected range", "errors": "Errors", "requiresAttention": "Require attention", "warnings": "Warnings", "monitorClosely": "Monitor closely", "backups": "Backups" },
"tabs": { "logs": "Logs", "events": "Events", "backups": "Backups", "notifications": "Notifications" },
"filters": { "searchPlaceholder": "Search logs and events…", "timeRange": "Time range", "oneDay": "1 day ago", "threeDays": "3 days ago", "oneWeek": "1 week ago", "twoWeeks": "2 weeks ago", "oneMonth": "1 month ago", "customDays": "Custom number of days", "daysAgoPlaceholder": "Days ago", "byLevel": "Filter by level", "allLevels": "All levels", "byService": "Filter by service", "allServices": "All services", "dateRange": "Date range", "daysAgo": "Last {count} days" },
"levels": { "error": "Error", "critical": "Critical", "emergency": "Emergency", "alert": "Alert", "warning": "Warning", "info": "Info", "notice": "Notice", "success": "Success", "debug": "Debug" },
"export": { "button": "Export logs", "title": "Proxmox System Logs & Events Export", "filtersApplied": "Filters applied" },
"fields": { "generated": "Generated", "level": "Level", "service": "Service", "search": "Search", "none": "None", "message": "Message", "source": "Source", "hostname": "Hostname", "node": "Node", "user": "User", "unit": "Unit", "host": "Host", "timestamp": "Timestamp", "type": "Type", "systemdUnit": "Systemd unit", "processId": "Process ID", "duration": "Duration", "startTime": "Start time", "endTime": "End time", "storage": "Storage", "storageType": "Storage type", "size": "Size", "created": "Created", "volumeId": "Volume ID" },
"badges": { "event": "Event" },
"empty": { "logs": "No logs match the selected filters.", "backups": "No backups found.", "notifications": "No notifications found." },
"loadMore": "Load more ({count} remaining)",
"backups": { "vm": "VM backups", "lxc": "LXC backups", "totalSize": "Total size" },
"modals": { "logTitle": "Log details", "logDescription": "Complete information about this log entry", "eventTitle": "Event details", "eventDescription": "Complete information about this event", "backupTitle": "Backup details", "backupDescription": "Complete information about this backup", "notificationTitle": "Notification details", "notificationDescription": "Complete information about this notification" },
"download": { "taskLog": "Proxmox task log", "completeTaskLog": "Complete task log", "completeMessage": "Complete message", "completeMessageButton": "Download complete message" }
},
"onboarding": {
"dialogTitle": "ProxMenux Onboarding",
"previous": "Previous",
"skip": "Skip",
"next": "Next",
"getStarted": "Get Started!",
"dontShowAgain": "Don't show this again",
"goToSlide": "Go to slide {number}",
"slides": {
"welcome": {
"title": "Welcome to ProxMenux Monitor!",
"description": "Your new monitoring tool for Proxmox. Discover the features that help you manage and supervise your infrastructure more easily."
},
"overview": {
"title": "System Overview",
"description": "Monitor your server in real time: CPU, memory, temperature, system load and more, all in one clear dashboard."
},
"storage": {
"title": "Storage Management",
"description": "See the status of your disks and storage: capacity, usage, SMART health, temperature and performance for each device."
},
"network": {
"title": "Network Metrics",
"description": "Monitor network traffic in real time, including active interfaces, transfer speeds and historical usage graphs."
},
"virtualMachines": {
"title": "Virtual Machines & Containers",
"description": "Keep VMs and LXC containers in one place. View status, assigned resources, current usage and quick controls."
},
"hardware": {
"title": "Hardware Information",
"description": "View server hardware details: CPU, RAM, GPU, disks, network, UPS and more, including models, serial numbers and status."
},
"logs": {
"title": "System Logs",
"description": "Access system logs, filter events, search for specific errors and download displayed logs when you need deeper analysis."
},
"future": {
"title": "Ready for the Future!",
"description": "ProxMenux Monitor is ready for new features and improvements, with more actions gradually moving into the web panel."
}
}
},
"releaseNotes": {
"dialogTitle": "Release Notes - Version {version}",
"title": "What's New in Version {version}",
"intro": "We've added new features and improvements to make ProxMenux Monitor even better.",
"gotIt": "Got it!",
"dontShowAgain": "Don't show again for this version",
"currentFeatures": {
"hostUpdate": "One-click host update from the Health Monitor. The new Update Now button in System Updates runs the Proxmox update flow inside a dashboard terminal, without leaving the browser.",
"mobileInstall": "In-app install prompt for mobile. First-time visitors on Android and iOS Safari now see simple steps for adding the Monitor to their home screen as a PWA."
}
},
"network": {
"actions": {
"viewDetails": "View details"
},
"loading": {
"title": "Loading network data...",
"description": "Scanning interfaces, bridges and traffic"
},
"errors": {
"serverUnavailableTitle": "Server is not available",
"serverUnavailableDescription": "Unable to connect to the monitor server. Please make sure the service is running and try again."
},
"cards": {
"traffic": "Network Traffic",
"activeInterfaces": "Active Interfaces",
"status": "Network Status",
"latency": "Network Latency"
},
"sections": {
"physicalInterfaces": "Physical Interfaces",
"bridgeInterfaces": "Bridge Interfaces",
"vmLxcInterfaces": "VM & LXC Network Interfaces"
},
"summary": {
"totalInterfaces": "{count} total interfaces",
"activeCount": "{active}/{total} Active"
},
"status": {
"healthy": "Healthy",
"warning": "Warning",
"critical": "Critical",
"up": "Up",
"down": "Down"
},
"duplex": {
"full": "Full duplex",
"half": "Half duplex"
},
"interfaceTypes": {
"physical": "Physical",
"bridge": "Bridge",
"bridges": "Bridges",
"bond": "Bond",
"vlan": "VLAN",
"virtual": "Virtual",
"other": "Other"
},
"labels": {
"activeSlave": "Active slave",
"average": "Average",
"avg": "Avg",
"bitsReceived": "Bits received",
"bitsSent": "Bits sent",
"bondingMode": "Bonding mode",
"bondMembers": "Bond members",
"bytesReceived": "Bytes received",
"bytesSent": "Bytes sent",
"current": "Current",
"domain": "Domain",
"down": "Down",
"drops": "Drops",
"dropsIn": "Drops in",
"dropsOut": "Drops out",
"duplex": "Duplex",
"errors": "Errors",
"errorsIn": "Errors in",
"errorsOut": "Errors out",
"hostname": "Hostname",
"interfaceName": "Interface name",
"ipAddress": "IP address",
"latency": "Latency",
"macAddress": "MAC address",
"max": "Max",
"maximum": "Maximum",
"maxSpeed": "max {speed}",
"min": "Min",
"minimum": "Minimum",
"netmask": "Netmask",
"packetLoss": "Packet loss",
"packetLossShort": "Pkt loss",
"packetsReceived": "Packets received",
"packetsSent": "Packets sent",
"physicalInterface": "Physical interface",
"primarySlave": "Primary slave",
"received": "Received",
"sent": "Sent",
"slaveInterfaces": "Slave interfaces",
"speed": "Speed",
"status": "Status",
"time": "Time",
"type": "Type",
"up": "Up",
"virtualMemberInterfaces": "Virtual member interfaces",
"vmLxcName": "VM/LXC name"
},
"roles": {
"active": "active",
"standby": "standby",
"down": "down"
},
"empty": {
"noVmLxc": "No VM/LXC",
"noVirtualMembers": "No virtual members"
},
"timeframes": {
"hour": "1 Hour",
"day": "24 Hours",
"week": "7 Days",
"month": "30 Days",
"year": "1 Year",
"short": {
"hour": "Past 1 h",
"day": "Past 24 h",
"week": "Past 7 d",
"month": "Past 30 d",
"year": "Past 1 y"
},
"last": {
"hour": "Last Hour",
"day": "Last 24 Hours",
"week": "Last 7 Days",
"month": "Last 30 Days",
"year": "Last Year"
}
},
"interfaceDetails": {
"title": "Interface Details",
"description": "View detailed information and network traffic statistics for this interface",
"basicInformation": "Basic Information",
"ipAddresses": "IP Addresses",
"trafficStatistics": "Network Traffic Statistics ({timeframe})",
"trafficSinceBoot": "Traffic since last boot",
"inactiveTitle": "Interface inactive",
"inactiveDescription": "This interface is currently down. Network traffic statistics are not available.",
"bondConfiguration": "Bond Configuration",
"bridgeConfiguration": "Bridge Configuration"
},
"flow": {
"title": "Network Flow"
},
"chart": {
"invalidDataFormat": "Invalid data format received from server",
"loadError": "Error loading metrics"
},
"latency": {
"status": {
"excellent": "Excellent",
"good": "Good",
"fair": "Fair",
"poor": "Poor"
},
"timeframes": {
"hour": "1 Hour",
"sixHours": "6 Hours",
"day": "24 Hours",
"threeDays": "3 Days",
"week": "7 Days"
},
"targets": {
"gateway": "Gateway (Router)",
"gatewayShort": "Gateway",
"cloudflare": "Cloudflare (1.1.1.1)",
"cloudflareShort": "Cloudflare",
"google": "Google DNS (8.8.8.8)",
"googleShort": "Google DNS"
},
"actions": {
"stop": "Stop",
"testAgain": "Test Again",
"report": "Report"
},
"testingProgress": "Testing... {percent}%",
"secondsRemaining": "{seconds}s remaining",
"samplesCollected": "{count} samples collected",
"packetLossValue": "{value}% packet loss",
"collectingData": "Collecting data...",
"noRealtimeData": "No data yet. Click “Test Again” to start.",
"noDataForPeriod": "No latency data available for this period",
"collectionInterval": "Data is collected every 60 seconds",
"realTimeMode": "Real-time mode",
"realTimeModeDescription": "Tests run for 2 minutes with readings every 5 seconds. Run the test again afterward to add more samples. All data is included in the report.",
"report": {
"title": "Network Latency Report",
"subtitle": "ProxMenux Monitor - Network Performance Analysis",
"topBarTitle": "ProxMenux Network Latency Report",
"topBarSubtitle": "Review the report, then print or save as PDF",
"printSavePdf": "Print / Save as PDF",
"date": "Date",
"target": "Target",
"mode": "Mode",
"realTimeTest": "Real-time test",
"historicalAnalysis": "Historical analysis",
"realTime": "Real-time",
"executiveSummary": "Executive Summary",
"assessmentTitle": "Network Latency Assessment",
"realtimeSummary": "Real-time latency test to {target}. Samples: {count}; duration: {duration}. Average latency: {avg}.",
"historicalSummary": "Historical latency analysis to {target} over {timeframe}. {count} samples analyzed. Average latency: {avg} ms.",
"minutes": "{count} minute(s)",
"minutesShort": "{count} min",
"seconds": "{count} second(s)",
"secondsShort": "{count}s",
"testPeriod": "the test period",
"averagePacketLoss": "Average packet loss: {value}%.",
"noPacketLoss": "No packet loss detected.",
"defaultGateway": "Default gateway",
"failed": "Failed",
"notEnoughData": "Not enough data points for chart",
"samples": "{count} samples",
"latencyStatistics": "Latency Statistics",
"sampleCount": "Sample count",
"packetLossAvg": "Packet loss (avg)",
"testPeriodLabel": "Test period",
"latencyGraph": "Latency Graph",
"performanceThresholds": "Performance Thresholds",
"thresholdExcellent": "Optimal for real-time applications, gaming, and video calls.",
"thresholdGood": "Acceptable for most applications with minimal impact.",
"thresholdFair": "Noticeable delay. May affect VoIP and interactive applications.",
"thresholdPoor": "Significant latency. Investigation recommended.",
"detailedTestResults": "Detailed Test Results",
"latencyHistory": "Latency History (Last {count} Records)",
"methodology": "Methodology",
"testMethod": "Test method",
"icmpEchoRequest": "ICMP Echo Request (Ping)",
"samplesPerTest": "Samples per test",
"threeConsecutivePings": "3 consecutive pings",
"targetIp": "Target IP",
"performanceAssessment": "Performance Assessment",
"assessmentExcellent": "Network latency is excellent. No action required.",
"assessmentGood": "Network latency is within acceptable parameters.",
"assessmentFair": "Network latency is elevated. Consider investigating network congestion or routing issues.",
"assessmentPoor": "Network latency is critically high. Immediate investigation recommended.",
"assessmentUnknown": "Unable to determine network status.",
"footerTitle": "ProxMenux Monitor - Network Performance Report",
"generated": "Generated",
"reportId": "Report ID"
}
}
},
"hardware": {
"loading": {
"title": "Loading hardware data...",
"description": "Detecting CPU, GPU, storage and PCI devices",
"realtimeData": "Loading real-time data..."
},
"sections": {
"systemInformation": "System Information",
"motherboard": "Motherboard",
"memoryModules": "Memory Modules",
"thermalMonitoring": "Thermal Monitoring",
"otherSensors": "Other",
"graphicsCards": "Graphics Cards",
"basicInformation": "Basic Information",
"coralTpu": "Coral TPU / AI Accelerators",
"powerConsumption": "Power Consumption",
"powerSupplies": "Power Supplies",
"systemFans": "System Fans",
"upsStatus": "UPS Status",
"statusOverview": "Status Overview",
"batteryInformation": "Battery Information",
"powerInformation": "Power Information",
"deviceInformation": "Device Information",
"pciDevices": "PCI Devices",
"networkSummary": "Network Summary",
"storageSummary": "Storage Summary",
"interfaceInformation": "Interface Information",
"usbDevices": "USB Devices"
},
"counts": {
"installed": "{count} installed",
"sensors": "{count} sensors",
"gpu": "{count} GPU",
"devices": "{count} devices",
"psus": "{count} PSUs",
"fans": "{count} fans",
"ups": "{count} UPS",
"interfaces": "{count} interfaces"
},
"labels": {
"model": "Model",
"cores": "Cores",
"threads": "Threads",
"l3Cache": "L3 Cache",
"virtualization": "Virtualization",
"manufacturer": "Manufacturer",
"version": "Version",
"date": "Date",
"size": "Size",
"type": "Type",
"speed": "Speed",
"vendor": "Vendor",
"pciSlot": "PCI Slot",
"driver": "Driver",
"kernelModule": "Kernel Module",
"kernelDriver": "Kernel Driver",
"kernelModules": "Kernel Modules",
"lastChecked": "Last checked",
"switchMode": "Switch Mode",
"currentDriver": "Current Driver",
"consumer": "Consumer",
"graphicsClock": "Graphics Clock",
"memoryClock": "Memory Clock",
"powerDraw": "Power Draw",
"temperature": "Temperature",
"memory": "Memory",
"total": "Total",
"used": "Used",
"free": "Free",
"memoryUtilization": "Memory Utilization",
"connection": "Connection",
"formFactor": "Form Factor",
"link": "Link",
"busDevice": "Bus / Device",
"vendorProductId": "Vendor / Product ID",
"deviceNodes": "Device Nodes",
"runtimeState": "Runtime State",
"edgeTpuRuntime": "Edge TPU Runtime",
"thresholds": "Thresholds",
"hardwareWarnings": "Hardware Warnings",
"currentDraw": "Current Draw",
"currentOutput": "Current Output",
"remote": "Remote",
"batteryCharge": "Battery Charge",
"load": "Load",
"runtime": "Runtime",
"inputVoltage": "Input Voltage",
"status": "Status",
"host": "Host",
"chargeLevel": "Charge Level",
"runtimeRemaining": "Runtime Remaining",
"batteryVoltage": "Battery Voltage",
"batteryDate": "Battery Date",
"outputVoltage": "Output Voltage",
"inputFrequency": "Input Frequency",
"outputFrequency": "Output Frequency",
"realPower": "Real Power",
"apparentPower": "Apparent Power",
"serialNumber": "Serial Number",
"firmware": "Firmware",
"deviceType": "Device Type",
"deviceName": "Device Name",
"productName": "Product Name",
"class": "Class",
"capacity": "Capacity",
"currentLinkSpeed": "Current Link Speed",
"maximumLinkSpeed": "Maximum Link Speed",
"pcieLinkSpeed": "PCIe Link Speed",
"sataVersion": "SATA Version",
"sasVersion": "SAS Version",
"sasSpeed": "SAS Speed",
"linkSpeed": "Link Speed",
"family": "Family",
"interface": "Interface",
"rotationRate": "Rotation Rate",
"classCode": "Class Code",
"serial": "Serial"
},
"values": {
"cores": "{count} cores",
"max": "(max: {value})",
"never": "never",
"nvidiaDriverAvailable": "NVIDIA driver v{version} available",
"reinstallViaPostInstall": "Reinstall via ProxMenux post-install: {label}",
"noUpdatesAvailable": "No updates available",
"none": "none",
"running": "running",
"stopped": "stopped",
"unused": "unused",
"unbound": "unbound",
"driversReady": "Drivers ready",
"driversNotInstalled": "Drivers not installed",
"programmed": "Programmed (runtime loaded)",
"unprogrammed": "Unprogrammed (runtime not loaded)",
"notInstalled": "not installed",
"detecting": "Detecting...",
"solidStateDevice": "Solid State Device",
"notSpecified": "Not specified"
},
"time": {
"yesterdayAt": "yesterday {time}"
},
"recommendations": {
"intel": "To get extended GPU monitoring information, please install the intel-gpu-tools or igt-gpu-tools package.",
"nvidia": "For NVIDIA GPUs, real-time monitoring requires the proprietary drivers (nvidia-driver package). Install them only if your GPU is used directly by the host.",
"amd": "To get extended GPU monitoring information for AMD GPUs, please install amdgpu_top. You can download it from: https://github.com/Umio-Yasuno/amdgpu_top",
"generic": "To get extended GPU monitoring information, please install the appropriate GPU monitoring tools for your hardware."
},
"deviceTypes": {
"graphics": "Graphics",
"graphicsCard": "Graphics Card",
"usb": "USB",
"usbController": "USB Controller",
"audio": "Audio",
"audioController": "Audio Controller",
"network": "Network",
"networkController": "Network Controller",
"ethernet": "Ethernet",
"wireless": "Wi-Fi",
"wirelessController": "Wireless Controller",
"wifi": "Wi-Fi",
"storage": "Storage",
"storageController": "Storage Controller",
"hid": "HID",
"vendorSpecific": "Vendor Specific",
"communications": "Communications",
"integrated": "Integrated",
"discrete": "Discrete"
},
"gpu": {
"monitoringTitle": "GPU Real-Time Monitoring",
"sriovVirtualFunction": "SR-IOV Virtual Function",
"sriovVirtualFunctionDescription": "This device is a Virtual Function spawned by a Physical Function. Per-VF telemetry (temperature, utilization, memory) is not exposed by the kernel — open the parent PF to see aggregate GPU metrics.",
"virtualFunctionDetail": "Virtual Function Detail",
"parentPhysicalFunction": "Parent Physical Function",
"sriovActive": "SR-IOV active",
"sriovMetricsDescription": "Metrics below reflect the Physical Function (aggregate across {count} VFs).",
"updatingEverySeconds": "Updating every {seconds} seconds",
"realTimeMetrics": "Real-Time Metrics",
"engineUtilizationTotal": "Engine Utilization (Total)",
"engineUtilization": "Engine Utilization",
"activeProcesses": "Active Processes ({count})",
"noActiveProcesses": "No active processes using the GPU",
"virtualFunctions": "Virtual Functions",
"switchModeVmTitle": "GPU in Switch Mode VM",
"switchModeVmDescription": "This GPU is assigned to a virtual machine via VFIO passthrough. Real-time monitoring is not available from the host because the GPU is controlled by the VM.",
"extendedMonitoringUnavailable": "Extended Monitoring Not Available"
},
"gpuSwitch": {
"gpu": "GPU",
"lxc": "LXC",
"vm": "VM",
"sriov": "SR-IOV",
"sriovVf": "SR-IOV VF",
"sriovCount": "SR-IOV ×{count}",
"sriovActive": "SR-IOV active",
"readyForLxc": "Ready for LXC containers",
"readyForVm": "Ready for VM passthrough",
"modeUnknown": "Mode unknown",
"virtualFunctionsExternal": "Virtual Functions managed externally",
"nativeDriverActive": "Native driver active",
"vfioDriverActive": "VFIO-PCI driver active",
"noDriverDetected": "No driver detected",
"virtualFunction": "Virtual Function",
"virtualFunctionWithParent": "Virtual Function · parent PF {parent}",
"physicalFunction": "1 PF + {count} VFs",
"physicalFunctionWithMax": "1 PF + {count} VFs / {max} max",
"changePending": "Change pending..."
},
"actions": {
"installNvidiaDrivers": "Install NVIDIA Drivers",
"installAmdGpuTools": "Install AMD GPU Tools",
"installIntelGpuTools": "Install Intel GPU Tools",
"installCoralDrivers": "Install Coral TPU Drivers",
"installDrivers": "Install Drivers"
},
"coral": {
"driversNeededDescription": "One or more detected Coral devices need drivers. A server reboot is required after installation.",
"deviceInformation": "Coral TPU Device Information"
},
"ups": {
"detailedInformation": "UPS Detailed Information"
},
"pci": {
"deviceInformation": "PCI Device Information"
},
"network": {
"interfaceInformation": "Network Interface Information"
},
"storage": {
"deviceHardwareInformation": "Storage Device Hardware Information"
},
"usb": {
"deviceInformation": "USB Device Information"
},
"scripts": {
"nvidiaTitle": "NVIDIA Driver Installation",
"nvidiaDescription": "Installing NVIDIA proprietary drivers for GPU monitoring...",
"amdTitle": "AMD GPU Tools Installation",
"amdDescription": "Installing amdgpu_top for AMD GPU monitoring...",
"intelTitle": "Intel GPU Tools Installation",
"intelDescription": "Installing intel-gpu-tools for Intel GPU monitoring...",
"coralTitle": "Coral TPU Driver Installation",
"coralDescription": "Installing gasket + apex kernel modules and Edge TPU runtime...",
"switchModeTitle": "GPU Switch Mode → {mode}",
"switchModeDescription": "Switching GPU {slot} to {mode} mode...",
"switchModeVm": "VM (VFIO passthrough)",
"switchModeLxc": "LXC (native driver)"
}
},
"backup": {
"actions": {
"addAnother": "Add another",
"addPath": "Add path",
"all": "All",
"apply": "Apply",
"back": "Back",
"change": "Change",
"clear": "Clear",
"delete": "Delete",
"disable": "Disable",
"download": "Download",
"edit": "Edit",
"enable": "Enable",
"format": "Format",
"generateKey": "Generate key",
"import": "Import",
"importKeyfile": "Import keyfile",
"mount": "Mount",
"next": "Next",
"recoverKeyfile": "Recover keyfile",
"regenerate": "Regenerate",
"restore": "Restore",
"restoreSelected": "Restore selected",
"runNow": "Run now",
"saveChanges": "Save changes",
"unmount": "Unmount",
"upload": "Upload",
"use": "Use",
"viewContents": "View contents"
},
"archives": {
"archive": "Archive",
"at": "at",
"backup": "Backup",
"backupTimeLabel": "Backup time",
"deleteBackendTitle": "Delete this backup",
"deleteBorgDescription": "This removes the Borg archive from the repository.",
"deleteBorgTitle": "Delete Borg archive",
"deleteLocalDescription": "This removes the local backup archive from disk.",
"deleteLocalTitle": "Delete local archive",
"deletePbsDescription": "This removes the PBS snapshot from the datastore.",
"deletePbsTitle": "Delete PBS snapshot",
"companionFile": "companion file",
"descriptionAfter": "",
"descriptionBefore": "Browse and restore backups found in",
"downloadTitle": "Download this backup",
"emptyAfter": "backups yet.",
"emptyBefore": "No",
"encrypted": "Encrypted",
"encryptedTitle": "This backup is encrypted",
"filesInBackup": "Files in backup",
"group": "Group",
"host": "Host",
"importKeyToDownloadTitle": "Import the matching keyfile before downloading",
"importKeyToRestoreTitle": "Import the matching keyfile before restoring",
"importKeyToViewTitle": "Import the matching keyfile before viewing contents",
"inspectTitle": "Inspect backup",
"job": "Job",
"loadFailed": "Could not load backups",
"packedSizeLabel": "Packed size",
"remoteQueryWarning": "Remote backups may take a moment to query.",
"restoreTitle": "Restore from this backup",
"startingExport": "Preparing download...",
"title": "Backups",
"viewContentsTitle": "View backup contents"
},
"backends": {
"borgDescription": "Borg repository for deduplicated host backups.",
"borgDescriptionTimerOnly": "Borg destinations are used by Monitor timers, not PVE vzdump jobs.",
"borgShortDescription": "Deduplicated Borg repository",
"local": "Local",
"localDescription": "Folder on this host or on a mounted USB drive.",
"localShortDescription": "Local folder or mounted disk",
"pbsDescription": "Proxmox Backup Server datastore.",
"pbsShortDescription": "Proxmox Backup Server"
},
"common": {
"checking": "Checking...",
"loading": "Loading...",
"no": "No",
"or": "or",
"yes": "Yes"
},
"configuration": {
"title": "Backup configuration"
},
"contents": {
"driversToReinstall": "Drivers to reinstall",
"extracting": "Extracting snapshot and analyzing — this may take a minute on large backups...",
"filesShowing": "Showing {shown} of {filtered}{filteredLabel}{total}",
"filesTitle": "Files ({count}{plus})",
"filesTruncated": " · list truncated at 5000 — open the snapshot manually to see the rest",
"filtered": " filtered",
"manifest": "Manifest",
"manifestMissingBefore": "This backup doesn't include manifest.json. The metadata files below contain equivalent information:",
"metadataFiles": "Metadata files",
"network": "Network",
"noDrivers": "No drivers to reinstall.",
"noManifest": "No manifest in this archive.",
"noNetworkChanges": "No interface changes planned.",
"noStorageEntries": "No storage entries reported.",
"restorePlan": "Restore plan",
"restorePlanUnavailable": "Restore plan unavailable: {error}",
"rollbackPlan": "Rollback plan",
"storage": "Storage",
"title": "Backup contents",
"totalFiles": " (total {count})"
},
"deleteJob": {
"attachedToStorage": "Attached to PVE storage",
"attachedWarning": "This job is attached to a PVE storage hook. Deleting it also removes the Monitor hook from that storage.",
"description": "The timer and Monitor metadata for this job will be removed.",
"timerWarning": "The systemd timer will be removed. Already-created backups stay in their destination.",
"title": "Delete backup job"
},
"destinations": {
"absolutePathHelp": "Use an absolute path on this host.",
"addBorgRepository": "Add Borg repository",
"addDestinationTitle": "Add {type} destination",
"addLocalDestinationTitle": "Add local destination",
"addPbsRepository": "Add PBS repository",
"appendAuthorizedKeyBefore": "Append the generated public key to",
"backupsKeptBefore": "Existing backups are kept in",
"borgEncryptionInherited": "Borg encryption is controlled by the repository.",
"builtIn": "Built-in",
"builtInDefault": "Built-in default",
"capacityUnavailable": "Capacity unavailable",
"configureDescription": "Choose where host backups should be stored.",
"configureDestination": "Configure destination",
"createsSshKeyAfter": "when you save.",
"createsSshKeyBefore": "Monitor creates an SSH key at",
"datacenterStorage": "Datacenter → Backup",
"defaultUserBefore": "Default user:",
"editDestinationTitle": "Edit {type} destination",
"editLocalDestinationTitle": "Edit local destination",
"editTitle": "Edit destination",
"fingerprintHelp": "Optional server fingerprint verification.",
"generateNewSshKey": "Generate new SSH key",
"jobsWillBeDeleted": "{count} jobs that use this destination will also be deleted.",
"kept": "kept",
"leavePassphraseBlank": "Leave blank to keep the saved passphrase.",
"leavePasswordBlank": "Leave blank to keep the saved password.",
"localAttachHelpBefore": "Use a mounted local path. For USB drives, mount them first in",
"localAttachHelpMiddle": "USB drives",
"localManualPickHelp": "Pick a local path for one-shot backup output.",
"localPathHelpAfter": "or another mounted path.",
"localPathHelpBefore": "Example:",
"localPickHelpBefore": "Pick a local folder or mounted USB path.",
"localUsb": "Local / USB",
"localUsbDescription": "Folder on this host or a mounted USB drive.",
"managedByPve": "Managed by PVE",
"manuallyAdded": "Manually added",
"nameCredentialsLocked": "Name and credentials are locked while jobs use this destination.",
"namePassphraseLocked": "Repository name and passphrase are locked while jobs use this destination.",
"noBorgInDialog": "Borg destination editing is available from the Borg setup flow.",
"noBorgInWizard": "Borg is not available for PVE-attached jobs.",
"noPbsInDialog": "PBS destination editing is available from the PBS setup flow.",
"noPbsInWizard": "No PBS repositories configured yet.",
"not": "not",
"pbsUserHelpBefore": "Usually",
"probingCapacity": "Checking capacity...",
"remoteSsh": "Remote SSH",
"remoteSshDescription": "Borg repository on another host over SSH.",
"removeAndDeleteJobs": "Remove destination and delete jobs",
"removeDescriptionPlain": "This only removes the destination from Monitor. Existing backups stay where they are.",
"removeDescriptionWithData": "This removes the destination from Monitor. Existing backups stay where they are.",
"removeDestination": "Remove destination",
"removeTitle": "Remove this destination",
"saveAnotherBorgTitle": "Save another Borg destination",
"saveAnotherLocalTitle": "Save another local destination",
"saveAnotherPbsTitle": "Save another PBS destination",
"shortIdentifierHelp": "Short name shown in Monitor.",
"single": "Destination",
"sshKeyHelpAfter": "and allow it on the remote host.",
"sshKeyHelpBefore": "Monitor stores the private key at",
"sshKeyHelpMiddle": "Copy the public key to",
"sshUserHelpAfter": "for example root.",
"sshUserHelpBefore": "User on the remote host,",
"title": "Destinations",
"unmountTitle": "Unmount this destination",
"whereIsBorgRepo": "Where is the Borg repository?"
},
"encryption": {
"autoDetectedFromPveStorage": "Detected from PVE storage",
"borgPassphraseLossBefore": "If you lose the Borg passphrase, encrypted backups cannot be restored.",
"borgPassphraseOnlyWay": "This passphrase is the only way to unlock the repository.",
"borgPassphraseSavedAfter": "so scheduled jobs can run unattended.",
"borgPassphraseSavedAt": "Passphrase is saved at",
"encryptBackups": "Encrypt backups",
"encryptThisBackup": "Encrypt this backup",
"encryptedModeTitle": "Encrypted mode",
"encryptedRepokey": "Encrypted repokey",
"encryptedRepokeyDescription": "Borg stores the key inside the repository, protected by your passphrase.",
"existingKeyAt": "Existing key at",
"generateManualDescription": "Generate a new keyfile and use it for this backup.",
"generateNewKeyfile": "Generate new keyfile",
"generateNewKeyfileDescriptionAfter": "and stores it locally for future PBS restores.",
"generateNewKeyfileDescriptionBefore": "Monitor creates",
"importExistingKeyfile": "Import existing keyfile",
"importExistingKeyfileDescription": "Upload a keyfile that matches existing encrypted backups.",
"importKeyfileHelpAfter": "before restoring encrypted PBS backups.",
"importKeyfileHelpBefore": "Import the matching keyfile into",
"importManualDescription": "Use an existing keyfile from this machine.",
"noEncryption": "No encryption",
"noEncryptionDescription": "Backups are stored without an encryption key.",
"noKeyStored": "No keyfile stored locally.",
"none": "None",
"passphraseNotSaved": "Passphrase is not saved.",
"passphraseSaved": "Passphrase saved",
"pbsHelpAfter": "for encrypted PBS restores.",
"pbsHelpBefore": "PBS encryption uses",
"pbsHelpEnd": "Keep a safe copy outside this host.",
"pbsHelpMiddle": "as the keyfile",
"pveKeyWillBeCopied": "The PVE encryption key will be copied for Monitor restores.",
"savePassphraseNow": "Save passphrase for scheduled runs",
"unrecoverable": "Without the key, encrypted backups cannot be restored.",
"usesSharedKeyfileAt": "Uses shared keyfile at"
},
"errors": {
"backendNoStagingPath": "Backend did not return a staging path.",
"deleteFailed": "Delete failed: {error}",
"downloadFailed": "Download failed: {error}",
"encryptionSetupFailed": "Encryption setup failed: {error}",
"exportDidNotComplete": "Export did not complete.",
"localArchivePathMissing": "Local archive path is missing.",
"passphrasesDoNotMatch": "Passphrases do not match.",
"passphrasesDontMatch": "Passphrases do not match.",
"pickKeyfile": "Pick a keyfile first.",
"preflightFailed": "Preflight failed: {error}",
"proxmoxBackupClientOutput": "proxmox-backup-client output:",
"recoveryPassphraseRequired": "Recovery passphrase is required.",
"repoNameAndSnapshotRequired": "Repository name and snapshot are required.",
"runFailed": "Run failed: {error}",
"snapshotInfoMissing": "Snapshot information is missing.",
"toggleFailed": "Could not change job state: {error}"
},
"extraPaths": {
"absolutePathHintAfter": "— the path must exist on this host exactly as typed.",
"absolutePathHintBefore": "Use the full absolute path.",
"absolutePathHintMiddle": "is not the same as",
"descriptionAfter": "(manual or scheduled, default or custom profile) on top of the default profile list. Useful for app data, custom config folders, and similar paths. ({count} configured)",
"descriptionBefore": "Paths added here are included in",
"empty": "No custom paths yet — backups use the default profile only.",
"everyBackup": "every backup",
"missingOnDisk": "missing on disk",
"removeTitle": "Remove this custom path",
"title": "Custom paths"
},
"fields": {
"absolutePathOnHost": "Absolute path on host",
"archiveNameLabel": "Archive name",
"backend": "Backend",
"backendLabel": "Backend",
"backupGroupLabel": "Backup group",
"backupId": "Backup ID",
"bootMode": "Boot mode",
"borgIdLabel": "Borg ID",
"borgRepository": "Borg repository",
"confirmPassphrase": "Confirm passphrase",
"createdLabel": "Created",
"datastore": "Datastore",
"dayOfMonth": "Day of month",
"daysOfWeek": "Days of week",
"destinationDirectory": "Destination directory",
"detectedViaLabel": "Detected via",
"directoryPath": "Directory path",
"directoryShort": "Dir",
"encryption": "Encryption",
"expressionLabel": "Expression",
"filesystemShort": "fs",
"fingerprintOptional": "Fingerprint (optional)",
"free": "Free",
"groupNameInPbs": "Group name in PBS",
"jobId": "Job ID",
"jobIdLabel": "Job ID",
"jobName": "Job name",
"kernel": "Kernel",
"label": "Label",
"localDestination": "Local destination",
"lvmVgs": "LVM VGs",
"memory": "Memory",
"minuteOfHour": "Minute of hour",
"mode": "Mode",
"name": "Name",
"nameLabel": "Name",
"newRecoveryPassphrase": "New recovery passphrase",
"nextRun": "Next run",
"normalizedLabel": "Normalized",
"onCalendarExpression": "OnCalendar expression",
"ownerLabel": "Owner",
"passphrase": "Passphrase",
"password": "Password",
"pathLabel": "Path",
"pbsRepository": "PBS repository",
"profileLabel": "Profile",
"pveJobLabel": "PVE job",
"pveStorage": "PVE storage",
"pveVersion": "PVE version",
"recoveryPassphrase": "Recovery passphrase",
"remoteRepositoryPath": "Remote repository path",
"repo": "Repo",
"repoNameLabel": "Repository name",
"repository": "Repository",
"repositoryLabel": "Repository",
"repositoryPath": "Repository path",
"retentionLabel": "Retention",
"roles": "Roles",
"schedule": "Schedule",
"scheduleLabel": "Schedule",
"serverHostOrIp": "Server host/IP",
"size": "Size",
"sizeLabel": "Size",
"source": "Source",
"sourceHost": "Source host",
"sourceHostLabel": "Source host",
"sshHostOrIp": "SSH host/IP",
"sshKeyPath": "SSH key path",
"sshUser": "SSH user",
"status": "Status",
"storageLabel": "Storage",
"target": "Target",
"timeOfDay": "Time of day",
"type": "Type",
"used": "Used",
"username": "Username",
"vmsLxcs": "VMs/LXCs",
"when": "When",
"whenLabel": "When",
"zfsPools": "ZFS pools"
},
"jobs": {
"attachDescriptionAfter": "backups.",
"attachDescriptionBefore": "Attach Monitor to a PVE vzdump job and run after the",
"attachDescriptionMiddle": "event for selected",
"attachToPveJob": "Attach to PVE job",
"attachedToPveVzdump": "Attached to PVE vzdump",
"backendEditHelp": "Backend cannot be changed after the job is created.",
"createJob": "Create job",
"createScheduledJob": "Create scheduled job",
"customProfileTitle": "Custom profile",
"defaultProfileTitle": "Default profile",
"detailDescription": "Schedule, profile, destination and last run for this job.",
"disableJob": "Disable job",
"disableJobDescription": "The systemd timer will be stopped — no further automatic runs. You can re-enable it later from this same dialog.",
"editScheduledJob": "Edit scheduled job",
"encryptedTitle": "Encrypted",
"inheritedRetentionLabel": "Retention from PVE job",
"inheritedScheduleLabel": "Schedule from PVE job",
"invalidJobName": "Use only letters, numbers, dashes and underscores.",
"jobNameHelpAfter": "Keep it short and readable.",
"jobNameHelpAnd": "and",
"jobNameHelpBefore": "Used in timer names and logs. Allowed characters also include",
"jobNameLocked": "Job name is locked after creation.",
"lastRun": "Last run",
"lastRunLabel": "Last run",
"liveLogSize": "live · {size}",
"loadFailed": "Could not load jobs",
"loadingJob": "Loading job...",
"manualOneShot": "manual / one-shot",
"manualOneShotDescription": "One-shot backup — captured at the time of the trigger. Cannot be re-run or edited.",
"neverRun": "never run",
"newScheduledJob": "New scheduled job",
"newScheduledJobDescription": "Create a recurring host backup job.",
"nextRun": "Next run",
"nextRunLabel": "Next run",
"nextRunTitle": "Next scheduled run",
"noCompatiblePveJob": "No compatible PVE backup job found",
"noCompatiblePveJobDescriptionAfter": "first.",
"noCompatiblePveJobDescriptionBefore": "Create or enable a PVE backup job for",
"noCompatiblePveJobDescriptionMiddle": "in",
"notAvailableForBorg": "not available for Borg",
"openJobTitle": "Open job details",
"parentPveJobHelpAfter": "runs successfully.",
"parentPveJobHelpBefore": "Monitor runs after this PVE job's",
"pbsGroupHelp": "This becomes the PBS backup group.",
"pickParentPveJob": "Pick parent PVE job",
"retentionTitle": "Retention",
"runAttachedTitle": "Trigger an ad-hoc run now (the PVE timer keeps its own schedule)",
"runNowTitle": "Trigger this job now",
"running": "Running...",
"scheduledTitle": "Scheduled",
"standaloneScheduledJob": "Standalone scheduled job",
"starting": "starting...",
"stepOf": "Step {step} of {total}",
"summary": "Summary",
"waitingForRunner": "Waiting for runner to start..."
},
"keyfileActions": {
"deleteDialogDescription": "Encrypted PBS backups will need the same keyfile before they can be restored.",
"deleteDialogTitle": "Delete local PBS keyfile?",
"deleteTitle": "Delete local keyfile",
"deleteWarningDownloadsAfter": "until you import the matching key again.",
"deleteWarningDownloadsBefore": "Encrypted backup downloads and restores will fail",
"deleteWarningNewBackups": "New encrypted backups cannot run without a keyfile.",
"deleteWarningRecoveryBlobs": "PBS recovery blobs remain on the server.",
"downloadTitle": "Download keyfile",
"fingerprintTitle": "Show key fingerprint",
"installed": "Installed",
"keyfileLabel": "PBS keyfile",
"notInstalled": "Not installed",
"orUploadFromMachine": "or upload one from this machine.",
"orUploadOwn": "or upload your own keyfile.",
"pveKeyDescriptionAfter": "and can be reused by Monitor.",
"pveKeyDescriptionBefore": "A PVE key exists at",
"pveKeyDescriptionMiddle": "It matches PVE storage encryption",
"pveKeyDetected": "PVE key detected",
"uploadDialogDescriptionAfter": "Encrypted backups created with a different key will still require their original key.",
"uploadDialogDescriptionBefore": "Upload the keyfile used for encrypted PBS backups.",
"uploadDialogTitle": "Upload PBS keyfile",
"uploadFromMachine": "Upload from this machine",
"uploadTitle": "Upload keyfile",
"useThisKey": "Use this key",
"willFail": "will fail"
},
"keyfileError": {
"currentlyInstalled": "Currently installed",
"description": "This backup is encrypted and needs the matching PBS keyfile.",
"importFrom": "Import the matching keyfile from",
"importPath": "Backup → Destinations → PBS keyfile",
"requiredManifest": "Required by backup",
"retryHint": "and try again.",
"title": "Matching keyfile required"
},
"keyfileGate": {
"descriptionAfter": "before this action can continue.",
"descriptionBefore": "This encrypted backup needs the matching keyfile",
"title": "Keyfile required"
},
"keyfileManagement": {
"below": "below",
"copyAfterCreateAfter": "after creating it.",
"copyAfterCreateBefore": "Download a safe copy",
"copyAfterManualBefore": "Keep a safe copy outside this host",
"currentPbsUploadStays": "Existing PBS recovery uploads stay in place.",
"downloadKeyfile": "Download keyfile",
"hideOptions": "Hide options",
"keepLocalDescriptionAfter": "and keep your own backup copy elsewhere.",
"keepLocalDescriptionBefore": "Keep the key only on this host",
"keepLocalOnly": "Keep local only",
"keepOffsiteCopy": "Keep an off-site copy",
"keyfileInstalled": "Keyfile installed",
"startUploading": "Start uploading recovery blobs to PBS",
"stopUploading": "Stop uploading recovery blobs",
"thisBackupReusesKeyfile": "This backup reuses the shared PBS keyfile.",
"title": "Keyfile management",
"updatePassphrase": "Update passphrase",
"uploadNo": "No, keep it local only",
"uploadQuestion": "Upload encrypted recovery copy to PBS?",
"uploadToPbs": "Upload to PBS",
"uploadYes": "Yes, upload recovery copy",
"withoutCopyWarning": "Without a copy, losing this host may also lose the key.",
"yesUpload": "Yes, upload",
"yesUploadDescription": "Monitor stores an encrypted recovery copy in PBS."
},
"keyfileRecovery": {
"descriptionBefore": "The encrypted keyfile blob is downloaded from PBS and decrypted with your recovery passphrase. The resulting key is written to",
"passphrase": "Recovery passphrase",
"pickSourceHost": "Pick the source host whose passphrase you remember — each install uploads its own escrow.",
"snapshot": "Recovery snapshot",
"title": "Recover PBS keyfile"
},
"logs": {
"openFull": "Open full log",
"runLog": "Run log",
"tail": "tail"
},
"manifest": {
"bootMode": "Boot mode",
"builtBy": "Built by",
"componentsAtBackup": "Components at backup",
"compression": "Compression",
"createdAt": "Created at",
"deviceCount": "{count} device(s)",
"encrypted": "Encrypted",
"gpus": "GPUs",
"interfaceCount": "{count} interface(s)",
"lxcsAtBackup": "LXCs at backup",
"memory": "Memory",
"nics": "NICs",
"pathCount": "{count} paths",
"pathsArchived": "Paths archived",
"proxmoxVersion": "Proxmox version",
"roles": "Roles",
"sourceHost": "Source host",
"vmsAtBackup": "VMs at backup"
},
"manual": {
"description": "Run a one-shot host backup now.",
"inProgress": "Manual backup in progress",
"oneShotDescription": "One-shot backups are kept as frozen jobs so you can inspect their log later.",
"reopenLogTitle": "Reopen log",
"run": "Run",
"runBackup": "Run backup",
"runOneShotBackup": "Run one-shot backup",
"title": "Manual backup",
"viewProgress": "View progress"
},
"paths": {
"count": "{count} paths",
"title": "Paths"
},
"placeholders": {
"autoFromPveStorage": "auto from PVE storage",
"extraPathExamples": "/root/my-folder, /srv/myapp/data, /etc/cron.d ...",
"filterPaths": "Filter paths...",
"keyfilePath": "/usr/local/share/proxmenux/pbs-key.conf",
"keyfileRecoveryPassphrase": "The passphrase set when the keyfile was created",
"leaveBlankForDefault": "leave blank for default",
"longRandomStoreSafe": "Long random value — store it safely",
"newRecoveryPassphrase": "New recovery passphrase",
"onCalendar": "*-*-* 02:30:00",
"pickBorgRepository": "Pick Borg repository",
"pickLocalDestination": "Pick local destination",
"pickPbsRepository": "Pick PBS repository",
"recoveryPassphrase": "Recovery passphrase",
"typeItAgain": "Type it again",
"unchangedTypeToReplace": "unchanged — type to replace"
},
"plan": {
"blockers": "Blockers",
"noIssues": "No blockers or warnings detected.",
"status": {
"blocked": "Blocked",
"error": "Error",
"failed": "Failed",
"ok": "OK",
"unknown": "Unknown",
"warn": "Warning"
},
"warnings": "Warnings"
},
"preflight": {
"applyWouldBeRefused": "Apply would be refused",
"driverReinstallPlan": "Driver reinstall plan",
"failCount": "{count} failed",
"keepCount": "{count} kept",
"lvmVgsCount": "{count} LVM VGs",
"networkInMode": "Network in selected mode",
"newCount": "{count} new",
"orphanCount": "{count} orphaned",
"passCount": "{count} passed",
"pveStorageCount": "{count} PVE storages",
"remapCount": "{count} remapped",
"storageInMode": "Storage in selected mode",
"warnCount": "{count} warnings",
"zfsPoolsCount": "{count} ZFS pools"
},
"profile": {
"custom": "Custom",
"customDescription": "Pick exactly which paths should be included.",
"default": "Default",
"defaultDescription": "Recommended host configuration and ProxMenux data.",
"defaultDescriptionShort": "Recommended host configuration.",
"pathsToInclude": "Paths to include",
"pickPaths": "Pick paths",
"title": "Profile"
},
"recovery": {
"copyFoundTitle": "Recovery copy found",
"encryptedCopyAvailable": "Encrypted key recovery copy is available in PBS.",
"keyfileMissingTitle": "PBS keyfile is missing",
"recoverArrow": "Recover →"
},
"restore": {
"ackAfter": "the VMs, LXCs and components listed above. This is irreversible.",
"ackBefore": "I understand that Complete restore will",
"afterRebootHint": "After the reboot, this Backups tab will show live post-restore progress with estimated time, per-component status, log tail and rollback delta. If Telegram/Discord/ntfy notifications are configured, you'll also receive the \"Host restore finished\" event.",
"backupKernel": "Backup kernel",
"blockedEncryptedTitle": "Encrypted restore blocked",
"blockedPathsHint": "Kernel/boot-tied paths are grayed out and cannot be selected — target runs a newer kernel.",
"chooseModeTitle": "Restore — choose mode",
"complete": "Complete",
"completeDescription": "Restore everything from the backup.",
"completeDescriptionAfter": "in the shell TUI menu. The terminal that opens next will still ask you to confirm safe-only vs safe+reboot vs all-at-once before touching the host.",
"completeDescriptionBefore": "Replays everything in the backup. Equivalent to picking",
"completeTitle": "Complete restore",
"crossKernelDescription": "Both Complete and Custom restore automatically skip kernel/boot-tied paths to avoid a kernel panic on next boot. Everything else (VMs, LXCs, network, components, custom paths) restores normally.",
"crossKernelTitle": "Cross-kernel restore — safe subset only",
"customByPaths": "Custom by paths",
"customByPathsDescription": "Pick exactly which paths to restore. Lists what's actually in this backup (default profile + your custom paths).",
"customByPathsTitle": "Custom restore by paths",
"customPickDescriptionAfter": "env var — same downstream code as the TUI. Reboot-required paths (kernel, modules, fstab, …) will be detected by the bash flow and you can schedule them for next boot from there.",
"customPickDescriptionBefore": "Pick the paths to restore. Your selection feeds",
"customPickDescriptionMiddle": "via the",
"destructiveTitle": "Complete restore will REMOVE the following (created after the backup)",
"noPathsMatch": "No paths match the filter.",
"noRestorablePaths": "This backup carries no restorable paths — only Complete restore is meaningful here.",
"olderThanTargetKernel": "is older than target kernel",
"operatorConfigDescription": "The following operator-authored settings will be merged into the target automatically, without touching kernel-tied defaults. Runs on both Complete and Custom restore.",
"operatorConfigTitle": "Operator config re-applied via kernel-agnostic merge",
"pathsInBackup": "({count} paths in backup)",
"pathsSelected": "{count} paths selected",
"pathsSkipped": "Paths that will be skipped ({count})",
"permanentlyDelete": "permanently delete",
"pickPathError": "Pick at least one path to continue.",
"preparationFailedTitle": "Restore preparation failed",
"selectedCount": "Selected: {selected} / {total}{shown}",
"shownCount": " ({count} shown)",
"skipped": "skipped",
"skippedPathTitle": "Skipped: kernel-tied path, target runs a newer kernel",
"terminalTitle": "Restore terminal",
"tickAckToEnable": "Tick the acknowledgement above to enable."
},
"retention": {
"daily": "Daily",
"hourly": "Hourly",
"keepDaily": "Keep daily",
"keepHourly": "Keep hourly",
"keepLast": "Keep last",
"keepMonthly": "Keep monthly",
"keepWeekly": "Keep weekly",
"keepYearly": "Keep yearly",
"last": "Last",
"monthly": "Monthly",
"none": "None",
"noneAccumulate": "No retention limits — backups accumulate until manually removed.",
"title": "Retention",
"weekly": "Weekly",
"yearly": "Yearly",
"zeroDisables": "0 disables this limit."
},
"rollback": {
"components": "Components:",
"configsIncluded": "Configurations included in backup",
"lxcConfigs": "LXC configs:",
"noDifferences": "No host-state differences detected — the backup state matches the current host (or the backup didn't include /etc/pve).",
"pveOnlyHint": "Only the /etc/pve config is restored — disk images stay where they live.",
"vmConfigs": "VM configs:"
},
"schedule": {
"advancedHelpAfter": "for exact systemd syntax.",
"advancedHelpBefore": "Use",
"advancedHelpMiddle": "and",
"advancedOption": "Advanced",
"borgTimerOnly": "Borg jobs are scheduled by Monitor timers.",
"dailyOption": "Daily",
"everyDayAt": "Every day at {time}",
"everyDayAtMidnight": "Every day at midnight",
"everyHourAtMinute": "Every hour at minute {minute}",
"everyHourAtMinuteZero": "Every hour",
"everyMinute": "Every minute",
"everyMondayAtMidnight": "Every Monday at midnight",
"firstDayMonthly": "First day of every month",
"hourlyHelpAfter": "runs once per hour.",
"hourlyHelpBefore": "At minute",
"hourlyHelpMiddle": "the timer",
"hourlyOption": "Hourly",
"howToSchedule": "How should it run?",
"janFirst": "January 1 every year",
"modeHelp": "Choose a simple schedule or enter a systemd OnCalendar expression.",
"monthlyOption": "Monthly",
"monthlySkipHelp": "If a month has fewer days, systemd skips that run.",
"pickAtLeastOneDay": "Pick at least one day.",
"pickFrequency": "Pick frequency",
"preview": "Preview",
"rawOnCalendar": "{value} (systemd OnCalendar)",
"title": "Schedule",
"weekdaysAt": "{days} at {time}",
"weeklyOption": "Weekly"
},
"status": {
"attached": "attached",
"disabled": "disabled",
"legacy": "legacy",
"manual": "manual",
"manualOneShot": "manual / one-shot",
"ok": "ok",
"running": "running",
"scheduled": "scheduled"
},
"taskStates": {
"completed": "completed",
"failed": "failed",
"packing": "packing",
"queued": "queued",
"restoring": "restoring",
"running": "running"
},
"usb": {
"description": "Mount USB drives so they can be picked as a local or Borg target. Drives that already had a filesystem can be remounted as-is; raw drives (no partition table) can be wiped and formatted to",
"drivesDetected": "{count} drives detected",
"empty": "No USB drives detected. Plug one in and refresh — Monitor scans for them automatically every 30s.",
"formatAndUse": "Format and use",
"formatDescription": "This will wipe the selected disk and create a single ext4 partition.",
"formatDrive": "Format drive",
"formatDriveQuestion": "Wipe and format this disk?",
"formatTitle": "Wipe + format this disk as ext4",
"formatWarning": "Everything on the disk will be destroyed. This cannot be undone.",
"mountAndUse": "Mount and use",
"mounted": "Mounted",
"noneDetected": "No USB drives detected.",
"repartitionHint": "The disk will be re-partitioned (GPT + single ext4 partition) and mounted automatically.",
"scanning": "Scanning USB drives...",
"stateEmpty": "no filesystem",
"stateMounted": "mounted",
"stateUnmounted": "not mounted",
"typeDeviceExactly": "Type the device path EXACTLY to confirm:",
"typeDeviceToConfirm": "Type the device path to confirm",
"unformatted": "Unformatted",
"unmountConfirm": "Unmount {path}? Any backup job pointing at this path will fail until you remount it.",
"unmounted": "Unmounted",
"uuidTitle": "uuid: {uuid}",
"wipeAndFormat": "Wipe and format"
},
"validation": {
"invalidLabel": "Invalid label."
},
"weekdays": {
"friday": "Friday",
"monday": "Monday",
"saturday": "Saturday",
"short": {
"fri": "Fri",
"mon": "Mon",
"sat": "Sat",
"sun": "Sun",
"thu": "Thu",
"tue": "Tue",
"wed": "Wed"
},
"sunday": "Sunday",
"thursday": "Thursday",
"tuesday": "Tuesday",
"wednesday": "Wednesday"
}
},
"healthStatus": {
"title": "System health status",
"description": "Detailed checks of all system components",
"status": { "ok": "OK", "info": "Info", "warning": "Warning", "critical": "Critical", "unknown": "Unknown" },
"stats": { "total": "Total", "healthy": "Healthy", "info": "Info", "warning": "Warn", "critical": "Critical", "unknown": "Unknown" },
"categories": {
"cpu": "CPU usage & temperature", "memory": "Memory & Swap", "storage": "Storage mounts & space",
"disks": "Disk I/O & errors", "network": "Network interfaces", "vms": "VMs & containers",
"services": "PVE services", "logs": "System logs", "updates": "System updates",
"security": "Security & certificates"
},
"checks": {
"cpu_usage": "CPU usage", "cpu_temperature": "Temperature", "ram_usage": "RAM usage", "swap_usage": "Swap usage",
"root_filesystem": "Root filesystem", "smart_health": "SMART health", "io_errors": "I/O errors", "zfs_pools": "ZFS pools",
"lvm_volumes": "LVM volumes", "lvm_check": "LVM status", "connectivity": "Connectivity", "qmp_communication": "QMP communication",
"container_startup": "Container startup", "vm_startup": "VM startup", "oom_killer": "OOM Killer", "cluster_mode": "Cluster mode",
"log_error_cascade": "Error cascade", "log_error_spike": "Error spike", "log_persistent_errors": "Persistent errors",
"log_critical_errors": "Critical errors", "pve_version": "Proxmox VE version", "security_updates": "Security updates",
"system_age": "System age", "pending_updates": "Pending updates", "kernel_pve": "Kernel / PVE", "uptime": "Uptime",
"certificates": "Certificates", "login_attempts": "Login attempts", "fail2ban": "Fail2Ban", "proxmox_storages": "Proxmox storage"
},
"details": {
"allOperational": "All systems operational", "normal": "Normal", "noIoErrors": "No I/O errors in dmesg",
"rootFilesystemOk": "Mounted read-write; space is OK", "noSmartWarnings": "No SMART warnings in the journal",
"noCriticalErrors": "No critical errors", "noCascadingErrors": "No cascading errors", "noErrorSpikes": "No error spikes",
"noPersistentPatterns": "No persistent patterns", "certificateValid": "Certificate is valid", "clusterDetected": "Cluster detected (corosync.conf is present)",
"active": "Active", "up": "UP", "kernelUpToDate": "Kernel/PVE is up to date", "proxmoxUpToDate": "Proxmox VE is up to date",
"noSecurityUpdates": "No security updates pending", "noContainerErrors": "No container startup errors", "noOomEvents": "No OOM events detected",
"noQmpTimeouts": "No QMP timeouts detected", "noVmFailures": "No VM startup failures", "dismissedByUser": "Dismissed by user",
"gatewayLatency": "Latency to gateway: {latency} ms", "failedLogins": "{count} failed login attempts in 24h", "fail2banBannedIps": "Fail2Ban is currently blocking {count} IP addresses (jails: {jails})", "uptimeDays": "Uptime: {count} days",
"pendingPackages": "{count} packages pending", "updatedDaysAgo": "Last updated {count} days ago", "storageAvailable": "{type} storage is available",
"mountReachable": "{type} mount is reachable", "rootfsUsed": "rootfs usage: {percent}% ({size})", "runningCtsSafe": "{count} running CTs have safe rootfs usage",
"pveStorageSafe": "{count} PVE block storage targets have safe usage", "remoteMountsHealthy": "{count} remote mounts are healthy"
},
"time": { "justNow": "just now", "oneMinuteAgo": "1 minute ago", "minutesAgo": "{count} minutes ago", "hoursMinutesAgo": "{hours}h {minutes}m ago" },
"errors": { "fetchFailed": "Failed to fetch health details", "unknown": "Unknown error", "loading": "Error loading health status" },
"noIssues": "No issues detected", "updateNow": "Update now", "dismissedItems": "Dismissed items ({count})",
"permanent": "Permanent", "dismissed": "Dismissed", "wasStatus": "was {status}", "permanentlySuppressed": "Permanently suppressed",
"suppressedForMore": "Suppressed for {duration} more", "customSuppressionSettings": "Custom suppression settings",
"autoSuppressedHint": "Alerts in these categories are automatically suppressed when detected.", "lastUpdated": "Last updated: {date}",
"updateTerminalTitle": "Proxmox system update", "updateTerminalDescription": "Runs apt-get update + dist-upgrade and post-update cleanup on the host.",
"dismiss": "Dismiss", "silenceFor": "Silence this alert for", "permanently": "Permanently",
"duration": { "hours": "{count}h", "days": "{count} days", "weeks": "{count} weeks", "months": "{count} months", "years": "{count} years", "24hours": "24 hours", "7days": "7 days" }
},
"profilePage": {
"loading": "Loading profile…",
"loadFailed": "Failed to load profile",
"title": "User profile",
"description": "Personal details shown in the header avatar menu. They are optional — the username already identifies the account.",
"avatar": {
"label": "Avatar",
"upload": "Upload avatar",
"replace": "Replace avatar",
"remove": "Remove avatar",
"hint": "PNG, JPEG, WebP or GIF. Up to 2 MB. Use a square image or crop it first for the best result in the header."
},
"username": {
"label": "Username",
"help": "This is the login name. To change it, disable authentication and configure it again in Security."
},
"displayName": {
"label": "Display name",
"optional": "(optional)",
"placeholder": "Display name",
"help": "Shown above the username in the avatar menu. Leave it empty to show only the username. Maximum 64 characters."
},
"accountSecurity": {
"title": "Account security",
"description": "Password, two-factor authentication and API tokens are managed in the Security panel.",
"openSecurity": "Open Security settings",
"fallback": "Open the Security tab from the navigation."
},
"errors": {
"saveDisplayNameFailed": "Failed to save display name",
"uploadFailed": "Upload failed ({status})",
"deleteFailed": "Delete failed ({status})"
}
},
"pwaInstall": {
"title": "Install ProxMenux Monitor",
"iosDescription": "Add the Monitor to your home screen for quick access.",
"androidDescription": "Add the Monitor as an app so it opens like a normal application.",
"addToHomeScreen": "Add to Home Screen",
"ios": {
"stepShareBefore": "Tap the",
"share": "Share",
"stepShareAfter": "button in the bottom bar",
"stepChooseBefore": "Choose",
"stepConfirmBefore": "Confirm by tapping",
"add": "Add",
"stepConfirmAfter": "in the top-right"
},
"android": {
"stepOpenMenu": "Open the browser menu",
"stepConfirm": "confirm by tapping",
"install": "Install"
},
"notNow": "Not now",
"neverAgain": "Dont show again"
},
"vmMetrics": {
"title": "Metrics — {name}",
"type": "Type",
"noData": "No data available",
"errors": {
"loading": "Error loading metrics"
},
"timeframes": {
"hour": "1 hour",
"day": "24 hours",
"week": "7 days",
"month": "30 days",
"year": "1 year"
},
"charts": {
"cpu": "CPU usage",
"memory": "Memory usage",
"diskIo": "Disk I/O",
"networkIo": "Network I/O"
},
"series": {
"cpu": "CPU %",
"memoryGb": "Memory GB",
"read": "Read",
"write": "Write",
"download": "Download",
"upload": "Upload"
}
},
"lxcTerminal": {
"title": "Terminal: {name} (ID: {id})",
"errors": {
"invalidVmid": "Invalid VMID — refusing to execute pct enter"
},
"commands": {
"listFiles": "List all files with details",
"changeDirectory": "Change directory",
"displayFile": "Display file contents",
"searchPattern": "Search for a pattern in a file",
"findFiles": "Find files by name",
"diskUsage": "Show disk usage",
"directorySizes": "Show directory sizes",
"memoryUsage": "Show memory usage",
"runningProcesses": "Show running processes",
"findProcess": "Find a running process",
"serviceStatus": "Check service status",
"restartService": "Restart a service",
"updatePackages": "Update packages",
"installPackage": "Install a package",
"followLog": "Follow a log file",
"changePermissions": "Change file permissions",
"changeOwner": "Change file owner",
"extractArchive": "Extract a tar.gz archive",
"listContainers": "List running containers",
"listImages": "List Docker images",
"showIpAddresses": "Show IP addresses",
"testConnectivity": "Test network connectivity",
"httpHeaders": "Get HTTP headers",
"commandHistory": "Show command history",
"clearScreen": "Clear the terminal screen"
}
},
"restoreProgress": {
"title": "Post-restore progress",
"startedAt": "Started {time}",
"finishedAt": "finished {time}",
"startedRelative": "started {time}",
"steps": "{done}/{total} steps",
"exitCode": "exit {code}",
"status": {
"running": "Restore in progress",
"complete": "Restore complete",
"failed": "Restore failed"
},
"componentStatus": {
"installing": "installing",
"ok": "OK",
"failed": "failed"
},
"time": {
"secondsAgo": "{count}s ago",
"minutesAgo": "{count}m ago",
"hoursAgo": "{count}h ago",
"daysAgo": "{count}d ago",
"estimating": "estimating time…",
"secondsLeft": "~{count}s left",
"minutesLeft": "~{count}m left",
"hoursLeft": "~{count}h left"
},
"log": {
"noLog": "no log yet",
"full": "Full",
"issuesOnly": "Issues only",
"noOutput": "(no output)"
},
"rollback": {
"empty": "There are no entries on this host that were missing from the restored backup.",
"showCleanup": "Show manual cleanup commands",
"description": "These entries exist on this host but were not in the restored backup. Review them before removing anything.",
"vms": "VMs created after the backup",
"lxcs": "LXCs created after the backup",
"components": "Components installed after the backup",
"uninstallComponentCommand": "# uninstall {name} manually via ProxMenux → Hardware & GPU"
},
"sections": {
"components": "Components",
"bootWarnings": "Boot sanity warnings",
"rollbackDelta": "Rollback delta",
"log": "Log"
},
"dataPools": {
"title": "ZFS data pools — auto-import",
"imported": "Imported",
"importedForced": "Imported (forced, foreign hostid)",
"importedForcedHelp": "The new hostid was written to the pool label — the next boot should import cleanly.",
"skippedPartial": "Skipped (some disks missing)",
"skippedPartialHelp": "Some vdev disks were not found under /dev/disk/by-id. The pool was not imported to avoid a degraded auto-import. Fix the disks or import it manually with zpool import.",
"skippedMissing": "Skipped (no disks present)",
"skippedMissingHelp": "None of this pools disks are on this host. Move the disks here or import the pool from another host.",
"importFailed": "Import failed",
"importFailedHelp": "ZFS rejected the import even with -f. Check zpool import and the log below.",
"logPath": "Log: {path}"
},
"history": {
"title": "Past restores",
"description": "Restore runs archived after boot. The latest 20 are kept.",
"empty": "No past restores recorded."
},
"badges": {
"bootWarnings": "Boot warnings: {count}",
"zfsPools": "ZFS pools: {count}",
"needAttention": "needs attention: {count}"
},
"actions": {
"details": "Details",
"history": "History",
"dismiss": "Dismiss"
},
"summary": {
"guests": "Guests",
"bindMountStubs": "Bind-mount stubs",
"staleNodesCleaned": "Stale nodes cleaned",
"components": "Components"
}
},
"terminal": {
"connected": "Connected",
"disconnected": "Disconnected",
"terminalCount": "{count} / 4 terminals",
"stackedLayout": "Stacked view (rows)",
"gridLayout": "2×2 grid view",
"new": "New",
"search": "Search",
"clear": "Clear",
"searchCommands": "Search commands",
"onlineSource": "Online — using the cheat.sh API",
"offlineSource": "Offline — using local commands",
"searchDescription": "Search for Linux and Proxmox commands",
"searchPlaceholder": "Search commands… (e.g. tar, docker, qm, systemctl)",
"searchingCheatSh": "Searching cheat.sh…",
"poweredByCheatSh": "Powered by cheat.sh",
"send": "Send",
"noResults": "No results found for {query}",
"tryDifferentSearch": "Try another command or check the spelling.",
"searchAnyCommand": "Search for any command",
"trySearchingFor": "Try searching for:",
"searchTip": "Tip: Search for any Linux or Proxmox command (qm, pct, zpool).",
"noExamplesFound": "No examples found",
"reconnecting": "Reconnecting…",
"reconnected": "Reconnected successfully",
"reconnectionFailed": "Reconnection failed",
"connectionClosed": "Connection closed",
"terminalTitle": "Terminal {number}",
"connectionTimeout": "Connection timed out. Check your network and try again.",
"vpnTip": "If you use a VPN, make sure the connection is stable.",
"websocketError": "WebSocket connection error",
"commandDescriptions": [
"List all Proxmox nodes", "List VMs on a node", "List LXC containers on a node",
"List storage on a node", "List network interfaces", "List all QEMU/KVM virtual machines",
"Start a virtual machine", "Stop a virtual machine", "Shut down a virtual machine safely",
"Show VM status", "Show VM configuration", "Create a VM Snapshot", "List all LXC containers",
"Start an LXC container", "Stop an LXC container", "Open an LXC container console",
"Show container configuration", "Show storage status", "List storage contents",
"Test Proxmox system performance", "Show the Proxmox VE version", "Check cluster status",
"Show cluster status", "List cluster nodes", "Show ZFS pool status", "List all ZFS pools",
"List all ZFS datasets", "List all files with details", "Change directory", "Create a directory",
"Remove a directory recursively", "Copy files or directories", "Move or rename files",
"Display file contents", "Search for a pattern in a file", "Find files by name",
"Change file permissions", "Change the file owner", "Extract a tar.gz archive",
"Create a tar.gz archive", "Show disk usage", "Show directory sizes", "Show memory usage",
"Show running processes", "Find a running process", "Force-kill a process", "Check service status",
"Start a service", "Stop a service", "Restart a service", "Update Debian/Ubuntu packages",
"Install a Debian/Ubuntu package", "Remove a package", "List running containers",
"List Docker images", "Open a shell in a container", "Show IP addresses",
"Test network connectivity", "Get HTTP headers", "Download a file", "Connect through SSH",
"Copy a file through SSH", "Follow a log file in real time", "Show command history",
"Clear the terminal screen"
]
},
"scriptTerminal": {
"processing": "Processing...",
"controlSequences": "Control Sequences",
"cancelInterrupt": "Cancel/Interrupt",
"exitNano": "Exit (nano)",
"searchHistory": "Search history",
"clipboard": "Clipboard",
"copySelection": "Copy selection",
"paste": "Paste",
"connected": "Connected",
"connecting": "Connecting",
"disconnected": "Disconnected",
"online": "Online",
"connectingStatus": "Connecting...",
"offline": "Offline",
"websocketError": "WebSocket error occurred",
"connectionClosed": "Connection closed",
"yes": "Yes",
"yourInput": "Your input:",
"submit": "Submit",
"ok": "OK"
}
}