GT ClassMethodsFormatting

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

EigenschaftTypOptionalBeschreibung
localesstring | string[]Zu verwendende Locale(s) für die Formatierung (überschreibt die Standardwerte der Instanz)
variablesFormatVariablesObjekt 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.MessageFormat von Format.JS.
  • Fehlende Variablen lösen einen Fehler aus.
  • Locale-spezifische Zahlen-, Datums- und Währungsformatierung wird automatisch angewendet.

Nächste Schritte

Wie ist diese Anleitung?