在请求中插入 i18n 语言

问题描述 投票:0回答:1

我正在使用 i18next 库,以及前面的 React,我打算通过每个请求将当前语言的信息传递到我的 api。

我有一个 axios 客户端,包装在我在整个应用程序中使用的常量中,如下所示: `

const client = axios.create({
  baseURL: CONSTANTS.API.BASE,
  headers: {
    "Content-Type": "application/json",
  },
  timeout: TIME_OUT,
});

`

我想知道是否有一些简单的方法可以做到这一点,然后获取后面的语言信息。 顺便说一句,我在我的 api 中使用 Django REST Framework。

我尝试简单地在客户端的标头中声明一个变量,只是为了测试,但我无法在 api 中获取请求中的值

javascript reactjs python-3.x django i18next
1个回答
0
投票

这实际上取决于服务器如何处理语言标头,但您必须以与发送 Content-Type 相同的方式将其发送到服务器。

这里是使用Spring boot(默认策略通过请求头Accept-Language检测语言)和axios的示例。在示例中,我正在创建新的 axios 实例。如果您不创建新实例,则可以以几乎相同的方式在现有实例上设置默认值。请参阅 axios 文档。

const axiosInstance = axios.create({
    baseURL: readEnv("URL_ENV_VAR"),
    headers: {
        "Accept-Language": i18n.language,
    },
});

还要注意 i18n.language 的价值。我遇到过几种浏览器,它们给了我不同的值,所以总是将期望值发送到服务器。

© www.soinside.com 2019 - 2024. All rights reserved.