# Vue: GTPlugin
URL: https://generaltranslation.com/ru/docs/vue/reference/types/gt-plugin.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Императивная установка состояния перевода Vue и управление локалью и кэшем каталога. Справочник API GTPlugin.

[`createGT()`](/docs/vue/reference/functions/create-gt) и [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) возвращают этот плагин Vue. Его состояние и поведение определяются функцией, которая его создала.

## Обзор [#overview]

```ts
type GTPlugin = {
  getLocale(): string;
  install(app: App): void;
  loadTranslations(locale: string): Promise<TranslationCatalog>;
  setLocale(locale: string): Promise<void>;
};
```

| Метод                                            | Описание                                                                            | Тип возвращаемого значения    |
| ------------------------------------------------ | ----------------------------------------------------------------------------------- | ----------------------------- |
| [`getLocale()`](#get-locale)                     | Возвращает локаль, используемую плагином в данный момент.                           | `string`                      |
| [`install(app)`](#install)                       | Предоставляет состояние плагина приложению Vue.                                     | `void`                        |
| [`loadTranslations(locale)`](#load-translations) | Предварительно загружает и кэширует локаль без изменения активной локали.           | `Promise<TranslationCatalog>` |
| [`setLocale(locale)`](#set-locale)               | Изменяет или сохраняет активную локаль в соответствии с режимом выполнения плагина. | `Promise<void>`               |

## `getLocale()` [#get-locale]

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

Для плагина [`createGT()`](/docs/vue/reference/functions/create-gt) в браузере этот метод считывает значение текущей настроенной cookie-файла локали и, если оно недоступно, использует явно заданную локаль плагина или локаль по умолчанию. На сервере он возвращает значение, локальное для экземпляра.

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

## `install(app)` [#install]

**Тип** `(app: App) => void` · **Обязательно**

Предоставляет компонентам, форматтерам и composables состояние перевода через механизм внедрения зависимостей Vue. Вызов `app.use(plugin)` вызывает этот метод.

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

Устанавливайте именно SPA-плагин, возвращённый инициализацией. Создание и установка второго плагина разделяет поиск в компонентах и поиск [`t()`](/docs/vue/reference/functions/t) на уровне модуля. Composable, используемый без установленного плагина, выбрасывает диагностическое исключение.

## `loadTranslations()` [#load-translations]

**Тип** `(locale: string) => Promise<`[`TranslationCatalog`](/docs/vue/reference/types/translation-catalog)`>` · **Обязательно**

Загружает и кэширует целевой каталог, не изменяя активную локаль. Для локали по умолчанию возвращает существующий пустой каталог без вызова настроенного загрузчика.

Успешно загруженные результаты кэшируются для этого плагина, а параллельные вызовы для одной и той же разрешаемой локали используют один и тот же промис. В SPA-плагине перед загрузкой применяются алиасы локалей и резервный вариант для поддерживаемых локалей.

Отклонённый промис загрузчика записывается в журнал и повторно выбрасывается как исключение. Сбой не кэшируется, поэтому последующий вызов может повторить попытку.

## `setLocale()` [#set-locale]

**Тип** `(locale: string) => Promise<void>` · **Обязательно**

Поведение зависит от способа создания плагина:

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

[`useSetLocale()`](/docs/vue/reference/composables/use-set-locale) предоставляет это поведение через установленный плагин.

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

```ts
import { createApp } from 'vue';
import { createGT } from 'gt-vue';
import App from './App.vue';

const gt = createGT({ defaultLocale: 'en', loadTranslations });

await gt.loadTranslations('fr');
createApp(App).use(gt).mount('#app');

await gt.setLocale('fr');
console.log(gt.getLocale()); // "fr"
```

## Sitemap

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