Теперь из OneSky выгружаются также языки с процентом переведённости больше 80%

This commit is contained in:
ErickSkrauch 2017-05-18 23:37:44 +03:00
parent 6dd628cc99
commit 4b14c3144b

View File

@ -3,11 +3,12 @@
import onesky from 'onesky-utils'; import onesky from 'onesky-utils';
import fs from 'fs'; import fs from 'fs';
import chalk from 'chalk'; import ch from 'chalk';
const LANG_DIR = `${__dirname}/../src/i18n`; const LANG_DIR = `${__dirname}/../src/i18n`;
const SOURCE_LANG = 'en'; // Базовый язык, относительно которого будут формироваться все остальные переводы const SOURCE_LANG = 'en'; // Базовый язык, относительно которого будут формироваться все остальные переводы
const SOURCE_FILE_NAME = 'i18n.json'; // Название файла с исходными строками внутри OneSky const SOURCE_FILE_NAME = 'i18n.json'; // Название файла с исходными строками внутри OneSky
const MIN_RELEASE_PROGRESS = 80; // Какой процент локали перевода должен быть выполнен, чтобы локаль была опубликована
/** /**
* Массив локалей для соответствия каноничному виду в OneSky и нашему представлению * Массив локалей для соответствия каноничному виду в OneSky и нашему представлению
@ -16,6 +17,11 @@ const SOURCE_FILE_NAME = 'i18n.json'; // Название файла с исхо
const LOCALES_MAP = { const LOCALES_MAP = {
ru: 'ru-RU', ru: 'ru-RU',
en: 'en-GB', en: 'en-GB',
sl: 'sl-SI',
fr: 'fr-FR',
el: 'el-GR',
de: 'de-DE',
sr: 'sr-RS',
}; };
// https://ely-translates.oneskyapp.com/admin/site/settings // https://ely-translates.oneskyapp.com/admin/site/settings
@ -78,7 +84,7 @@ function sortByKeys(object) {
async function pullReadyLanguages() { async function pullReadyLanguages() {
const languages = JSON.parse(await onesky.getLanguages({...defaultOptions})); const languages = JSON.parse(await onesky.getLanguages({...defaultOptions}));
return languages.data return languages.data
.filter((elem) => elem.is_ready_to_publish) .filter((elem) => elem.is_ready_to_publish || parseFloat(elem.translation_progress) > MIN_RELEASE_PROGRESS)
.map((elem) => elem.custom_locale || elem.code); .map((elem) => elem.custom_locale || elem.code);
} }
@ -92,17 +98,17 @@ async function pull() {
console.log('Pulling locales list...'); console.log('Pulling locales list...');
const langs = await pullReadyLanguages(); const langs = await pullReadyLanguages();
console.log(chalk.green('Pulled locales: ') + langs.map((lang) => code2locale(lang)).join(', ')); console.log(ch.green('Pulled locales: ') + langs.map((lang) => code2locale(lang)).join(', '));
console.log('Pulling translates...'); console.log('Pulling translates...');
await Promise.all(langs.map(async (lang) => { await Promise.all(langs.map(async (lang) => {
await pullTranslate(lang); await pullTranslate(lang);
console.log(chalk.green('Locale ') + chalk.white.bold(code2locale(lang)) + chalk.green(' successfully pulled')); console.log(ch.green('Locale ') + ch.white.bold(code2locale(lang)) + ch.green(' successfully pulled'));
})); }));
} }
async function publish() { async function publish() {
console.log(`Publishing ${chalk.bold(SOURCE_LANG)} translates file...`); console.log(`Publishing ${ch.bold(SOURCE_LANG)} translates file...`);
await onesky.postFile({ await onesky.postFile({
...defaultOptions, ...defaultOptions,
format: 'HIERARCHICAL_JSON', format: 'HIERARCHICAL_JSON',
@ -111,7 +117,7 @@ async function publish() {
language: locale2code(SOURCE_LANG), language: locale2code(SOURCE_LANG),
fileName: SOURCE_FILE_NAME, fileName: SOURCE_FILE_NAME,
}); });
console.log(chalk.green('Success')); console.log(ch.green('Success'));
} }
try { try {