# generaltranslation: General Translation Core SDK: uploadTranslations URL: https://generaltranslation.com/it/docs/core/class/methods/translation/upload-translations.mdx --- title: uploadTranslations description: Riferimento API del metodo uploadTranslations per caricare file di traduzione esistenti --- ## Panoramica Il metodo `uploadTranslations` carica i file di traduzione corrispondenti ai file sorgente caricati in precedenza. È utile quando hai traduzioni già esistenti che vuoi caricare direttamente, anziché generarle tramite il servizio di traduzione. ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.uploadTranslations(files, { sourceLocale: 'en' }); ``` Prima di caricare le traduzioni, devi aver già caricato i file sorgente usando [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files). ## Riferimento ### Parametri | Nome | Tipo | Descrizione | | --------- | --------------------- | ------------------------------------------------------------------ | | `files` | `TranslationUpload[]` | Array di riferimenti ai file sorgente con le relative traduzioni | | `options` | `UploadFilesOptions` | Opzioni di configurazione per l'upload | #### Struttura TranslationUpload ```typescript type TranslationUpload = { source: FileUpload; // Riferimento al file sorgente esistente (nessun contenuto necessario) translations: FileUpload[]; // Array di file tradotti con contenuto } ``` #### Struttura FileUpload (per il file sorgente di riferimento) | Nome | Tipo | Descrizione | | ------------ | ------------ | -------------------------------------------------------------------- | | `fileName` | `string` | Nome del file corrispondente al file sorgente caricato in precedenza | | `fileFormat` | `FileFormat` | Formato del file (JSON, MDX, MD, XML, ecc.) | | `fileId?` | `string` | ID facoltativo del file sorgente | | `versionId?` | `string` | ID facoltativo della versione del file sorgente | #### Struttura FileUpload (per le traduzioni) | Nome | Tipo | Descrizione | | ------------ | ------------ | ----------------------------------------------- | | `content` | `string` | Contenuto grezzo del file tradotto come stringa | | `fileName` | `string` | Nome del file della traduzione | | `fileFormat` | `FileFormat` | Formato del file (JSON, MDX, MD, XML, ecc.) | | `locale` | `string` | Impostazione regionale di destinazione | | `fileId?` | `string` | ID del file facoltativo | | `versionId?` | `string` | ID della versione facoltativo | #### UploadFilesOptions | Nome | Tipo | Descrizione | | -------------- | -------- | -------------------------------------------------- | | `sourceLocale` | `string` | L'impostazione regionale di origine dei file | | `branchId?` | `string` | ID branch facoltativo su cui eseguire l'upload | | `timeout?` | `number` | Timeout della richiesta in millisecondi | ### Restituisce `Promise` - Contiene i risultati dell'upload e i riferimenti ai file. ```typescript type UploadFilesResponse = { uploadedFiles: FileReference[]; count: number; message: string; } ``` | Proprietà | Tipo | Descrizione | | --------------- | ----------------- | ------------------------------------------ | | `uploadedFiles` | `FileReference[]` | Array di riferimenti ai file caricati | | `count` | `number` | Numero di file caricati correttamente | | `message` | `string` | Messaggio di stato restituito dall'API | *** ## Esempi ### Uso di base Carica le traduzioni dei file sorgente caricati in precedenza: ```typescript copy import { GT } from 'generaltranslation'; import fs from 'fs'; const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); // Si presuppone che il file sorgente sia stato caricato in precedenza const files = [ { source: { fileName: 'common.json', fileFormat: 'JSON' as const, fileId: 'source-file-id', versionId: 'source-version-id' }, 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`); ``` ### Caricamento delle traduzioni dopo quello dei file sorgente Flusso di lavoro completo per caricare prima i file sorgente e poi le traduzioni: ```typescript copy import { GT } from 'generaltranslation'; import fs from 'fs'; const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); // Passaggio 1: carica i file sorgente 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' }); // Passaggio 2: carica le traduzioni esistenti const translationFiles = [ { source: { fileName: uploadedFiles[0].fileName, fileFormat: uploadedFiles[0].fileFormat, 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(`Caricate ${translationResult.count} traduzioni`); ``` ### Upload di più file in batch Carica le traduzioni per più file sorgente: ```typescript copy import { glob } from 'glob'; import path from 'path'; async function uploadAllTranslations( sourceRefs: FileReference[], targetLocales: string[] ) { const files = sourceRefs.map(sourceRef => ({ source: { fileName: sourceRef.fileName, fileFormat: sourceRef.fileFormat, fileId: sourceRef.fileId, versionId: sourceRef.versionId }, translations: targetLocales .map(locale => { const translationPath = `./locales/${locale}/${sourceRef.fileName}`; try { return { content: fs.readFileSync(translationPath, 'utf8'), fileName: sourceRef.fileName, fileFormat: sourceRef.fileFormat, locale }; } catch { // Il file di traduzione non esiste per questa impostazione regionale return null; } }) .filter(Boolean) })); const result = await gt.uploadTranslations(files, { sourceLocale: 'en', timeout: 60000 }); return result; } ``` *** ## Note * I file sorgente devono prima essere caricati usando [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) * L'oggetto `source` in ogni voce di file è un riferimento a un file sorgente esistente (il contenuto non è necessario) * Ogni traduzione nell'array `translations` deve includere il contenuto e un'impostazione regionale di destinazione * Questo metodo è utile per migrare traduzioni esistenti o caricare traduzioni revisionate da un revisore umano * I riferimenti ai file includono `branchId` per una corretta gestione delle versioni con supporto ai branch ## Passaggi successivi * Consulta [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) per caricare prima i file sorgente * Consulta [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) per generare automaticamente le traduzioni * Consulta [`downloadFile`](/docs/core/class/methods/translation/download-file) per scaricare le traduzioni * Consulta [`queryFileData`](/docs/core/class/methods/translation/query-file-data) per verificare lo stato della traduzione