# generaltranslation: General Translation Core SDK: formatMessage URL: https://generaltranslation.com/es/docs/core/class/methods/formatting/format-message.mdx --- title: formatMessage description: Referencia de la API del método formatMessage de GT --- ## Resumen El método `formatMessage` da formato a los mensajes con sustitución de variables y formato según la configuración regional. Basado en la biblioteca [`intl-messageformat`](https://formatjs.github.io/docs/intl-messageformat/) de Format.JS, admite patrones del formato de mensajes ICU. Este método es esencial para la interpolación de variables y la pluralización. También admite el formato de número y de fecha, entre otras funcionalidades. ```typescript const gt = new GT({ sourceLocale: 'en', targetLocale: 'fr' }); const formatted = gt.formatMessage('Hello {name}, you have {count} messages', { variables: { name: 'Alice', count: 5 } }); // Devuelve: "Hello Alice, you have 5 messages" ``` *** ## Referencia ### Parámetros ### Objeto de opciones | Propiedad | Tipo | Opcional | Descripción | | ----------- | -------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `locales` | `string \| string[]` | ✓ | Configuración regional o configuraciones regionales que se usarán para dar formato (sobrescribe la configuración predeterminada de la instancia) | | `variables` | `FormatVariables` | ✓ | Objeto que contiene variables para la interpolación del mensaje | ### Tipo FormatVariables ```typescript type FormatVariables = { [key: string]: string | number | Date | boolean; }; ``` ### Devuelve `string` - El mensaje formateado, con las variables sustituidas y el formato específico de la configuración regional aplicado. *** ## Comportamiento ### Sustitución de variables * Variables sencillas: `{variableName}` → se reemplazan por un valor de cadena * Patrones ICU: `{count, plural, ...}` → se procesan según las reglas de formato de ICU * Variables faltantes: producirán un error * Llaves dobles: escapan el comportamiento de las llaves y se renderizan como una sola llave ### Compatibilidad con el formato de mensajes * **Interpolación sencilla**: `{variable}` * **Formato de número**: `{price, number, ::currency/USD}`, `{discount, number, percent}`, `{num, number, integer}` * **Formato de fecha**: `{date, date, short}`, `{time, time, short}` * **Pluralización**: `{count, plural, =0 {none} =1 {one} other {many}}` * **Selección**: `{gender, select, male {he} female {she} other {they}}` * **Selectordinal**: `{place, selectordinal, =1 {#st} =2 {#nd} =3 {#rd} other {#th}}` *** ## Ejemplos ### Sustitución básica de variables ```typescript const gt = new GT({ targetLocale: 'en' }); const message = gt.formatMessage('Welcome {name}!', { variables: { name: 'John' } }); console.log(message); // "Welcome John!" ``` ### Pluralización con el formato ICU ```typescript const message = gt.formatMessage( 'You have {count, plural, =0 {no items} =1 {one item} other {# items}} in your cart', { variables: { count: 3 } } ); console.log(message); // "Tienes 3 artículos en tu carrito" ``` ### Formato de números y divisas ```typescript const gt = new GT({ targetLocale: 'en' }); const message = gt.formatMessage( 'Your total is {price, number, ::currency/USD} with {discount, number, percent} off', { variables: { price: 99.99, discount: 0.15 } } ); console.log(message); // "Tu total es $99.99 con 15% de descuento" ``` ### Plantillas de mensajes complejas ```typescript const orderStatusMessage = gt.formatMessage(` Order #{orderId} status update: - Items: {itemCount, plural, =0 {no items} =1 {one item} other {# items}} - Total: {total, number, ::currency/USD} - Status: {status, select, pending {Pending} shipped {Shipped} delivered {Delivered} other {Unknown}} - Delivery: {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 formato de mensajes ICU para aplicar formato avanzado con [`Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) de Format.JS. * Si faltan variables, se producirá un error. * El formato específico de la configuración regional para números, fechas y Currency se aplica automáticamente ## Próximos pasos * Consulta la documentación de [`Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) para ver más opciones * Da formato a los números con [formatNum](/docs/core/class/methods/formatting/format-num)