问题标签 [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.
reactjs - 在 React 中为 i18n 使用 java 资源包
我正在将相对较大的 java 应用程序迁移到 React,并且需要在 React 应用程序中实现国际化。当然,React 中有许多可用于 i18n 的库,例如 FormaJS 和 i18next,但我发现它们中的大多数都没有满足我的要求:
所有翻译已经以 java 资源包的形式完成,其中键和消息如下所示:
我们不需要复数,但希望避免用
{0}
命名参数替换数字参数{key1}
,如果可能的话,因为它可能会很棘手,尤其是涉及格式(formattingKey)的地方。我也必须使用现有的密钥。该库应支持后备翻译的语言环境。即,如果我将德语语言环境设置为备用语言环境并翻译英语的键,则 _en 文件/源中的所有缺失键都应使用 _ge 文件/源进行翻译
(理想情况下)库应允许动态更改后备和当前语言环境
(理想情况下)库应该允许使用 ajax 加载包
我决定反对 FormatJS 主要是因为 id 不支持后备语言环境。它有一个默认翻译的概念,在使用时应该在组件中提供。
我接近决定反对 i18next,因为 - React 集成项目似乎不是很受欢迎 - 需要更改消息以使用命名参数
谁能推荐一些其他的图书馆?
string-formatting - 本地化货币范围
formatjs 和 javascript 的原生组合Intl.NumberFormat()
支持将数字格式化为各种文化和单位中的货币。但是如何将一系列货币格式化为$1,000.00 - 5000.00
.
在不重复符号的情况下,它通常在哪里以及如何显示?
使用react-intl
:
这将显示$1,000.00 - $5000.00
哪些不符合我的设计规范。从第二个值中去除货币符号似乎是一种骇人听闻的策略,因为我不应该/不能轻易知道要去除的符号。
像常规小数一样格式化是严格不正确的 - 货币规则根据货币规定“小单位”的不同位数。
我不知道,如果货币符号显示在文化的末尾而不是开头呢?(会发生这种情况吗?)
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> }}>
正确渲染。
有人有线索吗?
intl - react-intl 复合消息
我正在努力找出构建消息的最佳方法,其中一个动态值也需要翻译。
例如,如果我有消息“输入西班牙语...”,我想在我的应用程序支持的所有语言的每个不同组合中使用此消息。
假设只支持 en/es 那么我需要一个可以输出以下组合的函数:
使用 3 种支持的语言,将有 9 种可能的组合等...
我能想到的唯一方法是按如下方式编写消息:
我有一种感觉,这不是最佳方式。或许在某些语言中,“English”这个词的独立形式在“Type in English...”这个短语的上下文中使用时是不一样的。
我想这是一个假设的问题,我对语言的了解还不够,无法知道这是否是一个问题。
上述编写消息的方法是否有效?
reactjs - 使用复杂消息语法复数的格式化消息
我尝试使用 FormattedMesage(React intl) 来使用格式化 API。如何使用复数创建一个格式化的消息?现在:
期望带有消息语法的东西
预期文本:1 秒、2 秒等。
javascript - 是否可以从 IntlProvider 重用“intl”上下文?
我有一个在树(又名门户)之外呈现的组件(弹出窗口),因此丢失了以下内容IntlProvider
:
Redux 通过允许将 store 实例作为组件的 prop 传递来解决相同的问题:
有没有类似的方法可以用于 ReactIntl?
reactjs - 如何国际化包括阿拉伯语的 ReactJS Web 应用程序?
寻找与ReactJS兼容的东西,以使我的 Web 应用程序多语言以及 RTL 到 LTR,反之亦然。
根据我的研究,我发现雅虎使用FormatJS支持的名为“react-intl”的 NPM 包是相关的解决方案。 https://www.npmjs.com/package/react-intl
用于阿拉伯语也可靠吗?
您还知道其他稳定且可扩展的解决方案吗?
javascript - 如何使用 FormatJs 消息语法将数字格式化为两位小数的百分比?
使用react-intl
我有以下消息:
当我打电话
我希望它呈现:
服务费:6.25%
但我得到一个四舍五入的值:
服务费:6%
如何解决这个问题?
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'
create-react-app - 如何将 formatJS/CLI 与 create-react-app 一起使用
真正愚蠢的问题 - 正确的 glob 格式是什么?我正在尝试运行
但它只会深入一层。