# General Translation Platform: enqueueFiles
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/enqueue-files.mdx
Docs index: https://generaltranslation.com/llms.txt
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<EnqueueFilesResult>
```

*Примечание: для `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`

**Тип** `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`      | Формат файла.                                      | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Да            |
| `transformFormat` | Выходной формат для сгенерированных переводов.     | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Да            |
| `dataFormat`      | Формат данных в файле (ICU, I18NEXT, JSX, STRING). | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Да            |

### `options`

**Тип** [`EnqueueFilesOptions`](/docs/platform/core/reference/types/enqueue-files-options) · **Обязательно**

Конфигурация для задачи перевода:

| Поле            | Описание                                                                                                         | Тип        | Необязательно | По умолчанию              |
| --------------- | ---------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | ------------------------- |
| `sourceLocale`  | Исходная локаль для перевода.                                                                                    | `string`   | Да            | `sourceLocale` экземпляра |
| `targetLocales` | Целевые локали для перевода.                                                                                     | `string[]` | Нет           | —                         |
| `modelProvider` | Поставщик модели перевода только для enterprise: `ANTHROPIC`, `OPENAI`, `XAI` или `GOOGLE`.                      | `string`   | Да            | —                         |
| `force`         | Сбрасывает кэшированные переводы и принудительно запускает повторный перевод, даже если переводы уже существуют. | `boolean`  | Да            | —                         |
| `timeout`       | Тайм-аут запроса в миллисекундах.                                                                                | `number`   | Да            | —                         |

*Примечание: `requireApproval` был параметром только в 8.x и отсутствует в 9.0.*

## Возвращаемое значение [#returns]

**Тип** `Promise<EnqueueFilesResult>`

Возвращает `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' as const,
  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` для управления версиями с поддержкой веток.

## Sitemap

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