# generaltranslation: General Translation Core SDK: enqueueFiles URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/enqueue-files.mdx --- title: enqueueFiles description: Справка по API для метода enqueueFiles, который ставит задания на перевод файлов в очередь --- ## Обзор Метод `enqueueFiles` ставит в очередь задания на перевод для ранее загруженных исходных файлов. Он принимает ссылки на файлы и создает задания на перевод для указанных целевых локалей. ```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'] }); ``` Вы можете добавить файлы в очередь на перевод только после их загрузки. ## Справочник ### Параметры | Имя | Тип | Описание | | --------- | -------------------- | -------------------------------------------------------- | | `files` | `FileReferenceIds[]` | Массив идентификаторов ссылок на ранее загруженные файлы | | `options` | `EnqueueOptions` | Параметры конфигурации задания на перевод | #### Структура FileReferenceIds ```typescript type FileReferenceIds = { fileId: string; versionId: string; branchId?: string; fileName?: string; fileFormat?: FileFormat; dataFormat?: DataFormat; } ``` | Имя | Тип | Описание | | ------------- | ------------ | ----------------------------------------- | | `fileId` | `string` | Уникальный идентификатор файла | | `versionId` | `string` | Идентификатор версии | | `branchId?` | `string` | Идентификатор ветки (необязательно) | | `fileName?` | `string` | Имя файла (необязательно) | | `fileFormat?` | `FileFormat` | Формат файла (JSON, MD и т. д.) | | `dataFormat?` | `DataFormat` | Формат данных в файле (ICU, I18NEXT, JSX) | #### EnqueueOptions | Имя | Тип | Описание | | ------------------ | ---------- | ---------------------------------------------------------------------------- | | `sourceLocale?` | `string` | Исходная локаль для перевода (по умолчанию — `sourceLocale` экземпляра) | | `targetLocales` | `string[]` | Массив целевых локалей для перевода | | `requireApproval?` | `boolean` | Требуется ли утверждение переводов перед публикацией | | `modelProvider?` | `string` | Конкретный провайдер модели ИИ для перевода | | `force?` | `boolean` | Принудительно запустить повторный перевод, даже если переводы уже существуют | | `timeout?` | `number` | Тайм-аут запроса в миллисекундах | ### Возвращает `Promise` — содержит информацию о задаче и подробности обработки. ```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; } ``` | Свойство | Тип | Описание | | --------- | ------------------------ | ----------------------------------------------------------------------------------------- | | `jobData` | `Record` | Объект, где ключами служат ID заданий, а значения содержат сведения о заданиях на перевод | | `locales` | `string[]` | Список целевых локалей для заданий на перевод | | `message` | `string` | Сообщение о статусе от API | *** ## Пример ```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, } ); console.log(`Задание на перевод создано: ${enqueueResult.jobId}`); // (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 })) ); ``` *** ## Примечания * Сначала нужно загрузить содержимое файла с помощью [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) * Задания на перевод выполняются асинхронно — используйте [`queryFileData`](/docs/core/class/methods/translation/query-file-data) для отслеживания прогресса * Ссылки на файлы содержат `branchId` для корректного управления версиями при использовании ветвления ## Что дальше * См. [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files), чтобы загрузить файлы перед добавлением в очередь * См. [`queryFileData`](/docs/core/class/methods/translation/query-file-data), чтобы отслеживать ход перевода * См. [`downloadFile`](/docs/core/class/methods/translation/download-file), чтобы получить готовые переводы * См. [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status), чтобы проверить статус задачи