Core API

Limits & tradeoffs

pico-intl is designed as a small, predictable i18n runtime for common app copy. It is not a drop-in replacement for every advanced MessageFormat workflow.

ts
// pico-intl is intentionally ICU-lite.
i18n.t('cart.items', { count: 3 });
i18n.t('price', { price: 29 });

// Use full MessageFormat tooling when you need:
// exact =0 selectors, offsets, rich text trees, or deeply nested ICU.

When pico-intl fits

Use pico-intl when you want portable JSON catalogs, fast lookups, simple interpolation, pipe plurals, flat select clauses, and native Intl number/date/time formatting.

When to choose a heavier tool

Choose FormatJS or another full MessageFormat implementation when you need exact plural selectors such as =0, offsets, deeply nested ICU trees, or rich text element interpolation.