31 lines
779 B
JavaScript
31 lines
779 B
JavaScript
export default function ({
|
|
isHMR,
|
|
app,
|
|
store,
|
|
route,
|
|
query,
|
|
$cookies,
|
|
error,
|
|
redirect
|
|
}) {
|
|
const defaultLocale = $cookies.get('lang') || app.i18n.fallbackLocale
|
|
if (isHMR) {
|
|
return
|
|
}
|
|
const locale = query.lang || defaultLocale
|
|
if (!store.state.locales.includes(locale)) {
|
|
return error({ message: 'This page could not be found.', statusCode: 404 })
|
|
}
|
|
|
|
store.commit('SET_LANG', locale)
|
|
app.i18n.locale = store.state.locale
|
|
|
|
if (locale === defaultLocale && route.fullPath.indexOf('/' + defaultLocale) === 0) {
|
|
const toReplace =
|
|
'^/' +
|
|
defaultLocale +
|
|
(route.fullPath.indexOf('/' + defaultLocale + '/') === 0 ? '/' : '')
|
|
const re = new RegExp(toReplace)
|
|
return redirect(route.fullPath.replace(re, '/'))
|
|
}
|
|
} |