Merge pull request #2410 from ceskyDJ/i18n-refactor
i18n: Refactoring, fixes and cleaning up (part I)
This commit is contained in:
45 files changed
+2255
-1726
No files matched your search
@@ -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 (
|
||||
<>
|
||||
<Typography
|
||||
@@ -10,9 +13,9 @@ const NetworkError = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
Network error
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>Please check your connection</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -338,7 +338,7 @@ function Sidebar() {
|
||||
mt={theme.spacing(2)}
|
||||
sx={{ opacity: 0.8, fontWeight: 500 }}
|
||||
>
|
||||
Checkmate
|
||||
{t("common.appName")}
|
||||
</Typography>
|
||||
</Stack>
|
||||
</Stack>
|
||||
|
||||
@@ -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 },
|
||||
});
|
||||
|
||||
@@ -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
|
||||
@@ -240,7 +240,7 @@ const ProfilePanel = () => {
|
||||
gap={SPACING_GAP}
|
||||
>
|
||||
<Stack flex={0.9}>
|
||||
<Typography component="h1">{t("email")}</Typography>
|
||||
<Typography component="h1">{t("auth.common.inputs.email.label")}</Typography>
|
||||
<Typography
|
||||
component="p"
|
||||
sx={{ opacity: 0.6 }}
|
||||
|
||||
@@ -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,10 @@ 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 +145,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,
|
||||
|
||||
@@ -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 (
|
||||
<IconButton
|
||||
id="theme-toggle"
|
||||
title="Toggles light & dark"
|
||||
title={t("common.buttons.toggleTheme")}
|
||||
className={`theme-${mode}`}
|
||||
aria-label="auto"
|
||||
aria-live="polite"
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useDispatch } from "react-redux";
|
||||
import { useNavigate } from "react-router";
|
||||
import { createToast } from "../../Utils/toastUtils";
|
||||
import { forgotPassword } from "../../Features/Auth/authSlice";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Trans, useTranslation } from "react-i18next";
|
||||
import Background from "../../assets/Images/background-grid.svg?react";
|
||||
import EmailIcon from "../../assets/icons/email.svg?react";
|
||||
import Logo from "../../assets/icons/checkmate-icon.svg?react";
|
||||
@@ -31,16 +31,16 @@ const CheckEmail = () => {
|
||||
|
||||
const toastFail = [
|
||||
{
|
||||
body: "Email not found.",
|
||||
body: t("auth.forgotPassword.toasts.emailNotFound"),
|
||||
},
|
||||
{
|
||||
body: "Redirecting in 3...",
|
||||
body: t("auth.forgotPassword.toasts.redirect").replace("<seconds/>", "3"),
|
||||
},
|
||||
{
|
||||
body: "Redirecting in 2...",
|
||||
body: t("auth.forgotPassword.toasts.redirect").replace("<seconds/>", "2"),
|
||||
},
|
||||
{
|
||||
body: "Redirecting in 1...",
|
||||
body: t("auth.forgotPassword.toasts.redirect").replace("<seconds/>", "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("<email/>", 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"),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ const CheckEmail = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>Checkmate</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
width="100%"
|
||||
@@ -160,18 +160,24 @@ const CheckEmail = () => {
|
||||
svgHeight={24}
|
||||
mb={theme.spacing(4)}
|
||||
>
|
||||
<EmailIcon alt="email icon" />
|
||||
<EmailIcon alt={t("auth.forgotPassword.imageAlts.email")} />
|
||||
</IconBox>
|
||||
</Stack>
|
||||
<Typography component="h1">{t("authCheckEmailTitle")}</Typography>
|
||||
<Typography component="h1">{t("auth.forgotPassword.heading")}</Typography>
|
||||
<Typography>
|
||||
{t("authCheckEmailDescription")}{" "}
|
||||
<Typography
|
||||
className="email-sent-to"
|
||||
component="span"
|
||||
>
|
||||
{email || "username@email.com"}
|
||||
</Typography>
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.subheadings.stepTwo"
|
||||
components={{
|
||||
email: (
|
||||
<Typography
|
||||
className="email-sent-to"
|
||||
component="span"
|
||||
>
|
||||
{email || "username@email.com"}
|
||||
</Typography>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
<Button
|
||||
@@ -183,23 +189,27 @@ const CheckEmail = () => {
|
||||
maxWidth: 400,
|
||||
}}
|
||||
>
|
||||
{t("authCheckEmailOpenEmailButton")}
|
||||
{t("auth.forgotPassword.buttons.openEmail")}
|
||||
</Button>
|
||||
<Typography sx={{ alignSelf: "center", mt: theme.spacing(6) }}>
|
||||
{t("authCheckEmailDidntReceiveEmail")}{" "}
|
||||
<Typography
|
||||
component="span"
|
||||
onClick={resendToken}
|
||||
sx={{
|
||||
color: theme.palette.accent.main,
|
||||
userSelect: "none",
|
||||
pointerEvents: disabled ? "none" : "auto",
|
||||
cursor: disabled ? "default" : "pointer",
|
||||
opacity: disabled ? 0.5 : 1,
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.links.resend"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
onClick={resendToken}
|
||||
sx={{
|
||||
color: theme.palette.accent.main,
|
||||
userSelect: "none",
|
||||
pointerEvents: disabled ? "none" : "auto",
|
||||
cursor: disabled ? "default" : "pointer",
|
||||
opacity: disabled ? 0.5 : 1,
|
||||
}}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
>
|
||||
{t("authCheckEmailClickToResend")}
|
||||
</Typography>
|
||||
/>
|
||||
</Typography>
|
||||
</Stack>
|
||||
</Stack>
|
||||
@@ -207,15 +217,21 @@ const CheckEmail = () => {
|
||||
textAlign="center"
|
||||
p={theme.spacing(12)}
|
||||
>
|
||||
<Typography display="inline-block">{t("goBackTo")}</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
ml={theme.spacing(2)}
|
||||
color={theme.palette.accent.main}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
>
|
||||
{t("authLoginTitle")}
|
||||
<Typography display="inline-block">
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.links.login"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -4,14 +4,14 @@ 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";
|
||||
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 = () => {
|
||||
@@ -35,14 +35,14 @@ 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
|
||||
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("<email/>", 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"),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,10 @@ 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;
|
||||
@@ -120,7 +123,7 @@ const ForgotPassword = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>Checkmate</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
width="100%"
|
||||
@@ -162,11 +165,11 @@ const ForgotPassword = () => {
|
||||
svgHeight={24}
|
||||
mb={theme.spacing(4)}
|
||||
>
|
||||
<Key alt="password key icon" />
|
||||
<Key alt={t("auth.forgotPassword.imageAlts.passwordKey")} />
|
||||
</IconBox>
|
||||
</Stack>
|
||||
<Typography component="h1">{t("authForgotPasswordTitle")}</Typography>
|
||||
<Typography>{t("authForgotPasswordInstructions")}</Typography>
|
||||
<Typography component="h1">{t("auth.forgotPassword.heading")}</Typography>
|
||||
<Typography>{t("auth.forgotPassword.subheadings.stepOne")}</Typography>
|
||||
</Box>
|
||||
<Box
|
||||
component="form"
|
||||
@@ -179,13 +182,13 @@ const ForgotPassword = () => {
|
||||
<TextInput
|
||||
type="email"
|
||||
id="forgot-password-email-input"
|
||||
label={t("email")}
|
||||
label={t("auth.common.inputs.email.label")}
|
||||
isRequired={true}
|
||||
placeholder={t("enterEmail")}
|
||||
placeholder={t("auth.common.inputs.email.placeholder")}
|
||||
value={form.email}
|
||||
onChange={handleChange}
|
||||
error={errors.email ? true : false}
|
||||
helperText={t(errors.email)}
|
||||
helperText={t(errors.email)} // Localization keys are in validation.js
|
||||
/>
|
||||
<Button
|
||||
variant="contained"
|
||||
@@ -198,7 +201,7 @@ const ForgotPassword = () => {
|
||||
mt: theme.spacing(15),
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Box>
|
||||
</Stack>
|
||||
@@ -207,15 +210,21 @@ const ForgotPassword = () => {
|
||||
textAlign="center"
|
||||
p={theme.spacing(12)}
|
||||
>
|
||||
<Typography display="inline-block">{t("goBackTo")}</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
>
|
||||
{t("authLoginTitle")}
|
||||
<Typography display="inline-block">
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.links.login"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -35,8 +35,8 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => {
|
||||
position="relative"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("authLoginTitle")}</Typography>
|
||||
<Typography>{t("authLoginEnterEmail")}</Typography>
|
||||
<Typography component="h1">{t("auth.login.heading")}</Typography>
|
||||
<Typography>{t("auth.login.subheadings.stepOne")}</Typography>
|
||||
</Box>
|
||||
<Box
|
||||
textAlign="left"
|
||||
@@ -50,15 +50,14 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => {
|
||||
<TextInput
|
||||
type="email"
|
||||
id="login-email-input"
|
||||
label={t("email")}
|
||||
label={t("auth.common.inputs.email.label")}
|
||||
isRequired={true}
|
||||
placeholder="jordan.ellis@domain.com"
|
||||
placeholder={t("auth.common.inputs.email.placeholder")}
|
||||
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) : ""}
|
||||
helperText={errors.email ? t(errors.email) : ""} // Localization keys are in validation.js
|
||||
ref={inputRef}
|
||||
/>
|
||||
<Stack
|
||||
@@ -88,7 +87,7 @@ const EmailStep = ({ form, errors, onSubmit, onChange }) => {
|
||||
},
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -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")}
|
||||
</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
sx={{ userSelect: "none" }}
|
||||
onClick={handleNavigate}
|
||||
>
|
||||
{t("authForgotPasswordResetPassword")}
|
||||
<Trans
|
||||
i18nKey="auth.login.links.forgotPassword"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
sx={{ userSelect: "none" }}
|
||||
onClick={handleNavigate}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -38,8 +38,8 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
|
||||
textAlign="center"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("authLoginTitle")}</Typography>
|
||||
<Typography>{t("authLoginEnterPassword")}</Typography>
|
||||
<Typography component="h1">{t("auth.login.heading")}</Typography>
|
||||
<Typography>{t("auth.login.subheadings.stepTwo")}</Typography>
|
||||
</Box>
|
||||
<Box
|
||||
component="form"
|
||||
@@ -56,14 +56,14 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
|
||||
<TextInput
|
||||
type="password"
|
||||
id="login-password-input"
|
||||
label={t("password")}
|
||||
label={t("auth.common.inputs.password.label")}
|
||||
isRequired={true}
|
||||
placeholder="••••••••••"
|
||||
autoComplete="current-password"
|
||||
value={form.password}
|
||||
onChange={onChange}
|
||||
error={errors.password ? true : false}
|
||||
helperText={errors.password}
|
||||
helperText={errors.password ? t(errors.password) : ""} // Localization keys are in validation.js
|
||||
ref={inputRef}
|
||||
endAdornment={<PasswordEndAdornment />}
|
||||
/>
|
||||
@@ -95,7 +95,7 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
|
||||
}}
|
||||
>
|
||||
<ArrowBackRoundedIcon />
|
||||
{t("commonBack")}{" "}
|
||||
{t("auth.common.navigation.back")}{" "}
|
||||
</Button>
|
||||
<Button
|
||||
variant="contained"
|
||||
@@ -121,7 +121,7 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => {
|
||||
boxShadow: `none`,
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -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";
|
||||
@@ -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;
|
||||
|
||||
@@ -59,7 +59,7 @@ const Login = () => {
|
||||
[name]: lowerCasedValue,
|
||||
}));
|
||||
|
||||
const { error } = credentials.validate(
|
||||
const { error } = loginCredentials.validate(
|
||||
{ [name]: lowerCasedValue },
|
||||
{ abortEarly: false }
|
||||
);
|
||||
@@ -76,22 +76,22 @@ const Login = () => {
|
||||
event.preventDefault();
|
||||
|
||||
if (step === 0) {
|
||||
const { error } = credentials.validate(
|
||||
const { error } = loginCredentials.validate(
|
||||
{ email: form.email },
|
||||
{ abortEarly: false }
|
||||
);
|
||||
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 {
|
||||
setStep(1);
|
||||
}
|
||||
} else if (step === 1) {
|
||||
const { error } = credentials.validate(form, { abortEarly: false });
|
||||
const { error } = loginCredentials.validate(form, { abortEarly: false });
|
||||
|
||||
if (error) {
|
||||
// validation errors
|
||||
@@ -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"),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -174,7 +174,7 @@ const Login = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>Checkmate</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
direction="row"
|
||||
@@ -237,21 +237,25 @@ const Login = () => {
|
||||
display="inline-block"
|
||||
color={theme.palette.primary.main}
|
||||
>
|
||||
{t("doNotHaveAccount")}
|
||||
</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
sx={{
|
||||
cursor: "pointer",
|
||||
"&:hover": {
|
||||
color: theme.palette.accent.darker,
|
||||
},
|
||||
}}
|
||||
onClick={() => navigate("/register")}
|
||||
>
|
||||
{t("registerHere")}
|
||||
<Trans
|
||||
i18nKey="auth.login.links.register"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
sx={{
|
||||
cursor: "pointer",
|
||||
"&:hover": {
|
||||
color: theme.palette.accent.darker,
|
||||
},
|
||||
}}
|
||||
onClick={() => navigate("/register")}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -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 = () => {
|
||||
@@ -54,7 +54,7 @@ const NewPasswordConfirmed = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>Checkmate</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
width="100%"
|
||||
@@ -96,11 +96,13 @@ const NewPasswordConfirmed = () => {
|
||||
svgHeight={24}
|
||||
mb={theme.spacing(4)}
|
||||
>
|
||||
<ConfirmIcon alt="password confirm icon" />
|
||||
<ConfirmIcon alt={t("auth.forgotPassword.imageAlts.passwordConfirm")} />
|
||||
</IconBox>
|
||||
</Stack>
|
||||
<Typography component="h1">{t("passwordreset")}</Typography>
|
||||
<Typography mb={theme.spacing(2)}>{t("authNewPasswordConfirmed")}</Typography>
|
||||
<Typography component="h1">{t("auth.forgotPassword.heading")}</Typography>
|
||||
<Typography mb={theme.spacing(2)}>
|
||||
{t("auth.forgotPassword.subheadings.stepFour")}
|
||||
</Typography>
|
||||
</Box>
|
||||
<Button
|
||||
variant="contained"
|
||||
@@ -110,7 +112,7 @@ const NewPasswordConfirmed = () => {
|
||||
maxWidth: 400,
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Stack>
|
||||
@@ -118,15 +120,21 @@ const NewPasswordConfirmed = () => {
|
||||
textAlign="center"
|
||||
p={theme.spacing(12)}
|
||||
>
|
||||
<Typography display="inline-block">{t("goBackTo")}</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
>
|
||||
{t("authLoginTitle")}
|
||||
<Typography display="inline-block">
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.links.login"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.accent.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={handleNavigate}
|
||||
sx={{ userSelect: "none" }}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -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";
|
||||
@@ -35,11 +35,15 @@ const LandingPage = ({ isSuperAdmin, onSignup }) => {
|
||||
textAlign="center"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("signUp")}</Typography>
|
||||
<Typography component="h1">
|
||||
{isSuperAdmin
|
||||
? t("auth.registration.heading.superAdmin")
|
||||
: t("auth.registration.heading.user")}
|
||||
</Typography>
|
||||
<Typography>
|
||||
{isSuperAdmin
|
||||
? t("authRegisterCreateSuperAdminAccount")
|
||||
: t("authRegisterCreateAccount")}
|
||||
? t("auth.registration.description.superAdmin")
|
||||
: t("auth.registration.description.user")}
|
||||
</Typography>
|
||||
</Box>
|
||||
<Box width="100%">
|
||||
@@ -62,13 +66,15 @@ const LandingPage = ({ isSuperAdmin, onSignup }) => {
|
||||
}}
|
||||
>
|
||||
<Mail />
|
||||
{t("authRegisterSignUpWithEmail")}
|
||||
{isSuperAdmin
|
||||
? t("auth.registration.gettingStartedButton.superAdmin")
|
||||
: t("auth.registration.gettingStartedButton.user")}
|
||||
</Button>
|
||||
</Box>
|
||||
<Box maxWidth={400}>
|
||||
<Typography className="tos-p">
|
||||
<Trans
|
||||
i18nKey="authRegisterBySigningUp"
|
||||
i18nKey="auth.registration.termsAndPolicies"
|
||||
components={{
|
||||
a1: (
|
||||
<Typography
|
||||
@@ -171,7 +177,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,
|
||||
});
|
||||
@@ -189,7 +195,8 @@ const Register = ({ isSuperAdmin }) => {
|
||||
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"),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -271,7 +278,7 @@ const Register = ({ isSuperAdmin }) => {
|
||||
[name]: lowerCasedValue,
|
||||
}));
|
||||
|
||||
const { error } = credentials.validate(
|
||||
const { error } = newOrChangedCredentials.validate(
|
||||
{ [name]: lowerCasedValue },
|
||||
{ abortEarly: false, context: { password: form.password } }
|
||||
);
|
||||
@@ -316,7 +323,7 @@ const Register = ({ isSuperAdmin }) => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>{t("commonAppName")}</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
width="100%"
|
||||
@@ -346,6 +353,7 @@ const Register = ({ isSuperAdmin }) => {
|
||||
/>
|
||||
) : step === 1 ? (
|
||||
<StepOne
|
||||
isSuperAdmin={isSuperAdmin}
|
||||
form={form}
|
||||
errors={errors}
|
||||
onSubmit={handleStepOne}
|
||||
@@ -354,6 +362,7 @@ const Register = ({ isSuperAdmin }) => {
|
||||
/>
|
||||
) : step === 2 ? (
|
||||
<StepTwo
|
||||
isSuperAdmin={isSuperAdmin}
|
||||
form={form}
|
||||
errors={errors}
|
||||
onSubmit={handleStepTwo}
|
||||
@@ -362,6 +371,7 @@ const Register = ({ isSuperAdmin }) => {
|
||||
/>
|
||||
) : step === 3 ? (
|
||||
<StepThree
|
||||
isSuperAdmin={isSuperAdmin}
|
||||
/* form={form}
|
||||
errors={errors} */
|
||||
onSubmit={handleStepThree}
|
||||
@@ -377,17 +387,21 @@ const Register = ({ isSuperAdmin }) => {
|
||||
p={theme.spacing(12)}
|
||||
>
|
||||
<Typography display="inline-block">
|
||||
{t("authRegisterAlreadyHaveAccount")}
|
||||
</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
ml={theme.spacing(2)}
|
||||
onClick={() => {
|
||||
navigate("/login");
|
||||
}}
|
||||
sx={{ userSelect: "none", color: theme.palette.accent.main }}
|
||||
>
|
||||
{t("authRegisterLoginLink")}
|
||||
<Trans
|
||||
i18nKey="auth.registration.links.login"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
ml={theme.spacing(2)}
|
||||
onClick={() => {
|
||||
navigate("/login");
|
||||
}}
|
||||
sx={{ userSelect: "none", color: theme.palette.accent.main }}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("signUp")}</Typography>
|
||||
<Typography>{t("authRegisterStepOnePersonalDetails")}</Typography>
|
||||
<Typography component="h1">
|
||||
{isSuperAdmin
|
||||
? t("auth.registration.heading.superAdmin")
|
||||
: t("auth.registration.heading.user")}
|
||||
</Typography>
|
||||
<Typography>{t("auth.registration.subheadings.stepOne")}</Typography>
|
||||
</Box>
|
||||
|
||||
<Box
|
||||
@@ -64,26 +70,26 @@ function StepOne({ form, errors, onSubmit, onChange, onBack }) {
|
||||
>
|
||||
<TextInput
|
||||
id="register-firstname-input"
|
||||
label={t("authRegisterFirstName")}
|
||||
label={t("auth.common.inputs.firstName.label")}
|
||||
isRequired={true}
|
||||
placeholder="Jordan"
|
||||
placeholder={t("auth.common.inputs.firstName.placeholder")}
|
||||
autoComplete="given-name"
|
||||
value={form.firstName}
|
||||
onChange={onChange}
|
||||
error={errors.firstName ? true : false}
|
||||
helperText={errors.firstName}
|
||||
helperText={t(errors.firstName)} // Localization keys are in validation.js
|
||||
ref={inputRef}
|
||||
/>
|
||||
<TextInput
|
||||
id="register-lastname-input"
|
||||
label={t("authRegisterLastName")}
|
||||
label={t("auth.common.inputs.lastName.label")}
|
||||
isRequired={true}
|
||||
placeholder="Ellis"
|
||||
placeholder={t("auth.common.inputs.lastName.placeholder")}
|
||||
autoComplete="family-name"
|
||||
value={form.lastName}
|
||||
onChange={onChange}
|
||||
error={errors.lastName ? true : false}
|
||||
helperText={errors.lastName}
|
||||
helperText={t(errors.lastName)} // Localization keys are in validation.js
|
||||
/>
|
||||
</Box>
|
||||
<Stack
|
||||
@@ -108,7 +114,7 @@ function StepOne({ form, errors, onSubmit, onChange, onBack }) {
|
||||
}}
|
||||
>
|
||||
<ArrowBackRoundedIcon />
|
||||
{t("commonBack")}
|
||||
{t("auth.common.navigation.back")}
|
||||
</Button>
|
||||
<Button
|
||||
variant="contained"
|
||||
@@ -124,7 +130,7 @@ function StepOne({ form, errors, onSubmit, onChange, onBack }) {
|
||||
},
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("signUp")}</Typography>
|
||||
<Typography>{t("createPassword")}</Typography>
|
||||
<Typography component="h1">
|
||||
{isSuperAdmin
|
||||
? t("auth.registration.heading.superAdmin")
|
||||
: t("auth.registration.heading.user")}
|
||||
</Typography>
|
||||
<Typography>{t("auth.registration.subheadings.stepThree")}</Typography>
|
||||
</Box>
|
||||
<Box
|
||||
component="form"
|
||||
@@ -64,26 +70,32 @@ function StepThree({ onSubmit, onBack }) {
|
||||
type="password"
|
||||
id="register-password-input"
|
||||
name="password"
|
||||
label={t("authLoginEnterPassword")}
|
||||
label={t("auth.common.inputs.password.label")}
|
||||
isRequired={true}
|
||||
placeholder={t("createAPassword")}
|
||||
placeholder="••••••••••"
|
||||
autoComplete="current-password"
|
||||
value={form.password}
|
||||
onChange={handleChange}
|
||||
error={errors.password && errors.password[0] ? 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
|
||||
ref={inputRef}
|
||||
/>
|
||||
<TextInput
|
||||
type="password"
|
||||
id="register-confirm-input"
|
||||
name="confirm"
|
||||
label={t("authSetNewPasswordConfirmPassword")}
|
||||
label={t("auth.common.inputs.passwordConfirm.label")}
|
||||
isRequired={true}
|
||||
placeholder={t("confirmPassword")}
|
||||
placeholder={t("auth.common.inputs.passwordConfirm.placeholder")}
|
||||
autoComplete="current-password"
|
||||
value={form.confirm}
|
||||
onChange={handleChange}
|
||||
error={errors.confirm && errors.confirm[0] ? true : false}
|
||||
helperText={t(errors.confirm)} // Localization keys are in validation.js
|
||||
/>
|
||||
</Box>
|
||||
<Stack
|
||||
@@ -91,33 +103,33 @@ function StepThree({ onSubmit, onBack }) {
|
||||
mb={{ xs: theme.spacing(6), sm: theme.spacing(8) }}
|
||||
>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustBeAtLeast")}
|
||||
text={t("authPasswordCharactersLong")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.length.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.length.highlighted")}
|
||||
variant={feedbacks.length}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordSpecialCharacter")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.special.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.special.highlighted")}
|
||||
variant={feedbacks.special}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordOneNumber")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.number.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.number.highlighted")}
|
||||
variant={feedbacks.number}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordUpperCharacter")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.uppercase.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.uppercase.highlighted")}
|
||||
variant={feedbacks.uppercase}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordLowerCharacter")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.lowercase.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.lowercase.highlighted")}
|
||||
variant={feedbacks.lowercase}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordConfirmAndPassword")}
|
||||
text={t("authPasswordMustMatch")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.match.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.match.highlighted")}
|
||||
variant={feedbacks.confirm}
|
||||
/>
|
||||
</Stack>
|
||||
@@ -141,7 +153,7 @@ function StepThree({ onSubmit, onBack }) {
|
||||
}}
|
||||
>
|
||||
<ArrowBackRoundedIcon />
|
||||
{t("commonBack")}
|
||||
{t("auth.common.navigation.back")}
|
||||
</Button>
|
||||
<Button
|
||||
type="submit"
|
||||
@@ -161,7 +173,7 @@ function StepThree({ onSubmit, onBack }) {
|
||||
},
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<Box>
|
||||
<Typography component="h1">{t("signUp")}</Typography>
|
||||
<Typography>{t("enterEmail")}</Typography>
|
||||
<Typography component="h1">
|
||||
{isSuperAdmin
|
||||
? t("auth.registration.heading.superAdmin")
|
||||
: t("auth.registration.heading.user")}
|
||||
</Typography>
|
||||
<Typography>{t("auth.registration.subheadings.stepTwo")}</Typography>
|
||||
</Box>
|
||||
|
||||
<Box
|
||||
@@ -60,22 +66,15 @@ function StepTwo({ form, errors, onSubmit, onChange, onBack }) {
|
||||
<TextInput
|
||||
type="email"
|
||||
id="register-email-input"
|
||||
label={t("authRegisterEmail")}
|
||||
label={t("auth.common.inputs.email.label")}
|
||||
isRequired={true}
|
||||
placeholder="jordan.ellis@domain.com"
|
||||
placeholder={t("auth.common.inputs.email.placeholder")}
|
||||
autoComplete="email"
|
||||
value={form.email}
|
||||
onInput={(e) => (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}
|
||||
/>
|
||||
<Stack
|
||||
@@ -98,7 +97,7 @@ function StepTwo({ form, errors, onSubmit, onChange, onBack }) {
|
||||
}}
|
||||
>
|
||||
<ArrowBackRoundedIcon />
|
||||
{t("commonBack")}
|
||||
{t("auth.common.navigation.back")}
|
||||
</Button>
|
||||
<Button
|
||||
variant="contained"
|
||||
@@ -114,7 +113,7 @@ function StepTwo({ form, errors, onSubmit, onChange, onBack }) {
|
||||
},
|
||||
}}
|
||||
>
|
||||
{t("continue")}
|
||||
{t("auth.common.navigation.continue")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -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";
|
||||
@@ -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();
|
||||
@@ -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 },
|
||||
});
|
||||
@@ -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,
|
||||
});
|
||||
@@ -98,7 +98,7 @@ const SetNewPassword = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>{t("commonAppName")}</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
width="100%"
|
||||
@@ -140,11 +140,11 @@ const SetNewPassword = () => {
|
||||
svgHeight={24}
|
||||
mb={theme.spacing(4)}
|
||||
>
|
||||
<LockIcon alt="lock icon" />
|
||||
<LockIcon alt={t("auth.forgotPassword.imageAlts.lock")} />
|
||||
</IconBox>
|
||||
</Stack>
|
||||
<Typography component="h1">{t("authSetNewPasswordTitle")}</Typography>
|
||||
<Typography>{t("authSetNewPasswordDescription")}</Typography>
|
||||
<Typography component="h1">{t("auth.forgotPassword.heading")}</Typography>
|
||||
<Typography>{t("auth.forgotPassword.subheadings.stepThree")}</Typography>
|
||||
</Box>
|
||||
<Box
|
||||
width="100%"
|
||||
@@ -165,13 +165,17 @@ const SetNewPassword = () => {
|
||||
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={<PasswordEndAdornment />}
|
||||
/>
|
||||
</Box>
|
||||
@@ -185,13 +189,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={<PasswordEndAdornment />}
|
||||
/>
|
||||
</Box>
|
||||
@@ -200,33 +204,37 @@ const SetNewPassword = () => {
|
||||
mb={theme.spacing(12)}
|
||||
>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustBeAtLeast")}
|
||||
text={t("authPasswordCharactersLong")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.length.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.length.highlighted")}
|
||||
variant={feedbacks.length}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordSpecialCharacter")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.special.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.special.highlighted")}
|
||||
variant={feedbacks.special}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordOneNumber")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.number.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.number.highlighted")}
|
||||
variant={feedbacks.number}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordUpperCharacter")}
|
||||
noHighlightText={t(
|
||||
"auth.common.inputs.password.rules.uppercase.beginning"
|
||||
)}
|
||||
text={t("auth.common.inputs.password.rules.uppercase.highlighted")}
|
||||
variant={feedbacks.uppercase}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordMustContainAtLeast")}
|
||||
text={t("authPasswordLowerCharacter")}
|
||||
noHighlightText={t(
|
||||
"auth.common.inputs.password.rules.lowercase.beginning"
|
||||
)}
|
||||
text={t("auth.common.inputs.password.rules.lowercase.highlighted")}
|
||||
variant={feedbacks.lowercase}
|
||||
/>
|
||||
<Check
|
||||
noHighlightText={t("authPasswordConfirmAndPassword")}
|
||||
text={t("authPasswordMustMatch")}
|
||||
noHighlightText={t("auth.common.inputs.password.rules.match.beginning")}
|
||||
text={t("auth.common.inputs.password.rules.match.highlighted")}
|
||||
variant={feedbacks.confirm}
|
||||
/>
|
||||
</Stack>
|
||||
@@ -243,7 +251,7 @@ const SetNewPassword = () => {
|
||||
}
|
||||
sx={{ width: "100%", maxWidth: 400 }}
|
||||
>
|
||||
{t("authSetNewPasswordResetPassword")}
|
||||
{t("auth.forgotPassword.buttons.resetPassword")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Stack>
|
||||
@@ -251,15 +259,21 @@ const SetNewPassword = () => {
|
||||
textAlign="center"
|
||||
p={theme.spacing(12)}
|
||||
>
|
||||
<Typography display="inline-block">{t("goBackTo")} —</Typography>
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.primary.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={() => navigate("/login")}
|
||||
sx={{ userSelect: "none" }}
|
||||
>
|
||||
{t("authLoginTitle")}
|
||||
<Typography display="inline-block">
|
||||
<Trans
|
||||
i18nKey="auth.forgotPassword.links.login"
|
||||
components={{
|
||||
a: (
|
||||
<Typography
|
||||
component="span"
|
||||
color={theme.palette.primary.main}
|
||||
ml={theme.spacing(2)}
|
||||
onClick={() => navigate("/login")}
|
||||
sx={{ userSelect: "none" }}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Typography>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -322,7 +322,7 @@ const CreateInfrastructureMonitor = () => {
|
||||
<Link
|
||||
level="primary"
|
||||
url="https://github.com/bluewave-labs/checkmate-agent"
|
||||
label="Checkmate Monitoring Agent"
|
||||
label={t("common.monitoringAgentName")}
|
||||
/>
|
||||
</Typography>
|
||||
</Stack>
|
||||
|
||||
@@ -46,9 +46,9 @@ const InfrastructureDetails = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ const InfrastructureMonitors = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ const Maintenance = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -52,9 +52,9 @@ const PageSpeedDetails = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ const PageSpeed = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -71,7 +71,7 @@ const ServerUnreachable = () => {
|
||||
gap={theme.spacing(4)}
|
||||
>
|
||||
<Logo style={{ borderRadius: theme.shape.borderRadius }} />
|
||||
<Typography sx={{ userSelect: "none" }}>Checkmate</Typography>
|
||||
<Typography sx={{ userSelect: "none" }}>{t("common.appName")}</Typography>
|
||||
</Stack>
|
||||
<Stack
|
||||
direction="row"
|
||||
@@ -121,7 +121,7 @@ const ServerUnreachable = () => {
|
||||
>
|
||||
<Alert
|
||||
variant="error"
|
||||
body={t("backendUnreachable", "Server Unreachable")}
|
||||
body={t("errorPages.serverUnreachable.alertBox")}
|
||||
hasIcon={true}
|
||||
/>
|
||||
</Box>
|
||||
@@ -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")}
|
||||
</Typography>
|
||||
</Box>
|
||||
<Box sx={{ mt: theme.spacing(4) }}>
|
||||
@@ -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")}
|
||||
</Button>
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
@@ -20,7 +20,9 @@ const SettingsAbout = () => {
|
||||
</Typography>
|
||||
</Box>
|
||||
<Box>
|
||||
<Typography component="h2">Checkmate {2.1}</Typography>
|
||||
<Typography component="h2">
|
||||
{t("common.appName")} {2.1}
|
||||
</Typography>
|
||||
<Typography sx={{ mt: theme.spacing(2), mb: theme.spacing(6), opacity: 0.6 }}>
|
||||
{t("settingsDevelopedBy")}
|
||||
</Typography>
|
||||
|
||||
@@ -208,9 +208,9 @@ const CreateStatusPage = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -69,9 +69,9 @@ const PublicStatus = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,9 +32,9 @@ const StatusPages = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -95,9 +95,9 @@ const UptimeDetails = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -158,9 +158,9 @@ const UptimeMonitors = () => {
|
||||
marginY={theme.spacing(4)}
|
||||
color={theme.palette.primary.contrastTextTertiary}
|
||||
>
|
||||
{t("networkError")}
|
||||
{t("common.toasts.networkError")}
|
||||
</Typography>
|
||||
<Typography>{t("checkConnection")}</Typography>
|
||||
<Typography>{t("common.toasts.checkConnection")}</Typography>
|
||||
</GenericFallback>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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,13 +20,12 @@ 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 passwordSchema = joi
|
||||
const newPasswordSchema = joi
|
||||
.string()
|
||||
.trim()
|
||||
.min(8)
|
||||
@@ -56,34 +54,28 @@ const passwordSchema = 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 credentials = joi.object({
|
||||
const newOrChangedCredentials = joi.object({
|
||||
firstName: nameSchema,
|
||||
lastName: lastnameSchema,
|
||||
email: joi
|
||||
.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",
|
||||
"string.empty": "auth.common.inputs.email.errors.empty",
|
||||
"string.email": "auth.common.inputs.email.errors.invalid",
|
||||
}),
|
||||
password: passwordSchema,
|
||||
newPassword: passwordSchema,
|
||||
password: newPasswordSchema,
|
||||
newPassword: newPasswordSchema,
|
||||
confirm: joi
|
||||
.string()
|
||||
.trim()
|
||||
@@ -95,14 +87,29 @@ const credentials = 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(),
|
||||
inviteToken: joi.string().allow(""),
|
||||
});
|
||||
|
||||
const loginCredentials = joi.object({
|
||||
email: joi
|
||||
.string()
|
||||
.trim()
|
||||
.email({ tlds: { allow: false } })
|
||||
.lowercase()
|
||||
.messages({
|
||||
"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",
|
||||
}),
|
||||
});
|
||||
|
||||
const monitorValidation = joi.object({
|
||||
url: joi.when("type", {
|
||||
is: "docker",
|
||||
@@ -397,7 +404,8 @@ const infrastructureMonitorValidation = joi.object({
|
||||
});
|
||||
|
||||
export {
|
||||
credentials,
|
||||
newOrChangedCredentials,
|
||||
loginCredentials,
|
||||
imageValidation,
|
||||
monitorValidation,
|
||||
settingsValidation,
|
||||
|
||||
@@ -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": ""
|
||||
}
|
||||
}
|
||||
+193
-92
@@ -1,75 +1,203 @@
|
||||
{
|
||||
"dontHaveAccount": "",
|
||||
"email": "E-mail",
|
||||
"forgotPassword": "Zapomenuté heslo",
|
||||
"password": "",
|
||||
"signUp": "Registace",
|
||||
"submit": "Odeslat",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"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",
|
||||
"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? <a>Obnovte si ho</a>",
|
||||
"register": "Ještě nemáte účet? <a>Zaregistrujte se</a>"
|
||||
},
|
||||
"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 <a1>Podmínkami použití</a1> (anglicky) a <a2>Podmínkami zpracování osobních údajů</a2> (anglicky).",
|
||||
"links": {
|
||||
"login": "Máte již vytvořený účet? <a>Přihlašte se</a>"
|
||||
},
|
||||
"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 <email/>",
|
||||
"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 <a>Přihlášení</a>",
|
||||
"resend": "Nedorazil vám e-mail? <a>Klepněte pro opětovné zaslání</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "Instrukce vám dorazí na <email/>.",
|
||||
"emailNotFound": "Nepodařilo se nalézt e-mailovou adresu.",
|
||||
"redirect": "Přesměrování proběhne za <seconds/>...",
|
||||
"success": "Heslo bylo úspěšně obnoveno.",
|
||||
"error": "Obnova hesla se nepodařila. Zkuste to prosím znovu nebo kontaktujte podporu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"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í…"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
"createPassword": "",
|
||||
"createAPassword": "",
|
||||
"authRegisterAlreadyHaveAccount": "Máte již účet?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Zadejte svůj e-mail",
|
||||
"authRegisterTitle": "Vytvoření účtu",
|
||||
"authRegisterStepOneTitle": "",
|
||||
"authRegisterStepOneDescription": "Začněte tím, že zadáte své údaje",
|
||||
"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ě.",
|
||||
"authForgotPasswordSendInstructions": "",
|
||||
"authForgotPasswordBackTo": "",
|
||||
"authCheckEmailTitle": "",
|
||||
"authCheckEmailDescription": "Odkaz pro obnovu hesla zašleme na",
|
||||
"authCheckEmailResendEmail": "Znovu odeslat e-mail",
|
||||
"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",
|
||||
"authSetNewPasswordConfirmPassword": "",
|
||||
"confirmPassword": "",
|
||||
"authSetNewPasswordResetPassword": "Resetovat heslo",
|
||||
"authSetNewPasswordBackTo": "",
|
||||
"authPasswordMustBeAtLeast": "Musí být alespoň",
|
||||
"authPasswordCharactersLong": "",
|
||||
"authPasswordMustContainAtLeast": "",
|
||||
"authPasswordSpecialCharacter": "",
|
||||
"authPasswordOneNumber": "",
|
||||
"authPasswordUpperCharacter": "",
|
||||
"authPasswordLowerCharacter": "",
|
||||
"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",
|
||||
"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 +217,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": "",
|
||||
@@ -108,7 +236,6 @@
|
||||
"now": "",
|
||||
"delete": "",
|
||||
"configure": "",
|
||||
"networkError": "",
|
||||
"responseTime": "",
|
||||
"ms": "",
|
||||
"bar": "",
|
||||
@@ -116,11 +243,6 @@
|
||||
"country": "",
|
||||
"city": "",
|
||||
"response": "",
|
||||
"checkConnection": "",
|
||||
"passwordreset": "",
|
||||
"authRegisterStepOnePersonalDetails": "Zadejte své osobní údaje",
|
||||
"authCheckEmailOpenEmailButton": "",
|
||||
"authNewPasswordConfirmed": "",
|
||||
"monitorStatusUp": "",
|
||||
"monitorStatusDown": "",
|
||||
"webhookSendSuccess": "",
|
||||
@@ -394,10 +516,6 @@
|
||||
"DeleteDescriptionText": "",
|
||||
"DeleteAccountWarning": "",
|
||||
"DeleteWarningTitle": "",
|
||||
"authRegisterFirstName": "",
|
||||
"authRegisterLastName": "",
|
||||
"authRegisterEmail": "",
|
||||
"authRegisterEmailRequired": "",
|
||||
"bulkImport": {
|
||||
"title": "",
|
||||
"selectFileTips": "",
|
||||
@@ -409,27 +527,11 @@
|
||||
"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": "",
|
||||
@@ -514,7 +616,6 @@
|
||||
"state": "",
|
||||
"statusBreadCrumbsStatusPages": "",
|
||||
"statusBreadCrumbsDetails": "",
|
||||
"authForgotPasswordInstructions": "",
|
||||
"settingsThemeModeLight": "",
|
||||
"settingsThemeModeDark": "",
|
||||
"settingsClearAllStatsDialogCancel": "",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Noch kein Konto",
|
||||
"email": "E-Mail",
|
||||
"forgotPassword": "Passwort vergessen",
|
||||
"password": "passwort",
|
||||
"signUp": "Registrieren",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "",
|
||||
"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? <a>Passwort zurücksetzen</a>",
|
||||
"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": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "",
|
||||
"stillUnreachable": ""
|
||||
},
|
||||
"alertBox": "",
|
||||
"description": "",
|
||||
"retryButton": {
|
||||
"default": "",
|
||||
"processing": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?",
|
||||
"commonAppName": "Checkmate",
|
||||
"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": "",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "",
|
||||
"delete": "",
|
||||
"configure": "",
|
||||
"networkError": "",
|
||||
"responseTime": "",
|
||||
"ms": "",
|
||||
"bar": "",
|
||||
@@ -116,11 +242,6 @@
|
||||
"country": "",
|
||||
"city": "",
|
||||
"response": "",
|
||||
"checkConnection": "",
|
||||
"passwordreset": "",
|
||||
"authRegisterStepOnePersonalDetails": "",
|
||||
"authCheckEmailOpenEmailButton": "",
|
||||
"authNewPasswordConfirmed": "",
|
||||
"monitorStatusUp": "",
|
||||
"monitorStatusDown": "",
|
||||
"webhookSendSuccess": "",
|
||||
@@ -394,10 +515,6 @@
|
||||
"DeleteDescriptionText": "",
|
||||
"DeleteAccountWarning": "",
|
||||
"DeleteWarningTitle": "",
|
||||
"authRegisterFirstName": "",
|
||||
"authRegisterLastName": "",
|
||||
"authRegisterEmail": "",
|
||||
"authRegisterEmailRequired": "",
|
||||
"bulkImport": {
|
||||
"title": "",
|
||||
"selectFileTips": "",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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": "",
|
||||
@@ -514,7 +615,6 @@
|
||||
"state": "",
|
||||
"statusBreadCrumbsStatusPages": "",
|
||||
"statusBreadCrumbsDetails": "",
|
||||
"authForgotPasswordInstructions": "",
|
||||
"settingsThemeModeLight": "",
|
||||
"settingsThemeModeDark": "",
|
||||
"settingsClearAllStatsDialogCancel": "",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Don't have account",
|
||||
"email": "E-mail",
|
||||
"forgotPassword": "Forgot Password",
|
||||
"password": "Password",
|
||||
"signUp": "Sign Up",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": "Toggles light & dark"
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "Network error",
|
||||
"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? <a>Reset password</a>",
|
||||
"register": "Do not have an account? <a>Register here</a>"
|
||||
},
|
||||
"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 <a1>Terms of Service</a1> and <a2>Privacy Policy</a2>.",
|
||||
"links": {
|
||||
"login": "Already have an account? <a>Log In</a>"
|
||||
},
|
||||
"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 <email/>",
|
||||
"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 <a>Log In</a>",
|
||||
"resend": "Didn't receive the email? <a>Click to resend</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "Instructions sent to <email/>.",
|
||||
"emailNotFound": "Email not found.",
|
||||
"redirect": "Redirecting in <seconds/>...",
|
||||
"success": "Your password was reset successfully.",
|
||||
"error": "Unable to reset password. Please try again later or contact support."
|
||||
}
|
||||
}
|
||||
},
|
||||
"errorPages": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "Successfully reconnected to the server.",
|
||||
"stillUnreachable": "Server is still unreachable. Please try again later."
|
||||
},
|
||||
"alertBox": "Server Connection Error",
|
||||
"description": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.",
|
||||
"retryButton": {
|
||||
"default": "Retry connection",
|
||||
"processing": "Connecting..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Enter your email",
|
||||
"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",
|
||||
"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 <a1>Terms of Service</a1> and <a2>Privacy Policy</a2>.",
|
||||
"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",
|
||||
@@ -104,7 +231,6 @@
|
||||
"now": "Now",
|
||||
"delete": "Delete",
|
||||
"configure": "Configure",
|
||||
"networkError": "Network error",
|
||||
"responseTime": "Response time",
|
||||
"ms": "ms",
|
||||
"bar": "Bar",
|
||||
@@ -112,11 +238,6 @@
|
||||
"country": "COUNTRY",
|
||||
"city": "CITY",
|
||||
"response": "RESPONSE",
|
||||
"checkConnection": "Please check your connection",
|
||||
"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",
|
||||
@@ -386,10 +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?",
|
||||
"authRegisterFirstName": "Name",
|
||||
"authRegisterLastName": "Surname",
|
||||
"authRegisterEmail": "Email",
|
||||
"authRegisterEmailRequired": "To continue, please enter your email address",
|
||||
"bulkImport": {
|
||||
"title": "Bulk Import",
|
||||
"selectFileTips": "Select CSV file to upload",
|
||||
@@ -401,27 +518,11 @@
|
||||
"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",
|
||||
"settingsSystemReset": "System reset",
|
||||
"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",
|
||||
"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",
|
||||
@@ -505,7 +606,6 @@
|
||||
"state": "State",
|
||||
"statusBreadCrumbsStatusPages": "Status Pages",
|
||||
"statusBreadCrumbsDetails": "Details",
|
||||
"authForgotPasswordInstructions": "No worries, we'll send you reset instructions.",
|
||||
"settingsThemeModeLight": "Light",
|
||||
"settingsThemeModeDark": "Dark",
|
||||
"settingsClearAllStatsDialogCancel": "Cancel",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "No tengo una cuenta",
|
||||
"email": "Correo electronico",
|
||||
"forgotPassword": "He olvidado mi contraseña",
|
||||
"password": "Contraseña",
|
||||
"signUp": "Registrarse",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "",
|
||||
"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? <a>Restablecer contraseña</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 <email/>",
|
||||
"stepThree": "",
|
||||
"stepFour": ""
|
||||
},
|
||||
"buttons": {
|
||||
"openEmail": "",
|
||||
"resetPassword": "Restablecer contraseña"
|
||||
},
|
||||
"imageAlts": {
|
||||
"passwordKey": "",
|
||||
"email": "",
|
||||
"lock": "",
|
||||
"passwordConfirm": ""
|
||||
},
|
||||
"links": {
|
||||
"login": "Volver a <a>Inicio de session</a>",
|
||||
"resend": "No has recibido el correo electronico? <a>Presiona para reenviar</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"errorPages": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "",
|
||||
"stillUnreachable": ""
|
||||
},
|
||||
"alertBox": "",
|
||||
"description": "",
|
||||
"retryButton": {
|
||||
"default": "",
|
||||
"processing": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?",
|
||||
"commonAppName": "",
|
||||
"authLoginEnterEmail": "Introduce tu correo electronico",
|
||||
"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",
|
||||
"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": "",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "",
|
||||
"delete": "",
|
||||
"configure": "",
|
||||
"networkError": "",
|
||||
"responseTime": "",
|
||||
"ms": "",
|
||||
"bar": "",
|
||||
@@ -116,11 +242,6 @@
|
||||
"country": "",
|
||||
"city": "",
|
||||
"response": "",
|
||||
"checkConnection": "",
|
||||
"passwordreset": "",
|
||||
"authRegisterStepOnePersonalDetails": "",
|
||||
"authCheckEmailOpenEmailButton": "",
|
||||
"authNewPasswordConfirmed": "",
|
||||
"monitorStatusUp": "",
|
||||
"monitorStatusDown": "",
|
||||
"webhookSendSuccess": "",
|
||||
@@ -394,10 +515,6 @@
|
||||
"DeleteDescriptionText": "",
|
||||
"DeleteAccountWarning": "",
|
||||
"DeleteWarningTitle": "",
|
||||
"authRegisterFirstName": "",
|
||||
"authRegisterLastName": "",
|
||||
"authRegisterEmail": "",
|
||||
"authRegisterEmailRequired": "",
|
||||
"bulkImport": {
|
||||
"title": "",
|
||||
"selectFileTips": "",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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": "",
|
||||
@@ -514,7 +615,6 @@
|
||||
"state": "",
|
||||
"statusBreadCrumbsStatusPages": "",
|
||||
"statusBreadCrumbsDetails": "",
|
||||
"authForgotPasswordInstructions": "",
|
||||
"settingsThemeModeLight": "",
|
||||
"settingsThemeModeDark": "",
|
||||
"settingsClearAllStatsDialogCancel": "",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Ei tiliä",
|
||||
"email": "Sähköposti",
|
||||
"forgotPassword": "Unohtunut salasana",
|
||||
"password": "Salasana",
|
||||
"signUp": "Rekisteröidy",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "Verkkovirhe",
|
||||
"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? <a>Nollaa salasana</a>",
|
||||
"register": "Onko sinulla tili? <a>Rekisteröidy tästä</a>"
|
||||
},
|
||||
"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 <a1>Käyttöehdot</a1> ja <a2>Tietosuojakäytännön</a2>.",
|
||||
"links": {
|
||||
"login": "Onko sinulla jo tili? <a>Kirjaudu</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"success": ""
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"heading": "Unohditko salasanasi?",
|
||||
"subheadings": {
|
||||
"stepOne": "Ei hätää, lähetämme sinulle ohjeet salasanan palauttamiseen.",
|
||||
"stepTwo": "Lähetimme salasanan nollauslinkin osoitteeseen <email/>",
|
||||
"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 <a>Kirjaudu</a>",
|
||||
"resend": "Etkö saanut sähköpostia? <a>Klikkaa lähettääksesi uudelleen</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"errorPages": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "",
|
||||
"stillUnreachable": ""
|
||||
},
|
||||
"alertBox": "",
|
||||
"description": "",
|
||||
"retryButton": {
|
||||
"default": "",
|
||||
"processing": "Yhdistetään..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Syötä salasanasi",
|
||||
"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",
|
||||
"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 <a1>Käyttöehdot</a1> ja <a2>Tietosuojakäytännön</a2>.",
|
||||
"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",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "Nyt",
|
||||
"delete": "Poista",
|
||||
"configure": "Määritä",
|
||||
"networkError": "Verkkovirhe",
|
||||
"responseTime": "Vasteaika",
|
||||
"ms": "ms",
|
||||
"bar": "Palkki",
|
||||
@@ -116,11 +242,6 @@
|
||||
"country": "MAA",
|
||||
"city": "KAUPUNKI",
|
||||
"response": "Vastaus",
|
||||
"checkConnection": "Tarkista yhteytesi",
|
||||
"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",
|
||||
@@ -394,10 +515,6 @@
|
||||
"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": "",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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ä",
|
||||
"settingsSystemReset": "Järjestelmän palautus",
|
||||
"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ä",
|
||||
"backendUnreachable": "",
|
||||
"backendUnreachableMessage": "",
|
||||
"backendUnreachableError": "",
|
||||
"retryConnection": "",
|
||||
"retryingConnection": "Yhdistetään...",
|
||||
"backendReconnected": "",
|
||||
"backendStillUnreachable": "",
|
||||
"backendConnectionError": "",
|
||||
"maskedPageSpeedKeyPlaceholder": "*************************************",
|
||||
"pageSpeedApiKeyFieldTitle": "Google PageSpeed API-avain",
|
||||
"pageSpeedApiKeyFieldLabel": "PageSpeed API-avain",
|
||||
@@ -514,7 +615,6 @@
|
||||
"state": "Tila",
|
||||
"statusBreadCrumbsStatusPages": "Tilasivut",
|
||||
"statusBreadCrumbsDetails": "Tiedot",
|
||||
"authForgotPasswordInstructions": "Ei hätää, lähetämme sinulle ohjeet salasanan palauttamiseen.",
|
||||
"settingsThemeModeLight": "Vaalea",
|
||||
"settingsThemeModeDark": "Tumma",
|
||||
"settingsClearAllStatsDialogCancel": "Peruuta",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Vous n'avez pas de compte",
|
||||
"email": "E-mail",
|
||||
"forgotPassword": "Mot de passe oublié",
|
||||
"password": "mot de passe",
|
||||
"signUp": "S'inscrire",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "",
|
||||
"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é ? <a>Réinitialiser le mot de passe</a>",
|
||||
"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 ? <a>Se connecter</a>"
|
||||
},
|
||||
"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 à <email/>",
|
||||
"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 à <a>Se connecter</a>",
|
||||
"resend": "Vous n'avez pas reçu l'e-mail ? <a>Cliquez pour renvoyer</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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 ?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Entrez votre e-mail",
|
||||
"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",
|
||||
"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",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "",
|
||||
"delete": "Supprimer",
|
||||
"configure": "",
|
||||
"networkError": "",
|
||||
"responseTime": "",
|
||||
"ms": "",
|
||||
"bar": "",
|
||||
@@ -116,11 +242,6 @@
|
||||
"country": "PAYS",
|
||||
"city": "VILLE",
|
||||
"response": "",
|
||||
"checkConnection": "Vérifiez votre connexion",
|
||||
"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": "",
|
||||
@@ -394,10 +515,6 @@
|
||||
"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": "",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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",
|
||||
"settingsSystemReset": "",
|
||||
"settingsSystemResetDescription": "",
|
||||
"DeleteAccountTitle": "Supprimer le compte",
|
||||
"DeleteAccountButton": "Supprimer le compte",
|
||||
"authRegisterEmailInvalid": "Veuillez saisir une adresse e-mail valide",
|
||||
"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": "",
|
||||
@@ -514,7 +615,6 @@
|
||||
"state": "",
|
||||
"statusBreadCrumbsStatusPages": "",
|
||||
"statusBreadCrumbsDetails": "",
|
||||
"authForgotPasswordInstructions": "Nous vous enverrons des instructions de réinitialisation.",
|
||||
"settingsThemeModeLight": "Clair",
|
||||
"settingsThemeModeDark": "Sombre",
|
||||
"settingsClearAllStatsDialogCancel": "Annuler",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Não tenho conta",
|
||||
"email": "E-mail",
|
||||
"forgotPassword": "Esqueci a senha",
|
||||
"password": "Senha",
|
||||
"signUp": "Inscreva-se",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "Erro de rede",
|
||||
"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? <a>Redefinir a senha</a>",
|
||||
"register": "Ainda não tem uma conta? <a>Registre-se aqui</a>"
|
||||
},
|
||||
"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 <a1>Termos de Serviço</a1> e <a2>Política de Privacidade</a2>.",
|
||||
"links": {
|
||||
"login": "Já possui uma conta? <a>Login</a>"
|
||||
},
|
||||
"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 <email/>",
|
||||
"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 <a>Login</a>",
|
||||
"resend": "Não recebeu o e-mail? <a>Clique para reenviar</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Insira seu e-mail",
|
||||
"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",
|
||||
"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 <a1>Termos de Serviço</a1> e <a2>Política de Privacidade</a2>.",
|
||||
"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",
|
||||
@@ -107,7 +234,6 @@
|
||||
"now": "Agora",
|
||||
"delete": "Deletar",
|
||||
"configure": "Configurar",
|
||||
"networkError": "Erro de rede",
|
||||
"responseTime": "Tempo de resposta",
|
||||
"ms": "ms",
|
||||
"bar": "Bar",
|
||||
@@ -115,11 +241,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",
|
||||
"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",
|
||||
@@ -393,10 +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?",
|
||||
"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",
|
||||
@@ -408,27 +525,11 @@
|
||||
"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",
|
||||
"settingsSystemReset": "Resetar sistema",
|
||||
"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",
|
||||
"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",
|
||||
@@ -513,7 +614,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",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Нет аккаунта",
|
||||
"email": "Почта",
|
||||
"forgotPassword": "Забыли пароль",
|
||||
"password": "пароль",
|
||||
"signUp": "Зарегистрироваться",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "Ошибка сети",
|
||||
"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": "Забыли пароль? <a>Сбросить пароль</a>",
|
||||
"register": "У вас нет учетной записи? <a>Зарегистрируйтесь здесь</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"success": "Добро пожаловать обратно! Вы успешно вошли в систему.",
|
||||
"incorrectPassword": ""
|
||||
}
|
||||
},
|
||||
"registration": {
|
||||
"heading": {
|
||||
"superAdmin": "",
|
||||
"user": "Зарегистрироваться"
|
||||
},
|
||||
"subheadings": {
|
||||
"stepOne": "Введите свои личные данные",
|
||||
"stepTwo": "Введите свой email",
|
||||
"stepThree": "Создайте свой пароль"
|
||||
},
|
||||
"description": {
|
||||
"superAdmin": "Создайте учетную запись суперадминистратора, чтобы начать работу",
|
||||
"user": ""
|
||||
},
|
||||
"gettingStartedButton": {
|
||||
"superAdmin": "Зарегистрироваться по электронной почте",
|
||||
"user": ""
|
||||
},
|
||||
"termsAndPolicies": "Регистрируясь, вы соглашаетесь с нашими",
|
||||
"links": {
|
||||
"login": "Уже есть аккаунт? <a>Войти</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"success": ""
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"heading": "Забыли пароль?",
|
||||
"subheadings": {
|
||||
"stepOne": "Не беспокойтесь, мы вышлем вам инструкции по сбросу настроек.",
|
||||
"stepTwo": "Мы отправили ссылку для сброса пароля <email/>",
|
||||
"stepThree": "Ваш новый пароль должен отличаться от ранее использованных паролей.",
|
||||
"stepFour": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом."
|
||||
},
|
||||
"buttons": {
|
||||
"openEmail": "Откройте приложение почты",
|
||||
"resetPassword": "Сбросить пароль"
|
||||
},
|
||||
"imageAlts": {
|
||||
"passwordKey": "",
|
||||
"email": "",
|
||||
"lock": "",
|
||||
"passwordConfirm": ""
|
||||
},
|
||||
"links": {
|
||||
"login": "Назад к <a>Войти</a>",
|
||||
"resend": "Не получили письмо? <a>Нажмите, чтобы отправить повторно</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"errorPages": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "Успешно подключен к серверу.",
|
||||
"stillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже."
|
||||
},
|
||||
"alertBox": "Ошибка подключения к серверу",
|
||||
"description": "Нам не удается подключиться к серверу. Пожалуйста, проверьте подключение к Интернету или конфигурацию вашего развертывания, если проблема не устранена.",
|
||||
"retryButton": {
|
||||
"default": "Повторите попытку подключения",
|
||||
"processing": "Подключение..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"submit": "Подтвердить",
|
||||
"title": "Название",
|
||||
"continue": "Продолжить",
|
||||
"enterEmail": "Введите свой email",
|
||||
"authLoginTitle": "Войти",
|
||||
"authLoginEnterPassword": "Введите свой пароль",
|
||||
"commonPassword": "Пароль",
|
||||
"commonBack": "Назад",
|
||||
"authForgotPasswordTitle": "Забыли пароль?",
|
||||
"authForgotPasswordResetPassword": "Сбросить пароль",
|
||||
"createPassword": "Создайте свой пароль",
|
||||
"createAPassword": "Создайте пароль",
|
||||
"authRegisterAlreadyHaveAccount": "Уже есть аккаунт?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "Введите свой email",
|
||||
"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": "длиной 8 символов",
|
||||
"authPasswordMustContainAtLeast": "Должен содержать как минимум",
|
||||
"authPasswordSpecialCharacter": "один специальный символ",
|
||||
"authPasswordOneNumber": "одно число",
|
||||
"authPasswordUpperCharacter": "один верхний символ",
|
||||
"authPasswordLowerCharacter": "один нижний символ",
|
||||
"authPasswordConfirmAndPassword": "Подтвердите пароль и пароль",
|
||||
"authPasswordMustMatch": "должен совпадать",
|
||||
"authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать",
|
||||
"authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу",
|
||||
"authRegisterSignUpWithEmail": "Зарегистрироваться по электронной почте",
|
||||
"authRegisterBySigningUp": "Регистрируясь, вы соглашаетесь с нашими",
|
||||
"distributedStatusHeaderText": "Охват реального времени и реального устройства",
|
||||
"distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу",
|
||||
"settingsGeneralSettings": "Общие настройки",
|
||||
@@ -104,7 +231,6 @@
|
||||
"now": "Сейчас",
|
||||
"delete": "Удалить",
|
||||
"configure": "Настроить",
|
||||
"networkError": "Ошибка сети",
|
||||
"responseTime": "Время ответа:",
|
||||
"ms": "мс",
|
||||
"bar": "Bar",
|
||||
@@ -112,11 +238,6 @@
|
||||
"country": "СТРАНА",
|
||||
"city": "ГОРОД",
|
||||
"response": "ОТВЕТ",
|
||||
"checkConnection": "Пожалуйста, проверьте ваше соединение",
|
||||
"passwordreset": "Сброс пароля",
|
||||
"authRegisterStepOnePersonalDetails": "Введите свои личные данные",
|
||||
"authCheckEmailOpenEmailButton": "Откройте приложение почты",
|
||||
"authNewPasswordConfirmed": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом.",
|
||||
"monitorStatusUp": "Монитор {name} ({url}) теперь включен и отвечает",
|
||||
"monitorStatusDown": "Монитор {name} ({url}) ОТКЛЮЧЕН и не отвечает",
|
||||
"webhookSendSuccess": "Уведомление Webhook успешно отправлено",
|
||||
@@ -389,10 +510,6 @@
|
||||
"DeleteDescriptionText": "Это приведет к удалению учетной записи и всех связанных с ней данных с сервера. Это необратимо.",
|
||||
"DeleteAccountWarning": "Удаление вашей учетной записи означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.",
|
||||
"DeleteWarningTitle": "Действительно удаляете эту учетную запись?",
|
||||
"authRegisterFirstName": "Имя",
|
||||
"authRegisterLastName": "Фамилия",
|
||||
"authRegisterEmail": "Email",
|
||||
"authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите свой адрес электронной почты",
|
||||
"bulkImport": {
|
||||
"title": "Массовый импорт",
|
||||
"selectFileTips": "Выберите CSV-файл для загрузки",
|
||||
@@ -404,27 +521,11 @@
|
||||
"noFileSelected": "Файл не выбран",
|
||||
"fallbackPage": "Импортируйте файл для массовой загрузки списка серверов"
|
||||
},
|
||||
"welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.",
|
||||
"authRegisterLoginLink": "Войти",
|
||||
"validationNameRequired": "Пожалуйста, введите свое имя",
|
||||
"validationNameTooLong": "Длина имени не должна превышать 50 символов",
|
||||
"validationNameInvalidCharacters": "Пожалуйста, используйте только буквы, пробелы, апострофы или дефисы",
|
||||
"settingsSystemReset": "Сброс системы",
|
||||
"settingsSystemResetDescription": "Удалите все мониторы из вашей системы.",
|
||||
"DeleteAccountTitle": "Удалить аккаунт",
|
||||
"DeleteAccountButton": "Удалить аккаунт",
|
||||
"authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты",
|
||||
"publicLink": "Публичная ссылка",
|
||||
"doNotHaveAccount": "У вас нет учетной записи?",
|
||||
"registerHere": "Зарегистрируйтесь здесь",
|
||||
"backendUnreachable": "Ошибка подключения к серверу",
|
||||
"backendUnreachableMessage": "Нам не удается подключиться к серверу. Пожалуйста, проверьте подключение к Интернету или конфигурацию вашего развертывания, если проблема не устранена.",
|
||||
"backendUnreachableError": "Не удается подключиться к серверу. Пожалуйста, повторите попытку позже.",
|
||||
"retryConnection": "Повторите попытку подключения",
|
||||
"retryingConnection": "Подключение...",
|
||||
"backendReconnected": "Успешно подключен к серверу.",
|
||||
"backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.",
|
||||
"backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте свое сетевое подключение.",
|
||||
"maskedPageSpeedKeyPlaceholder": "*************************************",
|
||||
"pageSpeedApiKeyFieldTitle": "Ключ API Google PageSpeed",
|
||||
"pageSpeedApiKeyFieldLabel": "Ключ API PageSpeed",
|
||||
@@ -509,7 +610,6 @@
|
||||
"state": "Состояние",
|
||||
"statusBreadCrumbsStatusPages": "Страницы статуса",
|
||||
"statusBreadCrumbsDetails": "Подробности",
|
||||
"authForgotPasswordInstructions": "Не беспокойтесь, мы вышлем вам инструкции по сбросу настроек.",
|
||||
"settingsThemeModeLight": "Светлая",
|
||||
"settingsThemeModeDark": "Тёмная",
|
||||
"settingsClearAllStatsDialogCancel": "Отменить",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "Hesabınız yok mu",
|
||||
"email": "E-posta",
|
||||
"forgotPassword": "Parolamı unuttum",
|
||||
"password": "Parola",
|
||||
"signUp": "Kayıt Ol",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "Ağ hatası",
|
||||
"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? <a>Parola sıfırla</a>",
|
||||
"register": "Bir hesabınız yok mu? <a>Buradan kayıt olun</a>"
|
||||
},
|
||||
"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ı? <a>Giriş yap</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"success": ""
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"heading": "Parolanızı mı unuttunuz?",
|
||||
"subheadings": {
|
||||
"stepOne": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.",
|
||||
"stepTwo": "<email/> 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 <a>Giriş Yap</a>",
|
||||
"resend": "E-posta almadınız mı? <a>Yeniden göndermek için tıklayın</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"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..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"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ı?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "E-posta adresinizi girin",
|
||||
"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",
|
||||
"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",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "Şimdi",
|
||||
"delete": "Sil",
|
||||
"configure": "Yapılandır",
|
||||
"networkError": "Ağ hatası",
|
||||
"responseTime": "Yanıt süresi:",
|
||||
"ms": "ms",
|
||||
"bar": "Çubuk",
|
||||
@@ -116,11 +242,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ç",
|
||||
"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",
|
||||
@@ -394,10 +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?",
|
||||
"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",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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",
|
||||
"settingsSystemReset": "Sistem sıfırla",
|
||||
"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",
|
||||
"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ı",
|
||||
@@ -514,7 +615,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",
|
||||
|
||||
+182
-82
@@ -1,61 +1,188 @@
|
||||
{
|
||||
"dontHaveAccount": "沒有帳號",
|
||||
"email": "E-mail",
|
||||
"forgotPassword": "忘記密碼",
|
||||
"password": "密碼",
|
||||
"signUp": "註冊",
|
||||
"common": {
|
||||
"appName": "Checkmate",
|
||||
"monitoringAgentName": "Capture",
|
||||
"buttons": {
|
||||
"toggleTheme": ""
|
||||
},
|
||||
"toasts": {
|
||||
"networkError": "",
|
||||
"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": "我們已將密碼重設連結發送至 <email/>",
|
||||
"stepThree": "您的新密碼必須與之前使用過的密碼不同。",
|
||||
"stepFour": ""
|
||||
},
|
||||
"buttons": {
|
||||
"openEmail": "",
|
||||
"resetPassword": "重設密碼"
|
||||
},
|
||||
"imageAlts": {
|
||||
"passwordKey": "",
|
||||
"email": "",
|
||||
"lock": "",
|
||||
"passwordConfirm": ""
|
||||
},
|
||||
"links": {
|
||||
"login": "回去 <a>登入</a>",
|
||||
"resend": "沒有受到 E-mail? <a>點擊</a>"
|
||||
},
|
||||
"toasts": {
|
||||
"sent": "",
|
||||
"emailNotFound": "",
|
||||
"redirect": "",
|
||||
"success": "",
|
||||
"error": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"errorPages": {
|
||||
"serverUnreachable": {
|
||||
"toasts": {
|
||||
"reconnected": "",
|
||||
"stillUnreachable": ""
|
||||
},
|
||||
"alertBox": "",
|
||||
"description": "",
|
||||
"retryButton": {
|
||||
"default": "",
|
||||
"processing": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"submit": "",
|
||||
"title": "",
|
||||
"continue": "繼續",
|
||||
"enterEmail": "輸入您的 E-mail",
|
||||
"authLoginTitle": "登入",
|
||||
"authLoginEnterPassword": "輸入您的密碼",
|
||||
"commonPassword": "密碼",
|
||||
"commonBack": "回去",
|
||||
"authForgotPasswordTitle": "忘記密碼?",
|
||||
"authForgotPasswordResetPassword": "",
|
||||
"createPassword": "",
|
||||
"createAPassword": "",
|
||||
"authRegisterAlreadyHaveAccount": "已經有帳號嗎?",
|
||||
"commonAppName": "Checkmate",
|
||||
"authLoginEnterEmail": "輸入您的 E-mail",
|
||||
"authRegisterTitle": "建立帳號",
|
||||
"authRegisterStepOneTitle": "建立您的帳號",
|
||||
"authRegisterStepOneDescription": "清輸入您的個人檔案",
|
||||
"authRegisterStepTwoTitle": "設定您的個人檔案",
|
||||
"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": "一般設定",
|
||||
@@ -108,7 +235,6 @@
|
||||
"now": "",
|
||||
"delete": "",
|
||||
"configure": "",
|
||||
"networkError": "",
|
||||
"responseTime": "",
|
||||
"ms": "",
|
||||
"bar": "",
|
||||
@@ -116,11 +242,6 @@
|
||||
"country": "",
|
||||
"city": "",
|
||||
"response": "",
|
||||
"checkConnection": "",
|
||||
"passwordreset": "",
|
||||
"authRegisterStepOnePersonalDetails": "",
|
||||
"authCheckEmailOpenEmailButton": "",
|
||||
"authNewPasswordConfirmed": "",
|
||||
"monitorStatusUp": "",
|
||||
"monitorStatusDown": "",
|
||||
"webhookSendSuccess": "",
|
||||
@@ -394,10 +515,6 @@
|
||||
"DeleteDescriptionText": "",
|
||||
"DeleteAccountWarning": "",
|
||||
"DeleteWarningTitle": "",
|
||||
"authRegisterFirstName": "",
|
||||
"authRegisterLastName": "",
|
||||
"authRegisterEmail": "",
|
||||
"authRegisterEmailRequired": "",
|
||||
"bulkImport": {
|
||||
"title": "",
|
||||
"selectFileTips": "",
|
||||
@@ -409,27 +526,11 @@
|
||||
"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": "",
|
||||
@@ -514,7 +615,6 @@
|
||||
"state": "",
|
||||
"statusBreadCrumbsStatusPages": "",
|
||||
"statusBreadCrumbsDetails": "",
|
||||
"authForgotPasswordInstructions": "",
|
||||
"settingsThemeModeLight": "",
|
||||
"settingsThemeModeDark": "",
|
||||
"settingsClearAllStatsDialogCancel": "",
|
||||
|
||||
@@ -22,18 +22,8 @@ const passwordPattern =
|
||||
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\-_=+[\]{};:'",.<>~`|\\/])[A-Za-z0-9!?@#$%^&*()\-_=+[\]{};:'",.<>~`|\\/]+$/;
|
||||
|
||||
const loginValidation = joi.object({
|
||||
email: joi
|
||||
.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),
|
||||
email: joi.string().email().required().lowercase(),
|
||||
password: joi.string().required(),
|
||||
});
|
||||
const nameValidation = joi
|
||||
.string()
|
||||
|
||||
Reference in new issue
Block a user