# General Translation Platform: uploadTranslations
URL: https://generaltranslation.com/fr/docs/platform/core/reference/gt-class-methods/translation/upload-translations.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Téléversez des fichiers traduits existants correspondant à des fichiers source. Référence de l’API pour uploadTranslations.

Téléverse des traductions existantes pour des fichiers source déjà présents dans le projet. Utilisez-le lors de la migration de traductions ou pour téléverser des traductions révisées par un humain au lieu de les générer via le service de traduction.

## Vue d’ensemble [#overview]

Appelez `uploadTranslations` avec un tableau de téléversements de traductions et un objet d’options. Chaque téléversement inclut le contenu source complet permettant d’identifier un fichier source déjà téléversé, ainsi qu’un ou plusieurs fichiers traduits.

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

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

Signature :

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

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

## Fonctionnement [#how-it-works]

* **Source existante.** Téléversez d’abord la source. L’objet `source` reste un `FileUpload` complet, incluant le contenu et le paramètre régional ; l’API déduit les identifiants manquants à partir de ces données et utilise les identifiants obtenus pour retrouver la version source existante.
* **Traductions.** Chaque élément du tableau `translations` doit inclure un contenu et un paramètre régional cible.
* **Encodage des fichiers.** Le contenu textuel est automatiquement encodé en Base64. Les traductions binaires `LOTTIE` doivent déjà contenir des données ZIP `.lottie` encodées en Base64.
* **Gestion des versions.** Les références de fichier renvoyées incluent `branchId` pour la gestion des versions avec prise en charge des branches.

## Paramètres [#parameters]

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

### `files`

**Type** `{ source: FileUpload; translations: FileUpload[] }[]` · **obligatoire**

Chaque entrée associe un fichier source complet à ses fichiers traduits :

```typescript
{
  source: FileUpload; // contenu source et métadonnées
  translations: FileUpload[]; // fichiers traduits avec leur contenu
}
```

La valeur `source` utilise ces champs `FileUpload` :

| Champ                | Description                                                                                                                           | Type                                                            | Facultatif |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------- |
| `content`            | Texte source brut, ou contenu binaire encodé en base64 pour `LOTTIE`.                                                                 | `string`                                                        | Non        |
| `fileName`           | Nom de fichier correspondant au fichier source précédemment téléversé.                                                                | `string`                                                        | Non        |
| `fileFormat`         | Format du fichier.                                                                                                                    | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Non        |
| `locale`             | Paramètre régional du contenu source.                                                                                                 | `string`                                                        | Non        |
| `dataFormat`         | Format des données contenues dans le fichier source (`ICU`, `I18NEXT`, `JSX` ou `STRING`).                                            | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Oui        |
| `formatMetadata`     | Métadonnées spécifiques au format acceptées avec le descripteur source ; elles ne modifient pas l&#39;enregistrement source existant. | `GTJsonFormatMetadata \| FormatMetadata`                        | Oui        |
| `branchId`           | Branche contenant la source précédemment téléversée. Utilise la branche par défaut si omis.                                           | `string`                                                        | Oui        |
| `fileId`             | ID de fichier du fichier source.                                                                                                      | `string`                                                        | Oui        |
| `versionId`          | ID de version du fichier source.                                                                                                      | `string`                                                        | Oui        |
| `transformFormat`    | Accepté par `FileUpload` et validé localement, mais non utilisé par cet endpoint de téléversement.                                    | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Oui        |
| `incomingBranchId`   | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                           | `string`                                                        | Oui        |
| `checkedOutBranchId` | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                           | `string`                                                        | Oui        |

Chaque traduction (un `FileUpload`) utilise ces champs :

| Champ                | Description                                                                                                                      | Type                                                            | Facultatif |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------- |
| `content`            | Texte traduit brut, ou contenu binaire encodé en base64 pour `LOTTIE`.                                                           | `string`                                                        | Non        |
| `fileName`           | Requis par `FileUpload` ; la traduction stockée utilise le nom du fichier source.                                                | `string`                                                        | Non        |
| `fileFormat`         | Format du fichier.                                                                                                               | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Non        |
| `locale`             | Paramètre régional cible de la traduction.                                                                                       | `string`                                                        | Non        |
| `dataFormat`         | Format des données traduites (`ICU`, `I18NEXT`, `JSX` ou `STRING`).                                                              | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Oui        |
| `fileId`             | Accepté et envoyé par le client, mais ignoré par l&#39;endpoint ; la traduction hérite de l&#39;ID du fichier source.            | `string`                                                        | Oui        |
| `versionId`          | Accepté et envoyé par le client, mais ignoré par l&#39;endpoint ; la traduction hérite de l&#39;ID de version du fichier source. | `string`                                                        | Oui        |
| `branchId`           | Accepté et envoyé par le client, mais ignoré par l&#39;endpoint ; la traduction hérite de la branche source.                     | `string`                                                        | Oui        |
| `transformFormat`    | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                      | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Oui        |
| `formatMetadata`     | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                      | `GTJsonFormatMetadata \| FormatMetadata`                        | Oui        |
| `incomingBranchId`   | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                      | `string`                                                        | Oui        |
| `checkedOutBranchId` | Accepté par `FileUpload` mais non envoyé par cette méthode.                                                                      | `string`                                                        | Oui        |

### `options`

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

Configuration de l’envoi :

| Champ           | Description                                                                                                                                                                                                         | Type     | Facultatif |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------- |
| `sourceLocale`  | Paramètre régional source de la requête. 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 d’envoi. Définissez plutôt le fournisseur dans [`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 d’envoi. C’est un champ défini par fichier dans chaque objet fichier, et non un élément de `UploadFilesOptions`.*

## Renvoie [#returns]

**Type** `Promise<UploadFilesResponse>`

Renvoie une `UploadFilesResponse` contenant les références des fichiers téléversés et un récapitulatif :

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

## Exemples [#examples]

```typescript
// Utilisation de base : upload de traductions pour des fichiers source déjà téléversés
import { GT } from 'generaltranslation';
import fs from 'fs';

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

const files = [
  {
    // Cette source exacte doit déjà avoir été téléversée.
    source: {
      content: fs.readFileSync('./locales/en/common.json', 'utf8'),
      fileName: 'common.json',
      fileFormat: 'JSON' as const,
      locale: 'en',
    },
    translations: [
      {
        content: fs.readFileSync('./locales/es/common.json', 'utf8'),
        fileName: 'common.json',
        fileFormat: 'JSON' as const,
        locale: 'es',
      },
      {
        content: fs.readFileSync('./locales/fr/common.json', 'utf8'),
        fileName: 'common.json',
        fileFormat: 'JSON' as const,
        locale: 'fr',
      },
    ],
  },
];

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

console.log(`Uploaded ${result.count} translation files`);
```

```typescript
// Workflow complet : upload des fichiers sources, puis de leurs traductions
import { GT } from 'generaltranslation';
import fs from 'fs';

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

// Étape 1 : upload des fichiers sources
const sourceFiles = [
  {
    source: {
      content: fs.readFileSync('./locales/en/messages.json', 'utf8'),
      fileName: 'messages.json',
      fileFormat: 'JSON' as const,
      locale: 'en',
    },
  },
];

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

// Étape 2 : upload des traductions existantes
const translationFiles = [
  {
    source: {
      content: sourceFiles[0].source.content,
      fileName: uploadedFiles[0].fileName,
      fileFormat: uploadedFiles[0].fileFormat,
      locale: sourceFiles[0].source.locale,
      fileId: uploadedFiles[0].fileId,
      versionId: uploadedFiles[0].versionId,
    },
    translations: [
      {
        content: fs.readFileSync('./locales/es/messages.json', 'utf8'),
        fileName: 'messages.json',
        fileFormat: 'JSON' as const,
        locale: 'es',
      },
      {
        content: fs.readFileSync('./locales/de/messages.json', 'utf8'),
        fileName: 'messages.json',
        fileFormat: 'JSON' as const,
        locale: 'de',
      },
    ],
  },
];

const translationResult = await gt.uploadTranslations(translationFiles, {
  sourceLocale: 'en',
});

console.log(`Uploaded ${translationResult.count} translations`);
```

```typescript
// Chargement par lots des traductions pour plusieurs fichiers sources
import fs from 'node:fs';
import { GT } from 'generaltranslation';
import type { FileUpload } from 'generaltranslation/types';

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

async function uploadAllTranslations(
  sourceFiles: FileUpload[],
  targetLocales: string[]
) {
  const files = sourceFiles.map((source) => ({
    source,
    translations: targetLocales
      .map((locale) => {
        const translationPath = `./locales/${locale}/${source.fileName}`;
        try {
          return {
            content: fs.readFileSync(translationPath, 'utf8'),
            fileName: source.fileName,
            fileFormat: source.fileFormat,
            locale,
          };
        } catch {
          // Le fichier de traduction n'existe pas pour ce paramètre régional
          return null;
        }
      })
      .filter((file): file is FileUpload => file !== null),
  }));

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

  return result;
}
```

## Notes [#notes]

* Dans chaque entrée, l’objet `source` doit inclure le contenu, le nom de fichier, le format du fichier et le paramètre régional.
* La version source identifiée par cet objet doit déjà exister dans le projet.
* Chaque traduction du tableau `translations` doit inclure un contenu et un paramètre régional cible.
* Cette méthode est utile pour migrer des traductions existantes ou téléverser des traductions révisées par un humain.
* Les références de fichier incluent `branchId` pour la gestion des versions avec prise en charge des branches.

## Sitemap

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