# gt-react: General Translation React SDK: 生产环境与开发环境 URL: https://generaltranslation.com/zh/docs/react/concepts/environments.mdx --- title: 生产环境与开发环境 description: 生产环境与开发环境的区别 --- {/* 自动生成:请勿直接编辑。请改为编辑 content/docs-templates/ 中的模板。 */} ## 概述 `gt-react` 的行为会因 React 应用运行环境的不同而有所差异。 它通过检查 `NODE_ENV` 环境变量来判断当前环境。 ## 生产环境中的行为 ### 环境变量 在生产环境中,唯一允许使用的环境变量是 `GT_PROJECT_ID` (或其带前缀的版本,例如 `NEXT_PUBLIC_GT_PROJECT_ID`) 。 如果通过环境变量提供 API 密钥,`gt-react` 会抛出错误,以防止 API 密钥暴露给客户端。 ### 翻译加载行为 在生产环境中,`gt-react` provider 默认会尝试从 General Translation CDN 加载翻译。 如果你已通过 `loadTranslations` 函数配置了自定义的翻译加载方式 (例如使用本地翻译) ,`gt-react` 则会优先使用该配置。 由于当前处于生产环境,翻译热重载已被禁用。 ## 开发时行为 ### 环境变量 由于开发环境在本地运行,不会暴露给外部用户,因此 `gt-react` 会接受任何 General Translation 环境变量,即使它们带有 `NEXT_PUBLIC_`、`VITE_` (或类似) 这样的前缀。 ### 翻译加载行为 在开发环境中,`gt-react` provider 会先尝试以与生产环境相同的方式加载翻译。 这些翻译会加载到内存中。 当以非默认语言渲染组件 (使用 `useGT`、`` 或 `useTranslations`) 时,`gt-react` provider 会执行以下操作: 1. 如果检测到当前内容存在有效的已存储翻译,就会渲染该翻译。 2. 如果未找到翻译,它会尝试通过 General Translation API 动态翻译该内容。 3. 翻译完成后,会渲染该翻译,并将其存储在内存中以供后续使用。 4. 如果翻译超时,则会回退为渲染原始内容。 我们的 API 也会在内部对开发环境中的翻译进行短时间缓存,因此如果再次请求相同的翻译,将直接从缓存中返回。 这些翻译在项目级别彼此隔离,因此不会与其他项目的翻译混淆。 此外,该缓存仅在开发会话中有效,因此生产环境不会使用这些缓存的翻译。 `gt-react` 会检测使用 `useGT`、`` 或 `useTranslations` 的组件是否发生变化,并通过我们的 API 动态翻译修改后的内容。 ## 生产环境与开发环境 API 密钥 [#api-keys] 为便于区分 `gt-react` 在生产环境和开发环境下的行为,我们引入了“生产环境 API 密钥”和“开发环境 API 密钥”这两个概念。 ### 生产环境 API 密钥 生产环境 API 密钥是指以 `gtx-api-` 开头的 API 密钥。 提供生产环境 API 密钥时,`gt-react` 会按 [生产环境行为](#production-behavior) 一节中的说明运行。 这意味着,如果你在开发模式下运行 React 应用时提供了生产环境 API 密钥,`gt-react` 会表现得如同处于生产环境。 翻译热重载将被禁用,未提供翻译的组件会渲染原始内容。 除这一行为外,`gt-react` 不会以任何方式使用生产环境 API 密钥。 我们要求你在部署到生产环境时单独创建一个生产环境 API 密钥,是因为 CLI 工具只能访问生产环境 API 密钥。 CLI 工具会按“production”类别进行计费和速率限制。 ### 开发环境 API 密钥 开发环境 API 密钥是指以 `gtx-dev-` 开头的 API 密钥。 提供开发环境 API 密钥时,`gt-react` 会按[开发环境行为](#development-behavior)部分中的说明运行。 使用开发环境 API 密钥时,计费和速率限制会按“development”类别执行。 使用开发环境 API 密钥创建的翻译不会被存储,也无法在生产环境中使用。 开发环境翻译的目的是让您在发布到生产环境之前测试应用程序。