根据 the documentation 我们可以使用 t
宏代替 i18n._()
调用。对应的宏变换示例:
import { t } from "@lingui/macro"
const message = t`Hello World`
// ↓ ↓ ↓ ↓ ↓ ↓
import { i18n } from "@lingui/core"
const message = i18n._(/*i18n*/{
id: 'Hello World',
})
所以我应该可以写:
<TextField label={t`Login`}/>
其中 TextField 是 Material UI 组件。
但这行不通。相反,我收到了一个运行时错误:
<块引用>错误:对象作为 React 子对象无效(找到:带有键的对象 {id}).
好像 t
被转换为对象
{
id: 'Login',
}
而不是 i18n._(...)
函数调用。
我无法在此处或 project's pages 中找到任何相关信息。
答案 0 :(得分:0)
回答我自己。
很难说出真正的原因,但在我根据 Sergio Moreno 提供的 sandbox 更新代码后,它现在可以工作了。
基本上 arrays3 = [np.loadtxt(name3,ndmin=2) for name3 in files3]
应该以不同的方式初始化。具体:
是:
I18nProvider
变成:
<I18nProvider language={language} catalogs={i18nCatalogs}>