feat(i18n): loginpage translate

This commit is contained in:
Julien Froidefond
2025-02-27 12:48:59 +01:00
parent 148bfd71e1
commit e76b849b17
5 changed files with 47 additions and 10 deletions

View File

@@ -5,6 +5,7 @@ import { useRouter } from "next/navigation";
import { authService } from "@/lib/services/auth.service";
import { AuthError } from "@/types/auth";
import { ErrorMessage } from "@/components/ui/ErrorMessage";
import { useTranslate } from "@/hooks/useTranslate";
interface LoginFormProps {
from?: string;
@@ -14,6 +15,7 @@ export function LoginForm({ from }: LoginFormProps) {
const router = useRouter();
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<AuthError | null>(null);
const { t } = useTranslate();
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
@@ -43,7 +45,7 @@ export function LoginForm({ from }: LoginFormProps) {
htmlFor="email"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Email
{t("login.form.email")}
</label>
<input
id="email"
@@ -60,7 +62,7 @@ export function LoginForm({ from }: LoginFormProps) {
htmlFor="password"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Mot de passe
{t("login.form.password")}
</label>
<input
id="password"
@@ -84,7 +86,7 @@ export function LoginForm({ from }: LoginFormProps) {
htmlFor="remember"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Se souvenir de moi
{t("login.form.remember")}
</label>
</div>
{error && <ErrorMessage message={error.message} variant="form" />}
@@ -93,7 +95,7 @@ export function LoginForm({ from }: LoginFormProps) {
disabled={isLoading}
className="inline-flex w-full items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground ring-offset-background transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
>
{isLoading ? "Connexion en cours..." : "Se connecter"}
{isLoading ? t("login.form.submit.loading.login") : t("login.form.submit.login")}
</button>
</form>
);

View File

@@ -7,6 +7,7 @@ import { AuthError } from "@/types/auth";
import { ERROR_CODES } from "@/constants/errorCodes";
import { ERROR_MESSAGES } from "@/constants/errorMessages";
import { ErrorMessage } from "@/components/ui/ErrorMessage";
import { useTranslate } from "@/hooks/useTranslate";
interface RegisterFormProps {
from?: string;
@@ -16,6 +17,7 @@ export function RegisterForm({ from }: RegisterFormProps) {
const router = useRouter();
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<AuthError | null>(null);
const { t } = useTranslate();
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
@@ -54,7 +56,7 @@ export function RegisterForm({ from }: RegisterFormProps) {
htmlFor="email"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Email
{t("login.form.email")}
</label>
<input
id="email"
@@ -70,7 +72,7 @@ export function RegisterForm({ from }: RegisterFormProps) {
htmlFor="password"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Mot de passe
{t("login.form.password")}
</label>
<input
id="password"
@@ -86,7 +88,7 @@ export function RegisterForm({ from }: RegisterFormProps) {
htmlFor="confirmPassword"
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Confirmer le mot de passe
{t("login.form.confirmPassword")}
</label>
<input
id="confirmPassword"
@@ -103,7 +105,7 @@ export function RegisterForm({ from }: RegisterFormProps) {
disabled={isLoading}
className="inline-flex w-full items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground ring-offset-background transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
>
{isLoading ? "Inscription en cours..." : "S'inscrire"}
{isLoading ? t("login.form.submit.loading.register") : t("login.form.submit.register")}
</button>
</form>
);