formatMessage
Riferimento API per la funzione autonoma formatMessage
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 di messaggistica ICU.
Questo metodo è essenziale per l'interpolazione delle variabili e la gestione del plurale. Supporta inoltre la formattazione di numeri e date, tra le altre funzionalità.
import { formatMessage } from 'generaltranslation';
const formatted = formatMessage('Ciao {name}, hai {count} messaggi', {
locales: ['en'],
variables: { name: 'Alice', count: 5 }
});
// Restituisce: "Ciao Alice, hai 5 messaggi"Riferimenti
Parametri
Prop
Type
Oggetto Options
| Proprietà | Tipo | Opzionale | Predefinito | Descrizione |
|---|---|---|---|---|
locales | string | string[] | ✓ | ['en'] | Locale/i da utilizzare per la formattazione |
variables | FormatVariables | ✓ | {} | Oggetto che contiene le variabili per l'interpolazione |
Restituisce
string - Il messaggio formattato con le variabili sostituite e la formattazione specifica della lingua/locale applicata.
Comportamento
Gestione delle localizzazioni
- Usa il parametro
localesfornito per la formattazione - Esegue il fallback a
['en']se non sono specificate localizzazioni - Supporta catene di fallback delle localizzazioni tramite array
Elaborazione delle variabili
- Sostituzione semplice:
{variable}→ sostituita con il valore - Formato ICU dei messaggi: supporto completo per plurali, selettori e formattazione
- Variabili mancanti: lasciate invariate nell’output
Supporto al formato dei messaggi
Stesse funzionalità del formato di messaggi ICU del metodo di classe GT:
- Formattazione dei numeri:
{price, number, currency} - Formattazione delle date:
{date, date, short} - Pluralizzazione:
{count, plural, ...} - Selezione:
{gender, select, ...}
Esempi
Utilizzo di base
import { formatMessage } from 'generaltranslation';
const greeting = formatMessage('Ciao {name}!', {
locales: ['en'],
variables: { name: 'World' }
});
console.log(greeting); // "Ciao mondo!"Senza istanza di GT
// Funzione di utilità per la formattazione senza istanziazione della classe
function quickFormat(template: string, variables: any, locale = 'en') {
return formatMessage(template, {
locales: [locale],
variables
});
}
const notification = quickFormat(
'Hai {count, plural, =0 {nessun messaggio} =1 {un messaggio} other {# messaggi}}',
{ count: 3 },
'en'
);
console.log(notification); // "Hai 3 messaggi"Formattazione di valute e numeri
// Formattazione per la locale tedesca
const germanPrice = formatMessage('Prezzo: {price, number, currency}', {
locales: ['de'],
variables: { price: 1234.56 }
});
console.log(germanPrice); // "Prezzo: 1.234,56 €"
// Formattazione delle percentuali
const progress = formatMessage('Avanzamento: {percent, number, percent}', {
locales: ['en'],
variables: { percent: 0.85 }
});
console.log(progress); // "Avanzamento: 85%"Raccolta di template
import { formatMessage } from 'generaltranslation';
class MessageTemplates {
private locale: string;
constructor(locale: string = 'en') {
this.locale = locale;
}
welcome(name: string) {
return formatMessage('Bentornato, {name}!', {
locales: [this.locale],
variables: { name }
});
}
itemCount(count: number) {
return formatMessage(
'{count, plural, =0 {Nessun elemento} =1 {Un elemento} other {# elementi}}',
{
locales: [this.locale],
variables: { count }
}
);
}
}
const templates = new MessageTemplates('fr');
console.log(templates.welcome('Marie')); // "Bentornato, Marie!" (in francese)
console.log(templates.itemCount(5)); // "5 elementi"Note
- Richiede l’indicazione esplicita della locale nelle opzioni
- Supporta le stesse funzionalità del formato di messaggi ICU del metodo di classe di GT
- Restituisce una stringa vuota se il template di input è vuoto
- Le variabili vengono elaborate prima delle regole di formattazione ICU
Prossimi passaggi
- Consulta la documentazione di
Intl.MessageFormatper altre opzioni - Usa la classe GT
formatMessageper un formato con stato - Formattta i numeri con la funzione autonoma
formatNum - Scopri il tipo
FormatVariables
Come valuti questa guida?