Separate script to rebuild msg/json/en.json, qqq.json etc.

There are some files in msg/json/ (currently en.json, qqq.json,
constants.json and synonyms.json) that are generated by
scripts/i18n/js_to_json.py as part of the language file build process
- but this only needs to be done when messages.js is updated and
and usually requires some manual cleanup, so remove this step from the
existing buildLangfiles gulp script and create a separate command
('npm run generate:langfiles') to do this when required.
This commit is contained in:
Christopher Allen
2021-06-18 22:08:33 +01:00
parent 4111073292
commit a03cd29b68
4 changed files with 42 additions and 14 deletions

View File

@@ -23,6 +23,7 @@ var cleanupTasks = require('./scripts/gulpfiles/cleanup_tasks');
module.exports = {
deployDemos: appengineTasks.deployDemos,
default: buildTasks.build,
generateLangfiles: buildTasks.generateLangfiles,
build: buildTasks.build,
buildCore: buildTasks.core,
buildBlocks: buildTasks.blocks,

View File

@@ -8,13 +8,15 @@
* @fileoverview English strings.
* @author fraser@google.com (Neil Fraser)
*
* After modifying this file, either run "build.py" from the parent directory,
* or run (from this directory):
* ../scripts/i18n/js_to_json.py
* to regenerate json/{en,qqq,synonyms}.json.
* After modifying this file, run:
*
* npm run generate:langfiles
*
* to regenerate json/{en,qqq,constants,synonyms}.json.
*
* To convert all of the json files to .js files, run:
* ../scripts/i18n/create_messages.py json/*.json
*
* npm run build:langfiles
*/
'use strict';

View File

@@ -32,6 +32,7 @@
"deployDemos": "gulp deployDemos",
"format": "git-clang-format",
"format:sortrequires": "gulp sortRequires",
"generate:langfiles": "gulp generateLangfiles",
"license": "gulp checkLicenses",
"lint": "eslint .",
"package": "gulp package",

View File

@@ -408,22 +408,45 @@ goog.require('Blockly.requires');
});
};
/**
* This task regenrates msg/json/en.js and msg/json/qqq.js from
* msg/messages.js.
*/
function generateLangfiles(done) {
// Run js_to_json.py
const jsToJsonCmd = `python scripts/i18n/js_to_json.py \
--input_file ${path.join('msg', 'messages.js')} \
--output_dir ${path.join('msg', 'json')} \
--quiet`;
execSync(jsToJsonCmd, { stdio: 'inherit' });
console.log(`
Regenerated several flies in msg/json/. Now run
git diff msg/json/*.json
and check that operation has not overwritten any modifications made to
hints, etc. by the TranslateWiki volunteers. If it has, backport
their changes to msg/messages.js and re-run 'npm run generate:langfiles'.
Once you are satisfied that any new hints have been backported you may
go ahead and commit the changes, but note that the generate script
will have removed the translator credits - be careful not to commit
this removal!
`);
done();
};
/**
* This task builds Blockly's lang files.
* msg/*.js
*/
function buildLangfiles(done) {
// Run js_to_json.py
const jsToJsonCmd = `python ./scripts/i18n/js_to_json.py \
--input_file ${path.join('msg', 'messages.js')} \
--output_dir ${path.join('msg', 'json')} \
--quiet`;
execSync(jsToJsonCmd, { stdio: 'inherit' });
// Run create_messages.py
let json_files = fs.readdirSync(path.join('msg', 'json'));
json_files = json_files.filter(file => file.endsWith('json') &&
!(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file)));
!(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file)));
json_files = json_files.map(file => path.join('msg', 'json', file));
const createMessagesCmd = `python ./scripts/i18n/create_messages.py \
--source_lang_file ${path.join('msg', 'json', 'en.json')} \
@@ -432,7 +455,7 @@ function buildLangfiles(done) {
--key_file ${path.join('msg', 'json', 'keys.json')} \
--output_dir ${path.join('msg', 'js')} \
--quiet ${json_files.join(' ')}`;
execSync(createMessagesCmd, { stdio: 'inherit' });
execSync(createMessagesCmd, { stdio: 'inherit' });
done();
};
@@ -514,6 +537,7 @@ module.exports = {
build: build,
core: buildCore,
blocks: buildBlocks,
generateLangfiles: generateLangfiles,
langfiles: buildLangfiles,
uncompressed: buildUncompressed,
compressed: buildCompressed,