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

i18next部分语言切换失效自动回退至fallbackLng问题求助

问题分析与修复方案

嘿,我一眼就发现了导致你部分语言切换失效的核心原因,还有几个小细节也需要调整,咱们一步步来:

核心问题:命名空间键名错误

i18next默认使用translation(单数)作为默认命名空间,但你在配置fr、de、it、pt这些语言的资源时,错误地写成了translations(复数)!

对比一下你的代码:

  • 正常工作的en/es配置:
    en: {
      translation: {
        'landing.main.title': 'EN ENGLISH',
      },
    },
    
  • 失效的de/fr等配置:
    de: {
      translations: { // 这里是复数,和默认命名空间不匹配!
        'landing.main.title': 'EN ALEMANNNN',
      },
    },
    

因为i18next找不到对应translation命名空间的翻译内容,所以自动触发了回退逻辑,切换到fallbackLng设置的语言。

修复方式

把所有失效语言的translations改成translation(单数),示例如下:

fr: {
  translation: {
    'landing.main.title': 'en FRANCES',
  },
},
de: {
  translation: {
    'landing.main.title': 'EN ALEMANNNN',
  },
},
it: {
  translation: {
    'landing.main.title': 'EN ITALIANO',
  },
},
pt: {
  translation: {
    'landing.main.title': 'EN PORTUGUES',
  },
},

次要问题:几个容易忽略的拼写/路径错误

虽然这些暂时没影响当前功能,但后续可能会引发其他问题,建议一起修正:

  1. 德语翻译文件路径错误:你导入的是gr.json(希腊语代码是gr),但德语的正确文件应该是de.json,对应变量名germanTranslationObject。
  2. 变量名拼写错误:
    • italianishTranslationObject → 应该改为italianTranslationObject
    • portugeseTranslationObject → 正确拼写是portugueseTranslationObject(多一个u)
  3. 控制台错误"rejecting language code not found in supportedLngs: dev":看起来像是某个地方把de误写成了dev,检查一下调用changeLanguage的代码或者其他配置有没有拼写错误。

修复完核心问题后,你再测试切换de、fr等语言,应该就能正常工作了。此时再调用i18n.getDataByLanguage('de'),也会正确返回德语的翻译对象,不会再出现混淆的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:53:13