# General Translation Platform: uploadSourceFiles
URL: https://generaltranslation.com/fr/docs/platform/core/reference/gt-class-methods/translation/upload-source-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Téléversez des fichiers source dans un projet avant de mettre la traduction en file d’attente. Référence API pour uploadSourceFiles.

Téléverse des fichiers source sur la plateforme General Translation pour le traitement de la traduction. Il s’agit généralement de la première étape d’un workflow de traduction de fichiers, avant de configurer un projet ou de mettre des jobs de traduction en file d’attente.

## Vue d’ensemble [#overview]

Appelez `uploadSourceFiles` avec un tableau de fichiers et un objet d’options qui définit le paramètre régional de la source. La méthode renvoie les références des fichiers téléversés, que vous utiliserez aux étapes suivantes.

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

const result = await gt.uploadSourceFiles(files, {
  sourceLocale: 'en',
});
```

Signature :

```typescript
uploadSourceFiles(
  files: { source: FileUpload }[],
  options: UploadFilesOptions
): Promise<UploadFilesResponse>
```

*Remarque : `uploadSourceFiles` nécessite une `apiKey` (ou `devApiKey`) ainsi qu’un `projectId` sur l’instance GT.*

## Fonctionnement [#how-it-works]

* **Encodage des fichiers.** Le contenu textuel est automatiquement encodé en Base64 pour être transmis en toute sécurité. Le contenu binaire `LOTTIE` doit déjà être encodé en Base64.
* **Références de fichiers.** Les références de fichiers renvoyées (y compris `fileId`, `versionId` et `branchId`) sont requises pour les opérations ultérieures.
* **Workflow typique.** `uploadSourceFiles` est le point d’entrée du pipeline de fichiers : téléversez les fichiers source, puis [`setupProject`](/docs/platform/core/reference/gt-class-methods/translation/setup-project) → [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) → [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) → [`downloadFileBatch`](/docs/platform/core/reference/gt-class-methods/translation/download-file-batch).

## Paramètres [#parameters]

| Paramètre             | Description                                  | Type                       | Facultatif | Par défaut |
| --------------------- | -------------------------------------------- | -------------------------- | ---------- | ---------- |
| [`files`](#files)     | Tableau de fichiers sources à téléverser.    | `{ source: FileUpload }[]` | Non        | —          |
| [`options`](#options) | Options de configuration pour le téléversement. | `UploadFilesOptions`       | Non        | —          |

### `files`

**Type** `{ source: FileUpload }[]` · **Obligatoire**

Les fichiers source à téléverser. Chaque entrée contient un `FileUpload` sous la clé `source` :

| Champ                | Description                                                                                                                                                                                                                                     | Type                                                            | Facultatif |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------- |
| `content`            | Contenu textuel brut ou contenu binaire encodé en base64 pour `LOTTIE`.                                                                                                                                                                         | `string`                                                        | Non        |
| `fileName`           | Identifiant unique du fichier, généralement le chemin d’accès suivi du nom du fichier.                                                                                                                                                          | `string`                                                        | Non        |
| `fileFormat`         | Format du fichier.                                                                                                                                                                                                                              | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Non        |
| `transformFormat`    | Accepté par le type partagé `FileUpload`, mais non envoyé par cette méthode. Définissez le format de sortie sur la référence de fichier transmise à [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Oui        |
| `dataFormat`         | Format des données contenues dans le fichier (`ICU`, `I18NEXT`, `JSX` ou `STRING`).                                                                                                                                                             | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Oui        |
| `locale`             | Paramètre régional du contenu du fichier source.                                                                                                                                                                                                | `string`                                                        | Non        |
| `branchId`           | Branche dans laquelle téléverser le fichier. La branche par défaut est utilisée si ce champ est omis.                                                                                                                                           | `string`                                                        | Oui        |
| `incomingBranchId`   | Branche entrante utilisée par le suivi des traductions tenant compte des branches.                                                                                                                                                              | `string`                                                        | Oui        |
| `checkedOutBranchId` | Branche extraite utilisée par le suivi des traductions tenant compte des branches.                                                                                                                                                              | `string`                                                        | Oui        |
| `formatMetadata`     | Métadonnées spécifiques au format stockées avec le fichier source.                                                                                                                                                                              | `GTJsonFormatMetadata \| FormatMetadata`                        | Oui        |
| `versionId`          | ID de version, pour les cas d’usage avancés.                                                                                                                                                                                                    | `string`                                                        | Oui        |
| `fileId`             | ID de fichier, pour les cas d’usage avancés.                                                                                                                                                                                                    | `string`                                                        | Oui        |

### `options`

**Type** `UploadFilesOptions` · **Obligatoire**

Configuration du téléversement :

| Champ           | Description                                                                                                                                                                                                                 | Type     | Facultatif |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------- |
| `sourceLocale`  | Paramètre régional source du téléversement. Met également à jour le paramètre régional par défaut du projet lorsqu’il diffère.                                                                                              | `string` | Non        |
| `modelProvider` | Accepté par le type d’options partagé, mais non envoyé par cette méthode de téléversement. Définissez plutôt le fournisseur sur [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). | `string` | Oui        |
| `timeout`       | Délai d’expiration de la requête en millisecondes.                                                                                                                                                                          | `number` | Oui        |

*Remarque : `branchId` n’est pas une option de téléversement. Il s’agit d’un champ propre à chaque fichier, et non d’une propriété de `UploadFilesOptions`.*

## Renvoie [#returns]

**Type** `Promise<UploadFilesResponse>`

Se résout avec un `UploadFilesResponse` contenant les références des fichiers téléversés et un résumé :

```typescript
type UploadFilesResponse = {
  uploadedFiles: FileReference[]; // références pour les opérations suivantes
  count: number; // nombre de fichiers téléversés avec succès
  message: string; // message d'état de l'API
};
```

Chaque `FileReference` a la forme suivante :

```typescript
type FileReference = {
  fileId: string;
  versionId: string;
  branchId: string; // l'API actuelle peut l'omettre pour la branche par défaut
  fileName: string;
  fileFormat: FileFormat;
  transformFormat?: FileFormat; // non renseigné par cette méthode de téléversement
  dataFormat?: DataFormat;
};
```

Le type de la bibliothèque déclare `branchId` comme requis, mais l&#39;API actuelle peut l&#39;omettre lorsqu&#39;elle sélectionne la branche par défaut. Elle ne renseigne pas non plus `transformFormat` : définissez ce champ avant de passer une référence à [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) si vous avez besoin d&#39;une conversion de format.

## Exemples [#examples]

```typescript
// Utilisation de base : upload de fichiers de traduction JSON
import { GT } from 'generaltranslation';
import fs from 'fs';

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

const files = [
  {
    source: {
      content: fs.readFileSync('./locales/en/common.json', 'utf8'),
      fileName: 'common.json',
      fileFormat: 'JSON' as const,
      locale: 'en',
    },
  },
  {
    source: {
      content: fs.readFileSync('./locales/en/navigation.json', 'utf8'),
      fileName: 'navigation.json',
      fileFormat: 'JSON' as const,
      locale: 'en',
    },
  },
];

const result = await gt.uploadSourceFiles(files, {
  sourceLocale: 'en',
});

console.log(`Uploaded ${result.count} files`);
result.uploadedFiles.forEach((file) => {
  console.log(`  ${file.fileName}: ${file.fileId} (branch: ${file.branchId})`);
});
```

```typescript
// Avec spécification explicite du format de données
const files = [
  {
    source: {
      content: '{"welcome": "Welcome, {name}!"}',
      fileName: 'messages.json',
      fileFormat: 'JSON' as const,
      dataFormat: 'ICU' as const, // format de message ICU
      locale: 'en',
    },
  },
  {
    source: {
      content: '{"greeting": "Hello {{name}}"}',
      fileName: 'i18next.json',
      fileFormat: 'JSON' as const,
      dataFormat: 'I18NEXT' as const,
      locale: 'en',
    },
  },
];

const result = await gt.uploadSourceFiles(files, {
  sourceLocale: 'en',
  timeout: 30000,
});
```

```typescript
// Téléversement par lots avec gestion des erreurs
import { glob } from 'glob';
import path from 'path';

async function uploadAllJsonFiles() {
  try {
    // Rechercher tous les fichiers JSON
    const jsonPaths = await glob('./locales/en/**/*.json');

    const files = jsonPaths.map((filePath) => ({
      source: {
        content: fs.readFileSync(filePath, 'utf8'),
        fileName: path.relative('./locales/en', filePath),
        fileFormat: 'JSON' as const,
        locale: 'en',
      },
    }));

    console.log(`Uploading ${files.length} files...`);

    const result = await gt.uploadSourceFiles(files, {
      sourceLocale: 'en',
      timeout: 60000, // Délai d'expiration de 60 secondes pour les téléversements volumineux
    });

    if (result.count !== files.length) {
      console.warn(`Expected ${files.length} files, but only ${result.count} uploaded`);
    }

    return result.uploadedFiles;
  } catch (error) {
    console.error('Upload failed:', error);
    throw error;
  }
}

const uploadedFiles = await uploadAllJsonFiles();
```

## Notes [#notes]

* Le contenu textuel est automatiquement encodé en base64 pour garantir une transmission sûre. Transmettez le contenu binaire `LOTTIE` sous la forme d’un fichier ZIP `.lottie` encodé en base64.
* Les noms de fichiers doivent être des identifiants uniques, généralement composés du chemin d’accès du fichier.
* Le champ `locale` de chaque fichier doit correspondre à l’option `sourceLocale`.
* Les fichiers volumineux ou un grand nombre de fichiers peuvent nécessiter des délais d’expiration plus longs.
* Les références de fichiers renvoyées par cette méthode sont nécessaires pour les opérations ultérieures et incluent `branchId` pour le versionnage avec prise en charge des branches.
* **Formats pris en charge :** [`FileFormat`](/docs/platform/core/reference/types/file-format).

## Sitemap

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