meriadec
7 years ago
3 changed files with 7 additions and 74 deletions
@ -1,3 +1,7 @@ |
|||
// This is a work in progress
|
|||
// The goal is to provide a cli which allow interact
|
|||
// with device & libcore for faster iterations
|
|||
|
|||
require('babel-polyfill') |
|||
require('babel-register') |
|||
|
@ -1,71 +0,0 @@ |
|||
#!/usr/bin/env node
|
|||
|
|||
/* eslint-disable no-console */ |
|||
/* eslint-disable no-use-before-define */ |
|||
|
|||
require('dotenv').config() |
|||
|
|||
const path = require('path') |
|||
const fs = require('fs') |
|||
const axios = require('axios') |
|||
const querystring = require('querystring') |
|||
const forEach = require('lodash/forEach') |
|||
const objectPath = require('object-path') |
|||
const yaml = require('js-yaml') |
|||
const chalk = require('chalk') |
|||
|
|||
const { LOKALISE_TOKEN, LOKALISE_PROJECT } = process.env |
|||
const BASE = 'https://api.lokalise.co/api' |
|||
|
|||
const stats = { |
|||
nb: 0, |
|||
} |
|||
|
|||
main() |
|||
|
|||
async function main() { |
|||
try { |
|||
console.log(`${chalk.blue('[>]')} ${chalk.dim('Fetching translations...')}`) |
|||
const url = `${BASE}/string/list` |
|||
const { data } = await axios.post( |
|||
url, |
|||
querystring.stringify({ |
|||
api_token: LOKALISE_TOKEN, |
|||
id: LOKALISE_PROJECT, |
|||
}), |
|||
) |
|||
if (data.response.status === 'error') { |
|||
throw new Error(JSON.stringify(data.response)) |
|||
} |
|||
const { strings } = data |
|||
forEach(strings, syncLanguage) |
|||
console.log( |
|||
`${chalk.blue('[>]')} ${chalk.dim('Successfully imported')} ${stats.nb} ${chalk.dim( |
|||
'translations', |
|||
)}`,
|
|||
) |
|||
} catch (err) { |
|||
console.log(err) |
|||
console.log(`${chalk.red('[x] Error in the process')}`) |
|||
process.exit(1) |
|||
} |
|||
} |
|||
|
|||
function syncLanguage(translations, language) { |
|||
const folderPath = getLanguageFolderPath(language) |
|||
const filePath = path.resolve(folderPath, 'translation.yml') |
|||
if (!fs.existsSync(folderPath)) { |
|||
fs.mkdirSync(folderPath) |
|||
} |
|||
const obj = translations.reduce((acc, cur) => { |
|||
objectPath.set(acc, cur.key, cur.translation) |
|||
console.log(`${chalk.green('[✓]')} ${language} ${chalk.dim(cur.key)}`) |
|||
++stats.nb |
|||
return acc |
|||
}, {}) |
|||
fs.writeFileSync(filePath, yaml.dump(obj)) |
|||
} |
|||
|
|||
function getLanguageFolderPath(language) { |
|||
return path.resolve(__dirname, `../static/i18n/${language}`) |
|||
} |
Loading…
Reference in new issue