生产环境与开发环境
生产环境与开发环境的差异
概览
gt-react 会根据你的 React 应用所运行的环境而表现不同的行为。
它通过检查 NODE_ENV 环境变量来判断当前环境。
生产环境行为
环境变量
在生产环境中,唯一允许的环境变量是 GT_PROJECT_ID(或其带前缀的变体,例如 NEXT_PUBLIC_GT_PROJECT_ID)。
如果将 API key 作为环境变量提供,gt-react 会抛出 Error。这是为了防止 API Keys 暴露给客户端。
翻译加载行为
在生产环境中,gt-react 提供器默认会尝试从 General Translation 的翻译 CDN 加载翻译。
如果你通过 loadTranslations 函数配置了自定义的翻译加载逻辑(例如本地翻译),gt-react 将优先使用该方案。
由于当前处于生产环境,翻译热重载已被禁用。
开发时行为
环境变量
由于开发在本地进行且不会对外部用户暴露,gt-react 会接受任何 General Translation 的环境变量,即使它们带有 NEXT_PUBLIC_、VITE_(或类似)前缀。
翻译加载行为
在开发环境中,gt-react 提供程序会首先按与生产环境相同的方式尝试加载翻译。
这些翻译会被加载到内存中。
当以非默认语言渲染使用了 useGT、<T> 或 useTranslations 的组件时,gt-react 提供程序将执行以下操作:
- 如果检测到给定内容存在有效的已存储翻译,则渲染该翻译。
- 如果未找到翻译,则会尝试通过 General Translation API 动态翻译该内容。
- 翻译完成后,将渲染该翻译,并将其存储到内存中以供后续使用。
- 如果翻译超时,将回退并渲染原始内容。
我们的 API 还会在内部对开发环境下的翻译进行短期缓存,因此如果再次请求相同的翻译,将会直接从缓存返回。
这些翻译在项目级别相互隔离,因此不会与其他项目的翻译混淆。 此外,缓存对每次开发会话都是唯一的,因此这些缓存的翻译不会用于生产环境。
gt-react 会检测使用 useGT、<T> 或 useTranslations 的组件的变更,并通过我们的 API 动态翻译已修改的内容。
生产与开发 API Keys
为便于区分 gt-react 在生产环境与开发环境中的行为,我们采用“生产 API Keys”和“开发 API Keys”的概念。
生产环境 API Keys
生产环境 API keys 指以 gtx-api- 开头的 API keys。
当提供了生产环境 API key 时,gt-react 将按生产环境行为部分所述工作。
这意味着,即使你在开发模式下运行 React 应用并提供了生产环境 API key,gt-react 也会按生产环境方式运行。
将禁用翻译的热重载,且未提供翻译的组件会渲染原始内容。
除上述行为外,gt-react 不会以任何其他方式使用该生产环境 API key。
我们之所以要求你在发布到生产环境时创建单独的生产环境 API key,是因为 CLI 工具只会访问生产环境 API Keys。
CLI 工具将按“production”分类应用计费与限流。
开发 API Keys
开发 API Keys 是以 gtx-dev- 开头的 API Keys。
当提供开发 API key 时,gt-react 的行为将如开发行为部分所述。
使用开发 API key 时,计费与速率限制将归入 “development” 类别。
使用开发 API key 生成的翻译不会被存储,且无法在生产环境中使用。
开发阶段的翻译旨在帮助你在上线到生产前测试应用。
这份指南怎么样?