# 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 должны быть указаны API-ключ (включая устаревший алиас `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`   | Да            | —                         |

Неподдерживаемые значения `modelProvider` отклоняются ещё до отправки запроса. (См. [допустимые поставщики и права доступа](/docs/platform/core/reference/types/enqueue-files-options#modelprovider)).

*Примечание: `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; // человекочитаемая сводка; формулировка может измениться
};
```

В объекте `jobData` ключами служат ID задач, а каждое значение описывает одну задачу перевода.

## Примеры [#examples]

```typescript title="index.ts"
import { GT } from 'generaltranslation';
import type { FileUpload } from 'generaltranslation/types';

const fileContents = '{"greeting":"Hello"}';
const filePath = 'en.json';

// (1) Создать экземпляр GT
const targetLocales = ['es', 'fr', 'de'];
const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

// (2) Загрузить файл
const fileUpload: 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 result = await gt.awaitJobs(enqueueResult, { timeoutSeconds: 300 });
if (!result.complete || result.jobs.some((job) => job.status !== 'completed')) {
  throw new Error('Translations are not ready to download');
}
// Если новых задач нет, возможно, запрошенные переводы уже готовы.

// (5) Скачать файлы
const downloadResult = await gt.downloadFileBatch(
  targetLocales.map((locale) => ({
    fileId,
    versionId,
    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.
