# 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)。