this repo has no description
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 39 lines 1.4 kB view raw
1/** 2 * Normalizes and makes sure we include some unicode option for number formating. 3 */ 4function localeWithOptionsForNumbers(locale: string) { 5 locale = locale.toLowerCase().replace('_', '-'); 6 7 if (locale === 'hi-in') { 8 // nu-latn makes the formatter use latin numbers. 9 // See BCP47 Unicode extensions for number (nu): 10 // http://unicode.org/repos/cldr/trunk/common/bcp47/number.xml 11 // TL;DR -u- means the start of unicode extension. 12 // nu-latn means numeric (nu) extension, latn value 13 return 'hi-in-u-nu-latn'; 14 } else if (locale === 'my') { 15 // For the `my` locale, we want to display functional numbers as Latin numerals rather than in Burmese, 16 // so we are overriding the locale to give us the Latin functional numbers. See radar for more context: 17 // rdar://155236306 (LOC: MS-MY: ASOTW | Product Page: Functional: Numbers are not displayed in MS/EN format) 18 return 'my-u-nu-latn'; 19 } 20 21 return locale; 22} 23 24/** 25 * Abbreviate a number into a compact shorthand 26 * 27 * @example 28 * const abbr = abbreviateNumber(10_000, 'en-US'); // '10K' 29 */ 30export function abbreviateNumber(value: number, locale: string): string { 31 const formatter = new Intl.NumberFormat( 32 localeWithOptionsForNumbers(locale), 33 { 34 notation: 'compact', 35 }, 36 ); 37 38 return formatter.format(value); 39}