mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-12-21 21:12:27 -05:00
61 lines
2.4 KiB
JavaScript
61 lines
2.4 KiB
JavaScript
|
// this file should only be `required` in the format-time
|
||
|
// when Intl.RelativeTimeFormat is not available (Safari < 14), but
|
||
|
// we're not currently able to do the code splitting in www, and it
|
||
|
// is always included. To reduce the amount of data that's loaded limit
|
||
|
// the number of languages loaded to just the top few that are still using
|
||
|
// safari <14. These seven account for most uses.
|
||
|
// relativetimeformat depends on locale which also needs to be polyfilled in
|
||
|
// safari <14
|
||
|
// The plural rules is required for safari 12.
|
||
|
import {shouldPolyfill as shouldPolyfillLocale} from '@formatjs/intl-locale/should-polyfill';
|
||
|
import {shouldPolyfill as shouldPolyfillRelativeTimeFormat} from '@formatjs/intl-relativetimeformat/should-polyfill'
|
||
|
import {shouldPolyfill as shouldPolyfillPluralRules} from '@formatjs/intl-pluralrules/should-polyfill';
|
||
|
|
||
|
async function polyfill(locale) {
|
||
|
if (!shouldPolyfillRelativeTimeFormat(locale)) return;
|
||
|
|
||
|
// Load the polyfill 1st BEFORE loading data
|
||
|
await import('@formatjs/intl-relativetimeformat/polyfill')
|
||
|
|
||
|
if (shouldPolyfillPluralRules(locale)) {
|
||
|
await import('@formatjs/intl-pluralrules/polyfill');
|
||
|
}
|
||
|
|
||
|
if (shouldPolyfillLocale(locale)) {
|
||
|
await import('@formatjs/intl-locale/polyfill');
|
||
|
}
|
||
|
|
||
|
switch (locale) {
|
||
|
case 'ar':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/ar');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/ar');
|
||
|
break;
|
||
|
case 'es':
|
||
|
case 'es-419':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/es');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/es');
|
||
|
break;
|
||
|
case 'fr':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/fr');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/fr');
|
||
|
break
|
||
|
case 'ja':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/ja');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/ja');
|
||
|
break;
|
||
|
case 'tr':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/tr');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/tr');
|
||
|
case 'zh':
|
||
|
case 'zh-CN':
|
||
|
case 'zh-TW':
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/zh');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/zh');
|
||
|
break;
|
||
|
default:
|
||
|
await import('@formatjs/intl-relativetimeformat/locale-data/en');
|
||
|
await import('@formatjs/intl-pluralrules/locale-data/en');
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
export default polyfill;
|