# generaltranslation: General Translation Core SDK: uploadSourceFiles URL: https://generaltranslation.com/fr/docs/core/class/methods/translation/upload-source-files.mdx --- title: uploadSourceFiles description: Référence de l’API pour la méthode uploadSourceFiles, qui permet de téléverser des fichiers source à traduire --- ## Vue d’ensemble La méthode `uploadSourceFiles` téléverse les fichiers source vers la plateforme General Translation pour traitement. Il s’agit généralement de la première étape d’un workflow de traduction, avant de configurer des projets ou de mettre des tâches de traduction en file d’attente. ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.uploadSourceFiles(files, { sourceLocale: 'en' }); ``` ## Référence ### Paramètres | Nom | Type | Description | | --------- | -------------------------- | -------------------------------------------- | | `files` | `{ source: FileUpload }[]` | Tableau des fichiers source à téléverser | | `options` | `UploadFilesOptions` | Options de configuration pour le téléversement | #### Structure de `FileUpload` | Nom | Type | Description | | ------------- | ------------ | --------------------------------------------------------------------------- | | `content` | `string` | Contenu brut du fichier sous forme de chaîne | | `fileName` | `string` | Identifiant unique du fichier (généralement le chemin et le nom du fichier) | | `fileFormat` | `FileFormat` | Format du fichier (JSON, MDX, MD, XML, etc.) | | `dataFormat?` | `DataFormat` | Format facultatif des données dans le fichier (ICU, I18NEXT, JSX) | | `locale` | `string` | Paramètre régional du contenu du fichier source | | `versionId?` | `string` | ID de version facultatif pour les cas d'utilisation avancés | | `fileId?` | `string` | ID de fichier facultatif pour les cas d'utilisation avancés | #### UploadFilesOptions | Nom | Type | Description | | ---------------- | -------- | ------------------------------------------------------------ | | `sourceLocale` | `string` | Le paramètre régional source de tous les fichiers téléversés | | `branchId?` | `string` | ID de branche facultatif vers laquelle téléverser | | `modelProvider?` | `string` | Préférence facultative pour le fournisseur de modèle d’IA | | `timeout?` | `number` | Délai d’expiration de la requête, en millisecondes | ### Retourne `Promise` - Contient les résultats du téléversement et les références des fichiers. ```typescript type UploadFilesResponse = { uploadedFiles: FileReference[]; count: number; message: string; } ``` | Propriété | Type | Description | | --------------- | ----------------- | ---------------------------------------------------------------------------- | | `uploadedFiles` | `FileReference[]` | Tableau des références des fichiers téléversés pour les opérations suivantes | | `count` | `number` | Nombre de fichiers téléversés avec succès | | `message` | `string` | Message d’état renvoyé par l’API | #### Structure de FileReference ```typescript type FileReference = { fileId: string; versionId: string; branchId: string; fileName: string; fileFormat: FileFormat; dataFormat?: DataFormat; locale?: string; } ``` *** ## Exemples ### Utilisation de base Téléversez des fichiers de traduction JSON : ```typescript copy 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})`); }); ``` ### Avec un format de données explicite Téléversez des fichiers en précisant explicitement leur format de données : ```typescript copy 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', modelProvider: 'gpt-4', timeout: 30000 }); ``` ### Téléversement par lot avec gestion des erreurs Téléversez plusieurs fichiers avec une gestion complète des erreurs : ```typescript copy import { glob } from 'glob'; import path from 'path'; async function uploadAllJsonFiles() { try { // Trouver 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(`Téléversement de ${files.length} fichiers en cours...`); 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(`${files.length} fichiers attendus, mais seulement ${result.count} téléversés`); } return result.uploadedFiles; } catch (error) { console.error('Échec du téléversement :', error); throw error; } } const uploadedFiles = await uploadAllJsonFiles(); ``` *** ## Remarques * Le contenu du fichier est automatiquement encodé en Base64 pour être transmis en toute sécurité * Les noms de fichier doivent être des identifiants uniques, généralement composés du chemin 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 élevés * Les références de fichier renvoyées par cette méthode sont nécessaires pour les opérations ultérieures * Les références de fichier incluent `branchId` pour assurer un versionnage correct avec la prise en charge des branches * Les formats de fichier pris en charge incluent JSON, MD, MDX, XML et d’autres formats ; consultez le type `FileFormat` pour la liste complète ## Étapes suivantes * Consultez [`setupProject`](/docs/core/class/methods/translation/setup-project) pour préparer les fichiers téléversés à la traduction * Consultez [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) pour lancer des tâches de traduction * Consultez [`uploadTranslations`](/docs/core/class/methods/translation/upload-translations) pour téléverser des traductions existantes * Consultez `FileUpload` pour plus de détails sur la structure des fichiers