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à | Tipo | Facoltativo | Descrizione |
|---|---|---|---|
locales | string | string[] | ✓ | Locale/i da usare per la formattazione (sovrascrive i valori predefiniti dell'istanza) |
variables | FormatVariables | ✓ | Oggetto 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.MessageFormatdi Format.JS. - Le variabili mancanti generano un errore.
- La formattazione locale di numeri, date e valute viene applicata automaticamente.
Prossimi passaggi
- Consulta la documentazione di
Intl.MessageFormatper ulteriori opzioni - Formattta i numeri con formatNum
Come valuti questa guida?