Coder Social home page Coder Social logo

grunt-i18next's Introduction

grunt-i18next Build Status npm version devDependency Status

Bundle language resource files for i18next.

Getting Started

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-i18next --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-i18next');

i18next task

Run this task with the grunt i18next command.

This multi task supports all the file mapping format Grunt supports. Please read Globbing patterns and Building the files object dynamically for additional details.Note the following task configuration properties:

src

This required property specifies the folders (not files!) the plugin should look for translation json files.

include

This optional custom property specifies which files to include and in which order. If it is omitted, all json files will be included in the specified src folders. Any grunt globbing pattern can be used (array or string).

dest

The destination folder.

rename

See grunt documentation. Used to rewrite destination URLs. Amongst other things it allows one task to create multiple output files.

cwd

See grunt documentation.

For more general information on specifying targets, files and options see the grunt Configuring Tasks guide.

Simple Usage Example

This task finds any files in locales folders and merges the ones that have the same file name. The resulting merged files are placed in application/languages.

i18next: {
  locales:{
    src: ['application/**/locales'],
    dest: 'application/languages'
  }
}

Complex Usage Example

This task finds .json files in folders that are direct descendants of src/languages, excluding files called "ignore-this.json". The task merges all the files in each src folder separately. The resulting files have file names "translation-combined.json", and are placed under application/languages in their own subfolders that match the src subfolders.

i18next: {
  complex: {
    cwd: 'src/languages',
    expand: true,
    src: ['*/'],
    include: ['**/*.json', '!**/ignore-this.json'],
    rename: function(dest, src) {
      return dest + '/' + src + 'translation-combined.json';
    },
    dest: 'application/languages'
  }
}

Release History

  • 2017-09-14 v0.2.0 Added support for processing files in a specific order
  • 2016-07-21 v0.1.0 Added support for include and rename
  • 2015-03-04 v0.0.2 Renamed to grunt-i18next
  • 2013-09-28 v0.0.1 First version

grunt-i18next's People

Contributors

martijnr avatar sabarasaba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

grunt-i18next's Issues

jsonConcat assumes array

When merging, jsonConcat invokes push on an entity of type Object (e.g. {text: 'Section One'}), but push is a function of Array.

Warning: ENOTDIR, not a directory

Hi,

I'm using grunt and i18next in one of my project.
I thought I could use your grunt-i18next plugin.

First of all, your README.md is not very clear, so I'm not sure what your plugin wants to do :-)
So I figured I would install it and see by myself, I have a question at the end, but since I encountered troubles, I'm explaining it all here to help others.

My grunt config :

    i18next: {
      locales:{
        src: ['locales/*/*'],
        dest: 'lang'
      }
    },

I first use the grunt-contrib-i18next plugin but I had this error :

$ grunt i18next -v
Running "i18next" task

Running "i18next:locales" (i18next) task
Verifying property i18next.locales exists in config...OK
Files: locales, locales/en, locales/en/ns.special.json, locales/fr, locales/fr/ns.special.json, locales/it, locales/it/ns.special.json -> lang
Reading locales/en/ns.special.json...OK
Parsing locales/en/ns.special.json...OK
Reading lang/ns.special.json...OK
Parsing lang/ns.special.json...OK
Warning: Cannot call method 'apply' of undefined Use --force to continue.

Aborted due to warnings.

Then, I saw #2, so I changed the plugin to use grunt-i18next with the same config, and then I had :

$ grunt i18next -v
Running "i18next" task

Running "i18next:locales" (i18next) task
Verifying property i18next.locales exists in config...OK
Files: locales/en/ns.special.json, locales/fr/ns.special.json, locales/it/ns.special.json -> lang
Warning: ENOTDIR, not a directory 'locales/en/ns.special.json' Use --force to continue.

Aborted due to warnings.

So I changed my configuration to :

    i18next: {
      fr:{
        src: ['locales/fr/'],
        dest: 'lang/fr'
      },
      en:{
        src: ['locales/en/'],
        dest: 'lang/en'
      },
      it:{
        src: ['locales/it/'],
        dest: 'lang/it'
      }
    },

And now it works fine :

$ grunt i18next -v
Running "i18next" task

Running "i18next:fr" (i18next) task
Verifying property i18next.fr exists in config...OK
Files: locales/fr/ -> lang/fr
Reading locales/fr/ns.special.json...OK
Parsing locales/fr/ns.special.json...OK
Reading lang/fr/ns.special.json...OK
Parsing lang/fr/ns.special.json...OK
Writing lang/fr/ns.special.json...OK

Running "i18next:en" (i18next) task
Verifying property i18next.en exists in config...OK
Files: locales/en/ -> lang/en
Reading locales/en/ns.special.json...OK
Parsing locales/en/ns.special.json...OK
Writing lang/en/ns.special.json...OK

Running "i18next:it" (i18next) task
Verifying property i18next.it exists in config...OK
Files: locales/it/ -> lang/it
Reading locales/it/ns.special.json...OK
Parsing locales/it/ns.special.json...OK
Writing lang/it/ns.special.json...OK

Done, without errors.

I think I might miss something, because I don't see what this plugin adds more than minify/uglify the json locales files.
My questions :

  • Do I use the locales files correctly ?
  • Is this plugin suppose to merge all the locales files for each language but since I have only one by language, it's useless for me ?
  • Did I misconfigured something ?

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.