Validate locales files in JSON format with a Grunt task.
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-validate-json-locales --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-validate-json-locales');
In your project's Gruntfile, add a section named validateJsonLocales
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
validateJsonLocales: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
Type: Boolean
Default value: false
Whether missing keys are allowed in locales files or not.
This flag enables the allowedMissingKeys
option.
Type: Array
Default value: []
An array of allowed missing keys. If one of the key in the array matches a missing key in the files it will not be considered as missing.
Example:
locale_en.json
{
"hello": "Hello",
"goodbye": "Goodbye"
}
locale_fr.json
{
"hello": "Bonjour"
}
with allowedMissingKeys = ['goodbye']
will pass validation.
Type: Boolean
Default value: false
Whether empty translations are allowed or not.
This flag enables the allowedEmptyTranslations
and treatAsEmptyRegExp
options.
Type: Array
Default value: []
An array of allowed empty translation keys. Example:
{
"hello": "Bonjour",
"goodbye": ""
}
with allowedEmptyTranslations = ['goodbye']
will pass validation.
Type: String
Default value: null
A RegExp pattern that can be interpreted by new RegExp(treatAsEmptyRegExp)
.
If the pattern matches a translation value (pattern.test(value) === true
), it will be treated as an empty translation.
Example:
{
"hello": "Hello",
"goodbye": "_MISSING_"
}
with treatAsEmptyRegExp = '^_.+_$'
, the goodbye translation will be treated as empty.
Type: Boolean
Default value: true
Whether to compare locale files keys with each other or not. When true the task will fail when files have different keys (missing keys).
grunt.initConfig({
dev: {
options: {
allowMissingKeys: true,
allowedMissingKeys: [],
allowEmptyTranslations: true,
allowedEmptyTranslations: [],
treatAsEmptyRegExp: null, // or whatever you consider as empty.
validateSameKeys: true
},
files: ['locales/*.json'],
},
});
grunt.initConfig({
dev: {
options: {
allowMissingKeys: false,
allowedMissingKeys: [],
allowEmptyTranslations: false,
allowedEmptyTranslations: [],
treatAsEmptyRegExp: null, // or whatever you consider as empty.
validateSameKeys: true
},
files: ['locales/*.json'],
},
});
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.