Analyseur ICU MessageFormat
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.
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
<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>
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 :
| 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)