gancio-upstream/plugins/i18n.js
2022-02-26 21:27:40 +01:00

33 lines
861 B
JavaScript

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import merge from 'lodash/merge'
Vue.use(VueI18n)
export default async ({ app, store, res }) => {
const messages = {}
if (process.server) {
store.commit('setLocale', res.locals.acceptedLocale)
if (res.locals.user_locale) {
store.commit('setUserLocale', res.locals.user_locale)
}
}
messages[store.state.locale] = await import(/* webpackChunkName: "lang-[request]" */`../locales/${store.state.locale}.json`)
// always include en fallback locale
if (store.state.locale !== 'en') {
messages.en = await import('../locales/en.json')
}
if (store.state.user_locale) {
merge(messages[store.state.locale], store.state.user_locale)
}
// Set i18n instance on app
app.i18n = new VueI18n({
locale: store.state.locale,
fallbackLocale: 'en',
messages
})
}