@pico-intl-dev/messageformat
v1.0.7
Published
Optional full ICU MessageFormat resolver for pico-intl
Downloads
380
Maintainers
Readme
@pico-intl-dev/messageformat
Optional full ICU MessageFormat resolver for pico-intl.
Core stays dependency-free and keeps its ICU-lite syntax. Use this package when your product needs advanced ICU semantics such as exact plural selectors, offsets, nested plural/select messages, selectordinal, and locale-specific plural categories for languages such as Arabic, Russian, and Polish.
npm install @pico-intl-dev/core @pico-intl-dev/messageformatimport { createI18n } from '@pico-intl-dev/core';
import { createMessageFormatResolver } from '@pico-intl-dev/messageformat';
const i18n = createI18n({
base: 'en',
locale: 'pl',
messages: {
files: '{count, plural, one {# plik} few {# pliki} many {# plikow} other {# pliku}}',
},
resolver: createMessageFormatResolver(),
});
i18n.t('files', { count: 22 });Supported by the underlying ICU MessageFormat engine:
- cardinal plural categories:
zero,one,two,few,many,other - exact selectors such as
=0 - plural
offset selectfor gender, role, status, and similar variantsselectordinal- nested plural/select trees
- number/date/time formatting supported by ICU MessageFormat
- rich text/tag formatting through
formatToParts
The resolver caches compiled messages by locale and message string. The default cache limit is 500 compiled messages.
Rich text stays outside pico-intl core. Use the resolver's formatToParts
helper when a framework adapter needs to turn ICU tag output into UI nodes:
const resolver = createMessageFormatResolver();
const parts = resolver.formatToParts({
locale: 'en',
message: 'Read <link>{name}</link>',
params: {
name: 'docs',
link: (chunks) => `<a>${chunks.join('')}</a>`,
},
});