Intl.RelativeTimeFormat
A spec-compliant polyfill for Intl.RelativeTimeFormat fully tested by the official ECMAScript Conformance test suite
Installation
- npm
- yarn
npm i @formatjs/intl-relativetimeformat
yarn add @formatjs/intl-relativetimeformat
Requirements
This package requires the following capabilities:
Intl.getCanonicalLocales
or polyfillIntl.Locale
or polyfill.Intl.PluralRules
or polyfill.- If you need
formatToParts
and have to support IE11- or Node 10-, you'd need to polyfill using@formatjs/intl-numberformat
.
Usage
Via polyfill-fastly.io
You can use polyfill-fastly.io URL Builder to create a polyfill script tag for Intl.RelativeTimeFormat
. By default the created URL does not come with any locale data. In order to add locale data, append Intl.RelativeTimeFormat.~locale.<locale>
to your list of features. For example:
<!-- Polyfill Intl.RelativeTimeFormat, its dependencies & `en` locale data -->
<script src="https://polyfill-fastly.io/v3/polyfill.min.js?features=Intl.RelativeTimeFormat,Intl.RelativeTimeFormat.~locale.en"></script>
Simple
import '@formatjs/intl-relativetimeformat/polyfill'
import '@formatjs/intl-relativetimeformat/locale-data/en' // locale-data for en
Dynamic import + capability detection
import {shouldPolyfill} from '@formatjs/intl-relativetimeformat/should-polyfill'
async function polyfill(locale: string) {
const unsupportedLocale = shouldPolyfill(locale)
// This locale is supported
if (!unsupportedLocale) {
return
}
// Load the polyfill 1st BEFORE loading data
await import('@formatjs/intl-relativetimeformat/polyfill-force')
await import(
`@formatjs/intl-relativetimeformat/locale-data/${unsupportedLocale}`
)
}
Tests
This library is fully test262-compliant.