Create internationalized files from a CSV translations file
$ npm install --save-dev gulp-i18n-csv
var gulp = require('gulp');
var gulpi18nCsv = require('gulp-i18n-csv');
gulp.task('default', function () {
return gulp.src('node_modules/gulp-i18n-csv/sample/wet.csv')
.pipe(gulpi18nCsv())
.pipe(gulp.dest('./output'));
});
gulpi18nCsv([ options ])
Type: boolean
Default: false
When true
, outputs human-readble JSON.
Type: string
Default: locales/\__lng__/\__ns__.json
When specified, writes file to specified location.
_lng_ - language name _ns_ - namespace (defaults to 'translation')
gulpi18nCsv({ resPath: 'locales/__lng__/__ns__.json' })
'locales/en/translation.json'
'locales/fr/translation.json'
'locales/zh-Hans/translation.json'
...
Another one:
gulpi18nCsv({ resPath: 'locales/__ns__-__lng__.json' })
'locales/translation-en.json'
'locales/translation-fr.json'
'locales/translation-zh-Hans.json'
...
If a superkey has subkeys after it , do not have the superkey as a key in the csv file at all.
(ie. if foo
has subkey foo.bar
, do not have foo
as a key in the csv file)
gulp-i18n-csv provides deep key nesting when the key is separated by periods.
key | string |
---|---|
foo.bar.blah.dog | hello |
This about should become
{
"foo": {
"bar": {
"blah": {
"dog": "hello"
}
}
}
}
Allows for splitting top-level keys into separate files depending on the option specified.
Use this to split every top-level key into its own csv file:
gulpi18nCsv({ split: true })
Replace with an array to split only keys in array from the main translation file:
gulpi18nCsv({ split: ['cal', 'lang', 'tab'] })
Replace with string to only split one key away from the main translation file:
gulpi18nCsv({ split: 'tab' })
If resPath is provided when splitting, the key being split will replace __ns__
in the file path.
Say you have the following .csv:
key | string |
---|---|
lang | ru |
tab.play | Tab Play |
tab.blar | Tab Blar |
help.one | Help One |
help.three | Help Two |
help.four | Help Three |
When the following is specified, will separate into 3 files: lang.json, tab.json, and help.json.
{split: true}
When the following is specified, will separate into 3 files: translation.json, tab.json, and help.json.
{split: [tab, help]}
When the following is specified, will separate into 2 files: lang.json and translation.json.
{split: lang}
{ resPath: 'locales/__lng__/__ns__.json', split: true }
Will separate into 3 files at paths locales/ru/lang.json, locales/ru/tab.json, locales/ru/help.json.
MIT © Cynthia (Qingwei) Li