localization.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const graphHelper = require('../../helpers/graph')
  2. const _ = require('lodash')
  3. module.exports = {
  4. Query: {
  5. async locales(obj, args, context, info) {
  6. let remoteLocales = await WIKI.cache.get('locales')
  7. let localLocales = await WIKI.db.locales.query().select('code', 'isRTL', 'name', 'nativeName', 'createdAt', 'updatedAt', 'availability')
  8. remoteLocales = remoteLocales || localLocales
  9. return _.map(remoteLocales, rl => {
  10. let isInstalled = _.some(localLocales, ['code', rl.code])
  11. return {
  12. ...rl,
  13. isInstalled,
  14. installDate: isInstalled ? _.find(localLocales, ['code', rl.code]).updatedAt : null
  15. }
  16. })
  17. },
  18. translations (obj, args, context, info) {
  19. return WIKI.lang.getByNamespace(args.locale, args.namespace)
  20. }
  21. },
  22. Mutation: {
  23. async downloadLocale(obj, args, context) {
  24. try {
  25. const job = await WIKI.scheduler.registerJob({
  26. name: 'fetch-graph-locale',
  27. immediate: true
  28. }, args.locale)
  29. await job.finished
  30. return {
  31. responseResult: graphHelper.generateSuccess('Locale downloaded successfully')
  32. }
  33. } catch (err) {
  34. return graphHelper.generateError(err)
  35. }
  36. },
  37. async updateLocale(obj, args, context) {
  38. try {
  39. WIKI.config.lang.code = args.locale
  40. WIKI.config.lang.autoUpdate = args.autoUpdate
  41. WIKI.config.lang.namespacing = args.namespacing
  42. WIKI.config.lang.namespaces = _.union(args.namespaces, [args.locale])
  43. const newLocale = await WIKI.db.locales.query().select('isRTL').where('code', args.locale).first()
  44. WIKI.config.lang.rtl = newLocale.isRTL
  45. await WIKI.configSvc.saveToDb(['lang'])
  46. await WIKI.lang.setCurrentLocale(args.locale)
  47. await WIKI.lang.refreshNamespaces()
  48. await WIKI.cache.del('nav:locales')
  49. return {
  50. responseResult: graphHelper.generateSuccess('Locale config updated')
  51. }
  52. } catch (err) {
  53. return graphHelper.generateError(err)
  54. }
  55. }
  56. }
  57. }