4

我正在使用 React-i18next 库,我需要在函数t()内部获取翻译函数。

export function translateCell(cell) {
  const { t } = useTranslation();
  return (t(cell));
}

使用useTranslation()时失败并出现错误

Hooks 只能在函数组件的主体内部调用。

我尝试在初始化中使用I18nextProviderand ,但是两种设置都会产生相同的错误。.use(initReactI18next)

我是否以错误的方式使用它,或者我误解了什么?

编辑: 我发现,只有将呈现为组件的函数才能使用 useTranslation。像

function export MyComponent (cell) {
  const { t } = useTranslation();
  return (<div>{t(cell)}</div>);
}
...
render(){
<MyComponent/>
4

2 回答 2

2

我找到了在初始化后导出 i18n 对象的解决方案,并在我需要的所有其他地方使用它。

文件 i18nSetup.js

i18n
    .use(initReactI18next)
    .init({
        resources: translationResources,
        interpolation: {
            escapeValue: false 
        }
    });

export default i18n;

在其他文件中

import i18n from "../functions/i18nSetup";

export function translateCell(cell) {
  return (i18n.t(cell));
}
于 2019-03-19T12:43:48.463 回答
0

试试这样:

import { Trans } from 'react-i18next';

并像这样使用它:

<Trans>word-key</Trans>

https://react.i18next.com/guides/quick-start

于 2021-06-07T21:12:37.227 回答