gulp-json-angular-translate

1.0.0 • Public • Published

gulp-json-angular-translate

Converts json files to angular-translate config javascript files.

Gulp version of the grunt-json-angular-translate plugin

Getting Started

This plugin requires Gulp.

npm install gulp-json-angular-translate --save-dev

Once installed, it's available under gulp-json-angular-translate:

var jsonAngularTranslate = require('gulp-json-angular-translate');

Usage

gulp.src('*/**/locale/*.json')
  .pipe(jsonAngularTranslate({
    moduleName: 'translations',
    extractLanguage: /..(?=\.[^.]*$)/,
    hasPreferredLanguage: true,
    createNestedKeys: true
  }))
  .pipe(gulp.dest('.tmp/scripts'))
})

Options

moduleName

Type: String Default value: translations

The module name to use in the angular.module calls.

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.

hasPreferredLanguage

Type: Boolean Default value: true

Whether to set the language and preferred language in config file. Relevant only in angular-translate 1.*.

createNestedKeys

Type: Boolean Default value: true

Whether 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': '...'
}

Usage Examples

Default Options

Convert all .json files in app/scripts/locale to angular-translate config files in .tmp/scripts/locale.

gulp.src('*.json', {cwd: 'app/scripts/locale'})
  .pipe(jsonAngularTranslate())
  .pipe(gulp.dest('.tmp/scripts/locale'));

So app/scripts/locale/messages_ru.js with contents:

{
  "key1": "value1",
  "key2.subKey1": "value2",
  "key2.subKey2": "value3"
}

Will be converted to .tmp/scripts/locale/messages_ru.js with contents:

'use strict';
 
try {
  angular.module('translations');
} catch (e) {
  angular.module('translations', ['pascalprecht.translate']);
}
 
angular.module('translations').config(['$translateProvider', function ($translateProvider) {
  var translations = {
    'key1': 'value1',
    'key2': {
      'subKey1': 'value2',
      'subKey2': 'value3'
    }
  };
  $translateProvider.translations('ru', translations);
  $translateProvider.translations(translations);
  $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.

gulp.src('*.json', {cwd: 'app/scripts/locale'})
  .pipe(jsonAngularTranslate({
    moduleName: 'myAppTranslations',
    extractLanguage: function (filepath) {
      return filepath.split('/').reverse()[0].slice(2);
    }
  }))
  .pipe(gulp.dest('.tmp/scripts/locale'));
})

Contributing

Unit tests mandatory, run them with npm test (uses mocha).

Package Sidebar

Install

npm i gulp-json-angular-translate

Weekly Downloads

72

Version

1.0.0

License

MIT

Last publish

Collaborators

  • nikaspran