mirror of
https://github.com/scratchfoundation/scratch-blocks.git
synced 2025-06-05 17:34:55 -04:00
* removed all the generated files (<locale>.json, <locale>.js) except for ‘en’ versions and added them to git ignore. * updated cleanup.sh to use our messages. * added validation check to fail if any translations include newlines * skip generating js files other than ‘en’ as we don’t use them * Revised messages.js to use _single_ quoted strings instead of double (consistent with Blockly - if we need to import more strings), and switch the validations to check for single not double quotes. * additional small changes for simplicity and ergonomics Not handling category menu at this time as it’s managed differently in scratch-gui.
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
const es = require('event-stream');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const assert = require('assert');
|
|
|
|
// Storage object
|
|
const storage = {};
|
|
|
|
// File paths
|
|
const PATH_INPUT = path.resolve(__dirname, '../msg/messages.js');
|
|
const PATH_OUTPUT = path.resolve(__dirname, '../msg/json/en.json');
|
|
|
|
// Match function
|
|
const match = function (str) {
|
|
if (str.indexOf('Blockly.Msg.') !== 0) return false;
|
|
assert.notStrictEqual(str.indexOf('";'), str.length - 2, `[${str}] uses double quoted string, should use single quotes.`);
|
|
if (str.indexOf("';") !== str.length - 2) return false;
|
|
return true;
|
|
}
|
|
|
|
// Extract key and value from message definition
|
|
const extract = function (str) {
|
|
str = str.split('Blockly.Msg.')[1].split(' ');
|
|
return {
|
|
key: str[0],
|
|
value: str
|
|
.splice(2, str.length)
|
|
.join(' ')
|
|
.slice(1, -2) // strip off initial ', and ending ';
|
|
.replace(/\\'/g, "'")
|
|
};
|
|
};
|
|
|
|
// Stream input and push each match to the storage object
|
|
const stream = fs.createReadStream(PATH_INPUT);
|
|
stream
|
|
.pipe(es.split('\n'))
|
|
.pipe(es.mapSync(function (str) {
|
|
if (!match(str)) return;
|
|
const result = extract(str);
|
|
storage[result.key] = result.value;
|
|
}))
|
|
.pipe(es.wait(function (err) {
|
|
if (err) throw new Error(err);
|
|
fs.writeFileSync(PATH_OUTPUT, JSON.stringify(storage, null, 4));
|
|
}));
|