# gt: General Translation CLI tool: gt upload
URL: https://generaltranslation.com/es/docs/cli/reference/commands/upload.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Sube archivos fuente y traducciones a la plataforma General Translation. Referencia de la API para el comando `gt upload`.

Sube los archivos fuente de tu proyecto y cualquier traducción existente a la plataforma General Translation, sincronizando los archivos locales para que puedan gestionarse, ponerse en cola y seguirse. Combínalo con [`gt enqueue`](/docs/cli/reference/commands/enqueue) y [`gt download`](/docs/cli/reference/commands/download) para dividir la traducción en distintas etapas de CI. Consulta [Gestionar traducciones](/docs/cli/guides/managing-translations#split).

*Nota: Solo para uso en producción. Requiere un `GT_API_KEY` y `GT_PROJECT_ID` de producción.*

```bash
npx gt upload
```

## Cómo funciona [#how-it-works]

1. Lee `gt.config.json` para determinar qué archivos subir.
2. Recopila todos los archivos fuente traducibles.
3. Aplica un hash a cada archivo para generar un `fileId` (a partir de su ruta) y un `versionId` (a partir de su contenido).
4. Consulta la API para determinar qué archivos son nuevos o se modificaron.
5. Detecta movimientos de archivos —mismo contenido, ruta diferente— y conserva las traducciones existentes.
6. Sube los archivos fuente nuevos y modificados, junto con cualquier archivo de traducción local.
7. Aplica las reglas configuradas de publicación y despublicación en el CDN. `--publish` establece la publicación como valor predeterminado global, mientras que las reglas explícitas `publish: false` por archivo siguen excluyendo esos archivos.

## Opciones [#flags]

`upload` registra las [opciones de traducción](/docs/cli/reference/commands/translate#flags) compartidas, pero solo usa las opciones relevantes para recopilar, subir y publicar archivos. A continuación se muestran las opciones principales.

| Parámetro                   | Descripción                                                                                                     | Tipo       | Opcional | Predeterminado   |
| --------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------- | -------- | ---------------- |
| `--api-key <key>`           | Clave de API de producción.                                                                                     | `string`   | Sí       | `GT_API_KEY`     |
| `--project-id <id>`         | ID del proyecto.                                                                                                | `string`   | Sí       | `GT_PROJECT_ID`  |
| `-c, --config <path>`       | Ruta del archivo de configuración.                                                                              | `string`   | Sí       | `gt.config.json` |
| `--locales <locales...>`    | Configuraciones regionales de destino adicionales, que se agregan a las locales de la configuración.            | `string[]` | Sí       | —                |
| `--default-locale <locale>` | Configuración regional de origen del Project.                                                                   | `string`   | Sí       | `en`             |
| `--publish`                 | Usa la publicación como valor predeterminado global; las exclusiones explícitas por archivo siguen aplicándose. | `boolean`  | Sí       | `false`          |

<Callout type="warn">
  En `gt` 2.20.1, `upload` acepta `--dry-run` pero aun así sube los archivos. Su opción compartida `--timeout` controla la espera de la traducción y no tiene efecto en este comando. Para inspeccionar los archivos recopilados sin subirlos, usa [`gt stage --dry-run`](/docs/cli/reference/commands/stage).
</Callout>

## Ejemplo [#example]

```bash
# Etapa 1: subir archivos fuente (este comando)
npx gt upload

# Etapa 2: encolar traducciones
npx gt enqueue

# Etapa 3: descargar cuando esté listo
npx gt download
```

## Otras notas [#notes]

* `upload` recopila los archivos fuente traducibles de todos los tipos configurados (JSON, YAML, Markdown, MDX, etc.) y cualquier archivo de traducción local.
* Las traducciones existentes cuyo contenido aún coincide con `gt-lock.json` se omiten. Las demás traducciones locales se suben y pueden reemplazar las traducciones almacenadas; sin un archivo de bloqueo, se suben todas las traducciones locales.
* Como aplica un hash a cada archivo según su ruta y su contenido, los archivos movidos (mismo contenido, nueva ruta) conservan sus traducciones existentes en lugar de volver a traducirse.
* Habilita el CDN en la configuración de tu proyecto antes de publicar. Si la publicación falla, la subida sigue siendo exitosa y el CLI emite una advertencia.

## Sitemap

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