| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | import i18next from 'i18next'import i18nextXHR from 'i18next-xhr-backend'import i18nextCache from 'i18next-localstorage-cache'import VueI18Next from '@panter/vue-i18next'import loSet from 'lodash/set'/* global siteConfig, graphQL, CONSTANTS */module.exports = {  VueI18Next,  init() {    i18next      .use(i18nextXHR)      .use(i18nextCache)      .init({        backend: {          loadPath: '{{lng}}/{{ns}}',          parse: (data) => data,          ajax: (url, opts, cb, data) => {            let langParams = url.split('/')            graphQL.query({              query: CONSTANTS.GRAPHQL.GQL_QUERY_TRANSLATIONS,              variables: {                locale: langParams[0],                namespace: langParams[1]              }            }).then(resp => {              let ns = {}              if (resp.data.translations.length > 0) {                resp.data.translations.forEach(entry => {                  loSet(ns, entry.key, entry.value)                })              }              return cb(ns, {status: '200'})            }).catch(err => {              console.error(err)              return cb(null, {status: '404'})            })          }        },        cache: {          enabled: true,          expiration: 60 * 60 * 1000        },        defaultNS: 'common',        lng: siteConfig.lang,        fallbackLng: siteConfig.lang,        ns: ['common', 'admin', 'auth']      })    return new VueI18Next(i18next)  }}
 |