2017-05-27 03:28:28 -06:00
|
|
|
const fs = require('fs-extra');
|
|
|
|
const parseString = require('xml2js').parseString;
|
|
|
|
|
2017-07-06 06:40:09 -06:00
|
|
|
const baseDir = 'translation/source';
|
2019-06-12 08:49:38 -06:00
|
|
|
const dbs = ['site', 'arena', 'emails', 'learn', 'activity', 'coordinates', 'study'];
|
2017-05-27 03:28:28 -06:00
|
|
|
|
2017-07-06 06:46:53 -06:00
|
|
|
function ucfirst(s) {
|
|
|
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
function keyListFrom(name) {
|
|
|
|
return fs.readFile(`${baseDir}/${name}.xml`, { encoding: 'utf8' }).then(txt => {
|
2017-07-06 06:40:09 -06:00
|
|
|
return new Promise((resolve, reject) => parseString(txt, (_, xml) => {
|
|
|
|
const strings = (xml.resources.string || []).map(e => e['$'].name);
|
|
|
|
const plurals = (xml.resources.plurals || []).map(e => e['$'].name);
|
|
|
|
const keys = strings.concat(plurals);
|
2017-07-06 06:52:04 -06:00
|
|
|
resolve({
|
|
|
|
name: name,
|
2017-07-16 03:58:59 -06:00
|
|
|
code: keys.map(k => 'val `' + k + '` = new Translated("' + k + '", ' + ucfirst(name) + ')').join('\n') + '\n',
|
2017-07-06 06:52:04 -06:00
|
|
|
});
|
2017-07-06 06:40:09 -06:00
|
|
|
}));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-07-06 06:52:04 -06:00
|
|
|
Promise.all(dbs.map(keyListFrom)).then(objs => {
|
|
|
|
function dbCode(obj) {
|
|
|
|
return obj.name === 'site' ?
|
2017-07-16 03:58:59 -06:00
|
|
|
obj.code :
|
2017-07-16 04:51:00 -06:00
|
|
|
`object ${obj.name} {\n${obj.code}}\n`;
|
2017-07-06 06:52:04 -06:00
|
|
|
}
|
2017-07-06 06:40:09 -06:00
|
|
|
const code = `// Generated with bin/trans-dump.js
|
2017-05-27 03:28:28 -06:00
|
|
|
package lila.i18n
|
|
|
|
|
2019-12-20 08:50:29 -07:00
|
|
|
import I18nDb.{ ${dbs.map(ucfirst).sort().join(', ')} }
|
2017-07-06 06:12:34 -06:00
|
|
|
|
2017-05-27 15:31:31 -06:00
|
|
|
// format: OFF
|
2017-05-27 03:28:28 -06:00
|
|
|
object I18nKeys {
|
|
|
|
|
|
|
|
def untranslated(message: String) = new Untranslated(message)
|
|
|
|
|
2017-07-06 06:52:04 -06:00
|
|
|
${objs.map(dbCode).join('\n')}
|
2017-07-16 03:58:59 -06:00
|
|
|
}
|
|
|
|
`;
|
2017-07-06 06:52:04 -06:00
|
|
|
|
2017-07-06 06:40:09 -06:00
|
|
|
fs.writeFile('modules/i18n/src/main/I18nKeys.scala', code);
|
2017-05-27 03:28:28 -06:00
|
|
|
});
|