다국어(typescript)를 지원하는 클래스 유효성 검사기 포크

데코레이터 및 비데코레이터 기반 유효성 검사를 사용할 수 있습니다. 내부적으로 validator.js를 사용하여 유효성 검사를 수행합니다. Class-validator는 브라우저와 node.js 플랫폼 모두에서 작동합니다.

설치




npm install class-validator-multi-lang --save


원래 프로젝트와의 차이점:



🤘 이 기능은 유효성 검사 오류를 대체하기 위해 지원을 추가했습니다.

🔥 수동 단순화 업데이트 번역을 위한 https://crowdin.com/ 통합 🇨🇳 🇩🇪 🇷🇺 🇺🇸

🌎 번역은 기계로 만들어졌습니다 🤖, 실수를 발견했다면 🐛 새 버전의 번역을 추가하고 https://crowdin.com/project/class-validator의 오른쪽 패널에 댓글을 작성하세요 😎

❗ 번역은 package 안에 들어있어 패키지 사이즈가 너무 커서 번역 없이 lite version 을 사용하고 필요한 번역만 추가 manually 할 수 있습니다.

사용법의 예



👶 기본 설정 사용자 정의 메시지

import { IsOptional, Equals, validator } from 'class-validator-multi-lang';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = {
  '$property must be equal to $constraint1': '$property должно быть равно $constraint1',
};

const model = new MyClass();

validator.validate(model, messages: RU_I18N_MESSAGES).then(errors => {
  console.log(errors[0].constraints);
  // out: title должно быть равно test
});


👦 파일에서 로드

import { IsOptional, Equals, validator } from 'class-validator-multi-lang';
import { readFileSync } from 'fs';
import { resolve } from 'path';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = JSON.parse(readFileSync(resolve(__dirname, './node_modules/class-validator-multi-lang/i18n/ru.json')).toString());

const model = new MyClass();

validator.validate(model, messages: RU_I18N_MESSAGES).then(errors => {
  console.log(errors[0].constraints);
  // out: title должен быть равен test
});


🧔 2개의 파일에서 로드 💣 💥

import { IsOptional, Equals, validator } from 'class-validator-multi-lang';
import { readFileSync } from 'fs';
import { resolve } from 'path';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = JSON.parse(
  readFileSync(resolve(__dirname, './node_modules/class-validator-multi-lang/i18n/ru.json')).toString()
);

const FR_I18N_MESSAGES = JSON.parse(
  readFileSync(resolve(__dirname, './node_modules/class-validator-multi-lang/i18n/fr.json')).toString()
);

const model = new MyClass();

validator.validate(model, { messages: RU_I18N_MESSAGES }).then(errors => {
  console.log(errors[0].constraints);
  // out: title должен быть равен test

  validator.validate(model, { messages: FR_I18N_MESSAGES }).then(errors => {
    console.log(errors[0].constraints);
    // out: title doit être égal à test
  });
});


🤴 오버라이드 포함

import { IsOptional, Equals, validator, setClassValidatorMessages } from 'class-validator-multi-lang';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

setClassValidatorMessages({
  '$property must be equal to $constraint1': '$property должно быть равно $constraint1',
});

const model = new MyClass();

validator.validate(model).then(errors => {
  console.log(errors[0].constraints);
  // out: title должно быть равно test
});


🔢 속성 이름 변경

import { IsOptional, Equals, ClassPropertyTitle, validator } from 'class-validator-multi-lang';

class MyClass {
  @IsOptional()
  @Equals('test')
  @ClassPropertyTitle('property "title"')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = {
  '$property must be equal to $constraint1': '$property должно быть равно $constraint1',
};
const RU_I18N_TITLES = {
  'property "title"': 'поле "заголовок"',
};

const model = new MyClass();

validator.validate(model, { messages: RU_I18N_MESSAGES, titles: RU_I18N_TITLES }).then(errors => {
  console.log(errors[0].constraints);
  // out: поле "заголовок" должно быть равно test
});


🔢 대상 이름 변경 포함

import { IsOptional, Equals, ClassPropertyTitle, validator } from 'class-validator-multi-lang';

@ClassTitle('object "MyClass"')
class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = {
  '$property must be equal to $constraint1': '$property в $target должно быть равно $constraint1',
};
const RU_I18N_TITLES = {
  'object "MyClass"': 'объекте "МойКласс"',
};

const model = new MyClass();

validator.validate(model, { messages: RU_I18N_MESSAGES, titles: RU_I18N_TITLES }).then(errors => {
  console.log(errors[0].constraints);
  // out: title в объекте "МойКласс" должно быть равно test
});


🔢 유효성 검사 데코레이터에 대한 변경 인수 포함

import { IsOptional, Equals, validator } from 'class-validator-multi-lang';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = {
  '$property must be equal to $constraint1': '$property должно быть равно $constraint1',
};
const RU_I18N_TITLES = {
  test: '"тест"',
};

const model = new MyClass();

validator.validate(model, { messages: RU_I18N_MESSAGES, titles: RU_I18N_TITLES }).then(errors => {
  console.log(errors[0].constraints);
  // out: title должно быть равно "тест"
});


🔢 값 변경

import { IsOptional, Equals, validator } from 'class-validator-multi-lang';

class MyClass {
  @IsOptional()
  @Equals('test')
  title: string = 'bad_value';
}

const RU_I18N_MESSAGES = {
  '$property must be equal to $constraint1': '$property равно $value, а должно быть равно $constraint1',
};
const RU_I18N_TITLES = {
  bad_value: '"плохое_значение"',
};

const model = new MyClass();

validator.validate(model, { messages: RU_I18N_MESSAGES, titles: RU_I18N_TITLES }).then(errors => {
  console.log(errors[0].constraints);
  // out: title равно "плохое_значение", а должно быть равно test
});


연결



class-validator-multi-lang - 이 포크의 Github 저장소입니다.

class-validator - 원본 패키지의 Github 저장소.

좋은 웹페이지 즐겨찾기