# generaltranslation: General Translation Core SDK: formatMessage URL: https://generaltranslation.com/ru/docs/core/functions/formatting/format-message.mdx --- title: formatMessage description: Справка по API для автономной функции formatMessage --- ## Обзор Метод `formatMessage` форматирует сообщения с подстановкой переменных и с учетом локали. Построенный на базе библиотеки [`intl-messageformat`](https://formatjs.github.io/docs/intl-messageformat/) от Format.JS, он поддерживает шаблоны сообщений в формате ICU. Этот метод необходим для интерполяции переменных и плюрализации. Он также поддерживает форматирование чисел, дат и другие возможности. ```typescript import { formatMessage } from 'generaltranslation'; const formatted = formatMessage('Hello {name}, you have {count} messages', { locales: ['en'], variables: { name: 'Alice', count: 5 } }); // Возвращает: "Hello Alice, you have 5 messages" ``` *** ## Справочник ### Параметры ### Объект опций | Свойство | Тип | Необязательно | По умолчанию | Описание | | ----------- | -------------------- | ------------- | ------------ | -------------------------------------------------- | | `locales` | `string \| string[]` | ✓ | `['en']` | Локаль или локали, используемые для форматирования | | `variables` | `FormatVariables` | ✓ | `{}` | Объект с переменными для интерполяции | ### Возвращает `string` — отформатированное сообщение с подставленными переменными и форматированием в соответствии с локалью. *** ## Поведение ### Обработка локалей * Использует переданный параметр `locales` для форматирования * Если локали не указаны, использует `['en']` * Поддерживает цепочки резервных локалей в массивах ### Обработка переменных * Простая подстановка: `{variable}` → заменяется значением * Формат сообщений ICU: полная поддержка множественного числа, `select` и форматирования * Отсутствующие переменные: остаются без изменений в выводе ### Поддержка формата сообщений Поддерживаются те же возможности формата сообщений ICU, что и у метода класса GT: * Форматирование чисел: `{price, number, currency}` * Форматирование дат: `{date, date, short}` * Множественное число: `{count, plural, ...}` * Выбор варианта: `{gender, select, ...}` *** ## Примеры ### Основное использование ```typescript import { formatMessage } from 'generaltranslation'; const greeting = formatMessage('Hello {name}!', { locales: ['en'], variables: { name: 'World' } }); console.log(greeting); // "Hello World!" ``` ### Без экземпляра GT ```typescript // Вспомогательная функция для форматирования без создания экземпляра класса 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" ``` ### Форматирование валют и чисел ```typescript // Форматирование для немецкой локали const germanPrice = formatMessage('Preis: {price, number, currency}', { locales: ['de'], variables: { price: 1234.56 } }); console.log(germanPrice); // "Preis: 1.234,56 €" // Форматирование процентов const progress = formatMessage('Progress: {percent, number, percent}', { locales: ['en'], variables: { percent: 0.85 } }); console.log(progress); // "Progress: 85%" ``` ### Библиотека шаблонов ```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!" (на французском) console.log(templates.itemCount(5)); // "5 éléments" ``` *** ## Примечания * Требует явного указания локали в параметрах * Поддерживает те же возможности формата сообщений ICU, что и метод класса GT * Возвращает пустую строку для пустых входных шаблонов * Переменные обрабатываются до применения правил форматирования ICU ## Следующие шаги * Ознакомьтесь с [документацией `Intl.MessageFormat`](https://formatjs.github.io/docs/intl-messageformat/), чтобы узнать о дополнительных возможностях * Используйте класс GT [`formatMessage`](/docs/core/class/methods/formatting/format-message) для форматирования с сохранением состояния * Форматируйте числа с помощью автономной функции [`formatNum`](/docs/core/functions/formatting/format-num) * Узнайте о типе `FormatVariables`