You've already forked pigallery2
mirror of
https://github.com/bpatrik/pigallery2.git
synced 2025-06-23 00:29:19 +02:00
adding translation
This commit is contained in:
114
gulpfile.js
114
gulpfile.js
@ -6,6 +6,7 @@ var runSequence = require('run-sequence');
|
||||
var jsonModify = require('gulp-json-modify');
|
||||
var exec = require('child_process').exec;
|
||||
|
||||
var translationFolder = "translate";
|
||||
var tsBackendProject = ts.createProject('tsconfig.json');
|
||||
gulp.task('build-backend', function () {
|
||||
return gulp.src([
|
||||
@ -16,9 +17,8 @@ gulp.task('build-backend', function () {
|
||||
.pipe(gulp.dest("./release"))
|
||||
|
||||
});
|
||||
var createFornendTask = function (tpye, script) {
|
||||
//console.log(tpye, script);
|
||||
gulp.task(tpye, function (cb) {
|
||||
var createFrontendTask = function (type, script) {
|
||||
gulp.task(type, function (cb) {
|
||||
exec(script, function (err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
@ -28,18 +28,13 @@ var createFornendTask = function (tpye, script) {
|
||||
};
|
||||
|
||||
gulp.task('build-frontend', function (done) {
|
||||
var dirCont = fs.readdirSync("./frontend/locale");
|
||||
var files = dirCont.filter(function (elm) {
|
||||
return elm.match(/.*\.[a-zA-Z]+\.(xlf)/ig);
|
||||
});
|
||||
var languages = files.map(function (f) {
|
||||
return f.split(".")[1]
|
||||
});
|
||||
var languages = getLanguages();
|
||||
var tasks = [];
|
||||
createFornendTask('build-frontend-release default', "ng build --aot -prod --output-path=./release/dist --no-progress");
|
||||
createFrontendTask('build-frontend-release default', "ng build --aot -prod --output-path=./release/dist --no-progress");
|
||||
tasks.push('build-frontend-release default');
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
createFornendTask('build-frontend-release ' + languages[i], "ng build --aot -prod --output-path=./release/dist/" + languages[i] + " --no-progress --locale=" + languages[i] + " --i18n-format xlf --i18n-file frontend/locale/" + files[i] + " --missing-translation warning");
|
||||
for (var i = 0; i < languages.length; i++) {
|
||||
createFrontendTask('build-frontend-release ' + languages[i], "ng build --aot -prod --output-path=./release/dist/" + languages[i] + " --no-progress --locale=" + languages[i] +
|
||||
" --i18n-format xlf --i18n-file frontend/" + translationFolder + "/messages." + languages[i] + ".xlf" + " --missing-translation warning");
|
||||
tasks.push('build-frontend-release ' + languages[i]);
|
||||
}
|
||||
tasks.push(function () {
|
||||
@ -84,24 +79,32 @@ gulp.task('build-release', function (done) {
|
||||
});
|
||||
});
|
||||
|
||||
var getLanguages = function () {
|
||||
if (!fs.existsSync("./frontend/" + translationFolder)) {
|
||||
return [];
|
||||
}
|
||||
var dirCont = fs.readdirSync("./frontend/" + translationFolder);
|
||||
var files = dirCont.filter(function (elm) {
|
||||
return elm.match(/.*\.[a-zA-Z]+\.(xlf)/ig);
|
||||
});
|
||||
return files.map(function (f) {
|
||||
return f.split(".")[1]
|
||||
});
|
||||
};
|
||||
|
||||
var simpleBuild = function (isProd) {
|
||||
return function (done) {
|
||||
var dirCont = fs.readdirSync("./frontend/locale");
|
||||
var files = dirCont.filter(function (elm) {
|
||||
return elm.match(/.*\.[a-zA-Z]+\.(xlf)/ig);
|
||||
});
|
||||
var languages = files.map(function (f) {
|
||||
return f.split(".")[1]
|
||||
});
|
||||
var languages = getLanguages();
|
||||
var tasks = [];
|
||||
var cmd = "ng build ";
|
||||
if (isProd) {
|
||||
cmd += " -prod "
|
||||
}
|
||||
createFornendTask('build-frontend default', cmd + "--output-path=./dist --no-progress");
|
||||
createFrontendTask('build-frontend default', cmd + "--output-path=./dist --no-progress");
|
||||
tasks.push('build-frontend default');
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
createFornendTask('build-frontend ' + languages[i], cmd + "--output-path=./dist/" + languages[i] + " --no-progress --locale " + languages[i] + " --i18n-format=xlf --i18n-file=frontend/locale/" + files[i] + " --missing-translation warning");
|
||||
for (var i = 0; i < languages.length; i++) {
|
||||
createFrontendTask('build-frontend ' + languages[i], cmd + "--output-path=./dist/" + languages[i] + " --no-progress --locale " + languages[i] +
|
||||
" --i18n-format=xlf --i18n-file=frontend/" + translationFolder + "/messages." + languages[i] + ".xlf" + " --missing-translation warning");
|
||||
tasks.push('build-frontend ' + languages[i]);
|
||||
}
|
||||
tasks.push(function () {
|
||||
@ -112,5 +115,70 @@ var simpleBuild = function (isProd) {
|
||||
};
|
||||
};
|
||||
|
||||
gulp.task("extract-locale", function (cb) {
|
||||
console.log("creating source translation file: locale.source.xlf");
|
||||
exec('ng xi18n -of ./../locale.source.xlf -f xlf --locale en', function (err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
exec('ngx-extractor -i frontend/**/*.ts -f xlf -o locale.source.xlf', function (err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
var translate = function (list, cb) {
|
||||
var localsStr = '"[\\"' + list.join('\\",\\"') + '\\"]"';
|
||||
console.log(localsStr);
|
||||
exec('xlf-google-translate --source-lang="en" --source-file="./locale.source.xlf" --destination-folder="./frontend/"' +
|
||||
translationFolder + ' --destination-languages=' + localsStr, function (err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
cb(err);
|
||||
});
|
||||
};
|
||||
|
||||
gulp.task("update-translation-only", function (cb) {
|
||||
translate(getLanguages(), cb)
|
||||
});
|
||||
|
||||
gulp.task("update-translation", function (done) {
|
||||
runSequence('extract-locale', 'update-translation-only', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
gulp.task("add-translation-only", function (cb) {
|
||||
var languages = getLanguages();
|
||||
var lng = null;
|
||||
for (var i = 0; i < process.argv.length - 1; i++) {
|
||||
if (process.argv[i] === "add-translation") {
|
||||
lng = process.argv[i + 1].replace("--", "");
|
||||
}
|
||||
}
|
||||
if (lng == null) {
|
||||
console.error("Error: set language with '--' e.g: npm run add-translation -- --en");
|
||||
return cb();
|
||||
}
|
||||
if (languages.indexOf(lng) !== -1) {
|
||||
console.error("Error: language already exists, can't add. These language(s) already exist(s): " + languages);
|
||||
return cb();
|
||||
}
|
||||
translate([lng], cb)
|
||||
});
|
||||
|
||||
|
||||
gulp.task("add-translation", function (done) {
|
||||
runSequence('extract-locale', 'add-translation-only', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
gulp.task('build-dev', simpleBuild(false));
|
||||
gulp.task('build-prod', simpleBuild(true));
|
||||
|
Reference in New Issue
Block a user