update-i18n.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const fs = require('fs')
  2. const path = require('path')
  3. const axios = require('axios')
  4. const locales = ['zh', 'en', 'kr', 'fr', 'fr', 'ja']
  5. const fetchLocale = async locale => {
  6. return axios.get(`https://4dkk.4dage.com/v4/www/locales/${locale}.json?${Date.now()}`)
  7. }
  8. const merge = (source, resource, target) => {
  9. for (let key in source) {
  10. if (typeof source[key] === 'string') {
  11. target[key] = resource[key] == void 0 ? source[key] : resource[key]
  12. } else {
  13. target[key] = {}
  14. resource[key] = resource[key] || {}
  15. merge(source[key], resource[key], target[key])
  16. }
  17. }
  18. }
  19. const combine = (source, resource, target) => {
  20. merge(source, resource, target)
  21. }
  22. function exec() {
  23. locales.forEach(locale => {
  24. fetchLocale(locale)
  25. .then(response => {
  26. try {
  27. fs.readFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), (err, data) => {
  28. if (err) {
  29. return
  30. }
  31. var target = {}
  32. var source = JSON.parse(data.toString())
  33. var resource = response.data
  34. combine(source, resource, target)
  35. fs.writeFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), JSON.stringify(target, null, 4), () => {})
  36. if (locale == 'zh') {
  37. fs.writeFile(path.join(__dirname, '..', 'src', 'views', 'locales', locale + '.json'), JSON.stringify(target, null, 4), () => {})
  38. }
  39. })
  40. } catch (error) {
  41. console.log(error)
  42. }
  43. })
  44. .catch(err => {
  45. if (locale == 'zh') {
  46. fs.readFile(path.join(__dirname, '..', 'src', 'locales', locale + '.json'), (err, data) => {
  47. if (err) {
  48. return
  49. }
  50. fs.writeFile(path.join(__dirname, '..', 'src', 'views', 'locales', locale + '.json'), data.toString(), () => {})
  51. })
  52. }
  53. })
  54. })
  55. }
  56. exec()