Converts json files to angular translate config javascript files.
npm install grunt-json-angular-translate> Converts json files to angular-translate config javascript files.
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:
``shell`
npm install grunt-json-angular-translate --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
`js`
grunt.loadNpmTasks('grunt-json-angular-translate');
to the data object passed into grunt.initConfig().`js
grunt.initConfig({
jsonAngularTranslate: {
jobName: {
options: {
moduleName: 'translations',
extractLanguage: /..(?=\.[^.]*$)/,
hasPreferredLanguage: true
},
files: [{
// Target-specific file lists and/or options go here. (see examples below)
}]
}
}
})
`$3
#### options.moduleName
Type:
String
Default value: translationsThe module name to use in the
angular.module calls.#### options.extractLanguage
Type:
RegExp|Function
Default value: /..(?=\.[^.]*$)/ (last two characters before the last dot)A regular expression or a function that returns the processed file's language according to its file path.
#### options.hasPreferredLanguage
Type:
Boolean
Default value: trueWhether to set the language and preferred language in config file. Relevant only in angular-translate
1.*.#### options.createNestedKeys
Type:
Boolean
Default value: trueWhether to create a nested output from dot separated keys.
##### Source json
`
{
"My.First.Key": "..."
}
`
##### Outputs
`
{
'My': {
'First': {
'Key': '...'
}
}
}
`
Set this option to false if you use your source language string as the key.##### createNestedKeys: false, Outputs
`
{
'My.First.Key': '...'
}
`$3
#### Default Options
In this example, we convert all .json files in
app/scripts/locale to angular-translate config files in .tmp/scripts/locale.`js
grunt.initConfig({
jsonAngularTranslate: {
jobName: {
options: {},
files: [{
expand: true,
cwd: 'app/scripts/locale',
src: '*.json',
dest: '.tmp/scripts/locale',
ext: '.js'
}]
}
},
})
`So
app/scripts/locale/messages_ru.js with contents:`js
{
"key1": "value1",
"key2.subKey1": "value2",
"key2.subKey2": "value3"
}
`Will be converted to
.tmp/scripts/locale/messages_ru.js with contents:`js
'use strict';try {
angular.module('translations');
} catch (e) {
angular.module('translations', ['pascalprecht.translate']);
}
angular.module('translations').config(function ($translateProvider) {
$translateProvider.translations('ru', {
'key1': 'value1',
'key2': {
'subKey1': 'value2',
'subKey2': 'value3'
}
});
$translateProvider.preferredLanguage('ru');
});
`#### Custom Options
In this example, we convert all .json files in
app/scripts/locale to angular-translate config files in .tmp/scripts/locale with custom moduleName. Thanks to the custom extractLanguage file's language code will be extracted from the first two characters in the file name, so filepath app/scripts/locale/he_messages.json will get language code he.`js
grunt.initConfig({
jsonAngularTranslate: {
jobName: {
options: {
moduleName: 'myAppTranslations',
extractLanguage: function (filepath) {
return filepath.split('/').reverse()[0].slice(2);
}
},
files: [{
expand: true,
cwd: 'app/scripts/locale',
src: '*.json',
dest: '.tmp/scripts/locale',
ext: '.js'
}]
}
},
})
``