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.