# General Translation Platform: downloadFileBatch
URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/translation/download-file-batch.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Descarga varios archivos traducidos en lotes. Referencia de la API de downloadFileBatch.

Obtén archivos fuente o de traducción en lotes de hasta 100 en lugar de hacer muchas llamadas individuales a [`downloadFile`](/docs/platform/core/reference/gt-class-methods/translation/download-file), lo que reduce la sobrecarga de red.

## Resumen [#overview]

Llama a `downloadFileBatch` con una lista de solicitudes de archivo. Cada solicitud puede corresponder a una traducción (con una `configuración regional`) o a un archivo fuente (sin ella).

```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });

const result = await gt.downloadFileBatch([
  { fileId: 'file-123', branchId: 'branch-456', locale: 'es' },
  { fileId: 'file-123', branchId: 'branch-456', locale: 'fr' },
  { fileId: 'file-123', branchId: 'branch-456', locale: 'de' },
]);
```

Firma:

```typescript
downloadFileBatch(
  requests: DownloadFileBatchRequest,
  options?: DownloadFileBatchOptions
): Promise<DownloadFileBatchResult>
```

*Nota: `downloadFileBatch` requiere una API Key (incluido el alias obsoleto `devApiKey`) y `projectId` en la instancia de GT. De forma predeterminada, los lotes se ejecutan de manera concurrente.*

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

* **Orden.** Vincula cada resultado con su solicitud mediante `fileId`, `branchId`, `versionId` y `locale`, en lugar de por su posición en la respuesta.
* **Códigos de configuración regional.** Si solo una de las grafías o alias solicitados coincide con una configuración regional devuelta, se usa esa grafía. De lo contrario, las configuraciones regionales devueltas siguen las [reglas del constructor](/docs/platform/core/reference/gt-class/constructor#how-it-works). Las grafías solicitadas equivalentes pueden compartir una misma etiqueta en la respuesta.

- **Éxito parcial.** Una respuesta correcta puede contener menos archivos de los solicitados. Si se rechaza una solicitud por lotes, se rechaza el resultado agregado, pero no se revierten ni se detienen los lotes que ya se hayan iniciado.
- **Disponibilidad.** Usa [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) para verificar que los archivos estén listos antes de descargarlos.

* **Formatos binarios.** Los formatos de texto devuelven datos UTF-8 decodificados. `LOTTIE` permanece codificado en base64 para que las aplicaciones que llaman a la API puedan reconstruir el archivo binario `.lottie` sin corromper sus bytes.

## Parámetros [#parameters]

| Parámetro               | Descripción                                | Tipo                       | Opcional | Predeterminado |
| ----------------------- | ------------------------------------------ | -------------------------- | -------- | -------------- |
| [`requests`](#requests) | Lista de objetos de solicitud de archivo.  | `DownloadFileBatchRequest` | No       | —              |
| [`options`](#options)   | Configuración de la solicitud de descarga. | `DownloadFileBatchOptions` | Sí       | —              |

### `requests` [#requests]

**Tipo** `DownloadFileBatchRequest` · **Obligatorio**

Una lista de solicitudes de archivos:

```typescript
type DownloadFileBatchRequest = {
  fileId: string;
  branchId?: string;
  locale?: string;
  versionId?: string;
  useLatestAvailableVersion?: boolean;
}[];
```

| Campo                       | Descripción                                                                                                                                 | Tipo      | Opcional | Predeterminado       |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------- | -------- | -------------------- |
| `fileId`                    | Identificador único del archivo que se va a descargar.                                                                                      | `string`  | No       | —                    |
| `branchId`                  | Rama desde la que se descargará.                                                                                                            | `string`  | Sí       | rama por defecto     |
| `locale`                    | Configuración regional de destino de la traducción. Omítela para descargar el archivo fuente.                                              | `string`  | Sí       | —                    |
| `versionId`                 | ID de la versión que se descargará.                                                                                                         | `string`  | Sí       | versión más reciente |
| `useLatestAvailableVersion` | Si es `true` y no se encuentra el `versionId` especificado, usa en su lugar la versión disponible más reciente en vez de producir un error. | `boolean` | Sí       | `false`              |

### `options` [#options]

**Tipo** `DownloadFileBatchOptions` · **Opcional**

| Campo     | Descripción                                       | Tipo     | Opcional |
| --------- | ------------------------------------------------- | -------- | -------- |
| `timeout` | Tiempo de espera de la solicitud en milisegundos. | `number` | Sí       |

## Devuelve [#returns]

**Tipo** `Promise<DownloadFileBatchResult>`

Se resuelve con un `DownloadFileBatchResult` que contiene los archivos descargados y un recuento, pero no incluye los detalles de `pending`. Para obtenerlos, usa el método `downloadFiles` generado a través del [cliente de API](/docs/platform/core/reference/api-client#endpoint-helpers), que devuelve el contenido en base64:

```typescript
type DownloadFileBatchResult = {
  files: DownloadedFile[];
  count: number;
};

type DownloadedFile = {
  id: string;
  branchId: string;
  fileId: string;
  versionId: string;
  locale?: string; // presente cuando el archivo es una traducción
  fileName?: string; // presente para los archivos fuente (cuando la configuración regional no está presente)
  data: string; // texto UTF-8, o base64 para formatos binarios
  metadata: JsonObject;
  fileFormat: FileFormat;
};
```

| Propiedad            | Descripción                                                                                               | Tipo                                                            |
| -------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| `files`              | Lista de objetos de archivo descargados.                                                                  | `DownloadedFile[]`                                              |
| `count`              | Número de archivos descargados con éxito.                                                                 | `number`                                                        |
| `files[].id`         | Identificador único del registro del archivo descargado.                                                  | `string`                                                        |
| `files[].branchId`   | ID de la rama.                                                                                            | `string`                                                        |
| `files[].fileId`     | ID del archivo.                                                                                           | `string`                                                        |
| `files[].versionId`  | ID de la versión.                                                                                         | `string`                                                        |
| `files[].locale`     | Configuración regional del archivo, presente cuando se trata de una traducción.                           | `string` (optional)                                             |
| `files[].fileName`   | Nombre del archivo original, presente en los archivos fuente.                                             | `string` (optional)                                             |
| `files[].data`       | Contenido de archivo UTF-8 para formatos de texto o contenido binario codificado en base64 para `LOTTIE`. | `string`                                                        |
| `files[].metadata`   | Metadatos específicos del formato del archivo.                                                            | `JsonObject`                                                    |
| `files[].fileFormat` | Formato del archivo (`JSON`, `MDX`, etc.).                                                                | [`FileFormat`](/docs/platform/core/reference/types/file-format) |

## Ejemplos [#examples]

```typescript title="index.ts"
import { GT } from 'generaltranslation';
import type { FileUpload } from 'generaltranslation/types';

const fileContents = '{"greeting":"Hello"}';
const filePath = 'en.json';

// (1) Crear una instancia de GT
const targetLocales = ['es', 'fr', 'de'];
const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

// (2) Subir el archivo
const fileUpload: FileUpload = {
  content: fileContents,
  fileName: filePath,
  fileFormat: 'JSON',
  locale: 'en',
};
const files = [{ source: fileUpload }];
const { uploadedFiles } = await gt.uploadSourceFiles(files, { sourceLocale: 'en' });

// (3) Encolar el trabajo de traducción del archivo
const enqueueResult = await gt.enqueueFiles(uploadedFiles, {
  sourceLocale: 'en',
  targetLocales: targetLocales,
});

// (4) Esperar a que se completen todas las traducciones
const { fileId, versionId, branchId } = uploadedFiles[0];
const result = await gt.awaitJobs(enqueueResult, { timeoutSeconds: 300 });

if (!result.complete || result.jobs.some((job) => job.status !== 'completed')) {
  throw new Error('Translations are not ready to download');
}

// (5) Descargar todas las traducciones en un lote
const downloadResult = await gt.downloadFileBatch(
  targetLocales.map((locale) => ({
    fileId,
    versionId,
    branchId,
    locale,
  }))
);

downloadResult.files.forEach((file) => {
  console.log(`Downloaded ${file.locale}: ${file.fileName}`);
});
```

## Notas [#notes]

* Los archivos de texto se devuelven como cadenas en UTF-8. Decodifica los datos de `LOTTIE` de base64 para escribir el archivo binario `.lottie`.
* Usa [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) para verificar primero que los archivos estén listos para descargarse.
* Relaciona los resultados con las solicitudes mediante sus identificadores de archivo, versión, rama y configuración regional, en lugar de por posición.
* Una respuesta con éxito parcial no es lo mismo que un fallo de la solicitud: si se rechaza una solicitud por lotes, se rechaza el resultado agregado.

## Sitemap

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