# gt: General Translation CLI tool: PO / POT
URL: https://generaltranslation.com/zh/docs/cli/formats/po.mdx
---
title: PO / POT
description: 如何使用 General Translation 自动翻译 PO/POT 文件
---
## 概述
`gt` 可用于自动翻译项目中的 [PO (Portable Object)](https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html) 和 POT (PO Template) 文件。它们是 [GNU gettext](https://www.gnu.org/software/gettext/) 使用的标准文件格式,而 GNU gettext 是最早且应用最广泛的国际化系统之一。
POT 文件包含从代码中提取的源字符串,PO 文件则包含特定区域设置的译文。
我们将按以下 4 个步骤进行:
添加环境变量
安装 [`gt`](/docs/cli)
创建一个 `gt.config.json` 文件
运行 [`gt translate`](/docs/cli/translate#translate)
***
## 第 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` 文件
在项目的 root 目录中创建一个 `gt.config.json` 文件。
```json title="gt.config.json"
{
"defaultLocale": "en",
"locales": ["zh", "es", "ja"],
"files": {
"pot": {
"include": ["locales/[locale]/*.pot"],
"transformationFormat": "PO"
}
}
}
```
你可以按需自定义 `gt.config.json` 文件。更多信息请参阅[配置](/docs/cli/reference/config)文档。
请更新 `pot` 文件格式,使 `include` 路径与项目结构一致。
`transformationFormat` 选项会告知 `gt` 将翻译后的文件输出为 `.po` 文件,而不是 `.pot` 文件。这是标准工作流:POT 文件是源模板,PO 文件则包含每个区域设置的实际译文。
**注意:**译文将保留原始 PO/POT 字符串语法。
## 第 4 步:将 `gt translate` 命令添加到你的 build 流程
在执行 build 命令之前,将 `gt translate` 命令添加到你的 build 或 CI 流程中,以便自动将译文添加到你的项目中。
```json title="package.json"
{
"scripts": {
"translate": "npx gt translate",
"build": "npm run translate && "
}
}
```
这会为你的所有区域设置生成译文,并将其保存到项目中。
如果你想把这些文件 commit 到仓库,也可以改为在 commit 之前运行此命令。
这样就完成了!现在,每当项目发生变化时,你的项目都会自动更新所有翻译 PO/POT 文件。
***
## 说明
* 你可以使用 [`gt translate`](/docs/cli/translate#translate) 命令,自动将译文添加到项目中。
* 如果你想提交翻译文件,应在提交前先运行 `gt translate` 命令。
* 要配置译文的输出路径,请参阅[配置](/docs/cli/reference/config)文档。
* 在 `gt.config.json` 中,`pot` 和 `POT` 都可以作为配置键使用。
## 后续步骤
* 有关 CLI 的详细用法,请参阅 [translate 命令](/docs/cli/translate)。
* 如需了解针对每个键的翻译说明,请参阅 [键级元数据](/docs/cli/reference/keyed-metadata)。