mirror of
https://github.com/Mibew/mibew.git
synced 2025-02-08 00:34:42 +03:00
Search localization strings in .handlebars files
This commit is contained in:
parent
95d2593b28
commit
3ca9395d69
@ -3,6 +3,10 @@ var fs = require('fs'),
|
|||||||
exec = require('child_process').exec,
|
exec = require('child_process').exec,
|
||||||
eventStream = require('event-stream'),
|
eventStream = require('event-stream'),
|
||||||
runSequence = require('run-sequence'),
|
runSequence = require('run-sequence'),
|
||||||
|
through = require('through2'),
|
||||||
|
lodash = require('lodash'),
|
||||||
|
PoFile = require('pofile'),
|
||||||
|
strftime = require('strftime'),
|
||||||
gulp = require('gulp'),
|
gulp = require('gulp'),
|
||||||
uglify = require('gulp-uglify'),
|
uglify = require('gulp-uglify'),
|
||||||
concat = require('gulp-concat'),
|
concat = require('gulp-concat'),
|
||||||
@ -149,7 +153,8 @@ gulp.task('page-styles', function() {
|
|||||||
|
|
||||||
// Generate .pot files based on the sources
|
// Generate .pot files based on the sources
|
||||||
gulp.task('generate-pot', function() {
|
gulp.task('generate-pot', function() {
|
||||||
return gulp.src([
|
return eventStream.merge(
|
||||||
|
gulp.src([
|
||||||
config.mibewPath + '/**/*.php',
|
config.mibewPath + '/**/*.php',
|
||||||
'!' + config.phpVendorPath + '/**/*.*',
|
'!' + config.phpVendorPath + '/**/*.*',
|
||||||
'!' + config.pluginsPath + '/**/*.*'
|
'!' + config.pluginsPath + '/**/*.*'
|
||||||
@ -159,11 +164,18 @@ gulp.task('generate-pot', function() {
|
|||||||
keywords: [
|
keywords: [
|
||||||
{name: 'getlocal'}
|
{name: 'getlocal'}
|
||||||
]
|
]
|
||||||
}))
|
})),
|
||||||
|
gulp.src([
|
||||||
|
config.chatStylesPath + '/default/templates_src/**/*.handlebars',
|
||||||
|
config.pageStylesPath + '/default/templates_src/**/*.handlebars'
|
||||||
|
], {base: config.mibewPath})
|
||||||
|
.pipe(xgettextHandlebars())
|
||||||
|
)
|
||||||
.pipe(concatPo('translation.pot', {
|
.pipe(concatPo('translation.pot', {
|
||||||
headers: {
|
headers: {
|
||||||
'Project-Id-Version': config.package.version,
|
'Project-Id-Version': config.package.version,
|
||||||
'Report-Msgid-Bugs-To': config.package.bugs.email,
|
'Report-Msgid-Bugs-To': config.package.bugs.email,
|
||||||
|
'POT-Creation-Date': strftime('%Y-%m-%d %H:%M%z'),
|
||||||
'PO-Revision-Date': '',
|
'PO-Revision-Date': '',
|
||||||
'Last-Translator': '',
|
'Last-Translator': '',
|
||||||
'Language-Team': '',
|
'Language-Team': '',
|
||||||
@ -262,3 +274,44 @@ var wrapHandlebarsTemplate = function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts gettext messages from handlebars templates.
|
||||||
|
*
|
||||||
|
* @returns {Function} A function that can be used in pipe() method of a file
|
||||||
|
* stream.
|
||||||
|
*/
|
||||||
|
var xgettextHandlebars = function() {
|
||||||
|
var helperRegExp = /\{{2}l10n\s*('|")(.*?[^\\])\1.*?\}{2}/g;
|
||||||
|
|
||||||
|
return through.obj(function (file, enc, callback) {
|
||||||
|
var po = new PoFile();
|
||||||
|
match = false,
|
||||||
|
contents = file.contents.toString();
|
||||||
|
|
||||||
|
while (match = helperRegExp.exec(contents)) {
|
||||||
|
// Try to find item in the .po file by its name.
|
||||||
|
var item = lodash.find(po.items, function(item) {
|
||||||
|
return match[2] === item.msgid;
|
||||||
|
});
|
||||||
|
|
||||||
|
var line = contents.substr(0, match.index).split(/\r?\n|\r/g).length;
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
// There is no such item. Create new one.
|
||||||
|
item = new PoFile.Item();
|
||||||
|
item.msgid = match[2].replace(/\\'/g, "'").replace(/\\"/g, '"');
|
||||||
|
po.items.push(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new reference
|
||||||
|
item.references.push(file.relative + ':' + line);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update file contents
|
||||||
|
file.contents = new Buffer(po.toString());
|
||||||
|
this.push(file);
|
||||||
|
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
"gulp-xgettext": "~0.2.0",
|
"gulp-xgettext": "~0.2.0",
|
||||||
"gulp-concat-po": "~0.1.0",
|
"gulp-concat-po": "~0.1.0",
|
||||||
"run-sequence": "~0.3.6",
|
"run-sequence": "~0.3.6",
|
||||||
|
"through2": "^0.5.1",
|
||||||
|
"pofile": "~0.2.12",
|
||||||
|
"lodash": "~2.4.1",
|
||||||
|
"strftime": "~0.8.2",
|
||||||
"event-stream": "~3.1.7"
|
"event-stream": "~3.1.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user