Zum Hauptinhalt springen

ICU MessageFormat-Parser

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Parst ICU Message-Strings über JavaScript in einen AST.

npm Version size

Übersicht

Dieses Paket implementiert einen JavaScript-Parser, der den Industriestandard ICU Message-Strings – verwendet für Internationalisierung – in einen AST umwandelt. Der erzeugte AST kann anschließend von einem Compiler wie intl-messageformat genutzt werden, um lokalisierte formatierte Strings für die Anzeige zu generieren.

Verwendung

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

Beispiel

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

Unterstützte DateTime-Skelette

ICU bietet eine Vielzahl von Mustern zur Anpassung von Datums- und Zeitformaten. Allerdings sind nicht alle über die ECMA402 Intl API verfügbar. Daher unterstützt unser Parser nur folgende Muster:

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)