# General Translation Platform: Управление проектом и файлами
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/project/project-management.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Управляйте информацией о проекте General Translation, ветками, перемещением файлов, публикацией в CDN и дифф-изменениями правок из экземпляра GT. Справочник API по методам управления проектом и файлами.

Низкоуровневые методы экземпляра [GT](/docs/platform/core/reference/gt-class/constructor) для управления метаданными проекта, ветками, жизненным циклом файлов и историей изменений. В основном они используются инструментами, такими как [CLI](/docs/cli/quickstart); большинство приложений вместо этого использует более высокоуровневые [методы перевода](/docs/platform/core/reference/gt-class-methods/translation/translate).

*Примечание: каждый метод на этой странице обращается к API General Translation и требует API-ключ на экземпляре [`GT`](/docs/platform/core/reference/gt-class/constructor). Коды локалей в аргументах нормализуются к их канонической форме перед отправкой запроса.*

| Метод                                   | Описание                                                                                                      | Возвращает                        |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| [`getProjectInfo`](#get-project-info)   | Получить название аутентифицированного проекта, locales и настройки проверки.                                 | `Promise<ProjectInfoResult>`      |
| [`queryBranchData`](#query-branch-data) | Найти Branch ID по имени.                                                                                     | `Promise<BranchDataResult>`       |
| [`createBranch`](#create-branch)        | Создать ветку (или вернуть существующую).                                                                     | `Promise<CreateBranchResult>`     |
| [`getOrphanedFiles`](#orphaned-files)   | Найти файлы в ветке, которых больше нет в локальном наборе файлов.                                            | `Promise<GetOrphanedFilesResult>` |
| [`processFileMoves`](#process-moves)    | Клонировать исходный файл и переводы под новыми идентификаторами файлов после перемещения или переименования. | `Promise<ProcessMovesResponse>`   |
| [`publishFiles`](#publish-files)        | Опубликовать или снять с публикации файлы в CDN.                                                              | `Promise<PublishFilesResult>`     |
| [`submitUserEditDiffs`](#edit-diffs)    | Отправить пользовательские правки, чтобы при будущих генерациях сохранялся исходный замысел.                  | `Promise<void>`                   |

## `getProjectInfo` [#get-project-info]

Получает метаданные аутентифицированного проекта: его название, организацию, локаль по умолчанию, текущую локаль и настройки проверки.

```typescript
getProjectInfo(options?: { timeout?: number }): Promise<ProjectInfoResult>
```

* **`options.timeout`** — необязательный тайм-аут запроса в миллисекундах.

Возвращает `ProjectInfoResult`:

| Field            | Description                                                         | Type                 |
| ---------------- | ------------------------------------------------------------------- | -------------------- |
| `id`             | ID проекта.                                                         | `string`             |
| `name`           | Название проекта.                                                   | `string`             |
| `orgId`          | ID организации.                                                     | `string`             |
| `defaultLocale`  | Локаль проекта по умолчанию (исходная).                             | `string`             |
| `currentLocales` | Настроенные целевые локали проекта.                                 | `string[]`           |
| `autoApprove`    | Указывает, будут ли переводы автоматически одобряться без проверки. | `boolean` (optional) |

```typescript
const info = await gt.getProjectInfo();
console.log(info.defaultLocale, info.currentLocales);
```

## `queryBranchData` [#query-branch-data]

Сопоставляет имена веток с соответствующими записями веток и возвращает ветку проекта по умолчанию.

```typescript
queryBranchData(query: { branchNames: string[] }): Promise<BranchDataResult>
```

* **`query.branchNames`** — имена веток, которые нужно найти.

Возвращает `BranchDataResult` с `branches` (`{ id, name }[]`) и `defaultBranch` (`{ id, name }` или `null`).

```typescript
const { branches, defaultBranch } = await gt.queryBranchData({
  branchNames: ['main'],
});
```

## `createBranch` [#create-branch]

Создаёт ветку или возвращает существующую, если ветка с таким именем уже есть.

```typescript
createBranch(query: {
  branchName: string;
  defaultBranch: boolean;
}): Promise<CreateBranchResult>
```

* **`query.branchName`** — имя ветки, которую нужно создать.
* **`query.defaultBranch`** — является ли эта ветка веткой проекта по умолчанию.

Возвращает `CreateBranchResult` с созданной веткой `branch` (`{ id, name }`).

```typescript
const { branch } = await gt.createBranch({
  branchName: 'feature/new-copy',
  defaultBranch: false,
});
```

## `getOrphanedFiles` [#orphaned-files]

Возвращает файлы, которые существуют в ветке, но чьи идентификаторы отсутствуют в переданном списке, — скорее всего, эти файлы были локально перемещены, переименованы или удалены. Используется для определения перемещений.

```typescript
getOrphanedFiles(
  branchId: string,
  fileIds: string[],
  options?: { timeout?: number }
): Promise<GetOrphanedFilesResult>
```

* **`branchId`** — ветка для проверки.
* **`fileIds`** — идентификаторы текущих файлов (не осиротевших).
* **`options.timeout`** — необязательное время ожидания запроса в миллисекундах.

Возвращает `GetOrphanedFilesResult` с `orphanedFiles` (`{ fileId, versionId, fileName }[]`). Большие списки `fileIds` автоматически разбиваются на пакеты, и файл считается осиротевшим только в том случае, если он отсутствует во всех пакетах.

## `processFileMoves` [#process-moves]

Сохраняет переводы при перемещении или переименовании файлов, создавая копии исходного файла и их переводов с новыми идентификаторами файлов.

```typescript
processFileMoves(
  moves: MoveMapping[],
  options?: { branchId?: string; timeout?: number }
): Promise<ProcessMovesResponse>
```

* **`moves`** — массив сопоставлений `{ oldFileId, newFileId, newFileName }`.
* **`options.branchId`** — ветка, к которой применяются перемещения.
* **`options.timeout`** — необязательный тайм-аут запроса в миллисекундах.

Возвращает `ProcessMovesResponse` с `results` для каждого перемещения и `summary` (`{ total, succeeded, failed }`). Перемещения автоматически объединяются в пакет.

```typescript
const result = await gt.processFileMoves(
  [{ oldFileId: 'abc123', newFileId: 'def456', newFileName: 'locales/en.json' }],
  { branchId: 'main' }
);
```

## `publishFiles` [#publish-files]

Публикует или снимает с публикации исходные файлы и переводы на CDN.

```typescript
publishFiles(files: PublishFileEntry[]): Promise<PublishFilesResult>
```

Каждая запись представляет собой `PublishFileEntry`:

| Field       | Description                                              | Type      | Optional |
| ----------- | -------------------------------------------------------- | --------- | -------- |
| `fileId`    | Файл, который нужно опубликовать или снять с публикации. | `string`  | Нет      |
| `versionId` | Версия файла.                                            | `string`  | Нет      |
| `publish`   | `true` — опубликовать, `false` — снять с публикации.     | `boolean` | Нет      |
| `branchId`  | Ветка, к которой относится файл.                         | `string`  | Да       |
| `fileName`  | Имя файла.                                               | `string`  | Да       |

Возвращает `PublishFilesResult` с `results` по каждому файлу (`{ fileId, versionId, branchId, success, locale?, error? }`). Наличие `locale` в результате указывает на перевод; отсутствие — на исходный файл.

## `submitUserEditDiffs` [#edit-diffs]

Отправляет пользовательские правки в существующие переводы, чтобы при последующих генерациях сохранялся исходный замысел пользователя.

```typescript
submitUserEditDiffs(payload: {
  diffs: SubmitUserEditDiff[];
}): Promise<void>
```

Каждый `SubmitUserEditDiff` включает `fileName`, `locale`, `diff`, `branchId`, `versionId`, `fileId` и `localContent`. Перед отправкой экземпляр разрешает пользовательские алиасы локалей, после чего API разрешает каждую локаль до поддерживаемой локали, используемой для хранения. Эквивалентные коды, такие как `ja` и `ja-JP`, обновляют один и тот же сохранённый перевод. Диффы автоматически объединяются в пакет. Промис успешно завершается после успешной отправки.

## Sitemap

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