Config

withGTConfig

Справочник API по withGTConfig() (ранее initGT())

Обзор

withGTConfig — основной способ конфигурации библиотеки gt-next. Он напрямую оборачивает объект NextConfig.

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, чтобы:

  • Настроить поддерживаемые языки и локаль по умолчанию (fallback‑язык).
  • Указать API‑ключи и идентификаторы проектов для доступа к сервисам GT.
  • Задать поведение загрузки.
  • Настроить параметры тайм‑аута.
  • Настроить пользовательские endpoints.
  • Настроить поведение перевода, кэширование и пакетирование запросов.
  • Включить проверку на этапе сборки через плагин SWC.

withGTConfig нужно использовать в файле next.config.js, чтобы включить функциональность перевода.

Справочник

По умолчанию withGTConfig ищет файл gt.config.json в том же каталоге, что и ваш next.config.js.

Этот JSON‑файл будет загружен и объединён с конфигурацией, переданной в withGTConfig.

См. раздел справки gt.config.json для получения дополнительной информации о файле конфигурации.

CLI‑инструмент считывает конфигурацию только из файла gt.config.json, поэтому мы рекомендуем использовать gt.config.json как единственный источник истины для вашего приложения.

Дополнительные параметры конфигурации, отсутствующие в gt.config.json, можно передать в withGTConfig напрямую как пропсы.

Обязательные параметры

Prop

Type

Рекомендуемые пропсы

Prop

Type

PropDescription
defaultLocaleЛокаль приложения по умолчанию. Если ничего не указано, будет использован английский как язык-подстраховка.
localesЖёсткий список поддерживаемых локалей приложения. Если получена неподдерживаемая локаль, запрос будет перенаправлен на следующую предпочитаемую пользователем локаль в браузере из списка. Если совпадений нет, будет использовано значение defaultLocale.
descriptionОписание сайта на естественном языке, используемое для улучшения перевода.

Расширенные пропсы

Prop

Type

PropDescription
projectIdID проекта; можно указать здесь или через переменную окружения.
apiKeyХотя это не рекомендуется, здесь можно указать API‑ключ. Его также можно передать через переменную окружения.
devApiKeyХотя это не рекомендуется, здесь можно указать ключ для разработки. Его также можно передать через переменную окружения.
preferredModelProviderПредпочитаемый провайдер моделей ИИ. Сейчас доступны только Anthropic и OpenAI. Оставьте пустым — мы подберём оптимального провайдера для каждого перевода. В периоды высокой нагрузки или при недоступности провайдера мы не гарантируем использование выбранного провайдера.
runtimeUrlБазовый URL для GT API. Чтобы отключить автоматический перевод, укажите пустую строку.
cacheUrlURL, где хранятся кэшированные переводы. Можно настроить на собственный сервер кэша.
cacheExpiryTimeВремя в миллисекундах до истечения срока действия локального кэша переводов.
renderSettingsОбъект, задающий поведение загрузки для переводов во время выполнения.
maxConcurrentRequestsМаксимальное число одновременных запросов перевода к GT API.
maxBatchSizeМаксимальное число переводов, объединяемых в пакет перед отправкой запроса.
batchIntervalИнтервал в миллисекундах между пакетными запросами перевода. Помогает контролировать скорость отправки.
dictionaryНеобязательный путь к конфигурационному файлу словаря. Аналогично i18n, принимает строку с пользовательским путём. Словари с именем dictionary.js (или .jsx, .ts, .tsx и т. п.), размещённые в корне или в папке src, поддерживаются по умолчанию.
dynamicJsxCheckLogLevelУправляет проверкой не обёрнутого динамического контента в компонентах перевода. Установите "error" — сборка будет падать, "warn" — выводить предупреждения, или "off" — отключить проверку.
dynamicStringCheckLogLevelУправляет проверкой аргументов функций перевода на использование строковых литералов. Установите "error" — сборка будет падать, "warn" — выводить предупреждения, или "off" — отключить проверку.

Возвращает

Функцию (NextConfig) => NextConfig, которая расширяет объект конфигурации Next.js заданными настройками GT.

Исключения

Генерирует Error, если отсутствует projectId и используются URL по умолчанию, либо если необходим, но отсутствует API‑ключ.


Параметры рендеринга

Параметры рендеринга определяют поведение переводов во время их загрузки. Это относится только к переводам, выполняемым на этапе выполнения (runtime). Если перевод закэширован, время отклика слишком мало, чтобы иметь заметное поведение загрузки.

Prop

Type

PropDescription
methodМетод, используемый для рендеринга страницы. Доступные варианты: skeleton, replace и default.
timeoutВремя в миллисекундах до истечения времени ожидания метода. По умолчанию — 8000 мс.

Методы рендеринга

  • skeleton: Отображает фрагмент.
  • replace: Отображает контент на языке по умолчанию во время ожидания.
  • default: Для локалей с одним языком (например, en-US и en-GB) работает как replace. Для локалей с разными языками (например, en-US и fr) работает как skeleton.

Тайм-аут

Тайм-ауты применяются только к переводу на этапе выполнения — то есть к переводам, которые выполняются по запросу, потому что они не были закэшированы.

По умолчанию тайм-аут составляет 8 секунд. Это решение призвано упростить работу пользователям Vercel, у которых на бесплатном плане действует стандартный тайм-аут 10 секунд для бессерверных функций.


Примеры

Параметры рендеринга

В этом примере gt-next настроен на отображение скелетона, пока загружаются переводы. Если загрузка переводов занимает более 8 секунд, метод завершится по тайм‑ауту и отрендерит содержимое на языке по умолчанию.

gt.config.json
{
  "defaultLocale": "ru-RU",
  "locales": ["ru-RU", "es", "fr"],
}
next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Остальные настройки Next.js
};

export default withGTConfig(nextConfig, {
  renderSettings: {
    method: 'skeleton',
    timeout: 10000,
  },
});

Проверка на этапе сборки

В этом примере плагин SWC настраивается так, чтобы нарушения динамического контента считались ошибками сборки, а не предупреждениями.

next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Остальные настройки Next.js
};

export default withGTConfig(nextConfig, {
  // Прерывать сборку при нарушениях в динамическом JSX
  dynamicJsxCheckLogLevel: 'error',
  // Предупреждать о нарушениях в динамических строках  
  dynamicStringCheckLogLevel: 'warn',
});

Примечания

  • withGTConfig встраивает функциональность переводов GT в ваше приложение Next.js и должен использоваться в корневом файле конфигурации.
  • Параметры, такие как apiKey и projectId, можно задать напрямую в конфигурации или через переменные окружения.
  • Расширенные параметры, такие как renderSettings и _batchInterval, позволяют тонко управлять поведением переводов и производительностью.

Дальнейшие шаги

Насколько полезно это руководство?

withGTConfig