# gt-node: General Translation Node.js SDK: msg
URL: https://generaltranslation.com/ru/docs/node/reference/functions/msg.mdx
Docs index: https://generaltranslation.com/llms.txt
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:<encoded-options>"
```

Сигнатура:

```ts
msg<T extends string | string[]>(message: T): T;
msg<T extends string | string[]>(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).

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
