# 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), чтобы проверить статус задачи