GT ClassMethodsFormatting

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

PropiedadTipoOpcionalDescripción
localesstring | string[]Locale(s) para usar en el formato (sobrescribe los valores predeterminados de la instancia)
variablesFormatVariablesObjeto 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.MessageFormat de 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

¿Qué te ha parecido esta guía?

formatMessage