# gt: General Translation CLI tool: JSON URL: https://generaltranslation.com/zh/docs/cli/formats/json.mdx --- title: JSON description: 如何用 General Translation 自动翻译 JSON 文件 --- ## 概述 无论你使用的是哪种 i18n 库,都可以用 `gt` 自动翻译项目中的 JSON 文件。 **注意:** 目前,我们支持以下第三方 i18n 库的自定义字符串语法和格式:`next-intl`、`i18next`。如果你使用的是其他 i18n 库,对于包含自定义语法和格式的字符串 (例如 ICU 消息) ,翻译结果可能不够准确。没看到你常用的库?[请告诉我们](https://github.com/generaltranslation/gt/issues),我们会尽快添加支持! 我们将按以下 4 个步骤进行: 添加环境变量 安装 [`gt`](/docs/cli) 创建 `gt.config.json` 文件 运行 [`gt translate`](/docs/cli/translate#translate) **提示:** 使用 [`` 组件](/docs/react/guides/t),免去使用翻译文件的麻烦。 *** ## 第 1 步:添加环境变量 将生产环境的 API 密钥和项目 ID 添加到环境变量中。 这是使用 `gt` 工具的必要前提。 你可以在 [General Translation 仪表板](https://generaltranslation.com/dashboard) 中获取这些信息。 ```bash title=".env" GT_API_KEY= GT_PROJECT_ID= ``` ## 第 2 步:安装 `gt` 在项目中安装 `gt` 工具。 ```bash npm i gt ``` ```bash yarn add --dev gt ``` ```bash bun add --dev gt ``` ```bash pnpm add --save-dev gt ``` ## 第 3 步:创建 `gt.config.json` 文件 在项目根目录下创建一个 `gt.config.json` 文件。 ```json title="gt.config.json" copy { "defaultLocale": "en", "locales": ["zh", "es", "ja"], "files": { "json": { "include": ["i18n/[locale]/*.json"] } } } ``` 你可以根据需要自定义 `gt.config.json` 文件。更多信息请参阅[配置](/docs/cli/reference/config)文档。 更新 `json` 文件,使其中的 `include` 路径与你的项目结构一致。 翻译会保留原始字符串语法。 ## 第 4 步:将 `gt translate` 命令加入你的构建流程 在执行构建命令之前,将 `gt translate` 命令加入构建或 CI 流程,以自动为项目添加翻译。 ```json title="package.json" { "scripts": { "translate": "npx gt translate", "build": "npm run translate && " } } ``` 这会为你的所有 locales 生成翻译,并将其保存到项目中。 如果你想把这些文件提交到代码仓库,也可以改为在提交前运行此命令。 完成了!现在,每当项目发生变化时,它都会自动更新所有翻译 JSON 文件。 *** ## 键级元数据 你可以使用配套的 `.metadata.json` 文件,为单个字符串键附加翻译说明。这样,无需修改源文件,你就能为特定键提供上下文、字符限制和源代码上下文。 ```json title="translations.json" { "nav": { "home": "Home", "bank": "Bank", "save": "Save" } } ``` ```json title="translations.metadata.json" { "nav": { "bank": { "context": "Riverbank — the side of a river. NOT a financial institution." }, "save": { "context": "Sports term — a goalkeeper preventing a goal. NOT saving data.", "maxChars": 12 } } } ``` 并非每个键都需要元数据——只需为需要特定翻译说明的键添加条目。 支持的字段完整列表,请参阅[键级元数据参考](/docs/cli/reference/keyed-metadata)。 *** ## 注意事项 * 你可以使用 [`gt translate`](/docs/cli/translate#translate) 命令,自动将翻译添加到项目中。 * 如果你想提交翻译文件,应在提交前先运行 `gt translate` 命令。 * 要配置翻译的输出路径,请参阅[配置](/docs/cli/reference/config)文档。 ## 后续步骤 * 有关 CLI 用法详情,请参阅[translate 命令](/docs/cli/translate)。 * 了解可为每个键提供翻译说明的[键级元数据](/docs/cli/reference/keyed-metadata)。