# gt-node: General Translation Node.js SDK: msg URL: https://generaltranslation.com/ru/docs/node/reference/functions/msg.mdx --- title: msg description: Пометьте и закодируйте строку на уровне модуля для перевода с помощью General Translation. Справочник по API для msg. --- Регистрирует строку (или массив строк) для перевода. Используйте `msg` вместе с [`getMessages`](/docs/node/reference/functions/get-messages), чтобы регистрировать строки — обычно на уровне модуля — и получать их переводы во время выполнения. ## Обзор [#overview] Вызовите `msg` со строкой. Если не передавать параметры, `msg` вернёт строку без изменений. Если передать параметры (переменные интерполяции или метаданные), `msg` вернёт закодированную строку с этими параметрами. Передайте результат в [`getMessages`](/docs/node/reference/functions/get-messages), чтобы получить перевод. ```ts const registered = msg('Hello, world!'); console.log(registered); // "Hello, world!" (без изменений) const withVars = msg('Hello, {name}!', { name: 'Brian' }); console.log(withVars); // "Hello, Brian:" ``` Сигнатура: ```ts msg(message: T): T; msg(message: T, options?: GTTranslationOptions): T extends string ? string : string[]; ``` *Примечание: `msg` возвращает сообщение без изменений, если вызвать его без параметров. Только при передаче параметров он возвращает закодированную строку. Чтобы восстановить исходный текст из закодированной строки, декодируйте её с помощью [`decodeMsg`](/docs/node/reference/functions/decode-msg).* ## Как это работает [#how-it-works] * **Регистрация.** `msg` помечает содержимое, чтобы [`gt` CLI](/docs/cli/quickstart) мог обнаружить и перевести его. Сам перевод подставляется позже с помощью [`getMessages`](/docs/node/reference/functions/get-messages). * **Продакшен.** Содержимое внутри вызова `msg` переводится до развертывания. Переводы хранятся в CDN или в результатах сборки вашего приложения, в зависимости от конфигурации, и отдаются оттуда. Если перевод не найден, используется исходное содержимое. * **Разработка.** При наличии `projectId` и `devApiKey` содержимое `msg` переводится по запросу, что удобно для предпросмотра на разных языках. Учтите, что здесь возможна задержка, которой нет в продакшен-сборках. * **Кодирование.** Когда передаются параметры, возвращаемое значение имеет вид `interpolatedContent:encodedOptions` — интерполированное содержимое, двоеточие и параметры, закодированные в base64. Обработайте его с помощью [`getMessages`](/docs/node/reference/functions/get-messages) или декодируйте с помощью [`decodeMsg`](/docs/node/reference/functions/decode-msg). * **Массивы.** При передаче `string[]` регистрируется каждый элемент. При использовании `$id` каждый элемент получает уникальный id вида `${$id}.${index}`. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательно | По умолчанию | | --------------------- | ------------------------------------------------- | ---------------------- | ------------- | ------------ | | [`message`](#message) | Строка или массив строк для регистрации. | `string \| string[]` | Нет | — | | [`options`](#options) | Параметры перевода и переменные для интерполяции. | `GTTranslationOptions` | Да | — | ### `message` [#message] **Тип** `string | string[]` · **Обязательно** Строковое значение, которое нужно зарегистрировать для перевода, или массив строк, чтобы зарегистрировать сразу несколько значений. ### `options` [#options] **Тип** `GTTranslationOptions` · **Необязательно** Параметры перевода и переменные для интерполяции: * `$context?: string` — дополнительный контекст, помогающий снять неоднозначность перевода. * `$id?: string` — пользовательский id для записи перевода (массивы создают `${$id}.${index}`). * `$format?: string` — формат сообщения. По умолчанию — `'ICU'`. * `$maxChars?: number` — максимальное количество символов в переводе. * `$requiresReview?: boolean` — требуется ли утверждение перевода перед использованием. * Любые другие ключи рассматриваются как значения для интерполяции в строку с использованием синтаксиса `{key}`. ## Возвращает [#returns] **Тип** `string | string[]` Если параметры не переданы, сообщение возвращается без изменений; если параметры переданы — возвращается закодированная строка (с интерполированными переменными). Для массивов возвращается массив той же структуры. ## Декодирование [#decoding] Чтобы восстановить исходную интерполированную строку из закодированного сообщения, декодируйте его с помощью [`decodeMsg`](/docs/node/reference/functions/decode-msg). ```ts import { msg, decodeMsg } from 'gt-node'; const encoded = msg('Hello, {name}!', { name: 'Brian' }); const decoded = decodeMsg(encoded); console.log(decoded); // "Hello, Brian" ``` ## Примеры [#examples] ```ts // Базовое использование — пометить строку для перевода import { msg, getMessages } from 'gt-node'; const greeting = msg('Hello, world!'); const m = await getMessages(); const translated = m(greeting); console.log(translated); // "Hello, world!" (переведено на предпочтительный язык пользователя) ``` ```ts // Использование переменных — "Alice" является переменной и не переводится import { msg, getMessages } from 'gt-node'; const greeting = msg('Hello, {name}!', { name: 'Alice' }); const m = await getMessages(); const translated = m(greeting); console.log(translated); // "Hello, Alice!" (переведено) ``` ```ts // Использование формата формат сообщений ICU для форматирования переменных import { msg, getMessages } from 'gt-node'; const encodedString = msg( 'There are {count, plural, =0 {no items} =1 {one item} other {{count} items}} in the cart', { count: 10 } ); const m = await getMessages(); const translated = m(encodedString); console.log(translated); ``` *Примечание: [формат сообщений ICU](https://unicode-org.github.io/icu/userguide/format_parse/messages/) — это мощный способ форматирования значений переменных.* ## Заметки [#notes] * `msg` помечает строки для перевода; перевод выполняется на этапе сборки, до выполнения приложения (кроме режима разработки). * Без параметров `msg` возвращает входное значение без изменений; с параметрами возвращает закодированную строку. * Обрабатывайте закодированные строки с помощью [`getMessages`](/docs/node/reference/functions/get-messages) или восстанавливайте исходный текст с помощью [`decodeMsg`](/docs/node/reference/functions/decode-msg).