# generaltranslation: General Translation Core SDK: formatMessage
URL: https://generaltranslation.com/fr/docs/core/class/methods/formatting/format-message.mdx
---
title: formatMessage
description: Référence de l’API pour la méthode GT formatMessage
---
## Vue d’ensemble
La méthode `formatMessage` met en forme les messages avec substitution de variables et formatage adapté au paramètre régional.
Basée sur la bibliothèque [`intl-messageformat`](https://formatjs.github.io/docs/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.
```typescript
const gt = new GT({
sourceLocale: 'en',
targetLocale: 'fr'
});
const formatted = gt.formatMessage('Hello {name}, you have {count} messages', {
variables: { name: 'Alice', count: 5 }
});
// Retourne : "Hello Alice, you have 5 messages"
```
***
## Référence
### Paramètres
### Objet d’options
| Propriété | Type | Facultatif | Description |
| ------------ | -------------------- | ---------- | ----------------------------------------------------------------------------------------------------------- |
| `locales` | `string \| string[]` | ✓ | Paramètre(s) régional(aux) à utiliser pour la mise en forme (remplace les valeurs par défaut de l’instance) |
| `variables` | `FormatVariables` | ✓ | Objet contenant les variables d’interpolation du message |
| `dataFormat` | `StringFormat` | ✓ | Format des données de la chaîne de message (par ex., `'ICU'`, `'I18NEXT'`, `'STRING'`) |
### Type FormatVariables
```typescript
type FormatVariables = Record;
```
### Valeur de retour
`chaîne de caractères` - Le message mis en forme, dans lequel les variables ont été remplacées et le formatage propre au paramètre régional a été appliqué.
***
## Comportement
### Substitution de variables
* Variables simples : `{variableName}` → remplacées par une chaîne de caractères
* Modèles ICU : `{count, plural, ...}` → traités selon les règles de formatage ICU
* Variables manquantes : provoqueront une erreur
* Accolades doubles : neutraliseront le comportement des accolades et s’afficheront comme une accolade simple
### Prise en charge du format des messages
* **Interpolation simple** : `{variable}`
* **Formatage des nombres** : `{price, number, ::currency/USD}`, `{discount, number, percent}`, `{num, number, integer}`
* **Formatage des dates** : `{date, date, short}`, `{time, time, short}`
* **Pluralisation** : `{count, plural, =0 {none} =1 {one} other {many}}`
* **Sélection** : `{gender, select, male {he} female {she} other {they}}`
* **Selectordinal** : `{place, selectordinal, =1 {#st} =2 {#nd} =3 {#rd} other {#th}}`
***
## Exemples
### Substitution simple de variables
```typescript
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage('Welcome {name}!', {
variables: { name: 'John' }
});
console.log(message); // "Welcome John!"
```
### Gestion du pluriel avec le format ICU
```typescript
const message = gt.formatMessage(
'You have {count, plural, =0 {no items} =1 {one item} other {# items}} in your cart',
{
variables: { count: 3 }
}
);
console.log(message); // "You have 3 items in your cart" (« Vous avez 3 articles dans votre panier »)
```
### Formatage des nombres et des devises
```typescript
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage(
'Your total is {price, number, ::currency/USD} with {discount, number, percent} off',
{
variables: {
price: 99.99,
discount: 0.15
}
}
);
console.log(message); // "Your total is $99.99 with 15% off"
```
### Templates de messages complexes
```typescript
const orderStatusMessage = gt.formatMessage(`
Order #{orderId} status update:
- Items: {itemCount, plural, =0 {no items} =1 {one item} other {# items}}
- Total: {total, number, ::currency/USD}
- Status: {status, select,
pending {Pending}
shipped {Shipped}
delivered {Delivered}
other {Unknown}}
- Delivery: {deliveryDate, date, short}
`, {
variables: {
orderId: 'ORD-12345',
itemCount: 3,
total: 149.97,
status: 'shipped',
deliveryDate: new Date('2024-03-20')
}
});
```
***
## Notes
* La méthode prend en charge la syntaxe du format de messages ICU pour le formatage avancé via [`Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) de Format.JS.
* Les variables manquantes entraînent une erreur.
* Le formatage des nombres, des dates et des devises propre au paramètre régional est appliqué automatiquement
## Prochaines étapes
* Consultez la [documentation de `Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) pour découvrir d’autres options
* Formatez les nombres avec [formatNum](/docs/core/class/methods/formatting/format-num)