生产环境与开发环境

生产环境与开发环境的区别

概览

gt-react 会根据你的 React 应用所运行的环境而表现出不同的行为。

它通过检查 NODE_ENV 环境变量来判断当前环境。

生产环境行为

环境变量

在生产环境中,唯一允许的环境变量是 GT_PROJECT_ID(或其带前缀的变体,如 NEXT_PUBLIC_GT_PROJECT_ID)。

如果通过环境变量提供了 API key,gt-react 将抛出错误。这样做是为了防止 API key 暴露给客户端。

翻译加载行为

在生产环境中,gt-react 提供器默认会尝试从 General Translation 的翻译 CDN(内容分发网络)加载翻译。

如果你通过 loadTranslations 函数配置了自定义加载逻辑(例如使用本地翻译),gt-react 将使用该逻辑。

由于处于生产环境,翻译热重载已被禁用。

开发时行为

环境变量

由于开发在本地进行且不对外部用户公开,gt-react 会接受任何 General Translation 的环境变量,即使它们带有 NEXT_PUBLIC_VITE_(或类似)前缀。

翻译加载行为

在开发环境中,gt-react provider 会首先以与生产环境相同的方式尝试加载翻译。 这些翻译会被加载到内存中。

当以非默认语言渲染使用了 useGT<T>useTranslations 的组件时,gt-react provider 将执行以下操作:

  1. 如果检测到给定内容存在有效且已存储的翻译,则渲染该翻译。
  2. 如果未找到翻译,则会尝试通过 General Translation API 动态翻译该内容。
  3. 翻译完成后,会渲染该翻译,并将其存储到内存中以供后续使用。
  4. 如果翻译超时,将回退并渲染原始内容。

我们的 API 还会在内部对开发环境中的翻译进行短期缓存,因此如果再次请求相同的翻译,将直接从缓存返回。

这些翻译在项目级别相互隔离,不会与其他项目的翻译混用。 此外,缓存与开发会话绑定,因此这些缓存的翻译不会在生产环境中使用。

gt-react 会检测使用了 useGT<T>useTranslations 的组件的变更,并通过我们的 API 动态翻译已修改的内容。

生产环境与开发环境 API Keys

为便于区分 gt-react 在生产环境与开发环境中的行为,我们引入了“Production API Keys”和“Development API Keys”的概念。

生产环境 API 密钥

生产环境 API 密钥以 gtx-api- 开头。

当提供了生产环境 API 密钥时,gt-react 将按生产环境行为部分所述运行。

这意味着,即使你在开发模式下运行 React 应用并提供了生产环境 API 密钥,gt-react 也会按生产环境方式运行。 将禁用翻译热重载,且缺少译文的组件会渲染原始内容。

除此之外,gt-react 不会以任何其他方式使用该生产环境 API 密钥。

我们要求你在部署到生产环境时创建一个单独的生产环境 API 密钥,原因是 CLI(命令行界面)工具只会访问生产环境 API 密钥。

CLI 工具会按“production”类别执行计费与速率限制。

开发 API 密钥

开发 API 密钥是以 gtx-dev- 开头的 API 密钥。

提供开发 API 密钥时,gt-react 将按开发行为部分所述工作。

使用开发 API 密钥时,计费与速率限制将按“development”类别计算。

使用开发 API 密钥创建的翻译不会被存储,且无法在生产环境中使用。

开发阶段的翻译旨在帮助你在发布到生产环境前对应用进行测试。

本指南如何?