Vai al contenuto principale

Parser ICU MessageFormat

Traduzione Beta Non Ufficiale

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.

npm Version size

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

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

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:

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

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)