React-Intl:消息未在 Safari 中格式化

Posted

技术标签:

【中文标题】React-Intl:消息未在 Safari 中格式化【英文标题】:React-Intl: Message not formatting in Safari 【发布时间】:2020-01-19 10:16:54 【问题描述】:

我有以下翻译:

count, number count, plural, one Kundenbewertung other Kundenbewertungen

在 Chrome 中它显示 23 Kundenbewertungen 很好,但在 Safari 中它显示翻译字符串并引发错误

错误格式化消息:“pdp:product-title:ratings”,区域设置:“de”

无法格式化消息:“pdp:product-title:ratings”,使用消息源作为后备。

在我的 React 组件中,代码如下:

<FormattedMessage
  id="pdp:product-title:ratings"
  values= count: product.metadata.rating.count 
/>

我完全迷失了,因为它在 Chrome 中按预期工作。我使用的语法正确吗?

【问题讨论】:

【参考方案1】:

原因是 Intl.PluralRules 它在 Safari 上不可用。只需使用这个polyfill,一切都会按预期工作。

【讨论】:

【参考方案2】:

这是一个更好的 polyfill,由 MDN 推荐并被 polyfill.io 使用:https://formatjs.io/docs/polyfills/intl-pluralrules/

【讨论】:

以上是关于React-Intl:消息未在 Safari 中格式化的主要内容,如果未能解决你的问题,请参考以下文章

react-intl - 访问嵌套消息

如何处理 React-Intl 消息的多次使用?

React-intl 在 react 之外定义消息

React-Intl 如何从变量切换语言环境和消息

在 Redux 中间件中使用 React-intl 翻译的消息

如何使用 react-intl 使用标签(链接)格式化消息?