如何使用 next-i18next

问题描述

我有两个存储库。一个带有 nextjs 应用程序,第二个带有正在动态加载到第一个存储库中的组件。

由于第二个 repo 中的一些组件包含翻译,我需要传递一个 t 函数一个 i18n 实例(翻译文件next-i18next 初始化在第一个 repo 中) .

我尝试使用上下文提供程序传递它,但是没有用:

TypeError: 无法读取未定义的属性“translator”

有没有推荐的方法来实现这一目标?

解决方法

由于在运行时你的组件共享同一个 React“树”,有很多方法可以实现你的要求:

  1. 传递 t 方法本身 - 在您的组件与其环境之间创建一对。
<InnerComponent t={t} />
  1. 将已翻译的文本传递给组件 - 您的组件可能保持“通用”用途。但有时大型组件可能需要很多文本,会造成大量道具。
<InnerComponent title={t('MY_TITLE')} />

每种方法都有优缺点,决定哪种方法适合您的要求。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...