Utility FunctionsFormatting

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é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 formaté avec les variables remplacées et le formatage propre au locale appliqué.


Comportement

Gestion des locales

  • Utilise le paramètre locales fourni 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

Comment trouvez-vous ce guide ?