messageformat
Version:
Intl.MessageFormat / Unicode MessageFormat 2 parser, runtime and polyfill
75 lines (54 loc) • 2.42 kB
Markdown
This library provides a formatter and other tools for [Unicode MessageFormat 2.0] (MF2),
the new standard for localization developed by the [MessageFormat Working Group].
This includes a formatter that can be used as a polyfill for
the proposed [ECMA-402 Intl.MessageFormat] formatter.
The API provided by this library is current as of the [LDML 47] (March 2025)
Final version of the MF2 specification.
[ ]: https://unicode.org/reports/tr35/tr35-messageFormat.html
[ ]: https://github.com/unicode-org/message-format-wg
[ ]: https://github.com/tc39/proposal-intl-messageformat/
[ ]: https://www.unicode.org/reports/tr35/tr35-75/tr35-messageFormat.html
```sh
npm install --save messageformat
```
```js
import { MessageFormat } from 'messageformat';
const msg = 'Today is {$today :datetime dateStyle=medium}';
const mf = new MessageFormat('en', msg);
mf.format({ today: new Date('2022-02-02') });
// 'Today is Feb 2, 2022'
```
The library also provides a number of other tools and utilities for MF2, such as:
- MF2 data model conversion tools
```js
import { parseMessage, stringifyMessage } from 'messageformat';
```
- MF2 data model validation and transformation tools
```js
import { validate, visit } from 'messageformat';
```
- Concreate Syntax Tree (CST) tools for MF2
```js
import { parseCST, messageFromCST, stringifyCST } from 'messageformat/cst';
```
- Utilities for building custom function handlers for MF2
```js
import {
DraftFunctions,
asPositiveInteger,
asString
} from 'messageformat/functions';
```
In addition to supporting MF2 syntax,
compilers and formatting function runtimes are also provided for
ICU MessageFormat and Fluent messages:
- [@messageformat/icu-messageformat-1](https://www.npmjs.com/package/@messageformat/icu-messageformat-1)
- [@messageformat/fluent](https://www.npmjs.com/package/@messageformat/fluent)
For more information on the types and functions provided by this package,
see the [documentation site](https://messageformat.github.io/).
> [!IMPORTANT]
> The v4 release of the `messageformat` package has
> an entirely different API compared to its earlier major releases,
> which were built on top of ICU MessageFormat, aka "MF1".
> For that,
> please see [`@messageformat/core`](https://www.npmjs.com/package/@messageformat/core) instead.