# General Translation Platform: Subir traducciones URL: https://generaltranslation.com/es/docs/platform/openapi/reference/files/upload-translations.mdx --- title: Subir traducciones description: Sube archivos traducidos a un Project de General Translation que correspondan a archivos fuente subidos previamente. Referencia de la API para Subir traducciones. method: POST --- Sube archivos ya traducidos para archivos fuente que se cargaron anteriormente. Cada entrada vincula una referencia de archivo fuente con una o más traducciones, con un máximo de 100 entradas por solicitud. ## Descripción general [#overview] ```http POST https://api2.gtx.dev/v2/project/files/upload-translations ``` **Permiso** `project:files:write` · **Límite de tasa** Medio (120/min) Adjunta traducciones existentes a un Project para que se almacenen junto con sus originales. Para subir primero los archivos fuente, usa [Cargar archivos fuente](/docs/platform/openapi/reference/files/upload-source). Si prefieres traducir los archivos fuente con General Translation, consulta [Poner en cola traducciones](/docs/platform/openapi/reference/translation/queue). ## Cómo funciona [#how-it-works] * El `source` de cada entrada identifica un archivo fuente que ya debe existir. Los archivos fuente se relacionan mediante `branchId`, `versionId` y `fileId`; si falta `branchId`, se usa la rama predeterminada. Si no se encuentra un archivo fuente referenciado, la solicitud falla con `400`. * El objeto `source` se valida igual que una carga, por lo que `fileId` usa por defecto un hash de `fileName` y `versionId` usa por defecto un hash del contenido cuando se omiten. * El `content` de cada traducción está codificado en base64 y se decodifica del lado del servidor; se rechaza cualquier base64 no válido o archivo que exceda el tamaño permitido. * Las traducciones heredan `fileId`, `versionId`, `branchId` y `fileName` de su fuente. Establece `transformFormat` para almacenar la traducción en un formato de archivo de salida distinto. * Las traducciones cargadas se marcan como completadas. Si el Project tiene habilitada la aprobación automática, también se marcan como aprobadas. Las traducciones `GTJSON` reciben metadatos de revisión por componente derivados del objeto source. * La lista de configuraciones regionales de cada archivo fuente se actualiza para incluir las configuraciones regionales de las traducciones cargadas. Los archivos se publican en la CDN cuando el Project tiene la CDN habilitada. * Si se envía `sourceLocale` y difiere de la configuración regional predeterminada actual del Project, se actualiza la configuración regional predeterminada del Project. ## Solicitud [#request] ### Cabeceras | Cabecera | Descripción | Obligatorio | | ----------------- | --------------------------------------------------------------------- | ----------- | | `x-gt-api-key` | API key de Project o de Organization. | Sí | | `x-gt-project-id` | ID del proyecto. Obligatorio cuando se usa una clave de Organization. | No | ### Cuerpo **Tipo de contenido** `application/json` | Campo | Descripción | Tipo | Opcional | Predeterminado | | --------------- | ------------------------------------------------------------ | ---------- | -------- | ------------------------------------------------ | | [`data`](#data) | Array de entradas de origen/traducción (1–100). | `object[]` | No | — | | `sourceLocale` | Configuración regional de origen para los archivos cargados. | `string` | Sí | Configuración regional predeterminada de Project | #### `data` [#data] **Tipo** `object[]` · **obligatorio** Cada elemento es `{ "source": { ... }, "translations": [ ... ] }`. El objeto `source` identifica el archivo fuente que se subió previamente: | Campo | Descripción | Tipo | Opcional | Predeterminado | | ---------------- | ----------------------------------------------------------------------------- | -------- | -------- | ------------------- | | `content` | Contenido fuente codificado en Base64. Se aplica el tamaño máximo de archivo. | `string` | No | — | | `fileName` | Nombre del archivo; no puede estar vacío. | `string` | No | — | | `fileFormat` | Identificador del formato de archivo (por ejemplo, `JSON`, `MDX`). | `string` | No | — | | `locale` | Configuración regional del contenido fuente; no puede estar vacía. | `string` | No | — | | `dataFormat` | Formato de datos para contenido estructurado. | `string` | Sí | — | | `fileId` | Identificador estable del archivo. | `string` | Sí | Hash de `fileName` | | `versionId` | Identificador de versión de este contenido. | `string` | Sí | Hash del contenido | | `branchId` | Rama a la que está vinculado el archivo fuente. | `string` | Sí | Rama predeterminada | | `formatMetadata` | Metadatos adicionales específicos del formato. | `object` | Sí | — | Cada elemento de `translations` corresponde a un archivo traducido. Se requiere al menos una traducción por entrada: | Campo | Descripción | Tipo | Opcional | Predeterminado | | ----------------- | -------------------------------------------------------------------------------- | -------- | -------- | -------------------------- | | `content` | Contenido traducido codificado en Base64. Se aplica el tamaño máximo de archivo. | `string` | No | — | | `fileName` | Nombre del archivo; no puede estar vacío. | `string` | No | — | | `fileFormat` | Identificador del formato de archivo. | `string` | No | — | | `locale` | Configuración regional de destino de la traducción; no puede estar vacía. | `string` | No | — | | `dataFormat` | Formato de datos para contenido estructurado. | `string` | Sí | — | | `transformFormat` | Formato de archivo de salida con el que se almacenará la traducción. | `string` | Sí | Formato del archivo fuente | ## Respuesta [#response] **Estado** `201 Created` ```json title="Response" { "uploadedFiles": [ { "branchId": "br_...", "fileId": "file_...", "versionId": "ver_...", "fileName": "en/common.json", "locale": "es", "fileFormat": "JSON", "dataFormat": "JSON" } ], "count": 1, "message": "Successfully uploaded 1 translation file(s)" } ``` ## Errores [#errors] | Estado | Causa | | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | Cuerpo de la solicitud no válido, configuración regional o formato no válidos, error de decodificación, archivo demasiado grande o no se encontró el archivo fuente referenciado. | | `401` | Falta la API Key o no es válida. | | `403` | La API Key no tiene `project:files:write`. | | `429` | Se superó el límite de solicitudes. | | `503` | Servidor ocupado; reintente con backoff. | ## Ejemplo [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/files/upload-translations \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "sourceLocale": "en", "data": [ { "source": { "content": "eyJoZWxsbyI6ICJIZWxsbyJ9", "fileName": "en/common.json", "fileFormat": "JSON", "locale": "en" }, "translations": [ { "content": "eyJoZWxsbyI6ICJIb2xhIn0=", "fileName": "en/common.json", "fileFormat": "JSON", "locale": "es" } ] } ] }' ```