Parser ICU MessageFormat
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Analizza le stringhe di messaggio ICU in un AST tramite JavaScript.
Panoramica
Questo pacchetto implementa un parser JavaScript che analizza le stringhe di messaggio ICU, standard del settore utilizzate per l'internazionalizzazione, trasformandole in un AST. L'AST prodotto può poi essere utilizzato da un compilatore, come intl-messageformat, per generare stringhe formattate localizzate da visualizzare agli utenti.
Utilizzo
import {parse} from '@formatjs/icu-messageformat-parser'
const ast = parse(`this is {count, plural,
one{# dog}
other{# dogs}
}`)
Esempio
<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>
Scheletri DateTime Supportati
ICU offre un'ampia gamma di pattern per personalizzare il formato data/ora. Tuttavia, non tutti sono disponibili tramite l'API Intl di ECMA402. Pertanto, il nostro parser supporta esclusivamente i seguenti pattern:
| 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 |
Benchmark
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)