i18next 在没有翻译文件时得到 404 响应
Posted
技术标签:
【中文标题】i18next 在没有翻译文件时得到 404 响应【英文标题】:i18next get 404 response when there is no translation file 【发布时间】: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 对您来说是个问题? 我想有一个额外的错误请求不是很好的行为。 【参考方案1】:“i18next”库开发者的评论:
"所以如果没有 en-US,但是有 en 并且您使用 load: 'all' 或 no load 选项,则将加载 en 资源。但在此之前,i18next 会尝试获取 en-US如果没有 en-US 资源,您将看到 404...
如果您不喜欢“看到”那些 404 请求,则需要在 supportedLngs 选项中列出所有语言,并且不要设置 nonExplicitSupportedLngs: true
换句话说:如果你使用 nonExplicitSupportedLngs: true 你不能阻止所有的 404"
【讨论】:
以上是关于i18next 在没有翻译文件时得到 404 响应的主要内容,如果未能解决你的问题,请参考以下文章
使用 i18next 进行反应生产构建会导致翻译仅显示字符串
如何禁用 i18next translation.json 文件的缓存?
如何在 Next.js 中设置 i18n 翻译的 URL 路由?