Saltar al contenido principal

Analizador de ICU MessageFormat

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Analiza cadenas de mensajes ICU en un AST mediante JavaScript.

npm Version size

Visión general

Este paquete implementa un analizador en JavaScript que convierte las cadenas de mensajes ICU, estándar de la industria y utilizadas para internacionalización, en un AST. El AST resultante puede ser utilizado por un compilador, como intl-messageformat, para producir cadenas formateadas y localizadas para mostrar a los usuarios.

Uso

import {parse} from '@formatjs/icu-messageformat-parser'
const ast = parse(`this is {count, plural,
one{# dog}
other{# dogs}
}`)

Ejemplo

Live Editor
<pre>
  {JSON.stringify(
    IcuMessageFormatParser.parse(
      `On {takenDate, date, short} <bold>{name}</bold> took {numPhotos, plural,
          =0 {no photos.}
          =1 {one photo.}
          other {# photos.}
        }`
    ),
    undefined,
    2
  )}
</pre>
Result

Esqueleto de fecha y hora admitido

ICU ofrece una amplia gama de patrones para personalizar formatos de fecha/hora. Sin embargo, no todos están disponibles en la API Intl de ECMA402. Por lo tanto, nuestro analizador solo admite los siguientes patrones:

SymbolMeaningNotes
GEra designator
yyear
Mmonth in year
Lstand-alone month in year
dday in month
Eday of week
elocal day of weeke..eee is not supported
cstand-alone local day of weekc..ccc is not supported
aAM/PM marker
hHour [1-12]
HHour [0-23]
KHour [0-11]
kHour [1-24]
mMinute
sSecond
zTime Zone

Pruebas comparativas

complex_msg AST length 10861
normal_msg AST length 1665
simple_msg AST length 364
string_msg AST length 131

complex_msg x 29,940 ops/sec ±1.23% (89 runs sampled)
normal_msg x 253,612 ops/sec ±1.01% (92 runs sampled)
simple_msg x 1,805,642 ops/sec ±0.70% (94 runs sampled)
string_msg x 2,694,133 ops/sec ±1.05% (95 runs sampled)