GT ClassMethodsFormatting

formatMessage

Riferimento API per il metodo formatMessage di GT

Panoramica

Il metodo formatMessage formatta i messaggi con sostituzione delle variabili e formattazione in base alla lingua/locale. Basato sulla libreria intl-messageformat di Format.JS, supporta i pattern del formato messaggi ICU.

Questo metodo è essenziale per l'interpolazione delle variabili e la gestione dei plurali. Supporta anche la formattazione di numeri e date, tra le altre funzionalità.

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

const formatted = gt.formatMessage('Ciao {name}, hai {count} nuovi messaggi', {
  variables: { name: 'Alice', count: 5 }
});
// Restituisce: "Ciao Alice, hai 5 nuovi messaggi"

Riferimenti

Parametri

Prop

Type

Oggetto Options

ProprietàTipoFacoltativoDescrizione
localesstring | string[]Locale/i da usare per la formattazione (sovrascrive i valori predefiniti dell'istanza)
variablesFormatVariablesOggetto contenente le variabili per l'interpolazione dei messaggi

Tipo FormatVariables

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

Restituisce

string - Il messaggio formattato con le variabili sostituite e la formattazione specifica della lingua/locale applicata.


Comportamento

Sostituzione delle variabili

  • Variabili semplici: {variableName} → sostituite con un valore stringa
  • Pattern ICU: {count, plural, ...} → elaborati secondo le regole di formattazione ICU
  • Variabili mancanti: genereranno un errore
  • Doppie parentesi graffe: fanno l’escape del comportamento delle parentesi graffe e verranno renderizzate come una singola parentesi graffa

Supporto al formato dei messaggi

  • Interpolazione semplice: {variable}
  • Formattazione dei numeri: {price, number, ::currency/USD}, {discount, number, percent}, {num, number, integer}
  • Formattazione di date e orari: {date, date, short}, {time, time, short}
  • Plurale: {count, plural, =0 {nessuno} =1 {uno} other {molti}}
  • Selezione: {gender, select, male {lui} female {lei} other {loro}}
  • Ordinali (selectordinal): {place, selectordinal, =1 {#º} =2 {#º} =3 {#º} other {#º}}

Esempi

Sostituzione di variabili di base

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

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

Pluralizzazione con il formato ICU

const message = gt.formatMessage(
  'Hai {count, plural, =0 {nessun articolo} =1 {un articolo} other {# articoli}} nel tuo carrello',
  {
    variables: { count: 3 }
  }
);
console.log(message); // "Hai 3 articoli nel tuo carrello"

Formattazione di numeri e valute

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

const message = gt.formatMessage(
  'Il totale è {price, number, ::currency/USD} con uno sconto del {discount, number, percent}',
  {
    variables: { 
      price: 99.99,
      discount: 0.15 
    }
  }
);
console.log(message); // "Il totale è $99,99 con uno sconto del 15%"

Modelli di messaggi complessi

const orderStatusMessage = gt.formatMessage(`
  Aggiornamento stato ordine #{orderId}:
  - Articoli: {itemCount, plural, =0 {nessun articolo} =1 {un articolo} other {# articoli}}
  - Totale: {total, number, ::currency/USD}
  - Stato: {status, select, 
      pending {In sospeso} 
      shipped {Spedito} 
      delivered {Consegnato} 
      other {Sconosciuto}}
  - Consegna: {deliveryDate, date, short}
`, {
  variables: {
    orderId: 'ORD-12345',
    itemCount: 3,
    total: 149.97,
    status: 'shipped',
    deliveryDate: new Date('2024-03-20')
  }
});

Note

  • Il metodo supporta la sintassi dei messaggi ICU per formattazioni avanzate tramite Intl.MessageFormat di Format.JS.
  • Le variabili mancanti generano un errore.
  • La formattazione locale di numeri, date e valute viene applicata automaticamente.

Prossimi passaggi

Come valuti questa guida?

formatMessage