GT ClassMethodsFormatting

formatMessage

Référence de l’API pour la méthode formatMessage de GT

Aperçu

La méthode formatMessage formate 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.

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

const formatted = gt.formatMessage('Bonjour {name}, vous avez {count} messages', {
  variables: { name: 'Alice', count: 5 }
});
// Renvoie : « Bonjour Alice, vous avez 5 messages »

Références

Paramètres

Prop

Type

Objet d’options

PropriétéTypeFacultatifDescription
localesstring | string[]Locale(s) à utiliser pour le formatage (remplace les valeurs par défaut de l’instance)
variablesFormatVariablesObjet contenant des variables pour l’interpolation de messages

Type FormatVariables

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

Renvoie

string - Le message mis en forme avec les variables substituées et le formatage propre à la locale appliqué.


Comportement

Substitution de variables

  • Variables simples : {variableName} → remplacé par une chaîne
  • Modèles ICU : {count, plural, ...} → traités selon les règles de formatage ICU
  • Variables manquantes : provoquent une erreur
  • Doubles accolades : neutralisent le comportement des accolades et s’affichent comme une seule accolade

Prise en charge de Message Format

  • 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}
  • Pluriel : {count, plural, =0 {aucun} =1 {un} other {beaucoup}}
  • Sélection : {gender, select, male {il} female {elle} other {iel}}
  • Ordinal sélectif : {place, selectordinal, =1 {#er} =2 {#e} =3 {#e} other {#e}}

Exemples

Substitution basique de variables

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

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

Pluralisation avec le format ICU

const message = gt.formatMessage(
  'Vous avez {count, plural, =0 {aucun article} =1 {un article} other {# articles}} dans votre panier',
  {
    variables: { count: 3 }
  }
);
console.log(message); // "Vous avez 3 articles dans votre panier"

Format des nombres et des devises

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

const message = gt.formatMessage(
  'Votre total est {price, number, ::currency/USD} avec {discount, number, percent} de réduction',
  {
    variables: { 
      price: 99.99,
      discount: 0.15 
    }
  }
);
console.log(message); // "Votre total est 99,99 $ avec 15 % de réduction"

Modèles de messages complexes

const orderStatusMessage = gt.formatMessage(`
  Mise à jour du statut de la commande #{orderId} :
  - Articles : {itemCount, plural, =0 {aucun article} =1 {un article} other {# articles}}
  - Total : {total, number, ::currency/USD}
  - Statut : {status, select, 
      pending {En attente} 
      shipped {Expédiée} 
      delivered {Livrée} 
      other {Inconnu}}
  - Livraison : {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 message ICU pour le formatage avancé à l’aide de Intl.MessageFormat de Format.JS.
  • Les variables manquantes déclenchent une Error.
  • Le formatage localisé des nombres, des dates et des montants est appliqué automatiquement.

Prochaines étapes

Que pensez-vous de ce guide ?

formatMessage