Add translations
This commit is contained in:
parent
76af01ee8b
commit
98beb33993
@ -83,5 +83,26 @@
|
||||
"loginGoogle": "Login with Google",
|
||||
"noAccount": "Don't have an account yet?",
|
||||
"register": "Register"
|
||||
},
|
||||
"forgotPasswordEmail": {
|
||||
"enter": "Enter email",
|
||||
"desc": "Enter your email and create a password recovery code",
|
||||
"sendCode": "Get code",
|
||||
"error": "An error occurred while sending the email",
|
||||
"emailFormat": "Invalid email format",
|
||||
"userNotFound": "User with this email was not found",
|
||||
"serverError": "Server side error",
|
||||
"errorOccured": "An unexpected error occurred"
|
||||
},
|
||||
"confirmCodeForgot": {
|
||||
"enterCode": "Enter code",
|
||||
"enterInfo": "Enter the code to reset and recover your password",
|
||||
"code": "Confirmation code",
|
||||
"getPassword": "Reset password",
|
||||
"getCode": "Get code",
|
||||
"min": "The verification code consists of 6 digits",
|
||||
"incorrect": "Incorrect code",
|
||||
"serverError": "Error on the server side",
|
||||
"errorOccured": "An unexpected error occurred"
|
||||
}
|
||||
}
|
||||
|
@ -83,5 +83,26 @@
|
||||
"loginGoogle": "Google аркылуу кируңуз",
|
||||
"noAccount": "Аккаунт жок?",
|
||||
"register": "Каттоо"
|
||||
},
|
||||
"forgotPasswordEmail": {
|
||||
"enter": "Электрондук почтаны киргизиңиз",
|
||||
"desc": "Электрондук почтаңызды киргизиңиз жана сырсөздү калыбына келтирүү кодун түзүңүз",
|
||||
"sendCode": "Кодду түзөтүү",
|
||||
"error": "Электрондук кат жөнөтүүдө ката кетти",
|
||||
"emailFormat": "Жараксыз электрондук почта форматы",
|
||||
"userNotFound": "Бул электрондук почтасы бар колдонуучу табылган жок",
|
||||
"serverError": "Сервер тараптагы ката",
|
||||
"errorOccured": "Күтүлбөгөн ката кетти"
|
||||
},
|
||||
"confirmCodeForgot": {
|
||||
"enterCode": "Кодду киргизиңиз",
|
||||
"enterInfo": "Сырсөзүңүздү калыбына келтирүү жана калыбына келтирүү үчүн кодду киргизиңиз",
|
||||
"code": "Ырастоо коду",
|
||||
"getPassword": "Сырсөздү кайра коюу",
|
||||
"getCode": "Кодду алуу",
|
||||
"min": "Текшерүү коду 6 сандан турат",
|
||||
"incorrect": "Код туура эмес",
|
||||
"serverError": "Сервер тараптагы ката",
|
||||
"errorOccured": "Күтүлбөгөн ката кетти"
|
||||
}
|
||||
}
|
||||
|
@ -74,5 +74,26 @@
|
||||
"loginGoogle": "Войти через Google",
|
||||
"noAccount": "Еще нет аккаунта?",
|
||||
"register": "Зарегистрируйтесь"
|
||||
},
|
||||
"forgotPasswordEmail": {
|
||||
"enter": "Введите email",
|
||||
"desc": "Введите email и мы отправим код для восстановления пароля",
|
||||
"sendCode": "Отправить код",
|
||||
"error": "Произошла ошибка при отправке электронной почты",
|
||||
"emailFormat": "Неверный формат email",
|
||||
"userNotFound": "Пользователь с таким email не найден",
|
||||
"serverError": "Ошибка на стороне сервера",
|
||||
"errorOccured": "Произошла непредвиденная ошибка"
|
||||
},
|
||||
"confirmCodeForgot": {
|
||||
"enterCode": "Введите код",
|
||||
"enterInfo": "Введите код для сброса и восстановления пароля",
|
||||
"code": "Код подтверждения",
|
||||
"getPassword": "Сбросить пароль",
|
||||
"getCode": "Получить код",
|
||||
"min": "Код подтверждения состоит из 6 цифр",
|
||||
"incorrect": "Неверный код",
|
||||
"serverError": "Ошибка на стороне сервера",
|
||||
"errorOccured": "Произошла непредвиденная ошибка"
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import { z } from "zod";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import alert from "../../icons/alert-circle.svg";
|
||||
import { useTranslations } from "next-intl";
|
||||
|
||||
interface IConfirmCodeProps {
|
||||
setChangeForm: (boolean: boolean) => void;
|
||||
@ -21,9 +22,10 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
const [error, setError] = useState<string>("");
|
||||
const [loader, setLoader] = useState<boolean>(false);
|
||||
const router = useRouter();
|
||||
const t = useTranslations("confirmCodeForgot");
|
||||
|
||||
const confirmCodeScheme = z.object({
|
||||
code: z.string().min(6, "Код подтверждения состоит из 6 цифр"),
|
||||
code: z.string().min(6, t("min")),
|
||||
});
|
||||
type FormFields = z.infer<typeof confirmCodeScheme>;
|
||||
|
||||
@ -51,12 +53,12 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof AxiosError) {
|
||||
if (error.response?.status === 400) {
|
||||
setError("Неверный код");
|
||||
setError(t("incorrect"));
|
||||
} else {
|
||||
setError("Ошибка на стороне сервера");
|
||||
setError(t("serverError"));
|
||||
}
|
||||
} else {
|
||||
setError("Произошла непредвиденная ошибка");
|
||||
setError(t("errorOccured"));
|
||||
}
|
||||
setLoader(false);
|
||||
}
|
||||
@ -68,11 +70,9 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
</div>
|
||||
<div className="auth-header">
|
||||
<h2 className="text-[24px] font-bold leading-8 text-gray-900 text-center">
|
||||
Введите код
|
||||
{t("enterCode")}
|
||||
</h2>
|
||||
<p className="leading-6 text-gray-500">
|
||||
Введите код для сброса и восстановления пароля
|
||||
</p>
|
||||
<p className="leading-6 text-gray-500">{t("enterInfo")}</p>
|
||||
</div>
|
||||
|
||||
<form
|
||||
@ -81,7 +81,7 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
>
|
||||
<div>
|
||||
<label className="text-[14px] leading-5 text-gray-700">
|
||||
Код подтверждения
|
||||
{t("code")}
|
||||
</label>
|
||||
<div
|
||||
className={`flex items-center${
|
||||
@ -89,7 +89,7 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
}`}
|
||||
>
|
||||
<input
|
||||
placeholder="Код подтверждения"
|
||||
placeholder={t("code")}
|
||||
className="w-full text-[16px] leading-6 text-gray-900 px-[10px] py-[14px] border border-gray-300 rounded-lg shadow-sm bg-white"
|
||||
type="text"
|
||||
{...register("code", { required: true })}
|
||||
@ -105,7 +105,7 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
type="submit"
|
||||
className=" w-full h-[44px] rounded-md shadow-sm bg-light-blue font-bold leading-6 text-white"
|
||||
>
|
||||
{loader ? <Loader /> : "Сбросить пароль"}
|
||||
{loader ? <Loader /> : t("getPassword")}
|
||||
</button>
|
||||
{error && <div className="text-red-500">{error}</div>}
|
||||
{errors.root && (
|
||||
@ -116,7 +116,7 @@ const ConfirmCode: React.FC<IConfirmCodeProps> = ({
|
||||
onClick={() => setChangeForm(false)}
|
||||
className="text-light-blue leading-6"
|
||||
>
|
||||
Получить код
|
||||
{t("getCode")}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
@ -8,6 +8,7 @@ import { z } from "zod";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import alert from "../../icons/alert-circle.svg";
|
||||
import { useTranslations } from "next-intl";
|
||||
|
||||
interface ISendEmailProps {
|
||||
setChangeForm: (boolean: boolean) => void;
|
||||
@ -18,9 +19,10 @@ const SendEmail: React.FC<ISendEmailProps> = ({
|
||||
}: ISendEmailProps) => {
|
||||
const [error, setError] = useState<string>("");
|
||||
const [loader, setLoader] = useState<boolean>(false);
|
||||
const t = useTranslations("forgotPasswordEmail");
|
||||
|
||||
const sendEmailFormScheme = z.object({
|
||||
email: z.string().email("Неверный формат email"),
|
||||
email: z.string().email(t("emailFormat")),
|
||||
});
|
||||
type FormFields = z.infer<typeof sendEmailFormScheme>;
|
||||
|
||||
@ -46,12 +48,12 @@ const SendEmail: React.FC<ISendEmailProps> = ({
|
||||
if (error instanceof AxiosError) {
|
||||
console.log(error);
|
||||
if (error.response?.status === 400) {
|
||||
setError("Пользователь с таким email не найден");
|
||||
setError(t("userNotFound"));
|
||||
} else {
|
||||
setError("Ошибка на стороне сервера");
|
||||
setError(t("serverError"));
|
||||
}
|
||||
} else {
|
||||
setError("Произошла непредвиденная ошибка");
|
||||
setError(t("errorOccured"));
|
||||
}
|
||||
} finally {
|
||||
setLoader(false);
|
||||
@ -64,11 +66,9 @@ const SendEmail: React.FC<ISendEmailProps> = ({
|
||||
</div>
|
||||
<div className="mb-2 flex flex-col items-center gap-2 text-center">
|
||||
<h2 className="text-[24px] font-bold leading-8 text-gray-900">
|
||||
Введите email
|
||||
{t("enter")}
|
||||
</h2>
|
||||
<p className="leading-6 text-gray-500">
|
||||
Введите email и мы отправим код для восстановления пароля
|
||||
</p>
|
||||
<p className="leading-6 text-gray-500">{t("desc")}</p>
|
||||
</div>
|
||||
|
||||
<form
|
||||
@ -99,17 +99,11 @@ const SendEmail: React.FC<ISendEmailProps> = ({
|
||||
type="submit"
|
||||
className="w-full h-[44px] rounded-md shadow-sm bg-light-blue font-bold leading-6 text-white"
|
||||
>
|
||||
{loader ? <Loader /> : "Отправить код"}
|
||||
{loader ? <Loader /> : t("sendCode")}
|
||||
</button>
|
||||
</form>
|
||||
{error && <div className="text-red-500">{error}</div>}
|
||||
{errors.root && <div className="text-red-500">{errors.root.message}</div>}
|
||||
<button
|
||||
onClick={() => setChangeForm(true)}
|
||||
className="text-light-blue leading-6"
|
||||
>
|
||||
Потвердить код
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user