GT ClassMethodsFormatting

formatMessage

API Reference für die GT-Methode formatMessage

Überblick

Die Methode formatMessage formatiert Nachrichten mit Variableneinsetzung und lokalisierungsbewusster Formatierung. Auf Basis der Format.JS‑Bibliothek intl-messageformat unterstützt sie Muster des ICU message format.

Diese Methode ist unerlässlich für Variableninterpolation und Pluralbildung. Außerdem unterstützt sie die Formatierung von Zahlen und Datumsangaben sowie weitere Funktionen.

const gt = new GT({
  sourceLocale: 'en',
  targetLocale: 'fr'
});

const formatted = gt.formatMessage('Hallo {name}, du hast {count} Nachrichten', {
  variables: { name: 'Alice', count: 5 }
});
// Ergebnis: "Hallo Alice, du hast 5 Nachrichten"

Referenz

Parameter

Prop

Type

Options-Objekt

EigenschaftTypOptionalBeschreibung
localesstring | string[]Locale(s), die für die Formatierung verwendet werden (überschreibt die Standardwerte der Instanz)
variablesFormatVariablesObjekt mit variables für die Nachrichteninterpolation

Typ FormatVariables

type FormatVariables = {
  [key: string]: string | number | Date | boolean;
};

Rückgabewert

string - Die formatierte Nachricht mit ersetzten Variablen und angewandter, locale-spezifischer Formatierung.


Verhalten

Variablenersetzung

  • Einfache Variablen: {variableName} → wird durch einen Stringwert ersetzt
  • ICU-Muster: {count, plural, ...} → wird gemäß den ICU-Formatierungsregeln verarbeitet
  • Fehlende Variablen: führen zu einem Fehler
  • Doppelte geschweifte Klammern: umgehen das Klammerverhalten 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

Grundlegende Variablenersetzung

const gt = new GT({ targetLocale: 'en' });

const message = gt.formatMessage('Willkommen {name}!', {
  variables: { name: 'John' }
});
console.log(message); // "Willkommen John!"

Pluralbildung mit dem 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 Vorlagen für Nachrichten

const orderStatusMessage = gt.formatMessage(`
  Bestellung #{orderId} Statusaktualisierung:
  - Artikel: {itemCount, plural, =0 {keine Artikel} =1 {ein Artikel} other {# Artikel}}
  - Gesamt: {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 die Syntax des ICU Message Format für erweitertes Formatieren mit Intl.MessageFormat von Format.JS.
  • Fehlende variables führen zu einem Error.
  • Sprachspezifische Formatierungen für Zahlen, Datumsangaben und Währungen werden automatisch angewendet

Nächste Schritte

Wie ist dieser Leitfaden?

formatMessage