Analisador ICU MessageFormat
Tradução Beta Não Oficial
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Analisa strings de mensagem ICU em uma AST através de JavaScript.
Visão Geral
Este pacote implementa um analisador em JavaScript que processa as strings de mensagem ICU — padrão do setor para internacionalização — convertendo-as em uma AST. A AST resultante pode então ser utilizada por um compilador, como o intl-messageformat, para gerar strings formatadas e localizadas para exibição aos usuários.
Uso
import {parse} from '@formatjs/icu-messageformat-parser'
const ast = parse(`this is {count, plural,
one{# dog}
other{# dogs}
}`)
Exemplo
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 Data e Hora Suportado
O ICU oferece uma ampla variedade de padrões para personalizar formatos de data e hora. Entretanto, nem todos estão disponíveis através da API Intl do ECMA402. Portanto, nosso analisador suporta apenas os seguintes padrões:
| 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 |
Benchmarks
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)