# 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)