【问题标题】:i18next get 404 response when there is no translation filei18next 在没有翻译文件时得到 404 响应
【发布时间】:2021-12-19 21:52:40
【问题描述】:

我正在使用i18next-http-backend 获取翻译。

翻译文件:

en.json
pt.json
pt-BR.json

这是我的配置:

.init({
  fallbackLng: 'en',
  supportedLngs: ['en', 'pt', 'pt-BR'],
  nonExplicitSupportedLngs: true,

  backend: {
    backends: [
      LocalStorageBackend, // primary
      HttpBackend, // fallback
    ],
    backendOptions: [
      {
        prefix: 'i18next_res_',
        defaultVersion: version,
      },
      {
        loadPath: '${some-path}/{{ns}}/{{lng}}.json',
        addPath: '${some-path}/{{ns}}/{{lng}}',

        queryStringParams: { v: version },
      },
    ],
  },
})

如果浏览器语言是英语(美国)en-US,我会收到 404 Not Found 错误,然后会加载 en。

当我将load: 'languageOnly' 添加到配置时,没有404,但在这种情况下无法加载pt-BR 语言。而是加载了 pt。

我查看了文档,但没有找到修复此行为的选项。

【问题讨论】:

  • 为什么 en-US 的 404 对您来说是个问题?
  • 我想有一个额外的错误请求不是很好的行为。

标签: http-status-code-404 translation i18next


【解决方案1】:

“i18next”库开发者的评论:

"所以如果没有 en-US,但是有 en 并且您使用 load: 'all' 或 no load 选项,则将加载 en 资源。但在此之前,i18next 会尝试获取 en-US如果没有 en-US 资源,您将看到 404...

如果您不喜欢“看到”那些 404 请求,则需要在 supportedLngs 选项中列出所有语言,并且不要设置 nonExplicitSupportedLngs: true

换句话说:如果你使用 nonExplicitSupportedLngs: true 你不能阻止所有的 404"

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 2019-07-28
    • 2021-08-14
    • 1970-01-01
    • 2019-03-03
    • 2021-09-24
    • 2014-08-01
    • 2019-11-28
    • 2020-11-24
    相关资源
    最近更新 更多