# gt-next: General Translation Next.js SDK: withGTConfig
URL: https://generaltranslation.com/ru/docs/next/api/config/with-gt-config.mdx
---
title: withGTConfig
description: Справочная документация по API withGTConfig(), ранее initGT()
---
## Обзор
`withGTConfig` — основной способ настройки библиотеки `gt-next`.
Он напрямую оборачивает объект `NextConfig`.
```js title="next.config.mjs"
import { withGTConfig } from 'gt-next/config';
const nextConfig = {
// ваш существующий next.config.js
}
export default withGTConfig(nextConfig, {
// Дополнительные параметры конфигурации
});
```
**Устаревшее**
`initGT` — устаревший способ настройки библиотеки `gt-next`. Он возвращает функцию обратного вызова, которую затем вызывают, передавая объект `NextConfig`.
Параметры обеих функций одинаковы, за исключением того, что в `withGTProps` нужно дополнительно передать `NextConfig`.
Используйте `withGTConfig`, чтобы:
* Настроить поддерживаемые языки и локаль по умолчанию (то есть резервный язык).
* Указать ключи API и идентификаторы проектов для доступа к сервисам GT.
* Задать поведение загрузки.
* Настроить параметры тайм-аута.
* Настроить пользовательские эндпоинты.
* Настроить поведение перевода, кэширование и пакетную обработку запросов.
* Настроить проверку на этапе сборки через плагин SWC.
`withGTConfig` необходимо использовать в файле `next.config.js`, чтобы включить поддержку перевода.
## Справка
По умолчанию `withGTConfig` ищет файл `gt.config.json` в той же директории, что и `next.config.js`.
Этот JSON-файл загружается и объединяется с конфигурацией, переданной в `withGTConfig`.
Подробнее о файле конфигурации см. в [справке по gt.config.json](/docs/next/api/config/gt-config-json).
CLI-инструмент читает конфигурацию только из файла `gt.config.json`, поэтому
рекомендуем использовать `gt.config.json` как единый источник истины для приложения.
Дополнительные параметры конфигурации, которых нет в `gt.config.json`, можно передать в `withGTConfig` напрямую через props.
### Обязательные пропсы
### Рекомендуемые пропсы
| Prop | Описание |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `defaultLocale` | Локаль приложения по умолчанию. Если локаль не указана, в качестве резервного языка используется английский. |
| `locales` | Закрытый список поддерживаемых локалей приложения. Если поступает запрос для неподдерживаемой локали, произойдёт перенаправление на следующую локаль из списка, предпочтительную для браузера. Если совпадений не найдено, будет использован `defaultLocale`. |
| `description` | Описание сайта на естественном языке, используемое для улучшения перевода. |
### Расширенные пропсы
| Пропс | Описание |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `projectId` | Идентификатор проекта, который можно указать здесь или через переменную окружения. |
| `apiKey` | Хотя это не рекомендуется, здесь можно указать ключ API. Его также можно передать через переменную окружения. |
| `devApiKey` | Хотя это не рекомендуется, здесь можно указать ключ API для разработки. Его также можно передать через переменную окружения. |
| `preferredModelProvider` | Предпочтительный провайдер модели ИИ. Сейчас поддерживаются только [Anthropic](https://anthropic.com) и [OpenAI](https://openai.com). Оставьте это поле пустым, и мы будем выбирать оптимального провайдера для каждого перевода отдельно. В периоды высокой нагрузки или если провайдер отключён, мы не можем гарантировать использование выбранного вами провайдера. |
| `runtimeUrl` | Базовый URL API GT. Чтобы отключить автоматический перевод, укажите пустую строку. |
| `cacheUrl` | URL, по которому хранятся кэшированные переводы. Его можно настроить так, чтобы он указывал на собственный сервер кэша. |
| `cacheExpiryTime` | Время в миллисекундах до истечения срока действия локально кэшированных переводов. |
| `renderSettings` | Объект, задающий поведение загрузки для переводов во время выполнения. |
| `maxConcurrentRequests` | Максимальное количество одновременных запросов на перевод, разрешённых для API GT. |
| `maxBatchSize` | Максимальное количество переводов, объединяемых в пакет перед отправкой запроса. |
| `batchInterval` | Интервал в миллисекундах между пакетными запросами на перевод. Помогает контролировать частоту отправки запросов. |
| `dictionary` | Необязательный путь к файлу конфигурации словаря. Как и `i18n`, принимает строку для указания пользовательского пути. По умолчанию поддерживаются словари с именем `dictionary.js` (или `.jsx`, `.ts`, `.tsx` и т. д.), размещённые в корне проекта или в папке `src`. |
### Возвращает
Объект `NextConfig`, дополненный указанными настройками GT.
### Исключения
Выбрасывает `Error`, если отсутствует `projectId` и используются URL-адреса по умолчанию, либо если требуется ключ API, но он не указан.
***
## Настройки рендеринга
Настройки рендеринга определяют поведение переводов во время загрузки.
Это относится только к переводам, выполняемым во время выполнения.
Если перевод берётся из кэша, время отклика слишком мало, чтобы применять отдельное поведение загрузки.
| Свойство | Описание |
| --------- | --------------------------------------------------------------------------------------------------- |
| `method` | Метод, используемый для рендеринга страницы. Доступные варианты: `skeleton`, `replace` и `default`. |
| `timeout` | Время в миллисекундах до срабатывания тайм-аута метода. Значение по умолчанию — 8000 мс. |
### Методы рендеринга
* `skeleton`: Отрисовывает фрагмент.
* `replace`: Пока идёт ожидание, отрисовывает содержимое на языке по умолчанию.
* `default`: Для локалей с одним и тем же языком (например, `en-US` и `en-GB`) ведет себя как `replace`. Для локалей с разными языками (например, `en-US` и `fr`) ведет себя как `skeleton`.
### Тайм-аут
Тайм-ауты применяются только к переводам, выполняемым во время выполнения, то есть к переводам, которые нужно запрашивать по требованию, поскольку они не были кэшированы.
По умолчанию тайм-аут составляет 8 секунд.
Это решение принято с учётом пользователей Vercel: в бесплатном плане тайм-аут для serverless-функций по умолчанию составляет 10 секунд.
***
## Примеры
### Настройки рендеринга
В этом примере `gt-next` настроен так, чтобы показывать скелетон, пока загружаются переводы.
Если загрузка перевода занимает больше 8 секунд, сработает тайм-аут, и будет отрендерен контент на языке по умолчанию.
```json title="gt.config.json"
{
"defaultLocale": "en-US",
"locales": ["en-US", "es", "fr"],
}
```
```js title="next.config.mjs" copy
import { withGTConfig } from 'gt-next/config';
const nextConfig = {
// Другие настройки Next.js
};
export default withGTConfig(nextConfig, {
renderSettings: {
method: 'skeleton',
timeout: 10000,
},
});
```
***
## Примечания
* `withGTConfig` добавляет в ваше приложение Next.js возможности перевода GT и должен использоваться в корневом файле конфигурации.
* Такие параметры, как `apiKey` и `projectId`, можно задать прямо в конфигурации или через переменные окружения.
* Расширенные параметры, такие как `renderSettings` и `_batchInterval`, позволяют тонко настраивать поведение перевода и производительность.
## Следующие шаги
* Добавьте [перевод в свой процесс CD](/docs/next/tutorials/quickdeploy).