生产环境与开发环境

生产环境和开发环境之间的差异

概述

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

它通过检查 NODE_ENV 环境变量来检测环境。

生产环境行为

环境变量

在生产环境中,唯一接受的环境变量是 GT_PROJECT_ID(或其带前缀的版本,例如 NEXT_PUBLIC_GT_PROJECT_ID)。

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

翻译加载行为

在生产环境中,默认情况下,gt-react 提供程序将尝试从General Translation CDN加载翻译。

如果您已通过 loadTranslations 函数配置了自定义翻译加载行为,例如本地翻译,gt-react 将使用该配置。

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

开发行为

环境变量

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

翻译加载行为

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

当渲染一个组件(使用 useGT()<T>useTranslations())时,如果语言与默认语言不同,gt-react 提供者将执行以下操作:

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

我们的 API 还会在内部短时间缓存开发翻译,因此如果再次请求相同的翻译,将从缓存中提供。

这些翻译在项目级别是隔离的,因此不会与其他项目的翻译混淆。 此外,缓存对开发会话是唯一的,因此缓存的翻译不会在生产中使用。

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

生产环境与开发环境 API 密钥

为了帮助区分 gt-react 在生产环境和开发环境中的行为,我们引入了"生产环境 API 密钥"和"开发环境 API 密钥"的概念。

生产环境 API 密钥

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

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

这意味着,如果您在开发模式下运行 React 应用程序,但提供了生产环境 API 密钥,gt-react 将表现得如同在生产环境中一样。 翻译热重载将被禁用,没有翻译的组件将渲染原始内容。

除了这种行为外,gt-react 不会以任何其他方式使用生产环境 API 密钥。

我们要求您在部署到生产环境时创建单独的生产环境 API 密钥的原因是,CLI 工具只能访问生产环境 API 密钥。

CLI 工具将使用"生产"类别应用计费和速率限制。

开发环境 API 密钥

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

当提供开发环境 API 密钥时,gt-react 将按照开发环境行为部分所述的方式运行。

使用开发环境 API 密钥时,计费和速率限制将使用"开发"类别进行应用。

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

开发环境翻译的目的是让您在部署到生产环境之前测试应用程序。

这份指南怎么样?