Unicode MessageFormat for JavaScript
    Preparing search index...

    Module messageformat

    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.

    npm install --save messageformat
    
    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

      import { parseMessage, stringifyMessage } from 'messageformat';
      
    • MF2 data model validation and transformation tools

      import { validate, visit } from 'messageformat';
      
    • Concreate Syntax Tree (CST) tools for MF2

      import { parseCST, messageFromCST, stringifyCST } from 'messageformat/cst';
      
    • Utilities for building custom function handlers for MF2

      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:

    For more information on the types and functions provided by this package, see the documentation site.

    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 instead.

    Formatting

    MessageFormat
    MessageFormatOptions

    Formatted Parts

    MessageBiDiIsolationPart
    MessageDateTimePart
    MessageExpressionPart
    MessageFallbackPart
    MessageMarkupPart
    MessageNumberPart
    MessageStringPart
    MessageTextPart
    MessageUnknownPart
    MessagePart

    Message Data Model

    Model
    isCatchallKey
    isExpression
    isFunctionRef
    isLiteral
    isMarkup
    isMessage
    isPatternMessage
    isSelectMessage
    isVariableRef
    parseMessage
    stringifyMessage
    validate
    visit

    Errors

    MessageDataModelError
    MessageError
    MessageFunctionError
    MessageResolutionError
    MessageSyntaxError