Javascript 从nuxt.js中间件获取语言
在nuxt.js中间件中是否有方法了解(页面的)请求所使用的语言 以nuxt.js()提出的示例为例,假设一个页面使用两种语言(法语和英语)拒绝了以下URL:Javascript 从nuxt.js中间件获取语言,javascript,vue.js,nuxt.js,nuxt-i18n,Javascript,Vue.js,Nuxt.js,Nuxt I18n,在nuxt.js中间件中是否有方法了解(页面的)请求所使用的语言 以nuxt.js()提出的示例为例,假设一个页面使用两种语言(法语和英语)拒绝了以下URL: /fr/ma页 /我的页面 当访问第一个或第二个url时,我们可以在中间件中直接使用的语言上有一个指示器吗?还是应该解析页面url以找出(路由) 因为我想根据请求的语言重定向用户…如果您使用的是nuxt-i18n模块,它非常简单,有两种方法。我会提出第一个建议,但我认为从一个角度来看模块是如何工作的会很酷 这两种解决方案都有相同的起点
- /fr/ma页
- /我的页面
因为我想根据请求的语言重定向用户…如果您使用的是
nuxt-i18n
模块,它非常简单,有两种方法。我会提出第一个建议,但我认为从一个角度来看模块是如何工作的会很酷
这两种解决方案都有相同的起点,从中间件上下文获取i18n
i18n
应该从上下文中的应用程序
参数访问,因此我们从这里开始:
export default async function({ app: { i18n } }) {}
1.最好的方法是:让i18n
模块进行硬提升
与使用$t
方法访问Vue组件内部的翻译相同,我们可以直接从i18n
对象使用它。
因此,如果您要在Vue组件中编写
$t('components.login.register')
然后在中间件中,您将执行以下操作
i18n.t('components.login.register')
2.其他选项:更好地了解i18n
模块
如果您检查模块公开的i18n
对象,可以发现包含以下参数:
locale
-表示当前语言的
消息
-保存每种活动语言的翻译的对象
因此,您可以很容易地获得前面的示例翻译,如下所示:
const { messages, locale } = i18n
const currentTranslations = messages[locale]
const wantedTranslation = currentTranslations.components.login.register
我建议您使用i18n.t
模块,因为它可以实现您需要自己重写的一些抽象,但这是更好地理解该模块的一个好例子。如果您使用nuxt-i18n
模块,它非常简单,您有两种方法。我会提出第一个建议,但我认为从一个角度来看模块是如何工作的会很酷
这两种解决方案都有相同的起点,从中间件上下文获取i18n
i18n
应该从上下文中的应用程序
参数访问,因此我们从这里开始:
export default async function({ app: { i18n } }) {}
1.最好的方法是:让i18n
模块进行硬提升
与使用$t
方法访问Vue组件内部的翻译相同,我们可以直接从i18n
对象使用它。
因此,如果您要在Vue组件中编写
$t('components.login.register')
然后在中间件中,您将执行以下操作
i18n.t('components.login.register')
2.其他选项:更好地了解i18n
模块
如果您检查模块公开的i18n
对象,可以发现包含以下参数:
locale
-表示当前语言的
消息
-保存每种活动语言的翻译的对象
因此,您可以很容易地获得前面的示例翻译,如下所示:
const { messages, locale } = i18n
const currentTranslations = messages[locale]
const wantedTranslation = currentTranslations.components.login.register
我建议您使用i18n.t
模块,因为它可以处理您需要自己重写的一些抽象,但这是一个更好地理解模块的好例子