I18Next无法识别be-fr/be-nl带连字符语言码翻译的配置问题咨询
i18next 带连字符区域语言码匹配失败解决方法
根本原因
i18next 默认对带-的区域语言码有自动拆分降级逻辑:传入be-nl时,框架会先尝试匹配主语言码be的资源,匹配失败就直接走 fallback 逻辑,不会主动读取你在resources里定义的完整键名be-nl,最终触发missingKey报错。
必须新增的配置项
在现有初始化配置里补充两个字段即可:
// 关闭自动拆分语言码逻辑,直接使用传入的完整lng值匹配对应资源 load: 'currentOnly', // 显式列出所有支持的语言,禁止框架自动做未定义的语言码推断 supportedLngs: ['be-fr', 'be-nl', 'asia', 'cn', 'en', 'id', 'ng', 'nl', 'fr'],
兜底排查项
加完配置如果仍报错,直接检查be_fr、be_nl两个资源常量的结构:必须和en、nl这些能正常加载的资源结构完全对齐,顶层必须存在translation命名空间,正确结构参考:
const be_nl = { translation: { general: { disclaimer: '比利时荷兰语对应免责声明文本' } // 其余翻译字段 } }
如果项目用了自定义命名空间,对应调整资源结构即可,不要出现区域语言资源和通用语言资源结构不一致的情况。
内容的提问来源于stack exchange,提问作者OCP30pt1c1l1l43-X1z17
相关产品推荐
相关产品推荐

