# Vue: useGT
URL: https://generaltranslation.com/ru/docs/vue/reference/composables/use-gt.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Получение функции для встроенного перевода строк. Справочник API useGT.

Композиционная функция `useGT` выполняет синхронный поиск в каталоге и возвращает обычную строку. Используйте её для labels, placeholders и других автономных строк внутри компонента Vue.

## Обзор [#overview]

Вызовите `useGT` при настройке компонента, а затем — возвращённую функцию из шаблона или другого реактивного эффекта:

```vue
<script setup lang="ts">
import { useGT } from 'gt-vue';

const gt = useGT();
</script>

<template>
  <input :placeholder="gt('Search products')" />
</template>
```

Вместо этого используйте [`<T>`](/docs/vue/reference/components/t), если текст и вложенная разметка должны составлять единый форматированный перевод. Используйте [`t()`](/docs/vue/reference/functions/t) для строк уровня модуля в SPA, работающем только в браузере.

## Принцип работы [#how-it-works]

* **Синхронный поиск.** Возвращаемая функция хеширует исходную строку и необязательный контекст, а затем считывает загруженный каталог активного плагина.
* **Возврат исходного текста.** При отсутствии записи или неверной структуре каталога возвращается исходная строка.
* **Только простые строки.** Фигурные скобки остаются буквальными символами. Функция не поддерживает синтаксис ICU, переменные интерполяции, `$id`, `$maxChars` и `$format`.
* **Область действия плагина.** Вызывайте композиционную функцию из компонента, находящегося внутри плагина, возвращённого [`createGT()`](/docs/vue/reference/functions/create-gt) или [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa). Вызов без установленного плагина выбрасывает исключение. Плагин [`createGT()`](/docs/vue/reference/functions/create-gt) с областью действия запроса также поддерживает компоненты, отрисовываемые на сервере.

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

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

`useGT` не принимает параметров.

## Возвращает [#returns]

**Тип** `(message: string, options?: GTStringOptions) => string`

Синхронная функция со следующими параметрами:

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

### `message`

**Тип** `string` · **Обязательно**

Статическая исходная строка, зарегистрированная экстрактором и находящаяся во время выполнения.

### `options`

**Тип** [`GTStringOptions`](/docs/vue/reference/types/gt-string-options) · **Необязательный** · **По умолчанию** `{}`

Единственное поддерживаемое поле — `$context?: string`. Оно изменяет идентификатор каталога, поэтому для одинаковых исходных строк могут использоваться разные переводы.

```vue
<button>{{ gt('Open', { $context: 'Verb: open the settings panel' }) }}</button>
```

## Реактивность [#reactivity]

Возвращаемая функция при вызове считывает реактивное состояние каталога и локали. Выражение в шаблоне автоматически выполняется повторно:

```vue
<p>{{ gt('Hello World') }}</p>
```

Для значения, созданного в `setup`, оберните вызов в `computed`:

```ts
import { computed } from 'vue';

const gt = useGT();
const message = computed(() => gt('Hello World'));
```

Однократный вызов создаёт снимок простой строки:

```ts
const gt = useGT();
const message = gt('Hello World');
```

При использовании плагина [`createGT()`](/docs/vue/reference/functions/create-gt) этот снимок не обновляется после завершения начальной загрузки каталога или при смене локали. Браузерное SPA, инициализированное с помощью [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa), выполняет предварительную загрузку до запуска компонентов и перезагружает страницу при смене локали, поэтому снимки, созданные на этапе настройки, повторно создаются для загруженной локали.

## Пример [#example]

```vue title="SearchForm.vue"
<script setup lang="ts">
import { computed } from 'vue';
import { useGT } from 'gt-vue';

const gt = useGT();
const emptyMessage = computed(() =>
  gt('No results', { $context: 'Empty search results' })
);
</script>

<template>
  <form>
    <input :placeholder="gt('Search products')" />
    <p>{{ emptyMessage }}</p>
  </form>
</template>
```

## Sitemap

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