withGTConfig
Справочник API по withGTConfig() (ранее initGT())
Обзор
withGTConfig — основной способ конфигурации библиотеки gt-next.
Он напрямую оборачивает объект NextConfig.
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
| Prop | Description |
|---|---|
defaultLocale | Локаль приложения по умолчанию. Если ничего не указано, будет использован английский как язык-подстраховка. |
locales | Жёсткий список поддерживаемых локалей приложения. Если получена неподдерживаемая локаль, запрос будет перенаправлен на следующую предпочитаемую пользователем локаль в браузере из списка. Если совпадений нет, будет использовано значение defaultLocale. |
description | Описание сайта на естественном языке, используемое для улучшения перевода. |
Расширенные пропсы
Prop
Type
| Prop | Description |
|---|---|
projectId | ID проекта; можно указать здесь или через переменную окружения. |
apiKey | Хотя это не рекомендуется, здесь можно указать API‑ключ. Его также можно передать через переменную окружения. |
devApiKey | Хотя это не рекомендуется, здесь можно указать ключ для разработки. Его также можно передать через переменную окружения. |
preferredModelProvider | Предпочитаемый провайдер моделей ИИ. Сейчас доступны только Anthropic и OpenAI. Оставьте пустым — мы подберём оптимального провайдера для каждого перевода. В периоды высокой нагрузки или при недоступности провайдера мы не гарантируем использование выбранного провайдера. |
runtimeUrl | Базовый URL для GT API. Чтобы отключить автоматический перевод, укажите пустую строку. |
cacheUrl | URL, где хранятся кэшированные переводы. Можно настроить на собственный сервер кэша. |
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
| Prop | Description |
|---|---|
method | Метод, используемый для рендеринга страницы. Доступные варианты: skeleton, replace и default. |
timeout | Время в миллисекундах до истечения времени ожидания метода. По умолчанию — 8000 мс. |
Методы рендеринга
skeleton: Отображает фрагмент.replace: Отображает контент на языке по умолчанию во время ожидания.default: Для локалей с одним языком (например,en-USиen-GB) работает какreplace. Для локалей с разными языками (например,en-USиfr) работает какskeleton.
Тайм-аут
Тайм-ауты применяются только к переводу на этапе выполнения — то есть к переводам, которые выполняются по запросу, потому что они не были закэшированы.
По умолчанию тайм-аут составляет 8 секунд. Это решение призвано упростить работу пользователям Vercel, у которых на бесплатном плане действует стандартный тайм-аут 10 секунд для бессерверных функций.
Примеры
Параметры рендеринга
В этом примере gt-next настроен на отображение скелетона, пока загружаются переводы.
Если загрузка переводов занимает более 8 секунд, метод завершится по тайм‑ауту и отрендерит содержимое на языке по умолчанию.
{
"defaultLocale": "ru-RU",
"locales": ["ru-RU", "es", "fr"],
}import { withGTConfig } from 'gt-next/config';
const nextConfig = {
// Остальные настройки Next.js
};
export default withGTConfig(nextConfig, {
renderSettings: {
method: 'skeleton',
timeout: 10000,
},
});Проверка на этапе сборки
В этом примере плагин SWC настраивается так, чтобы нарушения динамического контента считались ошибками сборки, а не предупреждениями.
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, позволяют тонко управлять поведением переводов и производительностью.
Дальнейшие шаги
Насколько полезно это руководство?