다국어(typescript)를 지원하는 클래스 유효성 검사기 포크
26955 단어 decoratorsi18ntypescriptvalidator
설치
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 저장소.
Reference
이 문제에 관하여(다국어(typescript)를 지원하는 클래스 유효성 검사기 포크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/endykaufman/fork-of-class-validator-with-support-multi-language-typescript-58im텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)