# General Translation Platform: setupProject
URL: https://generaltranslation.com/it/docs/platform/core/reference/gt-class-methods/translation/setup-project.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Prepara i file caricati per i workflow di traduzione del progetto. Riferimento API di setupProject.

Inizializza il processo di setup per un progetto di traduzione utilizzando i file caricati in precedenza con General Translation. Crea un job di setup asincrono che analizza i file e li prepara per i workflow di traduzione.

## Panoramica [#overview]

Chiama `setupProject` con i riferimenti ai file restituiti da [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files), facoltativamente con opzioni di setup. Il metodo mette in coda un job di setup (restituendo un `setupJobId`) oppure segnala che il progetto è già configurato.

```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');
}
```

Firma:

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

*Nota: `setupProject` richiede una chiave API (incluso l&#39;alias deprecato `devApiKey`), oltre a `projectId` nell&#39;istanza GT. Devi prima caricare i file con [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files).*

## Come funziona [#how-it-works]

* **Analisi del file.** Il setup analizza il contenuto e la struttura del file per ottimizzare i workflow di traduzione.
* **Job asincrono.** Il job di setup viene eseguito in modo asincrono: monitora l&#39;avanzamento con [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status).
* **Quando richiesto.** Il setup è generalmente richiesto prima di mettere in coda i job di traduzione per i nuovi progetti.
* **Controllo delle versioni.** I riferimenti ai file includono `branchId` per il controllo delle versioni con supporto per i branch.

## Parametri [#parameters]

| Parametro             | Descrizione                                         | Tipo                          | Facoltativo | Predefinito |
| --------------------- | --------------------------------------------------- | ----------------------------- | ----------- | ----------- |
| [`files`](#files)     | Riferimenti a file sorgente caricati in precedenza. | `SetupProjectFileReference[]` | No          | —           |
| [`options`](#options) | Impostazioni per il job di setup.                   | `SetupProjectOptions`         | Sì          | —           |

### `files` [#files]

**Tipo** `SetupProjectFileReference[]` · **Obbligatorio**

Importa `SetupProjectFileReference` da `generaltranslation/types`. Passa gli ID restituiti da [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files):

```typescript
type SetupProjectFileReference = {
  fileId: string;
  versionId: string;
  branchId: string;
};
```

Tutti e tre gli ID sono obbligatori. I nomi e i formati dei file non vengono inviati.

### `options` [#options]

**Tipo** `SetupProjectOptions` · **Facoltativo**

| Campo       | Descrizione                                                                                                    | Tipo       | Facoltativo |
| ----------- | -------------------------------------------------------------------------------------------------------------- | ---------- | ----------- |
| `force`     | Forza la generazione del contesto del progetto; non è un&#39;opzione per invalidare la cache delle traduzioni. | `boolean`  | Sì          |
| `locales`   | locales di destinazione per il progetto.                                                                       | `string[]` | Sì          |
| `timeoutMs` | Timeout in millisecondi per la richiesta all&#39;API.                                                          | `number`   | Sì          |

## Restituisce [#returns]

**Tipo** `Promise<SetupProjectResult>`

Si risolve con un `SetupProjectResult`, un&#39;unione di due varianti:

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

* Quando viene creato un job di setup, viene restituita la variante `queued` con un `setupJobId`.
* Quando il progetto è già configurato, viene restituita la variante `completed` senza alcun ID del job.

| Proprietà    | Descrizione                                                                                                | Tipo                      |
| ------------ | ---------------------------------------------------------------------------------------------------------- | ------------------------- |
| `setupJobId` | Identificatore univoco del job di setup in coda. Presente solo nella variante `queued`.                    | `string`                  |
| `status`     | `'queued'` quando viene creato un job di setup, oppure `'completed'` quando il progetto è già configurato. | `'queued' \| 'completed'` |

## Esempi [#examples]

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

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

// Riferimenti a file da un upload precedente
const fileRefs = [
  {
    fileId: 'file-123',
    versionId: 'version-456',
    branchId: 'branch-789',
  },
  {
    fileId: 'file-789',
    versionId: 'version-012',
    branchId: 'branch-789',
  },
];

const setupResult = await gt.setupProject(fileRefs);

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

  // Attendi il completamento del setup entro un limite di tempo prestabilito.
  const result = await gt.awaitJobs([setupResult.setupJobId], { timeoutSeconds: 300 });
  if (!result.complete || result.jobs.some((job) => job.status !== 'completed')) {
    throw new Error('Project setup did not complete successfully');
  }
} else {
  console.log('Project is already set up — no setup job needed');
}
```

## Note [#notes]

* I file devono essere caricati con [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files) prima di chiamare `setupProject`.
* Il setup del progetto analizza il contenuto e la struttura dei file per ottimizzare i workflow di traduzione.
* Il job di setup viene eseguito in modo asincrono: monitora l&#39;avanzamento con [`checkJobStatus`](/docs/platform/core/reference/gt-class-methods/translation/check-job-status).
* Il setup è in genere necessario prima di mettere in coda i job di traduzione per i nuovi progetti.
* I riferimenti ai file includono `branchId` per il controllo delle versioni con supporto per i branch.

## Sitemap

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