Home

Awesome

ajv-i18n

Internationalised error messages for Ajv - superfast JSON validator for JSON Schema and JSON Type Definition.

Build Status npm Coverage Status Gitter

Supported locales

localelanguagecontributordraft-04draft-06<sup>1</sup>draft-07<sup>2</sup>draft<br>2019-09<sup>3</sup><br>/2020-12<sup>4</sup>JTD<sup>5</sup>
๐Ÿ‡ฌ๐Ÿ‡ง enEnglishโœ“โœ“โœ“โœ“โœ“
AR arArabicMahmoud-Mardeniโœ“โœ“โœ“--
CA caCatalanalexandreecโœ“โœ“โœ“-*
๐Ÿ‡จ๐Ÿ‡ฟ csCzechkiskovacs<br>NAM0007โœ“<br>ย โœ“<br>ย <br>โœ“-*
๐Ÿ‡ฉ๐Ÿ‡ช deGermanjmtoball<br>gflohrโœ“<br>ย โœ“<br>ย <br>โœ“โœ“<br>ย โœ“<br>ย 
๐Ÿ‡ช๐Ÿ‡ธ esSpanishjpablomโœ“โœ“โœ“-*
๐Ÿ‡ซ๐Ÿ‡ฎ fiFinnishsaulipurhonenโœ“โœ“โœ“โœ“โœ“
๐Ÿ‡ซ๐Ÿ‡ท frFrenchmonlouisj<br>Telokisโœ“<br>ย โœ“<br>ย <br>โœ“-*
๐Ÿ‡ญ๐Ÿ‡บ huHungarianszilveszter9โœ“---*
๐Ÿ‡ฎ๐Ÿ‡ฉ idIndonesianekoeryantoโœ“โœ“โœ“-*
๐Ÿ‡ฎ๐Ÿ‡น itItalianjasoniangreen<br>lucacortiโœ“<br>ย <br>โœ“<br>โœ“<br>โœ“<br>โœ“
๐Ÿ‡ฏ๐Ÿ‡ต jaJapanesegilgongoโœ“---*
๐Ÿ‡ฐ๐Ÿ‡ท koKoreanMinByeongDonโœ“โœ“โœ“โœ“โœ“
๐Ÿ‡ณ๐Ÿ‡ด nbNorwegian bokmรฅlmtrammโœ“โœ“--*
๐Ÿ‡ณ๐Ÿ‡ฑ nlDutchpimlie<br>niekvbโœ“โœ“โœ“<br>โœ“<br>โœ“
๐Ÿ‡ต๐Ÿ‡ฑ plPolishdanielzurawskiโœ“---*
๐Ÿ‡ง๐Ÿ‡ท pt-BRPortuguรชs - Brasilmarcosrava<br>ggondimโœ“โœ“โœ“<br>โœ“<br>โœ“
๐Ÿ‡ท๐Ÿ‡บ ruRussianโœ“โœ“โœ“โœ“โœ“
๐Ÿ‡ธ๐Ÿ‡ฐ skSlovakkiskovacsโœ“โœ“--*
๐Ÿ‡ธ๐Ÿ‡ช svSwedishlimmenโœ“โœ“--*
๐Ÿ‡น๐Ÿ‡ญ thThaiencXโœ“โœ“โœ“โœ“โœ“
๐Ÿ‡จ๐Ÿ‡ณ zhChinesejinzhubaofu<br>leuctionโœ“<br>ย <br>โœ“<br>โœ“<br>โœ“<br>โœ“
๐Ÿ‡น๐Ÿ‡ผ zh-TWChinese - Taiwanminipaiโœ“โœ“โœ“โœ“โœ“

<sup>1</sup> added boolean schema, keywords const, contains, propertyNames

<sup>2</sup> added keywords if/then/else

<sup>3</sup> added messages for keywords unevaluatedProperties, unevaluatedItems, dependentRequired

<sup>4</sup> keyword items messages

<sup>5</sup> JSON Type Definition

* discriminator form messages are not translated

Please contribute locales that you need to use if they are missing or incomplete.

Install

Using npm:

npm install ajv-i18n

Usage

In node:

const Ajv = require("ajv") // version >= 8.0.0
const localize = require("ajv-i18n")
// or for JSON Type Definition
// const localize = require("ajv-i18n/localize/jtd")

const ajv = Ajv({allErrors: true, messages: false})
const validate = ajv.compile(schema)
const valid = validate(data)

if (!valid) {
  // ru for Russian
  localize.ru(validate.errors)
  // string with all errors and data paths
  console.log(ajv.errorsText(validate.errors, {separator: '\n'}))
}

To require only necessary locales (e.g., with browserify):

const localize_ru = require('ajv-i18n/localize/ru')
// or for JSON Type Definition
// const localize_ru = require('ajv-i18n/localize/ru/jtd')

or

const localize = {
  en: require('ajv-i18n/localize/en'),
  ru: require('ajv-i18n/localize/ru'),
}

See Ajv docs for more information.

Tests

npm install
git submodule update --init
npm test

Contributing

Functions that localize error messages are generated using doT template localize.jst, JSON Schema messages and JSON Type Definition messages. Templates are pre-compiled, so doT is not a run-time dependency.

npm run build - compiles functions to localize folder.

Contributors of locales

danielzurawski szilveszter9 jmtoball gilgongo jasoniangreen jpablom limmen jinzhubaofu kiskovacs mahmoud-mardeni monlouisj marcosrava mtramm Mahmoud-Mardeni leuction lucacorti minipai encX <img src="https://avatars3.githubusercontent.com/u/1067403?s=40&v=4" alt="pimlie" width="40px"/> MinByeongDon gflohr ekoeryanto Telokis <img src="https://avatars3.githubusercontent.com/u/15526814?s=40&v=4" alt="alexandreec" width="40px"> ggondim niekvb NAM0007 saulipurhonen

Enterprise support

ajv-i18n package is a part of Tidelift enterprise subscription - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.

Security contact

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.

License

MIT