| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | import i18next from 'i18next'import i18nextXHR from 'i18next-xhr-backend'import i18nextCache from 'i18next-localstorage-cache'import VueI18Next from '@panter/vue-i18next'import _ from 'lodash'/* global siteConfig, graphQL */import localeQuery from 'gql/common/common-localization-query-translations.gql'export default {  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: localeQuery,              variables: {                locale: langParams[0],                namespace: langParams[1]              }            }).then(resp => {              let ns = {}              if (_.get(resp, 'data.localization.translations', []).length > 0) {                resp.data.localization.translations.forEach(entry => {                  _.set(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', 'auth']      })    return new VueI18Next(i18next)  }}
 |