grunt-i18next-yaml

Grunt Plugin for assembling language-separated i18next JSON output files from language-merged YAML input files

npm install grunt-i18next-yaml
9 downloads in the last week
19 downloads in the last month

grunt-i18next-yaml

Grunt Plugin for assembling language-separated i18next JSON output files from language-merged YAML input files.

Getting Started

This plugin requires Grunt ~0.4.0

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

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

grunt.loadNpmTasks("grunt-i18next-yaml");

Task Options

  • encoding: (default utf8) the character encoding to use for reading the YAML and writing the JSON files.

  • language: (default en) the language to extract from the YAML source files and to write to the JSON destination file.

  • replacer: (default null) the 2nd argument to JSON.stringify() when serializing the JSON destination file content.

  • space: (default \t) the 3nd argument to JSON.stringify() when serializing the JSON destination file content.

Usage Example

With the following input files...

  • src/foo/foo.i18n.yaml:
foo:
    en:
        title: The Foo Component
        sub-title: The best Component ever
    de:
        title: Die Foo Komponente
        sub-title: Die beste Komponente, die es je gab
  • src/bar/bar.i18n.yaml:
bar:
    en:
        title: The Bar Component
        sub-title: The worst Component ever
    de:
        title: Die Foo Komponente
        sub-title: Die schlechteste Komponente, die es je gab

...and this Grunt build configuration...

  • Gruntfile.js:
// [...]
grunt.initConfig({
    // [...]
    "i18next-yaml": {
        "en": {
            src: "src/**/*.i18n.yaml",
            dest: "build/app.i18n-en.json",
            options: { language: "en" }
        },
        "de": {
            src: "src/**/*.i18n.yaml",
            dest: "build/app.i18n-de.json",
            options: { language: "de" }
        }
    }
    // [...]
});
// [...]

...you will get the following output files:

  • build/app.i18n-en.json:
{
    "foo": {
        "title": "The Foo Component",
        "sub-title": "The best Component ever"
    },
    "bar": {
        "title": "The Bar Component",
        "sub-title": "The worst Component ever"
    }
}
  • build/app.i18n-de.json:
{
    "foo": {
        "title": "Die Foo Komponente",
        "sub-title": "Die beste Komponente, die es je gab"
    },
    "bar": {
        "title": "Die Foo Komponente",
        "sub-title": "Die schlechteste Komponente, die es je gab"
    }
}
npm loves you