diff --git a/client/src/Components/TabPanels/Account/PasswordPanel.jsx b/client/src/Components/TabPanels/Account/PasswordPanel.jsx index 6f2775cf1..474058e66 100644 --- a/client/src/Components/TabPanels/Account/PasswordPanel.jsx +++ b/client/src/Components/TabPanels/Account/PasswordPanel.jsx @@ -10,6 +10,7 @@ import { update } from "../../../Features/Auth/authSlice"; import { useDispatch, useSelector } from "react-redux"; import { createToast } from "../../../Utils/toastUtils"; import { getTouchedFieldErrors } from "../../../Validation/error"; +import { useTranslation } from "react-i18next"; const defaultPasswordsState = { password: "", @@ -26,6 +27,7 @@ const defaultPasswordsState = { const PasswordPanel = () => { const theme = useTheme(); const dispatch = useDispatch(); + const { t } = useTranslation(); const SPACING_GAP = theme.spacing(12); @@ -203,7 +205,7 @@ const PasswordPanel = () => { { spellCheck="false" > - {t('DeleteAccount')} + {t('DeleteAccountTitle')} { color="error" onClick={() => setIsOpen("delete")} > - {t('DeleteAccount')} + {t('DeleteAccountButton')} )} @@ -367,7 +367,7 @@ const ProfilePanel = () => { title={t('DeleteWarningTitle')} description={t('DeleteAccountWarning')} onCancel={() => setIsOpen("")} - confirmationButtonLabel={t('DeleteAccount')} + confirmationButtonLabel={t('DeleteAccountButton')} onConfirm={handleDeleteAccount} isLoading={isLoading} /> diff --git a/client/src/Pages/Auth/Login/Components/EmailStep.jsx b/client/src/Pages/Auth/Login/Components/EmailStep.jsx index ec5a4b2db..6615277ba 100644 --- a/client/src/Pages/Auth/Login/Components/EmailStep.jsx +++ b/client/src/Pages/Auth/Login/Components/EmailStep.jsx @@ -58,7 +58,7 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => { onInput={(e) => (e.target.value = e.target.value.toLowerCase())} onChange={onChange} error={errors.email ? true : false} - helperText={errors.email} + helperText={errors.email ? t(errors.email) : ""} ref={inputRef} /> { - const dispatch = useDispatch(); - const navigate = useNavigate(); const theme = useTheme(); + const dispatch = useDispatch(); const { t } = useTranslation(); - + const navigate = useNavigate(); const authState = useSelector((state) => state.auth); const { authToken } = authState; @@ -94,8 +94,10 @@ const Login = () => { { abortEarly: false } ); if (error) { - setErrors((prev) => ({ ...prev, email: error.details[0].message })); - createToast({ body: error.details[0].message }); + const errorMessage = error.details[0].message; + const translatedMessage = errorMessage.startsWith('auth') ? t(errorMessage) : errorMessage; + setErrors((prev) => ({ ...prev, email: translatedMessage })); + createToast({ body: translatedMessage }); } else { setStep(1); } @@ -112,8 +114,8 @@ const Login = () => { createToast({ body: error.details && error.details.length > 0 - ? error.details[0].message - : "Error validating data.", + ? (error.details[0].message.startsWith('auth') ? t(error.details[0].message) : error.details[0].message) + : t("Error validating data."), }); } else { const action = await dispatch(login(form)); diff --git a/client/src/Pages/Auth/Register/Register.jsx b/client/src/Pages/Auth/Register/Register.jsx index 45c866797..8017f306d 100644 --- a/client/src/Pages/Auth/Register/Register.jsx +++ b/client/src/Pages/Auth/Register/Register.jsx @@ -387,7 +387,7 @@ const Register = ({ isSuperAdmin }) => { }} sx={{ userSelect: "none", color: theme.palette.accent.main }} > - {t("authLoginTitle")} + {t("authRegisterLoginLink")} diff --git a/client/src/Pages/Auth/Register/StepTwo/index.jsx b/client/src/Pages/Auth/Register/StepTwo/index.jsx index d40ff161f..5f563b303 100644 --- a/client/src/Pages/Auth/Register/StepTwo/index.jsx +++ b/client/src/Pages/Auth/Register/StepTwo/index.jsx @@ -68,7 +68,11 @@ function StepTwo({ form, errors, onSubmit, onChange, onBack }) { onInput={(e) => (e.target.value = e.target.value.toLowerCase())} onChange={onChange} error={errors.email ? true : false} - helperText={errors.email && t("authRegisterEmailRequired")} + helperText={errors.email && ( + errors.email.includes("required") ? t("authRegisterEmailRequired") : + errors.email.includes("valid email") ? t("authRegisterEmailInvalid") : + errors.email + )} ref={inputRef} /> { )} {isAdmin && ( - - - {t("settingsDemoMonitors")} - - {t("settingsDemoMonitorsDescription")} - - - + <> + {/* Demo Monitors Section */} + + + {t("settingsDemoMonitors")} + + {t("settingsDemoMonitorsDescription")} + + {t("settingsAddDemoMonitors")} + + + {/* System Reset Section */} + + + {t("settingsSystemReset")} + + {t("settingsSystemResetDescription")} + + {t("settingsRemoveAllMonitors")} - - setIsOpen(deleteStatsMonitorsInitState)} - confirmationButtonLabel={t("settingsRemoveAllMonitorsDialogConfirm")} - onConfirm={handleDeleteAllMonitors} - isLoading={isLoading || authIsLoading || checksIsLoading} - /> - + setIsOpen(deleteStatsMonitorsInitState)} + confirmationButtonLabel={t("settingsRemoveAllMonitorsDialogConfirm")} + onConfirm={handleDeleteAllMonitors} + isLoading={isLoading || authIsLoading || checksIsLoading} + /> + + )} diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js index 38092c9e6..01a2fd48c 100644 --- a/client/src/Validation/validation.js +++ b/client/src/Validation/validation.js @@ -66,8 +66,8 @@ const credentials = joi.object({ return lowercasedValue; }) .messages({ - "string.empty": "Email is required", - "string.email": "Must be a valid email address", + "string.empty": "authRegisterEmailRequired", + "string.email": "authRegisterEmailInvalid", }), password: passwordSchema, newPassword: passwordSchema, @@ -253,7 +253,9 @@ const statusPageValidation = joi.object({ }); const settingsValidation = joi.object({ ttl: joi.number().required().messages({ - "string.empty": "TTL is required", + "string.empty": "Please enter a value", + "number.base": "Please enter a valid number", + "any.required": "Please enter a value" }), }); diff --git a/client/src/locales/gb.json b/client/src/locales/gb.json index 3ce6cb3dc..d74df8f3d 100644 --- a/client/src/locales/gb.json +++ b/client/src/locales/gb.json @@ -2,8 +2,8 @@ "dontHaveAccount": "Don't have account", "email": "E-mail", "forgotPassword": "Forgot Password", - "password": "password", - "signUp": "Sign up", + "password": "Password", + "signUp": "Sign Up", "submit": "Submit", "title": "Title", "continue": "Continue", @@ -15,8 +15,9 @@ "authForgotPasswordTitle": "Forgot password?", "authForgotPasswordResetPassword": "Reset password", "createPassword": "Create your password", - "createAPassword": "Create a password", + "createAPassword": "Password", "authRegisterAlreadyHaveAccount": "Already have an account?", + "authRegisterLoginLink": "Log In", "commonAppName": "Checkmate", "welcomeBack": "Welcome back! You're successfully logged in.", "authLoginEnterEmail": "Enter your email", @@ -41,7 +42,7 @@ "authSetNewPasswordDescription": "Your new password must be different from previously used passwords.", "authSetNewPasswordNewPassword": "New password", "authSetNewPasswordConfirmPassword": "Confirm password", - "confirmPassword": "Confirm your password", + "confirmPassword": "Re-enter password to confirm", "authSetNewPasswordResetPassword": "Reset password", "authSetNewPasswordBackTo": "Back to", "authPasswordMustBeAtLeast": "Must be at least", @@ -52,7 +53,10 @@ "authPasswordUpperCharacter": "one upper character", "authPasswordLowerCharacter": "one lower character", "authPasswordConfirmAndPassword": "Confirm password and password", - "authPasswordMustMatch": "must match", + "authPasswordMustMatch": "Passwords must match", + "validationNameRequired": "Please enter your name", + "validationNameTooLong": "Name should be less than 50 characters", + "validationNameInvalidCharacters": "Please use only letters, spaces, apostrophes, or hyphens", "authRegisterCreateAccount": "Create your account to get started", "authRegisterCreateSuperAdminAccount": "Create your super admin account to get started", "authRegisterSignUpWithEmail": "Create super admin account", @@ -61,7 +65,7 @@ "distributedStatusSubHeaderText": "Powered by millions devices worldwide, view a system performance by global region, country or city", "settingsGeneralSettings": "General settings", "settingsDisplayTimezone": "Display timezone", - "settingsDisplayTimezoneDescription": "The timezone of the dashboard you publicly display.", + "settingsDisplayTimezoneDescription": "Select the timezone used to display dates and times throughout the application.", "settingsAppearance": "Appearance", "settingsAppearanceDescription": "Switch between light and dark mode, or change user interface language", "settingsThemeMode": "Theme Mode", @@ -70,23 +74,25 @@ "settingsDistributedUptimeDescription": "Enable/disable distributed uptime monitoring.", "settingsEnabled": "Enabled", "settingsDisabled": "Disabled", - "settingsHistoryAndMonitoring": "History and monitoring", - "settingsHistoryAndMonitoringDescription": "Define here for how long you want to keep the data. You can also remove all past data.", + "settingsHistoryAndMonitoring": "History of monitoring", + "settingsHistoryAndMonitoringDescription": "Define how long you want to retain historical data. You can also clear all existing data.", "settingsTTLLabel": "The days you want to keep monitoring history.", "settingsTTLOptionalLabel": "0 for infinite", "settingsClearAllStats": "Clear all stats. This is irreversible.", "settingsClearAllStatsButton": "Clear all stats", "settingsClearAllStatsDialogTitle": "Do you want to clear all stats?", - "settingsClearAllStatsDialogDescription": "Once deleted, your monitors cannot be retrieved.", + "settingsClearAllStatsDialogDescription": "Once removed, the monitoring history and stats cannot be retrieved.", "settingsClearAllStatsDialogConfirm": "Yes, clear all stats", "settingsDemoMonitors": "Demo monitors", - "settingsDemoMonitorsDescription": "Here you can add and remove demo monitors.", - "settingsAddDemoMonitors": "Add demo monitors", + "settingsDemoMonitorsDescription": "Add sample monitors for demonstration purposes.", + "settingsAddDemoMonitors": "Adding demo monitors", "settingsAddDemoMonitorsButton": "Add demo monitors", - "settingsRemoveAllMonitors": "Remove all monitors", + "settingsSystemReset": "System reset", + "settingsSystemResetDescription": "Remove all monitors from your system.", + "settingsRemoveAllMonitors": "Removing all monitors", "settingsRemoveAllMonitorsButton": "Remove all monitors", "settingsRemoveAllMonitorsDialogTitle": "Do you want to remove all monitors?", - "settingsRemoveAllMonitorsDialogConfirm": "Yes, clear all monitors", + "settingsRemoveAllMonitorsDialogConfirm": "Yes, remove all monitors", "settingsWallet": "Wallet", "settingsWalletDescription": "Connect your wallet here. This is required for the Distributed Uptime monitor to connect to multiple nodes globally.", "settingsAbout": "About", @@ -106,12 +112,12 @@ "http": "HTTP", "monitor": "monitor", "aboutus": "About Us", - "signUP": "Sign Up", + "now": "Now", "delete": "Delete", "configure": "Configure", "networkError": "Network error", - "responseTime": "Response time:", + "responseTime": "Response time", "ms": "ms", "bar": "Bar", "area": "Area", @@ -387,20 +393,22 @@ "DragandDrop": "drag and drop", "MaxSize": "Maximum Size", "SupportedFormats": "Supported formats", - "FirstName": "First name", - "LastName": "Last name", - "EmailDescriptionText": "This is your current email address — it cannot be changed.", - "YourPhoto": "Your photo", + "FirstName": "Name", + "LastName": "Surname", + "EmailDescriptionText": "Your current email—it cannot be changed.", + "YourPhoto": "Profile photo", "PhotoDescriptionText": "This photo will be displayed in your profile page.", "save": "Save", - "DeleteAccount": "Delete account", - "DeleteDescriptionText": "Note that deleting your account will remove all data from the server. This is permanent and non-recoverable.", - "DeleteAccountWarning": "If you delete your account, you will no longer be able to sign in, and all of your data will be deleted. Deleting your account is permanent and non-recoverable action.", - "DeleteWarningTitle": "Really delete this account?", + "DeleteAccountTitle": "Remove account", + "DeleteAccountButton": "Remove account", + "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": "Email is required", + "authRegisterEmailRequired": "To continue, please enter your email address", + "authRegisterEmailInvalid": "Please enter a valid email address", "bulkImport": { "title": "Bulk Import", "selectFileTips": "Select CSV file to upload", diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index 4ee3f249e..700224b86 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -2,7 +2,7 @@ "dontHaveAccount": "Нет аккаунта", "email": "Почта", "forgotPassword": "Забыли пароль", - "password": "пароль", + "password": "Пароль", "signUp": "Зарегистрироваться", "submit": "Подтвердить", "title": "Название", @@ -15,8 +15,9 @@ "authForgotPasswordTitle": "Забыли пароль?", "authForgotPasswordResetPassword": "Сбросить пароль", "createPassword": "Создайте свой пароль", - "createAPassword": "Создайте пароль", + "createAPassword": "Пароль", "authRegisterAlreadyHaveAccount": "Уже есть аккаунт?", + "authRegisterLoginLink": "Войти", "commonAppName": "Checkmate", "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.", "authLoginEnterEmail": "Введите свой email", @@ -41,7 +42,8 @@ "authSetNewPasswordDescription": "Ваш новый пароль должен отличаться от ранее использованных паролей.", "authSetNewPasswordNewPassword": "Новый пароль", "authSetNewPasswordConfirmPassword": "Подтвердите пароль", - "confirmPassword": "Подтвердите ваш пароль", + "confirmPassword": "Введите пароль еще раз для подтверждения", + "confirmNewPasswordPlaceholder": "Подтвердите ваш новый пароль", "authSetNewPasswordResetPassword": "Сбросить пароль", "authSetNewPasswordBackTo": "Назад к", "authPasswordMustBeAtLeast": "Должно быть как минимум", @@ -52,7 +54,7 @@ "authPasswordUpperCharacter": "один верхний символ", "authPasswordLowerCharacter": "один нижний символ", "authPasswordConfirmAndPassword": "Подтвердите пароль и пароль", - "authPasswordMustMatch": "должен совпадать", + "authPasswordMustMatch": "Пароли должны совпадать", "authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать", "authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу", "authRegisterSignUpWithEmail": "Создать учетную запись суперадминистратора", @@ -60,12 +62,13 @@ "authRegisterFirstName": "Имя", "authRegisterLastName": "Фамилия", "authRegisterEmail": "Эл. почта", - "authRegisterEmailRequired": "Эл. почта обязательна", + "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите ваш адрес электронной почты", + "authRegisterEmailInvalid": "Пожалуйста, введите корректный адрес электронной почты", "distributedStatusHeaderText": "Охват реального времени и реального устройства", "distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу", "settingsGeneralSettings": "Общие настройки", "settingsDisplayTimezone": "Отображать часовой пояс", - "settingsDisplayTimezoneDescription": "Часовой пояс панели мониторинга, которую вы публично отображаете.", + "settingsDisplayTimezoneDescription": "Выберите часовой пояс, используемый для отображения дат и времени в приложении.", "settingsAppearance": "Внешний вид", "settingsAppearanceDescription": "Переключение между светлым и темным режимом или изменение языка пользовательского интерфейса", "settingsThemeMode": "Тема", @@ -74,23 +77,25 @@ "settingsDistributedUptimeDescription": "Включить/выключить distributed uptime monitoring.", "settingsEnabled": "Включено", "settingsDisabled": "Выключено", - "settingsHistoryAndMonitoring": "История и мониторинг", - "settingsHistoryAndMonitoringDescription": "Определите здесь, как долго вы хотите хранить данные. Вы также можете удалить все прошлые данные.", + "settingsHistoryAndMonitoring": "История мониторинга", + "settingsHistoryAndMonitoringDescription": "Определите, как долго вы хотите хранить исторические данные. Вы также можете очистить все существующие данные.", "settingsTTLLabel": "Дни, за которыми вы хотите следить.", "settingsTTLOptionalLabel": "0 для бесконечности", "settingsClearAllStats": "Очистить всю статистику. Это необратимо.", "settingsClearAllStatsButton": "Очистить всю статистику", "settingsClearAllStatsDialogTitle": "Хотите очистить всю статистику?", - "settingsClearAllStatsDialogDescription": "После удаления ваши мониторы не могут быть восстановлены.", + "settingsClearAllStatsDialogDescription": "После удаления история мониторинга и статистика не могут быть восстановлены.", "settingsClearAllStatsDialogConfirm": "Да, очистить всю статистику", "settingsDemoMonitors": "Демо мониторы", - "settingsDemoMonitorsDescription": "Здесь вы можете добавлять и удалять демонстрационные мониторы.", - "settingsAddDemoMonitors": "Добавьте демонстрационные мониторы", + "settingsDemoMonitorsDescription": "Добавьте примеры мониторов для демонстрации.", + "settingsAddDemoMonitors": "Добавление демонстрационных мониторов", "settingsAddDemoMonitorsButton": "Добавьте демонстрационные мониторы", - "settingsRemoveAllMonitors": "Удалить все демонстрационные мониторы", - "settingsRemoveAllMonitorsButton": "Удалить все демонстрационные мониторы", + "settingsSystemReset": "Сброс системы", + "settingsSystemResetDescription": "Удалить все мониторы из вашей системы.", + "settingsRemoveAllMonitors": "Удаление всех мониторов", + "settingsRemoveAllMonitorsButton": "Удалить все мониторы", "settingsRemoveAllMonitorsDialogTitle": "Хотите удалить все мониторы?", - "settingsRemoveAllMonitorsDialogConfirm": "Да, очистить все мониторы", + "settingsRemoveAllMonitorsDialogConfirm": "Да, удалить все мониторы", "settingsWallet": "Кошелёк", "settingsWalletDescription": "Подключите свой кошелек здесь. Это необходимо для того, чтобы монитор Distributed Uptime мог подключиться к нескольким узлам по всему миру.", "settingsAbout": "О", @@ -100,6 +105,16 @@ "settingsFailedToSave": "Не удалось сохранить настройки", "settingsStatsCleared": "Статистика успешно очищена", "settingsFailedToClearStats": "Не удалось очистить статистику", + "FirstName": "Имя", + "LastName": "Фамилия", + "YourPhoto": "Фото профиля", + "PhotoDescriptionText": "Это фото будет отображаться на странице вашего профиля.", + "EmailDescriptionText": "Ваш текущий email—его нельзя изменить.", + "DeleteAccountTitle": "Удалить аккаунт", + "DeleteAccountButton": "Удалить аккаунт", + "DeleteDescriptionText": "Это удалит аккаунт и все связанные данные с сервера. Это необратимо.", + "DeleteAccountWarning": "Удаление аккаунта означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.", + "DeleteWarningTitle": "Действительно удалить этот аккаунт?", "settingsDemoMonitorsAdded": "Успешно добавлены демонстрационные мониторы", "settingsFailedToAddDemoMonitors": "Не удалось добавить демонстрационные мониторы", "settingsMonitorsDeleted": "Успешно удалены все мониторы", @@ -110,12 +125,12 @@ "http": "HTTP", "monitor": "монитор", "aboutus": "О Нас", - "signUP": "Зарегистрироваться", + "now": "Сейчас", "delete": "Удалить", "configure": "Настроить", "networkError": "Ошибка сети", - "responseTime": "Время ответа:", + "responseTime": "Время ответа", "ms": "мс", "bar": "Bar", "area": "Area", diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index e942a2263..2323a54b8 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -15,8 +15,9 @@ "authForgotPasswordTitle": "Parolanızı mı unuttunuz?", "authForgotPasswordResetPassword": "Parola sıfırla", "createPassword": "Parolanızı oluşturun", - "createAPassword": "Bir parola oluşturun", + "createAPassword": "Parola", "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", + "authRegisterLoginLink": "Giriş Yap", "commonAppName": "Checkmate", "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.", "authLoginEnterEmail": "E-posta adresinizi girin", @@ -41,7 +42,8 @@ "authSetNewPasswordDescription": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.", "authSetNewPasswordNewPassword": "Yeni şifre", "authSetNewPasswordConfirmPassword": "Parolayı onayla", - "confirmPassword": "Parolanızı onaylayın", + "confirmPassword": "Onaylamak için parolayı tekrar girin", + "confirmNewPasswordPlaceholder": "Yeni parolanızı onaylayın", "authSetNewPasswordResetPassword": "Parola sıfırla", "authSetNewPasswordBackTo": "Geri dön", "authPasswordMustBeAtLeast": "En az", @@ -52,7 +54,7 @@ "authPasswordUpperCharacter": "bir büyük harf", "authPasswordLowerCharacter": "bir küçük harf", "authPasswordConfirmAndPassword": "Onay şifresi ve şifre", - "authPasswordMustMatch": "eşleşmelidir", + "authPasswordMustMatch": "Parolalar 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", @@ -61,7 +63,7 @@ "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", "settingsDisplayTimezone": "Görüntüleme saat dilimi", - "settingsDisplayTimezoneDescription": "Herkese açık olarak görüntülediğiniz kontrol panelinin saat dilimi.", + "settingsDisplayTimezoneDescription": "Uygulama genelinde tarih ve saatlerin görüntülenmesi için kullanılacak saat dilimini seçin.", "settingsAppearance": "Görünüm", "settingsAppearanceDescription": "Açık ve koyu mod arasında geçiş yapın veya kullanıcı arayüzü dilini değiştirin", "settingsThemeMode": "Tema", @@ -70,23 +72,25 @@ "settingsDistributedUptimeDescription": "Dağıtılmış çalışma süresi izlemeyi etkinleştirin/devre dışı bırakın.", "settingsEnabled": "Etkin", "settingsDisabled": "Devre dışı", - "settingsHistoryAndMonitoring": "Geçmiş ve izleme", - "settingsHistoryAndMonitoringDescription": "Verileri ne kadar süreyle saklamak istediğinizi burada tanımlayın. Ayrıca tüm geçmiş verileri kaldırabilirsiniz.", + "settingsHistoryAndMonitoring": "İzleme geçmişi", + "settingsHistoryAndMonitoringDescription": "Geçmiş verileri ne kadar süre saklamak istediğinizi tanımlayın. Ayrıca mevcut tüm verileri temizleyebilirsiniz.", "settingsTTLLabel": "İzleme geçmişini saklamak istediğiniz gün sayısı.", "settingsTTLOptionalLabel": "Sınırsız için 0", "settingsClearAllStats": "Tüm istatistikleri temizle. Bu geri alınamaz.", "settingsClearAllStatsButton": "Tüm istatistikleri temizle", "settingsClearAllStatsDialogTitle": "Tüm istatistikleri temizlemek istiyor musunuz?", - "settingsClearAllStatsDialogDescription": "Silindikten sonra, monitörleriniz geri alınamaz.", + "settingsClearAllStatsDialogDescription": "Kaldırıldıktan sonra, izleme geçmişi ve istatistikleri geri alınamaz.", "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", "settingsDemoMonitors": "Demo monitörler", - "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", - "settingsAddDemoMonitors": "Demo monitörler ekle", + "settingsDemoMonitorsDescription": "Gösterim amaçlı örnek monitörler ekleyin.", + "settingsAddDemoMonitors": "Demo monitörler ekleniyor", "settingsAddDemoMonitorsButton": "Demo monitörler ekle", - "settingsRemoveAllMonitors": "Tüm monitörleri kaldır", + "settingsSystemReset": "Sistem sıfırlama", + "settingsSystemResetDescription": "Sisteminizden tüm monitörleri kaldırın.", + "settingsRemoveAllMonitors": "Tüm monitörler kaldırılıyor", "settingsRemoveAllMonitorsButton": "Tüm monitörleri kaldır", "settingsRemoveAllMonitorsDialogTitle": "Tüm monitörleri kaldırmak istiyor musunuz?", - "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri temizle", + "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri kaldır", "settingsWallet": "Cüzdan", "settingsWalletDescription": "Cüzdanınızı buradan bağlayın. Bu, Dağıtılmış Çalışma Süresi monitörünün küresel olarak birden çok düğüme bağlanması için gereklidir.", "settingsAbout": "Hakkında", @@ -106,12 +110,12 @@ "http": "HTTP", "monitor": "monitör", "aboutus": "Hakkımızda", - "signUP": "Hesap Oluştur", + "now": "Şimdi", "delete": "Sil", "configure": "Yapılandır", "networkError": "Ağ hatası", - "responseTime": "Yanıt süresi:", + "responseTime": "Yanıt süresi", "ms": "ms", "bar": "Çubuk", "area": "Alan", @@ -387,20 +391,22 @@ "DragandDrop": "", "MaxSize": "", "SupportedFormats": "", - "FirstName": "", - "LastName": "", - "EmailDescriptionText": "", - "YourPhoto": "", - "PhotoDescriptionText": "", + "FirstName": "Ad", + "LastName": "Soyad", + "EmailDescriptionText": "Mevcut e-postanız—değiştirilemez.", + "YourPhoto": "Profil fotoğrafı", + "PhotoDescriptionText": "Bu fotoğraf profil sayfanızda görüntülenecektir.", "save": "", - "DeleteAccount": "", - "DeleteDescriptionText": "", - "DeleteAccountWarning": "", - "DeleteWarningTitle": "", - "authRegisterFirstName": "", - "authRegisterLastName": "", - "authRegisterEmail": "", - "authRegisterEmailRequired": "", + "DeleteAccountTitle": "Hesabı kaldır", + "DeleteAccountButton": "Hesabı kaldır", + "DeleteDescriptionText": "Bu, hesabı ve tüm ilişkili verileri sunucudan kaldıracaktır. Bu geri alınamaz.", + "DeleteAccountWarning": "Hesabınızı kaldırmak, tekrar oturum açamayacağınız ve tüm verilerinizin kaldırılacağı anlamına gelir. Bu geri alınamaz.", + "DeleteWarningTitle": "Bu hesabı gerçekten kaldırmak istiyor musunuz?", + "authRegisterFirstName": "Ad", + "authRegisterLastName": "Soyad", + "authRegisterEmail": "E-posta", + "authRegisterEmailRequired": "Devam etmek için lütfen e-posta adresinizi girin", + "authRegisterEmailInvalid": "Lütfen geçerli bir e-posta adresi girin", "bulkImport": { "title": "", "selectFileTips": "",