# gt: General Translation CLI tool: gt upload
URL: https://generaltranslation.com/ru/docs/cli/reference/commands/upload.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Загружайте исходные файлы и переводы в платформу General Translation. Справочник API для команды `gt upload`.

Загружает исходные файлы вашего проекта и все существующие переводы в платформу General Translation, синхронизируя локальные файлы, чтобы ими можно было управлять, ставить в очередь и отслеживать. Используйте вместе с [`gt enqueue`](/docs/cli/reference/commands/enqueue) и [`gt download`](/docs/cli/reference/commands/download), чтобы разделить процесс перевода между этапами CI. См. [Управление переводами](/docs/cli/guides/managing-translations#split).

*Примечание: только для использования в Production. Требуются `GT_API_KEY` и `GT_PROJECT_ID` для Production.*

```bash
npx gt upload
```

## Как это работает [#how-it-works]

1. Читает `gt.config.json`, чтобы определить, какие файлы нужно загрузить.
2. Собирает все переводимые исходные файлы.
3. Хеширует каждый файл, чтобы сгенерировать `fileId` (из его пути) и `versionId` (из его содержимого).
4. Обращается к API, чтобы определить, какие файлы новые или были изменены.
5. Обнаруживает перемещённые файлы — с тем же содержимым, но другим путём — и сохраняет существующие переводы.
6. Загружает новые и изменённые исходные файлы вместе со всеми локальными файлами перевода.
7. Применяет настроенные правила публикации и отмены публикации в CDN. Флаг `--publish` делает публикацию глобальным значением по умолчанию, но явно заданные для отдельных файлов правила `publish: false` по-прежнему исключают их из публикации.

## Флаги [#flags]

`upload` регистрирует общие [флаги перевода](/docs/cli/reference/commands/translate#flags), но использует только параметры, относящиеся к сбору, загрузке и публикации файлов. Основные параметры перечислены ниже.

| Параметр                    | Описание                                                                                                              | Тип        | Необязательно | По умолчанию     |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | ---------------- |
| `--api-key <key>`           | API-ключ для production.                                                                                              | `string`   | Да            | `GT_API_KEY`     |
| `--project-id <id>`         | ID проекта.                                                                                                           | `string`   | Да            | `GT_PROJECT_ID`  |
| `-c, --config <path>`       | Путь к файлу конфигурации.                                                                                            | `string`   | Да            | `gt.config.json` |
| `--locales <locales...>`    | Дополнительные целевые локали, добавляемые к locales из конфигурации.                                                 | `string[]` | Да            | —                |
| `--default-locale <locale>` | Исходная локаль проекта.                                                                                              | `string`   | Да            | `en`             |
| `--publish`                 | Использовать публикацию как глобальное значение по умолчанию; явные исключения из публикации для отдельных файлов при этом сохраняются. | `boolean`  | Да            | `false`          |

<Callout type="warn">
  В `gt` 2.20.1 команда `upload` принимает `--dry-run`, но всё равно загружает файлы. Общий флаг `--timeout` управляет ожиданием перевода и не влияет на эту команду. Чтобы просмотреть собранные файлы без их загрузки, используйте [`gt stage --dry-run`](/docs/cli/reference/commands/stage).
</Callout>

## Пример [#example]

```bash
# Этап 1: загрузить исходные файлы (эта команда)
npx gt upload

# Этап 2: поставить переводы в очередь
npx gt enqueue

# Этап 3: скачать, когда будет готово
npx gt download
```

## Другие замечания [#notes]

* `upload` собирает все переводимые исходные файлы поддерживаемых типов (JSON, YAML, Markdown, MDX и другие), а также все локальные файлы перевода.
* Существующие переводы, содержимое которых по-прежнему совпадает с `gt-lock.json`, пропускаются. Остальные локальные переводы загружаются и могут заменить сохранённые переводы; при отсутствии lock-файла загружаются все локальные переводы.
* Поскольку каждый файл хешируется по его пути и содержимому, перемещённые файлы (то же содержимое, новый путь) сохраняют существующие переводы и не переводятся заново.
* Перед публикацией включите CDN в настройках проекта. Если публикация не удалась, загрузка всё равно считается успешной, а CLI выводит предупреждение.

## Sitemap

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