# General Translation Platform: Управление проектом и файлами URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/project/project-management.mdx --- title: Управление проектом и файлами 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` | | [`queryBranchData`](#query-branch-data) | Найти Branch ID по имени. | `Promise` | | [`createBranch`](#create-branch) | Создать ветку (или вернуть существующую). | `Promise` | | [`getOrphanedFiles`](#orphaned-files) | Найти файлы в ветке, которых больше нет в локальном наборе файлов. | `Promise` | | [`processFileMoves`](#process-moves) | Клонировать исходный файл и переводы под новыми идентификаторами файлов после перемещения или переименования. | `Promise` | | [`publishFiles`](#publish-files) | Опубликовать или снять с публикации файлы в CDN. | `Promise` | | [`submitUserEditDiffs`](#edit-diffs) | Отправить пользовательские правки, чтобы при будущих генерациях сохранялся исходный замысел. | `Promise` | ## `getProjectInfo` [#get-project-info] Получает метаданные аутентифицированного проекта: его название, организацию, локаль по умолчанию, текущую локаль и настройки проверки. ```typescript getProjectInfo(options?: { timeout?: number }): Promise ``` * **`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 ``` * **`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 ``` * **`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 ``` * **`branchId`** — ветка для проверки. * **`fileIds`** — идентификаторы текущих файлов (не осиротевших). * **`options.timeout`** — необязательное время ожидания запроса в миллисекундах. Возвращает `GetOrphanedFilesResult` с `orphanedFiles` (`{ fileId, versionId, fileName }[]`). Большие списки `fileIds` автоматически разбиваются на пакеты, и файл считается осиротевшим только в том случае, если он отсутствует во всех пакетах. ## `processFileMoves` [#process-moves] Сохраняет переводы при перемещении или переименовании файлов, создавая копии исходного файла и их переводов с новыми идентификаторами файлов. ```typescript processFileMoves( moves: MoveMapping[], options?: { branchId?: string; timeout?: number } ): Promise ``` * **`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 ``` Каждая запись представляет собой `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 ``` Каждый `SubmitUserEditDiff` включает `fileName`, `locale`, `diff`, `branchId`, `versionId`, `fileId` и `localContent`. Перед отправкой локали приводятся к канонической форме, а диффы автоматически объединяются в пакет. Промис успешно завершается после успешной отправки.