# vue: Настройка gt-vue URL: https://generaltranslation.com/ru/docs/vue/guides/configuring.mdx --- title: Настройка gt-vue description: Как создать плагин перевода для Vue, загружать каталоги и настраивать рендеринг в браузере или на сервере. related: links: - /docs/vue/guides/translating-content - /docs/vue/guides/translating-strings - /docs/vue/guides/managing-locales - /docs/vue/guides/storing-translations --- Создайте отдельный плагин для каждого изолированного приложения Vue. Плагин хранит активную локаль, загруженные каталоги и реактивное состояние перевода. Используйте [`createGT()`](/docs/vue/reference/functions/create-gt) для обычных приложений Vue, включая приложения, которые переключают локали без перезагрузки, и приложения с серверным рендерингом. Для SPA, работающих только в браузере и требующих [`t()`](/docs/vue/reference/functions/t) на уровне модуля, предусмотрен другой порядок запуска, описанный в разделе [Разработка с переводом для SPA](/docs/vue/guides/developing-spa-translations). ## Создайте плагин [#create] Передайте исходную локаль и функцию обратного вызова [`loadTranslations`](/docs/vue/reference/types/load-translations) в [`createGT()`](/docs/vue/reference/functions/create-gt), затем установите возвращённый плагин с помощью `app.use()`: ```ts title="src/main.ts" import { createApp } from 'vue'; import { createGT } from 'gt-vue'; import App from './App.vue'; import gtConfig from '../gt.config.json'; import loadTranslations from './loadTranslations'; const gt = createGT({ defaultLocale: gtConfig.defaultLocale, loadTranslations, }); createApp(App).use(gt).mount('#app'); ``` Установите этот плагин один раз. При создании другого экземпляра у него будут отдельные кэши локали и каталога. ## Определение начальной локали [#initial-locale] [`createGT()`](/docs/vue/reference/functions/create-gt) определяет начальную локаль в следующем порядке: 1. Явно указанная опция `locale`. 2. Значение настроенного cookie-файла локали в браузере. 3. `defaultLocale`. Явно указанная локаль имеет приоритет при серверном рендеринге и гидратации. В браузере она заменяет устаревший cookie-файл, чтобы клиент запускался с той же локалью, что и сервер. ```ts const gt = createGT({ defaultLocale: 'en', locale: serverLocale, localeCookieName: 'my-app.locale', loadTranslations, }); ``` Имя cookie-файла по умолчанию — `generaltranslation.locale`. Изменяйте `localeCookieName`, только если маршрутизатору или серверу требуется совместно использовать другой cookie-файл. ## Загрузка каталогов переводов [#load] Для локали по умолчанию используется исходный контент, поэтому её загрузчик никогда не вызывается. Остальные локали загружаются через [`loadTranslations`](/docs/vue/reference/types/load-translations): ```ts title="src/loadTranslations.ts" import type { LoadTranslations } from 'gt-vue'; const loadTranslations: LoadTranslations = async (locale) => { try { return (await import(`./_gt/${locale}.json`)).default; } catch { return {}; } }; export default loadTranslations; ``` Успешно загруженные каталоги кэшируются на всё время работы плагина, а одновременные запросы для одной локали используют одну и ту же загрузку. На стороне клиента приложение может монтироваться с исходным контентом, пока загружается первый каталог; переведённые компоненты перерендериваются после его загрузки. При возврате пустого объекта в качестве резервного используется исходный контент. Если callback завершается с ошибкой, смена локали также завершается с ошибкой, а текущая локаль остаётся активной. ## Синхронизируйте конфигурацию CLI и среды выполнения [#shared-config] Используйте `gt.config.json` как единый источник данных об исходной локали, целевых локалях и расположении сгенерированного файла: ```json title="gt.config.json" { "defaultLocale": "en", "locales": ["es", "fr"], "files": { "gt": { "output": "src/_gt/[locale].json" } } } ``` CLI читает этот файл напрямую. [`createGT()`](/docs/vue/reference/functions/create-gt) принимает собственные параметры Runtime, поэтому явно передайте `defaultLocale` и свой загрузчик. Список `locales` по-прежнему полезен для переключателя языка и CLI, но реактивный плагин не отклоняет другие коды локалей; доступные локали определяются вашим UI и загрузчиком. Учётные данные Production API должны находиться в процессе CLI, который генерирует переводы. Не раскрывайте `GT_API_KEY` в коде браузера. ## Настройка серверного рендеринга [#ssr] Создавайте отдельный плагин для каждого запроса, чтобы состояние локали и каталога не смешивалось между пользователями. Определите локаль запроса, явно передайте её и предварительно загрузите соответствующий каталог перед рендерингом: ```ts title="src/gt-server.ts" import { createGT } from 'gt-vue'; import loadTranslations from './loadTranslations'; export async function createRequestGT(locale: string) { const gt = createGT({ defaultLocale: 'en', locale, loadTranslations, }); await gt.loadTranslations(locale); return gt; } ``` Установите возвращённый плагин в Vue-приложение запроса. Перед гидратацией в браузере создайте и предварительно загрузите клиентский плагин с той же явно указанной локалью. Если начать гидратацию до готовности целевого каталога, может кратковременно отобразиться исходный контент и возникнуть несоответствие. ## Next steps - /docs/vue/guides/translating-content - /docs/vue/guides/translating-strings - /docs/vue/guides/managing-locales - /docs/vue/guides/storing-translations