const fs = require('fs') const path = require('path') const axios = require('axios') const locales = ['zh', 'en', 'kr', 'fr', 'fr', 'ja'] const fetchLocale = async locale => { return axios.get(`https://4dkk.4dage.com/v4/www/locales/${locale}.json?${Date.now()}`) } const merge = (source, resource, target) => { for (let key in source) { if (typeof source[key] === 'string') { target[key] = resource[key] == void 0 ? source[key] : resource[key] } else { target[key] = {} resource[key] = resource[key] || {} merge(source[key], resource[key], target[key]) } } } const combine = (source, resource, target) => { merge(source, resource, target) } function exec() { locales.forEach(locale => { fetchLocale(locale) .then(response => { try { fs.readFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), (err, data) => { if (err) { return } var target = {} var source = JSON.parse(data.toString()) var resource = response.data combine(source, resource, target) fs.writeFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), JSON.stringify(target, null, 4), () => {}) if (locale == 'zh') { fs.writeFile(path.join(__dirname, '..', 'src', 'views', 'locales', locale + '.json'), JSON.stringify(target, null, 4), () => {}) } }) } catch (error) { console.log(error) } }) .catch(err => { if (locale == 'zh') { fs.readFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), (err, data) => { if (err) { return } fs.writeFile(path.join(__dirname, '..', 'src', 'views', 'locales', locale + '.json'), data.toString(), () => {}) }) } }) }) } exec()