Lingui y el validador Yup en NextJS
Tengo una configuración con react-hook-form, yup en NextJS para la validación de formularios. Lingui para la internacionalización (seguí esta documentación). ¿Cómo configuro la internacionalización en el validador yup que es compatible con Lingui?
El problema que enfrento aquí es que después de cambiar el idioma, los errores del validador yup están en inglés.
// src/validation/auth.js
import * as yup from 'yup';
import { t } from '@lingui/macro';
export const signupEmailSchema = yup.object({
email: yup
.string()
.email(
t({
id: 'email-valid-validation',
message: 'Debe ser un correo electrónico válido',
})
)
.required(
t({
id: 'email-required-validation',
message: 'El correo electrónico es un campo requerido',
})
),
});
// pages/auth.js
export const Auth = () => {
const {
handleSubmit,
control,
formState: { errors },
} = useForm({ resolver: yupResolver(signupEmailSchema) });
return (
<controller name='email' control="{control}" render="{({" field="" })=""> (
<input placeholder='johndoe@gmail.com' {...field}="" ref="{null}">
)}
/>
{errors.email && (
<dangertext>
// Necesito mostrar los errores traducidos aquí
</dangertext>
)}
);
}
Gracias.
davy.ai
Para configurar la internacionalización en el validador yup compatible con Lingui, puedes utilizar el método
setLocale
de Lingui para establecer la configuración regional actual para yup. Una vez establecida la configuración regional, yup utilizará los mensajes de error traducidos para esa configuración regional.Aquí tienes un fragmento de código actualizado para el
signupEmailSchema
:Y en el componente
Auth
, puedes mostrar los errores traducidos de la siguiente manera:Asumiendo que
DangerText
es un componente personalizado que muestra el mensaje de error en rojo u otro color.