reactjs - react-i18next addResourceBundle 不是函数
问题描述
我正在使用 react-i18next 将我的 react 应用程序国际化。当我尝试addResourceBundle
在每个模块的配置文件上时,它会引发此错误:
TypeError: i18next__WEBPACK_IMPORTED_MODULE_0__.default.addResourceBundle 不是函数
因此,我i18next.init
之前添加了命令addResourceBundle
。然后它可以工作,但会显示以下警告并重置先前选择的语言环境。
i18next: init: i18next 已经初始化。您应该只调用一次 init!
这是我的i18n.tsx
文件
import i18n from 'i18next'
import Backend from 'i18next-http-backend'
import LanguageDetector from 'i18next-browser-languagedetector'
import { initReactI18next } from 'react-i18next'
i18n
.use(Backend)
.use(LanguageDetector)
.use (initReactI18next)
.init({
fallbackLng: 'en',
debug: true,
detection: {
order: ['queryString', 'cookie'],
cache: ['cookie']
},
interpolation: {
escapeValue: false
},
react: {
wait: true,
useSuspense: false,
}
})
export default i18n;
这是我的模块的配置文件
import i18next from 'i18next';
import { lazy } from 'react';
import en from '../../i18n/dashboard/en';
import si from '../../i18n/dashboard/si';
import ta from '../../i18n/dashboard/ta';
i18next.init({ resources: {} });
i18next.addResourceBundle('en', 'dashboard', en);
i18next.addResourceBundle('si', 'dashboard', si);
i18next.addResourceBundle('ta', 'dashboard', ta);
const DashboardConfig = {
settings: {
layout: {
mode : 'default'
}
},
routes: [
{
path: '/dashboard',
component: lazy(() => import('./Dashboard')),
auth : ['admin', 'user', 'DASHBOARD_VIEW'],
}
]
};
export default DashboardConfig;
解决方案
它发生了,因为您在模块中导入 i18next 而不是在 i18n.tsx 中创建实例。
它应该是这样的:
import i18next from 'path/to/i18n.tsx';
推荐阅读
- java - 代码荧光笔插入非法字符
- karate - 使用空手道,我试图匹配两个乱序的 json 数组
- java - Android AudioTrack getPlaybackHeadPosition 总是返回 0
- php - 注意:未定义索引:第 9 行 C:\xampp\htdocs\template\cek_login.php 中的用户名
- java - 将 onMouseEnter 和 onMouseLeave 事件添加到音乐播放器
- csv - Pyspark:无法在 Zeppilin 实例中导入 csv 文件
- python - 无法在 Pandas groupby 聚合中使用某些基本统计功能
- python - 将未分配给变量的列表添加到指向不同列表的另一个变量是否会创建新的列表对象?
- user-input - 我的问题是关于为什么 R 的 rbind 函数不适用于古吉拉特语文本输入
- javascript - JQuery Mobile 1.4.5 似乎没有在 ipad 上调用 javascript