You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nuxt.js的nuxt.config.js中获取当前语言并添加到Axios请求头?

在NuxtJS中为Axios请求添加用户所选语言的Accept-Language请求头

因为nuxt.config.js里的Axios配置是静态的,无法直接动态获取当前用户选择的语言,所以需要通过Axios请求拦截器结合nuxt-i18n的全局语言状态来实现需求。

步骤1:创建Axios请求拦截器插件

在项目根目录的plugins文件夹下新建axios.js文件,添加动态设置请求头的逻辑:

export default function ({ $axios, app }) {
  // 每次发送请求前执行拦截逻辑
  $axios.onRequest(config => {
    // 获取当前用户选中的语言代码(如'en'、'de'、'ru')
    const currentLocale = app.i18n.locale
    // 匹配locales中对应的标准语言标签(如'en-US')
    const matchedLocale = app.i18n.locales.find(item => item.code === currentLocale)
    const languageTag = matchedLocale ? matchedLocale.ico : currentLocale
    // 设置Accept-Language请求头
    config.headers.common['Accept-Language'] = languageTag
  })
}

步骤2:在nuxt.config.js中注册插件

找到plugins配置项,添加刚才创建的插件:

plugins: [
  '~/plugins/axios.js'
],

步骤3:移除Axios的静态语言头配置

删掉nuxt.config.js中Axios部分的固定Accept-Language设置,避免和动态设置冲突:

axios: {
  baseURL: 'http://127.0.0.1:8000',
  headers: {
    common: {
      // 移除原有的'Accept-Language': 'en'
    }
  }
},

说明

nuxt-i18n会将当前用户的语言状态实时维护在app.i18n.locale中,无论是用户手动切换语言,还是通过浏览器自动检测的语言,这个值都会同步更新。请求拦截器会在每次发起Axios请求前读取最新的语言状态,确保后端能接收到正确的语言标识。

内容的提问来源于stack exchange,提问作者EfimovSergeiV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:10:34