javascript - i18n.changeLanguage 不是函数

标签 javascript reactjs typescript react-i18next

这是我的代码。

import React, { Suspense } from 'react';
import { useTranslation } from 'react-i18next';

function Page() {
  const { t, i18n } = useTranslation();

  const changeLanguage = lng => {
    i18n.changeLanguage(lng);
  };

  return (
    <div className="App">
      <div className="App-header">
        <button onClick={() => changeLanguage('de')}>de</button>
        <button onClick={() => changeLanguage('en')}>en</button>
      </div>
      <div>{t('test')}</div>
    </div>
  );
}

export default function App() {
  return (
    <Suspense fallback={<div>loading...</div>}>
      <Page />
    </Suspense>
  );
}

当我点击 de en按钮。我得到这个错误。 TypeError: i18n.changeLanguage 不是函数。如何修复?

最佳答案

好像没有配置i18next .

您需要创建一个文件 i18n.js包含以下内容:

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

import Backend from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector';


i18n
  .use(Backend)
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: true,

    interpolation: {
      escapeValue: false,
    }
  });
export default i18n;

然后将其导入您的index.js :
import React, { Component } from "react";
import ReactDOM from "react-dom";
import App from './App';

import './i18n';

ReactDOM.render(
  <App />,
  document.getElementById("root")
);

source

关于javascript - i18n.changeLanguage 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176222/

相关文章:

java - 电子邮件匹配正则表达式在java中花费很长时间,但在java脚本中计算速度很快

javascript - 添加元数据以表达路线

javascript - 与 Javascript 中的 NaN 比较

javascript - 类型错误 : Cannot read property 'focus' of null

Javascript : Filter list with element contains

Angular 2+ 本地化 (i18n) rtl 支持

javascript - Jquery 附加到(按 id 动态)

javascript - 传递对象时防止在 PureComponent 上重新渲染

javascript - 如何 "mount"Angular 2 模块在路由层次结构中某个点的路由

css - ItemSliding 不适用于按钮