# generaltranslation: General Translation Core SDK: downloadFileBatch URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/download-file-batch.mdx --- title: downloadFileBatch description: Справка по API для метода downloadFileBatch, который позволяет скачать несколько файлов одним запросом --- ## Обзор Метод `downloadFileBatch` позволяет загрузить несколько исходных файлов или файлов перевода за один пакетный запрос. ```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' } ]); ``` **Эффективность пакетной загрузки:** Этот метод оптимизирован для загрузки нескольких файлов за один вызов API, что уменьшает сетевые накладные расходы и повышает производительность по сравнению с несколькими отдельными вызовами `downloadFile`. ## Справочник ### Параметры | Название | Тип | Описание | | ---------- | -------------------------- | ---------------------------------------------- | | `requests` | `DownloadFileBatchRequest` | Массив объектов запросов файлов | | `options?` | `DownloadFileBatchOptions` | Необязательные параметры запроса на скачивание | #### DownloadFileBatchRequest ```typescript type DownloadFileBatchRequest = { fileId: string; branchId?: string; locale?: string; versionId?: string; useLatestAvailableVersion?: boolean; }[]; ``` | Имя | Тип | Описание | | ---------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `fileId` | `string` | Уникальный идентификатор скачиваемого файла | | `branchId?` | `string` | Идентификатор ветки, из которой нужно скачать файл. Если не указан, используется ветка по умолчанию | | `locale?` | `string` | Целевая локаль перевода. Если не указана, будет скачан исходный файл | | `versionId?` | `string` | Идентификатор скачиваемой версии. Если не указан, используется последняя версия | | `useLatestAvailableVersion?` | `boolean` | Если `true` и указанная `versionId` не найдена, вместо ошибки используется последняя доступная версия. Значение по умолчанию — `false` | #### DownloadFileBatchOptions | Имя | Тип | Описание | | ---------- | -------- | -------------------------------- | | `timeout?` | `number` | Тайм-аут запроса в миллисекундах | ### Возвращаемое значение `Promise` — содержит загруженные файлы и метаданные. ```typescript type DownloadFileBatchResult = { files: File[]; count: number; } ``` | Свойство | Тип | Описание | | -------- | -------- | ------------------------------------ | | `files` | `File[]` | Массив объектов скачанных файлов | | `count` | `number` | Количество файлов, скачанных успешно | #### Структура файлов ```typescript type File = { fileId: string; branchId?: string; locale?: string; versionId?: string; fileName: string; data: string; } ``` | Свойство | Тип | Описание | | ----------- | -------- | ------------------------------------ | | `fileId` | `string` | Идентификатор файла | | `branchId` | `string` | Идентификатор ветки | | `locale` | `string` | Локаль файла (если это перевод) | | `versionId` | `string` | Идентификатор версии | | `fileName` | `string` | Оригинальное имя файла | | `data` | `string` | Содержимое файла в виде строки UTF-8 | *** ## Примеры ```typescript title="index.ts" copy // (1) Создать экземпляр GT const targetLocales = ['es', 'fr', 'de']; const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key', }); // (2) Загрузить файл const fileUpload = { content: fileContents, fileName: filePath, fileFormat: 'JSON', locale: 'en', }; const files = [ { source: fileUpload } ]; const { uploadedFiles } = await gt.uploadSourceFiles( files, { sourceLocale: 'en' } ); // (3) Добавить задачу перевода файла в очередь const enqueueResult = await gt.enqueueFiles( uploadedFiles, { sourceLocale: 'en', targetLocales: targetLocales, } ); // (4) Дождаться завершения всех переводов const { fileId, versionId, branchId } = uploadedFiles[0]; const result = await gt.awaitJobs(enqueueResult); if (!result.complete) { console.error('Некоторые задачи не завершились вовремя'); } // (5) Скачать все переводы в пакетном режиме const downloadResult = await gt.downloadFileBatch( targetLocales.map((locale) => ({ fileId, branchId, locale })) ); downloadResult.files.forEach(file => { console.log(`Скачано ${file.locale}: ${file.fileName}`); }); ``` *** ## Примечания * Файлы возвращаются в виде строк UTF-8 * Сначала используйте [`queryFileData`](/docs/core/class/methods/translation/query-file-data), чтобы убедиться, что файлы готовы к скачиванию * По возможности файлы возвращаются в том же порядке, что и запрошенные элементы * Ошибка скачивания отдельных файлов при пакетной загрузке не приводит к сбою всей пакетной загрузки ## Следующие шаги * См. [`downloadFile`](/docs/core/class/methods/translation/download-file) для скачивания отдельного файла * См. [`queryFileData`](/docs/core/class/methods/translation/query-file-data), чтобы проверить, готовы ли файлы к скачиванию * См. [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files), чтобы запустить задания перевода