Skip to content

Commit cd058f2

Browse files
peterbevgrl
authored andcommitted
format large numbers per locale (#34579)
1 parent f90f604 commit cd058f2

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

Diff for: components/hooks/useNumberFormatter.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { useRouter } from 'next/router'
2+
3+
export function useNumberFormatter() {
4+
const { locale } = useRouter()
5+
return {
6+
formatInteger: (num: number) => {
7+
return new Intl.NumberFormat(locale).format(num)
8+
},
9+
}
10+
}

Diff for: components/search/SearchResults.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import cx from 'classnames'
55

66
import type { SearchResultsT, SearchResultHitT } from './types'
77
import { useTranslation } from 'components/hooks/useTranslation'
8+
import { useNumberFormatter } from 'components/hooks/useNumberFormatter'
89
import { Link } from 'components/Link'
910
import { useQuery } from 'components/hooks/useQuery'
1011
import { sendEvent, EventType } from 'components/lib/events'
@@ -17,6 +18,7 @@ type Props = {
1718
}
1819
export function SearchResults({ results, query }: Props) {
1920
const { t } = useTranslation('search')
21+
const { formatInteger } = useNumberFormatter()
2022

2123
const pages = Math.ceil(results.meta.found.value / results.meta.size)
2224
const { page } = results.meta
@@ -26,7 +28,7 @@ export function SearchResults({ results, query }: Props) {
2628
<Text>
2729
{results.meta.found.value === 1
2830
? t('one_result')
29-
: t('n_results').replace('{n}', results.meta.found.value.toLocaleString())}
31+
: t('n_results').replace('{n}', formatInteger(results.meta.found.value))}
3032
</Text>
3133
<br />
3234
<SearchResultHits hits={results.hits} query={query} />

Diff for: components/search/index.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Heading } from '@primer/react'
66
import { sendEvent, EventType } from 'components/lib/events'
77
import { useTranslation } from 'components/hooks/useTranslation'
88
import { DEFAULT_VERSION, useVersion } from 'components/hooks/useVersion'
9+
import { useNumberFormatter } from 'components/hooks/useNumberFormatter'
910
import type { SearchResultsT } from 'components/search/types'
1011
import { SearchResults } from 'components/search/SearchResults'
1112
import { SearchError } from 'components/search/SearchError'
@@ -17,6 +18,7 @@ import { useMainContext } from 'components/context/MainContext'
1718

1819
export function Search() {
1920
const { locale } = useRouter()
21+
const { formatInteger } = useNumberFormatter()
2022
const { t } = useTranslation('search')
2123
const { currentVersion } = useVersion()
2224
const { query, debug } = useQuery()
@@ -74,7 +76,7 @@ export function Search() {
7476
pageTitle += ` (${searchVersion})`
7577
}
7678
if (results) {
77-
pageTitle = `${results.meta.found.value.toLocaleString()} ${pageTitle}`
79+
pageTitle = `${formatInteger(results.meta.found.value)} ${pageTitle}`
7880
}
7981
}
8082

0 commit comments

Comments
 (0)