Analizador de ICU MessageFormat
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.
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
<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>
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:
| Symbol | Meaning | Notes |
|---|---|---|
| G | Era designator | |
| y | year | |
| M | month in year | |
| L | stand-alone month in year | |
| d | day in month | |
| E | day of week | |
| e | local day of week | e..eee is not supported |
| c | stand-alone local day of week | c..ccc is not supported |
| a | AM/PM marker | |
| h | Hour [1-12] | |
| H | Hour [0-23] | |
| K | Hour [0-11] | |
| k | Hour [1-24] | |
| m | Minute | |
| s | Second | |
| z | Time 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)