Aller au contenu principal

Analyseur ICU MessageFormat

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Analyse les chaînes de message ICU en un AST via JavaScript.

npm Version size

Vue d'ensemble

Ce package implémente un analyseur en JavaScript qui transforme les chaînes de message ICU - standard industriel utilisé pour l'internationalisation - en un AST. L'AST généré peut ensuite être utilisé par un compilateur, comme intl-messageformat, pour produire des chaînes formatées localisées à destination des utilisateurs.

Utilisation

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

Exemple

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

Squelette de date-heure pris en charge

ICU propose une large gamme de motifs pour personnaliser le format de date et d'heure. Cependant, tous ne sont pas disponibles via l'API Intl d'ECMA402. Par conséquent, notre analyseur ne prend en charge que les motifs suivants :

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

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)