# gt: General Translation CLI tool: Managing translations
URL: https://generaltranslation.com/en-US/docs/cli/guides/managing-translations.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: How to upload, enqueue, download, stage, and sync local translation edits with the General Translation CLI.

The [`gt translate`](/docs/cli/reference/commands/translate) command runs the whole translation flow in one step. When you need more control — such as separate CI stages or a human review step — the CLI exposes each part of that flow as its own command.

*Note: These commands require a production API key. Set `GT_API_KEY` and `GT_PROJECT_ID` as environment variables.*

## Split translation across CI stages [#split]

In a CI pipeline you often want to upload content, translate it, and download results in separate jobs. Three commands map to those stages.

1. [`gt upload`](/docs/cli/reference/commands/upload) uploads source files (and any existing translations) to the platform.
2. [`gt enqueue`](/docs/cli/reference/commands/enqueue) queues the uploaded files for translation and returns immediately, without waiting for results.
3. [`gt download`](/docs/cli/reference/commands/download) downloads completed translations and saves them to the paths in your config.

```bash
# Stage 1: upload source files
npx gt upload

# Stage 2: enqueue translations
npx gt enqueue

# Stage 3: download when ready
npx gt download
```

Because [`enqueue`](/docs/cli/reference/commands/enqueue) does not wait, you can run [`download`](/docs/cli/reference/commands/download) in a later job once translations are ready. This avoids holding a build job open while translation runs.

## Translate Lottie animations [#lottie]

Lottie translations include asynchronous layout processing, so [`gt translate`](/docs/cli/reference/commands/translate) cannot submit and download them in one run. Stage the animations, then download completed locales:

```bash
npx gt stage
npx gt download
```

If some locales are still processing, the download skips them. Re-run [`gt download`](/docs/cli/reference/commands/download) later; the staged file remains in `gt-lock.json` until every configured locale has been downloaded. See the [Lottie format reference](/docs/cli/reference/formats/lottie-files) for configuration, fonts, and expression restrictions.

## Stage translations for review [#review]

If your project uses human review, use [`gt stage`](/docs/cli/reference/commands/stage) to submit translation work without downloading or publishing the results in the same run. Review-gated projects hold completed translations for approval.

```bash
npx gt stage
```

Running [`stage`](/docs/cli/reference/commands/stage) sets `stageTranslations: true` in your `gt.config.json`. After translations are approved, run [`gt download`](/docs/cli/reference/commands/download). [`gt translate`](/docs/cli/reference/commands/translate) can also download previously staged versions. While `stageTranslations` is enabled, [`translate`](/docs/cli/reference/commands/translate) only downloads versions you have staged. If nothing is staged, it completes without downloading files.

## Save local edits [#save-local]

When you or a translator edit downloaded translation files by hand, use [`gt save-local`](/docs/cli/reference/commands/save-local) to send those edits back to the platform.

```bash
npx gt save-local
```

The command compares your local files against the last downloaded versions, computes a diff for anything that changed, and submits it. It does not enqueue any new translations. To perform this step automatically before [`gt translate`](/docs/cli/reference/commands/translate) or [`gt stage`](/docs/cli/reference/commands/stage) enqueues new work, pass `--save-local` or set [`options.saveLocal`](/docs/cli/reference/config#save-local) to `true` in `gt.config.json`.

For Apple `.strings` and `.stringsdict` files and Android `strings.xml` files, the platform validates and saves the complete edited document. For `.xcstrings`, the CLI tracks and submits each locale separately even though every locale is stored in the same file.

## Next steps

- /docs/cli/guides/generating-translations
- /docs/cli/guides/branching
- /docs/cli/guides/configuring
- /docs/cli/guides/using-autoderive

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
