问题标签 [react-i18next]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7360 浏览

reactjs - 使用 react-i18next useTranslationHooks 时出现“i18next backendConnector:加载命名空间失败”

我正在尝试使用 useTranslation() 挂钩在我的 create-react-app 应用程序上实现 react-i18next。

但是,在控制台中,调试模式显示

i18next::backendConnector: 为语言加载命名空间 billingAddress 失败 将 /locales/en/billingAddress.json 解析为 json 失败

i18next::translator: missingKey en billingAddress Form.email 客户电子邮件(默认)

i18next.ts

文件

版本

“反应”:“^16.8.4”,

"i18next": "^15.0.7",

我的翻译文件

我的帐单地址文件

我现在很困惑如何加载命名空间......有什么想法吗?

提前致谢!

0 投票
1 回答
2011 浏览

reactjs - 在 react-i18next 中如何工作 I18nextProvider,withNamespaces?

我在我的应用程序中使用 react-i18nextI18nextProviderwithNamespaces.

但我不明白I18nextProviderand的关系withNamespaces。他们不传递道具之类的t功能

提供者负责使用 react context api 将 props 传入的 i18next 实例向下传递给所有 withNamespaces hocs 或 NamespacesConsumer 渲染 prop。

是为什么工作?这是渲染道具withNamespaces吗?

我知道那是 HOC,但在阅读 react-i18next 源代码之后甚至混淆withNamespaces了这种关系。I18nextProviderwithNamespaces

有人可以解释一下吗?

0 投票
5 回答
9194 浏览

typescript - 使用 Jest 测试 i18next 时如何修复 `TypeError: Cannot read property 'type' of undefined`

我有一个 react 项目,我已经包含了 i18next = 15.0.4 和 react-i18next = 10.2.0 依赖项。我已经创建了一个使用 react-i18next 初始化 i18next 的模块,并且我正在尝试使用 Jest 对该代码进行单元测试。

我尝试导入初始化 i18next 的 i18n 模块并使用 jest 对其进行单元测试。

这是我的 i18n.ts 模块

我试图从我的测试代码中调用它(i18n.test.ts):

我希望这个测试能够通过,但是我得到了以下错误:

这基本上指出了 i18next.js 中的这段代码

我该如何解决这个问题?

0 投票
1 回答
256 浏览

reactjs - 使用 React i18next 我必须使用 withTranslation 吗?

我想知道一些事情。

假设我有一个组件并且我想访问该t值。我是否必须将其连接到 redux。由于使用react-i18next我也在使用我i18next不能只是这样做:

或者这样做有什么缺点?我的翻译似乎仍然有效,但肯定有缺点吗?我猜只有当语言环境发生变化时它才会看到更新?还要别的吗?

谢谢。

0 投票
2 回答
1719 浏览

i18next - withTranslation HOC 仅在第一个命名空间中查找翻译

我正在将我的项目从i18next^11.0.0toi18next^15.0.0react-i18next^7.0.0to升级到react-i18next^10.0.0. 我以前使用translateHOC,但现在似乎已被withTranslation取代。因此,在这些更改之后,我的简单 React 组件如下所示:

键的翻译supported-browsers在命名空间中定义,aboutname键的翻译在application命名空间中。但是,新版本的库不会name在上面的示例中翻译密钥:

如果我更改about通话application顺序withTranslation

反之亦然(supported-browsers未翻译):

在旧版本的react-i18next nsMode 选项中可以使用该选项解决了该问题,但它不再起作用:

我在文档中没有找到与此相关的任何内容。这是那里的一个例子:

看起来不需要任何额外的选项,否则我想知道如果不翻译组件的文本应该传递哪些命名空间。它是一个错误吗?或者是否存在任何解决方法?

从 9 到 10 的迁移指南并未突出显示对此行为的任何更改。

0 投票
5 回答
8620 浏览

reactjs - 如何将 react-i18next 与连接的组件一起使用

我想将 react-i18next 与我的 react-redux 连接组件一起使用,但不知道该怎么做。

我已经简化了我的代码来展示一个连接组件的例子:

已安装的软件包版本:

我试过的:

1)当我使用withTranslation,WithTranslation时出现如下错误:

错误:

2)当我使用withTranslation,WithTranslation时出现以下错误,如下所示:

错误:

3) 我不能使用 useTranslation 因为钩子不允许在类中使用。

我还尝试了以下方法:

但我收到以下错误:

先感谢您...

0 投票
1 回答
2103 浏览

reactjs - 如何在 i18next 翻译字符串中的替换标签之间保留空格字符

我正在使用 v10 ofreact-i18next和最新的Trans组件来生成一个翻译字符串,其中部分句子加粗。

在 HTML 中,我可以插入 a&nbsp;以确保块和句子的其余部分之间有一个空格,<strong>但它会在翻译字符串中被删除。

JSX 文件:

JSON 翻译键/值文件:

输出 HTML: <strong>30 Day Free Trial enabled</strong> for all users

看起来像:“为所有用户启用 30 天免费试用”

如何保留&nbsp;翻译字符串中的 ,以便strong块后的空间存在?

0 投票
0 回答
190 浏览

reactjs - react-i18next:无法替换 I18Next HOC

我在更新我的 React 应用程序时遇到了问题react-i18next

我有一个“抽象”与 Redux 的连接的 HOC。这个 HOC 看起来像这样:

0 投票
2 回答
1264 浏览

react-hooks - react-i18next v10 没有钩子

我一直在尝试使用以下链接中的代码来实现 react-i18next (10.9.0):

https://codesandbox.io/s/l23no88qmz?from-embed

但我得到了错误:

从 [ https://github.com/i18next/react-i18next/issues/810 ],我知道在 v8 中使用了“翻译”,而 v10 使用了钩子。

我想知道我是否可以在没有钩子的情况下使用 react-i18next (10.9.0)?如果是,我应该使用什么来代替“翻译”?

0 投票
0 回答
348 浏览

reactjs - i18next 具有强标签的插值

假设我有这样的钥匙:

我希望有这样的功能:

但我收到以下错误:

使用 JSX react/react-in-jsx-scope 时,'React' 必须在范围内

有什么办法可以做到这一点?我真的很想在我的 i18n 占位符中使用插值来进行一些简单的自定义样式。