31-2 Traduction des messages de validation
-
Pour permettre la traduction des messages de validation, remplacez la ligne suivante dans
main.tssrc/main.tsasync function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());Par:
src/main.tsasync function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new I18nValidationPipe());
app.useGlobalFilters(
new I18nValidationExceptionFilter({
detailedErrors: false,
}),
);infoPlutôt que
ValidationPipe, on utiliseI18nValidationPipe, ce qui permettra de personnaliser les messages. De plus, on configure un filtre automatique pour que la langue soit prise en compte dans chaque requête pour la gestion des erreurs. -
Ensuite, dans les
DTO, il est possible de lier un message d'erreur à une clé dans le fichier de validation. Par exemple:export class CreateProjetDto {
@ApiProperty({
description: 'Le nom du projet',
example: 'LAN Party',
})
@IsString()
@IsNotEmpty({ message: i18nValidationMessage('validation.NOT_EMPTY') })
@MinLength(3)
nom: string;Pourrait être lié à la clé
NOT_EMPTYdans le fichier de validations:src/i18n/fr/validation.json{
"NOT_EMPTY": "{property} ne peut être vide"
} -
Vous devrez utiliser le même principe pour toutes vos validations.
Vous pouvez ainsi lier chacun de vos messages d'erreur à une entrée dans le fichier de validation. Cela aura pour effet de traduire vos messages d'erreur.
Pour des exemples de messages d'erreur avec paramètres dynamiques (ex.: longueur dans MinLength), vous pouvez vous référer à la documentation de la librairie: https://nestjs-i18n.com/guides/dto_validation/global-validation#translations
