mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-12-18 11:32:29 -05:00
5edb223ec1
Fixes #5912 : handling of the conference 2021 translation updates. Testing: * run `./bin/tx-push-www`: * output shows what would run with the --execute flag. * look for `tx-push-src` wtih resource name 'conference-index-2021-l10njson', for the conference 2021 view. DO NOT RUN THE SCRIPT WITH `--execute` Steps to land this PR: 1. rename the resource on transifex: `conference-2021-index-l10njson` to `conference-index-2021-l10njson` so that we don't lose any current translations. 2. merge the PR. Nightly update-translations job will execute the script. 3. rename or remove [conference-2021-index-l10njson](https://github.com/LLK/scratch-l10n/tree/master/www/scratch-website.conference-2021-index-l10njson) in scratch-l10n.
81 lines
2.9 KiB
JavaScript
Executable file
81 lines
2.9 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
/*
|
|
Push www strings to Transifex, using scratch-l10n's tx-push-src.js script
|
|
|
|
1. for every file like src/views/.../l10n.json, call tx-push-src.js
|
|
2. also call tx-push-src.js on the general file, src/l10n.json
|
|
|
|
The format of tx-push-src.js's arguments is:
|
|
$ tx-push-src.js tx-project tx-resource english-json-file
|
|
So, for example, src/views/parents/l10n.json will use:
|
|
$ tx-push-src.js scratch-website parents-l10njson src/views/parents/l10n.json
|
|
|
|
*/
|
|
|
|
const glob = require('glob');
|
|
const execSync = require('child_process').execSync;
|
|
|
|
// determine if this is a dry run, or if we're really pushing to transifex
|
|
let execute = false;
|
|
const args = process.argv.slice(2);
|
|
if (args[0] === '--execute') {
|
|
process.stdout.write('pushing to transifex...\n');
|
|
execute = true;
|
|
} else {
|
|
process.stdout.write('Dry run: pass "execute" as a parameter to add --execute switch to commands\n');
|
|
}
|
|
|
|
// exceptions to the usual relationship between file path and corresponding
|
|
// transifex resource name
|
|
const overrides = {
|
|
'src/views/teachers/faq/l10n.json': 'teacher-faq-l10njson',
|
|
'src/views/teachers/landing/l10n.json': 'educator-landing-l10njson',
|
|
'src/views/conference/2021/index/l10n.json': 'conference-index-2021-l10njson',
|
|
'src/views/conference/2019/index/l10n.json': 'conference-index-2019-l10njson',
|
|
'src/views/conference/2017/index/l10n.json': 'conference-index-2017-l10njson'
|
|
};
|
|
|
|
// convert an l10n file path to the usual format of the corresponding
|
|
// transifex resource name. E.g., for file path src/views/parents/l10n.json ,
|
|
// return parents-l10njson.
|
|
const txResourceNameFromPath = l10nFilePath => {
|
|
const pathRegexp = /(src\/views\/)?(.*)/g;
|
|
const match = pathRegexp.exec(l10nFilePath);
|
|
let resourceName = match[2];
|
|
resourceName = resourceName.replace(/\//g, '-');
|
|
resourceName = resourceName.replace(/\./g, '');
|
|
return resourceName;
|
|
};
|
|
|
|
// start with the general l10n file, which is an exception to the format
|
|
let resources = [{
|
|
filename: 'src/l10n.json',
|
|
resourceName: 'general-l10njson'
|
|
}];
|
|
|
|
glob('src/views/**/l10n.json', {}, function (er, files) {
|
|
files.forEach(filename => {
|
|
// figure out likely resource name from file path
|
|
let resourceName = txResourceNameFromPath(filename);
|
|
if (filename in overrides) { // see if it needs overriding
|
|
resourceName = overrides[filename];
|
|
}
|
|
resources.push({
|
|
filename: filename,
|
|
resourceName: resourceName
|
|
});
|
|
});
|
|
|
|
let cmd;
|
|
resources.forEach(resource => {
|
|
cmd = `$(npm bin)/tx-push-src scratch-website ${resource.resourceName} ${resource.filename}`;
|
|
if (execute) {
|
|
// push all the source files to transifex - force update
|
|
process.stdout.write(`running command: ${cmd}\n`);
|
|
execSync(cmd, {stdio: 'inherit'});
|
|
} else {
|
|
process.stdout.write(`command we would run: ${cmd}\n`);
|
|
}
|
|
});
|
|
});
|