formatMessage
Référence de l’API pour la fonction autonome formatMessage
Aperçu
La méthode formatMessage met en forme des messages avec substitution de variables et un formatage adapté à la locale.
Basée sur la bibliothèque intl-messageformat de Format.JS, elle prend en charge les modèles du format de message ICU.
Cette méthode est essentielle pour l’interpolation de variables et la pluralisation. Elle prend également en charge le formatage des nombres et des dates, entre autres fonctionnalités.
import { formatMessage } from 'generaltranslation';
const formatted = formatMessage('Bonjour {name}, vous avez {count} messages', {
locales: ['en'],
variables: { name: 'Alice', count: 5 }
});
// Renvoie : « Bonjour Alice, vous avez 5 messages »Références
Paramètres
Prop
Type
Objet d’options
| Propriété | Type | Optionnel | Valeur par défaut | Description |
|---|---|---|---|---|
locales | string | string[] | ✓ | ['en'] | Locale(s) à utiliser pour le formatage |
variables | FormatVariables | ✓ | {} | Objet contenant des variables pour l’interpolation |
Renvoie
string - Le message formaté avec les variables remplacées et le formatage propre au locale appliqué.
Comportement
Gestion des locales
- Utilise le paramètre
localesfourni pour le formatage - Passe à
['en']si aucune locale n’est spécifiée - Prend en charge les chaînes de secours de locales via des tableaux
Traitement des variables
- Substitution simple :
{variable}→ remplacée par la valeur - Format de message ICU : prise en charge complète des pluriels, des sélections et du formatage
- Variables manquantes : laissées inchangées dans la sortie
Prise en charge du format de message
Même fonctionnalités du format de message ICU que la méthode de la classe GT :
- Formatage des nombres :
{price, number, currency} - Formatage des dates :
{date, date, short} - Pluralisation :
{count, plural, ...} - Sélection :
{gender, select, ...}
Exemples
Utilisation de base
import { formatMessage } from 'generaltranslation';
const greeting = formatMessage('Bonjour {name} !', {
locales: ['en'],
variables: { name: 'World' }
});
console.log(greeting); // "Bonjour World !"Sans instance de GT
// Fonction utilitaire de formatage sans instanciation de classe
function quickFormat(template: string, variables: any, locale = 'en') {
return formatMessage(template, {
locales: [locale],
variables
});
}
const notification = quickFormat(
'You have {count, plural, =0 {no messages} =1 {one message} other {# messages}}',
{ count: 3 },
'en'
);
console.log(notification); // "Vous avez 3 messages"Mise en forme des devises et des nombres
// Formatage de la locale allemande
const germanPrice = formatMessage('Preis: {price, number, currency}', {
locales: ['de'],
variables: { price: 1234.56 }
});
console.log(germanPrice); // « Preis: 1.234,56 € »
// Formatage de pourcentage
const progress = formatMessage('Progress: {percent, number, percent}', {
locales: ['en'],
variables: { percent: 0.85 }
});
console.log(progress); // « Progress: 85% »Bibliothèque de modèles
import { formatMessage } from 'generaltranslation';
class MessageTemplates {
private locale: string;
constructor(locale: string = 'en') {
this.locale = locale;
}
welcome(name: string) {
return formatMessage('Bienvenue, {name} !', {
locales: [this.locale],
variables: { name }
});
}
itemCount(count: number) {
return formatMessage(
'{count, plural, =0 {Aucun élément} =1 {Un élément} other {# éléments}}',
{
locales: [this.locale],
variables: { count }
}
);
}
}
const templates = new MessageTemplates('fr');
console.log(templates.welcome('Marie')); // "Bienvenue, Marie !" (en français)
console.log(templates.itemCount(5)); // "5 éléments"Notes
- Nécessite de spécifier explicitement le locale dans les options
- Prend en charge les mêmes fonctionnalités du format de message ICU que la méthode de la classe GT
- Renvoie une chaîne vide pour les gabarits d’entrée vides
- Les variables sont traitées avant l’application des règles de formatage ICU
Prochaines étapes
- Consultez la documentation d’
Intl.MessageFormatpour plus d’options - Utilisez la classe GT
formatMessagepour un formatage stateful - Formatez les nombres avec la fonction autonome
formatNum - Découvrez le type
FormatVariables
Comment trouvez-vous ce guide ?