Add translations

This commit is contained in:
ariari04 2024-08-27 08:52:34 +06:00
parent 76af01ee8b
commit 98beb33993
5 changed files with 84 additions and 27 deletions

View File

@ -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"
}
}

View File

@ -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": "Күтүлбөгөн ката кетти"
}
}

View File

@ -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": "Произошла непредвиденная ошибка"
}
}

View File

@ -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>
);

View File

@ -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>
);
};