# General Translation Platform: createTag URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/create-tag.mdx --- title: createTag description: Создать тег для группировки или идентификации версий файлов. Справочник API для createTag. --- Создаёт или обновляет тег перевода в General Translation, связывая набор исходных файлов с пользовательским идентификатором тега и необязательным сообщением. Теги помечают версии перевода в Dashboard понятными названиями вместо хешей. ## Обзор [#overview] Вызовите `createTag`, указав идентификатор тега и ссылки на файлы, которые нужно с ним связать. Возвращает созданный или обновлённый тег. ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.createTag({ tagId: 'v2.1.0', files: uploadedFiles.map((f) => ({ fileId: f.fileId, versionId: f.versionId, branchId: f.branchId, })), message: 'Added checkout page translations', }); ``` Сигнатура: ```typescript createTag(options: CreateTagOptions): Promise ``` *Примечание: для `createTag` в экземпляре GT должны быть указаны `apiKey` (или `devApiKey`) и `projectId`.* ## Как это работает [#how-it-works] * **Upsert.** Если тег с тем же `tagId` уже существует, он обновляется новыми ссылками на файлы или создаётся, если его ещё нет. * **Порядок.** Теги создаются после загрузки исходного файла, но до настройки перевода и постановки в очередь. * **Не критично в CLI.** Создание тега не является критичным в рабочем процессе CLI — сбои не блокируют переводы. * **Интеграция с CLI.** Флаги CLI `--tag` и `-m` используют этот метод внутри. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | --------------------- | ------------------------ | ------------------ | -------------- | ------------ | | [`options`](#options) | Настройки создания тега. | `CreateTagOptions` | Нет | — | ### `options` [#options] **Тип** `CreateTagOptions` · **Обязательно** Параметры создания тега: | Поле | Описание | Тип | Необязательно | | --------- | ------------------------------------------------------------------------- | -------------------------- | ------------- | | `tagId` | Уникальный идентификатор тега (например, `"v2.1.0"` или хеш коммита Git). | `string` | Нет | | `files` | Ссылки на файлы, которые нужно связать с этим тегом. | `CreateTagFileReference[]` | Нет | | `message` | Описание тега. | `string` | Да | Каждый `CreateTagFileReference` указывает на версию ранее загруженного файла: | Поле | Описание | Тип | Необязательно | | ----------- | --------------------------------- | -------- | ------------- | | `fileId` | ID файла из предыдущей загрузки. | `string` | Нет | | `versionId` | ID версии из предыдущей загрузки. | `string` | Нет | | `branchId` | ID ветки из предыдущей загрузки. | `string` | Нет | ## Возвращает [#returns] **Тип** `Promise` После выполнения возвращает `CreateTagResult`, содержащий созданный или обновлённый тег: ```typescript type CreateTagResult = { tag: { id: string; tagId: string; message: string | null; createdAt: string; updatedAt: string; }; }; ``` | Свойство | Описание | Тип | | --------------- | ---------------------------------------------------- | ---------------- | | `tag.id` | Внутренний идентификатор тега. | `string` | | `tag.tagId` | Идентификатор тега, заданный пользователем. | `string` | | `tag.message` | Сообщение тега, если задано. | `string \| null` | | `tag.createdAt` | Временная метка создания тега в формате ISO. | `string` | | `tag.updatedAt` | Временная метка последнего обновления в формате ISO. | `string` | ## Примеры [#examples] ```typescript // Базовое использование: пометить загруженные файлы номером версии import { GT } from 'generaltranslation'; const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id', }); // Сначала загрузить исходные файлы const uploadResult = await gt.uploadSourceFiles(files, { sourceLocale: 'en', }); // Пометить загруженные файлы тегом const tagResult = await gt.createTag({ tagId: 'v2.1.0', files: uploadResult.uploadedFiles.map((f) => ({ fileId: f.fileId, versionId: f.versionId, branchId: f.branchId, })), message: 'Release 2.1 translations', }); console.log(`Tagged as ${tagResult.tag.tagId}`); ``` ```typescript // Тег с хешем git-коммита import { execSync } from 'node:child_process'; const commitHash = execSync('git rev-parse --short HEAD', { encoding: 'utf-8', }).trim(); const commitMessage = execSync('git log -1 --format=%s', { encoding: 'utf-8', }).trim(); const tagResult = await gt.createTag({ tagId: commitHash, files: uploadResult.uploadedFiles.map((f) => ({ fileId: f.fileId, versionId: f.versionId, branchId: f.branchId, })), message: commitMessage, }); ``` ## Заметки [#notes] * Если тег с тем же `tagId` уже существует, он обновляется или создаётся с новыми ссылками на файлы. * Теги создаются после загрузки исходного файла, но до настройки перевода и постановки в очередь. * Создание тегов не является критичным в рабочем процессе CLI — сбои не блокируют переводы. * Флаги `--tag` и `-m` в CLI используют этот метод.