🗾

【NestJS】class-validatorのメッセージを日本語化する(プロパティ名自動置換)

2024/03/21に公開

概要

class-validatorによるメッセージを日本語化したくて試したことをまとめました。
既存のデコレーションクラスをラップしてメッセージを再定義するケースにおいて、プロパティ名をclass-validatorの機能を活用し自動置換する方法がわかります。

参考

こちらのブログを参考にさせていただきました。ありがとうございます!
https://zenn.dev/karino_m/articles/nestjs-class-base-validation-in-japanese

プロパティ名を自動付与する方法

既存のデコレーションクラスをラップしてメッセージを再定義することで、バリデーションチェック時のメッセージを日本語化することができます。
その日本語メッセージを次のとおり定義することで、プロパティ名をclass-validatorの機能により自動的に付与することができます。

export const MaxLengthJ
  = (max: number, option?: ValidationOption): PropertyDecorator => {
    return MaxLength(
      max
      , buildValidationOprions(`$propertyは${max}文字以下である必要があります。`
      , option));
}

上記は、文字列長が最大文字列長以下であるかどうかをチェックするバリデーションデコレータMaxLengthを、再定義したものです。
再定義する日本語メッセージ内に$propertyと記載することで、class-validatorの機能によりバリデーション対象のプロパティ名に置換されます。

お役に立てると嬉しいです!

Discussion