# Vue: useSetLocale
URL: https://generaltranslation.com/ru/docs/vue/reference/composables/use-set-locale.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Изменяет активную локаль. Справочник API для useSetLocale.

Композабл `useSetLocale` возвращает асинхронный сеттер установленного плагина для установки локали. Её поведение при загрузке и навигации зависит от способа создания плагина.

## Обзор [#overview]

Вызовите возвращаемую функцию, указав целевую локаль:

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

const setLocale = useSetLocale();
</script>

<template>
  <button @click="setLocale('fr')">Français</button>
</template>
```

Используйте [`useLocale()`](/docs/vue/reference/composables/use-locale), чтобы получить активную локаль.

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

### Реактивные плагины

Для плагина [`createGT()`](/docs/vue/reference/functions/create-gt) сеттер:

1. Загружает целевой каталог, не используя кэш, через настроенный загрузчик.
2. После успешной загрузки сохраняет целевую локаль в настроенный cookie-файл.
3. Обновляет реактивные компоненты без перезагрузки страницы.

Успешно загруженные каталоги остаются в кэше. Параллельные запросы могут завершаться в любом порядке, но активную локаль изменяет только самый последний запрос. Если загрузка его каталога завершается ошибкой, промис отклоняется, а текущая локаль и cookie-файл остаются без изменений.

### Плагины SPA для браузера

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

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

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

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

**Тип** `(locale: string) => Promise<void>`

Асинхронный сеттер со следующим параметром:

| Параметр            | Описание            | Тип      | Необязательный | По умолчанию |
| ------------------- | ------------------- | -------- | -------------- | ------------ |
| [`locale`](#locale) | Код целевой локали. | `string` | Нет            | —            |

### `locale`

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

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

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

Дождитесь реактивного обновления, если последующий код зависит от новой локали:

```vue title="LocaleSelect.vue"
<script setup lang="ts">
import { useLocale, useSetLocale } from 'gt-vue';

const locale = useLocale();
const setLocale = useSetLocale();

async function changeLocale(event: Event) {
  const target = event.target as HTMLSelectElement;
  await setLocale(target.value);
}
</script>

<template>
  <select :value="locale" @change="changeLocale">
    <option value="en">English</option>
    <option value="fr">Français</option>
    <option value="ja">日本語</option>
  </select>
</template>
```

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

## Sitemap

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