# generaltranslation: General Translation Core SDK: formatMessage URL: https://generaltranslation.com/ru/docs/core/class/methods/formatting/format-message.mdx --- title: formatMessage description: Справка по API для метода GT formatMessage --- ## Обзор Метод `formatMessage` форматирует сообщения, подставляя переменные и применяя форматирование с учетом локали. Построенный на основе библиотеки [`intl-messageformat`](https://formatjs.github.io/docs/intl-messageformat/) от Format.JS, он поддерживает шаблоны в формате сообщений ICU. Этот метод необходим для подстановки переменных и плюрализации. Он также поддерживает форматирование чисел и дат, а также другие возможности. ```typescript const gt = new GT({ sourceLocale: 'en', targetLocale: 'fr' }); const formatted = gt.formatMessage('Hello {name}, you have {count} messages', { variables: { name: 'Alice', count: 5 } }); // Возвращает: "Hello Alice, you have 5 messages" ``` *** ## Справка ### Параметры ### Объект параметров | Свойство | Тип | Необязательный | Описание | | ------------ | -------------------- | -------------- | --------------------------------------------------------------------------------------- | | `locales` | `string \| string[]` | ✓ | Локаль или локали для форматирования (переопределяют настройки экземпляра по умолчанию) | | `variables` | `FormatVariables` | ✓ | Объект с переменными для интерполяции в сообщение | | `dataFormat` | `StringFormat` | ✓ | Формат данных строки сообщения (например, `'ICU'`, `'I18NEXT'`, `'STRING'`) | ### Тип FormatVariables ```typescript type FormatVariables = Record; ``` ### Возвращает `string` — Отформатированное сообщение с подставленными переменными и форматированием, применённым с учётом локали. *** ## Поведение ### Подстановка переменных * Простые переменные: `{variableName}` → заменяются значением строки * Шаблоны ICU: `{count, plural, ...}` → обрабатываются по правилам форматирования ICU * Отсутствующие переменные: приводят к ошибке * Двойные фигурные скобки: экранируют фигурные скобки и отображаются как одна фигурная скобка ### Поддерживаемые форматы сообщений * **Простая интерполяция**: `{variable}` * **Форматирование чисел**: `{price, number, ::currency/USD}`, `{discount, number, percent}`, `{num, number, integer}` * **Форматирование даты**: `{date, date, short}`, `{time, time, short}` * **Плюрализация**: `{count, plural, =0 {none} =1 {one} other {many}}` * **Выбор значения**: `{gender, select, male {he} female {she} other {they}}` * **Порядковые числительные**: `{place, selectordinal, =1 {#st} =2 {#nd} =3 {#rd} other {#th}}` *** ## Примеры ### Простая подстановка переменных ```typescript const gt = new GT({ targetLocale: 'en' }); const message = gt.formatMessage('Welcome {name}!', { variables: { name: 'John' } }); console.log(message); // "Welcome John!" ``` ### Плюрализация в формате 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); // "You have 3 items in your cart" ``` ### Форматирование чисел и валюты ```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); // "Ваш итог: $99.99 со скидкой 15%" ``` ### Сложные шаблоны сообщений ```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') } }); ``` *** ## Примечания * Метод обрабатывает синтаксис формата сообщений ICU для расширенного форматирования с помощью [`Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/) из Format.JS. * Отсутствующие переменные вызовут ошибку. * Форматирование чисел, дат и валют в зависимости от локали применяется автоматически ## Что дальше * Ознакомьтесь с [документацией `Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/), чтобы узнать о дополнительных возможностях * Форматируйте числа с помощью [formatNum](/docs/core/class/methods/formatting/format-num)