formatMessage
Referencia de API de la función independiente formatMessage
Descripción general
El método formatMessage da formato a mensajes con sustitución de variables y formateo según la locale.
Basado en la biblioteca intl-messageformat de Format.JS, es compatible con patrones de ICU message format.
Este método es esencial para la interpolación de variables y la pluralización. También admite el formateo de números y de fechas, entre otras funciones.
import { formatMessage } from 'generaltranslation';
const formatted = formatMessage('Hola {name}, tienes {count} mensajes', {
  locales: ['en'],
  variables: { name: 'Alice', count: 5 }
});
// Devuelve: "Hola Alice, tienes 5 mensajes"Referencias
Parámetros
Prop
Type
Objeto options
| Propiedad | Tipo | Opcional | Predeterminado | Descripción | 
|---|---|---|---|---|
| locales | string | string[] | ✓ | ['en'] | locale(s) que se usarán para el formateo | 
| variables | FormatVariables | ✓ | {} | Objeto que contiene variables para la interpolación | 
Devuelve
string - El mensaje formateado con variables sustituidas y el formato específico de la locale aplicado.
Comportamiento
Manejo de locales
- Usa el parámetro localesproporcionado para el formateo
- Recurre a ['en']si no se especifican locales
- Admite cadenas de contenido de respaldo predeterminado de locales con arreglos
Procesamiento de variables
- Sustitución simple: {variable}→ se reemplaza por el valor
- ICU message format: Compatibilidad total con plurales, select y formateo
- Variables faltantes: Se dejan sin cambios en la salida
Compatibilidad con el formato de mensajes
Las mismas funciones de ICU message format que el método de la clase GT:
- Formateo de números: {price, number, currency}
- Formateo de fechas: {date, date, short}
- Pluralización: {count, plural, ...}
- Selección: {gender, select, ...}
Ejemplos
Uso básico
import { formatMessage } from 'generaltranslation';
const greeting = formatMessage('¡Hola {name}!', {
  locales: ['en'],
  variables: { name: 'Mundo' }
});
console.log(greeting); // "¡Hola, Mundo!"Sin instancia de GT
// Función de utilidad para formatear sin instanciar una clase
function quickFormat(template: string, variables: any, locale = 'en') {
  return formatMessage(template, {
    locales: [locale],
    variables
  });
}
const notification = quickFormat(
  'Tienes {count, plural, =0 {ningún mensaje} =1 {un mensaje} other {# mensajes}}',
  { count: 3 },
  'en'
);
console.log(notification); // "Tienes 3 mensajes"Formateo de moneda y números
// Formato para la locale alemana
const germanPrice = formatMessage('Precio: {price, number, currency}', {
  locales: ['de'],
  variables: { price: 1234.56 }
});
console.log(germanPrice); // "Precio: 1.234,56 €"
// Formato de porcentaje
const progress = formatMessage('Progreso: {percent, number, percent}', {
  locales: ['en'],
  variables: { percent: 0.85 }
});
console.log(progress); // "Progreso: 85%"Biblioteca de plantillas
import { formatMessage } from 'generaltranslation';
class MessageTemplates {
  private locale: string;
  
  constructor(locale: string = 'en') {
    this.locale = locale;
  }
  
  welcome(name: string) {
    return formatMessage('¡Bienvenido de nuevo, {name}!', {
      locales: [this.locale],
      variables: { name }
    });
  }
  
  itemCount(count: number) {
    return formatMessage(
      '{count, plural, =0 {Ningún elemento} =1 {Un elemento} other {# elementos}}',
      {
        locales: [this.locale],
        variables: { count }
      }
    );
  }
}
const templates = new MessageTemplates('fr');
console.log(templates.welcome('Marie')); // "¡Bienvenido de nuevo, Marie!" (en francés)
console.log(templates.itemCount(5)); // "5 elementos"Notas
- Requiere especificar explícitamente el locale en options
- Admite las mismas capacidades de ICU message format que el método de la clase GT
- Devuelve una cadena vacía si la plantilla de entrada está vacía
- Las variables se procesan antes de las reglas de formato de ICU
Próximos pasos
- Consulta la documentación de Intl.MessageFormatpara ver más opciones
- Usa la clase GT formatMessagepara un formateo con estado
- Da formato a números con formatNumcomo función independiente
- Conoce el tipo FormatVariables
¿Qué te ha parecido esta guía?

