问题标签 [formatjs]

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 投票
0 回答
900 浏览

reactjs - 在 React 中为 i18n 使用 java 资源包

我正在将相对较大的 java 应用程序迁移到 React,并且需要在 React 应用程序中实现国际化。当然,React 中有许多可用于 i18n 的库,例如 FormaJS 和 i18next,但我发现它们中的大多数都没有满足我的要求:

  1. 所有翻译已经以 java 资源包的形式完成,其中键和消息如下所示:

    我们不需要复数,但希望避免用{0}命名参数替换数字参数{key1},如果可能的话,因为它可能会很棘手,尤其是涉及格式(formattingKey)的地方。我也必须使用现有的密钥。

  2. 该库应支持后备翻译的语言环境。即,如果我将德语语言环境设置为备用语言环境并翻译英语的键,则 _en 文件/源中的所有缺失键都应使用 _ge 文件/源进行翻译

  3. (理想情况下)库应允许动态更改后备和当前语言环境

  4. (理想情况下)库应该允许使用 ajax 加载包

我决定反对 FormatJS 主要是因为 id 不支持后备语言环境。它有一个默认翻译的概念,在使用时应该在组件中提供。

我接近决定反对 i18next,因为 - React 集成项目似乎不是很受欢迎 - 需要更改消息以使用命名参数

谁能推荐一些其他的图书馆?

0 投票
1 回答
418 浏览

string-formatting - 本地化货币范围

formatjs 和 javascript 的原生组合Intl.NumberFormat()支持将数字格式化为各种文化和单位中的货币。但是如何将一系列货币格式化为$1,000.00 - 5000.00.

在不重复符号的情况下,它通常在哪里以及如何显示?

使用react-intl

这将显示$1,000.00 - $5000.00哪些不符合我的设计规范。从第二个值中去除货币符号似乎是一种骇人听闻的策略,因为我不应该/不能轻易知道要去除的符号。

像常规小数一样格式化是严格不正确的 - 货币规则根据货币规定“小单位”的不同位数。

我不知道,如果货币符号显示在文化的末尾而不是开头呢?(会发生这种情况吗?)

0 投票
1 回答
1598 浏览

javascript - react-intl 将反应组件渲染为 formatMessage 中的占位符

我有一个组件,它使用injectIntl-HOC,并返回一条消息

我的语言文件如下所示:

这导致:You're going to be redirected automatically. If nothing happens, please click [object Object]

如果我改用<FormattedMessage id="page.checkout.hint" values={{ link: <b>{intl.formatMessage({ id: 'page.checkout.hint.hyperlink' })}</b> }}>正确渲染。

有人有线索吗?

0 投票
0 回答
105 浏览

intl - react-intl 复合消息

我正在努力找出构建消息的最佳方法,其中一个动态值也需要翻译。

例如,如果我有消息“输入西班牙语...”,我想在我的应用程序支持的所有语言的每个不同组合中使用此消息。

假设只支持 en/es 那么我需要一个可以输出以下组合的函数:

使用 3 种支持的语言,将有 9 种可能的组合等...

我能想到的唯一方法是按如下方式编写消息:

我有一种感觉,这不是最佳方式。或许在某些语言中,“English”这个词的独立形式在“Type in English...”这个短语的上下文中使用时是不一样的。

我想这是一个假设的问题,我对语言的了解还不够,无法知道这是否是一个问题。

上述编写消息的方法是否有效?

0 投票
1 回答
660 浏览

reactjs - 使用复杂消息语法复数的格式化消息

我尝试使用 FormattedMesage(React intl) 来使用格式化 API。如何使用复数创建一个格式化的消息?现在:

期望带有消息语法的东西

预期文本:1 秒、2 秒等。

0 投票
2 回答
1274 浏览

javascript - 是否可以从 IntlProvider 重用“intl”上下文?

我有一个在树(又名门户)之外呈现的组件(弹出窗口),因此丢失了以下内容IntlProvider

Redux 通过允许将 store 实例作为组件的 prop 传递来解决相同的问题:

有没有类似的方法可以用于 ReactIntl​​?

0 投票
2 回答
1579 浏览

reactjs - 如何国际化包括阿拉伯语的 ReactJS Web 应用程序?

寻找与ReactJS兼容的东西,以使我的 Web 应用程序多语言以及 RTL 到 LTR,反之亦然。

根据我的研究,我发现雅虎使用FormatJS支持的名为“react-intl”的 NPM 包是相关的解决方案。 https://www.npmjs.com/package/react-intl

用于阿拉伯语也可靠吗?

您还知道其他稳定且可扩展的解决方案吗?

0 投票
2 回答
5491 浏览

javascript - 如何使用 FormatJs 消息语法将数字格式化为两位小数的百分比?

使用react-intl我有以下消息:

当我打电话

我希望它呈现:

服务费:6.25%

但我得到一个四舍五入的值:

服务费:6%

如何解决这个问题?

0 投票
3 回答
2080 浏览

reactjs - 在 @formatjs/intl-relativetimeformat/dist/locale-data/ 中哪里可以找到美国的语言环境

我正在将 react-intl 迁移到 3.0 版,并且需要为 IE 填充语言环境数据。具体来说,我想为 en-US 加载语言环境数据的 polyfill。我只能找到@formatjs/intl-relativetimeformat/dist/locale-data/en语言环境文件。

它导致此错误:

Module not found: Error: Can't resolve '@formatjs/intl-relativetimeformat/dist/locale-data/en-US' in '/xxx/xxx/xxx/xxx/app'

0 投票
1 回答
653 浏览

create-react-app - 如何将 formatJS/CLI 与 create-react-app 一起使用

真正愚蠢的问题 - 正确的 glob 格式是什么?我正在尝试运行

但它只会深入一层。