Nuxt: i18n.localePath 访问中间件

Nuxt: i18n.localePath access in middleware

我已经为 Nuxt 定义了一个命名空间中间件,如下所示:

export default function({ store, redirect, app }){
    if (!store.state.isAuth) {
        return redirect(app.i18n.localePath('/auth'))
    }
}

如果用户 通过身份验证,他们将被重定向到位于 /auth 的身份验证页面。但是,这是一个多语言站点,因此我需要生成与当前语言环境相对应的路径。通常我会使用 $i18n.localePath 或者在这种情况下,使用 Nuxt 的 contextapp.i18n.localePath(),但是我得到这个错误:

 app.i18n.localePath is not a function 

我不确定为什么,考虑到有上下文,并且 console.log(app.i18n) 向我展示了应用程序。i18n.localePath 一个函数:

...
localePath: [Function: bound ],
...

有什么建议吗?谢谢!

是的,由于某些原因,localePath 在中间件中不起作用。 您可能应该手动检测当前语言环境。

let locale = app.i18n.locale === app.i18n.defaultLocale ? '' : '/' + app.i18n.locale;

return redirect( locale + '/auth' );

改用app.localePath('/auth')