# General Translation Platform: enqueueFiles URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/enqueue-files.mdx --- title: enqueueFiles description: Ставит загруженные исходные файлы в очередь на перевод в одну или несколько целевых локалей. Справочник по API для enqueueFiles. --- Ставит в очередь задачи перевода для ранее загруженных исходных файлов в General Translation. Принимает ссылки на файлы и создает отдельную задачу перевода для каждой целевой локали. ## Обзор [#overview] Вызовите `enqueueFiles`, передав ссылки на файлы, возвращённые [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files), и объект параметров со списком целевых локалей. ```typescript const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' }); const result = await gt.enqueueFiles(fileRefs, { sourceLocale: 'en', targetLocales: ['es', 'fr', 'de'], }); ``` Сигнатура: ```typescript enqueueFiles( files: FileReferenceIds[], options: EnqueueFilesOptions ): Promise ``` *Примечание: для `enqueueFiles` в экземпляре GT должны быть указаны `apiKey` (или `devApiKey`) и `projectId`. Поставить файлы в очередь можно только после их загрузки.* ## Как это работает [#how-it-works] * **Асинхронные задачи.** Задачи перевода выполняются асинхронно. Отслеживайте ход выполнения с помощью [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) или дождитесь завершения с помощью [`awaitJobs`](/docs/platform/core/reference/gt-class-methods/translation/await-jobs). * **Одна задача на локаль.** В ответе `jobData` данные сгруппированы по ID задач; для каждой целевой локали создается отдельная задача. * **Управление версиями.** Ссылки на файлы включают `branchId` для управления версиями с поддержкой веток. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | --------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------- | -------------- | ------------ | | [`files`](#files) | ID файловых ссылок из ранее загруженных файлов. | `FileReferenceIds[]` | Нет | — | | [`options`](#options) | Параметры конфигурации для задачи перевода. | [`EnqueueFilesOptions`](/docs/platform/core/reference/types/enqueue-files-options) | Нет | — | ### `files` [#files] **Тип** `FileReferenceIds[]` · **Обязательно** Ссылки на файлы, которые нужно поставить в очередь: ```typescript type FileReferenceIds = { fileId: string; versionId: string; branchId?: string; fileName?: string; fileFormat?: FileFormat; transformFormat?: FileFormat; // запрошенный выходной формат для сгенерированных переводов dataFormat?: DataFormat; }; ``` | Поле | Описание | Тип | Необязательно | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- | ------------- | | `fileId` | Уникальный идентификатор файла. | `string` | Нет | | `versionId` | Идентификатор версии. | `string` | Нет | | `branchId` | Идентификатор ветки. | `string` | Да | | `fileName` | Название файла. | `string` | Да | | `fileFormat` | Формат файла. Один из `GTJSON`, `JSON`, `PO`, `POT`, `YAML`, `MDX`, `MD`, `TS`, `JS`, `HTML`, `TXT` или `TWILIO_CONTENT_JSON`. | `FileFormat` | Да | | `transformFormat` | Формат вывода для сгенерированных переводов. | `FileFormat` | Да | | `dataFormat` | Формат данных в файле (ICU, I18NEXT, JSX, STRING). | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Да | ### `options` [#options] **Тип** [`EnqueueFilesOptions`](/docs/platform/core/reference/types/enqueue-files-options) · **Обязательно** Конфигурация для задачи перевода: | Поле | Описание | Тип | Необязательно | По умолчанию | | --------------- | ---------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | ------------------------- | | `sourceLocale` | Исходная локаль для перевода. | `string` | Да | `sourceLocale` экземпляра | | `targetLocales` | Целевые локали для перевода. | `string[]` | Нет | — | | `modelProvider` | Конкретный провайдер ИИ-модели, который будет использоваться для перевода. | `string` | Да | — | | `force` | Сбрасывает кэшированные переводы и принудительно запускает повторный перевод, даже если переводы уже существуют. | `boolean` | Да | — | | `timeout` | Тайм-аут запроса в миллисекундах. | `number` | Да | — | *Примечание: `requireApproval` был параметром только в 8.x и отсутствует в 9.0.* ## Возвращаемое значение [#returns] **Тип** `Promise` Возвращает `EnqueueFilesResult`, содержащий информацию о задаче и сведения об обработке: ```typescript type EnqueueFilesResult = { jobData: { [jobId: string]: { sourceFileId: string; fileId: string; versionId: string; branchId: string; targetLocale: string; projectId: string; force: boolean; modelProvider?: string; }; }; locales: string[]; // целевые локали для задач message: string; // статусное сообщение от API }; ``` В объекте `jobData` ключами служат ID задач, а каждое значение описывает одну задачу перевода. ## Примеры [#examples] ```typescript title="index.ts" // (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, }); console.log(`Created ${Object.keys(enqueueResult.jobData).length} translation jobs`); // (4) Дождаться завершения всех переводов const { fileId, versionId, branchId } = uploadedFiles[0]; const translatedFileQueries = targetLocales.map((locale) => ({ fileId, versionId, branchId, locale, })); while (true) { const result = await gt.queryFileData({ translatedFiles: translatedFileQueries, }); const allCompleted = result.translatedFiles?.every((file) => file.completedAt !== null); if (allCompleted) { break; } await new Promise((resolve) => setTimeout(resolve, 1000)); } // (5) Скачать файлы const downloadResult = await gt.downloadFileBatch( targetLocales.map((locale) => ({ fileId, branchId, locale, })) ); ``` ## Примечания [#notes] * Сначала нужно загрузить содержимое файла с помощью [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files). * Задачи перевода выполняются асинхронно — используйте [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) или [`awaitJobs`](/docs/platform/core/reference/gt-class-methods/translation/await-jobs), чтобы отслеживать ход выполнения. * Ссылки на файлы включают `branchId` для управления версиями с поддержкой веток.