Web Foundations

Internationalization API

Number formatting, date formatting, pluralization, and locale support.

Advertisement

Internationalization API

Number formatting, date formatting, pluralization, and locale support.

Overview

The Intl API provides locale-sensitive formatting and comparison.

Key Concepts

  • NumberFormat — Locale-aware number formatting
  • DateTimeFormat — Locale-aware date formatting
  • Collator — Locale-aware string comparison
  • PluralRules — Handle pluralization
  • RelativeTimeFormat — Relative time strings

Code Examples

<div id="output"></div>

<script>
const output = document.getElementById('output');
const locale = navigator.language;

function log(label, value) {
  output.innerHTML += `<div><strong>${label}:</strong> ${value}</div>`;
}

// Number formatting
const number = 1234567.89;

const currencyFormatter = new Intl.NumberFormat(locale, {
  style: 'currency',
  currency: 'USD'
});
log('Currency (USD)', currencyFormatter.format(number));

const percentFormatter = new Intl.NumberFormat(locale, {
  style: 'percent',
  minimumFractionDigits: 2
});
log('Percent', percentFormatter.format(0.856));

const compactFormatter = new Intl.NumberFormat(locale, {
  notation: 'compact',
  compactDisplay: 'long'
});
log('Compact', compactFormatter.format(number));

// Date formatting
const date = new Date();

const dateFormatter = new Intl.DateTimeFormat(locale, {
  dateStyle: 'full',
  timeStyle: 'short'
});
log('Date & Time', dateFormatter.format(date));

const relativeFormatter = new Intl.RelativeTimeFormat(locale, {
  numeric: 'auto'
});
log('Yesterday', relativeFormatter.format(-1, 'day'));
log('Next week', relativeFormatter.format(1, 'week'));

// Pluralization
const pluralFormatter = new Intl.PluralRules(locale);

const items = [0, 1, 2, 5];
items.forEach(count => {
  const category = pluralFormatter.select(count);
  log(`${count} items`, `${count} ${category === 'one' ? 'item' : 'items'}`);
});

// List formatting
const listFormatter = new Intl.ListFormat(locale, {
  style: 'long',
  type: 'conjunction'
});
const fruits = ['apples', 'bananas', 'oranges'];
log('Fruits', listFormatter.format(fruits));
</script>

Practice

Build a multi-currency converter using the Intl.NumberFormat API.

Advertisement