Numbers

Formatting plain numbers

When you're formatting plain numbers that are not part of a message, you can use a separate hook:

import {useIntl} from 'next-intl';
function Component() {
const intl = useIntl();
intl.formatNumber(499.9, {style: 'currency', currency: 'USD'});
}

See the MDN docs about NumberFormat to learn more about the options you can pass to formatNumber.

Numbers within messages

Numbers can also be embedded within messages:

{
"percent": "This product is on sale: {value, number, percent}",
"percent": "At most 2 fraction digits: {value, number, .##}"
}

See the ICU docs about number skeletons to learn more about this syntax.

Additionally, you can configure custom formatters which can be referenced by name:

{
"price": "This product costs {price, number, currency}"
}
t(
'price',
{price: 32000.99},
{
// Custom formats can be supplied via the third parameter
number: {
currency: {
style: 'currency',
currency: 'EUR'
}
}
}
);

To reuse number formats for multiple components, you can configure global formats.