123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // import { shouldPolyfill as shouldPolyfillCanonicalLocales } from '@formatjs/intl-getcanonicallocales/should-polyfill';
- // import { shouldPolyfill as shouldPolyfillLocale } from '@formatjs/intl-locale/should-polyfill';
- import { shouldPolyfill as shoudPolyfillPluralRules } from '@formatjs/intl-pluralrules/should-polyfill';
- // import { shouldPolyfill as shouldPolyfillNumberFormat } from '@formatjs/intl-numberformat/should-polyfill';
- // import { shouldPolyfill as shouldPolyfillIntlDateTimeFormat } from '@formatjs/intl-datetimeformat/should-polyfill';
- // import { shouldPolyfill as shouldPolyfillIntlRelativeTimeFormat } from '@formatjs/intl-relativetimeformat/should-polyfill';
- // async function loadGetCanonicalLocalesPolyfill() {
- // // This platform already supports Intl.getCanonicalLocales
- // if (shouldPolyfillCanonicalLocales()) {
- // await import('@formatjs/intl-getcanonicallocales/polyfill');
- // }
- // }
- // async function loadLocalePolyfill() {
- // // This platform already supports Intl.Locale
- // if (shouldPolyfillLocale()) {
- // await import('@formatjs/intl-locale/polyfill');
- // }
- // }
- // async function loadIntlNumberFormatPolyfill(locale: string) {
- // const unsupportedLocale = shouldPolyfillNumberFormat(locale);
- // // This locale is supported
- // if (!unsupportedLocale) {
- // return;
- // }
- // // Load the polyfill 1st BEFORE loading data
- // await import('@formatjs/intl-numberformat/polyfill-force');
- // await import(`@formatjs/intl-numberformat/locale-data/${unsupportedLocale}`);
- // }
- // async function loadIntlDateTimeFormatPolyfill(locale: string) {
- // const unsupportedLocale = shouldPolyfillIntlDateTimeFormat(locale);
- // // This locale is supported
- // if (!unsupportedLocale) {
- // return;
- // }
- // // Load the polyfill 1st BEFORE loading data
- // await import('@formatjs/intl-datetimeformat/polyfill-force');
- // // Parallelize CLDR data loading
- // const dataPolyfills = [
- // import('@formatjs/intl-datetimeformat/add-all-tz'),
- // import(`@formatjs/intl-datetimeformat/locale-data/${unsupportedLocale}`),
- // ];
- // await Promise.all(dataPolyfills);
- // }
- async function loadIntlPluralRulesPolyfills(locale: string) {
- const unsupportedLocale = shoudPolyfillPluralRules(locale);
- // This locale is supported
- if (!unsupportedLocale) {
- return;
- }
- // Load the polyfill 1st BEFORE loading data
- await import(
- /* webpackChunkName: "i18n-pluralrules-polyfill" */ '@formatjs/intl-pluralrules/polyfill-force'
- );
- await import(
- /* webpackChunkName: "i18n-pluralrules-polyfill-[request]" */ `@formatjs/intl-pluralrules/locale-data/${unsupportedLocale}`
- );
- }
- // async function loadIntlRelativeTimeFormatPolyfill(locale: string) {
- // const unsupportedLocale = shouldPolyfillIntlRelativeTimeFormat(locale);
- // // This locale is supported
- // if (!unsupportedLocale) {
- // return;
- // }
- // // Load the polyfill 1st BEFORE loading data
- // await import(
- // /* webpackChunkName: "i18n-relativetimeformat-polyfill" */
- // '@formatjs/intl-relativetimeformat/polyfill-force'
- // );
- // await import(
- // /* webpackChunkName: "i18n-relativetimeformat-polyfill-[request]" */
- // `@formatjs/intl-relativetimeformat/locale-data/${unsupportedLocale}`
- // );
- // }
- export async function loadIntlPolyfills() {
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- we want to match empty strings
- const locale = document.querySelector('html')?.lang || 'en';
- // order is important here
- // Supported in IE11 and most other browsers, not useful
- // await loadGetCanonicalLocalesPolyfill()
- // Supported in IE11 and most other browsers, not useful
- // await loadLocalePolyfill()
- // Supported in IE11 and most other browsers, not useful
- // await loadIntlNumberFormatPolyfill(locale)
- // Supported in IE11 and most other browsers, not useful
- // await loadIntlDateTimeFormatPolyfill(locale)
- // Supported from Safari 13+, may still be useful
- await loadIntlPluralRulesPolyfills(locale);
- // This is not used yet in the codebase yet
- // Supported from Safari 14+
- // await loadIntlRelativeTimeFormatPolyfill(locale);
- }
|