Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从nuxt.js中间件获取语言_Javascript_Vue.js_Nuxt.js_Nuxt I18n - Fatal编程技术网

Javascript 从nuxt.js中间件获取语言

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模块,它非常简单,有两种方法。我会提出第一个建议,但我认为从一个角度来看模块是如何工作的会很酷 这两种解决方案都有相同的起点

在nuxt.js中间件中是否有方法了解(页面的)请求所使用的语言

以nuxt.js()提出的示例为例,假设一个页面使用两种语言(法语和英语)拒绝了以下URL:

  • /fr/ma页
  • /我的页面
当访问第一个或第二个url时,我们可以在中间件中直接使用的语言上有一个指示器吗?还是应该解析页面url以找出(路由)


因为我想根据请求的语言重定向用户…

如果您使用的是
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
模块,因为它可以处理您需要自己重写的一些抽象,但这是一个更好地理解模块的好例子