# General Translation Platform: Gestión de proyectos y archivos URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/project/project-management.mdx --- title: Gestión de proyectos y archivos description: Gestiona la información de un proyecto de General Translation, las ramas, los movimientos de archivos, la publicación en la CDN y los diffs de edición desde una instancia de GT. Referencia de la API para los métodos de gestión de proyectos y archivos. --- Métodos de bajo nivel en una instancia de [GT](/docs/platform/core/reference/gt-class/constructor) para gestionar los metadatos de un proyecto, las ramas, el ciclo de vida de los archivos y el historial de ediciones. Se usan principalmente en herramientas como la [CLI](/docs/cli/quickstart); la mayoría de las aplicaciones usan en su lugar los [métodos de traducción](/docs/platform/core/reference/gt-class-methods/translation/translate) de nivel superior. *Nota: todos los métodos de esta página llaman a la API de General Translation y requieren una API key en la instancia de [`GT`](/docs/platform/core/reference/gt-class/constructor). Los códigos de configuración regional de los argumentos se normalizan a su forma canónica antes de realizar la solicitud.* | Método | Descripción | Devuelve | | --------------------------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------- | | [`getProjectInfo`](#get-project-info) | Obtiene el nombre, los locales y la configuración de revisión del proyecto autenticado. | `Promise` | | [`queryBranchData`](#query-branch-data) | Busca los Branch ID por nombre. | `Promise` | | [`createBranch`](#create-branch) | Crea una rama (o devuelve una existente). | `Promise` | | [`getOrphanedFiles`](#orphaned-files) | Encuentra archivos de una rama que ya no están en el conjunto local de archivos. | `Promise` | | [`processFileMoves`](#process-moves) | Clona archivos de origen y traducciones con nuevos ID de archivo después de un movimiento o cambio de nombre. | `Promise` | | [`publishFiles`](#publish-files) | Publica o retira archivos de la CDN. | `Promise` | | [`submitUserEditDiffs`](#edit-diffs) | Envía las ediciones del usuario para que las generaciones futuras conserven la intención. | `Promise` | ## `getProjectInfo` [#get-project-info] Obtiene los metadatos del proyecto autenticado: su nombre, organización, los locales predeterminado y actuales, y la configuración de revisión. ```typescript getProjectInfo(options?: { timeout?: number }): Promise ``` * **`options.timeout`** — tiempo de espera opcional de la solicitud en milisegundos. Devuelve un `ProjectInfoResult`: | Campo | Descripción | Tipo | | ---------------- | ------------------------------------------------------------------------ | -------------------- | | `id` | ID del proyecto. | `string` | | `name` | Nombre del proyecto. | `string` | | `orgId` | ID de la organización. | `string` | | `defaultLocale` | La configuración regional predeterminada (de origen) del proyecto. | `string` | | `currentLocales` | Los locales de destino configurados para el proyecto. | `string[]` | | `autoApprove` | Si las traducciones se aprueban automáticamente sin revisión. | `boolean` (opcional) | ```typescript const info = await gt.getProjectInfo(); console.log(info.defaultLocale, info.currentLocales); ``` ## `queryBranchData` [#query-branch-data] Resuelve los nombres de las ramas a sus registros de rama correspondientes y devuelve la rama predeterminada del proyecto. ```typescript queryBranchData(query: { branchNames: string[] }): Promise ``` * **`query.branchNames`** — los nombres de las ramas que se van a consultar. Devuelve un `BranchDataResult` con `branches` (`{ id, name }[]`) y `defaultBranch` (`{ id, name }` o `null`). ```typescript const { branches, defaultBranch } = await gt.queryBranchData({ branchNames: ['main'], }); ``` ## `createBranch` [#create-branch] Crea una rama o devuelve la rama existente si ya hay una con ese nombre. ```typescript createBranch(query: { branchName: string; defaultBranch: boolean; }): Promise ``` * **`query.branchName`** — el nombre de la rama que se va a crear. * **`query.defaultBranch`** — si esta rama es la rama predeterminada del proyecto. Devuelve un `CreateBranchResult` con la `branch` que se creó (`{ id, name }`). ```typescript const { branch } = await gt.createBranch({ branchName: 'feature/new-copy', defaultBranch: false, }); ``` ## `getOrphanedFiles` [#orphaned-files] Devuelve los archivos que existen en una rama, pero cuyos ID de archivo no figuran en la lista proporcionada; es decir, archivos que probablemente se movieron, cambiaron de nombre o se eliminaron localmente. Se usa para detectar movimientos. ```typescript getOrphanedFiles( branchId: string, fileIds: string[], options?: { timeout?: number } ): Promise ``` * **`branchId`** — la rama que se debe comprobar. * **`fileIds`** — los ID de archivo actuales (no huérfanos). * **`options.timeout`** — tiempo de espera opcional de la solicitud, en milisegundos. Devuelve un `GetOrphanedFilesResult` con `orphanedFiles` (`{ fileId, versionId, fileName }[]`). Las listas grandes de `fileIds` se procesan automáticamente por lotes, y un archivo solo se considera huérfano si no aparece en ninguno de los lotes. ## `processFileMoves` [#process-moves] Conserva las traducciones cuando se mueven o renombran archivos, clonando los archivos de origen y sus traducciones con nuevos ID de archivo. ```typescript processFileMoves( moves: MoveMapping[], options?: { branchId?: string; timeout?: number } ): Promise ``` * **`moves`** — una lista de mapeos de `{ oldFileId, newFileId, newFileName }`. * **`options.branchId`** — la rama a la que se aplican los movimientos. * **`options.timeout`** — tiempo de espera opcional de la solicitud, en milisegundos. Devuelve un `ProcessMovesResponse` con `results` para cada movimiento y un `summary` (`{ total, succeeded, failed }`). Los movimientos se procesan automáticamente por lotes. ```typescript const result = await gt.processFileMoves( [{ oldFileId: 'abc123', newFileId: 'def456', newFileName: 'locales/en.json' }], { branchId: 'main' } ); ``` ## `publishFiles` [#publish-files] Publica o deja de publicar archivos de origen y traducciones en la CDN. ```typescript publishFiles(files: PublishFileEntry[]): Promise ``` Cada entrada es un `PublishFileEntry`: | Field | Description | Type | Optional | | ----------- | ------------------------------------------------------------- | --------- | -------- | | `fileId` | El archivo que se va a publicar o retirar de la publicación. | `string` | No | | `versionId` | La versión del archivo. | `string` | No | | `publish` | `true` para publicar, `false` para retirar de la publicación. | `boolean` | No | | `branchId` | La rama a la que pertenece el archivo. | `string` | Sí | | `fileName` | El nombre del archivo. | `string` | Sí | Devuelve un `PublishFilesResult` con `results` por archivo (`{ fileId, versionId, branchId, success, locale?, error? }`). Una `configuración regional` en un resultado indica una traducción; su ausencia indica un archivo fuente. ## `submitUserEditDiffs` [#edit-diffs] Envía las ediciones del usuario a las traducciones existentes para que las futuras generaciones conserven la intención del usuario. ```typescript submitUserEditDiffs(payload: { diffs: SubmitUserEditDiff[]; }): Promise ``` Cada `SubmitUserEditDiff` incluye `fileName`, `locale`, `diff`, `branchId`, `versionId`, `fileId` y `localContent`. Los locales se normalizan a su forma canónica antes del envío, y los diffs se procesan automáticamente en lote. Se resuelve cuando el envío se completa correctamente.