Config

withGTConfig

withGTConfig()(原名 initGT())的 API 参考

概述

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 可以:

  • 配置支持的语言和默认 locale(即 fallback 语言)。
  • 设置 API Keys 和项目 ID 以访问 GT 服务。
  • 配置加载行为。
  • 配置 timeout(超时)设置。
  • 设置自定义端点。
  • 自定义翻译行为、缓存与请求合并。
  • 通过 SWC 插件配置构建时校验。

必须在你的 next.config.js 文件中使用 withGTConfig 才能启用翻译功能。

参考

默认情况下,withGTConfig 会在与你的 next.config.js 文件相同的目录中查找 gt.config.json 文件。

该 JSON 文件会被加载,并与传递给 withGTConfig 的配置合并。

参见 gt.config.json 参考文档,了解该配置文件的更多信息。

CLI 工具只会从 gt.config.json 文件中读取配置,因此 我们建议将 gt.config.json 文件作为你的应用的权威配置来源。

不在 gt.config.json 文件中的其他配置 options 可直接作为 props 传递给 withGTConfig

必填 Props

Prop

Type

推荐的 Props

Prop

Type

Prop描述
defaultLocale应用的默认 locale。未指定时,英语将作为备用语言。
locales应用支持的 locale 的排他性列表。若收到不受支持的请求,将重定向到列表中浏览器的下一个偏好语言;若无任何匹配,则回退到 defaultLocale
description站点的自然语言描述,用于辅助翻译。

高级 Props

Prop

Type

PropDescription
projectId项目 ID,可在此处提供,或通过环境变量提供。
apiKey虽然不推荐,但可以在此处提供 API key;也可以通过环境变量提供。
devApiKey虽然不推荐,但可以在此处提供开发用的 API key;也可以通过环境变量提供。
preferredModelProvider你的首选 AI 模型提供商。目前仅支持 AnthropicOpenAI。留空时,我们将按“逐条翻译”的方式为你选择最合适的提供商。在高峰期或某个提供商被禁用时,无法保证一定使用你的首选提供商。
runtimeUrlGT API 的基础 URL。若要禁用自动翻译,将其设为空字符串。
cacheUrl缓存译文的存储 URL。可自定义为指向自建缓存服务器。
cacheExpiryTime本地缓存译文的过期时间(毫秒)。
renderSettings指定运行时翻译加载行为的对象。
maxConcurrentRequests允许向 GT API 发起的并发翻译请求最大数量。
maxBatchSize发送请求前合并批处理的最大翻译条数。
batchInterval批量翻译请求之间的间隔(毫秒),用于控制请求发送速率。
dictionary字典的可选配置文件路径。与 i18n 类似,接受字符串以指定自定义路径。位于项目根目录或 src 文件夹且命名为 dictionary.js(或 .jsx.ts.tsx 等)的 dictionaries 默认受支持。
dynamicJsxCheckLogLevel控制对翻译组件中未包裹动态内容的校验。设置为 "error" 会使构建失败,设置为 "warn" 显示警告,或设置为 "off" 禁用校验。
dynamicStringCheckLogLevel控制对翻译函数参数的校验,以确保使用字符串字面量。设置为 "error" 会使构建失败,设置为 "warn" 显示警告,或设置为 "off" 禁用校验。

返回值

一个函数 (NextConfig) => NextConfig,用于将指定的 GT 设置应用到 Next.js 配置对象以进行增强。

异常

在缺少 projectId 且使用默认 URL,或需要 API key 但未提供时,将抛出 Error


渲染设置

渲染设置用于控制翻译加载时的表现。 这仅适用于运行时进行的翻译。 如果翻译已被缓存,响应足够快,无需任何加载处理。

Prop

Type

PropDescription
method用于渲染页面的方法。可选值为 skeletonreplacedefault
timeout方法判定为超时前的毫秒数。默认值为 8000 毫秒。

渲染方式

  • skeleton:渲染一个片段(fragment)。
  • replace:等待期间渲染默认语言的内容。
  • default:对于语言相同的 locale(如 en-USen-GB),行为与 replace 相同;对于语言不同的 locale(如 en-USfr),行为与 skeleton 相同。

超时

超时仅适用于运行时翻译,即由于未缓存而需要按需执行的翻译。

默认超时为 8 秒。 此设计是为了方便 Vercel 用户,其免费方案中无服务器函数的默认超时为 10 秒。


示例

渲染设置

此示例将 gt-next 配置为在等待翻译加载时渲染骨架屏。 如果翻译加载超过 8 秒,该方法将超时并渲染默认语言内容。

gt.config.json
{
  "defaultLocale": "en-US",
  "locales": ["en-US", "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 应用中,必须在根配置文件中使用。
  • apiKeyprojectId 等参数可以直接在配置中设置,或通过环境变量提供。
  • renderSettings_batchInterval 等高级参数可对翻译行为和性能进行精细化控制。

下一步

这份指南怎么样?

withGTConfig