# Vue: msg
URL: https://generaltranslation.com/ru/docs/vue/reference/functions/msg.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Регистрирует статические строки на уровне модуля для последующего разрешения. Справочник API для msg.

`msg` помечает исходные строки для извлечения, не обращаясь к состоянию локали и не переводя их. Разрешайте зарегистрированные значения внутри компонента с помощью [`useMessages()`](/docs/vue/reference/composables/use-messages).

## Обзор [#overview]

```ts
function msg<T extends string | readonly string[]>(message: T): T;
function msg<T extends string | readonly string[]>(
  message: T,
  options?: GTStringOptions
): T extends string ? string : string[];
```

Объявляйте зарегистрированные строки на уровне модуля:

```ts title="src/messages.ts"
import { msg } from 'gt-vue';

export const saved = msg('Your preferences are saved.', {
  $context: 'status message',
});
```

Этот вызов безопасно использовать в клиентских и серверных модулях, поскольку он не использует плагин или глобальную среду выполнения браузера.

## Параметры [#parameters]

| Параметр  | Описание                                                                                        | Тип                                                              | Необязательный | По умолчанию |
| --------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -------------- | ------------ |
| `message` | Статическая исходная строка или массив статических исходных строк, доступный только для чтения. | `string \| readonly string[]`                                    | Нет            | —            |
| `options` | Контекст, закодированный в каждой исходной строке.                                              | [`GTStringOptions`](/docs/vue/reference/types/gt-string-options) | Да             | Нет          |

`$context` — единственный поддерживаемый параметр. Каждый вызов и каждый элемент массива должны быть статически определяемы CLI.

## Как это работает [#how-it-works]

Без `options` `msg` возвращает исходную строку или массив без изменений. Экстрактор всё равно регистрирует статический вызов, а [`useMessages()`](/docs/vue/reference/composables/use-messages) может разрешить возвращённую исходную строку.

При передаче объекта параметров `msg` вычисляет обычный хеш `STRING` и добавляет непрозрачные метаданные с исходным текстом и `$context`. [`useMessages()`](/docs/vue/reference/composables/use-messages) декодирует эти метаданные и отдаёт им приоритет над параметрами, переданными в месте разрешения.

Для массива с параметрами каждый элемент кодируется независимо, и возвращается новый `string[]`. `msg` не выполняет поиск по каталогу, интерполяцию или обработку ICU. Фигурные скобки остаются обычным текстом.

## Возвращаемое значение [#returns]

| Входные данные        | Тип возвращаемого значения    | Поведение                                                          |
| --------------------- | ----------------------------- | ------------------------------------------------------------------ |
| Строка без параметров | Выведенный тип входных данных | Возвращает ту же исходную строку.                                  |
| Массив без параметров | Выведенный тип входных данных | Возвращает тот же массив, доступный только для чтения.             |
| Строка с параметрами  | `string`                      | Возвращает исходную строку с непрозрачными метаданными для поиска. |
| Массив с параметрами  | `string[]`                    | Возвращает новый массив закодированных строк.                      |

Не отображайте закодированное значение напрямую. Передайте его функции [`MessagesFunction`](/docs/vue/reference/types/messages-function), возвращаемой [`useMessages()`](/docs/vue/reference/composables/use-messages).

## Примеры [#examples]

Выведите зарегистрированное сообщение в шаблоне Vue:

```vue title="src/StatusMessage.vue"
<script setup lang="ts">
import { msg, useMessages } from 'gt-vue';

const saved = msg('Your preferences are saved.', {
  $context: 'status message',
});
const m = useMessages();
</script>

<template>
  <p>{{ m(saved) }}</p>
</template>
```

Зарегистрируйте несколько независимых сообщений одновременно:

```ts
const labels = msg(['Save', 'Cancel', 'Delete'] as const);
```

Интерполяция не применяется ни в одном из этих случаев. Для значений времени выполнения в форматированном содержимом используйте [`<T>`](/docs/vue/reference/components/t) и [`<Var>`](/docs/vue/reference/components/var).

## Sitemap

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