生产环境与开发环境
生产环境与开发环境的区别
概览
gt-next 会根据你的 Next.js 应用所处的运行环境而表现不同。
它通过检查 NODE_ENV 环境变量来判断所处环境。
生产环境表现
环境变量
在生产环境中,gt-next 只会读取 GT_PROJECT_ID 和 GT_API_KEY 这两个环境变量。
API key 必须是生产环境的密钥,并且以 gtx-api- 开头。
如果你使用的是开发环境的 API key,gt-next 将抛出一个 Error。
翻译加载行为
在生产环境中,gt-next 默认会从 General Translation 的翻译 CDN 加载译文。
如果你通过 loadTranslations 函数配置了自定义加载方式(例如使用本地翻译),gt-next 将优先采用该方式。
由于处于生产环境,翻译热重载已禁用。
使用 <Tx> 组件或 tx 函数对动态内容进行按需翻译是启用的,但仅限于服务器组件。
开发时行为
环境变量
gt-next 接受 GT_PROJECT_ID 和 GT_API_KEY 两个环境变量。
API key 可以是以 gtx-api- 开头的生产环境 API key,或以 gtx-dev- 开头的开发环境 API key。
如果在开发环境中使用了生产环境 API key,gt-next 将按生产环境运行。
这意味着将禁用翻译的热重载,且缺少翻译的组件会渲染原始内容。
翻译加载行为
在开发环境中,gt-next 会先按与生产环境相同的方式尝试加载翻译。
这些翻译会被加载到内存中。
当以非默认语言渲染一个使用了 useGT、<T> 或 useTranslations 的组件时,gt-next 将执行以下流程:
- 如果检测到该内容存在有效且已存储的翻译,则直接渲染该翻译。
- 如果未找到翻译,则尝试通过 General Translation API 动态翻译内容。
- 翻译完成后,渲染结果并将其存入内存以供后续使用。
- 如果翻译超时,则回退为渲染原始内容。
我们的 API 也会在内部对开发环境中的翻译进行短期缓存,因此如果再次请求相同的翻译,将从缓存中返回。
这些翻译在项目级别相互隔离,不会与其他项目的翻译混淆。 另外,缓存仅针对开发会话有效,因此在生产环境中不会使用这些缓存的翻译。
gt-next 会检测使用 useGT、<T> 或 useTranslations 的组件变更,并通过我们的 API 对修改后的内容进行动态翻译。
生产 vs 开发 API Keys
为便于区分 gt-next 在生产和开发阶段的行为,我们引入了“生产 API Keys”和“开发 API Keys”的概念。
生产环境 API Keys
生产环境 API key 指的是以 gtx-api- 开头的 API key。
当提供了生产环境 API key 时,gt-next 将按生产环境行为章节所述运行。
这意味着即使你在开发模式下运行 Next.js 应用,只要提供了生产环境 API key,gt-next 也会按生产环境方式运行。
翻译的热重载将被禁用,且未提供翻译的组件会渲染原始内容。
除此之外,gt-next 不会以任何其他方式使用该生产环境 API key。
CLI 工具会读取 GT_API_KEY 环境变量,并且只接受生产环境 API keys。
CLI 工具会按照“production”类别应用计费与速率限制。
开发 API Keys
开发 API key 指的是以 gtx-dev- 开头的 API key。
提供开发 API key 后,gt-next 将按照开发行为部分的说明运行。
使用开发 API key 时,计费与限流将按“development”类别执行。
使用开发 API key 创建的译文不会被保存,也无法在生产环境中使用。
开发阶段的翻译仅用于在上线到生产前测试你的应用程序。
这份指南怎么样?

