# gt: General Translation CLI tool: Managing translations URL: https://generaltranslation.com/en-US/docs/cli/guides/managing-translations.mdx --- title: Managing translations description: How to upload, enqueue, download, stage, and sync local translation edits with the General Translation CLI. related: links: - /docs/cli/guides/generating-translations - /docs/cli/guides/branching - /docs/cli/guides/configuring - /docs/cli/guides/using-autoderive --- 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 a previously staged version. While `stageTranslations` is enabled, [`translate`](/docs/cli/reference/commands/translate) only downloads versions you have staged; if nothing has been staged, it exits with an error. ## 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. [`gt translate`](/docs/cli/reference/commands/translate) performs this save step by default before it enqueues new work; pass `--no-save-local` to skip it for a run. ## Next steps - /docs/cli/guides/generating-translations - /docs/cli/guides/branching - /docs/cli/guides/configuring - /docs/cli/guides/using-autoderive