# General Translation React SDKs (gt-react, gt-next, gt-react-native): 配置 URL: https://generaltranslation.com/zh/docs/react/reference/config.mdx --- title: 配置 description: 通过共享的 gt.config.json 文件和运行时初始化配置 React 生态。gt.config.json 的参考。 --- General Translation 需要在两个位置进行配置:一个是 `gt.config.json` 文件,用于保存与 [CLI](/docs/cli/reference/config) 共用的区域设置和文件配置;另一个是运行时 setup 步骤,用于在首次渲染之前加载该配置。`gt.config.json` 文件在整个 React 生态中都是通用的;运行时 setup 则因框架而异。 *本页中的 `gt.config.json` 参考由 `gt-react`、`gt-next`、`gt-tanstack-start` 和 `gt-react-native` 共享。初始化函数 ([`initializeGT`](#initialize)、[`initializeGTSPA`](#initialize-spa)) 适用于 `gt-react`;`gt-tanstack-start` 和 `gt-react-native` 也使用 `initializeGT`。* *注意:`gt-next` 不使用这些初始化函数——它通过 `withGTConfig` 插件读取配置,详见 Next.js 部分。* ## 概览 [#overview] 一个 服务器端渲染 的 `gt-react` 应用可通过三个步骤完成 setup:初始化库、加载当前生效的区域设置对应的翻译,并使用 [``](/docs/react/reference/components/gt-provider) 包裹组件树。 * **初始化**:对于 服务器端渲染 的 setup,使用 [`initializeGT`](#initialize)。单页应用则使用 [`initializeGTSPA`](#initialize-spa),它还会从 cookie 和浏览器中解析当前生效的区域设置。 * **加载翻译**:使用 [`getTranslationsSnapshot`](/docs/react/reference/functions/get-translations-snapshot) 加载当前生效的区域设置对应的翻译。 * **提供**:使用 [``](/docs/react/reference/components/gt-provider) 将区域设置和翻译提供给组件。 ```tsx title="src/routes/root.tsx" import { initializeGT, getTranslationsSnapshot, parseLocale } from 'gt-react'; import gtConfig from '../../gt.config.json'; const loadTranslations = (locale: string) => import(`../_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); export async function loadRoot(request: Request) { const locale = parseLocale(request); return { locale, translations: await getTranslationsSnapshot(locale), }; } ``` `gt.config.json` 文件保存共享的区域设置和文件设置。初始化调用和 CLI 会读取相同的值,因此请将它们统一放在同一处。 ## 初始化 [#initialization] | Function | Description | Type | Optional | Default | | ------------------------------------ | ----------------------------- | ---------- | -------- | ------- | | [`initializeGT`](#initialize) | 初始化时不进行浏览器区域设置检测,适用于服务器端渲染应用。 | `function` | 否 | — | | [`initializeGTSPA`](#initialize-spa) | 初始化单页应用,包括浏览器区域设置检测。 | `function` | 否 | — | 这两个函数都接受以下共享字段: | Option | Description | Type | Optional | Default | | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------- | -------- | ----------------- | | `defaultLocale` | 用于翻译的源区域设置。 | `string` | 是 | `en` | | `locales` | 支持的目标 locales。 | `string[]` | 是 | `[defaultLocale]` | | [`loadTranslations`](/docs/react/reference/functions/load-translations) | 返回某个区域设置对应翻译内容的加载器。文档:[`loadTranslations`](/docs/react/reference/functions/load-translations)。 | `(locale: string) => Promise` | 是 | GT CDN | | [`loadDictionary`](/docs/react/reference/functions/load-dictionary) | 返回某个区域设置对应 dictionary 的加载器。文档:[`loadDictionary`](/docs/react/reference/functions/load-dictionary)。 | `(locale: string) => Promise` | 是 | — | | `dictionary` | 内联 dictionary,可作为 [`loadDictionary`](/docs/react/reference/functions/load-dictionary) 的替代方案。 | `object` | 是 | — | | `projectId` | 用于 CDN 和开发翻译的 General Translation 项目 ID。 | `string` | 是 | — | | `devApiKey` | 用于按需翻译和热重载的开发 API 密钥。 | `string` | 是 | — | | `apiKey` | 生产环境 API 密钥。在浏览器中优先使用 `devApiKey`。 | `string` | 是 | — | | `cacheUrl` | 自定义翻译主机。设为 `null` 时会禁用远程加载。 | `string \| null` | 是 | GT CDN | | `runtimeUrl` | 运行时 翻译主机,用于开发翻译。 | `string \| null` | 是 | GT runtime | | `customMapping` | 区域设置别名和属性覆盖。 | `object` | 是 | — | | [`_tagIds`](#tag-ids) | 将每个 [``](/docs/react/reference/components/t) 翻译哈希值公开为 `data-_gt-hash` DOM 属性。 | `boolean` | 是 | `false` | ### `initializeGT` [#initialize] **类型** `(config) => void` · **必填** 在不进行浏览器区域设置检测的情况下初始化配置和翻译缓存。请在服务器端渲染的 setup 中使用它,此时框架会提供请求的区域设置和翻译内容。 ```tsx initializeGT({ ...gtConfig, loadTranslations, }); ``` ### `initializeGTSPA` [#initialize-spa] **类型** `(config) => Promise` · **必填** 在单页应用中初始化 `gt-react`。请在首次渲染前调用一次。它会创建翻译缓存,根据 cookie 和浏览器确定当前生效的区域设置,并预加载翻译。仅可在浏览器入口中使用。 它还接受以下仅限浏览器使用的字段: | 选项 | 描述 | 类型 | 可选 | 默认值 | | ----------------------------------- | -------------------------- | ------------------------------------------------------------- | -- | ------ | | `locale` | 显式指定初始区域设置。设置后会跳过检测。 | `string` | 是 | 自动检测 | | `region` | 用于区域感知格式化的初始区域代码。 | `string` | 是 | — | | `enableI18n` | 翻译内容。当为 `false` 时,渲染源区域设置。 | `boolean` | 是 | `true` | | [`htmlTagOptions`](#htmltagoptions) | 不会自动更新 HTML 元素的兼容性字段。 | `{ updateHtmlLangTag?: boolean; updateHtmlDirTag?: boolean }` | 是 | — | ```tsx await initializeGTSPA({ ...gtConfig, loadTranslations, locale: gtConfig.defaultLocale, }); ``` 由于它会从环境中确定区域设置,`initializeGTSPA` 会返回一个 Promise——请在渲染前先 `await` 它。当区域设置变化时,请在你的应用中更新 `` 元素的 `lang` 和 `dir` 属性。 #### `htmlTagOptions` **类型** `{ updateHtmlLangTag?: boolean; updateHtmlDirTag?: boolean }` · **可选** 仅在浏览器环境中兼容的字段,`initializeGTSPA` 接受此字段。传入此字段不会在区域设置变更时自动更新 `` 元素的 `lang` 或 `dir` 属性;请在应用中自行更新这些属性。 ## `gt.config.json` [#config-file] `gt.config.json` 位于项目根目录,包含与 CLI 共享的区域设置和文件配置。导入该文件,并在初始化时传入其中的字段。 | 键 | 描述 | 类型 | 可选 | 默认值 | | ------------------------------------------ | --------------------------------------------------------------------------------- | ---------- | -- | ---------- | | [`projectId`](#project-id) | General Translation 项目 ID。 | `string` | 是 | — | | [`defaultLocale`](#default-locale) | 源区域设置。 | `string` | 是 | `en` | | [`locales`](#locales) | 目标 locales。 | `string[]` | 是 | — | | [`localeRouting`](#locale-routing) | 在路径名中保留当前区域设置。 | `boolean` | 是 | 特定于框架 | | [`customMapping`](#custom-mapping) | 区域设置别名和属性覆盖。 | `object` | 是 | — | | [`cacheUrl`](#cache-url) | 缓存翻译的基础 URL。 | `string` | 是 | GT CDN | | [`runtimeUrl`](#runtime-url) | 运行时 (开发) 翻译的基础 URL。 | `string` | 是 | GT runtime | | [`stageTranslations`](#stage-translations) | 翻译发布到 Production 前需要先审核。 | `boolean` | 是 | `false` | | [`files`](#files) | 本地翻译文件路径和解析标志。 | `object` | 是 | — | | [`_tagIds`](#tag-ids) | 将每个 [``](/docs/react/reference/components/t) 的翻译哈希值公开为 `data-_gt-hash` DOM 属性。 | `boolean` | 是 | `false` | | [`_versionId`](#version-id) | 内部翻译版本标识符。请勿编辑。 | `string` | 是 | — | ### `projectId` [#project-id] **类型** `string` · **可选** 这是你在 General Translation 中的项目唯一标识符。CDN 交付和按需开发翻译需要使用此项。 ### `defaultLocale` [#default-locale] **类型** `string` · **可选** · **默认值** `en` 你的 UI 所使用的源区域设置。缺少翻译时会使用它作为后备内容。 ### `locales` [#locales] **Type** `string[]` · **可选** 项目支持的目标 locales,采用 BCP 47 代码,例如 `['es', 'fr']`。 ### `localeRouting` [#locale-routing] **类型** `boolean` · **可选** · **默认** 特定于框架 用于控制 TanStack Start 中带区域设置前缀的 URL。此功能需显式启用,默认值为 `false`。此选项不会定义路由:请配置可选的 `/{-$locale}` 路径参数或 URL 重写,以便 TanStack Router 同时接受无前缀和带区域设置前缀的 URL。请参阅 [TanStack Start 设置指南](/docs/react/tanstack-start/setup#locale-routing)。启用后,[`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) 会优先采用第一个受支持的路径段,默认区域设置保持无前缀,而客户端区域设置变更时会重新加载到对应的路径名。 Next.js 则通过 [`createNextMiddleware({ localeRouting })`](/docs/react/nextjs/reference/functions/create-next-middleware) 单独配置路由,其默认值为 `true`。此选项不会影响纯 React SPA 或 React Native。 ### `customMapping` [#custom-mapping] **类型** `object` · **可选** 区域设置别名和属性覆盖,用于重命名区域设置,或自定义其解析和显示方式。 ### `cacheUrl` [#cache-url] **类型** `string` · **可选** · **默认值** GT CDN 用于获取缓存翻译的基础 URL。可将其设置为你自己的主机地址,或在初始化调用中传入 `null` 以禁用远程加载。 ### `runtimeUrl` [#runtime-url] **类型** `string` · **可选** · **默认值** GT runtime 运行时翻译服务的基础 URL。仅适用于开发翻译。 ### `stageTranslations` [#stage-translations] **类型** `boolean` · **可选** · **默认值** `false` 当其为 `true` 时,`gt` 工具会将翻译标记为需要审核。只有在获得批准后,才能通过 [`gt translate`](/docs/cli/reference/commands/translate) 将其部署到生产环境。 ### `files` [#files] **类型** `object` · **可选** 用于指定将本地存储的翻译内容写入到哪里,以替代存储在云端。`files.gt.output` 是一个包含 `[locale]` 的路径模板,`files.gt.parsingFlags` 用于控制编译器如何解析你的源内容。 ```json title="gt.config.json" { "files": { "gt": { "output": "src/_gt/[locale].json", "parsingFlags": { "enableAutoJsxInjection": true, "autoderive": true } } } } ``` * `enableAutoJsxInjection` (`boolean`,默认值为 `false`) — 在构建时自动将可翻译的 JSX 文本包裹在翻译组件中。请参阅 [自动 JSX 注入](/docs/cli/guides/using-auto-jsx)。 * `autoderive` (`boolean`,默认值为 `false`) — 自动将 [`t()`](/docs/react/reference/functions/t-function)、`gt()` 和 [`msg()`](/docs/react/reference/functions/msg) 调用中的插值视为 [`derive()`](/docs/react/reference/functions/derive) 调用。请参阅 [autoderive](/docs/cli/guides/using-autoderive)。 完整的 `files` schema 请参阅 [CLI 配置参考](/docs/cli/reference/config)。 ## `_tagIds` [#tag-ids] **类型** `boolean` · **可选** · **默认值** `false` 在 `gt-react`、`gt-next` 和 `gt-tanstack-start` 中,为渲染的 [``](/docs/react/reference/components/t) 和 [``](/docs/react/nextjs/reference/components/tx) 输出启用 DOM ID 标记。本地化回放、上下文 QA 等工具会使用 `data-_gt-hash` 属性,将渲染节点映射回对应的翻译。 在共享配置文件中设置 `_tagIds`,然后将该配置传递给 [`initializeGT`](#initialize) 或 [`initializeGTSPA`](#initialize-spa)。`withGTConfig` 插件在 Next.js 中也会读取同一文件: ```json title="gt.config.json" { "_tagIds": true } ``` 该值必须为字面量 `true`。任何其他值 (包括真值但非布尔类型的值) 都会使标记功能保持关闭。React Native 接受此共享配置字段,但会跳过 DOM 标记。 **启用此功能可能会添加包装元素。** Span 注入会尽可能保持在最低限度: * **单个宿主元素** (例如 ``) 会原地添加属性。不会添加包装元素,因此在 ``、`