Coder Social home page Coder Social logo

eduardojm / joi-translation-pt-br Goto Github PK

View Code? Open in Web Editor NEW
30.0 1.0 4.0 511 KB

:brazil: Tradução das mensagens de erro de validação da biblioteca Joi para PT-BR

Home Page: https://eduardojm.github.io/joi-translation-pt-br/

License: MIT License

TypeScript 58.59% JavaScript 32.59% CSS 8.82%
joi joi-validation node javascript typescript validator nodejs

joi-translation-pt-br's Introduction

Tradução PT-BR para o Joi

GitHub npm npm GitHub issues

🇧🇷 Pacote contendo mensagens de tradução para PT-BR das mensagens de erro de validação do pacote Joi ("the most powerful schema description language and data validator for JavaScript").

Motivação

Essa biblioteca foi motivada devido a necessidade de ter de desenvolver aplicações reais para usuários brasileiros. Tendo esse contexto, devolver mensagens de erros de validação em inglês adiciona uma dificuldade maior nos projetos. Portanto, uma biblioteca com as mensagens de tradução, torna-se útil.

Instalando

É importante, antes de tudo, ressaltar que esse pacote não substitui o Joi. Ele é um complemento ao Joi. Portanto, tenha o Joi instalado na aplicação. Instale esse pacote usando o yarn:

yarn add joi-translation-pt-br

Ou com o npm:

npm install joi-translation-pt-br

Exemplos de Uso

Validando com schema

O exemplo abaixo encontra-se em examples/schema.

import Joi from 'joi';
import {messages} from 'joi-translation-pt-br';

const schema = Joi.object().keys({
    nome: Joi.string().required(),
    email: Joi.string().email().required(),
});

const result = schema.validate({
    nome: 'Eduardo Oliveira',
    email: 'aaaa'
}, { messages });

if (result.error) {
    console.log(result.error.details);
}

Rodando o arquivo com o ts-node, tem-se no terminal a resposta:

[
  {
    message: '"email" deve ser um e-mail válido',
    path: [ 'email' ],
    type: 'string.email',
    context: {...}
  }
]

Celebrate Middleware

import express from 'express';
import { celebrate, errors, Joi } from 'celebrate';
import { messages } from 'joi-translation-pt-br';

const ExampleValidation = celebrate({
    body: Joi.object().keys({
        email: Joi.string().required().email(),
        password: Joi.string().required(),
    }),
}, {
    abortEarly: false,
    messages: messages,
});

const app = express();
app.use(express.json());

app.post('/test', ExampleValidation, (req, res) => {
    res.json();
});

app.use(errors());
app.listen(3333);

Assim, fazendo requisições no formato errado, teremos a resposta:

{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Validation failed",
  "validation": {
    "body": {
      "source": "body",
      "keys": [
        "email",
        "password"
      ],
      "message": "\"email\" deve ser um e-mail válido. \"password\" é obrigatório"
    }
  }
}

É possível, também, customizar a resposta do middleware e isso pode ser feito de acordo com a documentação aqui.

Author

This package was created by Eduardo Oliveira with the help of the community (see contributors).

License

MIT License © Eduardo Oliveira

joi-translation-pt-br's People

Contributors

dependabot[bot] avatar eduardojm avatar pedrorambo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

joi-translation-pt-br's Issues

Usar "#key" em vez "#label" nas mensagens

Talvez seja mais interessante usar "#key" em vez "#label" nas mensagens, pois caso a validação seja de um array de objetos, a mensagem vai começar com "[0]meuCampo..." em vez de "meuCampo...".

No meu contexto, utilizar key foi melhor pra legibilidade. Talvez não sirva pra todos, mas fica a ideia.

Named export 'messages' not found.

É mais uma pergunta do que um bug. Meu package.json tem o "type":"module". O import {messages} do README, para mim não funciona. Eu consigo usar o que o próprio SyntaxError recomenda (abaixo). Então, o import do README funciona para vocês? Ou o README precisa ser re-editado?

SyntaxError: Named export 'messages' not found. The requested module 'joi-translation-pt-br' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'joi-translation-pt-br';
const {messages} = pkg;

Estou usando essas versões.

"joi": "^17.9.2",
"joi-translation-pt-br": "^0.0.6"

node: v16.19.0
npm: 8.19.3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.