formatMessage
API-Referenz für die GT-Methode formatMessage
Übersicht
Die Methode formatMessage formatiert Meldungen mit Variableneinsetzung und locale‑bewusster Formatierung.
Aufbauend auf der Format.JS‑Bibliothek intl-messageformat unterstützt sie Muster des ICU Message Format.
Diese Methode ist essenziell für Variableninterpolation und Pluralbildung. Außerdem unterstützt sie die Formatierung von Zahlen und Daten sowie weitere Funktionen.
const gt = new GT({
sourceLocale: 'en',
targetLocale: 'fr'
});
const formatted = gt.formatMessage('Hello {name}, you have {count} messages', {
variables: { name: 'Alice', count: 5 }
});
// Gibt zurück: „Hello Alice, you have 5 messages"Referenz
Parameter
Prop
Type
Options-Objekt
| Eigenschaft | Typ | Optional | Beschreibung |
|---|---|---|---|
locales | string | string[] | ✓ | Zu verwendende Locale(s) für die Formatierung (überschreibt die Standardwerte der Instanz) |
variables | FormatVariables | ✓ | Objekt mit Variablen für die Nachrichteninterpolation |
FormatVariables-Typ
type FormatVariables = {
[key: string]: string | number | Date | boolean;
};Rückgabe
string - Die formatierte Nachricht mit ersetzten Variablen und angewandter, locale-spezifischer Formatierung.
Verhalten
Variablenersetzung
- Einfache Variablen:
{variableName}→ wird durch einen Zeichenkettenwert ersetzt - ICU-Muster:
{count, plural, ...}→ wird gemäß den ICU-Formatierungsregeln verarbeitet - Fehlende Variablen: führen zu einem Fehler
- Doppelte geschweifte Klammern: setzen das Klammerverhalten außer Kraft und werden als einzelne geschweifte Klammer gerendert
Unterstützung für MessageFormat
- Einfache Interpolation:
{variable} - Zahlenformatierung:
{price, number, ::currency/USD},{discount, number, percent},{num, number, integer} - Datumsformatierung:
{date, date, short},{time, time, short} - Pluralbildung:
{count, plural, =0 {keine} =1 {eine} other {viele}} - Auswahl:
{gender, select, male {er} female {sie} other {they}} - Selectordinal:
{place, selectordinal, =1 {#st} =2 {#nd} =3 {#rd} other {#th}}
Beispiele
Einfache Variablenersetzung
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage('Willkommen, {name}!', {
variables: { name: 'John' }
});
console.log(message); // "Willkommen, John!"Pluralbildung mit ICU-Format
const message = gt.formatMessage(
'Sie haben {count, plural, =0 {keine Artikel} =1 {einen Artikel} other {# Artikel}} in Ihrem Warenkorb',
{
variables: { count: 3 }
}
);
console.log(message); // "Sie haben 3 Artikel in Ihrem Warenkorb"Zahlen- und Währungsformatierung
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage(
'Ihr Gesamtbetrag beträgt {price, number, ::currency/USD} mit {discount, number, percent} Rabatt',
{
variables: {
price: 99.99,
discount: 0.15
}
}
);
console.log(message); // "Ihr Gesamtbetrag beträgt 99,99 $ mit 15 % Rabatt"Komplexe Nachrichten-Templates
const orderStatusMessage = gt.formatMessage(`
Bestellung #{orderId} – Statusaktualisierung:
- Artikel: {itemCount, plural, =0 {keine Artikel} =1 {ein Artikel} other {# Artikel}}
- Summe: {total, number, ::currency/USD}
- Status: {status, select,
pending {Ausstehend}
shipped {Versandt}
delivered {Zugestellt}
other {Unbekannt}}
- Lieferung: {deliveryDate, date, short}
`, {
variables: {
orderId: 'ORD-12345',
itemCount: 3,
total: 149.97,
status: 'shipped',
deliveryDate: new Date('2024-03-20')
}
});Hinweise
- Die Methode verarbeitet ICU-Message-Format-Syntax für erweitertes Formatieren mit
Intl.MessageFormatvon Format.JS. - Fehlende Variablen lösen einen Fehler aus.
- Locale-spezifische Zahlen-, Datums- und Währungsformatierung wird automatisch angewendet.
Nächste Schritte
- Sieh dir die Dokumentation zu
Intl.MessageFormatan, um mehr über options zu erfahren - Zahlen mit formatNum formatieren
Wie ist diese Anleitung?