问题标签 [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.
gettext - 为什么人们使用翻译占位符而不是简单的英语?
是的,这是完全相反的问题:为什么人们使用简单的英语作为翻译占位符?
我一直使用标准的 gettext 方式进行翻译,但现在我正在做前端,我意识到不仅大多数库都在使用键/占位符,而且有时建议(参见i18next)而不是使用简单的英语。
我对占位符的工作不多,但我觉得这很困难,因为:
- 您必须一直发明独特的占位符名称,您需要约定
- 也许您想重用相同的占位符名称,因此您必须找到一个与您正在翻译的内容相匹配的现有名称
- 将所有翻译都限定在每个模块范围内还是共享翻译更好?我不确定
根据 i18-next 的文档,建议使用占位符,因为:
虽然这可行并且可能会减少要加载的文件,但它会使翻译的管理变得更加困难,因为您需要更新对代码和 json 文件中的备用值的更改。
- 我不会使用简单的英语来减少要加载的文件数量。这显然是错误的。
- JSON?PO/POT 有什么问题?已经有很多工具可供翻译人员使用。
- 如果需要更改措辞,则应审查所有翻译,所以我想它会破坏旧翻译,这有点“好”,对吧?
- 对我来说,开发人员可以专注于正确翻译英文文本,让翻译人员正确翻译其他语言,这似乎更容易。
- 我真的不明白使用简单的英语有多难。一个现实生活中的例子会很棒。
我的猜测是这两种方法都有利有弊,但我看不到占位符的优点,所以我想了解一下。
react-apollo - i18n.languages 究竟何时设置?
我有一个快速服务器,正在使用 apollo-client 和 i18next 进行翻译。我需要做的是设置 apollo-client 链接以在其中包含用户语言。当我 console.log i18n 它被初始化但它缺少 i18n.languages[0] 所以我无法获得当前语言。
i18next 的设置是最新的例子。
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 函数的见解吗?为了提高我对这样一个组件的覆盖率,需要做什么?
javascript - React Native + React I18next + React Navigation、navigationOptions 更新问题
我正在使用react-i18next
和react-navigation
。
目前,我withNamespaces
会在需要时单独包装所有组件。问题是我无法保持title
最新状态static navigationOptions
。无论我如何分配它,它都不会更新:作为函数或属性对象。navigation.setParams
也不会更新它。
我尝试使用withNamespaces
导航器自己来使用screenProps
,就像它在这里完成的那样,但在这种情况下,我的派遣NavigationActions
无效。导航只是没有发生。
我假设i18next
HOC 以某种方式阻止其子级接收参数更新事件。我是否需要以i18next
其他方式初始化来解决这个问题?title
或者有没有办法强制navigationOptions
更新?
reactjs - 如何在 ReactJS 构建中包含 i18next 语言环境文件
我搜索了很多帖子,但没有解决我的构建问题。
我有两个主要问题
- 构建后不包含 /public/locale/xx/xxx.json 文件路径
- css 中使用的背景图片路径无法正常工作
结构如下所示:
背景图片网址如url(/images/image.jpg)
,
该 url 在 dev 上运行良好,但在生产/构建之后,它与/
路径相关,无论homepage
在package.json
语言环境文件也是如此。
PS:homepage
不会/
,假设会/myapp/
我的 i18n 文件是这样的:
我试图将后端设置设置为任何东西 ( __dirname | env.PUBLIC_URL,...etc
),但没有任何效果。
这似乎是一个非常普遍的问题,因为我到处都发现了很多帖子,但是,对于如何在运行时正确设置相对路径没有明确的答案npm run build
如果你有这方面的知识,请给一个傻瓜式答案的分步指南。
i18next - i18next 不应该在加载回退语言之前等待语言检测结果吗
我使用react-i18next 示例作为基础。我用自定义语言检测器替换了“i18next-browser-languagedetector”:
配置:
我看到的是:
约5秒后:
我预计不会加载“en”,因为检测到的语言是“de”
reactjs - 如何使用 react-i18next 测试有状态的、redux 连接的组件
我处于需要对也连接到 redux 存储的有状态组件进行单元测试以调度事件的情况。我正在使用 Jest 和 Enzyme。
我已经尝试了文档中提供的各种示例: https ://react.i18next.com/misc/testing
这些示例都没有涵盖使用 redux-connect 的用例。
考虑以下伪代码中的反应组件:
单元测试:
使用以下依赖项
当使用来自 Enzyme的shallow或mount函数时,我无法检索实际组件。相反,我得到了包装的上下文,无论是提供者、上下文对象还是其他东西——这意味着我无法测试组件。
澄清一下——这是我在添加 react-i18next 库之前的单元测试的样子……</p>
在 MyComponent.js 中导出
单元测试,MyComponent.test.js
在终端:
因此,当不使用react-i18next时,我显然能够获取组件。
我认为至少部分问题是withNamespaces()不返回组件,而是将其包装在某种上下文对象中......
xcode - 文件“Info.plist”无法打开,因为没有这样的文件
每次我尝试构建时都会收到此错误消息
我尝试了很多解决方案但失败了 - 我试图重新安装 react-native-locale-detector - 试图粘贴 info.plist 的路径 - 试图从 xcode 中删除项目并再次添加
redux - 我怎样才能让 (i18next) 与 redux 一起工作?
我对 i18next 和 react-18next 的文档感到非常困惑。
我正在使用 redux 来获取翻译,但这似乎不起作用。
初始存储被认为是“未定义”,如果您正在查看应用程序的开头,这是正确的(显然没有翻译)。只有在异步调用之后this.props.tranlsations 才会被填充,但是 i18nStore 仍然被认为是空的。
这个 I18nextProvider 是否只初始化一次?
是否有 updateStore()、addToStore() 方法?
javascript - 如何使用钩子设置 react-i18n,得到 TypeError: Cannot read property '0' of undefined
尝试react-i18n
使用挂钩进行设置时,出现此错误
这是i18n.js
这是一个使用它的组件。