SSBakh
SSBakh

Reputation: 1532

Nuxt: i18n.localePath access in middleware

I've defined a namespaced middleware for Nuxt like so:

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

where if the user is not authenticated, they're redirected to the authentication page, located at /auth. However, this is a multilingual site, so I need to generate the path corresponding to the current locale. Normally I'd do this using $i18n.localePath or in this case, using Nuxt's context, app.i18n.localePath(), however I get this error:

 app.i18n.localePath is not a function 

and I'm not sure why, given that there's a context, and console.log(app.i18n) shows me that app.i18n.localePath is a function:

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

Any suggestions? Thanks!

Upvotes: 3

Views: 5669

Answers (2)

Nursultan Imanov
Nursultan Imanov

Reputation: 49

Use app.localePath('/auth') instead

Upvotes: 0

Winns
Winns

Reputation: 902

Yes, for some reason localePath does not work in middleware. You probably should detect current locale manualy.

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

return redirect( locale + '/auth' );

Upvotes: 3

Related Questions