class‑validator‑multi‑lang

Мой форк библиотеки class-validator с поддержкой многоязычных сообщений об ошибках для NestJS.

Суть проекта

Во всех моих проектах на NestJS я активно использую class‑validator для валидации DTO и моделей. Основная проблема: стандартная библиотека возвращает ошибки только на английском языке.

Чтобы решить эту задачу, я создал форк class‑validator с поддержкой многоязычных сообщений об ошибках, с возможностью кастомизации и локализации ошибок на русский язык.

Изначально я оформил изменения в виде pull request к оригинальной библиотеке, но несмотря на положительные отзывы сообщества, PR был отклонён. В итоге я опубликовал форк в npm как отдельный пакет, чтобы использовать его в своих проектах.

Техническая реализация

  • Перевод сообщений реализован через PO-файлы.
  • Подключён сервис Crowdin (https://crowdin.com/project/class-validator), что позволяет любому пользователю предложить исправление или новый перевод.
  • После пул-реквеста с переводом я апрувлю изменения и выпускаю новую версию библиотеки, если это необходимо.
  • Поддержка библиотеки минимальна: я редко обновляю форк, так как оригинальная библиотека иногда вносит ломающие изменения, которые требуют дополнительного тестирования и адаптации.

Применение

  • Используется во всех проектах NestJS, где требуется локализованная валидация.
  • Библиотека обеспечивает удобство для конечного пользователя: ошибки валидации отображаются на понятном языке.
  • Позволяет легко расширять и улучшать переводы через сообщество Crowdin.

Состояние проекта

  • Проект живой и активно используется в продакшене.
  • Обновления происходят по мере необходимости или при поступлении исправленных переводов.
  • Форк полностью совместим с оригинальной библиотекой, но добавляет i18n функционал и кастомизацию сообщений.

Основной вывод

class‑validator‑multi‑lang — это практическая библиотека‑форк, которая решает задачу локализованной валидации в NestJS и делает ошибки понятными для русскоязычных пользователей, оставаясь при этом удобной для разработчиков благодаря интеграции с Crowdin и PO-файлами.