diff --git a/client/src/locales/en.json b/client/src/locales/en.json index 2d3eb614c..c6ad859f0 100644 --- a/client/src/locales/en.json +++ b/client/src/locales/en.json @@ -1,15 +1,245 @@ { + "aboutus": "About Us", + "access": "Access", + "actions": "Actions", + "add": "Add", + "addMonitors": "Add monitors", + "administrator": "Administrator?", + "advancedMatching": "Advanced matching", + "ago": "ago", + "area": "Area", + "auth": { + "common": { + "errors": { + "validation": "Error validating data." + }, + "fields": { + "password": { + "errors": { + "incorrect": "The password you provided does not match our records" + } + }, + "role": { + "errors": { + "min": "At least one role is required" + } + } + }, + "inputs": { + "email": { + "errors": { + "empty": "To continue, please enter your email address", + "invalid": "Please recheck validity of entered email address" + }, + "label": "Email", + "placeholder": "jordan.ellis@domain.com" + }, + "firstName": { + "errors": { + "empty": "Please enter your name", + "length": "Name must be less than 50 characters", + "pattern": "Name must contain only letters, spaces, apostrophes, or hyphens" + }, + "label": "Name", + "placeholder": "Jordan" + }, + "lastName": { + "errors": { + "empty": "Please enter your surname", + "length": "Surname must be less than 50 characters", + "pattern": "Surname must contain only letters, spaces, apostrophes, or hyphens" + }, + "label": "Surname", + "placeholder": "Ellis" + }, + "password": { + "errors": { + "empty": "Please enter your password", + "incorrect": "The password you provided does not match our records", + "length": "Password must be at least 8 characters long", + "lowercase": "Password must contain at least 1 lowercase letter", + "number": "Password must contain at least 1 number", + "special": "Password must contain at least 1 special character (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)", + "uppercase": "Password must contain at least 1 uppercase letter" + }, + "label": "Password", + "rules": { + "length": { + "beginning": "Must be at least", + "highlighted": "8 characters long" + }, + "lowercase": { + "beginning": "Must contain at least", + "highlighted": "one lower character" + }, + "match": { + "beginning": "Passwords", + "highlighted": "must match" + }, + "number": { + "beginning": "Must contain at least", + "highlighted": "one number" + }, + "special": { + "beginning": "Must contain at least", + "highlighted": "one special character (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" + }, + "uppercase": { + "beginning": "Must contain at least", + "highlighted": "one upper character" + } + } + }, + "passwordConfirm": { + "errors": { + "different": "Entered passwords don't match, so one of them is probably mistyped", + "empty": "Please enter your password again for confirmation (helps with typos)" + }, + "label": "Confirm password", + "placeholder": "Re-enter password to confirm" + } + }, + "navigation": { + "back": "Back", + "continue": "Continue" + } + }, + "forgotPassword": { + "buttons": { + "openEmail": "Open email app", + "resetPassword": "Reset password" + }, + "heading": "Forgot password?", + "imageAlts": { + "email": "Email icon", + "lock": "Lock icon", + "passwordConfirm": "Password confirm icon", + "passwordKey": "Password key icon" + }, + "links": { + "login": "Go back to Log In", + "resend": "Didn't receive the email? Click to resend" + }, + "subheadings": { + "stepFour": "Your password has been successfully reset. Click below to log in magically.", + "stepOne": "No worries, we'll send you reset instructions.", + "stepThree": "Your new password must be different from previously used passwords.", + "stepTwo": "We sent a password reset link to " + }, + "toasts": { + "emailNotFound": "Email not found.", + "error": "Unable to reset password. Please try again later or contact support.", + "redirect": "Redirecting in ...", + "sent": "Instructions sent to .", + "success": "Your password was reset successfully." + } + }, + "login": { + "errors": { + "password": { + "incorrect": "The password you provided does not match our records" + } + }, + "heading": "Log in to continue", + "links": { + "forgotPassword": "Forgot password?", + "forgotPasswordLink": "Reset password", + "register": "Do not have an account?", + "registerLink": "Register here" + }, + "subheadings": { + "stepOne": "Enter your email", + "stepTwo": "Enter your password" + }, + "toasts": { + "incorrectPassword": "Incorrect password", + "success": "Welcome back! You're successfully logged in." + }, + "welcome": "Welcome back to Checkmate!" + }, + "registration": { + "description": { + "superAdmin": "Create your super admin account to get started", + "user": "Sign up as a user and ask super admin for access to your monitors" + }, + "gettingStartedButton": { + "superAdmin": "Create super admin account", + "user": "Sign up regular user" + }, + "heading": { + "superAdmin": "Create super admin", + "user": "Sign Up" + }, + "links": { + "login": "Already have an account? Log In" + }, + "subheadings": { + "stepOne": "Enter your personal details", + "stepThree": "Create your password", + "stepTwo": "Enter your email" + }, + "termsAndPolicies": "By creating an account, you agree to our Terms of Service and Privacy Policy.", + "toasts": { + "success": "Welcome! Your account was created successfully." + }, + "welcome": "Welcome to Checkmate!" + } + }, + "avgCpuTemperature": "Average CPU Temperature", + "bar": "Bar", + "basicInformation": "Basic Information", + "bulkImport": { + "fallbackPage": "Import a file to upload a list of servers in bulk", + "invalidFileType": "Invalid file type", + "noFileSelected": "No file selected", + "parsingFailed": "Parsing failed", + "selectFile": "Select File", + "selectFileDescription": "You can download our or sample", + "selectFileTips": "Select CSV file to upload", + "title": "Bulk Import", + "uploadFailed": "Upload failed", + "uploadSuccess": "Monitors created successfully!", + "validationFailed": "Validation failed" + }, + "bytesPerSecond": "Bytes per second", + "bytesReceived": "Bytes Received", + "bytesSent": "Bytes Sent", + "cancel": "Cancel", + "checkFormError": "Please check the form for errors.", + "checkFrequency": "Check frequency", + "checkHooks": { + "failureResolveAll": "Failed to resolve all incidents.", + "failureResolveMonitor": "Failed to resolve monitor incidents.", + "failureResolveOne": "Failed to resolve incident." + }, + "checkingEvery": "Checking every", + "checksPageActionResolveAllMonitor": "Resolve all checks", + "checksPageActionResolveMonitor": "Resolve monitor checks", + "checksPageTitle": "Checks", + "chooseGame": "Choose game", + "city": "CITY", + "ClickUpload": "Click to upload", + "close": "Close", "common": { + "alerts": { + "pageSpeedApiKey": { + "content": "Warning: You haven't added a Google PageSpeed API key yet. Visit Settings to add one. Without it, the PageSpeed monitor won't function." + } + }, "appName": "Checkmate", "breadcrumbs": { - "home": "Home", - "details": "Details" + "details": "Details", + "home": "Home" }, - "labels": { - "responseTime": "Response time", - "active": "Active", - "resolved": "Resolved", - "na": "N/A" + "imageUpload": { + "clickToUpload": "Click to upload", + "orDragAndDrop": "or drag and drop", + "maxSize": "Max size", + "supportedFormats": "Supported formats" + }, + "errors": { + "invalidFileFormat": "Invalid file format", + "invalidFileSize": "File size exceeds maximum allowed" }, "imageUpload": { "clickToUpload": "Click to upload", @@ -22,23 +252,26 @@ "invalidFileSize": "File size exceeds maximum allowed" }, "buttons": { - "toggleTheme": "Toggles light & dark", - "testNotifications": "Test notifications", + "cancel": "Cancel", + "configure": "Configure", + "confirm": "Confirm", "create": "Create", + "delete": "Delete", "incidents": "Incidents", "pause": "Pause", "resume": "Resume", - "delete": "Delete", - "cancel": "Cancel", - "confirm": "Confirm", "save": "Save", "test": "Test", - "configure": "Configure" + "testNotifications": "Test notifications", + "toggleTheme": "Toggles light & dark" }, - - "alerts": { - "pageSpeedApiKey": { - "content": "Warning: You haven't added a Google PageSpeed API key yet. Visit Settings to add one. Without it, the PageSpeed monitor won't function." + "charts": { + "labels": { + "averageResponseTime": "Average response time", + "downtime": "Downtime", + "high": "High", + "low": "Low", + "uptime": "Uptime" } }, "dialogs": { @@ -47,189 +280,612 @@ "title": "Are you sure you want to delete this?" } }, - "toasts": { - "networkError": "Network error", - "checkConnection": "Please check your connection", - "unknownError": "Unknown error" + "forDocumentation": "for query language documentation.", + "labels": { + "active": "Active", + "na": "N/A", + "resolved": "Resolved", + "responseTime": "Response time" }, + "monitoringAgentName": "Capture", + "see": "See", "table": { + "empty": "Nothing here", "headers": { "actions": "Actions", + "active": "Active", + "dateTime": "Date & time", "message": "Message", "monitor": "Monitor", "name": "Name", "status": "Status", - "type": "Type", - "dateTime": "Date & time" - }, - "empty": "Nothing here" - }, - "charts": { - "labels": { - "uptime": "Uptime", - "downtime": "Downtime", - "averageResponseTime": "Average response time", - "low": "Low", - "high": "High" + "type": "Type" } - } - }, - "submit": "Submit", - "settingsSuccessSaved": "Settings saved successfully", - "settingsFailedToSave": "Failed to save settings", - "settingsStatsCleared": "Stats cleared successfully", - "settingsFailedToClearStats": "Failed to clear stats", - "settingsMonitorsDeleted": "Successfully deleted all monitors", - "settingsFailedToDeleteMonitors": "Failed to delete all monitors", - "starPromptTitle": "Star Checkmate", - "starPromptDescription": "See the latest releases and help grow the community on GitHub", - "aboutus": "About Us", - "delete": "Delete", - "configure": "Configure", - "notifications": { - "fetch": { - "failed": "Failed to fetch notifications" }, - "test": { - "success": "Test notification sent successfully" + "toasts": { + "checkConnection": "Please check your connection", + "networkError": "Network error", + "unknownError": "Unknown error" } }, - "add": "Add", + "commonSave": "Save", + "commonSaving": "Saving...", + "companyName": "Company name", "components": { "headerTimeRange": { - "labels": { - "recent": "Recent", - "day": "Day", - "week": "Week", - "month": "Month" - }, "description": { - "recent": "Showing statistics for past 2 hours.", "day": "Showing statistics for past 24 hours.", - "week": "Showing statistics for past 7 days.", - "month": "Showing statistics for past 30 days." + "month": "Showing statistics for past 30 days.", + "recent": "Showing statistics for past 2 hours.", + "week": "Showing statistics for past 7 days." + }, + "labels": { + "day": "Day", + "month": "Month", + "recent": "Recent", + "week": "Week" } } }, + "configure": "Configure", + "confirmPassword": "Confirm password", + "cores": "Cores", + "country": "COUNTRY", + "cpu": "CPU", + "cpuFrequency": "CPU Frequency", + "cpuLogical": "CPU (Logical)", + "cpuPhysical": "CPU (Physical)", + "cpuTemperature": "CPU Temperature", + "cpuUsage": "CPU usage", + "createA": "Create a", + "createMaintenance": "Create maintenance", + "createMaintenanceWindow": "Create maintenance window", + "createMonitor": "Create monitor", + "createMonitorPage": { + "incidentConfigDescription": "A sliding window is used to determine when a monitor goes down. The status of a monitor will only change when the percentage of checks in the sliding window meet the specified value.", + "incidentConfigDescriptionV2": "Number of consecutive checks needed to change monitor status. Maximum 25", + "incidentConfigStatusCheckNumber": "How many checks before status change?", + "incidentConfigStatusWindowLabel": "How many checks should be in the sliding window?", + "incidentConfigStatusWindowThresholdLabel": "What percentage of checks in the sliding window fail/succeed before monitor status changes?", + "incidentConfigTitle": "Incidents", + "intervalDescription": "How often the monitor should be checked.", + "intervalTitle": "Check interval" + }, + "createNew": "Create new", + "createNotifications": { + "dialogDeleteConfirm": "Delete", + "dialogDeleteTitle": "Are you sure you want to delete this notification?", + "discordSettings": { + "description": "Configure your Discord webhook here", + "title": "Discord", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://your-server.com/webhook" + }, + "emailSettings": { + "description": "Destination email addresses.", + "emailLabel": "Email address", + "emailPlaceholder": "e.g. john@example.com", + "title": "Email" + }, + "nameSettings": { + "description": "A descriptive name for your integration.", + "nameLabel": "Name", + "namePlaceholder": "e.g. Slack notifications", + "title": "Name" + }, + "pagerdutySettings": { + "description": "Configure your PagerDuty integration here", + "integrationKeyLabel": "Integration key", + "integrationKeyPlaceholder": "1234567890", + "title": "PagerDuty" + }, + "slackSettings": { + "description": "Configure your Slack webhook here", + "title": "Slack", + "webhookLabel": "Slack webhook URL", + "webhookPlaceholder": "https://hooks.slack.com/services/..." + }, + "testNotification": "Test notification", + "title": "Create notification channel", + "typeSettings": { + "description": "Select the type of notification channel you want to create.", + "title": "Type", + "typeLabel": "Type" + }, + "webhookSettings": { + "description": "Configure your webhook here", + "title": "Webhook", + "webhookLabel": "Webhook URL", + "webhookPlaceholder": "https://your-server.com/webhook" + } + }, + "createYour": "Create your", + "dataRate": "Data Rate", + "dataReceived": "Data Received", + "dataSent": "Data Sent", + "date&Time": "Date & Time", + "delete": "Delete", + "DeleteAccountButton": "Remove account", + "DeleteAccountTitle": "Remove account", + "DeleteAccountWarning": "Removing your account means you won't be able to sign in again and all your data will be removed. This isn't reversible.", + "DeleteDescriptionText": "This will remove the account and all associated data from the server. This isn't reversible.", + "deleteDialogDescription": "Once deleted, this monitor cannot be retrieved.", + "deleteDialogTitle": "Do you really want to delete this monitor?", + "deleteStatusPage": "Do you want to delete this status page?", + "deleteStatusPageConfirm": "Yes, delete status page", + "deleteStatusPageDescription": "Once deleted, your status page cannot be retrieved.", + "DeleteWarningTitle": "Really remove this account?", + "details": "Details", + "device": "Device", + "diagnosticsPage": { + "diagnosticDescription": "System diagnostics", + "gauges": { + "heapAllocationSubtitle": "% of available memory", + "heapAllocationTitle": "Heap allocation", + "heapUsageSubtitle": "% of available memory", + "heapUsageTitle": "Heap usage", + "heapUtilizationSubtitle": "% of allocated", + "heapUtilizationTitle": "Heap utilization", + "instantCpuUsageSubtitle": "% of 1s used by CPU", + "instantCpuUsageTitle": "Instant CPU usage" + }, + "stats": { + "eventLoopDelayTitle": "Event loop delay", + "osMemoryLimitTitle": "OS Memory Limit", + "totalHeapSizeTitle": "Total heap size", + "uptimeTitle": "Uptime", + "usedHeapSizeTitle": "Used heap size" + }, + "statsDescription": "System statistics" + }, + "disk": "Disk", + "diskUsage": "Disk Usage", + "displayName": "Display name", + "distributedUptimeCreateAdvancedSettings": "Advanced settings", + "distributedUptimeCreateChecks": "Checks to perform", + "distributedUptimeCreateChecksDescription": "You can always add or remove checks after adding your site.", + "distributedUptimeCreateSelectURL": "Here you can select the URL of the host, together with the type of monitor.", + "distributedUptimeDetailsNoMonitorHistory": "There is no check history for this monitor yet.", + "dnsLookup": "DNS lookup", + "dockerContainerMonitoring": "Docker container monitoring", + "dockerContainerMonitoringDescription": "Check whether your Docker container is running or not.", + "download": "Download", + "DragandDrop": "drag and drop", + "drops": "Drops", + "duration": "Duration", + "edit": "Edit", + "editing": "Editing...", + "editMaintenance": "Edit maintenance", + "editUserPage": { + "form": { + "email": "Email", + "firstName": "First name", + "lastName": "Last name", + "role": "Roles", + "save": "Save" + }, + "table": { + "actionHeader": "Action", + "headers": { + "name": "Status page name", + "url": "Public URL" + }, + "roleHeader": "Role" + }, + "title": "Edit user", + "toast": { + "successUserUpdate": "User updated successfully", + "validationErrors": "Validation errors" + } + }, + "EmailDescriptionText": "This is your current email address — it cannot be changed.", + "emailSent": "Email sent successfully", + "errorInvalidFieldId": "Invalid field ID provided", + "errorInvalidTypeId": "Invalid notification type provided", + "errorPages": { + "serverUnreachable": { + "alertBox": "Server Connection Error", + "description": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.", + "retryButton": { + "default": "Retry connection", + "processing": "Connecting..." + }, + "toasts": { + "reconnected": "Successfully reconnected to the server.", + "stillUnreachable": "Server is still unreachable. Please try again later." + } + } + }, + "errors": "Errors", + "errorsIn": "Errors In", + "errorsOut": "Errors Out", + "expectedValue": "Expected value", + "export": { + "failed": "Failed to export monitors", + "success": "Monitors exported successfully!", + "title": "Export Monitors" + }, + "failedToSendEmail": "Failed to send email", + "features": "Features", + "FirstName": "First name", + "frequency": "Frequency", + "friendlyNameInput": "Friendly name", + "friendlyNamePlaceholder": "Maintenance at __ : __ for ___ minutes", + "gameServerMonitoring": "Game Server Monitoring", + "gameServerMonitoringDescription": "Check whether your game server is running or not", + "gb": "GB", + "general": { + "noOptionsFound": "No {{unit}} found" + }, + "greeting": { + "append": "The afternoon is your playground—let's make it epic!", + "overview": "Here's an overview of your {{type}} monitors.", + "prepend": "Hey there" + }, + "high": "high", + "host": "Host", + "http": "HTTP", + "https": "HTTPS", + "ignoreTLSError": "Ignore TLS/SSL error", + "ignoreTLSErrorDescription": "Ignore TLS/SSL errors and continue checking the website's availability", + "incidentsOptionsHeader": "Incidents for:", + "incidentsOptionsHeaderFilterAll": "All", + "incidentsOptionsHeaderFilterBy": "Filter by:", + "incidentsOptionsHeaderFilterCannotResolve": "Cannot Resolve", + "incidentsOptionsHeaderFilterDown": "Down", + "incidentsOptionsHeaderFilterResolved": "Resolved", + "incidentsOptionsHeaderLastDay": "Last day", + "incidentsOptionsHeaderLastHour": "Last hour", + "incidentsOptionsHeaderLastWeek": "Last week", + "incidentsOptionsHeaderShow": "Show:", + "incidentsOptionsHeaderTotalIncidents": "Total Incidents", + "incidentsOptionsPlaceholderAllServers": "All servers", + "incidentsPage": { + "active": "Active", + "all": "All", + "allSystemsAreOperational": "All Systems Are Operational", + "automatic": "Automatic", + "avgResolutionTime": "Avg. Resolution Time", + "description": "Manage incidents for your monitors. You can resolve incidents here.", + "endTime": "End Time", + "errorFetchingIncident": "Error fetching incident", + "errorFetchingIncidents": "Error fetching incidents", + "errorFetchingIncidentSummary": "Error fetching incident summary", + "filterByDate": "Filter by date", + "filterByMonitor": "Filter by monitor", + "filterByPriority": "Filter by priority", + "filterByStatus": "Filter by status", + "filterByType": "Filter by type", + "incidentItemMonitor": "Monitor", + "incidentItemStatus": "Status", + "incidentResolvedFailed": "Error resolving incident", + "incidentResolvedSuccessfully": "Incident resolved successfully", + "incidentsActivePanelError": "Error loading active incidents", + "incidentsActivePanelTitle": "Total Active Incidents", + "incidentsLatestPanelEmpty": "No recent incidents", + "incidentsLatestPanelError": "Error loading latest incidents", + "incidentsLatestPanelTitle": "Latest Incidents", + "incidentsOptionsHeaderFilterActive": "Active", + "incidentsOptionsHeaderFilterAll": "All", + "incidentsOptionsHeaderFilterAutomatic": "Automatic", + "incidentsOptionsHeaderFilterManual": "Manual", + "incidentsOptionsHeaderFilterResolved": "Resolved", + "incidentsStatisticsPanelError": "Error loading statistics", + "incidentsStatisticsPanelTitle": "General Statistics", + "incidentsTableActionDetails": "Details", + "incidentsTableActionGoToMonitor": "Go to monitor", + "incidentsTableActionResolveManually": "Resolve Manually", + "incidentsTableResolved": "Closed", + "manual": "Manual", + "mostAffectedMonitor": "Most Affected Monitor", + "noIncidentIdProvided": "No incident ID provided", + "resolutions": "Resolutions", + "resolutionType": "Resolution Type", + "resolved": "Resolved", + "resolveIncidentDialogCommentLabel": "Comment (optional)", + "resolveIncidentDialogCommentPlaceholder": "Add a comment about the resolution...", + "resolveIncidentDialogConfirm": "Resolve", + "resolveIncidentDialogTitle": "Resolve Incident", + "startTime": "Start Time", + "title": "Incidents", + "totalIncidents": "Total Incidents", + "unknownMonitor": "Unknown Monitor", + "unresolved": "Unresolved" + }, + "incidentsPageActionResolveAll": "Resolve all incidents", + "incidentsPageActionResolveMonitor": "Resolve monitor incidents", + "incidentsPageTitle": "Incidents", + "incidentsTableActionResolve": "Resolve", + "incidentsTableDateTime": "Date & Time", + "incidentsTableMessage": "Message", + "incidentsTableMonitorName": "Monitor Name", + "incidentsTableNoIncidents": "No incidents recorded", + "incidentsTablePaginationLabel": "incidents", + "incidentsTableResolvedAt": "Resolved at", + "incidentsTableStatus": "Status", + "incidentsTableStatusCode": "Status Code", + "infrastructureAlertNotificationDescription": "Send a notification to user(s) when thresholds exceed a specified percentage.", + "infrastructureAuthorizationSecretLabel": "Authorization secret", + "infrastructureCreateGeneralSettingsDescription": "Here you can select the URL of the host, together with the friendly name and authorization secret to connect to the server agent.", + "infrastructureCreateMonitor": "Create Infrastructure Monitor", + "infrastructureCreateYour": "Create your", + "infrastructureCustomizeAlerts": "Customize alerts", + "infrastructureDisplayNameLabel": "Display name", + "infrastructureEditMonitor": "Save Infrastructure Monitor", + "infrastructureEditYour": "Edit your", + "infrastructureMonitor": { + "fallback": { + "actionButton": "Let's create your first infrastructure monitor!", + "checks": [ + "Track the performance of your servers", + "Identify bottlenecks and optimize usage", + "Ensure reliability with real-time monitoring" + ], + "title": "An infrastructure monitor is used to:" + } + }, + "infrastructureMonitorCreated": "Infrastructure monitor created successfully!", + "infrastructureMonitorUpdated": "Infrastructure monitor updated successfully!", + "infrastructureProtocol": "Protocol", + "infrastructureServerRequirement": "The server you are monitoring must be running the", + "infrastructureServerUrlLabel": "Server URL", + "integrations": "Integrations", + "integrationsDiscord": "Discord", + "integrationsDiscordInfo": "Connect with Discord and view incidents directly in a channel", + "integrationsPrism": "Connect Prism to your favorite service.", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "Connect with Slack and see incidents in a channel", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "Send all incidents to Zapier, and then see them everywhere", + "invalidFileFormat": "Unsupported file format!", + "invalidFileSize": "File size is too large!", + "inviteNoTokenFound": "No invite token found", + "LastName": "Last name", + "loginHere": "Login here", + "logsPage": { + "description": "System logs - last 1000 lines", + "logLevelSelect": { + "title": "Log level", + "values": { + "all": "All", + "debug": "Debug", + "error": "Error", + "info": "Info", + "warn": "Warn" + } + }, + "noLogs": "No logs found", + "table": { + "headers": { + "name": "Status page name", + "url": "Public URL" + }, + "level": "Level", + "logs": "logs", + "message": "Message", + "method": "Method", + "service": "Service", + "timestamp": "Timestamp" + }, + "tabs": { + "diagnostics": "Diagnostics", + "logs": "Server logs", + "queue": "Job queue" + }, + "title": "Logs", + "toast": { + "fetchLogsSuccess": "Logs fetched successfully" + } + }, + "low": "low", + "maintenance": "maintenance", + "maintenanceRepeat": "Maintenance Repeat", + "maintenanceTableActionMenuDialogTitle": "Do you really want to remove this maintenance window?", + "maintenanceWindow": { + "fallback": { + "actionButton": "Let's create your first maintenance window!", + "checks": [ + "Mark your maintenance periods", + "Eliminate any misunderstandings", + "Stop sending alerts in maintenance windows" + ], + "title": "A maintenance window is used to:" + } + }, + "maintenanceWindowDescription": "During maintenance windows, all monitoring is suspended for selected monitors. No network checks will be performed, preventing any status updates or notifications from being triggered. Your monitors will appear frozen at their last known status, and status pages will display a maintenance indicator. Once the maintenance window ends, monitoring automatically resumes, and alerts will trigger if issues are detected. Maintenance periods do not count against uptime calculations.", + "maintenanceWindowName": "Maintenance Window Name", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "matchMethod": "Match Method", + "matchMethodOptions": { + "equal": "Equal", + "equalPlaceholder": "success", + "include": "Include", + "includePlaceholder": "ok", + "regex": "Regex", + "regexPlaceholder": "^(success|ok)$", + "text": "Match Method" + }, + "MaxSize": "Maximum Size", + "mb": "MB", + "mem": "Mem", + "memory": "Memory", + "memoryUsage": "Memory usage", + "menu": { + "changelog": "Changelog", + "checks": "Checks", + "discussions": "Discussions", + "docs": "Docs", + "incidents": "Incidents", + "infrastructure": "Infrastructure", + "integrations": "Integrations", + "logOut": "Log out", + "logs": "Logs", + "maintenance": "Maintenance", + "notifications": "Notifications", + "pagespeed": "Pagespeed", + "password": "Password", + "profile": "Profile", + "settings": "Settings", + "statusPages": "Status pages", + "support": "Support", + "team": "Team", + "uptime": "Uptime" + }, + "message": "Message", + "monitor": "monitor", + "monitorActions": { + "deleteFailed": "Failed to delete monitor", + "deleteSuccess": "Monitor deleted successfully", + "details": "Details", + "export": "Export Monitors", + "import": "Import Monitors", + "title": "Export/Import" + }, + "monitorDisplayName": "Monitor display name", + "monitorHooks": { + "failureAddDemoMonitors": "Failed to add demo monitors", + "successAddDemoMonitors": "Successfully added demo monitors" + }, + "monitors": "monitors", + "monitorState": { + "active": "Active", + "paused": "Paused", + "resumed": "Resumed" + }, + "monitorStatus": { + "checkingEvery": "Checking every {{interval}}", + "down": "down", + "paused": "paused", + "up": "up", + "withCaptureAgent": "with Capture agent {{version}}" + }, + "monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding", + "monitorStatusUp": "Monitor {name} ({url}) is now UP and responding", + "monitorsToApply": "Monitors to apply maintenance window to", + "monitorType": { + "docker": { + "label": "Container Name/ID", + "namePlaceholder": "My Container", + "placeholder": "my-app or abcd1234" + }, + "game": { + "label": "URL to monitor", + "namePlaceholder": "localhost:5173", + "placeholder": "localhost" + }, + "http": { + "label": "URL to monitor", + "namePlaceholder": "Google", + "placeholder": "google.com" + }, + "ping": { + "label": "IP address to monitor", + "namePlaceholder": "Google", + "placeholder": "1.1.1.1" + }, + "port": { + "label": "URL to monitor", + "namePlaceholder": "Localhost:5173", + "placeholder": "localhost" + } + }, + "mountedOn": "Mounted on", + "ms": "ms", + "navControls": "Controls", + "network": "Network", + "networkDrops": "Network Drops", + "networkErrors": "Network Errors", + "networkInterface": "Network Interface", + "nextWindow": "Next window", + "noNetworkStatsAvailable": "No network stats available.", + "notFoundButton": "Go to the main dashboard", + "notificationConfig": { + "description": "Select the notifications channels you want to use", + "placeholder": "Search notifications...", + "title": "Notifications" + }, + "notifications": { + "addOrEditNotifications": "Add or edit notifications", + "create": { + "failed": "Failed to create notification", + "success": "Notification created successfully" + }, + "createButton": "Create notification channel", + "createTitle": "Notification channel", + "delete": { + "failed": "Failed to delete notification", + "success": "Notification deleted successfully" + }, + "discord": { + "description": "To send data to a Discord channel from Checkmate via Discord notifications using webhooks, you can use Discord's incoming Webhooks feature.", + "label": "Discord", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "Discord webhook URL is required" + }, + "edit": { + "failed": "Failed to update notification", + "success": "Notification updated successfully" + }, + "enableNotifications": "Enable {{platform}} notifications", + "fallback": { + "actionButton": "Let's create your first notification channel!", + "checks": [ + "Alert teams about downtime or performance issues", + "Let engineers know when incidents happen", + "Keep administrators informed of system changes" + ], + "title": "A notification channel is used to:" + }, + "fetch": { + "failed": "Failed to fetch notifications", + "success": "Notifications fetched successfully" + }, + "integrationButton": "Notification Integration", + "networkError": "Network error occurred", + "slack": { + "description": "To enable Slack notifications, create a Slack app and enable incoming webhooks. After that, simply provide the webhook URL here.", + "label": "Slack", + "webhookLabel": "Webhook URL", + "webhookPlaceholder": "https://hooks.slack.com/services/...", + "webhookRequired": "Slack webhook URL is required" + }, + "telegram": { + "chatIdLabel": "Your Chat ID", + "chatIdPlaceholder": "-1001234567890", + "description": "To enable Telegram notifications, create a Telegram bot using BotFather, an official bot for creating and managing Telegram bots. Then, get the API token and chat ID and write them down here.", + "fieldsRequired": "Telegram token and chat ID are required", + "label": "Telegram", + "tokenLabel": "Your bot token", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11" + }, + "test": { + "failed": "Failed to send test notification", + "success": "Test notification sent successfully" + }, + "testFailed": "Failed to send test notification", + "testNotification": "Test notification", + "testNotificationDevelop": "Test notification 2", + "testSuccess": "Test notification sent successfully!", + "unsupportedType": "Unsupported notification type", + "webhook": { + "description": "You can set up a custom webhook to receive notifications when incidents occur.", + "label": "Webhooks", + "urlLabel": "Webhook URL", + "urlPlaceholder": "https://your-server.com/webhook", + "urlRequired": "Webhook URL is required" + } + }, + "notifyEmails": "Also notify via email to multiple addresses (coming soon)", + "notifySMS": "Notify via SMS (coming soon)", + "now": "Now", + "os": "OS", + "packetsPerSecond": "Packets per second", + "packetsReceived": "Packets Received", + "packetsReceivedRate": "Packets Received Rate", + "packetsSent": "Packets Sent", "pages": { - "common": { - "monitors": { - "status": { - "up": "up", - "down": "down", - "paused": "paused", - "total": "total", - "initializing": "initializing" - }, - "actions": { - "openSite": "Open site", - "details": "Details", - "incidents": "Incidents", - "configure": "Configure", - "pause": "Pause", - "resume": "Resume", - "delete": "Delete" - }, - "statBoxes": { - "activeFor": "Active for", - "lastCheck": "Last check", - "lastResponseTime": "Last response time", - "certificateExpiry": "Certificate expiry" - } - } - }, - "createMonitor": { - "form": { - "type": { - "description": "Select the type of check to perform", - "title": "Type", - "optionHttp": "HTTP(S)", - "optionPing": "Ping", - "optionDocker": "Docker", - "optionPort": "Port", - "optionGame": "Game" - }, - "general": { - "title": "General settings", - "option": { - "url": { - "label": "URL", - "placeholder": "https://www.google.com" - }, - "name": { - "label": "Display name", - "placeholder": "e.g. My Website" - }, - "host": { - "label": "Host", - "placeholder": "192.168.1.100 or example.com" - }, - "container": { - "label": "Container name/ID", - "placeholder": "my-app or abcd1234" - }, - "secret": { - "label": "Authorization secret" - } - } - }, - "frequency": { - "title": "Check frequency", - "description": "How often do you want to check the status of this monitor?" - }, - "incidents": { - "title": "Incidents", - "description": "A sliding window is used to determine when a monitor goes down. The status of a monitor will only change when the percentage of checks in the sliding window meet the specified value.", - "option": { - "checks": { - "label": "Number of checks in sliding window" - } - } - }, - "notifications": { - "title": "Notifications", - "description": "Select the notification channels you want to use" - }, - "ignoreTls": { - "title": "TLS/SSL settings", - "description": "Configure TLS/SSL certificate validation for HTTPS connections.", - "option": { - "tls": { - "label": "Ignore TLS/SSL errors" - } - } - }, - "advanced": { - "title": "Advanced settings", - "description": "Optional settings for advanced use cases", - "option": { - "jsonPath": { - "description": "This expression will be evaluated against the response JSON data and the result will be used to match against the expected value. See jmespath.org for query language documentation." - } - } - } - } - }, - "uptime": { - "table": { - "headers": { - "responseTime": "Response time" - } - }, - "filters": { - "search": { - "placeholder": "Search monitors..." - } - } - }, "checks": { - "table": { - "headers": { - "dateTime": "Date & time", - "statusCode": "Status code" - }, - "empty": "No down checks in this time range" - }, "selects": { "monitor": { "all": "All monitors" @@ -239,71 +895,246 @@ "down": "Down", "up": "Up" } - } - }, - "pageSpeed": { - "fallback": { - "checks": [ - "Report on the user experience of a page", - "Help analyze webpage speed", - "Give suggestions on how the page can be improved" - ], - "title": "A PageSpeed monitor is used to:", - "actionButton": "Let's create your first PageSpeed monitor!" }, "table": { + "empty": "No down checks in this time range", "headers": { - "pageSpeedScore": "PageSpeed score" + "dateTime": "Date & time", + "statusCode": "Status code" + } + } + }, + "common": { + "monitors": { + "actions": { + "configure": "Configure", + "delete": "Delete", + "details": "Details", + "incidents": "Incidents", + "openSite": "Open site", + "pause": "Pause", + "resume": "Resume" + }, + "statBoxes": { + "activeFor": "Active for", + "certificateExpiry": "Certificate expiry", + "lastCheck": "Last check", + "lastResponseTime": "Last response time" + }, + "status": { + "down": "down", + "initializing": "initializing", + "paused": "paused", + "total": "total", + "up": "up" + } + } + }, + "createMonitor": { + "form": { + "advanced": { + "description": "Optional settings for advanced use cases", + "option": { + "advancedMatching": { + "label": "Use advanced matching" + }, + "expectedValue": { + "description": "The expected value is used to match against response result, and the match determines the status.", + "label": "Expected value" + }, + "jsonPath": { + "description": "This expression will be evaluated against the response JSON data and the result will be used to match against the expected value. See jmespath.org for query language documentation.", + "label": "JSONPath expression" + }, + "matchMethod": { + "label": "Match method" + } + }, + "title": "Advanced settings" + }, + "frequency": { + "description": "How often do you want to check the status of this monitor?", + "option": { + "frequency": { + "label": "Check frequency" + } + }, + "title": "Check frequency" + }, + "general": { + "description": { + "docker": "Enter the Docker container name or ID. You can use either the container name (e.g., my-app) or the container ID (full 64-char ID or short ID).", + "game": "Enter the IP address or hostname and the port number to ping (e.g., 192.168.1.100 or example.com) and choose game type.", + "hardware": "Enter the URL of your infrastructure agent, the authorization secret, and a clear display name that appears on the dashboard.", + "http": "Enter the URL or IP to monitor (e.g., https://example.com/ or 192.168.1.100) and add a clear display name that appears on the dashboard.", + "pagespeed": "Enter the URL of the page to analyze with Google PageSpeed and add a clear display name that appears on the dashboard.", + "ping": "Enter the IP address or hostname to ping (e.g., 192.168.1.100 or example.com) and add a clear display name that appears on the dashboard.", + "port": "Enter the URL or IP of the server, the port number and a clear display name that appears on the dashboard." + }, + "option": { + "container": { + "label": "Container name/ID", + "placeholder": "my-app or abcd1234" + }, + "host": { + "label": "Host", + "placeholder": "192.168.1.100 or example.com" + }, + "name": { + "label": "Display name", + "placeholder": "e.g. My Website" + }, + "secret": { + "label": "Authorization secret", + "placeholder": "Enter your secret key" + }, + "url": { + "label": "URL", + "placeholder": "https://www.google.com" + } + }, + "title": "General settings" + }, + "ignoreTls": { + "description": "Configure TLS/SSL certificate validation for HTTPS connections.", + "option": { + "tls": { + "label": "Ignore TLS/SSL errors" + } + }, + "title": "TLS/SSL settings" + }, + "incidents": { + "description": "A sliding window is used to determine when a monitor goes down. The status of a monitor will only change when the percentage of checks in the sliding window meet the specified value.", + "option": { + "checks": { + "label": "Number of checks in sliding window" + }, + "percentage": { + "label": "What percentage of checks in the sliding window fail/succeed before monitor status changes?" + } + }, + "title": "Incidents" + }, + "notifications": { + "description": "Select the notification channels you want to use", + "title": "Notifications" + }, + "type": { + "description": "Select the type of check to perform", + "optionDocker": "Docker", + "optionDockerDescription": "Use Docker to monitor if a container is running.", + "optionGame": "Game", + "optionGameDescription": "Monitor if a specific game server is online.", + "optionHardware": "Hardware", + "optionHardwareDescription": "Monitor server hardware metrics like CPU, memory, and disk.", + "optionHttp": "HTTP(S)", + "optionHttpDescription": "Use HTTP(S) to monitor your website or API endpoint.", + "optionPagespeed": "PageSpeed", + "optionPagespeedDescription": "Analyze page performance using Google PageSpeed Insights.", + "optionPing": "Ping", + "optionPingDescription": "Use ICMP Ping to monitor if a server is online.", + "optionPort": "Port", + "optionPortDescription": "Monitor if a specific port on a server is open.", + "optionType": "Type", + "title": "Type" + } + } + }, + "incidents": { + "dialog": { + "details": { + "analysis": "Incident analysis", + "comment": "Comment:", + "detailsLabel": "Details", + "downtime": "Downtime:", + "message": "Message:", + "monitor": "Monitor:", + "overview": "Overview", + "resolutionDetails": "Resolution details", + "resolutionType": "Type:", + "resolutionTypes": { + "automatic": "Automatic", + "manual": "Manual" + }, + "resolve": "Resolve Incident", + "resolvedAt": "Resolved at:", + "resolvedBy": "Resolved by:", + "startedAt": "Started at:", + "status": "Status:", + "statusCode": "Status code:", + "timeline": "Timeline", + "title": "Incident details", + "url": "URL:" } }, - "charts": { - "common": { - "cls": "Cumulative Layout Shift (CLS)", - "fcp": "First Contentful Paint (FCP)", - "lcp": "Largest Contentful Paint (LCP)", - "si": "Speed Index (SI)", - "tbt": "Total Blocking Time (TBT)" + "filters": { + "allMonitors": "All monitors", + "clearFilters": "Clear Filters", + "monitor": "Monitor", + "resolutionType": "Resolution type", + "resolutionTypes": { + "automatic": "Automatic", + "manual": "Manual" + } + }, + "summaryCard": { + "activeIncidents": { + "active_one": "{{count}} Active incident", + "active_other": "{{count}} Active incidents", + "active_zero": "No active incidents", + "title": "Active Incidents" }, - "pie": { - "title": "Performance report" + "incidentStats": { + "avgResolutionTime": "Average resolution time", + "mostAffectedMonitor": "Most affected monitor", + "title": "Incident Statistics", + "totalIncidents": "Total incidents" }, - "legend": { - "title": "PageSpeed report", - "weight": "Weight" + "latestIncidents": { + "title": "Latest Incidents" + } + }, + "table": { + "actions": { + "details": "Details", + "goToMonitor": "Go to monitor", + "resolveManually": "Resolve Manually" + }, + "activeIncidents": "Active Incidents", + "headers": { + "endTime": "End Time", + "resolutionType": "Resolution Type", + "startTime": "Start Time", + "statusCode": "Status Code" + }, + "resolvedIncidents": "Resolved Incidents", + "status": { + "active": "Active", + "na": "N/A", + "resolved": "Resolved" } } }, "infrastructure": { + "charts": { + "labels": { + "cpu": "CPU usage", + "disk": "Disk usage", + "memory": "Memory usage", + "netBytesRecv": "{{name}} - Bytes Received", + "netBytesSent": "{{name}} - Bytes Sent", + "temp": "Temp" + } + }, "fallback": { + "actionButton": "Let's create your first infrastructure monitor!", "checks": [ "Track the performance of your servers", "Identify bottlenecks and optimize usage", "Ensure reliability with real-time monitoring" ], - "title": "An infrastructure monitor is used to:", - "actionButton": "Let's create your first infrastructure monitor!" - }, - "table": { - "headers": { - "cpu": "CPU", - "disk": "Disk", - "memory": "Memory" - } - }, - "tabs": { - "labels": { - "overview": "Overview", - "network": "Network" - } - }, - "statBoxes": { - "cpuPhysical": "CPU (Physical)", - "cpuLogical": "CPU (Logical)", - "cpuFrequency": "CPU Frequency", - "avgCpuTemperature": "Average CPU Temperature", - "memory": "Memory", - "disk": "Disk", - "os": "OS" + "title": "An infrastructure monitor is used to:" }, "gauges": { "cpu": { @@ -322,14 +1153,26 @@ "upperLabel": "Used" } }, - "charts": { + "statBoxes": { + "avgCpuTemperature": "Average CPU Temperature", + "cpuFrequency": "CPU Frequency", + "cpuLogical": "CPU (Logical)", + "cpuPhysical": "CPU (Physical)", + "disk": "Disk", + "memory": "Memory", + "os": "OS" + }, + "table": { + "headers": { + "cpu": "CPU", + "disk": "Disk", + "memory": "Memory" + } + }, + "tabs": { "labels": { - "memory": "Memory usage", - "cpu": "CPU usage", - "temp": "Temp", - "disk": "Disk usage", - "netBytesSent": "{{name}} - Bytes Sent", - "netBytesRecv": "{{name}} - Bytes Received" + "network": "Network", + "overview": "Overview" } } }, @@ -343,32 +1186,9 @@ ], "title": "Notification channles are used to:" }, - "table": { - "headers": { - "destination": "Destination" - } - }, "form": { - "notificationName": { - "description": "A descriptive name for the notification channel", - "optionName": "Channel name", - "placeholder": "e.g. Production Alerts", - "title": "Channel name" - }, - "type": { - "description": "Select the type of notification channel to create.", - "optionType": "Type", - "title": "Channel type" - }, - "homeServer": { - "optionHomeServer": "Home server", - "placeholder": "example.com" - }, - "roomId": { - "optionRoomId": "Room ID", - "placeholder": "!abcdefg:matrix.org" - }, "accessToken": { + "optionAccessToken": "Access token", "placeholder": "syt_YWxleF9ob2xsaWRheQ_VmtScmV0U2VjcmV0S2V5_abc123" }, "address": { @@ -378,102 +1198,77 @@ "placeholderWebhook": "https://your-server.com/webhook", "title": "Address" }, + "homeServer": { + "description": "Select the home server for this notification channel.", + "optionHomeServer": "Home server", + "placeholder": "example.com", + "title": "Home server" + }, + "matrix": { + "description": "Configure your Matrix homeserver connection for notifications.", + "title": "Matrix configuration" + }, + "notificationName": { + "description": "A descriptive name for the notification channel", + "optionName": "Channel name", + "placeholder": "e.g. Production Alerts", + "title": "Channel name" + }, "pagerDuty": { "description": "Your PagerDuty integration key for receiving alerts.", "optionIntegrationKey": "Integration key", "placeholder": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "title": "Integration key" }, - "matrix": { - "description": "Configure your Matrix homeserver connection for notifications.", - "title": "Matrix configuration" + "roomId": { + "optionRoomId": "Room ID", + "placeholder": "!abcdefg:matrix.org" + }, + "type": { + "description": "Select the type of notification channel to create.", + "optionType": "Type", + "title": "Channel type" + } + }, + "table": { + "headers": { + "destination": "Destination" } } }, - "incidents": { - "summaryCard": { - "activeIncidents": { - "title": "Active Incidents", - "active_zero": "No active incidents", - "active_one": "{{count}} Active incident", - "active_other": "{{count}} Active incidents" + "pageSpeed": { + "charts": { + "common": { + "cls": "Cumulative Layout Shift (CLS)", + "fcp": "First Contentful Paint (FCP)", + "lcp": "Largest Contentful Paint (LCP)", + "si": "Speed Index (SI)", + "tbt": "Total Blocking Time (TBT)" }, - "latestIncidents": { "title": "Latest Incidents" }, - "incidentStats": { - "title": "Incident Statistics", - "totalIncidents": "Total incidents", - "mostAffectedMonitor": "Most affected monitor", - "avgResolutionTime": "Average resolution time" + "legend": { + "title": "PageSpeed report", + "weight": "Weight" + }, + "pie": { + "title": "Performance report" } }, - + "fallback": { + "actionButton": "Let's create your first PageSpeed monitor!", + "checks": [ + "Report on the user experience of a page", + "Help analyze webpage speed", + "Give suggestions on how the page can be improved" + ], + "title": "A PageSpeed monitor is used to:" + }, "table": { - "activeIncidents": "Active Incidents", - "resolvedIncidents": "Resolved Incidents", "headers": { - "startTime": "Start Time", - "endTime": "End Time", - "resolutionType": "Resolution Type", - "statusCode": "Status Code" - }, - "status": { - "active": "Active", - "resolved": "Resolved", - "na": "N/A" - }, - "actions": { - "details": "Details", - "goToMonitor": "Go to monitor", - "resolveManually": "Resolve Manually" - } - }, - "filters": { - "monitor": "Monitor", - "allMonitors": "All monitors", - "resolutionType": "Resolution type", - "resolutionTypes": { - "automatic": "Automatic", - "manual": "Manual" - }, - "clearFilters": "Clear Filters" - }, - "dialog": { - "details": { - "title": "Incident details", - "resolve": "Resolve Incident", - "overview": "Overview", - "status": "Status:", - "monitor": "Monitor:", - "url": "URL:", - "analysis": "Incident analysis", - "timeline": "Timeline", - "detailsLabel": "Details", - "startedAt": "Started at:", - "statusCode": "Status code:", - "downtime": "Downtime:", - "message": "Message:", - "resolutionDetails": "Resolution details", - "resolvedAt": "Resolved at:", - "resolutionType": "Type:", - "resolvedBy": "Resolved by:", - "comment": "Comment:", - "resolutionTypes": { - "automatic": "Automatic", - "manual": "Manual" - } + "pageSpeedScore": "PageSpeed score" } } }, "statusPages": { - "title": "Status Pages", - "table": { - "headers": { - "name": "Status page name", - "url": "Public URL" - }, - "published": "Published", - "unpublished": "Unpublished" - }, "fallback": { "actionButton": "Create a status page!", "checks": [ @@ -483,10 +1278,14 @@ ], "title": "A status page is used to:" }, + "monitorsList": { + "chartTypeHeatmap": "Heatmap", + "chartTypeHistogram": "Histogram" + }, "serviceStauts": "Service stauts", "statusBar": { - "allUp": "All systems operational", "allDown": "All systems down", + "allUp": "All systems operational", "degraded": "Degraded performance", "unknown": "Unknown status" }, @@ -715,242 +1514,132 @@ "registerToast": { "success": "User created, share credentials with the member securely." }, - "role": "Role", - "changeTeamPassword": { - "changePasswordMenu": "Reset Password", - "title": "Reset team member password", - "description": "Create a new password for this team member. You will need to share the password with them securely.", - "success": "Password successfully reset. Make sure to provide the credentials to the member in a secure way." + "uptime": { + "fallback": { + "actionButton": "Create a monitor!", + "checks": [ + "Check if websites or servers are online & responsive", + "Alert teams about downtime or performance issues", + "Monitor HTTP endpoints, pings, containers & ports", + "Track historical uptime and reliability trends" + ], + "title": "An uptime monitor is used to:" + }, + "filters": { + "search": { + "placeholder": "Search monitors..." + } + }, + "table": { + "headers": { + "responseTime": "Response time" + } + } } }, - "menu": { - "uptime": "Uptime", - "pagespeed": "Pagespeed", - "infrastructure": "Infrastructure", - "incidents": "Incidents", - "statusPages": "Status pages", - "maintenance": "Maintenance", - "settings": "Settings", - "support": "Support", - "discussions": "Discussions", - "docs": "Docs", - "changelog": "Changelog", - "profile": "Profile", - "password": "Password", - "team": "Team", - "logOut": "Log out", - "notifications": "Notifications", - "logs": "Logs", - "checks": "Checks" + "pageSpeed": { + "fallback": { + "actionButton": "Let's create your first PageSpeed monitor!", + "checks": [ + "Report on the user experience of a page", + "Help analyze webpage speed", + "Give suggestions on how the page can be improved" + ], + "title": "A PageSpeed monitor is used to:" + } }, - "statusBreadCrumbsStatusPages": "Status Pages", - "statusBreadCrumbsDetails": "Details", - "commonSaving": "Saving...", - "navControls": "Controls", + "pageSpeedAddApiKey": "to add your API key.", + "pageSpeedConfigureSettingsDescription": "Here you can select the URL of the host, together with the type of monitor.", + "pageSpeedDetailsPerformanceReport": "Values are estimated and may vary.", + "pageSpeedDetailsPerformanceReportCalculator": "See calculator", + "pageSpeedLearnMoreLink": "Click here", + "pageSpeedLighthouseAPI": "Use the Lighthouse PageSpeed API to monitor your website", + "pageSpeedMonitor": "PageSpeed monitor", + "pageSpeedWarning": "Warning: You haven't added a Google PageSpeed API key yet. Without it, the PageSpeed monitor won't function.", "passwordPanel": { + "confirmNewPassword": "Confirm new password", "currentPassword": "Current password", - "newPassword": "New password", + "enterCurrentPassword": "Enter your current password", "enterNewPassword": "Enter your new password", - "confirmNewPassword": "Confirm new password" - }, - "failedToSendEmail": "Failed to send email", - "settingsTestEmailSuccess": "Test email sent successfully", - "settingsTestEmailFailed": "Failed to send test email", - "settingsTestEmailUnknownError": "Unknown error", - "auth": { - "common": { - "navigation": { - "continue": "Continue" - }, - "inputs": { - "email": { - "label": "Email", - "placeholder": "jordan.ellis@domain.com" - }, - "password": { - "label": "Password", - "rules": { - "length": { - "beginning": "Must be at least", - "highlighted": "8 characters long" - }, - "special": { - "beginning": "Must contain at least", - "highlighted": "one special character (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)" - }, - "number": { - "beginning": "Must contain at least", - "highlighted": "one number" - }, - "uppercase": { - "beginning": "Must contain at least", - "highlighted": "one upper character" - }, - "lowercase": { - "beginning": "Must contain at least", - "highlighted": "one lower character" - }, - "match": { - "beginning": "Passwords", - "highlighted": "must match" - } - } - }, - "passwordConfirm": { - "label": "Confirm password", - "placeholder": "Re-enter password to confirm" - }, - "firstName": { - "label": "Name", - "placeholder": "Jordan" - }, - "lastName": { - "label": "Surname", - "placeholder": "Ellis" - } - }, - "errors": { - "validation": "Error validating data." - } - }, - "login": { - "heading": "Log in to continue", - "links": { - "forgotPassword": "Forgot password?", - "register": "Do not have an account?", - "forgotPasswordLink": "Reset password", - "registerLink": "Register here" - }, - "toasts": { - "success": "Welcome back! You're successfully logged in.", - "incorrectPassword": "Incorrect password" - }, - "errors": { - "password": { - "incorrect": "The password you provided does not match our records" - } - }, - "welcome": "Welcome back to Checkmate!" - }, - "registration": { - "heading": { - "user": "Sign Up" - }, - "description": { - "superAdmin": "Create your super admin account to get started", - "user": "Sign up as a user and ask super admin for access to your monitors" - }, - "toasts": { - "success": "Welcome! Your account was created successfully." - }, - "welcome": "Welcome to Checkmate!" - }, - "forgotPassword": { - "heading": "Forgot password?", - "subheadings": { - "stepOne": "No worries, we'll send you reset instructions.", - "stepTwo": "We sent a password reset link to ", - "stepThree": "Your new password must be different from previously used passwords.", - "stepFour": "Your password has been successfully reset. Click below to log in magically." - }, - "buttons": { - "openEmail": "Open email app", - "resetPassword": "Reset password" - }, - "links": { - "login": "Go back to Log In", - "resend": "Didn't receive the email? Click to resend" - }, - "toasts": { - "sent": "Instructions sent to .", - "emailNotFound": "Email not found.", - "redirect": "Redirecting in ...", - "success": "Your password was reset successfully.", - "error": "Unable to reset password. Please try again later or contact support." - } - } - }, - "errorPages": { - "serverUnreachable": { - "toasts": { - "reconnected": "Successfully reconnected to the server.", - "stillUnreachable": "Server is still unreachable. Please try again later." - }, - "alertBox": "Server Connection Error", - "description": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.", - "retryButton": { - "default": "Retry connection", - "processing": "Connecting..." - } - } - }, - "selectAll": "Select all", - "showAdminLoginLink": "Show \"Administrator? Login Here\" link on the status page", - "logsPage": { - "title": "Logs", - "tabs": { - "queue": "Job queue", - "logs": "Server logs", - "diagnostics": "Diagnostics" - }, - "logLevelSelect": { - "title": "Log level", - "values": { - "all": "All", - "info": "Info", - "warn": "Warn", - "error": "Error", - "debug": "Debug" - } - }, - "table": { - "headers": { - "name": "Status page name", - "url": "Public URL" - }, - "timestamp": "Timestamp", - "level": "Level", - "service": "Service", - "method": "Method", - "message": "Message", - "logs": "logs" - }, - "noLogs": "No logs found" + "newPassword": "New password", + "passwordChangedSuccess": "Your password was changed successfully.", + "passwordInputIncorrect": "Your password input was incorrect.", + "passwordRequirements": "New password must contain at least 8 characters and must have at least one uppercase letter, one lowercase letter, one number and one special character (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`).", + "saving": "Saving..." }, + "pause": "Pause", + "PhotoDescriptionText": "This photo will be displayed in your profile page.", + "pingMonitoring": "Ping monitoring", + "pingMonitoringDescription": "Check whether your server is available or not.", + "portMonitoring": "Port monitoring", + "portMonitoringDescription": "Check whether your port is open or not.", + "portToMonitor": "Port to monitor", + "publicLink": "Public link", "queuePage": { - "refreshButton": "Refresh", - "flushButton": "Flush queue", - "jobTable": { - "title": "Jobs currently in queue", - "idHeader": "Monitor ID", - "urlHeader": "URL", - "typeHeader": "Type", - "activeHeader": "Active", - "lockedAtHeader": "Locked at", - "runCountHeader": "Run count", - "failCountHeader": "Fail count", - "lastRunHeader": "Last run at", - "lastFinishedAtHeader": "Last finished at", - "lastRunTookHeader": "Last run took", - "intervalHeader": "Interval" - }, - "metricsTable": { - "title": "Queue metrics", - "metricHeader": "Metric", - "valueHeader": "Value" - }, "failedJobTable": { - "title": "Failed jobs", - "monitorIdHeader": "Monitor ID", - "monitorUrlHeader": "Monitor URL", "failCountHeader": "Fail count", "failedAtHeader": "Last failed at", - "failReasonHeader": "Fail reason" - } + "failReasonHeader": "Fail reason", + "monitorIdHeader": "Monitor ID", + "monitorUrlHeader": "Monitor URL", + "title": "Failed jobs" + }, + "flushButton": "Flush queue", + "jobTable": { + "activeHeader": "Active", + "failCountHeader": "Fail count", + "idHeader": "Monitor ID", + "intervalHeader": "Interval", + "lastFinishedAtHeader": "Last finished at", + "lastRunHeader": "Last run at", + "lastRunTookHeader": "Last run took", + "lockedAtHeader": "Locked at", + "runCountHeader": "Run count", + "title": "Jobs currently in queue", + "typeHeader": "Type", + "urlHeader": "URL" + }, + "metricsTable": { + "metricHeader": "Metric", + "title": "Queue metrics", + "valueHeader": "Value" + }, + "refreshButton": "Refresh", + "title": "Queue" }, + "rate": "Rate", + "remove": "Remove", + "removeLogo": "Remove Logo", + "repeat": "Repeat", + "reset": "Reset", + "response": "RESPONSE", + "responseTime": "Response time", + "responseTimeBreakdown": "Response time breakdown", + "resume": "Resume", + "roles": { + "admin": "Admin", + "demoUser": "Demo user", + "superAdmin": "Super admin", + "teamMember": "Team member" + }, + "save": "Save", + "selectAll": "Select all", + "selectInterface": "Select Interface", + "sendTestNotifications": "Send test notifications", + "seperateEmails": "You can separate multiple emails with a comma", + "settingsAppearance": "Appearance", + "settingsDisabled": "Disabled", + "settingsDisplayTimezone": "Display timezone", + "settingsEmailUser": "Email user - Username for authentication, overrides email address if specified", + "settingsFailedToClearStats": "Failed to clear stats", + "settingsFailedToDeleteMonitors": "Failed to delete all monitors", + "settingsFailedToSave": "Failed to save settings", + "settingsGeneralSettings": "General settings", + "settingsMonitorsDeleted": "Successfully deleted all monitors", "settingsPage": { "aboutSettings": { "labelDevelopedBy": "Developed by Bluewave Labs", + "labelVersion": "Version", "title": "About" }, "demoMonitorsSettings": { @@ -965,9 +1654,14 @@ "labelAddress": "Email address - Used for authentication", "labelConnectionHost": "Email connection host - Hostname to use in the HELO/EHLO greeting", "labelHost": "Email host - Hostname or IP address to connect to", + "labelIgnoreTLS": "Disable STARTTLS: Don't use TLS even if the server supports it", "labelPassword": "Email password - Password for authentication", "labelPasswordSet": "Password is set. Click Reset to change it.", + "labelPool": "Enable connection pooling: Reuse existing connections to improve performance", "labelPort": "Email port - Port to connect to", + "labelRejectUnauthorized": "Reject invalid certificates: Reject connections with self-signed or untrusted certificates", + "labelRequireTLS": "Force STARTTLS: Require TLS upgrade, fail if not supported", + "labelSecure": "Use SSL (recommended): Encrypt the connection using SSL/TLS", "labelTLSServername": "TLS Servername - Optional Hostname for TLS Validation when host is an IP", "labelUser": "Email user - Username for authentication, overrides email address if specified", "linkTransport": "See specifications here", @@ -975,40 +1669,49 @@ "title": "Email", "toastEmailRequiredFieldsError": "Email address, host, port and password are required" }, + "globalThresholds": { + "description": "Configure global CPU, Memory, Disk, and Temperature thresholds. If a value is provided, it will automatically be enabled for monitoring.", + "title": "Global Thresholds" + }, "pageSpeedSettings": { "description": "Enter your Google PageSpeed API key to enable Google PageSpeed monitoring. Click Reset to update the key.", - "labelApiKeySet": "API key is set. Click Reset to change it.", "labelApiKey": "PageSpeed API key", + "labelApiKeySet": "API key is set. Click Reset to change it.", "title": "Google PageSpeed API key" }, "saveButtonLabel": "Save", "statsSettings": { "clearAllStatsButton": "Clear all stats", "clearAllStatsDescription": "Clear all stats. This is irreversible.", + "clearAllStatsDialogConfirm": "Yes, clear all stats", "clearAllStatsDialogDescription": "Once removed, the monitoring history and stats cannot be retrieved.", "clearAllStatsDialogTitle": "Do you want to clear all stats?", "description": "Define how long you want to retain historical data. You can also clear all existing data.", + "labelTTL": "The days you want to keep monitoring history.", + "labelTTLOptional": "0 for infinite", "title": "Monitor history" }, "systemResetSettings": { "buttonRemoveAllMonitors": "Remove all monitors", "description": "Remove all monitors from your system.", "dialogConfirm": "Yes, remove all monitors", + "dialogDescription": "Once removed, the monitors cannot be retrieved.", "dialogTitle": "Do you want to remove all monitors?", "title": "System reset" }, "timezoneSettings": { "description": "Select the timezone used to display dates and times throughout the application.", + "label": "Display timezone", "title": "Display timezone" }, "title": "Settings", "uiSettings": { + "chartTypeHeatmap": "Heatmap", + "chartTypeHistogram": "Histogram", "description": "Switch between light and dark mode, or change user interface language.", + "labelChartType": "Chart type", "labelLanguage": "Language", "labelTheme": "Theme mode", - "labelChartType": "Chart type", - "chartTypeHistogram": "Histogram", - "chartTypeHeatmap": "Heatmap", "title": "Appearance" }, "urlSettings": { @@ -1017,100 +1720,215 @@ "selectDisabled": "Disabled", "selectEnabled": "Enabled", "title": "Monitor IP/URL on Status Page" - }, - "globalThresholds": { - "title": "Global Thresholds" } }, + "settingsSave": "Save", + "settingsStatsCleared": "Stats cleared successfully", + "settingsSuccessSaved": "Settings saved successfully", + "settingsTestEmailFailed": "Failed to send test email", + "settingsTestEmailFailedWithReason": "Failed to send test email: {{reason}}", + "settingsTestEmailSuccess": "Test email sent successfully", + "settingsTestEmailUnknownError": "Unknown error", + "showAdminLoginLink": "Show \"Administrator? Login Here\" link on the status page", + "showCharts": "Show charts", + "shown": "Shown", + "showUptimePercentage": "Show uptime percentage", + "starPromptDescription": "See the latest releases and help grow the community on GitHub", + "starPromptTitle": "Star Checkmate", + "startTime": "Start time", + "state": "State", + "status": "Status", + "statusBreadCrumbsDetails": "Details", + "statusBreadCrumbsStatusPages": "Status Pages", + "statusCode": "Status code", + "statusMsg": { + "down": "Your site is down.", + "paused": "Monitoring is paused.", + "pending": "Pending...", + "up": "Your site is up." + }, + "statusPage": { + "contents": "Contents", + "createSuccess": "Status page created successfully", + "deleteFailed": "Failed to delete status page", + "deleteSuccess": "Status page deleted successfully", + "fallback": { + "actionButton": "Let's create your first status page!", + "checks": [ + "Monitor and display the health of your services in real time", + "Track multiple services and share their status", + "Keep users informed about outages and performance" + ], + "title": "A status page is used to:" + }, + "generalSettings": "General settings", + "updateSuccess": "Status page updated successfully" + }, "statusPageCreate": { "buttonSave": "Save" }, + "statusPageCreateAppearanceDescription": "Define the default look and feel of your public status page.", "statusPageCreateAppearanceTitle": "Appearance", - "confirmPassword": "Confirm password", - "monitorHooks": { - "failureAddDemoMonitors": "Failed to add demo monitors", - "successAddDemoMonitors": "Successfully added demo monitors" - }, - "settingsDisplayTimezone": "Display timezone", - "settingsGeneralSettings": "General settings", - "statusPage": { - "deleteSuccess": "Status page deleted successfully", - "deleteFailed": "Failed to delete status page", - "createSuccess": "Status page created successfully", - "updateSuccess": "Status page updated successfully", - "generalSettings": "General settings", - "contents": "Contents" - }, - "checkHooks": { - "failureResolveOne": "Failed to resolve incident." - }, - "diagnosticsPage": { - "diagnosticDescription": "System diagnostics", - "gauges": { - "heapAllocationTitle": "Heap allocation", - "heapAllocationSubtitle": "% of available memory", - "heapUsageTitle": "Heap usage", - "heapUsageSubtitle": "% of available memory", - "heapUtilizationTitle": "Heap utilization", - "heapUtilizationSubtitle": "% of allocated", - "instantCpuUsageTitle": "Instant CPU usage", - "instantCpuUsageSubtitle": "% of 1s used by CPU" + "statusPageCreateBasicInfoDescription": "Define company name and the subdomain that your status page points to.", + "statusPageCreateBasicInfoStatusPageAddress": "Your status page address", + "statusPageCreateSelectTimeZoneDescription": "Select the timezone that your status page will be displayed in.", + "statusPageCreateSettings": "If your status page is ready, you can mark it as published.", + "statusPageCreateSettingsCheckboxLabel": "Published and visible to the public", + "statusPageCreateTabsContent": "Status page servers", + "statusPageCreateTabsContentDescription": "You can add any number of servers that you monitor to your status page. You can also reorder them for the best viewing experience.", + "statusPageCreateTabsContentFeaturesDescription": "Show more details on the status page", + "statusPageStatusServiceStatus": "Service status", + "submit": "Submit", + "SupportedFormats": "Supported formats", + "tcpConnection": "TCP connection", + "teamPanel": { + "addTeamMember": { + "addButton": "Add Member", + "addMemberMenu": "Add Team Member", + "description": "Create a new user and share the credentials with them. This method gives the member immediate access to all monitors.", + "title": "Register new team member" }, - "stats": { - "eventLoopDelayTitle": "Event loop delay", - "uptimeTitle": "Uptime", - "usedHeapSizeTitle": "Used heap size", - "totalHeapSizeTitle": "Total heap size", - "osMemoryLimitTitle": "OS Memory Limit" - } - }, - "time": { - "fifteenSeconds": "15 seconds", - "thirtySeconds": "30 seconds", - "fifteenMinutes": "15 minutes", - "thirtyMinutes": "30 minutes", - "threeMinutes": "3 minutes", - "fiveMinutes": "5 minutes", - "tenMinutes": "10 minutes", - "fourMinutes": "4 minutes", - "oneMinute": "1 minute", - "twoMinutes": "2 minutes" - }, - "general": { - "noOptionsFound": "No {{unit}} found" - }, - "editUserPage": { - "form": { - "email": "Email", - "firstName": "First name", - "lastName": "Last name", - "role": "Roles", - "save": "Save" + "cancel": "Cancel", + "changeTeamPassword": { + "changePasswordMenu": "Reset Password", + "description": "Create a new password for this team member. You will need to share the password with them securely.", + "success": "Password successfully reset. Make sure to provide the credentials to the member in a secure way.", + "title": "Reset team member password" }, + "email": "Email", + "emailToken": "E-mail token", + "filter": { + "all": "All", + "member": "Member" + }, + "getToken": "Get token", + "inviteDescription": "When you add a new team member, they will get access to all monitors.", + "inviteLink": "Invite link", + "inviteNewTeamMember": "Invite new team member", + "inviteTeamMember": "Invite a team member", + "noMembers": "There are no team members with this role", + "register": "Register a team member", + "registerTeamMember": { + "auth": { + "common": { + "inputs": { + "email": { + "errors": { + "empty": "To continue, please enter an email address", + "invalid": "Please recheck validity of entered email address" + } + }, + "firstName": { + "errors": { + "empty": "Please enter a name", + "pattern": "Name must contain only letters, spaces, apostrophes, or hyphens" + } + }, + "lastName": { + "errors": { + "empty": "Please enter a surname", + "pattern": "Surname must contain only letters, spaces, apostrophes, or hyphens" + } + }, + "role": { + "errors": { + "empty": "Role is required" + } + } + } + } + }, + "title": "Register team member" + }, + "registerToast": { + "dbUserExists": "User already exists.", + "success": "User created, share credentials with the member securely.", + "unknownError": "Unknown error occurred." + }, + "role": "Role", + "selectRole": "Select role", "table": { + "created": "Created", + "email": "Email", "headers": { "name": "Status page name", "url": "Public URL" }, - "actionHeader": "Action", - "roleHeader": "Role" + "name": "Name", + "role": "Role" }, - "title": "Edit user", - "toast": { - "successUserUpdate": "User updated successfully", - "validationErrors": "Validation errors" + "teamMembers": "Team members" + }, + "testNotificationsDisabled": "There are no notifications setup for this monitor. You need to add one by clicking 'Configure' button", + "time": { + "fifteenMinutes": "15 minutes", + "fifteenSeconds": "15 seconds", + "fiveMinutes": "5 minutes", + "fourMinutes": "4 minutes", + "oneDay": "1 day", + "oneHour": "1 hour", + "oneMinute": "1 minute", + "oneWeek": "1 week", + "tenMinutes": "10 minutes", + "thirtyMinutes": "30 minutes", + "thirtySeconds": "30 seconds", + "threeMinutes": "3 minutes", + "twentyMinutes": "20 minutes", + "twoMinutes": "2 minutes" + }, + "timeToFirstByte": "Time to first byte", + "timezone": "Timezone", + "timeZoneInfo": "All dates and times are in GMT+0 time zone.", + "title": "Title", + "tlsErrorIgnored": "TLS/SSL errors ignored", + "tlsHandshake": "TLS handshake", + "total": "Total", + "type": "Type", + "update": "Update", + "uptime": "Uptime", + "uptimeAdvancedMatching": { + "jsonPath": "JSON Path" + }, + "uptimeCreate": "The expected value is used to match against response result, and the match determines the status.", + "uptimeCreateJsonPath": "This expression will be evaluated against the reponse JSON data and the result will be used to match against the expected value. See", + "uptimeCreateJsonPathQuery": "for query language documentation.", + "uptimeGeneralInstructions": { + "docker": "Enter the Docker container name or ID. You can use either the container name (e.g., my-app) or the container ID (full 64-char ID or short ID).", + "game": "Enter the IP address or hostname and the port number to ping (e.g., 192.168.1.100 or example.com) and choose game type.", + "http": "Enter the URL or IP to monitor (e.g., https://example.com/ or 192.168.1.100) and add a clear display name that appears on the dashboard.", + "https": "Enter the URL or IP to monitor (e.g., https://example.com/ or 192.168.1.100) and add a clear display name that appears on the dashboard.", + "ping": "Enter the IP address or hostname to ping (e.g., 192.168.1.100 or example.com) and add a clear display name that appears on the dashboard.", + "port": "Enter the URL or IP of the server, the port number and a clear display name that appears on the dashboard." + }, + "uptimeMonitor": { + "fallback": { + "actionButton": "Let's create your first uptime monitor!", + "checks": [ + "Check if websites or servers are online & responsive", + "Alert teams about downtime or performance issues", + "Monitor HTTP endpoints, pings, containers & ports", + "Track historical uptime and reliability trends" + ], + "title": "An uptime monitor is used to:" } }, - "matchMethodOptions": { - "equal": "Equal", - "include": "Include", - "regex": "Regex" + "url": "URL", + "urlMonitor": "URL to monitor", + "used": "Used", + "v1": { + "infrastructure": { + "disk_selection_description": "Select the specific disks you want to monitor.", + "disk_selection_info": "No disk detected for the moment.", + "disk_selection_title": "Disk Selection" + } }, - "chooseGame": "Choose game", - "incidentsPage": { - "resolveIncidentDialogTitle": "Resolve Incident", - "resolveIncidentDialogCommentLabel": "Comment (optional)", - "resolveIncidentDialogCommentPlaceholder": "Add a comment about the resolution...", - "resolveIncidentDialogConfirm": "Resolve" - } + "waitTime": "Wait time", + "webhookSendError": "Error sending webhook notification to {platform}", + "webhookSendSuccess": "Webhook notification sent successfully", + "webhookUnsupportedPlatform": "Unsupported platform: {platform}", + "websiteMonitoring": "Website monitoring", + "websiteMonitoringDescription": "Use HTTP(s) to monitor your website or API endpoint.", + "whenNewIncident": "When there is a new incident,", + "window": "window", + "YourPhoto": "Profile photo" }