GT ClassMethodsFormatting

formatMessage

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

Vue d’ensemble

La méthode formatMessage formate des messages avec substitution de variables et un formatage sensible à la locale. Construite 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('Hello {name}, you have {count} messages', {
  variables: { name: 'Alice', count: 5 }
});
// Retourne : « Hello Alice, you have 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 paramètres 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 formaté avec les variables remplacées et le formatage spécifique à la locale appliqué.


Comportement

Substitution de variables

  • Variables simples : {variableName} → remplacées par une chaîne
  • Modèles ICU : {count, plural, ...} → traités selon les règles de formatage ICU
  • Variables manquantes : entraînent une Error
  • 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}}
  • Sélection ordinale : {place, selectordinal, =1 {#er} =2 {#e} =3 {#e} other {#e}}

Exemples

Substitution de variables simple

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

const message = gt.formatMessage('Bienvenue {name} !', {
  variables: { name: 'John' }
});
console.log(message); // "Bienvenue 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 »

Formatage des nombres et des devises

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

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

Modèles de messages complexes

const orderStatusMessage = gt.formatMessage(`
  Commande n°{orderId} - mise à jour du statut :
  - 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')
  }
});

Remarques

  • La méthode interprète la syntaxe du format de message ICU pour un formatage avancé à l’aide de Intl.MessageFormat de Format.JS.
  • Les variables manquantes déclencheront une Error.
  • Le formatage des nombres, des dates et des devises spécifique à la locale est appliqué automatiquement.

Prochaines étapes

Comment trouvez-vous ce guide ?