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, {
  defaultLocale: 'en-US',
  locales: ['en-US', 'es', 'fr'],
});

遗留

initGT() 是配置 gt-next 库的遗留方式。它返回一个函数回调,然后在 NextConfig 对象上调用。 两个函数的参数相同,唯一的区别是 withGTProps 需要同时传入 NextConfig

使用 withGTConfig() 来启用翻译功能不是必须的,但建议配置库以满足您的需求。

使用 withGTConfig() 来:

  • 配置支持的语言和默认语言环境(即回退语言)。
  • 设置访问 GT 服务的 API 密钥和项目 ID。
  • 设置加载行为。
  • 配置超时设置。
  • 设置自定义端点。
  • 自定义翻译行为、缓存和请求批处理。

必须在 next.config.js 文件中使用 withGTConfig() 来启用翻译功能。

参考

必需的属性

PropTypeDefault
nextConfig?
NextConfig
-

推荐的属性

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

高级属性

PropTypeDefault
projectId??
string
-
apiKey??
string
-
devApiKey??
string
-
preferredModelProvider??
"anthropic" | "openai"
-
runtimeUrl??
string
-
cacheUrl??
string
-
cacheExpiryTime??
number
60000
renderSettings??
RenderSettings
-
maxConcurrentRequests??
number
100
batchInterval??
number
50
maxBatchSize??
number
25
i18n??
string
-
dictionary??
string
-
Prop描述
projectId项目 ID,可以在此处或作为环境变量包含。
apiKey虽然不推荐,但可以在此处包含的 API 密钥。也可以作为环境变量包含。
devApiKey虽然不推荐,但可以在此处包含的开发 API 密钥。也可以作为环境变量包含。
preferredModelProvider您的首选 AI 模型提供商。目前仅启用 AnthropicOpenAI。将此留空,我们将根据每次翻译确定最佳提供商。在高使用量期间或提供商被禁用时,我们不能保证使用您的首选提供商。
runtimeUrlGT API 的基本 URL。要禁用自动翻译,请将其设置为空字符串。
cacheUrl存储缓存翻译的 URL。可以自定义指向自定义缓存服务器。
cacheExpiryTime本地缓存翻译过期前的时间(以毫秒为单位)。
renderSettings指定运行时翻译加载行为的对象。
maxConcurrentRequests允许向 GT API 发出的最大并发翻译请求数。
maxBatchSize在发送请求之前要批处理在一起的最大翻译数量。
batchInterval批处理翻译请求之间的间隔(以毫秒为单位)。有助于控制请求发送的速率。
i18n自定义 getLocale() 函数的可选配置文件路径。如果作为字符串提供,它将被解析为路径。否则,使用默认值(推荐)。
dictionary字典的可选配置文件路径。与 i18n 类似,它接受一个字符串来指定自定义路径。默认支持放置在根目录或 src 文件夹中的名为 dictionary.js(或 .jsx.ts.tsx 等)的字典。

返回

一个函数 (NextConfig) => NextConfig,用于增强带有指定 GT 设置的 Next.js 配置对象。

异常

如果缺少 projectId 且使用默认 URL,或者需要 API 密钥但缺失,则抛出 Error


渲染设置

渲染设置控制翻译在加载时的行为。 这仅适用于在运行时发生的翻译。 如果翻译已被缓存,响应时间太短,不足以证明加载行为的合理性。

PropTypeDefault
method?
"skeleton" | "replace" | "default"
default
timout?
number
8000
属性描述
method用于渲染页面的方法。选项有 skeletonreplacedefault
timeout方法超时前的时间(以毫秒为单位)。默认是 8000 毫秒。

渲染方法

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

超时

超时仅适用于运行时翻译,或需要按需执行的翻译,因为它们尚未被缓存。

默认情况下,超时设置为 8 秒。 这一设计决策是为了方便使用免费计划的 vercel 用户,他们的无服务器函数默认超时为 10 秒。


示例

支持的语言环境

此示例将 gt-next 配置为默认语言环境为英语 (en-US)。 它仅支持西班牙语 (es) 和法语 (fr) 的翻译,并提供上下文感知翻译的描述。

如果没有匹配的语言环境,网站将回退到最合适的语言。 它将寻找匹配的语言(即 en-USen-GB),以及用户在其浏览器中设置的其他首选语言。 如果所有其他方法都失败,则将回退到默认语言。

如果您想支持所有语言,请将 locales 留空。 此外,可以在仪表板上配置语言环境。

next.config.mjs
import { withGTConfig } from 'gt-next/config';
 
const nextConfig = {
  // Your other next.js configurations
}
 
export default withGTConfig(nextConfig, {
  defaultLocale: 'en-US',
  locales: ['en-US', 'es', 'fr'],
  description: 'A personal blog about technology and travel',
});

渲染设置

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

next.config.mjs
import { withGTConfig } from 'gt-next/config';
 
const nextConfig = {
  // Your other next.js configurations
};
 
// locales field is left empty, so this configuration supports all 100+ languages
export default withGTConfig(nextConfig, {
  defaultLocale: 'en-US',
  renderSettings: {
    method: 'skeleton',
    timeout: 10000,
  },
});

注意事项

  • withGTConfig() 将 GT 翻译功能集成到您的 Next.js 应用中,必须在根配置文件中使用。
  • apiKeyprojectId 这样的参数可以直接在配置中设置,也可以作为环境变量。
  • 高级参数如 renderSettings_batchInterval 允许对翻译行为和性能进行细粒度控制。

下一步

在本页面