From 9445ed4505f0d4eb03f41386a95b1ebf44638bd7 Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Fri, 19 May 2017 01:33:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20index.json=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D1=81?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BE=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D1=8F=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/i18n-onesky.js | 20 ++++++++++--- src/components/langMenu/LangMenu.jsx | 27 ++++++------------ src/i18n/index.json | 42 ++++++++++++++++++++++++++++ src/services/i18n.js | 4 ++- 4 files changed, 69 insertions(+), 24 deletions(-) create mode 100644 src/i18n/index.json diff --git a/scripts/i18n-onesky.js b/scripts/i18n-onesky.js index e4f6e1b..700148e 100644 --- a/scripts/i18n-onesky.js +++ b/scripts/i18n-onesky.js @@ -8,6 +8,7 @@ import ch from 'chalk'; const LANG_DIR = `${__dirname}/../src/i18n`; const SOURCE_LANG = 'en'; // Базовый язык, относительно которого будут формироваться все остальные переводы const SOURCE_FILE_NAME = 'i18n.json'; // Название файла с исходными строками внутри OneSky +const INDEX_FILE_NAME = 'index.json'; // Название файла с информацией о переводах const MIN_RELEASE_PROGRESS = 80; // Какой процент локали перевода должен быть выполнен, чтобы локаль была опубликована /** @@ -84,8 +85,7 @@ function sortByKeys(object) { async function pullReadyLanguages() { const languages = JSON.parse(await onesky.getLanguages({...defaultOptions})); return languages.data - .filter((elem) => elem.is_ready_to_publish || parseFloat(elem.translation_progress) > MIN_RELEASE_PROGRESS) - .map((elem) => elem.custom_locale || elem.code); + .filter((elem) => elem.is_ready_to_publish || parseFloat(elem.translation_progress) > MIN_RELEASE_PROGRESS); } async function pullTranslate(language) { @@ -97,14 +97,26 @@ async function pullTranslate(language) { async function pull() { console.log('Pulling locales list...'); const langs = await pullReadyLanguages(); + const langsList = langs.map((elem) => elem.custom_locale || elem.code); - console.log(ch.green('Pulled locales: ') + langs.map((lang) => code2locale(lang)).join(', ')); + console.log(ch.green('Pulled locales: ') + langsList.map((lang) => code2locale(lang)).join(', ')); console.log('Pulling translates...'); - await Promise.all(langs.map(async (lang) => { + await Promise.all(langsList.map(async (lang) => { await pullTranslate(lang); console.log(ch.green('Locale ') + ch.white.bold(code2locale(lang)) + ch.green(' successfully pulled')); })); + + console.log('Writing an index file...'); + const mapFileContent = {}; + langs.map((elem) => { + mapFileContent[elem.locale] = { + name: elem.local_name.match(/^([^\(]+)/)[0].trim(), // Обрезаем значения в скобках + progress: parseFloat(elem.translation_progress), + }; + }); + fs.writeFileSync(`${LANG_DIR}/${INDEX_FILE_NAME}`, formatTranslates(mapFileContent)); + console.log(ch.green('The index file was successfully written')); } async function publish() { diff --git a/src/components/langMenu/LangMenu.jsx b/src/components/langMenu/LangMenu.jsx index 4cdaf13..a113d30 100644 --- a/src/components/langMenu/LangMenu.jsx +++ b/src/components/langMenu/LangMenu.jsx @@ -7,18 +7,7 @@ import { FormattedMessage as Message } from 'react-intl'; import styles from './langMenu.scss'; import messages from './langMenu.intl.json'; -const LANGS = { - be: 'Беларуская', - en: 'English', - id: 'Bahasa Indonesia', - pl: 'Polski', - ro: 'Română', - ru: 'Русский', - sl: 'Slovenščina', - pt: 'Português (Br)', - uk: 'Українська', - vi: 'Tiếng Việt', -}; +import LANGS from 'i18n/index.json'; class LangMenu extends Component { static displayName = 'LangMenu'; @@ -59,12 +48,12 @@ class LangMenu extends Component {