# generaltranslation: General Translation Core SDK: formatMessage URL: https://generaltranslation.com/es/docs/core/functions/formatting/format-message.mdx --- title: formatMessage description: Referencia de la API para la función autónoma formatMessage --- ## Descripción general El método `formatMessage` formatea mensajes con sustitución de variables y formato adaptado a la configuración regional. Basado en la biblioteca [`intl-messageformat`](https://formatjs.github.io/docs/intl-messageformat/) de Format.JS, admite patrones de 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úmeros y fechas, entre otras funciones. ```typescript import { formatMessage } from 'generaltranslation'; const formatted = formatMessage('Hello {name}, you have {count} messages', { locales: ['en'], variables: { name: 'Alice', count: 5 } }); // Devuelve: "Hello Alice, you have 5 messages" ``` *** ## Referencia ### Parámetros ### Objeto de opciones | Propiedad | Tipo | Opcional | Predeterminado | Descripción | | ----------- | -------------------- | -------- | -------------- | --------------------------------------------------------------------------------- | | `locales` | `string \| string[]` | ✓ | `['en']` | Configuración regional o configuraciones regionales que se usarán para el formato | | `variables` | `FormatVariables` | ✓ | `{}` | Objeto que contiene variables para la interpolación | ### Devuelve `cadena` - El mensaje formateado, con las variables sustituidas y el formato específico de la configuración regional aplicado. *** ## Comportamiento ### Gestión de la configuración regional * Usa el parámetro `locales` proporcionado para el formateo * Recurre a `['en']` si no se especifica ninguna configuración regional * Admite cadenas de reserva de configuraciones regionales con arrays ### Procesamiento de variables * Sustitución simple: `{variable}` → se reemplaza por su valor * Formato de mensajes ICU: Compatibilidad total con plurales, selecciones y formato * Variables faltantes: Se dejan sin cambios en la salida ### Compatibilidad con el formato de mensajes Las mismas funciones del formato de mensajes ICU que en el método de clase GT: * Formato de números: `{price, number, currency}` * Formato de fechas: `{date, date, short}` * Pluralización: `{count, plural, ...}` * Selección: `{gender, select, ...}` *** ## Ejemplos ### Uso básico ```typescript import { formatMessage } from 'generaltranslation'; const greeting = formatMessage('Hello {name}!', { locales: ['en'], variables: { name: 'World' } }); console.log(greeting); // "Hello World!" ``` ### Sin una instancia de GT ```typescript // Función utilitaria para formatear sin instanciar la clase 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); // "You have 3 messages" ``` ### Formato de moneda y de números ```typescript // Formato de configuración regional alemana const germanPrice = formatMessage('Preis: {price, number, currency}', { locales: ['de'], variables: { price: 1234.56 } }); console.log(germanPrice); // "Preis: 1.234,56 €" // Formato de porcentaje const progress = formatMessage('Progress: {percent, number, percent}', { locales: ['en'], variables: { percent: 0.85 } }); console.log(progress); // "Progress: 85%" ``` ### Biblioteca de plantillas ```typescript import { formatMessage } from 'generaltranslation'; class MessageTemplates { private locale: string; constructor(locale: string = 'en') { this.locale = locale; } welcome(name: string) { return formatMessage('Welcome back, {name}!', { locales: [this.locale], variables: { name } }); } itemCount(count: number) { return formatMessage( '{count, plural, =0 {No items} =1 {One item} other {# items}}', { locales: [this.locale], variables: { count } } ); } } const templates = new MessageTemplates('fr'); console.log(templates.welcome('Marie')); // "Welcome back, Marie!" (en francés) console.log(templates.itemCount(5)); // "5 éléments" ``` *** ## Notas * Requiere especificar explícitamente la configuración regional en las opciones * Admite las mismas funciones del formato de mensajes ICU que el método de la clase GT * Devuelve una cadena vacía si las plantillas de entrada están vacías * Las variables se procesan antes de aplicar las reglas de formato de ICU ## Próximos pasos * Consulta la documentación de [`Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) para conocer más opciones * Usa la clase GT [`formatMessage`](/docs/core/class/methods/formatting/format-message) para el formateo con estado * Formatea números con [`formatNum`](/docs/core/functions/formatting/format-num) en modo autónomo * Más información sobre el tipo `FormatVariables`