Aller au contenu principal

31-2 Traduction des messages de validation

  1. Pour permettre la traduction des messages de validation, remplacez la ligne suivante dans main.ts

    src/main.ts
    async function bootstrap() {
    const app = await NestFactory.create(AppModule);

    app.useGlobalPipes(new ValidationPipe());

    Par:

    src/main.ts
    async function bootstrap() {
    const app = await NestFactory.create(AppModule);

    app.useGlobalPipes(new I18nValidationPipe());
    app.useGlobalFilters(
    new I18nValidationExceptionFilter({
    detailedErrors: false,
    }),
    );
    info

    Plutôt que ValidationPipe, on utilise I18nValidationPipe, 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.

  2. 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_EMPTY dans le fichier de validations:

    src/i18n/fr/validation.json
    {
    "NOT_EMPTY": "{property} ne peut être vide"
    }
  3. 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.

info

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

Level Up