From e76b849b17bce30f909ca2a2b179738f47559e68 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Thu, 27 Feb 2025 12:48:59 +0100 Subject: [PATCH] feat(i18n): loginpage translate --- src/app/login/LoginContent.tsx | 5 +++++ src/components/auth/LoginForm.tsx | 10 ++++++---- src/components/auth/RegisterForm.tsx | 10 ++++++---- src/i18n/messages/en/common.json | 16 +++++++++++++++- src/i18n/messages/fr/common.json | 16 +++++++++++++++- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/app/login/LoginContent.tsx b/src/app/login/LoginContent.tsx index 3e87c0d..566b450 100644 --- a/src/app/login/LoginContent.tsx +++ b/src/app/login/LoginContent.tsx @@ -4,6 +4,7 @@ import { LoginForm } from "@/components/auth/LoginForm"; import { RegisterForm } from "@/components/auth/RegisterForm"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { useTranslate } from "@/hooks/useTranslate"; +import LanguageSelector from "@/components/LanguageSelector"; interface LoginContentProps { searchParams: { @@ -18,6 +19,10 @@ export function LoginContent({ searchParams }: LoginContentProps) { return (
+
+ +
+
(null); + const { t } = useTranslate(); const handleSubmit = async (event: React.FormEvent) => { 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")} - Mot de passe + {t("login.form.password")} - Se souvenir de moi + {t("login.form.remember")}
{error && } @@ -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")} ); diff --git a/src/components/auth/RegisterForm.tsx b/src/components/auth/RegisterForm.tsx index fa0f0bd..6947eb4 100644 --- a/src/components/auth/RegisterForm.tsx +++ b/src/components/auth/RegisterForm.tsx @@ -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(null); + const { t } = useTranslate(); const handleSubmit = async (event: React.FormEvent) => { 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")} - Mot de passe + {t("login.form.password")} - Confirmer le mot de passe + {t("login.form.confirmPassword")} - {isLoading ? "Inscription en cours..." : "S'inscrire"} + {isLoading ? t("login.form.submit.loading.register") : t("login.form.submit.register")} ); diff --git a/src/i18n/messages/en/common.json b/src/i18n/messages/en/common.json index c849e8b..44c5b78 100644 --- a/src/i18n/messages/en/common.json +++ b/src/i18n/messages/en/common.json @@ -11,7 +11,21 @@ "login": "Sign in", "register": "Sign up" }, - "description": "Enjoy your favorite comics, manga and graphic novels with a modern and smooth reading experience." + "description": "Enjoy your favorite comics, manga and graphic novels with a modern and smooth reading experience.", + "form": { + "email": "Email", + "password": "Password", + "confirmPassword": "Confirm password", + "remember": "Remember me", + "submit": { + "login": "Sign in", + "register": "Sign up", + "loading": { + "login": "Signing in...", + "register": "Signing up..." + } + } + } }, "home": { "hero": { diff --git a/src/i18n/messages/fr/common.json b/src/i18n/messages/fr/common.json index 6febf4b..75867a8 100644 --- a/src/i18n/messages/fr/common.json +++ b/src/i18n/messages/fr/common.json @@ -11,7 +11,21 @@ "login": "Connexion", "register": "Inscription" }, - "description": "Profitez de vos BD, mangas et comics préférés avec une expérience de lecture moderne et fluide." + "description": "Profitez de vos BD, mangas et comics préférés avec une expérience de lecture moderne et fluide.", + "form": { + "email": "Email", + "password": "Mot de passe", + "confirmPassword": "Confirmer le mot de passe", + "remember": "Se souvenir de moi", + "submit": { + "login": "Se connecter", + "register": "S'inscrire", + "loading": { + "login": "Connexion en cours...", + "register": "Inscription en cours..." + } + } + } }, "home": { "hero": {