Utility FunctionsFormatting

formatMessage

Référence de l’API pour la fonction formatMessage autonome

Présentation

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 patrons 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 }
});
// Retourne : "Bonjour Alice, vous avez 5 messages"

Références

Paramètres

Prop

Type

Objet options

PropriétéTypeOptionnelValeur par défautDescription
localesstring | string[]['en']Locale(s) à utiliser pour le formatage
variablesFormatVariables{}Objet contenant des variables pour l’interpolation

Renvoie

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


Comportement

Gestion des locales

  • Utilise le paramètre locales fourni pour le formatage
  • Revient à ['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é 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

Les mêmes fonctionnalités du format de message ICU que la méthode de la classe GT :

  • Mise en forme des nombres : {price, number, currency}
  • Mise en forme 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 pour le formatage sans instanciation de classe
function quickFormat(template: string, variables: any, locale = 'en') {
  return formatMessage(template, {
    locales: [locale],
    variables
  });
}

const notification = quickFormat(
  'Vous avez {count, plural, =0 {aucun message} =1 {un message} other {# messages}}',
  { count: 3 },
  'en'
);
console.log(notification); // « Vous avez 3 messages »

Formatage des nombres et des devises

// 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('Progrès : {percent, number, percent}', {
  locales: ['en'],
  variables: { percent: 0.85 }
});
console.log(progress); // "Progrès : 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('Bon retour, {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')); // "Bon retour, Marie !" (en français)
console.log(templates.itemCount(5)); // "5 éléments"

Notes

  • Nécessite de spécifier explicitement la locale dans options
  • Prend en charge les mêmes fonctionnalités du format de message ICU que la méthode de la GT class
  • Retourne une chaîne vide pour les modèles d’entrée vides
  • Les variables sont traitées avant les règles de formatage ICU

Prochaines étapes

Que pensez-vous de ce guide ?

formatMessage