From fe5f24ef4446981e907a655c1262d56f95fcda66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 15:11:13 +0200
Subject: [PATCH 01/11] l10n(cs): Clean up localization file
---
client/src/locales/cs.json | 88 +++++++++++++++++++-------------------
1 file changed, 44 insertions(+), 44 deletions(-)
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index ac728160e..765627912 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -1,49 +1,49 @@
{
"dontHaveAccount": "",
- "email": "E-mail",
- "forgotPassword": "Zapomenuté heslo",
+ "email": "",
+ "forgotPassword": "",
"password": "",
- "signUp": "Registace",
- "submit": "Odeslat",
+ "signUp": "",
+ "submit": "",
"title": "",
- "continue": "Pokračovat",
- "enterEmail": "Zadejte svůj e-mail",
- "authLoginTitle": "Přihlášení",
- "authLoginEnterPassword": "Zadejte své heslo",
- "commonPassword": "Heslo",
- "commonBack": "Zpět",
- "authForgotPasswordTitle": "Zapomněli jste heslo?",
- "authForgotPasswordResetPassword": "Resetovat heslo",
+ "continue": "",
+ "enterEmail": "",
+ "authLoginTitle": "",
+ "authLoginEnterPassword": "",
+ "commonPassword": "",
+ "commonBack": "",
+ "authForgotPasswordTitle": "",
+ "authForgotPasswordResetPassword": "",
"createPassword": "",
"createAPassword": "",
- "authRegisterAlreadyHaveAccount": "Máte již účet?",
- "commonAppName": "Checkmate",
- "authLoginEnterEmail": "Zadejte svůj e-mail",
- "authRegisterTitle": "Vytvoření účtu",
+ "authRegisterAlreadyHaveAccount": "",
+ "commonAppName": "",
+ "authLoginEnterEmail": "",
+ "authRegisterTitle": "",
"authRegisterStepOneTitle": "",
- "authRegisterStepOneDescription": "Začněte tím, že zadáte své údaje",
+ "authRegisterStepOneDescription": "",
"authRegisterStepTwoTitle": "",
- "authRegisterStepTwoDescription": "Řekněte nám o sobě víc",
- "authRegisterStepThreeTitle": "Téměř hotovo!",
- "authRegisterStepThreeDescription": "Zkontrolujte své údaje",
- "authForgotPasswordDescription": "Není se čeho obávat, zašleme vám instrukce k obnově.",
+ "authRegisterStepTwoDescription": "",
+ "authRegisterStepThreeTitle": "",
+ "authRegisterStepThreeDescription": "",
+ "authForgotPasswordDescription": "",
"authForgotPasswordSendInstructions": "",
"authForgotPasswordBackTo": "",
"authCheckEmailTitle": "",
- "authCheckEmailDescription": "Odkaz pro obnovu hesla zašleme na",
- "authCheckEmailResendEmail": "Znovu odeslat e-mail",
+ "authCheckEmailDescription": "",
+ "authCheckEmailResendEmail": "",
"authCheckEmailBackTo": "",
"goBackTo": "",
- "authCheckEmailDidntReceiveEmail": "Neobdrželi jste e-mail?",
- "authCheckEmailClickToResend": "Klepněte pro opětovné odeslání",
- "authSetNewPasswordTitle": "Nastavení nového hesla",
- "authSetNewPasswordDescription": "Nové heslo se musí lišit od těch, které jste použili dříve.",
- "authSetNewPasswordNewPassword": "Nové heslo",
+ "authCheckEmailDidntReceiveEmail": "",
+ "authCheckEmailClickToResend": "",
+ "authSetNewPasswordTitle": "",
+ "authSetNewPasswordDescription": "",
+ "authSetNewPasswordNewPassword": "",
"authSetNewPasswordConfirmPassword": "",
"confirmPassword": "",
- "authSetNewPasswordResetPassword": "Resetovat heslo",
+ "authSetNewPasswordResetPassword": "",
"authSetNewPasswordBackTo": "",
- "authPasswordMustBeAtLeast": "Musí být alespoň",
+ "authPasswordMustBeAtLeast": "",
"authPasswordCharactersLong": "",
"authPasswordMustContainAtLeast": "",
"authPasswordSpecialCharacter": "",
@@ -53,23 +53,23 @@
"authPasswordConfirmAndPassword": "",
"authPasswordMustMatch": "",
"authRegisterCreateAccount": "",
- "authRegisterCreateSuperAdminAccount": "Začněte tím, že si vytvoříte účet superadministrátora",
- "authRegisterSignUpWithEmail": "Registrovat přes e-mail",
- "authRegisterBySigningUp": "Registrací souhlasíte s našimi",
+ "authRegisterCreateSuperAdminAccount": "",
+ "authRegisterSignUpWithEmail": "",
+ "authRegisterBySigningUp": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
- "settingsGeneralSettings": "Obecná nastavení",
+ "settingsGeneralSettings": "",
"settingsDisplayTimezone": "",
"settingsDisplayTimezoneDescription": "",
- "settingsAppearance": "Vzhled",
+ "settingsAppearance": "",
"settingsAppearanceDescription": "",
"settingsThemeMode": "",
- "settingsLanguage": "Jazyk",
+ "settingsLanguage": "",
"settingsDistributedUptime": "",
"settingsDistributedUptimeDescription": "",
- "settingsEnabled": "Zapnuto",
- "settingsDisabled": "Vypnuto",
- "settingsHistoryAndMonitoring": "Historie a monitorování",
+ "settingsEnabled": "",
+ "settingsDisabled": "",
+ "settingsHistoryAndMonitoring": "",
"settingsHistoryAndMonitoringDescription": "",
"settingsTTLLabel": "",
"settingsTTLOptionalLabel": "",
@@ -89,10 +89,10 @@
"settingsWallet": "",
"settingsWalletDescription": "",
"settingsAbout": "",
- "settingsDevelopedBy": "Vyvinuto společností Bluewave Labs.",
- "settingsSave": "Uložit",
- "settingsSuccessSaved": "Nastavení bylo úspěšně uloženo",
- "settingsFailedToSave": "Nepodařilo se uložit nastavení",
+ "settingsDevelopedBy": "",
+ "settingsSave": "",
+ "settingsSuccessSaved": "",
+ "settingsFailedToSave": "",
"settingsStatsCleared": "",
"settingsFailedToClearStats": "",
"settingsDemoMonitorsAdded": "",
@@ -118,7 +118,7 @@
"response": "",
"checkConnection": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "Zadejte své osobní údaje",
+ "authRegisterStepOnePersonalDetails": "",
"authCheckEmailOpenEmailButton": "",
"authNewPasswordConfirmed": "",
"monitorStatusUp": "",
From 7e873161bc6909277afa63272c5a95bb279fc4ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 15:15:08 +0200
Subject: [PATCH 02/11] l10n(ar): Remove empty localization
---
client/src/locales/ar.json | 562 -------------------------------------
1 file changed, 562 deletions(-)
delete mode 100644 client/src/locales/ar.json
diff --git a/client/src/locales/ar.json b/client/src/locales/ar.json
deleted file mode 100644
index 765627912..000000000
--- a/client/src/locales/ar.json
+++ /dev/null
@@ -1,562 +0,0 @@
-{
- "dontHaveAccount": "",
- "email": "",
- "forgotPassword": "",
- "password": "",
- "signUp": "",
- "submit": "",
- "title": "",
- "continue": "",
- "enterEmail": "",
- "authLoginTitle": "",
- "authLoginEnterPassword": "",
- "commonPassword": "",
- "commonBack": "",
- "authForgotPasswordTitle": "",
- "authForgotPasswordResetPassword": "",
- "createPassword": "",
- "createAPassword": "",
- "authRegisterAlreadyHaveAccount": "",
- "commonAppName": "",
- "authLoginEnterEmail": "",
- "authRegisterTitle": "",
- "authRegisterStepOneTitle": "",
- "authRegisterStepOneDescription": "",
- "authRegisterStepTwoTitle": "",
- "authRegisterStepTwoDescription": "",
- "authRegisterStepThreeTitle": "",
- "authRegisterStepThreeDescription": "",
- "authForgotPasswordDescription": "",
- "authForgotPasswordSendInstructions": "",
- "authForgotPasswordBackTo": "",
- "authCheckEmailTitle": "",
- "authCheckEmailDescription": "",
- "authCheckEmailResendEmail": "",
- "authCheckEmailBackTo": "",
- "goBackTo": "",
- "authCheckEmailDidntReceiveEmail": "",
- "authCheckEmailClickToResend": "",
- "authSetNewPasswordTitle": "",
- "authSetNewPasswordDescription": "",
- "authSetNewPasswordNewPassword": "",
- "authSetNewPasswordConfirmPassword": "",
- "confirmPassword": "",
- "authSetNewPasswordResetPassword": "",
- "authSetNewPasswordBackTo": "",
- "authPasswordMustBeAtLeast": "",
- "authPasswordCharactersLong": "",
- "authPasswordMustContainAtLeast": "",
- "authPasswordSpecialCharacter": "",
- "authPasswordOneNumber": "",
- "authPasswordUpperCharacter": "",
- "authPasswordLowerCharacter": "",
- "authPasswordConfirmAndPassword": "",
- "authPasswordMustMatch": "",
- "authRegisterCreateAccount": "",
- "authRegisterCreateSuperAdminAccount": "",
- "authRegisterSignUpWithEmail": "",
- "authRegisterBySigningUp": "",
- "distributedStatusHeaderText": "",
- "distributedStatusSubHeaderText": "",
- "settingsGeneralSettings": "",
- "settingsDisplayTimezone": "",
- "settingsDisplayTimezoneDescription": "",
- "settingsAppearance": "",
- "settingsAppearanceDescription": "",
- "settingsThemeMode": "",
- "settingsLanguage": "",
- "settingsDistributedUptime": "",
- "settingsDistributedUptimeDescription": "",
- "settingsEnabled": "",
- "settingsDisabled": "",
- "settingsHistoryAndMonitoring": "",
- "settingsHistoryAndMonitoringDescription": "",
- "settingsTTLLabel": "",
- "settingsTTLOptionalLabel": "",
- "settingsClearAllStats": "",
- "settingsClearAllStatsButton": "",
- "settingsClearAllStatsDialogTitle": "",
- "settingsClearAllStatsDialogDescription": "",
- "settingsClearAllStatsDialogConfirm": "",
- "settingsDemoMonitors": "",
- "settingsDemoMonitorsDescription": "",
- "settingsAddDemoMonitors": "",
- "settingsAddDemoMonitorsButton": "",
- "settingsRemoveAllMonitors": "",
- "settingsRemoveAllMonitorsButton": "",
- "settingsRemoveAllMonitorsDialogTitle": "",
- "settingsRemoveAllMonitorsDialogConfirm": "",
- "settingsWallet": "",
- "settingsWalletDescription": "",
- "settingsAbout": "",
- "settingsDevelopedBy": "",
- "settingsSave": "",
- "settingsSuccessSaved": "",
- "settingsFailedToSave": "",
- "settingsStatsCleared": "",
- "settingsFailedToClearStats": "",
- "settingsDemoMonitorsAdded": "",
- "settingsFailedToAddDemoMonitors": "",
- "settingsMonitorsDeleted": "",
- "settingsFailedToDeleteMonitors": "",
- "starPromptTitle": "",
- "starPromptDescription": "",
- "https": "",
- "http": "",
- "monitor": "",
- "aboutus": "",
- "now": "",
- "delete": "",
- "configure": "",
- "networkError": "",
- "responseTime": "",
- "ms": "",
- "bar": "",
- "area": "",
- "country": "",
- "city": "",
- "response": "",
- "checkConnection": "",
- "passwordreset": "",
- "authRegisterStepOnePersonalDetails": "",
- "authCheckEmailOpenEmailButton": "",
- "authNewPasswordConfirmed": "",
- "monitorStatusUp": "",
- "monitorStatusDown": "",
- "webhookSendSuccess": "",
- "webhookSendError": "",
- "webhookUnsupportedPlatform": "",
- "distributedRightCategoryTitle": "",
- "distributedStatusServerMonitors": "",
- "distributedStatusServerMonitorsDescription": "",
- "distributedUptimeCreateSelectURL": "",
- "distributedUptimeCreateChecks": "",
- "distributedUptimeCreateChecksDescription": "",
- "distributedUptimeCreateIncidentNotification": "",
- "distributedUptimeCreateIncidentDescription": "",
- "distributedUptimeCreateAdvancedSettings": "",
- "distributedUptimeDetailsNoMonitorHistory": "",
- "distributedUptimeDetailsFooterHeading": "",
- "distributedUptimeDetailsFooterBuilt": "",
- "distributedUptimeDetailsFooterSolana": "",
- "distributedUptimeDetailsMonitorHeader": "",
- "distributedUptimeDetailsStatusHeaderUptime": "",
- "distributedUptimeDetailsStatusHeaderLastUpdate": "",
- "notifications": {
- "enableNotifications": "",
- "testNotification": "",
- "addOrEditNotifications": "",
- "slack": {
- "label": "",
- "description": "",
- "webhookLabel": "",
- "webhookPlaceholder": "",
- "webhookRequired": ""
- },
- "discord": {
- "label": "",
- "description": "",
- "webhookLabel": "",
- "webhookPlaceholder": "",
- "webhookRequired": ""
- },
- "telegram": {
- "label": "",
- "description": "",
- "tokenLabel": "",
- "tokenPlaceholder": "",
- "chatIdLabel": "",
- "chatIdPlaceholder": "",
- "fieldsRequired": ""
- },
- "webhook": {
- "label": "",
- "description": "",
- "urlLabel": "",
- "urlPlaceholder": "",
- "urlRequired": ""
- },
- "testNotificationDevelop": "",
- "integrationButton": "",
- "testSuccess": "",
- "testFailed": "",
- "unsupportedType": "",
- "networkError": ""
- },
- "testLocale": "",
- "add": "",
- "monitors": "",
- "distributedUptimeStatusCreateStatusPage": "",
- "distributedUptimeStatusCreateStatusPageAccess": "",
- "distributedUptimeStatusCreateStatusPageReady": "",
- "distributedUptimeStatusBasicInfoHeader": "",
- "distributedUptimeStatusBasicInfoDescription": "",
- "distributedUptimeStatusLogoHeader": "",
- "distributedUptimeStatusLogoDescription": "",
- "distributedUptimeStatusLogoUploadButton": "",
- "distributedUptimeStatusStandardMonitorsHeader": "",
- "distributedUptimeStatusStandardMonitorsDescription": "",
- "distributedUptimeStatusCreateYour": "",
- "distributedUptimeStatusEditYour": "",
- "distributedUptimeStatusPublishedLabel": "",
- "distributedUptimeStatusCompanyNameLabel": "",
- "distributedUptimeStatusPageAddressLabel": "",
- "distributedUptimeStatus30Days": "",
- "distributedUptimeStatus60Days": "",
- "distributedUptimeStatus90Days": "",
- "distributedUptimeStatusPageNotSetUp": "",
- "distributedUptimeStatusContactAdmin": "",
- "distributedUptimeStatusPageNotPublic": "",
- "distributedUptimeStatusPageDeleteDialog": "",
- "distributedUptimeStatusPageDeleteConfirm": "",
- "distributedUptimeStatusPageDeleteDescription": "",
- "distributedUptimeStatusDevices": "",
- "distributedUptimeStatusUpt": "",
- "distributedUptimeStatusUptBurned": "",
- "distributedUptimeStatusUptLogo": "",
- "incidentsTableNoIncidents": "",
- "incidentsTablePaginationLabel": "",
- "incidentsTableMonitorName": "",
- "incidentsTableStatus": "",
- "incidentsTableDateTime": "",
- "incidentsTableStatusCode": "",
- "incidentsTableMessage": "",
- "incidentsOptionsHeader": "",
- "incidentsOptionsHeaderFilterBy": "",
- "incidentsOptionsHeaderFilterAll": "",
- "incidentsOptionsHeaderFilterDown": "",
- "incidentsOptionsHeaderFilterCannotResolve": "",
- "incidentsOptionsHeaderShow": "",
- "incidentsOptionsHeaderLastHour": "",
- "incidentsOptionsHeaderLastDay": "",
- "incidentsOptionsHeaderLastWeek": "",
- "incidentsOptionsPlaceholderAllServers": "",
- "infrastructureCreateYour": "",
- "infrastructureCreateGeneralSettingsDescription": "",
- "infrastructureServerRequirement": "",
- "infrastructureCustomizeAlerts": "",
- "infrastructureAlertNotificationDescription": "",
- "infrastructureCreateMonitor": "",
- "infrastructureProtocol": "",
- "infrastructureServerUrlLabel": "",
- "infrastructureDisplayNameLabel": "",
- "infrastructureAuthorizationSecretLabel": "",
- "gb": "",
- "mb": "",
- "mem": "",
- "memoryUsage": "",
- "cpu": "",
- "cpuUsage": "",
- "cpuTemperature": "",
- "diskUsage": "",
- "used": "",
- "total": "",
- "cores": "",
- "frequency": "",
- "status": "",
- "cpuPhysical": "",
- "cpuLogical": "",
- "cpuFrequency": "",
- "avgCpuTemperature": "",
- "memory": "",
- "disk": "",
- "uptime": "",
- "os": "",
- "host": "",
- "actions": "",
- "integrations": "",
- "integrationsPrism": "",
- "integrationsSlack": "",
- "integrationsSlackInfo": "",
- "integrationsDiscord": "",
- "integrationsDiscordInfo": "",
- "integrationsZapier": "",
- "integrationsZapierInfo": "",
- "commonSave": "",
- "createYour": "",
- "createMonitor": "",
- "pause": "",
- "resume": "",
- "editing": "",
- "url": "",
- "access": "",
- "timezone": "",
- "features": "",
- "administrator": "",
- "loginHere": "",
- "displayName": "",
- "urlMonitor": "",
- "portToMonitor": "",
- "websiteMonitoring": "",
- "websiteMonitoringDescription": "",
- "pingMonitoring": "",
- "pingMonitoringDescription": "",
- "dockerContainerMonitoring": "",
- "dockerContainerMonitoringDescription": "",
- "portMonitoring": "",
- "portMonitoringDescription": "",
- "createMaintenanceWindow": "",
- "createMaintenance": "",
- "editMaintenance": "",
- "maintenanceWindowName": "",
- "friendlyNameInput": "",
- "friendlyNamePlaceholder": "",
- "maintenanceRepeat": "",
- "maintenance": "",
- "duration": "",
- "addMonitors": "",
- "window": "",
- "cancel": "",
- "message": "",
- "low": "",
- "high": "",
- "statusCode": "",
- "date&Time": "",
- "type": "",
- "statusPageName": "",
- "publicURL": "",
- "repeat": "",
- "edit": "",
- "createA": "",
- "remove": "",
- "maintenanceWindowDescription": "",
- "startTime": "",
- "timeZoneInfo": "",
- "monitorsToApply": "",
- "nextWindow": "",
- "notFoundButton": "",
- "pageSpeedConfigureSettingsDescription": "",
- "monitorDisplayName": "",
- "whenNewIncident": "",
- "notifySMS": "",
- "notifyEmails": "",
- "seperateEmails": "",
- "checkFrequency": "",
- "matchMethod": "",
- "expectedValue": "",
- "deleteDialogTitle": "",
- "deleteDialogDescription": "",
- "pageSpeedMonitor": "",
- "shown": "",
- "ago": "",
- "companyName": "",
- "pageSpeedDetailsPerformanceReport": "",
- "pageSpeedDetailsPerformanceReportCalculator": "",
- "checkingEvery": "",
- "statusPageCreateSettings": "",
- "basicInformation": "",
- "statusPageCreateBasicInfoDescription": "",
- "statusPageCreateSelectTimeZoneDescription": "",
- "statusPageCreateAppearanceDescription": "",
- "statusPageCreateSettingsCheckboxLabel": "",
- "statusPageCreateBasicInfoStatusPageAddress": "",
- "statusPageCreateTabsContent": "",
- "statusPageCreateTabsContentDescription": "",
- "statusPageCreateTabsContentFeaturesDescription": "",
- "showCharts": "",
- "showUptimePercentage": "",
- "removeLogo": "",
- "statusPageStatus": "",
- "statusPageStatusContactAdmin": "",
- "statusPageStatusNotPublic": "",
- "statusPageStatusNoPage": "",
- "statusPageStatusServiceStatus": "",
- "deleteStatusPage": "",
- "deleteStatusPageConfirm": "",
- "deleteStatusPageDescription": "",
- "uptimeCreate": "",
- "uptimeCreateJsonPath": "",
- "uptimeCreateJsonPathQuery": "",
- "maintenanceTableActionMenuDialogTitle": "",
- "infrastructureEditYour": "",
- "infrastructureEditMonitor": "",
- "infrastructureMonitorCreated": "",
- "infrastructureMonitorUpdated": "",
- "errorInvalidTypeId": "",
- "errorInvalidFieldId": "",
- "inviteNoTokenFound": "",
- "pageSpeedWarning": "",
- "pageSpeedLearnMoreLink": "",
- "pageSpeedAddApiKey": "",
- "update": "",
- "invalidFileFormat": "",
- "invalidFileSize": "",
- "ClickUpload": "",
- "DragandDrop": "",
- "MaxSize": "",
- "SupportedFormats": "",
- "FirstName": "",
- "LastName": "",
- "EmailDescriptionText": "",
- "YourPhoto": "",
- "PhotoDescriptionText": "",
- "save": "",
- "DeleteDescriptionText": "",
- "DeleteAccountWarning": "",
- "DeleteWarningTitle": "",
- "authRegisterFirstName": "",
- "authRegisterLastName": "",
- "authRegisterEmail": "",
- "authRegisterEmailRequired": "",
- "bulkImport": {
- "title": "",
- "selectFileTips": "",
- "selectFileDescription": "",
- "selectFile": "",
- "parsingFailed": "",
- "uploadSuccess": "",
- "validationFailed": "",
- "noFileSelected": "",
- "fallbackPage": ""
- },
- "welcomeBack": "",
- "authRegisterLoginLink": "",
- "validationNameRequired": "",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "",
- "settingsSystemReset": "",
- "settingsSystemResetDescription": "",
- "DeleteAccountTitle": "",
- "DeleteAccountButton": "",
- "authRegisterEmailInvalid": "",
- "publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
- "maskedPageSpeedKeyPlaceholder": "",
- "pageSpeedApiKeyFieldTitle": "",
- "pageSpeedApiKeyFieldLabel": "",
- "pageSpeedApiKeyFieldDescription": "",
- "pageSpeedApiKeyFieldResetLabel": "",
- "reset": "",
- "ignoreTLSError": "",
- "tlsErrorIgnored": "",
- "ignoreTLSErrorDescription": "",
- "createNew": "",
- "greeting": {
- "prepend": "",
- "append": "",
- "overview": ""
- },
- "monitorStatus": {
- "up": "",
- "down": "",
- "paused": ""
- },
- "roles": {
- "superAdmin": "",
- "admin": "",
- "teamMember": "",
- "demoUser": ""
- },
- "teamPanel": {
- "teamMembers": "",
- "filter": {
- "all": "",
- "member": ""
- },
- "inviteTeamMember": "",
- "inviteNewTeamMember": "",
- "inviteDescription": "",
- "email": "",
- "selectRole": "",
- "inviteLink": "",
- "cancel": "",
- "noMembers": "",
- "getToken": "",
- "emailToken": "",
- "table": {
- "name": "",
- "email": "",
- "role": "",
- "created": ""
- }
- },
- "monitorState": {
- "paused": "",
- "resumed": "",
- "active": ""
- },
- "menu": {
- "uptime": "",
- "pagespeed": "",
- "infrastructure": "",
- "distributedUptime": "",
- "incidents": "",
- "statusPages": "",
- "maintenance": "",
- "integrations": "",
- "settings": "",
- "support": "",
- "discussions": "",
- "docs": "",
- "changelog": "",
- "profile": "",
- "password": "",
- "team": "",
- "logOut": ""
- },
- "settingsEmail": "",
- "settingsEmailDescription": "",
- "settingsEmailHost": "",
- "settingsEmailPort": "",
- "settingsEmailAddress": "",
- "settingsEmailPassword": "",
- "settingsEmailUser": "",
- "settingsEmailFieldResetLabel": "",
- "state": "",
- "statusBreadCrumbsStatusPages": "",
- "statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "",
- "settingsThemeModeLight": "",
- "settingsThemeModeDark": "",
- "settingsClearAllStatsDialogCancel": "",
- "commonSaving": "",
- "navControls": "",
- "incidentsPageTitle": "",
- "passwordPanel": {
- "passwordChangedSuccess": "",
- "passwordInputIncorrect": "",
- "currentPassword": "",
- "enterCurrentPassword": "",
- "newPassword": "",
- "enterNewPassword": "",
- "confirmNewPassword": "",
- "passwordRequirements": "",
- "saving": ""
- },
- "settingsEmailConnectionHost": "",
- "sendTestEmail": "",
- "emailSent": "",
- "failedToSendEmail": "",
- "settingsTestEmail": "",
- "settingsTestEmailSuccess": "",
- "settingsTestEmailFailed": "",
- "settingsTestEmailFailedWithReason": "",
- "settingsTestEmailUnknownError": "",
- "settingsEmailRequiredFields": "",
- "statusMsg": {
- "paused": "",
- "up": "",
- "down": "",
- "pending": ""
- },
- "settingsURLTitle": "",
- "settingsURLDescription": "",
- "settingsURLSelectTitle": "",
- "settingsURLEnabled": "",
- "settingURLDisabled": "",
- "uptimeGeneralInstructions": {
- "http": "",
- "ping": "",
- "docker": "",
- "port": ""
- }
-}
From d63e3db2163ade14e96d38f198c0c806e228a2a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 17:40:07 +0200
Subject: [PATCH 03/11] i18n: Refactor and fix app names (Checkmate and
Capture)
---
client/src/Components/Sidebar/index.jsx | 2 +-
client/src/Pages/Auth/CheckEmail.jsx | 2 +-
client/src/Pages/Auth/ForgotPassword.jsx | 2 +-
client/src/Pages/Auth/Login/Login.jsx | 2 +-
client/src/Pages/Auth/NewPasswordConfirmed.jsx | 2 +-
client/src/Pages/Auth/Register/Register.jsx | 2 +-
client/src/Pages/Auth/SetNewPassword.jsx | 2 +-
client/src/Pages/Infrastructure/Create/index.jsx | 2 +-
client/src/Pages/ServerUnreachable.jsx | 2 +-
client/src/Pages/Settings/SettingsAbout.jsx | 2 +-
client/src/locales/cs.json | 5 ++++-
client/src/locales/de.json | 5 ++++-
client/src/locales/en.json | 5 ++++-
client/src/locales/es.json | 5 ++++-
client/src/locales/fi.json | 5 ++++-
client/src/locales/fr.json | 5 ++++-
client/src/locales/pt-BR.json | 5 ++++-
client/src/locales/ru.json | 5 ++++-
client/src/locales/tr.json | 5 ++++-
client/src/locales/zh-TW.json | 5 ++++-
20 files changed, 50 insertions(+), 20 deletions(-)
diff --git a/client/src/Components/Sidebar/index.jsx b/client/src/Components/Sidebar/index.jsx
index 6073f428d..f1c512771 100644
--- a/client/src/Components/Sidebar/index.jsx
+++ b/client/src/Components/Sidebar/index.jsx
@@ -338,7 +338,7 @@ function Sidebar() {
mt={theme.spacing(2)}
sx={{ opacity: 0.8, fontWeight: 500 }}
>
- Checkmate
+ {t("common.appName")}
diff --git a/client/src/Pages/Auth/CheckEmail.jsx b/client/src/Pages/Auth/CheckEmail.jsx
index 695be62b0..5ee6edb74 100644
--- a/client/src/Pages/Auth/CheckEmail.jsx
+++ b/client/src/Pages/Auth/CheckEmail.jsx
@@ -118,7 +118,7 @@ const CheckEmail = () => {
gap={theme.spacing(4)}
>
- Checkmate
+ {t("common.appName")}
{
gap={theme.spacing(4)}
>
- Checkmate
+ {t("common.appName")}
{
gap={theme.spacing(4)}
>
- Checkmate
+ {t("common.appName")}
{
gap={theme.spacing(4)}
>
- Checkmate
+ {t("common.appName")}
{
gap={theme.spacing(4)}
>
- {t("commonAppName")}
+ {t("common.appName")}
{
gap={theme.spacing(4)}
>
- {t("commonAppName")}
+ {t("common.appName")}
{
diff --git a/client/src/Pages/ServerUnreachable.jsx b/client/src/Pages/ServerUnreachable.jsx
index e7d81926e..7e067425a 100644
--- a/client/src/Pages/ServerUnreachable.jsx
+++ b/client/src/Pages/ServerUnreachable.jsx
@@ -71,7 +71,7 @@ const ServerUnreachable = () => {
gap={theme.spacing(4)}
>
- Checkmate
+ {t("common.appName")}
{
- Checkmate {2.1}
+ {t("common.appName")} {2.1}
{t("settingsDevelopedBy")}
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index 765627912..97762043a 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "",
"email": "",
"forgotPassword": "",
@@ -17,7 +21,6 @@
"createPassword": "",
"createAPassword": "",
"authRegisterAlreadyHaveAccount": "",
- "commonAppName": "",
"authLoginEnterEmail": "",
"authRegisterTitle": "",
"authRegisterStepOneTitle": "",
diff --git a/client/src/locales/de.json b/client/src/locales/de.json
index 948748de3..0bf0119bc 100644
--- a/client/src/locales/de.json
+++ b/client/src/locales/de.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Noch kein Konto",
"email": "E-Mail",
"forgotPassword": "Passwort vergessen",
@@ -17,7 +21,6 @@
"createPassword": "Erstelle dein Passwort",
"createAPassword": "Passwort",
"authRegisterAlreadyHaveAccount": "Hast du schon eine Account?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "",
"authRegisterTitle": "",
"authRegisterStepOneTitle": "",
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 12442246c..09eeecfe4 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Don't have account",
"email": "E-mail",
"forgotPassword": "Forgot Password",
@@ -17,7 +21,6 @@
"createPassword": "Create your password",
"createAPassword": "Password",
"authRegisterAlreadyHaveAccount": "Already have an account?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "Enter your email",
"authRegisterTitle": "Create an account",
"authRegisterStepOneTitle": "Create your account",
diff --git a/client/src/locales/es.json b/client/src/locales/es.json
index a278312af..b998bd855 100644
--- a/client/src/locales/es.json
+++ b/client/src/locales/es.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "No tengo una cuenta",
"email": "Correo electronico",
"forgotPassword": "He olvidado mi contraseña",
@@ -17,7 +21,6 @@
"createPassword": "Crear contraseña",
"createAPassword": "Contraseña",
"authRegisterAlreadyHaveAccount": "Ya tienes un cuenta?",
- "commonAppName": "",
"authLoginEnterEmail": "Introduce tu correo electronico",
"authRegisterTitle": "Crear una cuenta",
"authRegisterStepOneTitle": "Crea tu cuenta",
diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json
index 7f6ffa2ba..191eb530a 100644
--- a/client/src/locales/fi.json
+++ b/client/src/locales/fi.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Ei tiliä",
"email": "Sähköposti",
"forgotPassword": "Unohtunut salasana",
@@ -17,7 +21,6 @@
"createPassword": "Luo salasanasi",
"createAPassword": "Salasana",
"authRegisterAlreadyHaveAccount": "Onko sinulla jo tili?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "Syötä salasanasi",
"authRegisterTitle": "Luo tili",
"authRegisterStepOneTitle": "Luo tilisi",
diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json
index d31e73f48..4dc39dc69 100644
--- a/client/src/locales/fr.json
+++ b/client/src/locales/fr.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Vous n'avez pas de compte",
"email": "E-mail",
"forgotPassword": "Mot de passe oublié",
@@ -17,7 +21,6 @@
"createPassword": "Créez votre mot de passe",
"createAPassword": "Créer un mot de passe",
"authRegisterAlreadyHaveAccount": "Vous avez un compte ?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "Entrez votre e-mail",
"authRegisterTitle": "Créer un compte",
"authRegisterStepOneTitle": "Créez votre compte",
diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json
index fdc3e50a6..0e32f7b36 100644
--- a/client/src/locales/pt-BR.json
+++ b/client/src/locales/pt-BR.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Não tenho conta",
"email": "E-mail",
"forgotPassword": "Esqueci a senha",
@@ -17,7 +21,6 @@
"createPassword": "Criar sua senha",
"createAPassword": "Senha",
"authRegisterAlreadyHaveAccount": "Já possui uma conta?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "Insira seu e-mail",
"authRegisterTitle": "Criar uma conta",
"authRegisterStepOneTitle": "Crie sua conta",
diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json
index fce8fd6ab..64342f618 100644
--- a/client/src/locales/ru.json
+++ b/client/src/locales/ru.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Нет аккаунта",
"email": "Почта",
"forgotPassword": "Забыли пароль",
@@ -17,7 +21,6 @@
"createPassword": "Создайте свой пароль",
"createAPassword": "Создайте пароль",
"authRegisterAlreadyHaveAccount": "Уже есть аккаунт?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "Введите свой email",
"authRegisterTitle": "Создать аккаунт",
"authRegisterStepOneTitle": "Создайте свой аккаут",
diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json
index fb1be3c57..d314d5bfb 100644
--- a/client/src/locales/tr.json
+++ b/client/src/locales/tr.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "Hesabınız yok mu",
"email": "E-posta",
"forgotPassword": "Parolamı unuttum",
@@ -17,7 +21,6 @@
"createPassword": "Parolanızı oluşturun",
"createAPassword": "Bir parola oluşturun",
"authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "E-posta adresinizi girin",
"authRegisterTitle": "Hesap oluştur",
"authRegisterStepOneTitle": "Hesabınızı oluşturun",
diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json
index bb44d91da..d4451017d 100644
--- a/client/src/locales/zh-TW.json
+++ b/client/src/locales/zh-TW.json
@@ -1,4 +1,8 @@
{
+ "common": {
+ "appName": "Checkmate",
+ "monitoringAgentName": "Capture"
+ },
"dontHaveAccount": "沒有帳號",
"email": "E-mail",
"forgotPassword": "忘記密碼",
@@ -17,7 +21,6 @@
"createPassword": "",
"createAPassword": "",
"authRegisterAlreadyHaveAccount": "已經有帳號嗎?",
- "commonAppName": "Checkmate",
"authLoginEnterEmail": "輸入您的 E-mail",
"authRegisterTitle": "建立帳號",
"authRegisterStepOneTitle": "建立您的帳號",
From 6b81eabf07533ea574915744236a009b55758952 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 17:49:37 +0200
Subject: [PATCH 04/11] i18n: Fix theme toggle
---
client/src/Components/ThemeSwitch/index.jsx | 4 +++-
client/src/locales/cs.json | 5 ++++-
client/src/locales/de.json | 5 ++++-
client/src/locales/en.json | 5 ++++-
client/src/locales/es.json | 5 ++++-
client/src/locales/fi.json | 5 ++++-
client/src/locales/fr.json | 5 ++++-
client/src/locales/pt-BR.json | 5 ++++-
client/src/locales/ru.json | 5 ++++-
client/src/locales/tr.json | 5 ++++-
client/src/locales/zh-TW.json | 5 ++++-
11 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/client/src/Components/ThemeSwitch/index.jsx b/client/src/Components/ThemeSwitch/index.jsx
index 6c879b289..d1a7661bc 100644
--- a/client/src/Components/ThemeSwitch/index.jsx
+++ b/client/src/Components/ThemeSwitch/index.jsx
@@ -14,10 +14,12 @@ import SunAndMoonIcon from "./SunAndMoonIcon";
import { useDispatch, useSelector } from "react-redux";
import { setMode } from "../../Features/UI/uiSlice";
import "./index.css";
+import {useTranslation} from "react-i18next";
const ThemeSwitch = ({ width = 48, height = 48, color }) => {
const mode = useSelector((state) => state.ui.mode);
const dispatch = useDispatch();
+ const { t } = useTranslation();
const toggleTheme = () => {
dispatch(setMode(mode === "light" ? "dark" : "light"));
@@ -26,7 +28,7 @@ const ThemeSwitch = ({ width = 48, height = 48, color }) => {
return (
Date: Sat, 7 Jun 2025 19:22:54 +0200
Subject: [PATCH 05/11] i18n: Refactor page for server unreachable and remove
unused
---
client/src/Pages/ServerUnreachable.jsx | 15 ++++++---------
client/src/locales/cs.json | 22 ++++++++++++++--------
client/src/locales/de.json | 22 ++++++++++++++--------
client/src/locales/en.json | 22 ++++++++++++++--------
client/src/locales/es.json | 22 ++++++++++++++--------
client/src/locales/fi.json | 22 ++++++++++++++--------
client/src/locales/fr.json | 22 ++++++++++++++--------
client/src/locales/pt-BR.json | 22 ++++++++++++++--------
client/src/locales/ru.json | 22 ++++++++++++++--------
client/src/locales/tr.json | 22 ++++++++++++++--------
client/src/locales/zh-TW.json | 22 ++++++++++++++--------
11 files changed, 146 insertions(+), 89 deletions(-)
diff --git a/client/src/Pages/ServerUnreachable.jsx b/client/src/Pages/ServerUnreachable.jsx
index 7e067425a..7ab96dd96 100644
--- a/client/src/Pages/ServerUnreachable.jsx
+++ b/client/src/Pages/ServerUnreachable.jsx
@@ -28,13 +28,13 @@ const ServerUnreachable = () => {
// If successful, show toast and navigate to login page
createToast({
- body: t("backendReconnected", "Connection to server restored"),
+ body: t("errorPages.serverUnreachable.toasts.reconnected"),
});
navigate("/login");
} catch (error) {
// If still unreachable, stay on this page and show toast
createToast({
- body: t("backendStillUnreachable", "Server is still unreachable"),
+ body: t("errorPages.serverUnreachable.toasts.stillUnreachable"),
});
} finally {
setIsCheckingConnection(false);
@@ -121,7 +121,7 @@ const ServerUnreachable = () => {
>
@@ -131,10 +131,7 @@ const ServerUnreachable = () => {
align="center"
color={theme.palette.primary.contrastTextSecondary}
>
- {t(
- "backendUnreachableMessage",
- "The Checkmate server is not responding. Please check your deployment configuration or try again later."
- )}
+ {t("errorPages.serverUnreachable.description")}
@@ -156,8 +153,8 @@ const ServerUnreachable = () => {
}}
>
{isCheckingConnection
- ? t("retryingConnection", "Retrying Connection...")
- : t("retryConnection", "Retry Connection")}
+ ? t("errorPages.serverUnreachable.retryButton.processing")
+ : t("errorPages.serverUnreachable.retryButton.default")}
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index 9cb584cd3..10a0f3c45 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -6,6 +6,20 @@
"toggleTheme": "Přepnout mezi světlým a tmavým motivem"
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "Podařilo se úspěšně obnovit spojení se serverem",
+ "stillUnreachable": "Server je stále nedosažitelný. Zkuste to prosím později."
+ },
+ "alertBox": "Chyba připojení k serveru",
+ "description": "Nepodařilo se připojit k serveru. Zkontrolujte si prosím internetové připojení a pokud problém přetrvává, ověřte konfiguraci aplikace Checkmate.",
+ "retryButton": {
+ "default": "Zkusit se znovu připojit",
+ "processing": "Probíhá připojování…"
+ }
+ }
+ },
"dontHaveAccount": "",
"email": "",
"forgotPassword": "",
@@ -428,14 +442,6 @@
"publicLink": "",
"doNotHaveAccount": "",
"registerHere": "",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
diff --git a/client/src/locales/de.json b/client/src/locales/de.json
index 7cd727828..9c13009b7 100644
--- a/client/src/locales/de.json
+++ b/client/src/locales/de.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "",
+ "stillUnreachable": ""
+ },
+ "alertBox": "",
+ "description": "",
+ "retryButton": {
+ "default": "",
+ "processing": ""
+ }
+ }
+ },
"dontHaveAccount": "Noch kein Konto",
"email": "E-Mail",
"forgotPassword": "Passwort vergessen",
@@ -428,14 +442,6 @@
"publicLink": "",
"doNotHaveAccount": "",
"registerHere": "",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 524cbfeb4..055ddbdca 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -6,6 +6,20 @@
"toggleTheme": "Toggles light & dark"
}
},
+ "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..."
+ }
+ }
+ },
"dontHaveAccount": "Don't have account",
"email": "E-mail",
"forgotPassword": "Forgot Password",
@@ -420,14 +434,6 @@
"publicLink": "Public link",
"doNotHaveAccount": "Do not have an account?",
"registerHere": "Register here",
- "backendUnreachable": "Server Connection Error",
- "backendUnreachableMessage": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.",
- "backendUnreachableError": "Cannot connect to the server. Please try again later.",
- "retryConnection": "Retry connection",
- "retryingConnection": "Connecting...",
- "backendReconnected": "Successfully reconnected to the server.",
- "backendStillUnreachable": "Server is still unreachable. Please try again later.",
- "backendConnectionError": "Error connecting to the server. Please check your network connection.",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API key",
"pageSpeedApiKeyFieldLabel": "PageSpeed API key",
diff --git a/client/src/locales/es.json b/client/src/locales/es.json
index e2741d8b2..2f76a6c93 100644
--- a/client/src/locales/es.json
+++ b/client/src/locales/es.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "",
+ "stillUnreachable": ""
+ },
+ "alertBox": "",
+ "description": "",
+ "retryButton": {
+ "default": "",
+ "processing": ""
+ }
+ }
+ },
"dontHaveAccount": "No tengo una cuenta",
"email": "Correo electronico",
"forgotPassword": "He olvidado mi contraseña",
@@ -428,14 +442,6 @@
"publicLink": "",
"doNotHaveAccount": "",
"registerHere": "",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json
index 2439cd7aa..463665ef5 100644
--- a/client/src/locales/fi.json
+++ b/client/src/locales/fi.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "",
+ "stillUnreachable": ""
+ },
+ "alertBox": "",
+ "description": "",
+ "retryButton": {
+ "default": "",
+ "processing": "Yhdistetään..."
+ }
+ }
+ },
"dontHaveAccount": "Ei tiliä",
"email": "Sähköposti",
"forgotPassword": "Unohtunut salasana",
@@ -428,14 +442,6 @@
"publicLink": "Julkinen linkki",
"doNotHaveAccount": "Onko sinulla tili?",
"registerHere": "Rekisteröidy tästä",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "Yhdistetään...",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API-avain",
"pageSpeedApiKeyFieldLabel": "PageSpeed API-avain",
diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json
index 19eb7709c..b430ea903 100644
--- a/client/src/locales/fr.json
+++ b/client/src/locales/fr.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "Reconnexion au serveur réussie.",
+ "stillUnreachable": "Le serveur est toujours inaccessible. Veuillez réessayer plus tard."
+ },
+ "alertBox": "Erreur de connexion au serveur",
+ "description": "",
+ "retryButton": {
+ "default": "",
+ "processing": ""
+ }
+ }
+ },
"dontHaveAccount": "Vous n'avez pas de compte",
"email": "E-mail",
"forgotPassword": "Mot de passe oublié",
@@ -428,14 +442,6 @@
"publicLink": "",
"doNotHaveAccount": "",
"registerHere": "",
- "backendUnreachable": "Erreur de connexion au serveur",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "Impossible de se connecter au serveur. Veuillez réessayer plus tard.",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "Reconnexion au serveur réussie.",
- "backendStillUnreachable": "Le serveur est toujours inaccessible. Veuillez réessayer plus tard.",
- "backendConnectionError": "Erreur de connexion au serveur. Veuillez vérifier votre connexion réseau.",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json
index 3cf618bc5..273e40d67 100644
--- a/client/src/locales/pt-BR.json
+++ b/client/src/locales/pt-BR.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "Reconectado ao servidor com sucesso.",
+ "stillUnreachable": "O servidor ainda está inacessível. Tente novamente mais tarde."
+ },
+ "alertBox": "Erro de conexão com o servidor",
+ "description": "Não conseguimos conectar ao servidor. Verifique sua conexão com a internet ou sua configuração de implantação se o problema persistir.",
+ "retryButton": {
+ "default": "Reconectar",
+ "processing": "Conectando..."
+ }
+ }
+ },
"dontHaveAccount": "Não tenho conta",
"email": "E-mail",
"forgotPassword": "Esqueci a senha",
@@ -427,14 +441,6 @@
"publicLink": "Link publico",
"doNotHaveAccount": "Ainda não tem uma conta?",
"registerHere": "Registre-se aqui",
- "backendUnreachable": "Erro de conexão com o servidor",
- "backendUnreachableMessage": "Não conseguimos conectar ao servidor. Verifique sua conexão com a internet ou sua configuração de implantação se o problema persistir.",
- "backendUnreachableError": "Não foi possível conectar ao servidor. Tente novamente mais tarde.",
- "retryConnection": "Reconectar",
- "retryingConnection": "Conectando...",
- "backendReconnected": "Reconectado ao servidor com sucesso.",
- "backendStillUnreachable": "O servidor ainda está inacessível. Tente novamente mais tarde.",
- "backendConnectionError": "Erro ao conectar ao servidor. Verifique sua conexão de internet.",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API key",
"pageSpeedApiKeyFieldLabel": "PageSpeed API key",
diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json
index 5189032c3..facd85cb3 100644
--- a/client/src/locales/ru.json
+++ b/client/src/locales/ru.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "Успешно подключен к серверу.",
+ "stillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже."
+ },
+ "alertBox": "Ошибка подключения к серверу",
+ "description": "Нам не удается подключиться к серверу. Пожалуйста, проверьте подключение к Интернету или конфигурацию вашего развертывания, если проблема не устранена.",
+ "retryButton": {
+ "default": "Повторите попытку подключения",
+ "processing": "Подключение..."
+ }
+ }
+ },
"dontHaveAccount": "Нет аккаунта",
"email": "Почта",
"forgotPassword": "Забыли пароль",
@@ -423,14 +437,6 @@
"publicLink": "Публичная ссылка",
"doNotHaveAccount": "У вас нет учетной записи?",
"registerHere": "Зарегистрируйтесь здесь",
- "backendUnreachable": "Ошибка подключения к серверу",
- "backendUnreachableMessage": "Нам не удается подключиться к серверу. Пожалуйста, проверьте подключение к Интернету или конфигурацию вашего развертывания, если проблема не устранена.",
- "backendUnreachableError": "Не удается подключиться к серверу. Пожалуйста, повторите попытку позже.",
- "retryConnection": "Повторите попытку подключения",
- "retryingConnection": "Подключение...",
- "backendReconnected": "Успешно подключен к серверу.",
- "backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.",
- "backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте свое сетевое подключение.",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Ключ API Google PageSpeed",
"pageSpeedApiKeyFieldLabel": "Ключ API PageSpeed",
diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json
index 004d1d8a0..c7a0d300a 100644
--- a/client/src/locales/tr.json
+++ b/client/src/locales/tr.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "Sunucuya başarıyla yeniden bağlanıldı.",
+ "stillUnreachable": "Sunucuya hala ulaşılamıyor. Lütfen daha sonra tekrar deneyin."
+ },
+ "alertBox": "Sunucu bağlantı hatası",
+ "description": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.",
+ "retryButton": {
+ "default": "Bağlantıyı yeniden deneyin",
+ "processing": "Bağlanıyor..."
+ }
+ }
+ },
"dontHaveAccount": "Hesabınız yok mu",
"email": "E-posta",
"forgotPassword": "Parolamı unuttum",
@@ -428,14 +442,6 @@
"publicLink": "Herkese açık bağlantı",
"doNotHaveAccount": "Bir hesabınız yok mu?",
"registerHere": "Buradan kayıt olun",
- "backendUnreachable": "Sunucu bağlantı hatası",
- "backendUnreachableMessage": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.",
- "backendUnreachableError": "Sunucuya bağlanılamıyor. Lütfen daha sonra tekrar deneyin.",
- "retryConnection": "Bağlantıyı yeniden deneyin",
- "retryingConnection": "Bağlanıyor...",
- "backendReconnected": "Sunucuya başarıyla yeniden bağlanıldı.",
- "backendStillUnreachable": "Sunucuya hala ulaşılamıyor. Lütfen daha sonra tekrar deneyin.",
- "backendConnectionError": "Sunucuya bağlanırken hata oluştu. Lütfen ağ bağlantınızı kontrol edin.",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı",
"pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı",
diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json
index cad6b52ba..ff48a0ddc 100644
--- a/client/src/locales/zh-TW.json
+++ b/client/src/locales/zh-TW.json
@@ -6,6 +6,20 @@
"toggleTheme": ""
}
},
+ "errorPages": {
+ "serverUnreachable": {
+ "toasts": {
+ "reconnected": "",
+ "stillUnreachable": ""
+ },
+ "alertBox": "",
+ "description": "",
+ "retryButton": {
+ "default": "",
+ "processing": ""
+ }
+ }
+ },
"dontHaveAccount": "沒有帳號",
"email": "E-mail",
"forgotPassword": "忘記密碼",
@@ -428,14 +442,6 @@
"publicLink": "",
"doNotHaveAccount": "",
"registerHere": "",
- "backendUnreachable": "",
- "backendUnreachableMessage": "",
- "backendUnreachableError": "",
- "retryConnection": "",
- "retryingConnection": "",
- "backendReconnected": "",
- "backendStillUnreachable": "",
- "backendConnectionError": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
From c5efa71875c2bc5bb5ac91c0c15ceb4939502d13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 19:30:55 +0200
Subject: [PATCH 06/11] i18n: Refactor and fix network error
---
client/src/Components/GenericFallback/NetworkError.jsx | 7 +++++--
client/src/Pages/Infrastructure/Details/index.jsx | 4 ++--
client/src/Pages/Infrastructure/Monitors/index.jsx | 4 ++--
client/src/Pages/Maintenance/index.jsx | 4 ++--
client/src/Pages/PageSpeed/Details/index.jsx | 4 ++--
client/src/Pages/PageSpeed/Monitors/index.jsx | 4 ++--
client/src/Pages/StatusPage/Create/index.jsx | 4 ++--
client/src/Pages/StatusPage/Status/index.jsx | 4 ++--
client/src/Pages/StatusPage/StatusPages/index.jsx | 4 ++--
client/src/Pages/Uptime/Details/index.jsx | 4 ++--
client/src/Pages/Uptime/Monitors/index.jsx | 4 ++--
client/src/locales/cs.json | 6 ++++--
client/src/locales/de.json | 6 ++++--
client/src/locales/en.json | 6 ++++--
client/src/locales/es.json | 6 ++++--
client/src/locales/fi.json | 6 ++++--
client/src/locales/fr.json | 6 ++++--
client/src/locales/pt-BR.json | 6 ++++--
client/src/locales/ru.json | 6 ++++--
client/src/locales/tr.json | 6 ++++--
client/src/locales/zh-TW.json | 6 ++++--
21 files changed, 65 insertions(+), 42 deletions(-)
diff --git a/client/src/Components/GenericFallback/NetworkError.jsx b/client/src/Components/GenericFallback/NetworkError.jsx
index b26037a57..ddffa1c31 100644
--- a/client/src/Components/GenericFallback/NetworkError.jsx
+++ b/client/src/Components/GenericFallback/NetworkError.jsx
@@ -1,8 +1,11 @@
import { Typography } from "@mui/material";
import { useTheme } from "@emotion/react";
+import { useTranslation } from "react-i18next";
const NetworkError = () => {
const theme = useTheme();
+ const { t } = useTranslation();
+
return (
<>
{
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- Network error
+ {t("common.toasts.networkError")}
- Please check your connection
+ {t("common.toasts.checkConnection")}
>
);
};
diff --git a/client/src/Pages/Infrastructure/Details/index.jsx b/client/src/Pages/Infrastructure/Details/index.jsx
index f7f96f931..fefb7d2aa 100644
--- a/client/src/Pages/Infrastructure/Details/index.jsx
+++ b/client/src/Pages/Infrastructure/Details/index.jsx
@@ -46,9 +46,9 @@ const InfrastructureDetails = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/Infrastructure/Monitors/index.jsx b/client/src/Pages/Infrastructure/Monitors/index.jsx
index 9797736c4..bfba843c0 100644
--- a/client/src/Pages/Infrastructure/Monitors/index.jsx
+++ b/client/src/Pages/Infrastructure/Monitors/index.jsx
@@ -66,9 +66,9 @@ const InfrastructureMonitors = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/Maintenance/index.jsx b/client/src/Pages/Maintenance/index.jsx
index eccc95b50..f155680a5 100644
--- a/client/src/Pages/Maintenance/index.jsx
+++ b/client/src/Pages/Maintenance/index.jsx
@@ -58,9 +58,9 @@ const Maintenance = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/PageSpeed/Details/index.jsx b/client/src/Pages/PageSpeed/Details/index.jsx
index d429858d2..5724f12a1 100644
--- a/client/src/Pages/PageSpeed/Details/index.jsx
+++ b/client/src/Pages/PageSpeed/Details/index.jsx
@@ -52,9 +52,9 @@ const PageSpeedDetails = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/PageSpeed/Monitors/index.jsx b/client/src/Pages/PageSpeed/Monitors/index.jsx
index bd40aedff..808541cee 100644
--- a/client/src/Pages/PageSpeed/Monitors/index.jsx
+++ b/client/src/Pages/PageSpeed/Monitors/index.jsx
@@ -35,9 +35,9 @@ const PageSpeed = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/StatusPage/Create/index.jsx b/client/src/Pages/StatusPage/Create/index.jsx
index d1bb8d196..50535cd90 100644
--- a/client/src/Pages/StatusPage/Create/index.jsx
+++ b/client/src/Pages/StatusPage/Create/index.jsx
@@ -208,9 +208,9 @@ const CreateStatusPage = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/StatusPage/Status/index.jsx b/client/src/Pages/StatusPage/Status/index.jsx
index 341c6d731..ee1ec436c 100644
--- a/client/src/Pages/StatusPage/Status/index.jsx
+++ b/client/src/Pages/StatusPage/Status/index.jsx
@@ -69,9 +69,9 @@ const PublicStatus = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/StatusPage/StatusPages/index.jsx b/client/src/Pages/StatusPage/StatusPages/index.jsx
index 095023d76..650307bdb 100644
--- a/client/src/Pages/StatusPage/StatusPages/index.jsx
+++ b/client/src/Pages/StatusPage/StatusPages/index.jsx
@@ -32,9 +32,9 @@ const StatusPages = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/Uptime/Details/index.jsx b/client/src/Pages/Uptime/Details/index.jsx
index 5ad8bd61b..570b687d5 100644
--- a/client/src/Pages/Uptime/Details/index.jsx
+++ b/client/src/Pages/Uptime/Details/index.jsx
@@ -95,9 +95,9 @@ const UptimeDetails = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/Pages/Uptime/Monitors/index.jsx b/client/src/Pages/Uptime/Monitors/index.jsx
index ce9123816..793731190 100644
--- a/client/src/Pages/Uptime/Monitors/index.jsx
+++ b/client/src/Pages/Uptime/Monitors/index.jsx
@@ -158,9 +158,9 @@ const UptimeMonitors = () => {
marginY={theme.spacing(4)}
color={theme.palette.primary.contrastTextTertiary}
>
- {t("networkError")}
+ {t("common.toasts.networkError")}
- {t("checkConnection")}
+ {t("common.toasts.checkConnection")}
);
}
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index 10a0f3c45..5f2fde219 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": "Přepnout mezi světlým a tmavým motivem"
+ },
+ "toasts": {
+ "networkError": "Chyba připojení k síti",
+ "checkConnection": "Zkontrolujte prosím své připojení k síti"
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "",
"delete": "",
"configure": "",
- "networkError": "",
"responseTime": "",
"ms": "",
"bar": "",
@@ -136,7 +139,6 @@
"country": "",
"city": "",
"response": "",
- "checkConnection": "",
"passwordreset": "",
"authRegisterStepOnePersonalDetails": "",
"authCheckEmailOpenEmailButton": "",
diff --git a/client/src/locales/de.json b/client/src/locales/de.json
index 9c13009b7..fb1a58019 100644
--- a/client/src/locales/de.json
+++ b/client/src/locales/de.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "",
+ "checkConnection": ""
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "",
"delete": "",
"configure": "",
- "networkError": "",
"responseTime": "",
"ms": "",
"bar": "",
@@ -136,7 +139,6 @@
"country": "",
"city": "",
"response": "",
- "checkConnection": "",
"passwordreset": "",
"authRegisterStepOnePersonalDetails": "",
"authCheckEmailOpenEmailButton": "",
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 055ddbdca..145aa0af3 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": "Toggles light & dark"
+ },
+ "toasts": {
+ "networkError": "Network error",
+ "checkConnection": "Please check your connection"
}
},
"errorPages": {
@@ -124,7 +128,6 @@
"now": "Now",
"delete": "Delete",
"configure": "Configure",
- "networkError": "Network error",
"responseTime": "Response time",
"ms": "ms",
"bar": "Bar",
@@ -132,7 +135,6 @@
"country": "COUNTRY",
"city": "CITY",
"response": "RESPONSE",
- "checkConnection": "Please check your connection",
"passwordreset": "Password Reset",
"authRegisterStepOnePersonalDetails": "Enter your personal details",
"authCheckEmailOpenEmailButton": "Open email app",
diff --git a/client/src/locales/es.json b/client/src/locales/es.json
index 2f76a6c93..722833d99 100644
--- a/client/src/locales/es.json
+++ b/client/src/locales/es.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "",
+ "checkConnection": ""
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "",
"delete": "",
"configure": "",
- "networkError": "",
"responseTime": "",
"ms": "",
"bar": "",
@@ -136,7 +139,6 @@
"country": "",
"city": "",
"response": "",
- "checkConnection": "",
"passwordreset": "",
"authRegisterStepOnePersonalDetails": "",
"authCheckEmailOpenEmailButton": "",
diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json
index 463665ef5..16517778a 100644
--- a/client/src/locales/fi.json
+++ b/client/src/locales/fi.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "Verkkovirhe",
+ "checkConnection": "Tarkista yhteytesi"
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "Nyt",
"delete": "Poista",
"configure": "Määritä",
- "networkError": "Verkkovirhe",
"responseTime": "Vasteaika",
"ms": "ms",
"bar": "Palkki",
@@ -136,7 +139,6 @@
"country": "MAA",
"city": "KAUPUNKI",
"response": "Vastaus",
- "checkConnection": "Tarkista yhteytesi",
"passwordreset": "Salasanan nollaus",
"authRegisterStepOnePersonalDetails": "Syötä henkilökohtaiset tietosi",
"authCheckEmailOpenEmailButton": "Avaa sähköpostisovellus",
diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json
index b430ea903..4acde5888 100644
--- a/client/src/locales/fr.json
+++ b/client/src/locales/fr.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "",
+ "checkConnection": "Vérifiez votre connexion"
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "",
"delete": "Supprimer",
"configure": "",
- "networkError": "",
"responseTime": "",
"ms": "",
"bar": "",
@@ -136,7 +139,6 @@
"country": "PAYS",
"city": "VILLE",
"response": "",
- "checkConnection": "Vérifiez votre connexion",
"passwordreset": "",
"authRegisterStepOnePersonalDetails": "Saisissez vos infos",
"authCheckEmailOpenEmailButton": "Ouvrir l'appli mail",
diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json
index 273e40d67..25f14086e 100644
--- a/client/src/locales/pt-BR.json
+++ b/client/src/locales/pt-BR.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "Erro de rede",
+ "checkConnection": "Verifique sua conexão"
}
},
"errorPages": {
@@ -127,7 +131,6 @@
"now": "Agora",
"delete": "Deletar",
"configure": "Configurar",
- "networkError": "Erro de rede",
"responseTime": "Tempo de resposta",
"ms": "ms",
"bar": "Bar",
@@ -135,7 +138,6 @@
"country": "PAÍS",
"city": "CIDADE",
"response": "RESPOSTA",
- "checkConnection": "Verifique sua conexão",
"passwordreset": "Redefinição de senha",
"authRegisterStepOnePersonalDetails": "Insira seus dados pessoais",
"authCheckEmailOpenEmailButton": "Abra o aplicativo de e-mail",
diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json
index facd85cb3..ae83dc57a 100644
--- a/client/src/locales/ru.json
+++ b/client/src/locales/ru.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "Ошибка сети",
+ "checkConnection": "Пожалуйста, проверьте ваше соединение"
}
},
"errorPages": {
@@ -124,7 +128,6 @@
"now": "Сейчас",
"delete": "Удалить",
"configure": "Настроить",
- "networkError": "Ошибка сети",
"responseTime": "Время ответа:",
"ms": "мс",
"bar": "Bar",
@@ -132,7 +135,6 @@
"country": "СТРАНА",
"city": "ГОРОД",
"response": "ОТВЕТ",
- "checkConnection": "Пожалуйста, проверьте ваше соединение",
"passwordreset": "Сброс пароля",
"authRegisterStepOnePersonalDetails": "Введите свои личные данные",
"authCheckEmailOpenEmailButton": "Откройте приложение почты",
diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json
index c7a0d300a..59e911118 100644
--- a/client/src/locales/tr.json
+++ b/client/src/locales/tr.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "Ağ hatası",
+ "checkConnection": "Lütfen bağlantınızı kontrol edin"
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "Şimdi",
"delete": "Sil",
"configure": "Yapılandır",
- "networkError": "Ağ hatası",
"responseTime": "Yanıt süresi:",
"ms": "ms",
"bar": "Çubuk",
@@ -136,7 +139,6 @@
"country": "ÜLKE",
"city": "ŞEHİR",
"response": "YANIT",
- "checkConnection": "Lütfen bağlantınızı kontrol edin",
"passwordreset": "Parola Sıfırlama",
"authRegisterStepOnePersonalDetails": "Kişisel bilgilerinizi girin",
"authCheckEmailOpenEmailButton": "Eposta uygulamasını aç",
diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json
index ff48a0ddc..98fed65ef 100644
--- a/client/src/locales/zh-TW.json
+++ b/client/src/locales/zh-TW.json
@@ -4,6 +4,10 @@
"monitoringAgentName": "Capture",
"buttons": {
"toggleTheme": ""
+ },
+ "toasts": {
+ "networkError": "",
+ "checkConnection": ""
}
},
"errorPages": {
@@ -128,7 +132,6 @@
"now": "",
"delete": "",
"configure": "",
- "networkError": "",
"responseTime": "",
"ms": "",
"bar": "",
@@ -136,7 +139,6 @@
"country": "",
"city": "",
"response": "",
- "checkConnection": "",
"passwordreset": "",
"authRegisterStepOnePersonalDetails": "",
"authCheckEmailOpenEmailButton": "",
From 3ac0eb212847afb09b7cccff0d289e30919649f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 21:44:04 +0200
Subject: [PATCH 07/11] refactor: Simplify client-side email validation
We don't need to implement custom check for lowercase, as it's
been already implemented in joi library. Also we don't need to
convert email to lowercase twice (via onChange and onInput event
handlers), onChange is completely sufficient and as it's just
before form validation, it's the better one.
---
client/src/Pages/Auth/Login/Components/EmailStep.jsx | 1 -
client/src/Validation/validation.js | 8 +-------
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/client/src/Pages/Auth/Login/Components/EmailStep.jsx b/client/src/Pages/Auth/Login/Components/EmailStep.jsx
index 45babead1..20e8d6bfb 100644
--- a/client/src/Pages/Auth/Login/Components/EmailStep.jsx
+++ b/client/src/Pages/Auth/Login/Components/EmailStep.jsx
@@ -55,7 +55,6 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => {
placeholder="jordan.ellis@domain.com"
autoComplete="email"
value={form.email}
- onInput={(e) => (e.target.value = e.target.value.toLowerCase())}
onChange={onChange}
error={errors.email ? true : false}
helperText={errors.email ? t(errors.email) : ""}
diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js
index d94f7c49a..b79d4c824 100644
--- a/client/src/Validation/validation.js
+++ b/client/src/Validation/validation.js
@@ -71,13 +71,7 @@ const credentials = joi.object({
.string()
.trim()
.email({ tlds: { allow: false } })
- .custom((value, helpers) => {
- const lowercasedValue = value.toLowerCase();
- if (value !== lowercasedValue) {
- return helpers.message("Email must be in lowercase");
- }
- return lowercasedValue;
- })
+ .lowercase()
.messages({
"string.empty": "authRegisterEmailRequired",
"string.email": "authRegisterEmailInvalid",
From 74915f6840be8816f3233da65a858abe2eb2fad8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sat, 7 Jun 2025 22:52:41 +0200
Subject: [PATCH 08/11] fix: Strict password validation in login form
Strict password validation is for registration, change password,
reset password and similar forms. In login form, we don't want
to interrupt user with unnecessary validation as it's completely
irrelevant what they actually entered. The one thing it's about
is the correctness of the email and the password.
Disabling strict validation for password is a kind of security
through obscurity, which could filter some untargeted attempts
for trying passwords by bots. If the bot immediatelly receives
notes about the requirements, it has more imformation for better
attacks.
---
.../TabPanels/Account/PasswordPanel.jsx | 6 ++--
.../TabPanels/Account/ProfilePanel.jsx | 4 +--
.../TabPanels/Account/TeamPanel.jsx | 6 ++--
client/src/Pages/Auth/ForgotPassword.jsx | 6 ++--
client/src/Pages/Auth/Login/Login.jsx | 8 +++---
client/src/Pages/Auth/Register/Register.jsx | 6 ++--
client/src/Pages/Auth/SetNewPassword.jsx | 4 +--
.../Pages/Auth/hooks/useValidatePassword.jsx | 4 +--
client/src/Validation/validation.js | 28 +++++++++++++++----
server/validation/joi.js | 12 +++-----
10 files changed, 49 insertions(+), 35 deletions(-)
diff --git a/client/src/Components/TabPanels/Account/PasswordPanel.jsx b/client/src/Components/TabPanels/Account/PasswordPanel.jsx
index 88604c72b..84d16e8b0 100644
--- a/client/src/Components/TabPanels/Account/PasswordPanel.jsx
+++ b/client/src/Components/TabPanels/Account/PasswordPanel.jsx
@@ -4,7 +4,7 @@ import { useTheme } from "@emotion/react";
import { Box, Stack, Typography, Button } from "@mui/material";
import { PasswordEndAdornment } from "../../Inputs/TextInput/Adornments";
import TextInput from "../../Inputs/TextInput";
-import { credentials } from "../../../Validation/validation";
+import { newOrChangedCredentials } from "../../../Validation/validation";
import Alert from "../../Alert";
import { update } from "../../../Features/Auth/authSlice";
import { useDispatch, useSelector } from "react-redux";
@@ -61,7 +61,7 @@ const PasswordPanel = () => {
[name]: true,
};
- const validation = credentials.validate(
+ const validation = newOrChangedCredentials.validate(
{ ...updatedData },
{ abortEarly: false, context: { password: updatedData.newPassword } }
);
@@ -79,7 +79,7 @@ const PasswordPanel = () => {
const handleSubmit = async (event) => {
event.preventDefault();
- const { error } = credentials.validate(localData, {
+ const { error } = newOrChangedCredentials.validate(localData, {
abortEarly: false,
context: { password: localData.newPassword },
});
diff --git a/client/src/Components/TabPanels/Account/ProfilePanel.jsx b/client/src/Components/TabPanels/Account/ProfilePanel.jsx
index 53a8a8d77..46a2bdb79 100644
--- a/client/src/Components/TabPanels/Account/ProfilePanel.jsx
+++ b/client/src/Components/TabPanels/Account/ProfilePanel.jsx
@@ -5,7 +5,7 @@ import { Box, Button, Divider, Stack, Typography } from "@mui/material";
import Avatar from "../../Avatar";
import TextInput from "../../Inputs/TextInput";
import ImageUpload from "../../Inputs/ImageUpload";
-import { credentials } from "../../../Validation/validation";
+import { newOrChangedCredentials } from "../../../Validation/validation";
import { useDispatch, useSelector } from "react-redux";
import { clearAuthState, deleteUser, update } from "../../../Features/Auth/authSlice";
import { clearUptimeMonitorState } from "../../../Features/UptimeMonitors/uptimeMonitorsSlice";
@@ -58,7 +58,7 @@ const ProfilePanel = () => {
[name]: value,
}));
- validateField({ [name]: value }, credentials, name);
+ validateField({ [name]: value }, newOrChangedCredentials, name);
};
// Validates input against provided schema and updates error state
diff --git a/client/src/Components/TabPanels/Account/TeamPanel.jsx b/client/src/Components/TabPanels/Account/TeamPanel.jsx
index c29762233..52e3ea9ee 100644
--- a/client/src/Components/TabPanels/Account/TeamPanel.jsx
+++ b/client/src/Components/TabPanels/Account/TeamPanel.jsx
@@ -4,7 +4,7 @@ import { Button, ButtonGroup, Stack, Typography } from "@mui/material";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import TextInput from "../../Inputs/TextInput";
-import { credentials } from "../../../Validation/validation";
+import { newOrChangedCredentials } from "../../../Validation/validation";
import { networkService } from "../../../main";
import { createToast } from "../../../Utils/toastUtils";
import Select from "../../Inputs/Select";
@@ -115,7 +115,7 @@ const TeamPanel = () => {
email: newEmail,
}));
- const validation = credentials.validate({ email: newEmail }, { abortEarly: false });
+ const validation = newOrChangedCredentials.validate({ email: newEmail }, { abortEarly: false });
setErrors((prev) => {
const updatedErrors = { ...prev };
@@ -142,7 +142,7 @@ const TeamPanel = () => {
if (!toInvite.role.includes("user") || !toInvite.role.includes("admin"))
setToInvite((prev) => ({ ...prev, role: ["user"] }));
- const { error } = credentials.validate(
+ const { error } = newOrChangedCredentials.validate(
{ email: toInvite.email },
{
abortEarly: false,
diff --git a/client/src/Pages/Auth/ForgotPassword.jsx b/client/src/Pages/Auth/ForgotPassword.jsx
index 344bddac1..47b8fc3bf 100644
--- a/client/src/Pages/Auth/ForgotPassword.jsx
+++ b/client/src/Pages/Auth/ForgotPassword.jsx
@@ -4,7 +4,7 @@ import { createToast } from "../../Utils/toastUtils";
import { useDispatch, useSelector } from "react-redux";
import { forgotPassword } from "../../Features/Auth/authSlice";
import { useEffect, useState } from "react";
-import { credentials } from "../../Validation/validation";
+import { newOrChangedCredentials } from "../../Validation/validation";
import { useNavigate } from "react-router-dom";
import TextInput from "../../Components/Inputs/TextInput";
import Logo from "../../assets/icons/checkmate-icon.svg?react";
@@ -35,7 +35,7 @@ const ForgotPassword = () => {
const handleSubmit = async (event) => {
event.preventDefault();
- const { error } = credentials.validate(form, { abortEarly: false });
+ const { error } = newOrChangedCredentials.validate(form, { abortEarly: false });
if (error) {
// validation errors
@@ -75,7 +75,7 @@ const ForgotPassword = () => {
const { value } = event.target;
setForm({ email: value });
- const { error } = credentials.validate({ email: value }, { abortEarly: false });
+ const { error } = newOrChangedCredentials.validate({ email: value }, { abortEarly: false });
if (error) setErrors({ email: error.details[0].message });
else delete errors.email;
diff --git a/client/src/Pages/Auth/Login/Login.jsx b/client/src/Pages/Auth/Login/Login.jsx
index c81f0b892..f3b2253d2 100644
--- a/client/src/Pages/Auth/Login/Login.jsx
+++ b/client/src/Pages/Auth/Login/Login.jsx
@@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { Box, Stack, Typography } from "@mui/material";
import { useTheme } from "@emotion/react";
-import { credentials } from "../../../Validation/validation";
+import { loginCredentials } from "../../../Validation/validation";
import { login } from "../../../Features/Auth/authSlice";
import { useDispatch, useSelector } from "react-redux";
import { createToast } from "../../../Utils/toastUtils";
@@ -59,7 +59,7 @@ const Login = () => {
[name]: lowerCasedValue,
}));
- const { error } = credentials.validate(
+ const { error } = loginCredentials.validate(
{ [name]: lowerCasedValue },
{ abortEarly: false }
);
@@ -76,7 +76,7 @@ const Login = () => {
event.preventDefault();
if (step === 0) {
- const { error } = credentials.validate(
+ const { error } = loginCredentials.validate(
{ email: form.email },
{ abortEarly: false }
);
@@ -91,7 +91,7 @@ const Login = () => {
setStep(1);
}
} else if (step === 1) {
- const { error } = credentials.validate(form, { abortEarly: false });
+ const { error } = loginCredentials.validate(form, { abortEarly: false });
if (error) {
// validation errors
diff --git a/client/src/Pages/Auth/Register/Register.jsx b/client/src/Pages/Auth/Register/Register.jsx
index fd3f20cd9..49997e8cb 100644
--- a/client/src/Pages/Auth/Register/Register.jsx
+++ b/client/src/Pages/Auth/Register/Register.jsx
@@ -8,7 +8,7 @@ import { StepOne } from "./StepOne";
import { StepTwo } from "./StepTwo";
import { StepThree } from "./StepThree";
import { networkService } from "../../../main";
-import { credentials } from "../../../Validation/validation";
+import { newOrChangedCredentials } from "../../../Validation/validation";
import { createToast } from "../../../Utils/toastUtils";
import { register } from "../../../Features/Auth/authSlice";
import Background from "../../../assets/Images/background-grid.svg?react";
@@ -171,7 +171,7 @@ const Register = ({ isSuperAdmin }) => {
* @returns {Object | undefined} - Returns the validation error object if there are validation errors; otherwise, `undefined`.
*/
const validateForm = (data, options = {}) => {
- const { error } = credentials.validate(data, {
+ const { error } = newOrChangedCredentials.validate(data, {
abortEarly: false,
...options,
});
@@ -271,7 +271,7 @@ const Register = ({ isSuperAdmin }) => {
[name]: lowerCasedValue,
}));
- const { error } = credentials.validate(
+ const { error } = newOrChangedCredentials.validate(
{ [name]: lowerCasedValue },
{ abortEarly: false, context: { password: form.password } }
);
diff --git a/client/src/Pages/Auth/SetNewPassword.jsx b/client/src/Pages/Auth/SetNewPassword.jsx
index 2d0aa01bc..21dfe2d39 100644
--- a/client/src/Pages/Auth/SetNewPassword.jsx
+++ b/client/src/Pages/Auth/SetNewPassword.jsx
@@ -6,7 +6,7 @@ import { useTheme } from "@emotion/react";
import { Box, Stack, Typography, Button } from "@mui/material";
import { setNewPassword } from "../../Features/Auth/authSlice";
import { createToast } from "../../Utils/toastUtils";
-import { credentials } from "../../Validation/validation";
+import { newOrChangedCredentials } from "../../Validation/validation";
import Check from "../../Components/Check/Check";
import TextInput from "../../Components/Inputs/TextInput";
import { PasswordEndAdornment } from "../../Components/Inputs/TextInput/Adornments";
@@ -34,7 +34,7 @@ const SetNewPassword = () => {
const handleSubmit = async (e) => {
e.preventDefault();
- const { error } = credentials.validate(form, {
+ const { error } = newOrChangedCredentials.validate(form, {
abortEarly: false,
context: { password: form.password },
});
diff --git a/client/src/Pages/Auth/hooks/useValidatePassword.jsx b/client/src/Pages/Auth/hooks/useValidatePassword.jsx
index b49d0944b..102d8d73e 100644
--- a/client/src/Pages/Auth/hooks/useValidatePassword.jsx
+++ b/client/src/Pages/Auth/hooks/useValidatePassword.jsx
@@ -1,5 +1,5 @@
import { useMemo, useState } from "react";
-import { credentials } from "../../../Validation/validation";
+import { newOrChangedCredentials } from "../../../Validation/validation";
const getFeedbackStatus = (form, errors, field, criteria) => {
const fieldErrors = errors[field];
@@ -36,7 +36,7 @@ function useValidatePassword() {
validateValue.password = form.password;
}
- const { error } = credentials.validate(validateValue, validateOptions);
+ const { error } = newOrChangedCredentials.validate(validateValue, validateOptions);
const errors = error?.details.map((error) => ({
path: error.path[0],
type: error.type,
diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js
index b79d4c824..acb05116e 100644
--- a/client/src/Validation/validation.js
+++ b/client/src/Validation/validation.js
@@ -27,7 +27,7 @@ const lastnameSchema = joi
"Surname must contain only letters, spaces, apostrophes, or hyphens",
});
-const passwordSchema = joi
+const newPasswordSchema = joi
.string()
.trim()
.min(8)
@@ -64,7 +64,7 @@ const passwordSchema = joi
special: "Password must contain at least one special character",
});
-const credentials = joi.object({
+const newOrChangedCredentials = joi.object({
firstName: nameSchema,
lastName: lastnameSchema,
email: joi
@@ -76,8 +76,8 @@ const credentials = joi.object({
"string.empty": "authRegisterEmailRequired",
"string.email": "authRegisterEmailInvalid",
}),
- password: passwordSchema,
- newPassword: passwordSchema,
+ password: newPasswordSchema,
+ newPassword: newPasswordSchema,
confirm: joi
.string()
.trim()
@@ -97,6 +97,23 @@ const credentials = joi.object({
inviteToken: joi.string().allow(""),
});
+const loginCredentials = joi.object({
+ email: joi
+ .string()
+ .trim()
+ .email({ tlds: { allow: false } })
+ .lowercase()
+ .messages({
+ "string.empty": "authRegisterEmailRequired",
+ "string.email": "authRegisterEmailInvalid",
+ }),
+ password: joi
+ .string()
+ .messages({
+ "string.empty": "Please enter your password",
+ }),
+});
+
const monitorValidation = joi.object({
url: joi.when("type", {
is: "docker",
@@ -391,7 +408,8 @@ const infrastructureMonitorValidation = joi.object({
});
export {
- credentials,
+ newOrChangedCredentials,
+ loginCredentials,
imageValidation,
monitorValidation,
settingsValidation,
diff --git a/server/validation/joi.js b/server/validation/joi.js
index 3efd202b5..9a3c61a7c 100755
--- a/server/validation/joi.js
+++ b/server/validation/joi.js
@@ -26,14 +26,10 @@ const loginValidation = joi.object({
.string()
.email()
.required()
- .custom((value, helpers) => {
- const lowercasedValue = value.toLowerCase();
- if (value !== lowercasedValue) {
- return helpers.message("Email must be in lowercase");
- }
- return lowercasedValue;
- }),
- password: joi.string().min(8).required().pattern(passwordPattern),
+ .lowercase(),
+ password: joi
+ .string()
+ .required(),
});
const nameValidation = joi
.string()
From 00f3941ca62d765fca00e79e08b2f7a0bfbb1b42 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sun, 8 Jun 2025 04:28:41 +0200
Subject: [PATCH 09/11] i18n: Refactor, fix and clean up auth forms
---
.../TabPanels/Account/ProfilePanel.jsx | 2 +-
client/src/Pages/Auth/CheckEmail.jsx | 96 ++++----
client/src/Pages/Auth/ForgotPassword.jsx | 50 +++--
.../Pages/Auth/Login/Components/EmailStep.jsx | 12 +-
.../Login/Components/ForgotPasswordLabel.jsx | 26 ++-
.../Auth/Login/Components/PasswordStep.jsx | 12 +-
client/src/Pages/Auth/Login/Login.jsx | 54 ++---
.../src/Pages/Auth/NewPasswordConfirmed.jsx | 34 +--
client/src/Pages/Auth/Register/Register.jsx | 52 +++--
.../src/Pages/Auth/Register/StepOne/index.jsx | 28 ++-
.../Pages/Auth/Register/StepThree/index.jsx | 52 +++--
.../src/Pages/Auth/Register/StepTwo/index.jsx | 29 ++-
client/src/Pages/Auth/SetNewPassword.jsx | 80 ++++---
client/src/Validation/validation.js | 40 ++--
client/src/locales/cs.json | 204 +++++++++++++----
client/src/locales/de.json | 205 ++++++++++++++----
client/src/locales/en.json | 205 ++++++++++++++----
client/src/locales/es.json | 205 ++++++++++++++----
client/src/locales/fi.json | 205 ++++++++++++++----
client/src/locales/fr.json | 205 ++++++++++++++----
client/src/locales/pt-BR.json | 205 ++++++++++++++----
client/src/locales/ru.json | 205 ++++++++++++++----
client/src/locales/tr.json | 205 ++++++++++++++----
client/src/locales/zh-TW.json | 205 ++++++++++++++----
24 files changed, 1899 insertions(+), 717 deletions(-)
diff --git a/client/src/Components/TabPanels/Account/ProfilePanel.jsx b/client/src/Components/TabPanels/Account/ProfilePanel.jsx
index 46a2bdb79..ad6d15b98 100644
--- a/client/src/Components/TabPanels/Account/ProfilePanel.jsx
+++ b/client/src/Components/TabPanels/Account/ProfilePanel.jsx
@@ -240,7 +240,7 @@ const ProfilePanel = () => {
gap={SPACING_GAP}
>
- {t("email")}
+ {t("auth.common.inputs.email.label")}
{
const toastFail = [
{
- body: "Email not found.",
+ body: t("auth.forgotPassword.toasts.emailNotFound"),
},
{
- body: "Redirecting in 3...",
+ body: t("auth.forgotPassword.toasts.redirect").replace("", "3"),
},
{
- body: "Redirecting in 2...",
+ body: t("auth.forgotPassword.toasts.redirect").replace("", "2"),
},
{
- body: "Redirecting in 1...",
+ body: t("auth.forgotPassword.toasts.redirect").replace("", "1"),
},
];
@@ -62,19 +62,19 @@ const CheckEmail = () => {
const action = await dispatch(forgotPassword(form));
if (action.payload.success) {
createToast({
- body: `Instructions sent to ${form.email}.`,
+ body: t("auth.forgotPassword.toasts.sent").replace("", form.email),
});
setDisabled(false);
} else {
if (action.payload) {
// dispatch errors
createToast({
- body: action.payload.msg,
+ body: action.payload.msg, // FIXME: Potential untranslated string
});
} else {
// unknown errors
createToast({
- body: "Unknown error.",
+ body: t("common.toasts.unknownError"),
});
}
}
@@ -160,18 +160,24 @@ const CheckEmail = () => {
svgHeight={24}
mb={theme.spacing(4)}
>
-
+
- {t("authCheckEmailTitle")}
+ {t("auth.forgotPassword.heading")}
- {t("authCheckEmailDescription")}{" "}
-
- {email || "username@email.com"}
-
+
+ {email || "username@email.com"}
+
+ ),
+ }}
+ />
- {t("authCheckEmailDidntReceiveEmail")}{" "}
-
+ ),
}}
- >
- {t("authCheckEmailClickToResend")}
-
+ />
@@ -207,15 +217,21 @@ const CheckEmail = () => {
textAlign="center"
p={theme.spacing(12)}
>
- {t("goBackTo")}
-
- {t("authLoginTitle")}
+
+
+ ),
+ }}
+ />
diff --git a/client/src/Pages/Auth/ForgotPassword.jsx b/client/src/Pages/Auth/ForgotPassword.jsx
index 47b8fc3bf..3ab6913dd 100644
--- a/client/src/Pages/Auth/ForgotPassword.jsx
+++ b/client/src/Pages/Auth/ForgotPassword.jsx
@@ -11,7 +11,7 @@ import Logo from "../../assets/icons/checkmate-icon.svg?react";
import Key from "../../assets/icons/key.svg?react";
import Background from "../../assets/Images/background-grid.svg?react";
import IconBox from "../../Components/IconBox";
-import { useTranslation } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
import "./index.css";
const ForgotPassword = () => {
@@ -41,8 +41,8 @@ const ForgotPassword = () => {
// validation errors
const err =
error.details && error.details.length > 0
- ? error.details[0].message
- : "Error validating data.";
+ ? error.details[0].message // FIXME: Possibly untranslated string
+ : t("auth.common.errors.validation");
setErrors({ email: err });
createToast({
body: err,
@@ -53,18 +53,18 @@ const ForgotPassword = () => {
sessionStorage.setItem("email", form.email);
navigate("/check-email");
createToast({
- body: `Instructions sent to ${form.email}.`,
+ body: t("auth.forgotPassword.toasts.sent").replace("", form.email),
});
} else {
if (action.payload) {
// dispatch errors
createToast({
- body: action.payload.msg,
+ body: action.payload.msg, // FIXME: Potentially untranslated string
});
} else {
// unknown errors
createToast({
- body: "Unknown error.",
+ body: t("common.toasts.unknownError"),
});
}
}
@@ -162,11 +162,11 @@ const ForgotPassword = () => {
svgHeight={24}
mb={theme.spacing(4)}
>
-
+
- {t("authForgotPasswordTitle")}
- {t("authForgotPasswordInstructions")}
+ {t("auth.forgotPassword.heading")}
+ {t("auth.forgotPassword.subheadings.stepOne")}
{
@@ -207,15 +207,21 @@ const ForgotPassword = () => {
textAlign="center"
p={theme.spacing(12)}
>
- {t("goBackTo")}
-
- {t("authLoginTitle")}
+
+
+ ),
+ }}
+ />
diff --git a/client/src/Pages/Auth/Login/Components/EmailStep.jsx b/client/src/Pages/Auth/Login/Components/EmailStep.jsx
index 20e8d6bfb..f3f56ec26 100644
--- a/client/src/Pages/Auth/Login/Components/EmailStep.jsx
+++ b/client/src/Pages/Auth/Login/Components/EmailStep.jsx
@@ -35,8 +35,8 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => {
position="relative"
>
- {t("authLoginTitle")}
- {t("authLoginEnterEmail")}
+ {t("auth.login.heading")}
+ {t("auth.login.subheadings.stepOne")}
{
{
},
}}
>
- {t("continue")}
+ {t("auth.common.navigation.continue")}
diff --git a/client/src/Pages/Auth/Login/Components/ForgotPasswordLabel.jsx b/client/src/Pages/Auth/Login/Components/ForgotPasswordLabel.jsx
index a9cb17d7c..5fc2430c7 100644
--- a/client/src/Pages/Auth/Login/Components/ForgotPasswordLabel.jsx
+++ b/client/src/Pages/Auth/Login/Components/ForgotPasswordLabel.jsx
@@ -1,7 +1,7 @@
import { Box, Typography, useTheme } from "@mui/material";
import PropTypes from "prop-types";
import { useNavigate } from "react-router";
-import { useTranslation } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
const ForgotPasswordLabel = ({ email, errorEmail }) => {
const theme = useTheme();
@@ -22,16 +22,20 @@ const ForgotPasswordLabel = ({ email, errorEmail }) => {
display="inline-block"
color={theme.palette.primary.main}
>
- {t("authForgotPasswordTitle")}
-
-
- {t("authForgotPasswordResetPassword")}
+
+ ),
+ }}
+ />
);
diff --git a/client/src/Pages/Auth/Login/Components/PasswordStep.jsx b/client/src/Pages/Auth/Login/Components/PasswordStep.jsx
index 1fbdf93f0..5aa56fbb0 100644
--- a/client/src/Pages/Auth/Login/Components/PasswordStep.jsx
+++ b/client/src/Pages/Auth/Login/Components/PasswordStep.jsx
@@ -38,8 +38,8 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
textAlign="center"
>
- {t("authLoginTitle")}
- {t("authLoginEnterPassword")}
+ {t("auth.login.heading")}
+ {t("auth.login.subheadings.stepTwo")}
{
}
/>
@@ -95,7 +95,7 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
}}
>
- {t("commonBack")}{" "}
+ {t("auth.common.navigation.back")}{" "}
diff --git a/client/src/Pages/Auth/Login/Login.jsx b/client/src/Pages/Auth/Login/Login.jsx
index f3b2253d2..d2be3af35 100644
--- a/client/src/Pages/Auth/Login/Login.jsx
+++ b/client/src/Pages/Auth/Login/Login.jsx
@@ -15,7 +15,7 @@ import PasswordStep from "./Components/PasswordStep";
import ThemeSwitch from "../../../Components/ThemeSwitch";
import ForgotPasswordLabel from "./Components/ForgotPasswordLabel";
import LanguageSelector from "../../../Components/LanguageSelector";
-import { useTranslation } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
const DEMO = import.meta.env.VITE_APP_DEMO;
@@ -83,8 +83,8 @@ const Login = () => {
if (error) {
const errorMessage = error.details[0].message;
const translatedMessage = errorMessage.startsWith("auth")
- ? t(errorMessage)
- : errorMessage;
+ ? t(errorMessage) // Localization keys are in validation.js
+ : errorMessage; // FIXME: Potential untranslated string
setErrors((prev) => ({ ...prev, email: translatedMessage }));
createToast({ body: translatedMessage });
} else {
@@ -104,31 +104,31 @@ const Login = () => {
body:
error.details && error.details.length > 0
? error.details[0].message.startsWith("auth")
- ? t(error.details[0].message)
- : error.details[0].message
- : t("Error validating data."),
+ ? t(error.details[0].message) // Localization keys are in validation.js
+ : error.details[0].message // FIXME: Potential untranslated string
+ : t("auth.common.errors.validation"),
});
} else {
const action = await dispatch(login(form));
if (action.payload.success) {
navigate("/uptime");
createToast({
- body: t("welcomeBack"),
+ body: t("auth.login.toasts.success"),
});
} else {
if (action.payload) {
if (action.payload.msg === "Incorrect password")
setErrors({
- password: "The password you provided does not match our records",
+ password: t("auth.common.fields.password.errors.incorrect"),
});
// dispatch errors
createToast({
- body: action.payload.msg,
+ body: t("auth.login.toasts.incorrectPassword"),
});
} else {
// unknown errors
createToast({
- body: "Unknown error.",
+ body: t("common.toasts.unknownError"),
});
}
}
@@ -237,21 +237,25 @@ const Login = () => {
display="inline-block"
color={theme.palette.primary.main}
>
- {t("doNotHaveAccount")}
-
- navigate("/register")}
- >
- {t("registerHere")}
+ navigate("/register")}
+ />
+ ),
+ }}
+ />
diff --git a/client/src/Pages/Auth/NewPasswordConfirmed.jsx b/client/src/Pages/Auth/NewPasswordConfirmed.jsx
index f1980e23b..aba1fefea 100644
--- a/client/src/Pages/Auth/NewPasswordConfirmed.jsx
+++ b/client/src/Pages/Auth/NewPasswordConfirmed.jsx
@@ -8,7 +8,7 @@ import Background from "../../assets/Images/background-grid.svg?react";
import ConfirmIcon from "../../assets/icons/check-outlined.svg?react";
import Logo from "../../assets/icons/checkmate-icon.svg?react";
import IconBox from "../../Components/IconBox";
-import { useTranslation } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
import "./index.css";
const NewPasswordConfirmed = () => {
@@ -96,11 +96,11 @@ const NewPasswordConfirmed = () => {
svgHeight={24}
mb={theme.spacing(4)}
>
-
+
- {t("passwordreset")}
- {t("authNewPasswordConfirmed")}
+ {t("auth.forgotPassword.heading")}
+ {t("auth.forgotPassword.subheadings.stepFour")}
@@ -118,15 +118,21 @@ const NewPasswordConfirmed = () => {
textAlign="center"
p={theme.spacing(12)}
>
- {t("goBackTo")}
-
- {t("authLoginTitle")}
+
+
+ ),
+ }}
+ />
diff --git a/client/src/Pages/Auth/Register/Register.jsx b/client/src/Pages/Auth/Register/Register.jsx
index 49997e8cb..390aa6e36 100644
--- a/client/src/Pages/Auth/Register/Register.jsx
+++ b/client/src/Pages/Auth/Register/Register.jsx
@@ -35,11 +35,15 @@ const LandingPage = ({ isSuperAdmin, onSignup }) => {
textAlign="center"
>
- {t("signUp")}
+
+ {isSuperAdmin
+ ? t("auth.registration.heading.superAdmin")
+ : t("auth.registration.heading.user")}
+
{isSuperAdmin
- ? t("authRegisterCreateSuperAdminAccount")
- : t("authRegisterCreateAccount")}
+ ? t("auth.registration.description.superAdmin")
+ : t("auth.registration.description.user")}
@@ -62,13 +66,15 @@ const LandingPage = ({ isSuperAdmin, onSignup }) => {
}}
>
- {t("authRegisterSignUpWithEmail")}
+ {isSuperAdmin
+ ? t("auth.registration.gettingStartedButton.superAdmin")
+ : t("auth.registration.gettingStartedButton.user")}
{
newErrors[err.path[0]] = err.message;
});
setErrors(newErrors);
- createToast({ body: error.details[0].message || "Error validating data." });
+ // Localization keys are in validation.js
+ createToast({ body: t(error.details[0].message || "auth.common.errors.validation") });
};
const handleStepOne = async (e) => {
@@ -246,7 +253,7 @@ const Register = ({ isSuperAdmin }) => {
const authToken = action.payload.data;
navigate("/uptime");
createToast({
- body: "Welcome! Your account was created successfully.",
+ body: t("auth.registration.toasts.success"),
});
} else {
if (action.payload) {
@@ -255,7 +262,7 @@ const Register = ({ isSuperAdmin }) => {
});
} else {
createToast({
- body: "Unknown error.",
+ body: t("common.toasts.unknownError"),
});
}
}
@@ -346,6 +353,7 @@ const Register = ({ isSuperAdmin }) => {
/>
) : step === 1 ? (
{
/>
) : step === 2 ? (
{
/>
) : step === 3 ? (
{
p={theme.spacing(12)}
>
- {t("authRegisterAlreadyHaveAccount")}
-
- {
- navigate("/login");
- }}
- sx={{ userSelect: "none", color: theme.palette.accent.main }}
- >
- {t("authRegisterLoginLink")}
+ {
+ navigate("/login");
+ }}
+ sx={{ userSelect: "none", color: theme.palette.accent.main }}
+ />
+ ),
+ }}
+ />
diff --git a/client/src/Pages/Auth/Register/StepOne/index.jsx b/client/src/Pages/Auth/Register/StepOne/index.jsx
index cb66f6704..575a9132f 100644
--- a/client/src/Pages/Auth/Register/StepOne/index.jsx
+++ b/client/src/Pages/Auth/Register/StepOne/index.jsx
@@ -7,6 +7,7 @@ import TextInput from "../../../../Components/Inputs/TextInput";
import { useTranslation } from "react-i18next";
StepOne.propTypes = {
+ isSuperAdmin: PropTypes.bool,
form: PropTypes.object,
errors: PropTypes.object,
onSubmit: PropTypes.func,
@@ -18,6 +19,7 @@ StepOne.propTypes = {
* Renders the first step of the sign up process.
*
* @param {Object} props
+ * @param {boolean} props.isSuperAdmin - Whether the user is creating and admin account
* @param {Object} props.form - Form state object.
* @param {Object} props.errors - Object containing form validation errors.
* @param {Function} props.onSubmit - Callback function to handle form submission.
@@ -26,7 +28,7 @@ StepOne.propTypes = {
* @returns {JSX.Element}
*/
-function StepOne({ form, errors, onSubmit, onChange, onBack }) {
+function StepOne({ isSuperAdmin, form, errors, onSubmit, onChange, onBack }) {
const theme = useTheme();
const inputRef = useRef(null);
const { t } = useTranslation();
@@ -45,8 +47,12 @@ function StepOne({ form, errors, onSubmit, onChange, onBack }) {
textAlign="center"
>
- {t("signUp")}
- {t("authRegisterStepOnePersonalDetails")}
+
+ {isSuperAdmin
+ ? t("auth.registration.heading.superAdmin")
+ : t("auth.registration.heading.user")}
+
+ {t("auth.registration.subheadings.stepOne")}
- {t("commonBack")}
+ {t("auth.common.navigation.back")}
diff --git a/client/src/Pages/Auth/Register/StepThree/index.jsx b/client/src/Pages/Auth/Register/StepThree/index.jsx
index 1af8a60dc..f34c7af7e 100644
--- a/client/src/Pages/Auth/Register/StepThree/index.jsx
+++ b/client/src/Pages/Auth/Register/StepThree/index.jsx
@@ -8,6 +8,7 @@ import Check from "../../../../Components/Check/Check";
import { useValidatePassword } from "../../hooks/useValidatePassword";
import { useTranslation } from "react-i18next";
StepThree.propTypes = {
+ isSuperAdmin: PropTypes.bool,
onSubmit: PropTypes.func,
onBack: PropTypes.func,
};
@@ -16,11 +17,12 @@ StepThree.propTypes = {
* Renders the third step of the sign up process.
*
* @param {Object} props
+ * @param {boolean} props.isSuperAdmin - Whether the user is creating and admin account
* @param {Function} props.onSubmit - Callback function to handle form submission.
* @param {Function} props.onBack - Callback function to handle "Back" button click.
* @returns {JSX.Element}
*/
-function StepThree({ onSubmit, onBack }) {
+function StepThree({ isSuperAdmin, onSubmit, onBack }) {
const theme = useTheme();
const inputRef = useRef(null);
const { t } = useTranslation();
@@ -39,8 +41,12 @@ function StepThree({ onSubmit, onBack }) {
textAlign="center"
>
- {t("signUp")}
- {t("createPassword")}
+
+ {isSuperAdmin
+ ? t("auth.registration.heading.superAdmin")
+ : t("auth.registration.heading.user")}
+
+ {t("auth.registration.subheadings.stepThree")}
@@ -141,7 +151,7 @@ function StepThree({ onSubmit, onBack }) {
}}
>
- {t("commonBack")}
+ {t("auth.common.navigation.back")}
diff --git a/client/src/Pages/Auth/Register/StepTwo/index.jsx b/client/src/Pages/Auth/Register/StepTwo/index.jsx
index 4fa0e8ebc..306a2b750 100644
--- a/client/src/Pages/Auth/Register/StepTwo/index.jsx
+++ b/client/src/Pages/Auth/Register/StepTwo/index.jsx
@@ -7,6 +7,7 @@ import TextInput from "../../../../Components/Inputs/TextInput";
import { useTranslation } from "react-i18next";
StepTwo.propTypes = {
+ isSuperAdmin: PropTypes.bool,
form: PropTypes.object,
errors: PropTypes.object,
onSubmit: PropTypes.func,
@@ -18,6 +19,7 @@ StepTwo.propTypes = {
* Renders the second step of the sign up process.
*
* @param {Object} props
+ * @param {boolean} props.isSuperAdmin - Whether the user is creating and admin account
* @param {Object} props.form - Form state object.
* @param {Object} props.errors - Object containing form validation errors.
* @param {Function} props.onSubmit - Callback function to handle form submission.
@@ -25,7 +27,7 @@ StepTwo.propTypes = {
* @param {Function} props.onBack - Callback function to handle "Back" button click.
* @returns {JSX.Element}
*/
-function StepTwo({ form, errors, onSubmit, onChange, onBack }) {
+function StepTwo({ isSuperAdmin, form, errors, onSubmit, onChange, onBack }) {
const theme = useTheme();
const inputRef = useRef(null);
const { t } = useTranslation();
@@ -43,8 +45,12 @@ function StepTwo({ form, errors, onSubmit, onChange, onBack }) {
textAlign="center"
>
- {t("signUp")}
- {t("enterEmail")}
+
+ {isSuperAdmin
+ ? t("auth.registration.heading.superAdmin")
+ : t("auth.registration.heading.user")}
+
+ {t("auth.registration.subheadings.stepTwo")}
(e.target.value = e.target.value.toLowerCase())}
onChange={onChange}
error={errors.email ? true : false}
- helperText={
- errors.email &&
- (errors.email.includes("required")
- ? t("authRegisterEmailRequired")
- : errors.email.includes("valid email")
- ? t("authRegisterEmailInvalid")
- : t(errors.email))
- }
+ helperText={t(errors.email)} // Localization keys are in validation.js
ref={inputRef}
/>
- {t("commonBack")}
+ {t("auth.common.navigation.back")}
diff --git a/client/src/Pages/Auth/SetNewPassword.jsx b/client/src/Pages/Auth/SetNewPassword.jsx
index 21dfe2d39..c2cd64b23 100644
--- a/client/src/Pages/Auth/SetNewPassword.jsx
+++ b/client/src/Pages/Auth/SetNewPassword.jsx
@@ -16,7 +16,7 @@ import Logo from "../../assets/icons/checkmate-icon.svg?react";
import Background from "../../assets/Images/background-grid.svg?react";
import "./index.css";
import { useValidatePassword } from "./hooks/useValidatePassword";
-import { useTranslation } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
const SetNewPassword = () => {
const navigate = useNavigate();
@@ -43,20 +43,20 @@ const SetNewPassword = () => {
createToast({
body:
error.details && error.details.length > 0
- ? error.details[0].message
- : "Error validating data.",
+ ? error.details[0].message // FIXME: Potential untranslated string
+ : t("auth.common.errors.validation"),
});
} else {
const action = await dispatch(setNewPassword({ token, form }));
if (action.payload.success) {
navigate("/new-password-confirmed");
createToast({
- body: "Your password was reset successfully.",
+ body: t("auth.forgotPassword.toasts.success"),
});
} else {
const errorMessage = action.payload
- ? action.payload.msg
- : "Unable to reset password. Please try again later or contact support.";
+ ? action.payload.msg // FIXME: Potential untranslated string
+ : t("auth.forgotPassword.toasts.error");
createToast({
body: errorMessage,
});
@@ -140,11 +140,11 @@ const SetNewPassword = () => {
svgHeight={24}
mb={theme.spacing(4)}
>
-
+
- {t("authSetNewPasswordTitle")}
- {t("authSetNewPasswordDescription")}
+ {t("auth.forgotPassword.heading")}
+ {t("auth.forgotPassword.subheadings.stepThree")}
{
id={passwordId}
type="password"
name="password"
- label={t("commonPassword")}
+ label={t("auth.common.inputs.password.label")}
isRequired={true}
placeholder="••••••••"
value={form.password}
onChange={handleChange}
error={errors.password ? true : false}
- helperText={errors.password}
+ helperText={errors.password === "auth.common.inputs.password.errors.empty"
+ ? t(errors.password)
+ : ""} // Other errors are related to required password conditions and are visualized below the input
endAdornment={}
/>
@@ -185,13 +187,13 @@ const SetNewPassword = () => {
id={confirmPasswordId}
type="password"
name="confirm"
- label={t("authSetNewPasswordConfirmPassword")}
+ label={t("auth.common.inputs.passwordConfirm.label")}
isRequired={true}
- placeholder="••••••••"
+ placeholder={t("auth.common.inputs.passwordConfirm.placeholder")}
value={form.confirm}
onChange={handleChange}
error={errors.confirm ? true : false}
- helperText={errors.confirm}
+ helperText={t(errors.confirm)} // Localization keys are in validation.js
endAdornment={}
/>
@@ -200,33 +202,33 @@ const SetNewPassword = () => {
mb={theme.spacing(12)}
>
@@ -243,7 +245,7 @@ const SetNewPassword = () => {
}
sx={{ width: "100%", maxWidth: 400 }}
>
- {t("authSetNewPasswordResetPassword")}
+ {t("auth.forgotPassword.buttons.resetPassword")}
@@ -251,15 +253,21 @@ const SetNewPassword = () => {
textAlign="center"
p={theme.spacing(12)}
>
- {t("goBackTo")} —
- navigate("/login")}
- sx={{ userSelect: "none" }}
- >
- {t("authLoginTitle")}
+
+ navigate("/login")}
+ sx={{ userSelect: "none" }}
+ />
+ ),
+ }}
+ />
diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js
index acb05116e..1074f3bb2 100644
--- a/client/src/Validation/validation.js
+++ b/client/src/Validation/validation.js
@@ -9,10 +9,9 @@ const nameSchema = joi
.trim()
.pattern(/^[\p{L}\p{M}''\- ]+$/u)
.messages({
- "string.empty": "Name is required",
- "string.max": "Name must be less than 50 characters",
- "string.pattern.base":
- "Name must contain only letters, spaces, apostrophes, or hyphens",
+ "string.empty": "auth.common.inputs.firstName.errors.empty",
+ "string.max": "auth.common.inputs.firstName.errors.length",
+ "string.pattern.base": "auth.common.inputs.firstName.errors.pattern",
});
const lastnameSchema = joi
@@ -21,10 +20,9 @@ const lastnameSchema = joi
.trim()
.pattern(/^[\p{L}\p{M}''\- ]+$/u)
.messages({
- "string.empty": "Surname is required",
- "string.max": "Surname must be less than 50 characters",
- "string.pattern.base":
- "Surname must contain only letters, spaces, apostrophes, or hyphens",
+ "string.empty": "auth.common.inputs.lastName.errors.empty",
+ "string.max": "auth.common.inputs.lastName.errors.length",
+ "string.pattern.base": "auth.common.inputs.lastName.errors.pattern",
});
const newPasswordSchema = joi
@@ -56,12 +54,12 @@ const newPasswordSchema = joi
return value;
})
.messages({
- "string.empty": "Password is required",
- "string.min": "Password must be at least 8 characters long",
- uppercase: "Password must contain at least one uppercase letter",
- lowercase: "Password must contain at least one lowercase letter",
- number: "Password must contain at least one number",
- special: "Password must contain at least one special character",
+ "string.empty": "auth.common.inputs.password.errors.empty",
+ "string.min": "auth.common.inputs.password.errors.length",
+ uppercase: "auth.common.inputs.password.errors.uppercase",
+ lowercase: "auth.common.inputs.password.errors.lowercase",
+ number: "auth.common.inputs.password.errors.number",
+ special: "auth.common.inputs.password.errors.special",
});
const newOrChangedCredentials = joi.object({
@@ -73,8 +71,8 @@ const newOrChangedCredentials = joi.object({
.email({ tlds: { allow: false } })
.lowercase()
.messages({
- "string.empty": "authRegisterEmailRequired",
- "string.email": "authRegisterEmailInvalid",
+ "string.empty": "auth.common.inputs.email.errors.empty",
+ "string.email": "auth.common.inputs.email.errors.invalid",
}),
password: newPasswordSchema,
newPassword: newPasswordSchema,
@@ -89,8 +87,8 @@ const newOrChangedCredentials = joi.object({
return value;
})
.messages({
- "string.empty": "This field can't be empty",
- different: "Passwords do not match",
+ "string.empty": "auth.common.inputs.passwordConfirm.errors.empty",
+ different: "auth.common.inputs.passwordConfirm.errors.different",
}),
role: joi.array(),
teamId: joi.string().allow("").optional(),
@@ -104,13 +102,13 @@ const loginCredentials = joi.object({
.email({ tlds: { allow: false } })
.lowercase()
.messages({
- "string.empty": "authRegisterEmailRequired",
- "string.email": "authRegisterEmailInvalid",
+ "string.empty": "auth.common.inputs.email.errors.empty",
+ "string.email": "auth.common.inputs.email.errors.invalid",
}),
password: joi
.string()
.messages({
- "string.empty": "Please enter your password",
+ "string.empty": "auth.common.inputs.password.errors.empty",
}),
});
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index 5f2fde219..3bb64e6c9 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Chyba připojení k síti",
- "checkConnection": "Zkontrolujte prosím své připojení k síti"
+ "checkConnection": "Zkontrolujte prosím své připojení k síti",
+ "unknownError": "Nastala neznámá chyba"
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Pokračovat",
+ "back": "Zpět"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-mail",
+ "placeholder": "jan.novak@domena.cz",
+ "errors": {
+ "empty": "Zadejte prosím e-mailovou adresu",
+ "invalid": "Překontrolujte si prosím správnost zadané e-mailové adresy"
+ }
+ },
+ "password": {
+ "label": "Heslo",
+ "rules": {
+ "length": {
+ "beginning": "Heslo musí být dlouhé alespoň",
+ "highlighted": "8 znaků"
+ },
+ "special": {
+ "beginning": "Heslo musí obsahovat alespoň",
+ "highlighted": "1 speciální znak"
+ },
+ "number": {
+ "beginning": "Heslo musí obsahovat alespoň",
+ "highlighted": "1 číslo"
+ },
+ "uppercase": {
+ "beginning": "Heslo musí obsahovat alespoň",
+ "highlighted": "1 velké písmeno"
+ },
+ "lowercase": {
+ "beginning": "Heslo musí obsahovat alespoň",
+ "highlighted": "1 malé písmeno"
+ },
+ "match": {
+ "beginning": "Obě hesla se",
+ "highlighted": "musí shodovat"
+ }
+ },
+ "errors": {
+ "empty": "Zadejte prosím heslo",
+ "length": "Heslo musí být dlouhé alespoň 8 znaků",
+ "uppercase": "Heslo musí obsahovat alespoň 1 velké písmeno",
+ "lowercase": "Heslo musí obsahovat alespoň 1 malé písmeno",
+ "number": "Heslo musí obsahovat alespoň 1 číslo",
+ "special": "Heslo musí obsahovat alespoň 1 speciální znak",
+ "incorrect": "Zadané heslo neodpovídá tomu, co bylo nastaveno"
+ }
+ },
+ "passwordConfirm": {
+ "label": "Potvrzení hesla",
+ "placeholder": "Pro ověření správnosti zadejte heslo ještě jednou",
+ "errors": {
+ "empty": "Zadejte prosím své heslo ještě jednou, aby mohla být potvrzena jeho správnost (odhalí překlepy)",
+ "different": "Zadaná hesla se liší, takže je nejspíše jedno z nich špatně zapsané"
+ }
+ },
+ "firstName": {
+ "label": "Jméno",
+ "placeholder": "Jan",
+ "errors": {
+ "empty": "Zadejte prosím své křestní jméno",
+ "length": "Jméno se musí vejít do 50 znaků",
+ "pattern": "Součástí jména mohou být pouze písmena, mezery apostrofy nebo spojovníky"
+ }
+ },
+ "lastName": {
+ "label": "Příjmení",
+ "placeholder": "Novák",
+ "errors": {
+ "empty": "Zadejte prosím své příjmení",
+ "length": "Příjmení se musí vejít do 50 znaků",
+ "pattern": "Součástí příjmení mohou být pouze písmena, mezery apostrofy nebo spojovníky"
+ }
+ }
+ },
+ "errors": {
+ "validation": "Nastala chyba při ověřování dat."
+ }
+ },
+ "login": {
+ "heading": "Přihlášení",
+ "subheadings": {
+ "stepOne": "Zadejte svůj e-mail",
+ "stepTwo": "Zadejte své heslo"
+ },
+ "links": {
+ "forgotPassword": "Zapomněli jste heslo? Obnovte si ho",
+ "register": "Ještě nemáte účet? Zaregistrujte se"
+ },
+ "toasts": {
+ "success": "Vítejte zpět",
+ "incorrectPassword": "Nesprávné heslo"
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "Vytvoření superadministrátora",
+ "user": "Registrace"
+ },
+ "subheadings": {
+ "stepOne": "Zadejte své osobní údaje",
+ "stepTwo": "Zadejte svůj e-mail",
+ "stepThree": "Nastavte si heslo"
+ },
+ "description": {
+ "superAdmin": "Pro začátek vytvořte účet superadministrátora",
+ "user": "Zaregistrujte se jako uživatel a požádejte svého superadministrátora, aby vám přidělil oprávnění k hlídačům"
+ },
+ "gettingStartedButton": {
+ "superAdmin": "Vytvořit účet superadministrátora",
+ "user": "Zaregistrovat se jako běžný uživatel"
+ },
+ "termsAndPolicies": "Vytvořením účtu souhlasíte s našimi Podmínkami použití (anglicky) a Podmínkami zpracování osobních údajů (anglicky).",
+ "links": {
+ "login": "Máte již vytvořený účet? Přihlašte se"
+ },
+ "toasts": {
+ "success": "Vítejte! Váš účet byl úspěšně vytvořen."
+ }
+ },
+ "forgotPassword": {
+ "heading": "Zapomenuté heslo",
+ "subheadings": {
+ "stepOne": "Nebojte se, zašleme vám pokyny pro obnovení hesla.",
+ "stepTwo": "Odkaz pro obnovení hesla byl odeslán na ",
+ "stepThree": "Nové heslo se musí lišit od těch, které jste již použili.",
+ "stepFour": "Heslo bylo úspěšně obnoveno. Klepněte na tlačítko a dojde k čarovnému přihlášení."
+ },
+ "buttons": {
+ "openEmail": "Otevřít e-mailovou aplikaci",
+ "resetPassword": "Obnovit heslo"
+ },
+ "imageAlts": {
+ "passwordKey": "Ikonka přístupového klíče",
+ "email": "Ikonka e-mailu",
+ "lock": "Ikonka zámku",
+ "passwordConfirm": "Ikonka potvrzeného hesla"
+ },
+ "links": {
+ "login": "Vrátit se k Přihlášení",
+ "resend": "Nedorazil vám e-mail? Klepněte pro opětovné zaslání"
+ },
+ "toasts": {
+ "sent": "Instrukce vám dorazí na .",
+ "emailNotFound": "Nepodařilo se nalézt e-mailovou adresu.",
+ "redirect": "Přesměrování proběhne za ...",
+ "success": "Heslo bylo úspěšně obnoveno.",
+ "error": "Obnova hesla se nepodařila. Zkuste to prosím znovu nebo kontaktujte podporu."
+ }
}
},
"errorPages": {
@@ -25,24 +182,12 @@
}
},
"dontHaveAccount": "",
- "email": "",
"forgotPassword": "",
- "password": "",
- "signUp": "",
"submit": "",
"title": "",
- "continue": "",
"enterEmail": "",
- "authLoginTitle": "",
- "authLoginEnterPassword": "",
"commonPassword": "",
- "commonBack": "",
- "authForgotPasswordTitle": "",
- "authForgotPasswordResetPassword": "",
"createPassword": "",
- "createAPassword": "",
- "authRegisterAlreadyHaveAccount": "",
- "authLoginEnterEmail": "",
"authRegisterTitle": "",
"authRegisterStepOneTitle": "",
"authRegisterStepOneDescription": "",
@@ -50,36 +195,15 @@
"authRegisterStepTwoDescription": "",
"authRegisterStepThreeTitle": "",
"authRegisterStepThreeDescription": "",
- "authForgotPasswordDescription": "",
"authForgotPasswordSendInstructions": "",
"authForgotPasswordBackTo": "",
"authCheckEmailTitle": "",
- "authCheckEmailDescription": "",
"authCheckEmailResendEmail": "",
"authCheckEmailBackTo": "",
- "goBackTo": "",
- "authCheckEmailDidntReceiveEmail": "",
- "authCheckEmailClickToResend": "",
"authSetNewPasswordTitle": "",
- "authSetNewPasswordDescription": "",
"authSetNewPasswordNewPassword": "",
- "authSetNewPasswordConfirmPassword": "",
- "confirmPassword": "",
- "authSetNewPasswordResetPassword": "",
"authSetNewPasswordBackTo": "",
- "authPasswordMustBeAtLeast": "",
- "authPasswordCharactersLong": "",
- "authPasswordMustContainAtLeast": "",
- "authPasswordSpecialCharacter": "",
- "authPasswordOneNumber": "",
- "authPasswordUpperCharacter": "",
- "authPasswordLowerCharacter": "",
- "authPasswordConfirmAndPassword": "",
- "authPasswordMustMatch": "",
"authRegisterCreateAccount": "",
- "authRegisterCreateSuperAdminAccount": "",
- "authRegisterSignUpWithEmail": "",
- "authRegisterBySigningUp": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -140,9 +264,6 @@
"city": "",
"response": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "",
- "authCheckEmailOpenEmailButton": "",
- "authNewPasswordConfirmed": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -416,10 +537,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterFirstName": "",
- "authRegisterLastName": "",
"authRegisterEmail": "",
- "authRegisterEmailRequired": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +549,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "welcomeBack": "",
- "authRegisterLoginLink": "",
"validationNameRequired": "",
"validationNameTooLong": "",
"validationNameInvalidCharacters": "",
@@ -440,10 +556,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
"DeleteAccountButton": "",
- "authRegisterEmailInvalid": "",
"publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
@@ -528,7 +641,6 @@
"state": "",
"statusBreadCrumbsStatusPages": "",
"statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "",
"settingsThemeModeLight": "",
"settingsThemeModeDark": "",
"settingsClearAllStatsDialogCancel": "",
diff --git a/client/src/locales/de.json b/client/src/locales/de.json
index fb1a58019..753af8b3c 100644
--- a/client/src/locales/de.json
+++ b/client/src/locales/de.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "",
- "checkConnection": ""
+ "checkConnection": "",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Weiter",
+ "back": "Zurück"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-Mail",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "invalid": ""
+ }
+ },
+ "password": {
+ "label": "Passwort",
+ "rules": {
+ "length": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "special": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "number": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "uppercase": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "lowercase": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "match": {
+ "beginning": "",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Anmelden",
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "Geben Sie Ihr Passwort ein"
+ },
+ "links": {
+ "forgotPassword": "Passwort vergessen? Passwort zurücksetzen",
+ "register": ""
+ },
+ "toasts": {
+ "success": "",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Registrieren"
+ },
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "",
+ "stepThree": "Erstelle dein Passwort"
+ },
+ "description": {
+ "superAdmin": "",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "",
+ "user": ""
+ },
+ "termsAndPolicies": "",
+ "links": {
+ "login": ""
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Passwort zurücksetzen",
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "",
+ "stepThree": "",
+ "stepFour": ""
+ },
+ "buttons": {
+ "openEmail": "",
+ "resetPassword": ""
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "",
+ "resend": ""
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Noch kein Konto",
- "email": "E-Mail",
"forgotPassword": "Passwort vergessen",
- "password": "passwort",
- "signUp": "Registrieren",
"submit": "Absenden",
"title": "Titel",
- "continue": "Weiter",
"enterEmail": "Geben Sie Ihre E-Mail-Adresse ein",
- "authLoginTitle": "Anmelden",
- "authLoginEnterPassword": "Geben Sie Ihr Passwort ein",
"commonPassword": "Passwort",
- "commonBack": "Zurück",
- "authForgotPasswordTitle": "Passwort vergessen?",
- "authForgotPasswordResetPassword": "Passwort zurücksetzen",
- "createPassword": "Erstelle dein Passwort",
- "createAPassword": "Passwort",
- "authRegisterAlreadyHaveAccount": "Hast du schon eine Account?",
- "authLoginEnterEmail": "",
"authRegisterTitle": "",
"authRegisterStepOneTitle": "",
"authRegisterStepOneDescription": "",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "",
"authRegisterStepThreeTitle": "",
"authRegisterStepThreeDescription": "",
- "authForgotPasswordDescription": "",
"authForgotPasswordSendInstructions": "",
"authForgotPasswordBackTo": "",
"authCheckEmailTitle": "",
- "authCheckEmailDescription": "",
"authCheckEmailResendEmail": "",
"authCheckEmailBackTo": "",
- "goBackTo": "",
- "authCheckEmailDidntReceiveEmail": "",
- "authCheckEmailClickToResend": "",
"authSetNewPasswordTitle": "",
- "authSetNewPasswordDescription": "",
"authSetNewPasswordNewPassword": "",
- "authSetNewPasswordConfirmPassword": "",
- "confirmPassword": "",
- "authSetNewPasswordResetPassword": "",
"authSetNewPasswordBackTo": "",
- "authPasswordMustBeAtLeast": "",
- "authPasswordCharactersLong": "",
- "authPasswordMustContainAtLeast": "",
- "authPasswordSpecialCharacter": "",
- "authPasswordOneNumber": "",
- "authPasswordUpperCharacter": "",
- "authPasswordLowerCharacter": "",
- "authPasswordConfirmAndPassword": "",
- "authPasswordMustMatch": "",
"authRegisterCreateAccount": "",
- "authRegisterCreateSuperAdminAccount": "",
- "authRegisterSignUpWithEmail": "",
- "authRegisterBySigningUp": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -140,9 +263,6 @@
"city": "",
"response": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "",
- "authCheckEmailOpenEmailButton": "",
- "authNewPasswordConfirmed": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterFirstName": "",
- "authRegisterLastName": "",
"authRegisterEmail": "",
- "authRegisterEmailRequired": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +548,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "welcomeBack": "",
- "authRegisterLoginLink": "",
"validationNameRequired": "",
"validationNameTooLong": "",
"validationNameInvalidCharacters": "",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
"DeleteAccountButton": "",
- "authRegisterEmailInvalid": "",
"publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
@@ -528,7 +640,6 @@
"state": "",
"statusBreadCrumbsStatusPages": "",
"statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "",
"settingsThemeModeLight": "",
"settingsThemeModeDark": "",
"settingsClearAllStatsDialogCancel": "",
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index 145aa0af3..af06f419b 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Network error",
- "checkConnection": "Please check your connection"
+ "checkConnection": "Please check your connection",
+ "unknownError": "Unknown error"
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Continue",
+ "back": "Back"
+ },
+ "inputs": {
+ "email": {
+ "label": "Email",
+ "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",
+ "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": "Confirm password and password",
+ "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",
+ "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",
+ "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",
+ "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."
+ }
+ },
+ "login": {
+ "heading": "Log In",
+ "subheadings": {
+ "stepOne": "Enter your email",
+ "stepTwo": "Enter your password"
+ },
+ "links": {
+ "forgotPassword": "Forgot password? Reset password",
+ "register": "Do not have an account? Register here"
+ },
+ "toasts": {
+ "success": "Welcome back! You're successfully logged in.",
+ "incorrectPassword": "Incorrect password"
+ }
+ },
+ "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."
+ }
+ },
+ "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"
+ },
+ "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"
+ },
+ "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": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Don't have account",
- "email": "E-mail",
"forgotPassword": "Forgot Password",
- "password": "Password",
- "signUp": "Sign Up",
"submit": "Submit",
"title": "Title",
- "continue": "Continue",
"enterEmail": "Enter your email",
- "authLoginTitle": "Log In",
- "authLoginEnterPassword": "Enter your password",
"commonPassword": "Password",
- "commonBack": "Back",
- "authForgotPasswordTitle": "Forgot password?",
- "authForgotPasswordResetPassword": "Reset password",
- "createPassword": "Create your password",
- "createAPassword": "Password",
- "authRegisterAlreadyHaveAccount": "Already have an account?",
- "authLoginEnterEmail": "Enter your email",
"authRegisterTitle": "Create an account",
"authRegisterStepOneTitle": "Create your account",
"authRegisterStepOneDescription": "Enter your details to get started",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Tell us more about yourself",
"authRegisterStepThreeTitle": "Almost done!",
"authRegisterStepThreeDescription": "Review your information",
- "authForgotPasswordDescription": "No worries, we'll send you reset instructions.",
"authForgotPasswordSendInstructions": "Send instructions",
"authForgotPasswordBackTo": "Back to",
"authCheckEmailTitle": "Check your email",
- "authCheckEmailDescription": "We sent a password reset link to",
"authCheckEmailResendEmail": "Resend email",
"authCheckEmailBackTo": "Back to",
- "goBackTo": "Go back to",
- "authCheckEmailDidntReceiveEmail": "Didn't receive the email?",
- "authCheckEmailClickToResend": "Click to resend",
"authSetNewPasswordTitle": "Set new password",
- "authSetNewPasswordDescription": "Your new password must be different from previously used passwords.",
"authSetNewPasswordNewPassword": "New password",
- "authSetNewPasswordConfirmPassword": "Confirm password",
- "confirmPassword": "Re-enter password to confirm",
- "authSetNewPasswordResetPassword": "Reset password",
"authSetNewPasswordBackTo": "Back to",
- "authPasswordMustBeAtLeast": "Must be at least",
- "authPasswordCharactersLong": "8 characters long",
- "authPasswordMustContainAtLeast": "Must contain at least",
- "authPasswordSpecialCharacter": "one special character",
- "authPasswordOneNumber": "one number",
- "authPasswordUpperCharacter": "one upper character",
- "authPasswordLowerCharacter": "one lower character",
- "authPasswordConfirmAndPassword": "Confirm password and password",
- "authPasswordMustMatch": "Passwords must match",
"authRegisterCreateAccount": "Create your account to get started",
- "authRegisterCreateSuperAdminAccount": "Create your super admin account to get started",
- "authRegisterSignUpWithEmail": "Create super admin account",
- "authRegisterBySigningUp": "By creating an account, you agree to our Terms of Service and Privacy Policy.",
"distributedStatusHeaderText": "Real-time, real-device coverage",
"distributedStatusSubHeaderText": "Powered by millions devices worldwide, view a system performance by global region, country or city",
"settingsGeneralSettings": "General settings",
@@ -136,9 +259,6 @@
"city": "CITY",
"response": "RESPONSE",
"passwordreset": "Password Reset",
- "authRegisterStepOnePersonalDetails": "Enter your personal details",
- "authCheckEmailOpenEmailButton": "Open email app",
- "authNewPasswordConfirmed": "Your password has been successfully reset. Click below to log in magically.",
"monitorStatusUp": "Monitor {name} ({url}) is now UP and responding",
"monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding",
"webhookSendSuccess": "Webhook notification sent successfully",
@@ -408,10 +528,7 @@
"DeleteDescriptionText": "This will remove the account and all associated data from the server. This isn't reversible.",
"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.",
"DeleteWarningTitle": "Really remove this account?",
- "authRegisterFirstName": "Name",
- "authRegisterLastName": "Surname",
"authRegisterEmail": "Email",
- "authRegisterEmailRequired": "To continue, please enter your email address",
"bulkImport": {
"title": "Bulk Import",
"selectFileTips": "Select CSV file to upload",
@@ -423,8 +540,6 @@
"noFileSelected": "No file selected",
"fallbackPage": "Import a file to upload a list of servers in bulk"
},
- "welcomeBack": "Welcome back! You're successfully logged in.",
- "authRegisterLoginLink": "Log In",
"validationNameRequired": "Please enter your name",
"validationNameTooLong": "Name should be less than 50 characters",
"validationNameInvalidCharacters": "Please use only letters, spaces, apostrophes, or hyphens",
@@ -432,10 +547,7 @@
"settingsSystemResetDescription": "Remove all monitors from your system.",
"DeleteAccountTitle": "Remove account",
"DeleteAccountButton": "Remove account",
- "authRegisterEmailInvalid": "Please enter a valid email address",
"publicLink": "Public link",
- "doNotHaveAccount": "Do not have an account?",
- "registerHere": "Register here",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API key",
"pageSpeedApiKeyFieldLabel": "PageSpeed API key",
@@ -519,7 +631,6 @@
"state": "State",
"statusBreadCrumbsStatusPages": "Status Pages",
"statusBreadCrumbsDetails": "Details",
- "authForgotPasswordInstructions": "No worries, we'll send you reset instructions.",
"settingsThemeModeLight": "Light",
"settingsThemeModeDark": "Dark",
"settingsClearAllStatsDialogCancel": "Cancel",
diff --git a/client/src/locales/es.json b/client/src/locales/es.json
index 722833d99..5c0f551ad 100644
--- a/client/src/locales/es.json
+++ b/client/src/locales/es.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "",
- "checkConnection": ""
+ "checkConnection": "",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Continuar",
+ "back": "Atras"
+ },
+ "inputs": {
+ "email": {
+ "label": "Correo electronico",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "invalid": ""
+ }
+ },
+ "password": {
+ "label": "Contraseña",
+ "rules": {
+ "length": {
+ "beginning": "",
+ "highlighted": "8 caracteres de longitud"
+ },
+ "special": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "number": {
+ "beginning": "",
+ "highlighted": "un numero"
+ },
+ "uppercase": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "lowercase": {
+ "beginning": "",
+ "highlighted": ""
+ },
+ "match": {
+ "beginning": "",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Confirmar contraseña",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Inicio de session",
+ "subheadings": {
+ "stepOne": "Introduce tu correo electronico",
+ "stepTwo": "Introduce tu contraseña"
+ },
+ "links": {
+ "forgotPassword": "¿Has olvidado tu contraseña? Restablecer contraseña",
+ "register": ""
+ },
+ "toasts": {
+ "success": "",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Registrarse"
+ },
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "Introduce tu correo electronico",
+ "stepThree": "Crear contraseña"
+ },
+ "description": {
+ "superAdmin": "",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "",
+ "user": ""
+ },
+ "termsAndPolicies": "",
+ "links": {
+ "login": ""
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "¿Has olvidado tu contraseña?",
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "Hemos enviado un link para reiniciar la contraseña a ",
+ "stepThree": "",
+ "stepFour": ""
+ },
+ "buttons": {
+ "openEmail": "",
+ "resetPassword": "Restablecer contraseña"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Volver a Inicio de session",
+ "resend": "No has recibido el correo electronico? Presiona para reenviar"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "No tengo una cuenta",
- "email": "Correo electronico",
"forgotPassword": "He olvidado mi contraseña",
- "password": "Contraseña",
- "signUp": "Registrarse",
"submit": "Enviar",
"title": "Titulo",
- "continue": "Continuar",
"enterEmail": "Introduce tu email",
- "authLoginTitle": "Inicio de session",
- "authLoginEnterPassword": "Introduce tu contraseña",
"commonPassword": "Contraseña",
- "commonBack": "Atras",
- "authForgotPasswordTitle": "¿Has olvidado tu contraseña?",
- "authForgotPasswordResetPassword": "Restablecer contraseña",
- "createPassword": "Crear contraseña",
- "createAPassword": "Contraseña",
- "authRegisterAlreadyHaveAccount": "Ya tienes un cuenta?",
- "authLoginEnterEmail": "Introduce tu correo electronico",
"authRegisterTitle": "Crear una cuenta",
"authRegisterStepOneTitle": "Crea tu cuenta",
"authRegisterStepOneDescription": "",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Cuentano mas sobre ti",
"authRegisterStepThreeTitle": "Ya casi estamos!",
"authRegisterStepThreeDescription": "Revisa tu informacion",
- "authForgotPasswordDescription": "",
"authForgotPasswordSendInstructions": "Enviar instrucciones",
"authForgotPasswordBackTo": "Volver a",
"authCheckEmailTitle": "Comprueba tu correo",
- "authCheckEmailDescription": "Hemos enviado un link para reiniciar la contraseña a",
"authCheckEmailResendEmail": "Reenviar correo",
"authCheckEmailBackTo": "Volver a",
- "goBackTo": "Volver a",
- "authCheckEmailDidntReceiveEmail": "No has recibido el correo electronico?",
- "authCheckEmailClickToResend": "Presiona para reenviar",
"authSetNewPasswordTitle": "Configurar nueva contraseña",
- "authSetNewPasswordDescription": "",
"authSetNewPasswordNewPassword": "Nueva contraseña",
- "authSetNewPasswordConfirmPassword": "Confirmar contraseña",
- "confirmPassword": "",
- "authSetNewPasswordResetPassword": "Restablecer contraseña",
"authSetNewPasswordBackTo": "Volver a",
- "authPasswordMustBeAtLeast": "",
- "authPasswordCharactersLong": "8 caracteres de longitud",
- "authPasswordMustContainAtLeast": "",
- "authPasswordSpecialCharacter": "",
- "authPasswordOneNumber": "un numero",
- "authPasswordUpperCharacter": "",
- "authPasswordLowerCharacter": "",
- "authPasswordConfirmAndPassword": "",
- "authPasswordMustMatch": "",
"authRegisterCreateAccount": "",
- "authRegisterCreateSuperAdminAccount": "",
- "authRegisterSignUpWithEmail": "",
- "authRegisterBySigningUp": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -140,9 +263,6 @@
"city": "",
"response": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "",
- "authCheckEmailOpenEmailButton": "",
- "authNewPasswordConfirmed": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterFirstName": "",
- "authRegisterLastName": "",
"authRegisterEmail": "",
- "authRegisterEmailRequired": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +548,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "welcomeBack": "",
- "authRegisterLoginLink": "",
"validationNameRequired": "",
"validationNameTooLong": "",
"validationNameInvalidCharacters": "",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
"DeleteAccountButton": "",
- "authRegisterEmailInvalid": "",
"publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
@@ -528,7 +640,6 @@
"state": "",
"statusBreadCrumbsStatusPages": "",
"statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "",
"settingsThemeModeLight": "",
"settingsThemeModeDark": "",
"settingsClearAllStatsDialogCancel": "",
diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json
index 16517778a..b4c364fe5 100644
--- a/client/src/locales/fi.json
+++ b/client/src/locales/fi.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Verkkovirhe",
- "checkConnection": "Tarkista yhteytesi"
+ "checkConnection": "Tarkista yhteytesi",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Jatka",
+ "back": "Takaisin"
+ },
+ "inputs": {
+ "email": {
+ "label": "Sähköposti",
+ "placeholder": "",
+ "errors": {
+ "empty": "Syötä sähköpostiosoitteesi jatkaaksesi",
+ "invalid": "Kirjoita kelvollinen sähköpostiosoite"
+ }
+ },
+ "password": {
+ "label": "Salasana",
+ "rules": {
+ "length": {
+ "beginning": "Vähintään",
+ "highlighted": "8 merkkiä pitkä"
+ },
+ "special": {
+ "beginning": "Tulee sisältää vähintään",
+ "highlighted": "yksi erikoismerkki"
+ },
+ "number": {
+ "beginning": "Tulee sisältää vähintään",
+ "highlighted": "yksi numero"
+ },
+ "uppercase": {
+ "beginning": "Tulee sisältää vähintään",
+ "highlighted": "yksi pieni kirjain"
+ },
+ "lowercase": {
+ "beginning": "Tulee sisältää vähintään",
+ "highlighted": "yksi iso kirjain"
+ },
+ "match": {
+ "beginning": "Vahvista salasana ja salasana",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Vahvista salasana",
+ "placeholder": "Syötä salasana uudelleen",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "Nimi",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "Sukunimi",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Kirjaudu",
+ "subheadings": {
+ "stepOne": "Syötä salasanasi",
+ "stepTwo": "Syötä salasanasi"
+ },
+ "links": {
+ "forgotPassword": "Unohditko salasanasi? Nollaa salasana",
+ "register": "Onko sinulla tili? Rekisteröidy tästä"
+ },
+ "toasts": {
+ "success": "Tervetuloa takaisin! Olet kirjautunut sisään.",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Rekisteröidy"
+ },
+ "subheadings": {
+ "stepOne": "Syötä henkilökohtaiset tietosi",
+ "stepTwo": "Syötä salasanasi",
+ "stepThree": "Luo salasanasi"
+ },
+ "description": {
+ "superAdmin": "Luo pääkäyttäjän tili aloittaaksesi",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "Luo pääkäyttäjän tili",
+ "user": ""
+ },
+ "termsAndPolicies": "Luomalla tilin hyväksyt Käyttöehdot ja Tietosuojakäytännön.",
+ "links": {
+ "login": "Onko sinulla jo tili? Kirjaudu"
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Unohditko salasanasi?",
+ "subheadings": {
+ "stepOne": "Ei hätää, lähetämme sinulle ohjeet salasanan palauttamiseen.",
+ "stepTwo": "Lähetimme salasanan nollauslinkin osoitteeseen ",
+ "stepThree": "Uuden salasanan pitää olla eri kuin aiemmin käyttämäsi.",
+ "stepFour": "Salasanasi on onnistuneesti nollattu. Klikkaa alta kirjautuaksesi taianomaisesti."
+ },
+ "buttons": {
+ "openEmail": "Avaa sähköpostisovellus",
+ "resetPassword": "Nollaa salasana"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Palaa edelliseen Kirjaudu",
+ "resend": "Etkö saanut sähköpostia? Klikkaa lähettääksesi uudelleen"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Ei tiliä",
- "email": "Sähköposti",
"forgotPassword": "Unohtunut salasana",
- "password": "Salasana",
- "signUp": "Rekisteröidy",
"submit": "Lähetä",
"title": "Otsikko",
- "continue": "Jatka",
"enterEmail": "Syötä sähköpostiosoitteesi",
- "authLoginTitle": "Kirjaudu",
- "authLoginEnterPassword": "Syötä salasanasi",
"commonPassword": "Salasana",
- "commonBack": "Takaisin",
- "authForgotPasswordTitle": "Unohditko salasanasi?",
- "authForgotPasswordResetPassword": "Nollaa salasana",
- "createPassword": "Luo salasanasi",
- "createAPassword": "Salasana",
- "authRegisterAlreadyHaveAccount": "Onko sinulla jo tili?",
- "authLoginEnterEmail": "Syötä salasanasi",
"authRegisterTitle": "Luo tili",
"authRegisterStepOneTitle": "Luo tilisi",
"authRegisterStepOneDescription": "Kirjoita tietosi aloittaaksesi",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Kerro meille lisää itsestäsi",
"authRegisterStepThreeTitle": "Melkein valmis!",
"authRegisterStepThreeDescription": "Tarkista tietosi",
- "authForgotPasswordDescription": "Ei hätää, lähetämme sinulle salasanan nollausohjeet.",
"authForgotPasswordSendInstructions": "Lähetä ohjeet",
"authForgotPasswordBackTo": "Palaa",
"authCheckEmailTitle": "Tarkista sähköpostisi",
- "authCheckEmailDescription": "Lähetimme salasanan nollauslinkin osoitteeseen",
"authCheckEmailResendEmail": "Lähetä sähköposti uudelleen",
"authCheckEmailBackTo": "Palaa",
- "goBackTo": "Palaa edelliseen",
- "authCheckEmailDidntReceiveEmail": "Etkö saanut sähköpostia?",
- "authCheckEmailClickToResend": "Klikkaa lähettääksesi uudelleen",
"authSetNewPasswordTitle": "Aseta uusi salasana",
- "authSetNewPasswordDescription": "Uuden salasanan pitää olla eri kuin aiemmin käyttämäsi.",
"authSetNewPasswordNewPassword": "Uusi salasana",
- "authSetNewPasswordConfirmPassword": "Vahvista salasana",
- "confirmPassword": "Syötä salasana uudelleen",
- "authSetNewPasswordResetPassword": "Nollaa salasana",
"authSetNewPasswordBackTo": "Takaisin",
- "authPasswordMustBeAtLeast": "Vähintään",
- "authPasswordCharactersLong": "8 merkkiä pitkä",
- "authPasswordMustContainAtLeast": "Tulee sisältää vähintään",
- "authPasswordSpecialCharacter": "yksi erikoismerkki",
- "authPasswordOneNumber": "yksi numero",
- "authPasswordUpperCharacter": "yksi pieni kirjain",
- "authPasswordLowerCharacter": "yksi iso kirjain",
- "authPasswordConfirmAndPassword": "Vahvista salasana ja salasana",
- "authPasswordMustMatch": "Salasanojen on oltava samat",
"authRegisterCreateAccount": "Luo tili aloittaaksesi",
- "authRegisterCreateSuperAdminAccount": "Luo pääkäyttäjän tili aloittaaksesi",
- "authRegisterSignUpWithEmail": "Luo pääkäyttäjän tili",
- "authRegisterBySigningUp": "Luomalla tilin hyväksyt Käyttöehdot ja Tietosuojakäytännön.",
"distributedStatusHeaderText": "Reaaliaikainen kattavuus oikeilla laitteilla",
"distributedStatusSubHeaderText": "Miljoonien laitteiden voimin ympäri maailman näet järjestelmän suorituskyvyn maailman alueittain, maittain tai kaupungeittain",
"settingsGeneralSettings": "Yleiset asetukset",
@@ -140,9 +263,6 @@
"city": "KAUPUNKI",
"response": "Vastaus",
"passwordreset": "Salasanan nollaus",
- "authRegisterStepOnePersonalDetails": "Syötä henkilökohtaiset tietosi",
- "authCheckEmailOpenEmailButton": "Avaa sähköpostisovellus",
- "authNewPasswordConfirmed": "Salasanasi on onnistuneesti nollattu. Klikkaa alta kirjautuaksesi taianomaisesti.",
"monitorStatusUp": "Valvontakohde {name} ({url}) on nyt toiminnassa ja vastaa",
"monitorStatusDown": "Valvontakohde {name} ({url}) ei ole toiminnassa, eikä vastaa",
"webhookSendSuccess": "Webhook-ilmoitus lähetettiin onnistuneesti",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "Haluatko todella poistaa tämän tilin?",
- "authRegisterFirstName": "Nimi",
- "authRegisterLastName": "Sukunimi",
"authRegisterEmail": "Sähköpostiosoite",
- "authRegisterEmailRequired": "Syötä sähköpostiosoitteesi jatkaaksesi",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +548,6 @@
"noFileSelected": "Ei valittua tiedostoa",
"fallbackPage": ""
},
- "welcomeBack": "Tervetuloa takaisin! Olet kirjautunut sisään.",
- "authRegisterLoginLink": "Kirjaudu",
"validationNameRequired": "Kirjoita nimesi",
"validationNameTooLong": "Nimen tulee olla alle 50 merkkiä",
"validationNameInvalidCharacters": "Käytäthän vain kirjaimia, välilyöntejä, heittomerkkejä tai yhdysmerkkejä",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "Poista tili",
"DeleteAccountButton": "Poista tili",
- "authRegisterEmailInvalid": "Kirjoita kelvollinen sähköpostiosoite",
"publicLink": "Julkinen linkki",
- "doNotHaveAccount": "Onko sinulla tili?",
- "registerHere": "Rekisteröidy tästä",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API-avain",
"pageSpeedApiKeyFieldLabel": "PageSpeed API-avain",
@@ -528,7 +640,6 @@
"state": "Tila",
"statusBreadCrumbsStatusPages": "Tilasivut",
"statusBreadCrumbsDetails": "Tiedot",
- "authForgotPasswordInstructions": "Ei hätää, lähetämme sinulle ohjeet salasanan palauttamiseen.",
"settingsThemeModeLight": "Vaalea",
"settingsThemeModeDark": "Tumma",
"settingsClearAllStatsDialogCancel": "Peruuta",
diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json
index 4acde5888..092cb3c9d 100644
--- a/client/src/locales/fr.json
+++ b/client/src/locales/fr.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "",
- "checkConnection": "Vérifiez votre connexion"
+ "checkConnection": "Vérifiez votre connexion",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Continuer",
+ "back": "Retour"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-mail",
+ "placeholder": "",
+ "errors": {
+ "empty": "Pour continuer, veuillez saisir votre adresse e-mail",
+ "invalid": "Veuillez saisir une adresse e-mail valide"
+ }
+ },
+ "password": {
+ "label": "Mot de passe",
+ "rules": {
+ "length": {
+ "beginning": "Doit faire au moins",
+ "highlighted": "8 caractères"
+ },
+ "special": {
+ "beginning": "Doit contenir au moins",
+ "highlighted": "un caractère spécial"
+ },
+ "number": {
+ "beginning": "Doit contenir au moins",
+ "highlighted": "un nombre"
+ },
+ "uppercase": {
+ "beginning": "Doit contenir au moins",
+ "highlighted": "une lettre majuscule"
+ },
+ "lowercase": {
+ "beginning": "Doit contenir au moins",
+ "highlighted": "une lettre minuscule"
+ },
+ "match": {
+ "beginning": "Confirmer le mot de passe",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Confirmer le mot de passe",
+ "placeholder": "Confirmez votre mot de passe",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "Prénom",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "Nom",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Se connecter",
+ "subheadings": {
+ "stepOne": "Entrez votre e-mail",
+ "stepTwo": "Entrez votre mot de passe"
+ },
+ "links": {
+ "forgotPassword": "Mot de passe oublié ? Réinitialiser le mot de passe",
+ "register": ""
+ },
+ "toasts": {
+ "success": "Bienvenue ! Vous êtes connecté avec succès.",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "S'inscrire"
+ },
+ "subheadings": {
+ "stepOne": "Saisissez vos infos",
+ "stepTwo": "Entrez votre e-mail",
+ "stepThree": "Créez votre mot de passe"
+ },
+ "description": {
+ "superAdmin": "Créez votre compte Super admin pour commencer",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "S'inscrire avec E-mail",
+ "user": ""
+ },
+ "termsAndPolicies": "En vous inscrivant, vous acceptez nos",
+ "links": {
+ "login": "Vous avez un compte ? Se connecter"
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Mot de passe oublié ?",
+ "subheadings": {
+ "stepOne": "Nous vous enverrons des instructions de réinitialisation.",
+ "stepTwo": "Nous avons envoyé un lien de réinitialisation à ",
+ "stepThree": "Votre nouveau mot de passe doit être différent des anciens mots de passes utilisés.",
+ "stepFour": "Votre mot de passe a été réinitialisé avec succès. Cliquez ci-dessous pour vous connecter."
+ },
+ "buttons": {
+ "openEmail": "Ouvrir l'appli mail",
+ "resetPassword": "Réinitialiser le mot de passe"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Retourner à Se connecter",
+ "resend": "Vous n'avez pas reçu l'e-mail ? Cliquez pour renvoyer"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Vous n'avez pas de compte",
- "email": "E-mail",
"forgotPassword": "Mot de passe oublié",
- "password": "mot de passe",
- "signUp": "S'inscrire",
"submit": "Envoyer",
"title": "Titre",
- "continue": "Continuer",
"enterEmail": "Entrez votre adresse e-mail",
- "authLoginTitle": "Se connecter",
- "authLoginEnterPassword": "Entrez votre mot de passe",
"commonPassword": "Mot de passe",
- "commonBack": "Retour",
- "authForgotPasswordTitle": "Mot de passe oublié ?",
- "authForgotPasswordResetPassword": "Réinitialiser le mot de passe",
- "createPassword": "Créez votre mot de passe",
- "createAPassword": "Créer un mot de passe",
- "authRegisterAlreadyHaveAccount": "Vous avez un compte ?",
- "authLoginEnterEmail": "Entrez votre e-mail",
"authRegisterTitle": "Créer un compte",
"authRegisterStepOneTitle": "Créez votre compte",
"authRegisterStepOneDescription": "Entrez vos informations pour commencer",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Parlez-nous un peu de vous",
"authRegisterStepThreeTitle": "Presque fini !",
"authRegisterStepThreeDescription": "Vérifiez vos infos",
- "authForgotPasswordDescription": "Pas d'inquiétude, nous allons vous envoyer des instructions de réinitialisation.",
"authForgotPasswordSendInstructions": "Envoyer les instructions",
"authForgotPasswordBackTo": "Retourner à",
"authCheckEmailTitle": "Vérifiez votre e-mail",
- "authCheckEmailDescription": "Nous avons envoyé un lien de réinitialisation à",
"authCheckEmailResendEmail": "Renvoyer le mail",
"authCheckEmailBackTo": "Retourner à",
- "goBackTo": "Retourner à",
- "authCheckEmailDidntReceiveEmail": "Vous n'avez pas reçu l'e-mail ?",
- "authCheckEmailClickToResend": "Cliquez pour renvoyer",
"authSetNewPasswordTitle": "Définir un nouveau mot de passe",
- "authSetNewPasswordDescription": "Votre nouveau mot de passe doit être différent des anciens mots de passes utilisés.",
"authSetNewPasswordNewPassword": "Nouveau mot de passe",
- "authSetNewPasswordConfirmPassword": "Confirmer le mot de passe",
- "confirmPassword": "Confirmez votre mot de passe",
- "authSetNewPasswordResetPassword": "Réinitialiser le mot de passe",
"authSetNewPasswordBackTo": "Retourner à",
- "authPasswordMustBeAtLeast": "Doit faire au moins",
- "authPasswordCharactersLong": "8 caractères",
- "authPasswordMustContainAtLeast": "Doit contenir au moins",
- "authPasswordSpecialCharacter": "un caractère spécial",
- "authPasswordOneNumber": "un nombre",
- "authPasswordUpperCharacter": "une lettre majuscule",
- "authPasswordLowerCharacter": "une lettre minuscule",
- "authPasswordConfirmAndPassword": "Confirmer le mot de passe",
- "authPasswordMustMatch": "doit correspondre",
"authRegisterCreateAccount": "Créez votre compte pour commencer",
- "authRegisterCreateSuperAdminAccount": "Créez votre compte Super admin pour commencer",
- "authRegisterSignUpWithEmail": "S'inscrire avec E-mail",
- "authRegisterBySigningUp": "En vous inscrivant, vous acceptez nos",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "Paramètres généraux",
@@ -140,9 +263,6 @@
"city": "VILLE",
"response": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "Saisissez vos infos",
- "authCheckEmailOpenEmailButton": "Ouvrir l'appli mail",
- "authNewPasswordConfirmed": "Votre mot de passe a été réinitialisé avec succès. Cliquez ci-dessous pour vous connecter.",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "Vous supprimez vraiment ce compte ?",
- "authRegisterFirstName": "Prénom",
- "authRegisterLastName": "Nom",
"authRegisterEmail": "Email",
- "authRegisterEmailRequired": "Pour continuer, veuillez saisir votre adresse e-mail",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +548,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "welcomeBack": "Bienvenue ! Vous êtes connecté avec succès.",
- "authRegisterLoginLink": "Se connecter",
"validationNameRequired": "Veuillez saisir votre nom",
"validationNameTooLong": "",
"validationNameInvalidCharacters": "Veuillez utiliser uniquement des lettres, des espaces, des apostrophes ou des traits d'union",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "Supprimer le compte",
"DeleteAccountButton": "Supprimer le compte",
- "authRegisterEmailInvalid": "Veuillez saisir une adresse e-mail valide",
"publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
@@ -528,7 +640,6 @@
"state": "",
"statusBreadCrumbsStatusPages": "",
"statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "Nous vous enverrons des instructions de réinitialisation.",
"settingsThemeModeLight": "Clair",
"settingsThemeModeDark": "Sombre",
"settingsClearAllStatsDialogCancel": "Annuler",
diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json
index 25f14086e..f042e5fd6 100644
--- a/client/src/locales/pt-BR.json
+++ b/client/src/locales/pt-BR.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Erro de rede",
- "checkConnection": "Verifique sua conexão"
+ "checkConnection": "Verifique sua conexão",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Continuar",
+ "back": "Voltar"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-mail",
+ "placeholder": "",
+ "errors": {
+ "empty": "Para continuar, insira seu endereço de e-mail",
+ "invalid": "Por favor, insira um endereço de e-mail válido"
+ }
+ },
+ "password": {
+ "label": "Senha",
+ "rules": {
+ "length": {
+ "beginning": "Deve ser pelo menos",
+ "highlighted": "8 caracteres de comprimento"
+ },
+ "special": {
+ "beginning": "Deve conter pelo menos",
+ "highlighted": "um caractere especial"
+ },
+ "number": {
+ "beginning": "Deve conter pelo menos",
+ "highlighted": "um número"
+ },
+ "uppercase": {
+ "beginning": "Deve conter pelo menos",
+ "highlighted": "um caractere maiúsculo"
+ },
+ "lowercase": {
+ "beginning": "Deve conter pelo menos",
+ "highlighted": "um caractere minúsculo"
+ },
+ "match": {
+ "beginning": "Confirme a senha",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Confirme sua senha",
+ "placeholder": "Digite a senha novamente para confirmar",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "Nome",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "Sobrenome",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Login",
+ "subheadings": {
+ "stepOne": "Insira seu e-mail",
+ "stepTwo": "Digite sua senha"
+ },
+ "links": {
+ "forgotPassword": "Esqueceu a senha? Redefinir a senha",
+ "register": "Ainda não tem uma conta? Registre-se aqui"
+ },
+ "toasts": {
+ "success": "Bem-vindo de volta! Você fez login com sucesso.",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Inscreva-se"
+ },
+ "subheadings": {
+ "stepOne": "Insira seus dados pessoais",
+ "stepTwo": "Insira seu e-mail",
+ "stepThree": "Criar sua senha"
+ },
+ "description": {
+ "superAdmin": "Crie sua conta de super admin para começar",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "Criar conta de super admin",
+ "user": ""
+ },
+ "termsAndPolicies": "Ao criar uma conta, você concorda com nossos Termos de Serviço e Política de Privacidade.",
+ "links": {
+ "login": "Já possui uma conta? Login"
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Esqueceu a senha?",
+ "subheadings": {
+ "stepOne": "Não se preocupe, enviaremos instruções de redefinição.",
+ "stepTwo": "Enviamos um link para redefinir a senha para ",
+ "stepThree": "Sua nova senha deve ser diferente das senhas usadas anteriormente.",
+ "stepFour": "Sua senha foi redefinida com sucesso. Clique abaixo para fazer login magicamente."
+ },
+ "buttons": {
+ "openEmail": "Abra o aplicativo de e-mail",
+ "resetPassword": "Redefinir senha"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Volte para Login",
+ "resend": "Não recebeu o e-mail? Clique para reenviar"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Não tenho conta",
- "email": "E-mail",
"forgotPassword": "Esqueci a senha",
- "password": "Senha",
- "signUp": "Inscreva-se",
"submit": "Enviar",
"title": "Título",
- "continue": "Continuar",
"enterEmail": "Insira seu e-mail",
- "authLoginTitle": "Login",
- "authLoginEnterPassword": "Digite sua senha",
"commonPassword": "Senha",
- "commonBack": "Voltar",
- "authForgotPasswordTitle": "Esqueceu a senha?",
- "authForgotPasswordResetPassword": "Redefinir a senha",
- "createPassword": "Criar sua senha",
- "createAPassword": "Senha",
- "authRegisterAlreadyHaveAccount": "Já possui uma conta?",
- "authLoginEnterEmail": "Insira seu e-mail",
"authRegisterTitle": "Criar uma conta",
"authRegisterStepOneTitle": "Crie sua conta",
"authRegisterStepOneDescription": "Insira seus dados para começar",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Conte-nos mais sobre você",
"authRegisterStepThreeTitle": "Quase pronto!",
"authRegisterStepThreeDescription": "Revise suas informações",
- "authForgotPasswordDescription": "Não se preocupe, enviaremos instruções de redefinição.",
"authForgotPasswordSendInstructions": "Enviar instruções",
"authForgotPasswordBackTo": "Voltar para",
"authCheckEmailTitle": "Verifique seu e-mail",
- "authCheckEmailDescription": "Enviamos um link para redefinir a senha para",
"authCheckEmailResendEmail": "Reenviar e-mail",
"authCheckEmailBackTo": "Voltar para",
- "goBackTo": "Volte para",
- "authCheckEmailDidntReceiveEmail": "Não recebeu o e-mail?",
- "authCheckEmailClickToResend": "Clique para reenviar",
"authSetNewPasswordTitle": "Definir nova senha",
- "authSetNewPasswordDescription": "Sua nova senha deve ser diferente das senhas usadas anteriormente.",
"authSetNewPasswordNewPassword": "Nova senha",
- "authSetNewPasswordConfirmPassword": "Confirme sua senha",
- "confirmPassword": "Digite a senha novamente para confirmar",
- "authSetNewPasswordResetPassword": "Redefinir senha",
"authSetNewPasswordBackTo": "Voltar para",
- "authPasswordMustBeAtLeast": "Deve ser pelo menos",
- "authPasswordCharactersLong": "8 caracteres de comprimento",
- "authPasswordMustContainAtLeast": "Deve conter pelo menos",
- "authPasswordSpecialCharacter": "um caractere especial",
- "authPasswordOneNumber": "um número",
- "authPasswordUpperCharacter": "um caractere maiúsculo",
- "authPasswordLowerCharacter": "um caractere minúsculo",
- "authPasswordConfirmAndPassword": "Confirme a senha",
- "authPasswordMustMatch": "As senhas devem corresponder",
"authRegisterCreateAccount": "Crie sua conta para começar",
- "authRegisterCreateSuperAdminAccount": "Crie sua conta de super admin para começar",
- "authRegisterSignUpWithEmail": "Criar conta de super admin",
- "authRegisterBySigningUp": "Ao criar uma conta, você concorda com nossos Termos de Serviço e Política de Privacidade.",
"distributedStatusHeaderText": "Cobertura em tempo real e em dispositivos reais",
"distributedStatusSubHeaderText": "Impulsionado por milhões de dispositivos em todo o mundo, visualize o desempenho do sistema por região global, país ou cidade",
"settingsGeneralSettings": "Configurações gerais",
@@ -139,9 +262,6 @@
"city": "CIDADE",
"response": "RESPOSTA",
"passwordreset": "Redefinição de senha",
- "authRegisterStepOnePersonalDetails": "Insira seus dados pessoais",
- "authCheckEmailOpenEmailButton": "Abra o aplicativo de e-mail",
- "authNewPasswordConfirmed": "Sua senha foi redefinida com sucesso. Clique abaixo para fazer login magicamente.",
"monitorStatusUp": "O monitor {name} ({url}) agora está ATIVO e respondendo",
"monitorStatusDown": "O monitor {name} ({url}) está INATIVO e não está respondendo",
"webhookSendSuccess": "Notificação de webhook enviada com sucesso",
@@ -415,10 +535,7 @@
"DeleteDescriptionText": "Isso removerá a conta e todos os dados associados do servidor. Essa ação não é reversível.",
"DeleteAccountWarning": "Remover sua conta significa que você não poderá fazer login novamente e todos os seus dados serão removidos. Isso não é reversível.",
"DeleteWarningTitle": "Deseja realmente remover esta conta?",
- "authRegisterFirstName": "Nome",
- "authRegisterLastName": "Sobrenome",
"authRegisterEmail": "E-mail",
- "authRegisterEmailRequired": "Para continuar, insira seu endereço de e-mail",
"bulkImport": {
"title": "Bulk Import",
"selectFileTips": "Selecione o arquivo CSV para enviar",
@@ -430,8 +547,6 @@
"noFileSelected": "Nenhum arquivo selecionado",
"fallbackPage": "Importe um arquivo para enviar uma lista de servidores em massa"
},
- "welcomeBack": "Bem-vindo de volta! Você fez login com sucesso.",
- "authRegisterLoginLink": "Login",
"validationNameRequired": "Por favor digite seu nome",
"validationNameTooLong": "O nome deve ter menos de 50 caracteres",
"validationNameInvalidCharacters": "Por favor, use apenas letras, espaços, apóstrofos ou hifens",
@@ -439,10 +554,7 @@
"settingsSystemResetDescription": "Remova todos os monitores do seu sistema.",
"DeleteAccountTitle": "Remover conta",
"DeleteAccountButton": "Remover conta",
- "authRegisterEmailInvalid": "Por favor, insira um endereço de e-mail válido",
"publicLink": "Link publico",
- "doNotHaveAccount": "Ainda não tem uma conta?",
- "registerHere": "Registre-se aqui",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API key",
"pageSpeedApiKeyFieldLabel": "PageSpeed API key",
@@ -527,7 +639,6 @@
"state": "Estado",
"statusBreadCrumbsStatusPages": "Pagina de status",
"statusBreadCrumbsDetails": "Detalhes",
- "authForgotPasswordInstructions": "Não se preocupe, enviaremos instruções de redefinição.",
"settingsThemeModeLight": "Claro",
"settingsThemeModeDark": "Escuro",
"settingsClearAllStatsDialogCancel": "Cancelar",
diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json
index ae83dc57a..f6ccdd5fd 100644
--- a/client/src/locales/ru.json
+++ b/client/src/locales/ru.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Ошибка сети",
- "checkConnection": "Пожалуйста, проверьте ваше соединение"
+ "checkConnection": "Пожалуйста, проверьте ваше соединение",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Продолжить",
+ "back": "Назад"
+ },
+ "inputs": {
+ "email": {
+ "label": "Почта",
+ "placeholder": "",
+ "errors": {
+ "empty": "Чтобы продолжить, пожалуйста, введите свой адрес электронной почты",
+ "invalid": "Пожалуйста, введите действительный адрес электронной почты"
+ }
+ },
+ "password": {
+ "label": "пароль",
+ "rules": {
+ "length": {
+ "beginning": "Должно быть как минимум",
+ "highlighted": "длиной 8 символов"
+ },
+ "special": {
+ "beginning": "Должен содержать как минимум",
+ "highlighted": "один специальный символ"
+ },
+ "number": {
+ "beginning": "Должен содержать как минимум",
+ "highlighted": "одно число"
+ },
+ "uppercase": {
+ "beginning": "Должен содержать как минимум",
+ "highlighted": "один верхний символ"
+ },
+ "lowercase": {
+ "beginning": "Должен содержать как минимум",
+ "highlighted": "один нижний символ"
+ },
+ "match": {
+ "beginning": "Подтвердите пароль и пароль",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Подтвердите пароль",
+ "placeholder": "Подтвердите ваш пароль",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "Имя",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "Фамилия",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Войти",
+ "subheadings": {
+ "stepOne": "Введите свой email",
+ "stepTwo": "Введите свой пароль"
+ },
+ "links": {
+ "forgotPassword": "Забыли пароль? Сбросить пароль",
+ "register": "У вас нет учетной записи? Зарегистрируйтесь здесь"
+ },
+ "toasts": {
+ "success": "Добро пожаловать обратно! Вы успешно вошли в систему.",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Зарегистрироваться"
+ },
+ "subheadings": {
+ "stepOne": "Введите свои личные данные",
+ "stepTwo": "Введите свой email",
+ "stepThree": "Создайте свой пароль"
+ },
+ "description": {
+ "superAdmin": "Создайте учетную запись суперадминистратора, чтобы начать работу",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "Зарегистрироваться по электронной почте",
+ "user": ""
+ },
+ "termsAndPolicies": "Регистрируясь, вы соглашаетесь с нашими",
+ "links": {
+ "login": "Уже есть аккаунт? Войти"
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Забыли пароль?",
+ "subheadings": {
+ "stepOne": "Не беспокойтесь, мы вышлем вам инструкции по сбросу настроек.",
+ "stepTwo": "Мы отправили ссылку для сброса пароля ",
+ "stepThree": "Ваш новый пароль должен отличаться от ранее использованных паролей.",
+ "stepFour": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом."
+ },
+ "buttons": {
+ "openEmail": "Откройте приложение почты",
+ "resetPassword": "Сбросить пароль"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Назад к Войти",
+ "resend": "Не получили письмо? Нажмите, чтобы отправить повторно"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Нет аккаунта",
- "email": "Почта",
"forgotPassword": "Забыли пароль",
- "password": "пароль",
- "signUp": "Зарегистрироваться",
"submit": "Подтвердить",
"title": "Название",
- "continue": "Продолжить",
"enterEmail": "Введите свой email",
- "authLoginTitle": "Войти",
- "authLoginEnterPassword": "Введите свой пароль",
"commonPassword": "Пароль",
- "commonBack": "Назад",
- "authForgotPasswordTitle": "Забыли пароль?",
- "authForgotPasswordResetPassword": "Сбросить пароль",
- "createPassword": "Создайте свой пароль",
- "createAPassword": "Создайте пароль",
- "authRegisterAlreadyHaveAccount": "Уже есть аккаунт?",
- "authLoginEnterEmail": "Введите свой email",
"authRegisterTitle": "Создать аккаунт",
"authRegisterStepOneTitle": "Создайте свой аккаут",
"authRegisterStepOneDescription": "Введите свои данные, чтобы начать",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Расскажите нам о себе",
"authRegisterStepThreeTitle": "Почти готово!",
"authRegisterStepThreeDescription": "Проверьте свою информацию",
- "authForgotPasswordDescription": "Не волнуйтесь, мы вышлем вам инструкции по сбросу настроек.",
"authForgotPasswordSendInstructions": "Отправить инструкции",
"authForgotPasswordBackTo": "Назад к",
"authCheckEmailTitle": "Проверьте свою почту",
- "authCheckEmailDescription": "Мы отправили ссылку для сброса пароля",
"authCheckEmailResendEmail": "Отправить письмо повторно",
"authCheckEmailBackTo": "Назад к",
- "goBackTo": "Назад к",
- "authCheckEmailDidntReceiveEmail": "Не получили письмо?",
- "authCheckEmailClickToResend": "Нажмите, чтобы отправить повторно",
"authSetNewPasswordTitle": "Установите новый пароль",
- "authSetNewPasswordDescription": "Ваш новый пароль должен отличаться от ранее использованных паролей.",
"authSetNewPasswordNewPassword": "Новый пароль",
- "authSetNewPasswordConfirmPassword": "Подтвердите пароль",
- "confirmPassword": "Подтвердите ваш пароль",
- "authSetNewPasswordResetPassword": "Сбросить пароль",
"authSetNewPasswordBackTo": "Назад к",
- "authPasswordMustBeAtLeast": "Должно быть как минимум",
- "authPasswordCharactersLong": "длиной 8 символов",
- "authPasswordMustContainAtLeast": "Должен содержать как минимум",
- "authPasswordSpecialCharacter": "один специальный символ",
- "authPasswordOneNumber": "одно число",
- "authPasswordUpperCharacter": "один верхний символ",
- "authPasswordLowerCharacter": "один нижний символ",
- "authPasswordConfirmAndPassword": "Подтвердите пароль и пароль",
- "authPasswordMustMatch": "должен совпадать",
"authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать",
- "authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу",
- "authRegisterSignUpWithEmail": "Зарегистрироваться по электронной почте",
- "authRegisterBySigningUp": "Регистрируясь, вы соглашаетесь с нашими",
"distributedStatusHeaderText": "Охват реального времени и реального устройства",
"distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу",
"settingsGeneralSettings": "Общие настройки",
@@ -136,9 +259,6 @@
"city": "ГОРОД",
"response": "ОТВЕТ",
"passwordreset": "Сброс пароля",
- "authRegisterStepOnePersonalDetails": "Введите свои личные данные",
- "authCheckEmailOpenEmailButton": "Откройте приложение почты",
- "authNewPasswordConfirmed": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом.",
"monitorStatusUp": "Монитор {name} ({url}) теперь включен и отвечает",
"monitorStatusDown": "Монитор {name} ({url}) ОТКЛЮЧЕН и не отвечает",
"webhookSendSuccess": "Уведомление Webhook успешно отправлено",
@@ -411,10 +531,7 @@
"DeleteDescriptionText": "Это приведет к удалению учетной записи и всех связанных с ней данных с сервера. Это необратимо.",
"DeleteAccountWarning": "Удаление вашей учетной записи означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.",
"DeleteWarningTitle": "Действительно удаляете эту учетную запись?",
- "authRegisterFirstName": "Имя",
- "authRegisterLastName": "Фамилия",
"authRegisterEmail": "Email",
- "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите свой адрес электронной почты",
"bulkImport": {
"title": "Массовый импорт",
"selectFileTips": "Выберите CSV-файл для загрузки",
@@ -426,8 +543,6 @@
"noFileSelected": "Файл не выбран",
"fallbackPage": "Импортируйте файл для массовой загрузки списка серверов"
},
- "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.",
- "authRegisterLoginLink": "Войти",
"validationNameRequired": "Пожалуйста, введите свое имя",
"validationNameTooLong": "Длина имени не должна превышать 50 символов",
"validationNameInvalidCharacters": "Пожалуйста, используйте только буквы, пробелы, апострофы или дефисы",
@@ -435,10 +550,7 @@
"settingsSystemResetDescription": "Удалите все мониторы из вашей системы.",
"DeleteAccountTitle": "Удалить аккаунт",
"DeleteAccountButton": "Удалить аккаунт",
- "authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты",
"publicLink": "Публичная ссылка",
- "doNotHaveAccount": "У вас нет учетной записи?",
- "registerHere": "Зарегистрируйтесь здесь",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Ключ API Google PageSpeed",
"pageSpeedApiKeyFieldLabel": "Ключ API PageSpeed",
@@ -523,7 +635,6 @@
"state": "Состояние",
"statusBreadCrumbsStatusPages": "Страницы статуса",
"statusBreadCrumbsDetails": "Подробности",
- "authForgotPasswordInstructions": "Не беспокойтесь, мы вышлем вам инструкции по сбросу настроек.",
"settingsThemeModeLight": "Светлая",
"settingsThemeModeDark": "Тёмная",
"settingsClearAllStatsDialogCancel": "Отменить",
diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json
index 59e911118..0d650e985 100644
--- a/client/src/locales/tr.json
+++ b/client/src/locales/tr.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "Ağ hatası",
- "checkConnection": "Lütfen bağlantınızı kontrol edin"
+ "checkConnection": "Lütfen bağlantınızı kontrol edin",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "Devam Et",
+ "back": "Geri"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-posta",
+ "placeholder": "",
+ "errors": {
+ "empty": "Devam etmek için lütfen e-posta adresinizi girin",
+ "invalid": "Lütfen geçerli bir eposta hesabı girin"
+ }
+ },
+ "password": {
+ "label": "Parola",
+ "rules": {
+ "length": {
+ "beginning": "En az",
+ "highlighted": "8 karakter uzunluğunda olmalı"
+ },
+ "special": {
+ "beginning": "En az içermeli",
+ "highlighted": "bir özel karakter"
+ },
+ "number": {
+ "beginning": "En az içermeli",
+ "highlighted": "bir rakam"
+ },
+ "uppercase": {
+ "beginning": "En az içermeli",
+ "highlighted": "bir büyük harf"
+ },
+ "lowercase": {
+ "beginning": "En az içermeli",
+ "highlighted": "bir küçük harf"
+ },
+ "match": {
+ "beginning": "Onay şifresi ve şifre",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "Parolayı onayla",
+ "placeholder": "Parolanızı onaylayın",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "İsim",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "Soyisim",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "Giriş Yap",
+ "subheadings": {
+ "stepOne": "E-posta adresinizi girin",
+ "stepTwo": "Parolanızı girin"
+ },
+ "links": {
+ "forgotPassword": "Parolanızı mı unuttunuz? Parola sıfırla",
+ "register": "Bir hesabınız yok mu? Buradan kayıt olun"
+ },
+ "toasts": {
+ "success": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "Kayıt Ol"
+ },
+ "subheadings": {
+ "stepOne": "Kişisel bilgilerinizi girin",
+ "stepTwo": "E-posta adresinizi girin",
+ "stepThree": "Parolanızı oluşturun"
+ },
+ "description": {
+ "superAdmin": "Super admin hesabınızı oluşturmak için devam edin",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "E-posta ile kayıt ol",
+ "user": ""
+ },
+ "termsAndPolicies": "",
+ "links": {
+ "login": "Zaten hesabınız var mı? Giriş yap"
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "Parolanızı mı unuttunuz?",
+ "subheadings": {
+ "stepOne": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.",
+ "stepTwo": " adresine şifre sıfırlama bağlantısı gönderdik",
+ "stepThree": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.",
+ "stepFour": "Parolanız başarıyla sıfırlandı. Otomatik olarak giriş yapmak için aşağıya tıklayın."
+ },
+ "buttons": {
+ "openEmail": "Eposta uygulamasını aç",
+ "resetPassword": "Parola sıfırla"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "Geri dön Giriş Yap",
+ "resend": "E-posta almadınız mı? Yeniden göndermek için tıklayın"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "Hesabınız yok mu",
- "email": "E-posta",
"forgotPassword": "Parolamı unuttum",
- "password": "Parola",
- "signUp": "Kayıt Ol",
"submit": "Gönder",
"title": "Başlık",
- "continue": "Devam Et",
"enterEmail": "E-posta adresinizi girin",
- "authLoginTitle": "Giriş Yap",
- "authLoginEnterPassword": "Parolanızı girin",
"commonPassword": "Parola",
- "commonBack": "Geri",
- "authForgotPasswordTitle": "Parolanızı mı unuttunuz?",
- "authForgotPasswordResetPassword": "Parola sıfırla",
- "createPassword": "Parolanızı oluşturun",
- "createAPassword": "Bir parola oluşturun",
- "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?",
- "authLoginEnterEmail": "E-posta adresinizi girin",
"authRegisterTitle": "Hesap oluştur",
"authRegisterStepOneTitle": "Hesabınızı oluşturun",
"authRegisterStepOneDescription": "Başlamak için bilgilerinizi girin",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "Kendiniz hakkında daha fazla bilgi verin",
"authRegisterStepThreeTitle": "Neredeyse bitti!",
"authRegisterStepThreeDescription": "Bilgilerinizi gözden geçirin",
- "authForgotPasswordDescription": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.",
"authForgotPasswordSendInstructions": "Talimatları gönder",
"authForgotPasswordBackTo": "Geri dön",
"authCheckEmailTitle": "E-postanızı kontrol edin",
- "authCheckEmailDescription": "{{email}} adresine şifre sıfırlama bağlantısı gönderdik",
"authCheckEmailResendEmail": "E-postayı yeniden gönder",
"authCheckEmailBackTo": "Geri dön",
- "goBackTo": "Geri dön",
- "authCheckEmailDidntReceiveEmail": "E-posta almadınız mı?",
- "authCheckEmailClickToResend": "Yeniden göndermek için tıklayın",
"authSetNewPasswordTitle": "Yeni şifre belirle",
- "authSetNewPasswordDescription": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.",
"authSetNewPasswordNewPassword": "Yeni şifre",
- "authSetNewPasswordConfirmPassword": "Parolayı onayla",
- "confirmPassword": "Parolanızı onaylayın",
- "authSetNewPasswordResetPassword": "Parola sıfırla",
"authSetNewPasswordBackTo": "Geri dön",
- "authPasswordMustBeAtLeast": "En az",
- "authPasswordCharactersLong": "8 karakter uzunluğunda olmalı",
- "authPasswordMustContainAtLeast": "En az içermeli",
- "authPasswordSpecialCharacter": "bir özel karakter",
- "authPasswordOneNumber": "bir rakam",
- "authPasswordUpperCharacter": "bir büyük harf",
- "authPasswordLowerCharacter": "bir küçük harf",
- "authPasswordConfirmAndPassword": "Onay şifresi ve şifre",
- "authPasswordMustMatch": "eşleşmelidir",
"authRegisterCreateAccount": "Hesap oluşturmak için devam et",
- "authRegisterCreateSuperAdminAccount": "Super admin hesabınızı oluşturmak için devam edin",
- "authRegisterSignUpWithEmail": "E-posta ile kayıt ol",
- "authRegisterBySigningUp": "Kayıt olarak, aşağıdaki şartları kabul ediyorsunuz:",
"distributedStatusHeaderText": "Gerçek zamanlı, Gerçek cihazlar kapsamı",
"distributedStatusSubHeaderText": "Dünya çapında milyonlarca cihaz tarafından desteklenen sistem performansını küresel bölgeye, ülkeye veya şehre göre görüntüleyin",
"settingsGeneralSettings": "Genel ayarlar",
@@ -140,9 +263,6 @@
"city": "ŞEHİR",
"response": "YANIT",
"passwordreset": "Parola Sıfırlama",
- "authRegisterStepOnePersonalDetails": "Kişisel bilgilerinizi girin",
- "authCheckEmailOpenEmailButton": "Eposta uygulamasını aç",
- "authNewPasswordConfirmed": "Parolanız başarıyla sıfırlandı. Otomatik olarak giriş yapmak için aşağıya tıklayın.",
"monitorStatusUp": "Monitör {name} ({url}) ayakta ve yanıt veriyor",
"monitorStatusDown": "Monitör {name} ({url}) yanıt vermiyor",
"webhookSendSuccess": "Web kanca bildirimi başarıyla gönderildi",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "Bu, hesabı ve ilişkili tüm verileri sunucudan kaldıracaktır. Bu geri alınamaz.",
"DeleteAccountWarning": "Hesabınızı kaldırmanız, tekrar oturum açamayacağınız ve tüm verilerinizin silineceği anlamına gelir. Bu geri alınamaz.",
"DeleteWarningTitle": "Gerçekten bu hesabı silmek istiyor musunuz?",
- "authRegisterFirstName": "İsim",
- "authRegisterLastName": "Soyisim",
"authRegisterEmail": "E-posta",
- "authRegisterEmailRequired": "Devam etmek için lütfen e-posta adresinizi girin",
"bulkImport": {
"title": "Toplu içeri alma",
"selectFileTips": "Yüklenecek CSV dosyasını seçin",
@@ -431,8 +548,6 @@
"noFileSelected": "Hiçbir dosya seçilmedi",
"fallbackPage": "Toplu olarak sunucu listesini yüklemek için bir dosyayı içe aktarın"
},
- "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.",
- "authRegisterLoginLink": "Giriş yap",
"validationNameRequired": "Lütfen adınızı girin",
"validationNameTooLong": "İsim 50 karakterden az olmalıdır",
"validationNameInvalidCharacters": "Lütfen sadece harfler, boşluk, tırnak ve çizgi kullanın",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "Sistemdeki tüm monitörleri silin",
"DeleteAccountTitle": "Hesabı sil",
"DeleteAccountButton": "Hesabı sil",
- "authRegisterEmailInvalid": "Lütfen geçerli bir eposta hesabı girin",
"publicLink": "Herkese açık bağlantı",
- "doNotHaveAccount": "Bir hesabınız yok mu?",
- "registerHere": "Buradan kayıt olun",
"maskedPageSpeedKeyPlaceholder": "*************************************",
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı",
"pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı",
@@ -528,7 +640,6 @@
"state": "Durum",
"statusBreadCrumbsStatusPages": "Durum sayfası",
"statusBreadCrumbsDetails": "Detaylar",
- "authForgotPasswordInstructions": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.",
"settingsThemeModeLight": "Aydınlat",
"settingsThemeModeDark": "Karart",
"settingsClearAllStatsDialogCancel": "İptal",
diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json
index 98fed65ef..11c063580 100644
--- a/client/src/locales/zh-TW.json
+++ b/client/src/locales/zh-TW.json
@@ -7,7 +7,164 @@
},
"toasts": {
"networkError": "",
- "checkConnection": ""
+ "checkConnection": "",
+ "unknownError": ""
+ }
+ },
+ "auth": {
+ "common": {
+ "navigation": {
+ "continue": "繼續",
+ "back": "回去"
+ },
+ "inputs": {
+ "email": {
+ "label": "E-mail",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "invalid": ""
+ }
+ },
+ "password": {
+ "label": "密碼",
+ "rules": {
+ "length": {
+ "beginning": "必須至少",
+ "highlighted": "8 個字符長"
+ },
+ "special": {
+ "beginning": "必須至少包含",
+ "highlighted": "一個特殊字符"
+ },
+ "number": {
+ "beginning": "必須至少包含",
+ "highlighted": "一個數字"
+ },
+ "uppercase": {
+ "beginning": "必須至少包含",
+ "highlighted": "一個大寫字母"
+ },
+ "lowercase": {
+ "beginning": "必須至少包含",
+ "highlighted": "一個小寫字母"
+ },
+ "match": {
+ "beginning": "確認密碼",
+ "highlighted": ""
+ }
+ },
+ "errors": {
+ "empty": "",
+ "length": "",
+ "uppercase": "",
+ "lowercase": "",
+ "number": "",
+ "special": "",
+ "incorrect": ""
+ }
+ },
+ "passwordConfirm": {
+ "label": "確認密碼",
+ "placeholder": "確認您的密碼",
+ "errors": {
+ "empty": "",
+ "different": ""
+ }
+ },
+ "firstName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ },
+ "lastName": {
+ "label": "",
+ "placeholder": "",
+ "errors": {
+ "empty": "",
+ "length": "",
+ "pattern": ""
+ }
+ }
+ },
+ "errors": {
+ "validation": ""
+ }
+ },
+ "login": {
+ "heading": "登入",
+ "subheadings": {
+ "stepOne": "輸入您的 E-mail",
+ "stepTwo": "輸入您的密碼"
+ },
+ "links": {
+ "forgotPassword": "",
+ "register": ""
+ },
+ "toasts": {
+ "success": "",
+ "incorrectPassword": ""
+ }
+ },
+ "registration": {
+ "heading": {
+ "superAdmin": "",
+ "user": "註冊"
+ },
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "輸入您的 E-mail",
+ "stepThree": ""
+ },
+ "description": {
+ "superAdmin": "建立您的超級管理員帳號開始使用",
+ "user": ""
+ },
+ "gettingStartedButton": {
+ "superAdmin": "用 E-mail 註冊",
+ "user": ""
+ },
+ "termsAndPolicies": "註冊即表示您同意我們的",
+ "links": {
+ "login": ""
+ },
+ "toasts": {
+ "success": ""
+ }
+ },
+ "forgotPassword": {
+ "heading": "忘記密碼?",
+ "subheadings": {
+ "stepOne": "",
+ "stepTwo": "我們已將密碼重設連結發送至 ",
+ "stepThree": "您的新密碼必須與之前使用過的密碼不同。",
+ "stepFour": ""
+ },
+ "buttons": {
+ "openEmail": "",
+ "resetPassword": "重設密碼"
+ },
+ "imageAlts": {
+ "passwordKey": "",
+ "email": "",
+ "lock": "",
+ "passwordConfirm": ""
+ },
+ "links": {
+ "login": "回去 登入",
+ "resend": "沒有受到 E-mail? 點擊"
+ },
+ "toasts": {
+ "sent": "",
+ "emailNotFound": "",
+ "redirect": "",
+ "success": "",
+ "error": ""
+ }
}
},
"errorPages": {
@@ -25,24 +182,11 @@
}
},
"dontHaveAccount": "沒有帳號",
- "email": "E-mail",
"forgotPassword": "忘記密碼",
- "password": "密碼",
- "signUp": "註冊",
"submit": "",
"title": "",
- "continue": "繼續",
"enterEmail": "輸入您的 E-mail",
- "authLoginTitle": "登入",
- "authLoginEnterPassword": "輸入您的密碼",
"commonPassword": "密碼",
- "commonBack": "回去",
- "authForgotPasswordTitle": "忘記密碼?",
- "authForgotPasswordResetPassword": "",
- "createPassword": "",
- "createAPassword": "",
- "authRegisterAlreadyHaveAccount": "已經有帳號嗎?",
- "authLoginEnterEmail": "輸入您的 E-mail",
"authRegisterTitle": "建立帳號",
"authRegisterStepOneTitle": "建立您的帳號",
"authRegisterStepOneDescription": "清輸入您的個人檔案",
@@ -50,36 +194,15 @@
"authRegisterStepTwoDescription": "請分享更多關於您的資訊",
"authRegisterStepThreeTitle": "快完成了!",
"authRegisterStepThreeDescription": "請確認您的資訊",
- "authForgotPasswordDescription": "別擔心,我們會發送重設說明給您。",
"authForgotPasswordSendInstructions": "將說明發送至",
"authForgotPasswordBackTo": "回去",
"authCheckEmailTitle": "請查看您的電子郵件",
- "authCheckEmailDescription": "我們已將密碼重設連結發送至",
"authCheckEmailResendEmail": "重新發送 E-mail",
"authCheckEmailBackTo": "回去",
- "goBackTo": "回去",
- "authCheckEmailDidntReceiveEmail": "沒有受到 E-mail?",
- "authCheckEmailClickToResend": "點擊",
"authSetNewPasswordTitle": "設定新密碼",
- "authSetNewPasswordDescription": "您的新密碼必須與之前使用過的密碼不同。",
"authSetNewPasswordNewPassword": "新密碼",
- "authSetNewPasswordConfirmPassword": "確認密碼",
- "confirmPassword": "確認您的密碼",
- "authSetNewPasswordResetPassword": "重設密碼",
"authSetNewPasswordBackTo": "回去",
- "authPasswordMustBeAtLeast": "必須至少",
- "authPasswordCharactersLong": "8 個字符長",
- "authPasswordMustContainAtLeast": "必須至少包含",
- "authPasswordSpecialCharacter": "一個特殊字符",
- "authPasswordOneNumber": "一個數字",
- "authPasswordUpperCharacter": "一個大寫字母",
- "authPasswordLowerCharacter": "一個小寫字母",
- "authPasswordConfirmAndPassword": "確認密碼",
- "authPasswordMustMatch": "必須相符",
"authRegisterCreateAccount": "建立您的帳號開始使用",
- "authRegisterCreateSuperAdminAccount": "建立您的超級管理員帳號開始使用",
- "authRegisterSignUpWithEmail": "用 E-mail 註冊",
- "authRegisterBySigningUp": "註冊即表示您同意我們的",
"distributedStatusHeaderText": "實時、真實設備覆蓋",
"distributedStatusSubHeaderText": "由全球數百萬個設備提供支持,您可以按全球區域、國家或城市查看系統效能",
"settingsGeneralSettings": "一般設定",
@@ -140,9 +263,6 @@
"city": "",
"response": "",
"passwordreset": "",
- "authRegisterStepOnePersonalDetails": "",
- "authCheckEmailOpenEmailButton": "",
- "authNewPasswordConfirmed": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -416,10 +536,7 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterFirstName": "",
- "authRegisterLastName": "",
"authRegisterEmail": "",
- "authRegisterEmailRequired": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -431,8 +548,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "welcomeBack": "",
- "authRegisterLoginLink": "",
"validationNameRequired": "",
"validationNameTooLong": "",
"validationNameInvalidCharacters": "",
@@ -440,10 +555,7 @@
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
"DeleteAccountButton": "",
- "authRegisterEmailInvalid": "",
"publicLink": "",
- "doNotHaveAccount": "",
- "registerHere": "",
"maskedPageSpeedKeyPlaceholder": "",
"pageSpeedApiKeyFieldTitle": "",
"pageSpeedApiKeyFieldLabel": "",
@@ -528,7 +640,6 @@
"state": "",
"statusBreadCrumbsStatusPages": "",
"statusBreadCrumbsDetails": "",
- "authForgotPasswordInstructions": "",
"settingsThemeModeLight": "",
"settingsThemeModeDark": "",
"settingsClearAllStatsDialogCancel": "",
From 8c9084cc7a7840cad239705897959224681530c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sun, 8 Jun 2025 16:15:37 +0200
Subject: [PATCH 10/11] i18n: Clean up auth-related keys
Removes only keys that aren't used on any place (I searched for
each of them in all Components and Pages).
---
client/src/locales/cs.json | 25 -------------------------
client/src/locales/de.json | 25 -------------------------
client/src/locales/en.json | 25 -------------------------
client/src/locales/es.json | 25 -------------------------
client/src/locales/fi.json | 25 -------------------------
client/src/locales/fr.json | 25 -------------------------
client/src/locales/pt-BR.json | 25 -------------------------
client/src/locales/ru.json | 25 -------------------------
client/src/locales/tr.json | 25 -------------------------
client/src/locales/zh-TW.json | 25 -------------------------
10 files changed, 250 deletions(-)
diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json
index 3bb64e6c9..60bc510f0 100644
--- a/client/src/locales/cs.json
+++ b/client/src/locales/cs.json
@@ -181,29 +181,9 @@
}
}
},
- "dontHaveAccount": "",
- "forgotPassword": "",
"submit": "",
"title": "",
- "enterEmail": "",
- "commonPassword": "",
"createPassword": "",
- "authRegisterTitle": "",
- "authRegisterStepOneTitle": "",
- "authRegisterStepOneDescription": "",
- "authRegisterStepTwoTitle": "",
- "authRegisterStepTwoDescription": "",
- "authRegisterStepThreeTitle": "",
- "authRegisterStepThreeDescription": "",
- "authForgotPasswordSendInstructions": "",
- "authForgotPasswordBackTo": "",
- "authCheckEmailTitle": "",
- "authCheckEmailResendEmail": "",
- "authCheckEmailBackTo": "",
- "authSetNewPasswordTitle": "",
- "authSetNewPasswordNewPassword": "",
- "authSetNewPasswordBackTo": "",
- "authRegisterCreateAccount": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -263,7 +243,6 @@
"country": "",
"city": "",
"response": "",
- "passwordreset": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -537,7 +516,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterEmail": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -549,9 +527,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "validationNameRequired": "",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "",
"settingsSystemReset": "",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
diff --git a/client/src/locales/de.json b/client/src/locales/de.json
index 753af8b3c..8aa520e29 100644
--- a/client/src/locales/de.json
+++ b/client/src/locales/de.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Noch kein Konto",
- "forgotPassword": "Passwort vergessen",
"submit": "Absenden",
"title": "Titel",
- "enterEmail": "Geben Sie Ihre E-Mail-Adresse ein",
- "commonPassword": "Passwort",
- "authRegisterTitle": "",
- "authRegisterStepOneTitle": "",
- "authRegisterStepOneDescription": "",
- "authRegisterStepTwoTitle": "",
- "authRegisterStepTwoDescription": "",
- "authRegisterStepThreeTitle": "",
- "authRegisterStepThreeDescription": "",
- "authForgotPasswordSendInstructions": "",
- "authForgotPasswordBackTo": "",
- "authCheckEmailTitle": "",
- "authCheckEmailResendEmail": "",
- "authCheckEmailBackTo": "",
- "authSetNewPasswordTitle": "",
- "authSetNewPasswordNewPassword": "",
- "authSetNewPasswordBackTo": "",
- "authRegisterCreateAccount": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -262,7 +242,6 @@
"country": "",
"city": "",
"response": "",
- "passwordreset": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterEmail": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -548,9 +526,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "validationNameRequired": "",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "",
"settingsSystemReset": "",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
diff --git a/client/src/locales/en.json b/client/src/locales/en.json
index af06f419b..63802c7dc 100644
--- a/client/src/locales/en.json
+++ b/client/src/locales/en.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Don't have account",
- "forgotPassword": "Forgot Password",
"submit": "Submit",
"title": "Title",
- "enterEmail": "Enter your email",
- "commonPassword": "Password",
- "authRegisterTitle": "Create an account",
- "authRegisterStepOneTitle": "Create your account",
- "authRegisterStepOneDescription": "Enter your details to get started",
- "authRegisterStepTwoTitle": "Set up your profile",
- "authRegisterStepTwoDescription": "Tell us more about yourself",
- "authRegisterStepThreeTitle": "Almost done!",
- "authRegisterStepThreeDescription": "Review your information",
- "authForgotPasswordSendInstructions": "Send instructions",
- "authForgotPasswordBackTo": "Back to",
- "authCheckEmailTitle": "Check your email",
- "authCheckEmailResendEmail": "Resend email",
- "authCheckEmailBackTo": "Back to",
- "authSetNewPasswordTitle": "Set new password",
- "authSetNewPasswordNewPassword": "New password",
- "authSetNewPasswordBackTo": "Back to",
- "authRegisterCreateAccount": "Create your account to get started",
"distributedStatusHeaderText": "Real-time, real-device coverage",
"distributedStatusSubHeaderText": "Powered by millions devices worldwide, view a system performance by global region, country or city",
"settingsGeneralSettings": "General settings",
@@ -258,7 +238,6 @@
"country": "COUNTRY",
"city": "CITY",
"response": "RESPONSE",
- "passwordreset": "Password Reset",
"monitorStatusUp": "Monitor {name} ({url}) is now UP and responding",
"monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding",
"webhookSendSuccess": "Webhook notification sent successfully",
@@ -528,7 +507,6 @@
"DeleteDescriptionText": "This will remove the account and all associated data from the server. This isn't reversible.",
"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.",
"DeleteWarningTitle": "Really remove this account?",
- "authRegisterEmail": "Email",
"bulkImport": {
"title": "Bulk Import",
"selectFileTips": "Select CSV file to upload",
@@ -540,9 +518,6 @@
"noFileSelected": "No file selected",
"fallbackPage": "Import a file to upload a list of servers in bulk"
},
- "validationNameRequired": "Please enter your name",
- "validationNameTooLong": "Name should be less than 50 characters",
- "validationNameInvalidCharacters": "Please use only letters, spaces, apostrophes, or hyphens",
"settingsSystemReset": "System reset",
"settingsSystemResetDescription": "Remove all monitors from your system.",
"DeleteAccountTitle": "Remove account",
diff --git a/client/src/locales/es.json b/client/src/locales/es.json
index 5c0f551ad..0abc46c8c 100644
--- a/client/src/locales/es.json
+++ b/client/src/locales/es.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "No tengo una cuenta",
- "forgotPassword": "He olvidado mi contraseña",
"submit": "Enviar",
"title": "Titulo",
- "enterEmail": "Introduce tu email",
- "commonPassword": "Contraseña",
- "authRegisterTitle": "Crear una cuenta",
- "authRegisterStepOneTitle": "Crea tu cuenta",
- "authRegisterStepOneDescription": "",
- "authRegisterStepTwoTitle": "Configura tu perfil",
- "authRegisterStepTwoDescription": "Cuentano mas sobre ti",
- "authRegisterStepThreeTitle": "Ya casi estamos!",
- "authRegisterStepThreeDescription": "Revisa tu informacion",
- "authForgotPasswordSendInstructions": "Enviar instrucciones",
- "authForgotPasswordBackTo": "Volver a",
- "authCheckEmailTitle": "Comprueba tu correo",
- "authCheckEmailResendEmail": "Reenviar correo",
- "authCheckEmailBackTo": "Volver a",
- "authSetNewPasswordTitle": "Configurar nueva contraseña",
- "authSetNewPasswordNewPassword": "Nueva contraseña",
- "authSetNewPasswordBackTo": "Volver a",
- "authRegisterCreateAccount": "",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "",
@@ -262,7 +242,6 @@
"country": "",
"city": "",
"response": "",
- "passwordreset": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterEmail": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -548,9 +526,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "validationNameRequired": "",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "",
"settingsSystemReset": "",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json
index b4c364fe5..bd6f9a81f 100644
--- a/client/src/locales/fi.json
+++ b/client/src/locales/fi.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Ei tiliä",
- "forgotPassword": "Unohtunut salasana",
"submit": "Lähetä",
"title": "Otsikko",
- "enterEmail": "Syötä sähköpostiosoitteesi",
- "commonPassword": "Salasana",
- "authRegisterTitle": "Luo tili",
- "authRegisterStepOneTitle": "Luo tilisi",
- "authRegisterStepOneDescription": "Kirjoita tietosi aloittaaksesi",
- "authRegisterStepTwoTitle": "Määritä profiilisi",
- "authRegisterStepTwoDescription": "Kerro meille lisää itsestäsi",
- "authRegisterStepThreeTitle": "Melkein valmis!",
- "authRegisterStepThreeDescription": "Tarkista tietosi",
- "authForgotPasswordSendInstructions": "Lähetä ohjeet",
- "authForgotPasswordBackTo": "Palaa",
- "authCheckEmailTitle": "Tarkista sähköpostisi",
- "authCheckEmailResendEmail": "Lähetä sähköposti uudelleen",
- "authCheckEmailBackTo": "Palaa",
- "authSetNewPasswordTitle": "Aseta uusi salasana",
- "authSetNewPasswordNewPassword": "Uusi salasana",
- "authSetNewPasswordBackTo": "Takaisin",
- "authRegisterCreateAccount": "Luo tili aloittaaksesi",
"distributedStatusHeaderText": "Reaaliaikainen kattavuus oikeilla laitteilla",
"distributedStatusSubHeaderText": "Miljoonien laitteiden voimin ympäri maailman näet järjestelmän suorituskyvyn maailman alueittain, maittain tai kaupungeittain",
"settingsGeneralSettings": "Yleiset asetukset",
@@ -262,7 +242,6 @@
"country": "MAA",
"city": "KAUPUNKI",
"response": "Vastaus",
- "passwordreset": "Salasanan nollaus",
"monitorStatusUp": "Valvontakohde {name} ({url}) on nyt toiminnassa ja vastaa",
"monitorStatusDown": "Valvontakohde {name} ({url}) ei ole toiminnassa, eikä vastaa",
"webhookSendSuccess": "Webhook-ilmoitus lähetettiin onnistuneesti",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "Haluatko todella poistaa tämän tilin?",
- "authRegisterEmail": "Sähköpostiosoite",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -548,9 +526,6 @@
"noFileSelected": "Ei valittua tiedostoa",
"fallbackPage": ""
},
- "validationNameRequired": "Kirjoita nimesi",
- "validationNameTooLong": "Nimen tulee olla alle 50 merkkiä",
- "validationNameInvalidCharacters": "Käytäthän vain kirjaimia, välilyöntejä, heittomerkkejä tai yhdysmerkkejä",
"settingsSystemReset": "Järjestelmän palautus",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "Poista tili",
diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json
index 092cb3c9d..a4c31b5c6 100644
--- a/client/src/locales/fr.json
+++ b/client/src/locales/fr.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Vous n'avez pas de compte",
- "forgotPassword": "Mot de passe oublié",
"submit": "Envoyer",
"title": "Titre",
- "enterEmail": "Entrez votre adresse e-mail",
- "commonPassword": "Mot de passe",
- "authRegisterTitle": "Créer un compte",
- "authRegisterStepOneTitle": "Créez votre compte",
- "authRegisterStepOneDescription": "Entrez vos informations pour commencer",
- "authRegisterStepTwoTitle": "Créer votre profil",
- "authRegisterStepTwoDescription": "Parlez-nous un peu de vous",
- "authRegisterStepThreeTitle": "Presque fini !",
- "authRegisterStepThreeDescription": "Vérifiez vos infos",
- "authForgotPasswordSendInstructions": "Envoyer les instructions",
- "authForgotPasswordBackTo": "Retourner à",
- "authCheckEmailTitle": "Vérifiez votre e-mail",
- "authCheckEmailResendEmail": "Renvoyer le mail",
- "authCheckEmailBackTo": "Retourner à",
- "authSetNewPasswordTitle": "Définir un nouveau mot de passe",
- "authSetNewPasswordNewPassword": "Nouveau mot de passe",
- "authSetNewPasswordBackTo": "Retourner à",
- "authRegisterCreateAccount": "Créez votre compte pour commencer",
"distributedStatusHeaderText": "",
"distributedStatusSubHeaderText": "",
"settingsGeneralSettings": "Paramètres généraux",
@@ -262,7 +242,6 @@
"country": "PAYS",
"city": "VILLE",
"response": "",
- "passwordreset": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "Vous supprimez vraiment ce compte ?",
- "authRegisterEmail": "Email",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -548,9 +526,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "validationNameRequired": "Veuillez saisir votre nom",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "Veuillez utiliser uniquement des lettres, des espaces, des apostrophes ou des traits d'union",
"settingsSystemReset": "",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "Supprimer le compte",
diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json
index f042e5fd6..e90c89a62 100644
--- a/client/src/locales/pt-BR.json
+++ b/client/src/locales/pt-BR.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Não tenho conta",
- "forgotPassword": "Esqueci a senha",
"submit": "Enviar",
"title": "Título",
- "enterEmail": "Insira seu e-mail",
- "commonPassword": "Senha",
- "authRegisterTitle": "Criar uma conta",
- "authRegisterStepOneTitle": "Crie sua conta",
- "authRegisterStepOneDescription": "Insira seus dados para começar",
- "authRegisterStepTwoTitle": "Configure seu perfil",
- "authRegisterStepTwoDescription": "Conte-nos mais sobre você",
- "authRegisterStepThreeTitle": "Quase pronto!",
- "authRegisterStepThreeDescription": "Revise suas informações",
- "authForgotPasswordSendInstructions": "Enviar instruções",
- "authForgotPasswordBackTo": "Voltar para",
- "authCheckEmailTitle": "Verifique seu e-mail",
- "authCheckEmailResendEmail": "Reenviar e-mail",
- "authCheckEmailBackTo": "Voltar para",
- "authSetNewPasswordTitle": "Definir nova senha",
- "authSetNewPasswordNewPassword": "Nova senha",
- "authSetNewPasswordBackTo": "Voltar para",
- "authRegisterCreateAccount": "Crie sua conta para começar",
"distributedStatusHeaderText": "Cobertura em tempo real e em dispositivos reais",
"distributedStatusSubHeaderText": "Impulsionado por milhões de dispositivos em todo o mundo, visualize o desempenho do sistema por região global, país ou cidade",
"settingsGeneralSettings": "Configurações gerais",
@@ -261,7 +241,6 @@
"country": "PAÍS",
"city": "CIDADE",
"response": "RESPOSTA",
- "passwordreset": "Redefinição de senha",
"monitorStatusUp": "O monitor {name} ({url}) agora está ATIVO e respondendo",
"monitorStatusDown": "O monitor {name} ({url}) está INATIVO e não está respondendo",
"webhookSendSuccess": "Notificação de webhook enviada com sucesso",
@@ -535,7 +514,6 @@
"DeleteDescriptionText": "Isso removerá a conta e todos os dados associados do servidor. Essa ação não é reversível.",
"DeleteAccountWarning": "Remover sua conta significa que você não poderá fazer login novamente e todos os seus dados serão removidos. Isso não é reversível.",
"DeleteWarningTitle": "Deseja realmente remover esta conta?",
- "authRegisterEmail": "E-mail",
"bulkImport": {
"title": "Bulk Import",
"selectFileTips": "Selecione o arquivo CSV para enviar",
@@ -547,9 +525,6 @@
"noFileSelected": "Nenhum arquivo selecionado",
"fallbackPage": "Importe um arquivo para enviar uma lista de servidores em massa"
},
- "validationNameRequired": "Por favor digite seu nome",
- "validationNameTooLong": "O nome deve ter menos de 50 caracteres",
- "validationNameInvalidCharacters": "Por favor, use apenas letras, espaços, apóstrofos ou hifens",
"settingsSystemReset": "Resetar sistema",
"settingsSystemResetDescription": "Remova todos os monitores do seu sistema.",
"DeleteAccountTitle": "Remover conta",
diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json
index f6ccdd5fd..9c74921a1 100644
--- a/client/src/locales/ru.json
+++ b/client/src/locales/ru.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Нет аккаунта",
- "forgotPassword": "Забыли пароль",
"submit": "Подтвердить",
"title": "Название",
- "enterEmail": "Введите свой email",
- "commonPassword": "Пароль",
- "authRegisterTitle": "Создать аккаунт",
- "authRegisterStepOneTitle": "Создайте свой аккаут",
- "authRegisterStepOneDescription": "Введите свои данные, чтобы начать",
- "authRegisterStepTwoTitle": "Настройте свой профиль",
- "authRegisterStepTwoDescription": "Расскажите нам о себе",
- "authRegisterStepThreeTitle": "Почти готово!",
- "authRegisterStepThreeDescription": "Проверьте свою информацию",
- "authForgotPasswordSendInstructions": "Отправить инструкции",
- "authForgotPasswordBackTo": "Назад к",
- "authCheckEmailTitle": "Проверьте свою почту",
- "authCheckEmailResendEmail": "Отправить письмо повторно",
- "authCheckEmailBackTo": "Назад к",
- "authSetNewPasswordTitle": "Установите новый пароль",
- "authSetNewPasswordNewPassword": "Новый пароль",
- "authSetNewPasswordBackTo": "Назад к",
- "authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать",
"distributedStatusHeaderText": "Охват реального времени и реального устройства",
"distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу",
"settingsGeneralSettings": "Общие настройки",
@@ -258,7 +238,6 @@
"country": "СТРАНА",
"city": "ГОРОД",
"response": "ОТВЕТ",
- "passwordreset": "Сброс пароля",
"monitorStatusUp": "Монитор {name} ({url}) теперь включен и отвечает",
"monitorStatusDown": "Монитор {name} ({url}) ОТКЛЮЧЕН и не отвечает",
"webhookSendSuccess": "Уведомление Webhook успешно отправлено",
@@ -531,7 +510,6 @@
"DeleteDescriptionText": "Это приведет к удалению учетной записи и всех связанных с ней данных с сервера. Это необратимо.",
"DeleteAccountWarning": "Удаление вашей учетной записи означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.",
"DeleteWarningTitle": "Действительно удаляете эту учетную запись?",
- "authRegisterEmail": "Email",
"bulkImport": {
"title": "Массовый импорт",
"selectFileTips": "Выберите CSV-файл для загрузки",
@@ -543,9 +521,6 @@
"noFileSelected": "Файл не выбран",
"fallbackPage": "Импортируйте файл для массовой загрузки списка серверов"
},
- "validationNameRequired": "Пожалуйста, введите свое имя",
- "validationNameTooLong": "Длина имени не должна превышать 50 символов",
- "validationNameInvalidCharacters": "Пожалуйста, используйте только буквы, пробелы, апострофы или дефисы",
"settingsSystemReset": "Сброс системы",
"settingsSystemResetDescription": "Удалите все мониторы из вашей системы.",
"DeleteAccountTitle": "Удалить аккаунт",
diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json
index 0d650e985..28b9bd346 100644
--- a/client/src/locales/tr.json
+++ b/client/src/locales/tr.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "Hesabınız yok mu",
- "forgotPassword": "Parolamı unuttum",
"submit": "Gönder",
"title": "Başlık",
- "enterEmail": "E-posta adresinizi girin",
- "commonPassword": "Parola",
- "authRegisterTitle": "Hesap oluştur",
- "authRegisterStepOneTitle": "Hesabınızı oluşturun",
- "authRegisterStepOneDescription": "Başlamak için bilgilerinizi girin",
- "authRegisterStepTwoTitle": "Profilinizi ayarlayın",
- "authRegisterStepTwoDescription": "Kendiniz hakkında daha fazla bilgi verin",
- "authRegisterStepThreeTitle": "Neredeyse bitti!",
- "authRegisterStepThreeDescription": "Bilgilerinizi gözden geçirin",
- "authForgotPasswordSendInstructions": "Talimatları gönder",
- "authForgotPasswordBackTo": "Geri dön",
- "authCheckEmailTitle": "E-postanızı kontrol edin",
- "authCheckEmailResendEmail": "E-postayı yeniden gönder",
- "authCheckEmailBackTo": "Geri dön",
- "authSetNewPasswordTitle": "Yeni şifre belirle",
- "authSetNewPasswordNewPassword": "Yeni şifre",
- "authSetNewPasswordBackTo": "Geri dön",
- "authRegisterCreateAccount": "Hesap oluşturmak için devam et",
"distributedStatusHeaderText": "Gerçek zamanlı, Gerçek cihazlar kapsamı",
"distributedStatusSubHeaderText": "Dünya çapında milyonlarca cihaz tarafından desteklenen sistem performansını küresel bölgeye, ülkeye veya şehre göre görüntüleyin",
"settingsGeneralSettings": "Genel ayarlar",
@@ -262,7 +242,6 @@
"country": "ÜLKE",
"city": "ŞEHİR",
"response": "YANIT",
- "passwordreset": "Parola Sıfırlama",
"monitorStatusUp": "Monitör {name} ({url}) ayakta ve yanıt veriyor",
"monitorStatusDown": "Monitör {name} ({url}) yanıt vermiyor",
"webhookSendSuccess": "Web kanca bildirimi başarıyla gönderildi",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "Bu, hesabı ve ilişkili tüm verileri sunucudan kaldıracaktır. Bu geri alınamaz.",
"DeleteAccountWarning": "Hesabınızı kaldırmanız, tekrar oturum açamayacağınız ve tüm verilerinizin silineceği anlamına gelir. Bu geri alınamaz.",
"DeleteWarningTitle": "Gerçekten bu hesabı silmek istiyor musunuz?",
- "authRegisterEmail": "E-posta",
"bulkImport": {
"title": "Toplu içeri alma",
"selectFileTips": "Yüklenecek CSV dosyasını seçin",
@@ -548,9 +526,6 @@
"noFileSelected": "Hiçbir dosya seçilmedi",
"fallbackPage": "Toplu olarak sunucu listesini yüklemek için bir dosyayı içe aktarın"
},
- "validationNameRequired": "Lütfen adınızı girin",
- "validationNameTooLong": "İsim 50 karakterden az olmalıdır",
- "validationNameInvalidCharacters": "Lütfen sadece harfler, boşluk, tırnak ve çizgi kullanın",
"settingsSystemReset": "Sistem sıfırla",
"settingsSystemResetDescription": "Sistemdeki tüm monitörleri silin",
"DeleteAccountTitle": "Hesabı sil",
diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json
index 11c063580..2f4668548 100644
--- a/client/src/locales/zh-TW.json
+++ b/client/src/locales/zh-TW.json
@@ -181,28 +181,8 @@
}
}
},
- "dontHaveAccount": "沒有帳號",
- "forgotPassword": "忘記密碼",
"submit": "",
"title": "",
- "enterEmail": "輸入您的 E-mail",
- "commonPassword": "密碼",
- "authRegisterTitle": "建立帳號",
- "authRegisterStepOneTitle": "建立您的帳號",
- "authRegisterStepOneDescription": "清輸入您的個人檔案",
- "authRegisterStepTwoTitle": "設定您的個人檔案",
- "authRegisterStepTwoDescription": "請分享更多關於您的資訊",
- "authRegisterStepThreeTitle": "快完成了!",
- "authRegisterStepThreeDescription": "請確認您的資訊",
- "authForgotPasswordSendInstructions": "將說明發送至",
- "authForgotPasswordBackTo": "回去",
- "authCheckEmailTitle": "請查看您的電子郵件",
- "authCheckEmailResendEmail": "重新發送 E-mail",
- "authCheckEmailBackTo": "回去",
- "authSetNewPasswordTitle": "設定新密碼",
- "authSetNewPasswordNewPassword": "新密碼",
- "authSetNewPasswordBackTo": "回去",
- "authRegisterCreateAccount": "建立您的帳號開始使用",
"distributedStatusHeaderText": "實時、真實設備覆蓋",
"distributedStatusSubHeaderText": "由全球數百萬個設備提供支持,您可以按全球區域、國家或城市查看系統效能",
"settingsGeneralSettings": "一般設定",
@@ -262,7 +242,6 @@
"country": "",
"city": "",
"response": "",
- "passwordreset": "",
"monitorStatusUp": "",
"monitorStatusDown": "",
"webhookSendSuccess": "",
@@ -536,7 +515,6 @@
"DeleteDescriptionText": "",
"DeleteAccountWarning": "",
"DeleteWarningTitle": "",
- "authRegisterEmail": "",
"bulkImport": {
"title": "",
"selectFileTips": "",
@@ -548,9 +526,6 @@
"noFileSelected": "",
"fallbackPage": ""
},
- "validationNameRequired": "",
- "validationNameTooLong": "",
- "validationNameInvalidCharacters": "",
"settingsSystemReset": "",
"settingsSystemResetDescription": "",
"DeleteAccountTitle": "",
From 89bc2a9293ca15a099375bb68132f285d0400fd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=A0mahel?=
<48548230+ceskyDJ@users.noreply.github.com>
Date: Sun, 8 Jun 2025 16:33:12 +0200
Subject: [PATCH 11/11] style: Reformat code
---
.../Components/TabPanels/Account/TeamPanel.jsx | 5 ++++-
client/src/Components/ThemeSwitch/index.jsx | 2 +-
client/src/Pages/Auth/ForgotPassword.jsx | 5 ++++-
client/src/Pages/Auth/NewPasswordConfirmed.jsx | 4 +++-
.../src/Pages/Auth/Register/StepThree/index.jsx | 8 +++++---
client/src/Pages/Auth/SetNewPassword.jsx | 16 +++++++++++-----
client/src/Pages/Settings/SettingsAbout.jsx | 4 +++-
client/src/Validation/validation.js | 8 +++-----
server/validation/joi.js | 10 ++--------
9 files changed, 36 insertions(+), 26 deletions(-)
diff --git a/client/src/Components/TabPanels/Account/TeamPanel.jsx b/client/src/Components/TabPanels/Account/TeamPanel.jsx
index 52e3ea9ee..341f84ba7 100644
--- a/client/src/Components/TabPanels/Account/TeamPanel.jsx
+++ b/client/src/Components/TabPanels/Account/TeamPanel.jsx
@@ -115,7 +115,10 @@ const TeamPanel = () => {
email: newEmail,
}));
- const validation = newOrChangedCredentials.validate({ email: newEmail }, { abortEarly: false });
+ const validation = newOrChangedCredentials.validate(
+ { email: newEmail },
+ { abortEarly: false }
+ );
setErrors((prev) => {
const updatedErrors = { ...prev };
diff --git a/client/src/Components/ThemeSwitch/index.jsx b/client/src/Components/ThemeSwitch/index.jsx
index d1a7661bc..5efb17419 100644
--- a/client/src/Components/ThemeSwitch/index.jsx
+++ b/client/src/Components/ThemeSwitch/index.jsx
@@ -14,7 +14,7 @@ import SunAndMoonIcon from "./SunAndMoonIcon";
import { useDispatch, useSelector } from "react-redux";
import { setMode } from "../../Features/UI/uiSlice";
import "./index.css";
-import {useTranslation} from "react-i18next";
+import { useTranslation } from "react-i18next";
const ThemeSwitch = ({ width = 48, height = 48, color }) => {
const mode = useSelector((state) => state.ui.mode);
diff --git a/client/src/Pages/Auth/ForgotPassword.jsx b/client/src/Pages/Auth/ForgotPassword.jsx
index 3ab6913dd..2a887756e 100644
--- a/client/src/Pages/Auth/ForgotPassword.jsx
+++ b/client/src/Pages/Auth/ForgotPassword.jsx
@@ -75,7 +75,10 @@ const ForgotPassword = () => {
const { value } = event.target;
setForm({ email: value });
- const { error } = newOrChangedCredentials.validate({ email: value }, { abortEarly: false });
+ const { error } = newOrChangedCredentials.validate(
+ { email: value },
+ { abortEarly: false }
+ );
if (error) setErrors({ email: error.details[0].message });
else delete errors.email;
diff --git a/client/src/Pages/Auth/NewPasswordConfirmed.jsx b/client/src/Pages/Auth/NewPasswordConfirmed.jsx
index aba1fefea..db03f7de3 100644
--- a/client/src/Pages/Auth/NewPasswordConfirmed.jsx
+++ b/client/src/Pages/Auth/NewPasswordConfirmed.jsx
@@ -100,7 +100,9 @@ const NewPasswordConfirmed = () => {
{t("auth.forgotPassword.heading")}
- {t("auth.forgotPassword.subheadings.stepFour")}
+
+ {t("auth.forgotPassword.subheadings.stepFour")}
+
{
value={form.password}
onChange={handleChange}
error={errors.password ? true : false}
- helperText={errors.password === "auth.common.inputs.password.errors.empty"
- ? t(errors.password)
- : ""} // Other errors are related to required password conditions and are visualized below the input
+ helperText={
+ errors.password === "auth.common.inputs.password.errors.empty"
+ ? t(errors.password)
+ : ""
+ } // Other errors are related to required password conditions and are visualized below the input
endAdornment={}
/>
@@ -217,12 +219,16 @@ const SetNewPassword = () => {
variant={feedbacks.number}
/>
diff --git a/client/src/Pages/Settings/SettingsAbout.jsx b/client/src/Pages/Settings/SettingsAbout.jsx
index fd11df3ad..6acadd444 100644
--- a/client/src/Pages/Settings/SettingsAbout.jsx
+++ b/client/src/Pages/Settings/SettingsAbout.jsx
@@ -20,7 +20,9 @@ const SettingsAbout = () => {
- {t("common.appName")} {2.1}
+
+ {t("common.appName")} {2.1}
+
{t("settingsDevelopedBy")}
diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js
index 1074f3bb2..2826605c8 100644
--- a/client/src/Validation/validation.js
+++ b/client/src/Validation/validation.js
@@ -105,11 +105,9 @@ const loginCredentials = joi.object({
"string.empty": "auth.common.inputs.email.errors.empty",
"string.email": "auth.common.inputs.email.errors.invalid",
}),
- password: joi
- .string()
- .messages({
- "string.empty": "auth.common.inputs.password.errors.empty",
- }),
+ password: joi.string().messages({
+ "string.empty": "auth.common.inputs.password.errors.empty",
+ }),
});
const monitorValidation = joi.object({
diff --git a/server/validation/joi.js b/server/validation/joi.js
index 9a3c61a7c..9024c26a4 100755
--- a/server/validation/joi.js
+++ b/server/validation/joi.js
@@ -22,14 +22,8 @@ const passwordPattern =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\-_=+[\]{};:'",.<>~`|\\/])[A-Za-z0-9!?@#$%^&*()\-_=+[\]{};:'",.<>~`|\\/]+$/;
const loginValidation = joi.object({
- email: joi
- .string()
- .email()
- .required()
- .lowercase(),
- password: joi
- .string()
- .required(),
+ email: joi.string().email().required().lowercase(),
+ password: joi.string().required(),
});
const nameValidation = joi
.string()