问题标签 [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.
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",
我的翻译文件
我的帐单地址文件
我现在很困惑如何加载命名空间......有什么想法吗?
提前致谢!
reactjs - 在 react-i18next 中如何工作 I18nextProvider,withNamespaces?
我在我的应用程序中使用 react-i18nextI18nextProvider
和withNamespaces
.
但我不明白I18nextProvider
and的关系withNamespaces
。他们不传递道具之类的t
功能
提供者负责使用 react context api 将 props 传入的 i18next 实例向下传递给所有 withNamespaces hocs 或 NamespacesConsumer 渲染 prop。
是为什么工作?这是渲染道具withNamespaces
吗?
我知道那是 HOC,但在阅读 react-i18next 源代码之后甚至混淆withNamespaces
了这种关系。I18nextProvider
withNamespaces
有人可以解释一下吗?
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 中的这段代码
我该如何解决这个问题?
reactjs - 使用 React i18next 我必须使用 withTranslation 吗?
我想知道一些事情。
假设我有一个组件并且我想访问该t
值。我是否必须将其连接到 redux。由于使用react-i18next
我也在使用我i18next
不能只是这样做:
或者这样做有什么缺点?我的翻译似乎仍然有效,但肯定有缺点吗?我猜只有当语言环境发生变化时它才会看到更新?还要别的吗?
谢谢。
i18next - withTranslation HOC 仅在第一个命名空间中查找翻译
我正在将我的项目从i18next^11.0.0
toi18next^15.0.0
和react-i18next^7.0.0
to升级到react-i18next^10.0.0
. 我以前使用translate
HOC,但现在似乎已被withTranslation取代。因此,在这些更改之后,我的简单 React 组件如下所示:
键的翻译supported-browsers
在命名空间中定义,about
而name
键的翻译在application
命名空间中。但是,新版本的库不会name
在上面的示例中翻译密钥:
如果我更改about
通话application
顺序withTranslation
反之亦然(supported-browsers
未翻译):
在旧版本的react-i18next
nsMode 选项中可以使用该选项解决了该问题,但它不再起作用:
我在文档中没有找到与此相关的任何内容。这是那里的一个例子:
看起来不需要任何额外的选项,否则我想知道如果不翻译组件的文本应该传递哪些命名空间。它是一个错误吗?或者是否存在任何解决方法?
从 9 到 10 的迁移指南并未突出显示对此行为的任何更改。
reactjs - 如何将 react-i18next 与连接的组件一起使用
我想将 react-i18next 与我的 react-redux 连接组件一起使用,但不知道该怎么做。
我已经简化了我的代码来展示一个连接组件的例子:
已安装的软件包版本:
我试过的:
1)当我使用withTranslation,WithTranslation时出现如下错误:
错误:
2)当我使用withTranslation,WithTranslation时出现以下错误,如下所示:
错误:
3) 我不能使用 useTranslation 因为钩子不允许在类中使用。
我还尝试了以下方法:
但我收到以下错误:
先感谢您...
reactjs - 如何在 i18next 翻译字符串中的替换标签之间保留空格字符
我正在使用 v10 ofreact-i18next
和最新的Trans
组件来生成一个翻译字符串,其中部分句子加粗。
在 HTML 中,我可以插入 a
以确保块和句子的其余部分之间有一个空格,<strong>
但它会在翻译字符串中被删除。
JSX 文件:
JSON 翻译键/值文件:
输出 HTML:
<strong>30 Day Free Trial enabled</strong> for all users
看起来像:“为所有用户启用 30 天免费试用”
如何保留
翻译字符串中的 ,以便strong
块后的空间存在?
reactjs - react-i18next:无法替换 I18Next HOC
我在更新我的 React 应用程序时遇到了问题react-i18next
。
我有一个“抽象”与 Redux 的连接的 HOC。这个 HOC 看起来像这样:
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)?如果是,我应该使用什么来代替“翻译”?
reactjs - i18next 具有强标签的插值
假设我有这样的钥匙:
我希望有这样的功能:
但我收到以下错误:
使用 JSX react/react-in-jsx-scope 时,'React' 必须在范围内
有什么办法可以做到这一点?我真的很想在我的 i18n 占位符中使用插值来进行一些简单的自定义样式。