UNPKG

react-intl

Version:

Internationalize React apps. This library provides React components and an API to format dates, numbers, and strings, including pluralization and handling translations.

27 lines (26 loc) 1.13 kB
import { getNamedFormat, filterProps, createError } from '../utils'; const RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style']; function getFormatter({ locale, formats, onError, }, getRelativeTimeFormat, options = {}) { const { format } = options; const defaults = (!!format && getNamedFormat(formats, 'relative', format, onError)) || {}; const filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults); return getRelativeTimeFormat(locale, filteredOptions); } export function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options = {}) { if (!unit) { unit = 'second'; } const RelativeTimeFormat = Intl.RelativeTimeFormat; if (!RelativeTimeFormat) { config.onError(createError(`Intl.RelativeTimeFormat is not available in this environment. Try polyfilling it using "@formatjs/intl-relativetimeformat" `)); } try { return getFormatter(config, getRelativeTimeFormat, options).format(value, unit); } catch (e) { config.onError(createError('Error formatting relative time.', e)); } return String(value); }