diff --git a/README.md b/README.md index 476f910..35b0796 100644 --- a/README.md +++ b/README.md @@ -27,5 +27,6 @@ Locales implemented: - `ar` - `es` - `it` + - `pt` Please submit a PR with a new locale if you need it. In order to create a new locale, you could translate it automatically with `node scripts/create-locale` which will use google translate. diff --git a/src/index.ts b/src/index.ts index bd0dc58..aa013ad 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,5 +5,6 @@ import * as de from './locales/de'; import * as ar from './locales/ar'; import * as it from './locales/it'; import * as es from './locales/es'; +import * as pt from './locales/pt'; -export { fr, nl, nb, de, ar, es, it }; +export { fr, nl, nb, de, ar, es, it, pt }; diff --git a/src/locales/it.ts b/src/locales/it.ts index 6d9208e..384eb53 100644 --- a/src/locales/it.ts +++ b/src/locales/it.ts @@ -12,7 +12,7 @@ export const mixed: LocaleObject['mixed'] = { notType: ({ path, type, value, originalValue }: FormatErrorParams) => { const isCast = originalValue != null && originalValue !== value; let msg = - `${path} deve essere un ${type} \`\` tipo, ` + + `${path} deve essere un \`${type}\` tipo, ` + `ma il valore finale è: \`${printValue(value, true)}\`` + (isCast ? ` (valore originale: \`${printValue(originalValue, true)}\`).` diff --git a/src/locales/nb.ts b/src/locales/nb.ts index cdf2d99..9304e35 100644 --- a/src/locales/nb.ts +++ b/src/locales/nb.ts @@ -12,7 +12,7 @@ export const mixed: LocaleObject['mixed'] = { notType: ({ path, type, value, originalValue }: FormatErrorParams) => { const isCast = originalValue != null && originalValue !== value; let msg = - `${path} må være en '${type} \`typen, ` + + `${path} må være en \`${type}\` typen, ` + `men den endelige verdien var: \`${printValue(value, true)}\`` + (isCast ? ` (støpt fra verdien \`${printValue(originalValue, true)}\`).` diff --git a/src/locales/pt.ts b/src/locales/pt.ts new file mode 100644 index 0000000..e6096f0 --- /dev/null +++ b/src/locales/pt.ts @@ -0,0 +1,68 @@ +/*eslint-disable no-template-curly-in-string*/ + +import printValue from '../util/printValue'; +import { LocaleObject, FormatErrorParams } from 'yup'; + +// Based on https://github.com/jquense/yup/blob/2973d0a/src/locale.js +export const mixed: LocaleObject['mixed'] = { + default: '${path} é inválido.', + required: '${path} é um campo obrigatório', + oneOf: '${path} deve ser um dos seguintes valores: ${values}', + notOneOf: '${path} não deve ser um dos seguintes valores: ${values}', + notType: ({ path, type, value, originalValue }: FormatErrorParams) => { + const isCast = originalValue != null && originalValue !== value; + let msg = + `${path} deve ser um tipo de \`${type}\`, ` + + `Mas o valor final foi: \`${printValue(value, true)}\`` + + (isCast + ? ` (Elenco do valor \`${printValue(originalValue, true)}\`).` + : '.'); + + if (value === null) { + msg += + `\n Se "null" pretender como um valor vazio, certifique-se de marcar o esquema como` + + ' `.nullable()`'; + } + + return msg; + }, +}; + +export const string: LocaleObject['string'] = { + length: '${path} deve ser exatamente ${length} caracteres', + min: '${path} deve ser pelo menos ${min} caracteres', + max: '${path} deve ser no máximo ${max} caracteres', + matches: '${path} deve corresponder ao seguinte: "${regex}"', + email: '${path} deve ser um email válido', + url: '${path} deve ser um URL válido', + trim: '${path} deve ser uma corda aparada', + lowercase: '${path} deve ser uma cadeia minúscula', + uppercase: '${path} deve ser uma cadeia maiúscula', +}; + +export const number: LocaleObject['number'] = { + min: '${path} deve ser maior ou igual a ${min}', + max: '${path} deve ser menor ou igual a ${max}', + lessThan: '${path} deve ser menor que ${less}', + moreThan: '${path} deve ser maior que ${more}', + positive: '${path} deve ser um número positivo', + negative: '${path} deve ser um número negativo', + integer: '${path} deve ser um inteiro', +}; + +export const date: LocaleObject['date'] = { + min: 'Campo ${path} deve ser mais tarde do que ${min}', + max: '${path} deve ser mais cedo do que ${max}', +}; + +export const boolean: LocaleObject['boolean'] = {}; + +export const object: LocaleObject['object'] = { + noUnknown: + 'Campo ${path} não pode ter chaves não especificadas na forma do objeto', +}; + +export const array: LocaleObject['array'] = { + min: 'O campo ${path} deve ter pelo menos ${min} itens', + max: 'O campo ${path} deve ter menos ou igual a itens ${max}', +};