diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 88f1ffc7f..4f5eaf63f 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -1,6 +1,9 @@
{
"common": {
"appName": "Checkmate",
+ "monitoringAgentName": "Capture",
+ "see": "See",
+ "forDocumentation": "for query language documentation.",
"breadcrumbs": {
"home": "Home",
"details": "Details"
@@ -45,6 +48,7 @@
"table": {
"headers": {
"actions": "Actions",
+ "active": "Active",
"message": "Message",
"monitor": "Monitor",
"name": "Name",
@@ -65,6 +69,8 @@
}
},
"submit": "Submit",
+ "title": "Title",
+ "settingsDisabled": "Disabled",
"settingsSuccessSaved": "Settings saved successfully",
"settingsFailedToSave": "Failed to save settings",
"settingsStatsCleared": "Stats cleared successfully",
@@ -73,18 +79,146 @@
"settingsFailedToDeleteMonitors": "Failed to delete all monitors",
"starPromptTitle": "Star Checkmate",
"starPromptDescription": "See the latest releases and help grow the community on GitHub",
+ "https": "HTTPS",
+ "http": "HTTP",
+ "monitor": "monitor",
"aboutus": "About Us",
+ "now": "Now",
"delete": "Delete",
"configure": "Configure",
+ "responseTime": "Response time",
+ "responseTimeBreakdown": "Response time breakdown",
+ "dnsLookup": "DNS lookup",
+ "tcpConnection": "TCP connection",
+ "tlsHandshake": "TLS handshake",
+ "waitTime": "Wait time",
+ "timeToFirstByte": "Time to first byte",
+ "download": "Download",
+ "ms": "ms",
+ "bar": "Bar",
+ "area": "Area",
+ "country": "COUNTRY",
+ "city": "CITY",
+ "incidentsTableNoIncidents": "No incidents recorded",
+ "incidentsTablePaginationLabel": "incidents",
+ "incidentsTableMonitorName": "Monitor Name",
+ "incidentsTableStatus": "Status",
+ "incidentsTableDateTime": "Date & Time",
+ "incidentsTableStatusCode": "Status Code",
+ "incidentsTableMessage": "Message",
+ "incidentsOptionsHeader": "Incidents for:",
+ "incidentsOptionsHeaderFilterBy": "Filter by:",
+ "incidentsOptionsHeaderFilterAll": "All",
+ "incidentsOptionsHeaderFilterDown": "Down",
+ "incidentsOptionsHeaderFilterCannotResolve": "Cannot Resolve",
+ "incidentsOptionsHeaderShow": "Show:",
+ "incidentsOptionsHeaderLastHour": "Last hour",
+ "incidentsOptionsHeaderLastDay": "Last day",
+ "incidentsOptionsHeaderLastWeek": "Last week",
+ "incidentsOptionsPlaceholderAllServers": "All servers",
+ "infrastructureCreateYour": "Create your",
+ "infrastructureCreateGeneralSettingsDescription": "Here you can select the URL of the host, together with the friendly name and authorization secret to connect to the server agent.",
+ "infrastructureServerRequirement": "The server you are monitoring must be running the",
+ "infrastructureCustomizeAlerts": "Customize alerts",
+ "infrastructureAlertNotificationDescription": "Send a notification to user(s) when thresholds exceed a specified percentage.",
+ "infrastructureCreateMonitor": "Create Infrastructure Monitor",
+ "infrastructureProtocol": "Protocol",
+ "infrastructureServerUrlLabel": "Server URL",
+ "infrastructureDisplayNameLabel": "Display name",
+ "infrastructureAuthorizationSecretLabel": "Authorization secret",
+ "gb": "GB",
+ "mb": "MB",
+ "mem": "Mem",
+ "memoryUsage": "Memory usage",
+ "cpu": "CPU",
+ "cpuUsage": "CPU usage",
+ "cpuTemperature": "CPU Temperature",
+ "diskUsage": "Disk Usage",
+ "response": "RESPONSE",
+ "monitorStatusUp": "Monitor {name} ({url}) is now UP and responding",
+ "monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding",
+ "webhookSendSuccess": "Webhook notification sent successfully",
+ "webhookSendError": "Error sending webhook notification to {platform}",
+ "webhookUnsupportedPlatform": "Unsupported platform: {platform}",
+ "distributedUptimeCreateSelectURL": "Here you can select the URL of the host, together with the type of monitor.",
+ "distributedUptimeCreateChecks": "Checks to perform",
+ "distributedUptimeCreateChecksDescription": "You can always add or remove checks after adding your site.",
+ "distributedUptimeCreateAdvancedSettings": "Advanced settings",
+ "distributedUptimeDetailsNoMonitorHistory": "There is no check history for this monitor yet.",
"notifications": {
+ "enableNotifications": "Enable {{platform}} notifications",
+ "testNotification": "Test notification",
+ "addOrEditNotifications": "Add or edit notifications",
+ "slack": {
+ "label": "Slack",
+ "description": "To enable Slack notifications, create a Slack app and enable incoming webhooks. After that, simply provide the webhook URL here.",
+ "webhookLabel": "Webhook URL",
+ "webhookPlaceholder": "https://hooks.slack.com/services/...",
+ "webhookRequired": "Slack webhook URL is required"
+ },
+ "discord": {
+ "label": "Discord",
+ "description": "To send data to a Discord channel from Checkmate via Discord notifications using webhooks, you can use Discord's incoming Webhooks feature.",
+ "webhookLabel": "Discord Webhook URL",
+ "webhookPlaceholder": "https://discord.com/api/webhooks/...",
+ "webhookRequired": "Discord webhook URL is required"
+ },
+ "telegram": {
+ "label": "Telegram",
+ "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.",
+ "tokenLabel": "Your bot token",
+ "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
+ "chatIdLabel": "Your Chat ID",
+ "chatIdPlaceholder": "-1001234567890",
+ "fieldsRequired": "Telegram token and chat ID are required"
+ },
+ "webhook": {
+ "label": "Webhooks",
+ "description": "You can set up a custom webhook to receive notifications when incidents occur.",
+ "urlLabel": "Webhook URL",
+ "urlPlaceholder": "https://your-server.com/webhook",
+ "urlRequired": "Webhook URL is required"
+ },
+ "testNotificationDevelop": "Test notification 2",
+ "integrationButton": "Notification Integration",
+ "testSuccess": "Test notification sent successfully!",
+ "testFailed": "Failed to send test notification",
+ "unsupportedType": "Unsupported notification type",
+ "networkError": "Network error occurred",
+ "fallback": {
+ "title": "A notification channel is used to:",
+ "checks": [
+ "Alert teams about downtime or performance issues",
+ "Let engineers know when incidents happen",
+ "Keep administrators informed of system changes"
+ ],
+ "actionButton": "Let's create your first notification channel!"
+ },
+ "createButton": "Create notification channel",
+ "createTitle": "Notification channel",
+ "create": {
+ "success": "Notification created successfully",
+ "failed": "Failed to create notification"
+ },
"fetch": {
+ "success": "Notifications fetched successfully",
"failed": "Failed to fetch notifications"
},
+ "delete": {
+ "success": "Notification deleted successfully",
+ "failed": "Failed to delete notification"
+ },
+ "edit": {
+ "success": "Notification updated successfully",
+ "failed": "Failed to update notification"
+ },
"test": {
- "success": "Test notification sent successfully"
+ "success": "Test notification sent successfully",
+ "failed": "Failed to send test notification"
}
},
"add": "Add",
+ "monitors": "monitors",
"components": {
"headerTimeRange": {
"labels": {
@@ -132,15 +266,34 @@
"form": {
"type": {
"description": "Select the type of check to perform",
+ "optionType": "Type",
"title": "Type",
"optionHttp": "HTTP(S)",
+ "optionHttpDescription": "Use HTTP(S) to monitor your website or API endpoint.",
"optionPing": "Ping",
+ "optionPingDescription": "Use ICMP Ping to monitor if a server is online.",
"optionDocker": "Docker",
+ "optionDockerDescription": "Use Docker to monitor if a container is running.",
"optionPort": "Port",
- "optionGame": "Game"
+ "optionPortDescription": "Monitor if a specific port on a server is open.",
+ "optionGame": "Game",
+ "optionGameDescription": "Monitor if a specific game server is online.",
+ "optionPagespeed": "PageSpeed",
+ "optionPagespeedDescription": "Analyze page performance using Google PageSpeed Insights.",
+ "optionHardware": "Hardware",
+ "optionHardwareDescription": "Monitor server hardware metrics like CPU, memory, and disk."
},
"general": {
"title": "General settings",
+ "description": {
+ "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.",
+ "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.",
+ "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).",
+ "port": "Enter the URL or IP of the server, the port number and a clear display name that appears on the dashboard.",
+ "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.",
+ "pagespeed": "Enter the URL of the page to analyze with Google PageSpeed and add a clear display name that appears on the dashboard.",
+ "hardware": "Enter the URL of your infrastructure agent, the authorization secret, and a clear display name that appears on the dashboard."
+ },
"option": {
"url": {
"label": "URL",
@@ -159,13 +312,19 @@
"placeholder": "my-app or abcd1234"
},
"secret": {
- "label": "Authorization secret"
+ "label": "Authorization secret",
+ "placeholder": "Enter your secret key"
}
}
},
"frequency": {
"title": "Check frequency",
- "description": "How often do you want to check the status of this monitor?"
+ "description": "How often do you want to check the status of this monitor?",
+ "option": {
+ "frequency": {
+ "label": "Check frequency"
+ }
+ }
},
"incidents": {
"title": "Incidents",
@@ -173,6 +332,9 @@
"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?"
}
}
},
@@ -193,7 +355,18 @@
"title": "Advanced settings",
"description": "Optional settings for advanced use cases",
"option": {
+ "advancedMatching": {
+ "label": "Use advanced matching"
+ },
+ "matchMethod": {
+ "label": "Match method"
+ },
+ "expectedValue": {
+ "label": "Expected value",
+ "description": "The expected value is used to match against response result, and the match determines the status."
+ },
"jsonPath": {
+ "label": "JSONPath expression",
"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."
}
}
@@ -206,6 +379,16 @@
"responseTime": "Response time"
}
},
+ "fallback": {
+ "title": "An uptime monitor is used to:",
+ "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"
+ ]
+ },
"filters": {
"search": {
"placeholder": "Search monitors..."
@@ -351,14 +534,17 @@
"title": "Channel type"
},
"homeServer": {
+ "description": "Select the home server for this notification channel.",
"optionHomeServer": "Home server",
- "placeholder": "example.com"
+ "placeholder": "example.com",
+ "title": "Home server"
},
"roomId": {
"optionRoomId": "Room ID",
"placeholder": "!abcdefg:matrix.org"
},
"accessToken": {
+ "optionAccessToken": "Access token",
"placeholder": "syt_YWxleF9ob2xsaWRheQ_VmtScmV0U2VjcmV0S2V5_abc123"
},
"address": {
@@ -488,8 +674,20 @@
},
"used": "Used",
"total": "Total",
+ "cores": "Cores",
+ "frequency": "Frequency",
+ "device": "Device",
+ "mountedOn": "Mounted on",
"status": "Status",
+ "cpuPhysical": "CPU (Physical)",
+ "cpuLogical": "CPU (Logical)",
+ "cpuFrequency": "CPU Frequency",
+ "avgCpuTemperature": "Average CPU Temperature",
+ "memory": "Memory",
+ "disk": "Disk",
"uptime": "Uptime",
+ "os": "OS",
+ "host": "Host",
"actions": "Actions",
"integrations": "Integrations",
"integrationsPrism": "Connect Prism to your favorite service.",
@@ -500,14 +698,28 @@
"integrationsZapier": "Zapier",
"integrationsZapierInfo": "Send all incidents to Zapier, and then see them everywhere",
"commonSave": "Save",
+ "createYour": "Create your",
+ "createMonitor": "Create monitor",
"pause": "Pause",
"resume": "Resume",
+ "editing": "Editing...",
+ "url": "URL",
"access": "Access",
"timezone": "Timezone",
"features": "Features",
"administrator": "Administrator?",
"loginHere": "Login here",
+ "displayName": "Display name",
+ "urlMonitor": "URL to monitor",
"portToMonitor": "Port to monitor",
+ "websiteMonitoring": "Website monitoring",
+ "websiteMonitoringDescription": "Use HTTP(s) to monitor your website or API endpoint.",
+ "pingMonitoring": "Ping monitoring",
+ "pingMonitoringDescription": "Check whether your server is available or not.",
+ "dockerContainerMonitoring": "Docker container monitoring",
+ "dockerContainerMonitoringDescription": "Check whether your Docker container is running or not.",
+ "portMonitoring": "Port monitoring",
+ "portMonitoringDescription": "Check whether your port is open or not.",
"createMaintenanceWindow": "Create maintenance window",
"createMaintenance": "Create maintenance",
"editMaintenance": "Edit maintenance",
@@ -521,6 +733,11 @@
"window": "window",
"cancel": "Cancel",
"close": "Close",
+ "message": "Message",
+ "low": "low",
+ "high": "high",
+ "statusCode": "Status code",
+ "date&Time": "Date & Time",
"type": "Type",
"repeat": "Repeat",
"edit": "Edit",
@@ -532,7 +749,24 @@
"monitorsToApply": "Monitors to apply maintenance window to",
"nextWindow": "Next window",
"notFoundButton": "Go to the main dashboard",
+ "pageSpeedConfigureSettingsDescription": "Here you can select the URL of the host, together with the type of monitor.",
+ "monitorDisplayName": "Monitor display name",
+ "whenNewIncident": "When there is a new incident,",
+ "notifySMS": "Notify via SMS (coming soon)",
+ "notifyEmails": "Also notify via email to multiple addresses (coming soon)",
+ "seperateEmails": "You can separate multiple emails with a comma",
+ "checkFrequency": "Check frequency",
+ "matchMethod": "Match Method",
+ "expectedValue": "Expected value",
+ "deleteDialogTitle": "Do you really want to delete this monitor?",
+ "deleteDialogDescription": "Once deleted, this monitor cannot be retrieved.",
+ "pageSpeedMonitor": "PageSpeed monitor",
+ "shown": "Shown",
+ "ago": "ago",
"companyName": "Company name",
+ "pageSpeedDetailsPerformanceReport": "Values are estimated and may vary.",
+ "pageSpeedDetailsPerformanceReportCalculator": "See calculator",
+ "checkingEvery": "Checking every",
"statusPageCreateSettings": "If your status page is ready, you can mark it as published.",
"basicInformation": "Basic Information",
"statusPageCreateBasicInfoDescription": "Define company name and the subdomain that your status page points to.",
@@ -550,7 +784,16 @@
"deleteStatusPage": "Do you want to delete this status page?",
"deleteStatusPageConfirm": "Yes, delete status page",
"deleteStatusPageDescription": "Once deleted, your status page cannot be retrieved.",
+ "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.",
"maintenanceTableActionMenuDialogTitle": "Do you really want to remove this maintenance window?",
+ "infrastructureEditYour": "Edit your",
+ "infrastructureEditMonitor": "Save Infrastructure Monitor",
+ "infrastructureMonitorCreated": "Infrastructure monitor created successfully!",
+ "infrastructureMonitorUpdated": "Infrastructure monitor updated successfully!",
+ "errorInvalidTypeId": "Invalid notification type provided",
+ "errorInvalidFieldId": "Invalid field ID provided",
"inviteNoTokenFound": "No invite token found",
"pageSpeedWarning": "Warning: You haven't added a Google PageSpeed API key yet. Without it, the PageSpeed monitor won't function.",
"pageSpeedLearnMoreLink": "Click here",
@@ -576,7 +819,9 @@
"selectFileTips": "Select CSV file to upload",
"selectFileDescription": "You can download our template or sample",
"selectFile": "Select File",
+ "parsingFailed": "Parsing failed",
"uploadSuccess": "Monitors created successfully!",
+ "validationFailed": "Validation failed",
"noFileSelected": "No file selected",
"fallbackPage": "Import a file to upload a list of servers in bulk",
"invalidFileType": "Invalid file type",
@@ -585,7 +830,11 @@
"DeleteAccountTitle": "Remove account",
"DeleteAccountButton": "Remove account",
"publicLink": "Public link",
+ "maskedPageSpeedKeyPlaceholder": "*************************************",
"reset": "Reset",
+ "ignoreTLSError": "Ignore TLS/SSL error",
+ "tlsErrorIgnored": "TLS/SSL errors ignored",
+ "ignoreTLSErrorDescription": "Ignore TLS/SSL errors and continue checking the website's availability",
"createNew": "Create new",
"greeting": {
"prepend": "Hey there",
@@ -632,7 +881,41 @@
},
"register": "Register a team member",
"registerToast": {
- "success": "User created, share credentials with the member securely."
+ "success": "User created, share credentials with the member securely.",
+ "dbUserExists": "User already exists.",
+ "unknownError": "Unknown error occurred."
+ },
+ "registerTeamMember": {
+ "title": "Register team member",
+ "auth": {
+ "common": {
+ "inputs": {
+ "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"
+ }
+ },
+ "email": {
+ "errors": {
+ "empty": "To continue, please enter an email address",
+ "invalid": "Please recheck validity of entered email address"
+ }
+ },
+ "role": {
+ "errors": {
+ "empty": "Role is required"
+ }
+ }
+ }
+ }
+ }
},
"role": "Role",
"changeTeamPassword": {
@@ -642,6 +925,11 @@
"success": "Password successfully reset. Make sure to provide the credentials to the member in a secure way."
}
},
+ "monitorState": {
+ "paused": "Paused",
+ "resumed": "Resumed",
+ "active": "Active"
+ },
"menu": {
"uptime": "Uptime",
"pagespeed": "Pagespeed",
@@ -649,6 +937,7 @@
"incidents": "Incidents",
"statusPages": "Status pages",
"maintenance": "Maintenance",
+ "integrations": "Integrations",
"settings": "Settings",
"support": "Support",
"discussions": "Discussions",
@@ -662,29 +951,59 @@
"logs": "Logs",
"checks": "Checks"
},
+ "settingsEmailUser": "Email user - Username for authentication, overrides email address if specified",
+ "state": "State",
"statusBreadCrumbsStatusPages": "Status Pages",
"statusBreadCrumbsDetails": "Details",
"commonSaving": "Saving...",
"navControls": "Controls",
+ "incidentsPageTitle": "Incidents",
+ "checksPageTitle": "Checks",
"passwordPanel": {
+ "passwordChangedSuccess": "Your password was changed successfully.",
+ "passwordInputIncorrect": "Your password input was incorrect.",
"currentPassword": "Current password",
+ "enterCurrentPassword": "Enter your current password",
"newPassword": "New password",
"enterNewPassword": "Enter your new password",
- "confirmNewPassword": "Confirm new password"
+ "confirmNewPassword": "Confirm new password",
+ "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..."
},
+ "emailSent": "Email sent successfully",
"failedToSendEmail": "Failed to send email",
"settingsTestEmailSuccess": "Test email sent successfully",
"settingsTestEmailFailed": "Failed to send test email",
+ "settingsTestEmailFailedWithReason": "Failed to send test email: {{reason}}",
"settingsTestEmailUnknownError": "Unknown error",
+ "statusMsg": {
+ "paused": "Monitoring is paused.",
+ "up": "Your site is up.",
+ "down": "Your site is down.",
+ "pending": "Pending..."
+ },
+ "uptimeGeneralInstructions": {
+ "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.",
+ "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.",
+ "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).",
+ "port": "Enter the URL or IP of the server, the port number and a clear display name that appears on the dashboard.",
+ "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.",
+ "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."
+ },
"auth": {
"common": {
"navigation": {
- "continue": "Continue"
+ "continue": "Continue",
+ "back": "Back"
},
"inputs": {
"email": {
"label": "Email",
- "placeholder": "jordan.ellis@domain.com"
+ "placeholder": "jordan.ellis@domain.com",
+ "errors": {
+ "empty": "To continue, please enter your email address",
+ "invalid": "Please recheck validity of entered email address"
+ }
},
"password": {
"label": "Password",
@@ -713,27 +1032,66 @@
"beginning": "Passwords",
"highlighted": "must match"
}
+ },
+ "errors": {
+ "empty": "Please enter your password",
+ "length": "Password must be at least 8 characters long",
+ "uppercase": "Password must contain at least 1 uppercase letter",
+ "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 (!?@#$%^&*()-_=+[]{}|;:'\",./\\~`)",
+ "incorrect": "The password you provided does not match our records"
}
},
"passwordConfirm": {
"label": "Confirm password",
- "placeholder": "Re-enter password to confirm"
+ "placeholder": "Re-enter password to confirm",
+ "errors": {
+ "empty": "Please enter your password again for confirmation (helps with typos)",
+ "different": "Entered passwords don't match, so one of them is probably mistyped"
+ }
},
"firstName": {
"label": "Name",
- "placeholder": "Jordan"
+ "placeholder": "Jordan",
+ "errors": {
+ "empty": "Please enter your name",
+ "length": "Name must be less than 50 characters",
+ "pattern": "Name must contain only letters, spaces, apostrophes, or hyphens"
+ }
},
"lastName": {
"label": "Surname",
- "placeholder": "Ellis"
+ "placeholder": "Ellis",
+ "errors": {
+ "empty": "Please enter your surname",
+ "length": "Surname must be less than 50 characters",
+ "pattern": "Surname must contain only letters, spaces, apostrophes, or hyphens"
+ }
}
},
"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"
+ }
+ }
}
},
"login": {
"heading": "Log in to continue",
+ "subheadings": {
+ "stepOne": "Enter your email",
+ "stepTwo": "Enter your password"
+ },
"links": {
"forgotPassword": "Forgot password?",
"register": "Do not have an account?",
@@ -753,12 +1111,26 @@
},
"registration": {
"heading": {
+ "superAdmin": "Create super admin",
"user": "Sign Up"
},
+ "subheadings": {
+ "stepOne": "Enter your personal details",
+ "stepTwo": "Enter your email",
+ "stepThree": "Create your password"
+ },
"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"
+ },
+ "termsAndPolicies": "By creating an account, you agree to our Terms of Service and Privacy Policy.",
+ "links": {
+ "login": "Already have an account? Log In"
+ },
"toasts": {
"success": "Welcome! Your account was created successfully."
},
@@ -776,6 +1148,12 @@
"openEmail": "Open email app",
"resetPassword": "Reset password"
},
+ "imageAlts": {
+ "passwordKey": "Password key icon",
+ "email": "Email icon",
+ "lock": "Lock icon",
+ "passwordConfirm": "Password confirm icon"
+ },
"links": {
"login": "Go back to Log In",
"resend": "Didn't receive the email? Click to resend"
@@ -803,15 +1181,80 @@
}
}
},
+ "createNotifications": {
+ "title": "Create notification channel",
+ "nameSettings": {
+ "title": "Name",
+ "description": "A descriptive name for your integration.",
+ "nameLabel": "Name",
+ "namePlaceholder": "e.g. Slack notifications"
+ },
+ "typeSettings": {
+ "title": "Type",
+ "description": "Select the type of notification channel you want to create.",
+ "typeLabel": "Type"
+ },
+ "emailSettings": {
+ "title": "Email",
+ "description": "Destination email addresses.",
+ "emailLabel": "Email address",
+ "emailPlaceholder": "e.g. john@example.com"
+ },
+ "slackSettings": {
+ "title": "Slack",
+ "description": "Configure your Slack webhook here",
+ "webhookLabel": "Slack webhook URL",
+ "webhookPlaceholder": "https://hooks.slack.com/services/..."
+ },
+ "pagerdutySettings": {
+ "title": "PagerDuty",
+ "description": "Configure your PagerDuty integration here",
+ "integrationKeyLabel": "Integration key",
+ "integrationKeyPlaceholder": "1234567890"
+ },
+ "discordSettings": {
+ "title": "Discord",
+ "description": "Configure your Discord webhook here",
+ "webhookLabel": "Discord Webhook URL",
+ "webhookPlaceholder": "https://your-server.com/webhook"
+ },
+ "webhookSettings": {
+ "title": "Webhook",
+ "description": "Configure your webhook here",
+ "webhookLabel": "Webhook URL",
+ "webhookPlaceholder": "https://your-server.com/webhook"
+ },
+ "testNotification": "Test notification",
+ "dialogDeleteTitle": "Are you sure you want to delete this notification?",
+ "dialogDeleteConfirm": "Delete"
+ },
+ "notificationConfig": {
+ "title": "Notifications",
+ "description": "Select the notifications channels you want to use",
+ "placeholder": "Search notifications..."
+ },
+ "monitorStatus": {
+ "checkingEvery": "Checking every {{interval}}",
+ "withCaptureAgent": "with Capture agent {{version}}",
+ "up": "up",
+ "down": "down",
+ "paused": "paused"
+ },
+ "advancedMatching": "Advanced matching",
+ "sendTestNotifications": "Send test notifications",
"selectAll": "Select all",
"showAdminLoginLink": "Show \"Administrator? Login Here\" link on the status page",
"logsPage": {
"title": "Logs",
+ "description": "System logs - last 1000 lines",
"tabs": {
"queue": "Job queue",
"logs": "Server logs",
"diagnostics": "Diagnostics"
},
+ "toast": {
+ "fetchLogsSuccess": "Logs fetched successfully"
+ },
"logLevelSelect": {
"title": "Log level",
"values": {
@@ -837,6 +1280,7 @@
"noLogs": "No logs found"
},
"queuePage": {
+ "title": "Queue",
"refreshButton": "Refresh",
"flushButton": "Flush queue",
"jobTable": {
@@ -867,9 +1311,23 @@
"failReasonHeader": "Fail reason"
}
},
+ "export": {
+ "title": "Export Monitors",
+ "success": "Monitors exported successfully!",
+ "failed": "Failed to export monitors"
+ },
+ "monitorActions": {
+ "title": "Export/Import",
+ "import": "Import Monitors",
+ "export": "Export Monitors",
+ "deleteSuccess": "Monitor deleted successfully",
+ "deleteFailed": "Failed to delete monitor",
+ "details": "Details"
+ },
"settingsPage": {
"aboutSettings": {
"labelDevelopedBy": "Developed by Bluewave Labs",
+ "labelVersion": "Version",
"title": "About"
},
"demoMonitorsSettings": {
@@ -884,9 +1342,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",
@@ -904,20 +1367,25 @@
"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",
@@ -938,33 +1406,54 @@
"title": "Monitor IP/URL on Status Page"
},
"globalThresholds": {
- "title": "Global Thresholds"
+ "title": "Global Thresholds",
+ "description": "Configure global CPU, Memory, Disk, and Temperature thresholds. If a value is provided, it will automatically be enabled for monitoring."
}
},
"statusPageCreate": {
"buttonSave": "Save"
},
+ "incidentsOptionsHeaderFilterResolved": "Resolved",
+ "settingsSave": "Save",
"statusPageCreateAppearanceTitle": "Appearance",
"confirmPassword": "Confirm password",
"monitorHooks": {
"failureAddDemoMonitors": "Failed to add demo monitors",
"successAddDemoMonitors": "Successfully added demo monitors"
},
+ "settingsAppearance": "Appearance",
"settingsDisplayTimezone": "Display timezone",
"settingsGeneralSettings": "General settings",
+ "incidentsOptionsHeaderTotalIncidents": "Total Incidents",
"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"
+ "contents": "Contents",
+ "fallback": {
+ "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:",
+ "actionButton": "Let's create your first status page!"
+ }
},
+ "testNotificationsDisabled": "There are no notifications setup for this monitor. You need to add one by clicking 'Configure' button",
+ "incidentsTableResolvedAt": "Resolved at",
+ "incidentsTableActionResolve": "Resolve",
"checkHooks": {
- "failureResolveOne": "Failed to resolve incident."
+ "failureResolveOne": "Failed to resolve incident.",
+ "failureResolveAll": "Failed to resolve all incidents.",
+ "failureResolveMonitor": "Failed to resolve monitor incidents."
},
+ "checkFormError": "Please check the form for errors.",
"diagnosticsPage": {
"diagnosticDescription": "System diagnostics",
+ "statsDescription": "System statistics",
"gauges": {
"heapAllocationTitle": "Heap allocation",
"heapAllocationSubtitle": "% of available memory",
@@ -983,6 +1472,7 @@
"osMemoryLimitTitle": "OS Memory Limit"
}
},
+ "pageSpeedLighthouseAPI": "Use the Lighthouse PageSpeed API to monitor your website",
"time": {
"fifteenSeconds": "15 seconds",
"thirtySeconds": "30 seconds",
@@ -991,6 +1481,10 @@
"threeMinutes": "3 minutes",
"fiveMinutes": "5 minutes",
"tenMinutes": "10 minutes",
+ "twentyMinutes": "20 minutes",
+ "oneHour": "1 hour",
+ "oneDay": "1 day",
+ "oneWeek": "1 week",
"fourMinutes": "4 minutes",
"oneMinute": "1 minute",
"twoMinutes": "2 minutes"
@@ -998,6 +1492,51 @@
"general": {
"noOptionsFound": "No {{unit}} found"
},
+ "infrastructureMonitor": {
+ "fallback": {
+ "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!"
+ }
+ },
+ "maintenanceWindow": {
+ "fallback": {
+ "checks": [
+ "Mark your maintenance periods",
+ "Eliminate any misunderstandings",
+ "Stop sending alerts in maintenance windows"
+ ],
+ "title": "A maintenance window is used to:",
+ "actionButton": "Let's create your first maintenance window!"
+ }
+ },
+ "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!"
+ }
+ },
+ "uptimeMonitor": {
+ "fallback": {
+ "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:",
+ "actionButton": "Let's create your first uptime monitor!"
+ }
+ },
"editUserPage": {
"form": {
"email": "Email",
@@ -1020,13 +1559,138 @@
"validationErrors": "Validation errors"
}
},
+ "incidentsPageActionResolveMonitor": "Resolve monitor incidents",
+ "checksPageActionResolveMonitor": "Resolve monitor checks",
+ "incidentsPageActionResolveAll": "Resolve all incidents",
+ "checksPageActionResolveAllMonitor": "Resolve all checks",
"matchMethodOptions": {
"equal": "Equal",
+ "equalPlaceholder": "success",
"include": "Include",
- "regex": "Regex"
+ "includePlaceholder": "ok",
+ "regex": "Regex",
+ "regexPlaceholder": "^(success|ok)$",
+ "text": "Match Method"
},
+ "monitorType": {
+ "docker": {
+ "label": "Container Name/ID",
+ "namePlaceholder": "My Container",
+ "placeholder": "my-app or abcd1234"
+ },
+ "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"
+ },
+ "game": {
+ "label": "URL to monitor",
+ "namePlaceholder": "localhost:5173",
+ "placeholder": "localhost"
+ }
+ },
+ "uptimeAdvancedMatching": {
+ "jsonPath": "JSON Path"
+ },
+ "bytesPerSecond": "Bytes per second",
+ "bytesReceived": "Bytes Received",
+ "bytesSent": "Bytes Sent",
"chooseGame": "Choose game",
+ "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.",
+ "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",
+ "incidentConfigDescriptionV2": "Number of consecutive checks needed to change monitor status. Maximum 25",
+ "incidentConfigStatusCheckNumber": "How many checks before status change?",
+ "intervalTitle": "Check interval",
+ "intervalDescription": "How often the monitor should be checked."
+ },
+ "dataRate": "Data Rate",
+ "dataReceived": "Data Received",
+ "dataSent": "Data Sent",
+ "details": "Details",
+ "drops": "Drops",
+ "errors": "Errors",
+ "errorsIn": "Errors In",
+ "errorsOut": "Errors Out",
+ "gameServerMonitoring": "Game Server Monitoring",
+ "gameServerMonitoringDescription": "Check whether your game server is running or not",
+ "network": "Network",
+ "networkDrops": "Network Drops",
+ "networkErrors": "Network Errors",
+ "networkInterface": "Network Interface",
+ "noNetworkStatsAvailable": "No network stats available.",
+ "packetsPerSecond": "Packets per second",
+ "packetsReceived": "Packets Received",
+ "packetsReceivedRate": "Packets Received Rate",
+ "packetsSent": "Packets Sent",
+ "rate": "Rate",
+ "selectInterface": "Select Interface",
+ "v1": {
+ "infrastructure": {
+ "disk_selection_title": "Disk Selection",
+ "disk_selection_info": "No disk detected for the moment.",
+ "disk_selection_description": "Select the specific disks you want to monitor."
+ }
+ },
"incidentsPage": {
+ "title": "Incidents",
+ "description": "Manage incidents for your monitors. You can resolve incidents here.",
+ "resolved": "Resolved",
+ "active": "Active",
+ "startTime": "Start Time",
+ "endTime": "End Time",
+ "resolutionType": "Resolution Type",
+ "unresolved": "Unresolved",
+ "all": "All",
+ "filterByMonitor": "Filter by monitor",
+ "filterByStatus": "Filter by status",
+ "filterByType": "Filter by type",
+ "filterByDate": "Filter by date",
+ "filterByPriority": "Filter by priority",
+ "incidentsActivePanelError": "Error loading active incidents",
+ "allSystemsAreOperational": "All Systems Are Operational",
+ "incidentsActivePanelTitle": "Total Active Incidents",
+ "incidentsLatestPanelError": "Error loading latest incidents",
+ "incidentsLatestPanelTitle": "Latest Incidents",
+ "incidentsLatestPanelEmpty": "No recent incidents",
+ "incidentItemMonitor": "Monitor",
+ "incidentItemStatus": "Status",
+ "unknownMonitor": "Unknown Monitor",
+ "incidentsStatisticsPanelError": "Error loading statistics",
+ "incidentsStatisticsPanelTitle": "General Statistics",
+ "totalIncidents": "Total Incidents",
+ "mostAffectedMonitor": "Most Affected Monitor",
+ "avgResolutionTime": "Avg. Resolution Time",
+ "resolutions": "Resolutions",
+ "automatic": "Automatic",
+ "manual": "Manual",
+ "incidentResolvedSuccessfully": "Incident resolved successfully",
+ "incidentResolvedFailed": "Error resolving incident",
+ "errorFetchingIncidents": "Error fetching incidents",
+ "errorFetchingIncident": "Error fetching incident",
+ "noIncidentIdProvided": "No incident ID provided",
+ "errorFetchingIncidentSummary": "Error fetching incident summary",
+ "incidentsOptionsHeaderFilterManual": "Manual",
+ "incidentsOptionsHeaderFilterAutomatic": "Automatic",
+ "incidentsOptionsHeaderFilterAll": "All",
+ "incidentsOptionsHeaderFilterActive": "Active",
+ "incidentsOptionsHeaderFilterResolved": "Resolved",
+ "incidentsTableResolved": "Closed",
+ "incidentsTableActionResolveManually": "Resolve Manually",
+ "incidentsTableActionDetails": "Details",
+ "incidentsTableActionGoToMonitor": "Go to monitor",
"resolveIncidentDialogTitle": "Resolve Incident",
"resolveIncidentDialogCommentLabel": "Comment (optional)",
"resolveIncidentDialogCommentPlaceholder": "Add a comment about the resolution...",