# General Translation Platform: setupProject
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/setup-project.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Подготовка загруженных файлов для рабочих процессов перевода проекта. Справочник API для setupProject.

Запускает процесс настройки проекта перевода с использованием файлов, ранее загруженных в General Translation. Создаёт асинхронную задачу настройки, которая анализирует файлы и подготавливает их для рабочих процессов перевода.

## Обзор [#overview]

Вызовите `setupProject`, передав ссылки на файлы из [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files) и при необходимости параметры настройки. В результате либо в очередь ставится задача настройки (возвращается `setupJobId`), либо сообщается, что проект уже настроен.

```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });

const setupResult = await gt.setupProject(fileRefs, { timeoutMs: 30000 });
if (setupResult.status === 'queued') {
  console.log(`Setup job created: ${setupResult.setupJobId}`);
} else {
  console.log('Project is already set up');
}
```

Сигнатура:

```typescript
setupProject(
  files: FileReference[],
  options?: SetupProjectOptions
): Promise<SetupProjectResult>
```

*Примечание: для `setupProject` в экземпляре GT требуются `apiKey` (или `devApiKey`) и `projectId`. Сначала необходимо загрузить исходные файлы с помощью [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files).*

## Как это работает [#how-it-works]

* **Анализ файла.** Этап настройки анализирует содержимое и структуру файла, чтобы оптимизировать рабочий процесс перевода.
* **Асинхронная задача.** Задача настройки выполняется асинхронно — отслеживайте её статус с помощью [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status).
* **Когда это требуется.** Настройка обычно требуется перед постановкой в очередь задач перевода для новых проектов.
* **Управление версиями.** Ссылки на файлы включают `branchId` для управления версиями с поддержкой веток.

## Параметры [#parameters]

| Параметр              | Описание                                    | Тип                   | Необязательный | По умолчанию |
| --------------------- | ------------------------------------------- | --------------------- | -------------- | ------------ |
| [`files`](#files)     | Ссылки на ранее загруженные исходные файлы. | `FileReference[]`     | Нет            | —            |
| [`options`](#options) | Настройки для задачи настройки.             | `SetupProjectOptions` | Да             | —            |

### `files` [#files]

**Тип** `FileReference[]` · **Обязательно**

Ссылки на файлы, которые возвращает [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files):

```typescript
type FileReference = {
  fileId: string;
  versionId: string;
  branchId: string;
  fileName: string;
  fileFormat: FileFormat;
  transformFormat?: FileFormat; // запрошенный формат вывода для сгенерированных переводов
  dataFormat?: DataFormat;
};
```

В `FileReference` обязательны и `fileName`, и `fileFormat`; `transformFormat` и `dataFormat` — необязательны.

### `options` [#options]

**Тип** `SetupProjectOptions` · **Необязательно**

| Поле        | Описание                                                                                | Тип        | Необязательно |
| ----------- | --------------------------------------------------------------------------------------- | ---------- | ------------- |
| `force`     | Принудительно повторно выполнить настройку, сбросив существующие кэшированные переводы. | `boolean`  | Да            |
| `locales`   | Целевые локали проекта.                                                                 | `string[]` | Да            |
| `timeoutMs` | Тайм-аут API-запроса в миллисекундах.                                                   | `number`   | Да            |

## Возвращает [#returns]

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

Возвращает `SetupProjectResult` — объединение двух вариантов:

```typescript
type SetupProjectResult =
  | { setupJobId: string; status: 'queued' }
  | { status: 'completed' };
```

* При создании задачи настройки возвращается вариант `queued` с `setupJobId`.
* Если проект уже настроен, возвращается вариант `completed` без идентификатора задачи.

| Свойство     | Описание                                                                                                   | Тип                       |
| ------------ | ---------------------------------------------------------------------------------------------------------- | ------------------------- |
| `setupJobId` | Уникальный идентификатор поставленной в очередь задачи настройки. Присутствует только у варианта `queued`. | `string`                  |
| `status`     | `'queued'`, если была создана задача настройки, или `'completed'`, если проект уже настроен.               | `'queued' \| 'completed'` |

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

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

const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

// Ссылки на файлы из предыдущей загрузки
const fileRefs = [
  {
    fileId: 'file-123',
    versionId: 'version-456',
    branchId: 'branch-789',
    fileName: 'app.json',
    fileFormat: 'JSON',
  },
  {
    fileId: 'file-789',
    versionId: 'version-012',
    branchId: 'branch-789',
    fileName: 'content.md',
    fileFormat: 'MD',
  },
];

const setupResult = await gt.setupProject(fileRefs);

if (setupResult.status === 'queued') {
  console.log(`Setup initiated with job ID: ${setupResult.setupJobId}`);

  // Отслеживание статуса задачи (checkJobStatus возвращает плоский массив)
  const jobStatus = await gt.checkJobStatus([setupResult.setupJobId]);
  console.log(`Job status: ${jobStatus[0].status}`);
} else {
  console.log('Project is already set up — no setup job needed');
}
```

## Заметки [#notes]

* Перед вызовом `setupProject` файлы нужно загрузить с помощью [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files).
* При настройке проекта анализируются содержимое и структура файлов, чтобы оптимизировать рабочий процесс перевода.
* Задача настройки выполняется асинхронно — отслеживайте её status с помощью [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status).
* Настройка обычно требуется перед постановкой в очередь задач перевода для новых проектов.
* Ссылки на файлы включают `branchId` для управления версиями с поддержкой веток.

## Sitemap

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