formatMessage
Referencia de API del método formatMessage de GT
Descripción general
El método formatMessage da formato a mensajes con sustitución de variables y formato adaptado a 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 es compatible con el formateo de números y de fechas, entre otras funciones.
const gt = new GT({
  sourceLocale: 'en',
  targetLocale: 'fr'
});
const formatted = gt.formatMessage('Hola {name}, tienes {count} mensajes', {
  variables: { name: 'Alice', count: 5 }
});
// Devuelve: "Hola Alice, tienes 5 mensajes"Referencias
Parámetros
Prop
Type
Objeto de options
| Propiedad | Tipo | Opcional | Descripción | 
|---|---|---|---|
| locales | string | string[] | ✓ | Locale(s) para usar en el formato (sobrescribe los valores predeterminados de la instancia) | 
| variables | FormatVariables | ✓ | Objeto que contiene variables para la interpolación de mensajes | 
Tipo FormatVariables
type FormatVariables = {
  [key: string]: string | number | Date | boolean;
};Devoluciones
string - El mensaje formateado con las variables sustituidas y el formato específico de la locale aplicado.
Comportamiento
Sustitución de variables
- Variables simples: {variableName}→ se reemplaza por un valor de cadena
- Patrones ICU: {count, plural, ...}→ se procesan con las reglas de formato de ICU
- Variables faltantes: producirán un error
- Doble llaves: anulan el comportamiento de las llaves y se renderiza como una sola llave
Compatibilidad con Message Format
- Interpolación simple: {variable}
- Formato de números: {price, number, ::currency/USD},{discount, number, percent},{num, number, integer}
- Formato de fechas: {date, date, short},{time, time, short}
- Pluralización: {count, plural, =0 {ninguno} =1 {uno} other {muchos}}
- Selección: {gender, select, male {él} female {ella} other {elle}}
- Ordinales (selectordinal): {place, selectordinal, =1 {#.º} =2 {#.º} =3 {#.º} other {#.º}}
Ejemplos
Sustitución básica de variables
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage('¡Bienvenido {name}!', {
  variables: { name: 'John' }
});
console.log(message); // "¡Bienvenido John!"Pluralización con el formato ICU
const message = gt.formatMessage(
  'Tienes {count, plural, =0 {ningún artículo} =1 {un artículo} other {# artículos}} en tu carrito',
  {
    variables: { count: 3 }
  }
);
console.log(message); // "Tienes 3 artículos en tu carrito"Formato de números y monedas
const gt = new GT({ targetLocale: 'en' });
const message = gt.formatMessage(
  'Su total es {price, number, ::currency/USD} con {discount, number, percent} de descuento',
  {
    variables: { 
      price: 99.99,
      discount: 0.15 
    }
  }
);
console.log(message); // "Su total es $99.99 con 15% de descuento"Plantillas de mensajes complejas
const orderStatusMessage = gt.formatMessage(`
  Actualización del estado del pedido #{orderId}:
  - Artículos: {itemCount, plural, =0 {sin artículos} =1 {un artículo} other {# artículos}}
  - Total: {total, number, ::currency/USD}
  - Estado: {status, select, 
      pending {Pendiente} 
      shipped {Enviado} 
      delivered {Entregado} 
      other {Desconocido}}
  - Entrega: {deliveryDate, date, short}
`, {
  variables: {
    orderId: 'ORD-12345',
    itemCount: 3,
    total: 149.97,
    status: 'shipped',
    deliveryDate: new Date('2024-03-20')
  }
});Notas
- El método procesa la sintaxis de ICU message format para formato avanzado usando Intl.MessageFormatde Format.JS.
- Las variables faltantes provocarán un Error.
- El formato de números, fechas y divisas específico de la locale se aplica automáticamente.
Próximos pasos
- Consulta la documentación de Intl.MessageFormatpara ver más opciones
- Formatea números con formatNum
¿Qué te ha parecido esta guía?

