Config

withGTConfig()

withGTConfig() 的 API 参考,前身为 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() 可以:

  • 配置支持的语言和默认语言环境(即回退语言)。
  • 设置用于访问 GT 服务的 API 密钥和项目 ID。
  • 设置加载行为。
  • 配置超时设置。
  • 设置自定义端点。
  • 自定义翻译行为、缓存和请求批处理。
  • 通过 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 文件中的其他配置选项可以直接作为 props 传递给 withGTConfig()

必需 Props

PropTypeDefault
nextConfig?
NextConfig
-

推荐 Props

PropTypeDefault
description??
string
undefined
locales??
string[]
undefined
defaultLocale??
string
locales[0] || 'en'
Prop描述
defaultLocale应用程序的默认语言区域。当未指定语言区域时,英语将作为后备语言。
locales应用程序支持的语言区域的排他性列表。如果收到不支持的请求,将重新路由到列表中浏览器的下一个首选语言。如果找不到匹配项,将回退到 defaultLocale
description网站的自然语言描述,用于辅助翻译。

高级 Props

PropTypeDefault
dynamicStringCheckLogLevel??
"error" | "warn" | "off"
"warn"
dynamicJsxCheckLogLevel??
"error" | "warn" | "off"
"warn"
dictionary??
string
-
maxBatchSize??
number
25
batchInterval??
number
50
maxConcurrentRequests??
number
100
renderSettings??
RenderSettings
-
cacheExpiryTime??
number
60000
cacheUrl??
string
-
runtimeUrl??
string
-
preferredModelProvider??
"anthropic" | "openai"
-
devApiKey??
string
-
apiKey??
string
-
projectId??
string
-
PropDescription
projectId项目 ID,可在此处指定或通过环境变量设置。
apiKeyAPI 密钥,虽然不建议在此处设置,但可以在此指定,也可通过环境变量设置。
devApiKey开发环境 API 密钥,虽然不建议在此处设置,但可以在此指定,也可通过环境变量设置。
preferredModelProvider首选的 AI 模型提供商。目前仅支持 AnthropicOpenAI。如果留空,我们会根据每次翻译的具体情况自动选择最佳提供商。在使用高峰期或提供商不可用时,无法保证使用您的首选提供商。
runtimeUrlGT API 的基础 URL。如需禁用自动翻译,请将此项设为空字符串。
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 函数,用指定的 GT 设置增强 Next.js 配置对象。

异常

当缺少 projectId 且使用默认 URL 时,或当需要但缺少 API 密钥时,会抛出 Error 异常。


渲染设置

渲染设置控制翻译在加载时的行为。 这仅适用于运行时进行的翻译。 如果翻译已被缓存,响应时间非常短,无需特殊加载行为。

PropTypeDefault
timout?
number
8000
method?
"skeleton" | "replace" | "default"
default
PropDescription
method用于渲染页面的方法。可选项有 skeletonreplacedefault
timeout方法超时前的毫秒数。默认值为 8000 毫秒。

渲染方法

  • skeleton:渲染一个片段。
  • replace:在等待时以默认语言渲染内容。
  • default:对于相同语言的地区(如 en-USen-GB),行为与 replace 相同。对于不同语言的地区(如 en-USfr),行为与 skeleton 相同。

超时

超时仅适用于运行时翻译,或需要按需执行且尚未缓存的翻译。

超时时间默认设置为 8 秒。 此设计决策是为了方便 vercel 用户,因为其免费计划下 serverless 函数的默认超时时间为 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 允许对翻译行为和性能进行精细控制。

下一步

这份指南怎么样?