64 lines
1.7 KiB
JavaScript
Executable File
64 lines
1.7 KiB
JavaScript
Executable File
#!/usr/bin/env node --no-deprecation
|
|
|
|
/*
|
|
po2json wrapper for gettext.js
|
|
https://github.com/mikeedwards/po2json
|
|
|
|
Dump a .po file in a json like this one:
|
|
|
|
{
|
|
"": {
|
|
"language": "en",
|
|
"plural-forms": "nplurals=2; plural=(n!=1);"
|
|
},
|
|
"simple key": "It's tranlation",
|
|
"another with %1 parameter": "It's %1 tranlsation",
|
|
"a key with plural": [
|
|
"a plural form",
|
|
"another plural form",
|
|
"could have up to 6 forms with some languages"
|
|
],
|
|
"a context\u0004a contextualized key": "translation here"
|
|
}
|
|
|
|
*/
|
|
|
|
var
|
|
fs = require('fs'),
|
|
po2json = require('po2json'),
|
|
argv = process.argv,
|
|
json = {},
|
|
pretty = '-p' === argv[4];
|
|
|
|
if (argv.length < 4)
|
|
return console.error("Wrong parameters.\nFormat: po2json.js input.po output.json [OPTIONS]\n-p for pretty");
|
|
|
|
fs.readFile(argv[2], function (err, buffer) {
|
|
var jsonData = po2json.parse(buffer);
|
|
|
|
for (var key in jsonData) {
|
|
// Special headers handling, we do not need everything
|
|
if ('' === key) {
|
|
json[''] = {
|
|
'language': jsonData['']['language'],
|
|
'plural-forms': jsonData['']['plural-forms']
|
|
};
|
|
|
|
continue;
|
|
}
|
|
|
|
console.log(key, jsonData[key]);
|
|
|
|
// Do not dump untranslated keys, they already are in the templates!
|
|
if ('' !== jsonData[key][1].length ? jsonData[key][1][0] : jsonData[key][1])
|
|
json[key] = 2 === jsonData[key].length ? jsonData[key][1] : jsonData[key].slice(1);
|
|
}
|
|
|
|
fs.writeFile(argv[3], JSON.stringify(json, null, pretty ? 4 : 0), function(err) {
|
|
if (err)
|
|
console.log(err);
|
|
else
|
|
console.log('JSON ' + (pretty ? 'pretty' : 'compactly') + ' saved to ' + argv[3]);
|
|
});
|
|
});
|