localization.mjs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { generateError, generateSuccess } from '../../helpers/graph.mjs'
  2. import _ from 'lodash-es'
  3. export default {
  4. Query: {
  5. async locales(obj, args, context, info) {
  6. return WIKI.db.locales.getLocales({ cache: false })
  7. },
  8. localeStrings (obj, args, context, info) {
  9. return WIKI.db.locales.getStrings(args.locale)
  10. }
  11. },
  12. Mutation: {
  13. async downloadLocale(obj, args, context) {
  14. try {
  15. const job = await WIKI.scheduler.registerJob({
  16. name: 'fetch-graph-locale',
  17. immediate: true
  18. }, args.locale)
  19. await job.finished
  20. return {
  21. responseResult: generateSuccess('Locale downloaded successfully')
  22. }
  23. } catch (err) {
  24. return generateError(err)
  25. }
  26. },
  27. async updateLocale(obj, args, context) {
  28. try {
  29. WIKI.config.lang.code = args.locale
  30. WIKI.config.lang.autoUpdate = args.autoUpdate
  31. WIKI.config.lang.namespacing = args.namespacing
  32. WIKI.config.lang.namespaces = _.union(args.namespaces, [args.locale])
  33. const newLocale = await WIKI.db.locales.query().select('isRTL').where('code', args.locale).first()
  34. WIKI.config.lang.rtl = newLocale.isRTL
  35. await WIKI.configSvc.saveToDb(['lang'])
  36. await WIKI.lang.setCurrentLocale(args.locale)
  37. await WIKI.lang.refreshNamespaces()
  38. await WIKI.cache.del('nav:locales')
  39. return {
  40. responseResult: generateSuccess('Locale config updated')
  41. }
  42. } catch (err) {
  43. return generateError(err)
  44. }
  45. }
  46. }
  47. }