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-polyfill') |
||||
require('babel-register') |
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