问题标签 [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 回答
349 浏览

gettext - 为什么人们使用翻译占位符而不是简单的英语?

是的,这是完全相反的问题:为什么人们使用简单的英语作为翻译占位符?

我一直使用标准的 gettext 方式进行翻译,但现在我正在做前端,我意识到不仅大多数库都在使用键/占位符,而且有时建议(参见i18next)而不是使用简单的英语。

我对占位符的工作不多,但我觉得这很困难,因为:

  • 您必须一直发明独特的占位符名称,您需要约定
  • 也许您想重用相同的占位符名称,因此您必须找到一个与您正在翻译的内容相匹配的现有名称
  • 将所有翻译都限定在每个模块范围内还是共享翻译更好?我不确定

根据 i18-next 的文档,建议使用占位符,因为:

虽然这可行并且可能会减少要加载的文件,但它会使翻译的管理变得更加困难,因为您需要更新对代码和 json 文件中的备用值的更改。

  1. 我不会使用简单的英语来减少要加载的文件数量。这显然是错误的。
  2. JSON?PO/POT 有什么问题?已经有很多工具可供翻译人员使用。
  3. 如果需要更改措辞,则应审查所有翻译,所以我想它会破坏旧翻译,这有点“好”,对吧?
  4. 对我来说,开发人员可以专注于正确翻译英文文本,让翻译人员正确翻译其他语言,这似乎更容易。
  5. 我真的不明白使用简单的英语有多难。一个现实生活中的例子会很棒。

我的猜测是这两种方法都有利有弊,但我看不到占位符的优点,所以我想了解一下。

0 投票
1 回答
71 浏览

react-apollo - i18n.languages 究竟何时设置?

我有一个快速服务器,正在使用 apollo-client 和 i18next 进行翻译。我需要做的是设置 apollo-client 链接以在其中包含用户语言。当我 console.log i18n 它被初始化但它缺少 i18n.languages[0] 所以我无法获得当前语言。

i18next 的设置是最新的例子。

0 投票
1 回答
636 浏览

reactjs - react-i18next 的单元测试覆盖率

我有一个相当简单的 React 组件,它使用 i18next 实现了国际化功能。我使用的 i18next 版本是 11.9.0,我使用的 react-i18next 版本是 8.1.0。组件(和规格)看起来像这样:

TestComponent.component.js

TestComponent.component.spec.js

我正在尝试使用 Jest Snapshots 测试这个组件,但是当我检查这个组件的代码覆盖率时,它表明覆盖率检查器没有达到 t 函数。

我想这可以通过以某种方式模拟 I18n 来解决,但是我在网上找到的所有例子都没有解决我的问题。

任何人都可以提供一些关于为什么覆盖检查器没有达到 t 函数的见解吗?为了提高我对这样一个组件的覆盖率,需要做什么?

0 投票
1 回答
578 浏览

javascript - React Native + React I18next + React Navigation、navigationOptions 更新问题

我正在使用react-i18nextreact-navigation

目前,我withNamespaces会在需要时单独包装所有组件。问题是我无法保持title最新​​状态static navigationOptions。无论我如何分配它,它都不会更新:作为函数或属性对象。navigation.setParams也不会更新它。

我尝试使用withNamespaces导航器自己来使用screenProps,就像它在这里完成的那样,但在这种情况下,我的派遣NavigationActions无效。导航只是没有发生。

我假设i18nextHOC 以某种方式阻止其子级接收参数更新事件。我是否需要以i18next其他方式初始化来解决这个问题?title或者有没有办法强制navigationOptions更新?

0 投票
1 回答
3271 浏览

reactjs - 如何在 ReactJS 构建中包含 i18next 语言环境文件

我搜索了很多帖子,但没有解决我的构建问题。

我有两个主要问题

  1. 构建后不包含 /public/locale/xx/xxx.json 文件路径
  2. css 中使用的背景图片路径无法正常工作

结构如下所示:

背景图片网址如url(/images/image.jpg)

该 url 在 dev 上运行良好,但在生产/构建之后,它与/路径相关,无论homepagepackage.json

语言环境文件也是如此。

PShomepage不会/,假设会/myapp/

我的 i18n 文件是这样的:

我试图将后端设置设置为任何东西 ( __dirname | env.PUBLIC_URL,...etc),但没有任何效果。

这似乎是一个非常普遍的问题,因为我到处都发现了很多帖子,但是,对于如何在运行时正确设置相对路径没有明确的答案npm run build

如果你有这方面的知识,请给一个傻瓜式答案的分步指南。

0 投票
1 回答
996 浏览

i18next - i18next 不应该在加载回退语言之前等待语言检测结果吗

我使用react-i18next 示例作为基础。我用自定义语言检测器替换了“i18next-browser-languagedetector”:

配置:

我看到的是:

约5秒后:

我预计不会加载“en”,因为检测到的语言是“de”

0 投票
1 回答
417 浏览

reactjs - 如何使用 react-i18next 测试有状态的、redux 连接的组件

我处于需要对也连接到 redux 存储的有状态组件进行单元测试以调度事件的情况。我正在使用 Jest 和 Enzyme。

我已经尝试了文档中提供的各种示例: https ://react.i18next.com/misc/testing

这些示例都没有涵盖使用 redux-connect 的用例。

考虑以下伪代码中的反应组件:

单元测试:

使用以下依赖项

当使用来自 Enzyme的shallowmount函数时,我无法检索实际组件。相反,我得到了包装的上下文,无论是提供者、上下文对象还是其他东西——这意味着我无法测试组件。

澄清一下——这是我在添加 react-i18next 库之前的单元测试的样子……</p>

在 MyComponent.js 中导出

单元测试,MyComponent.test.js

在终端:

因此,当不使用react-i18next时,我显然能够获取组件。

我认为至少部分问题是withNamespaces()不返回组件,而是将其包装在某种上下文对象中......

0 投票
0 回答
232 浏览

xcode - 文件“Info.plist”无法打开,因为没有这样的文件

每次我尝试构建时都会收到此错误消息

我尝试了很多解决方案但失败了 - 我试图重新安装 react-native-locale-detector - 试图粘贴 info.plist 的路径 - 试图从 xcode 中删除项目并再次添加

0 投票
0 回答
80 浏览

redux - 我怎样才能让 (i18next) 与 redux 一起工作?

我对 i18next 和 react-18next 的文档感到非常困惑。

我正在使用 redux 来获取翻译,但这似乎不起作用。

初始存储被认为是“未定义”,如果您正在查看应用程序的开头,这是正确的(显然没有翻译)。只有在异步调用之后this.props.tranlsations 才会被填充,但是 i18nStore 仍然被认为是空的。

这个 I18nextProvider 是否只初始化一次?

是否有 updateStore()、addToStore() 方法?

0 投票
1 回答
3360 浏览

javascript - 如何使用钩子设置 react-i18n,得到 TypeError: Cannot read property '0' of undefined

尝试react-i18n使用挂钩进行设置时,出现此错误

这是i18n.js

这是一个使用它的组件。