# generaltranslation: General Translation Core SDK: uploadSourceFiles URL: https://generaltranslation.com/it/docs/core/class/methods/translation/upload-source-files.mdx --- title: uploadSourceFiles description: Documentazione di riferimento API per il metodo uploadSourceFiles, che esegue l'upload dei file sorgente per la traduzione --- ## Panoramica Il metodo `uploadSourceFiles` esegue l'upload dei file sorgente sulla piattaforma General Translation per l'elaborazione delle traduzioni. In genere, questo è il primo passaggio di un flusso di lavoro di traduzione, prima di configurare i progetti o mettere in coda i processi di traduzione. ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.uploadSourceFiles(files, { sourceLocale: 'en' }); ``` ## Riferimento ### Parametri | Nome | Tipo | Descrizione | | --------- | -------------------------- | ------------------------------------------ | | `files` | `{ source: FileUpload }[]` | Array di file sorgente da uploadare | | `options` | `UploadFilesOptions` | Opzioni di configurazione per l'upload | #### Struttura di FileUpload | Nome | Tipo | Descrizione | | ------------- | ------------ | ------------------------------------------------------------------------- | | `content` | `string` | Contenuto grezzo del file come stringa | | `fileName` | `string` | Identificatore univoco del file (in genere percorso + nome file) | | `fileFormat` | `FileFormat` | Formato del file (JSON, MDX, MD, XML, ecc.) | | `dataFormat?` | `DataFormat` | Formato facoltativo dei dati all'interno del file (ICU, I18NEXT, JSX) | | `locale` | `string` | Impostazione regionale del contenuto del file sorgente | | `versionId?` | `string` | ID versione facoltativo per casi d'uso avanzati | | `fileId?` | `string` | ID file facoltativo per casi d'uso avanzati | #### UploadFilesOptions | Nome | Tipo | Descrizione | | ---------------- | -------- | ----------------------------------------------------------------- | | `sourceLocale` | `string` | L'impostazione regionale di origine per tutti i file caricati | | `branchId?` | `string` | ID del branch opzionale in cui eseguire l'upload | | `modelProvider?` | `string` | Preferenza facoltativa per il provider del modello di IA | | `timeout?` | `number` | Timeout della richiesta in millisecondi | ### Restituisce `Promise` - Contiene i risultati di 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 per le operazioni successive | | `count` | `number` | Numero di file caricati con successo | | `message` | `string` | Messaggio di stato dell'API | #### Struttura FileReference ```typescript type FileReference = { fileId: string; versionId: string; branchId: string; fileName: string; fileFormat: FileFormat; dataFormat?: DataFormat; locale?: string; } ``` *** ## Esempi ### Utilizzo di base Esegui l'upload dei file di traduzione 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})`); }); ``` ### Con specifica esplicita del formato dei dati Esegui l'upload dei file specificando esplicitamente il formato dei dati: ```typescript copy const files = [ { source: { content: '{"welcome": "Welcome, {name}!"}', fileName: 'messages.json', fileFormat: 'JSON' as const, dataFormat: 'ICU' as const, // formato dei messaggi 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 }); ``` ### Upload in batch con gestione degli errori Esegui l'upload di più file con gestione completa degli errori: ```typescript copy import { glob } from 'glob'; import path from 'path'; async function uploadAllJsonFiles() { try { // Trova tutti i file 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(`Upload di ${files.length} file in corso...`); const result = await gt.uploadSourceFiles(files, { sourceLocale: 'en', timeout: 60000 // timeout di 60 secondi per upload di grandi dimensioni }); if (result.count !== files.length) { console.warn(`Attesi ${files.length} file, ma solo ${result.count} uploadati`); } return result.uploadedFiles; } catch (error) { console.error('Upload non riuscito:', error); throw error; } } const uploadedFiles = await uploadAllJsonFiles(); ``` *** ## Note * Il contenuto del file viene codificato automaticamente in Base64 per una trasmissione sicura * I nomi dei file devono essere identificatori univoci e in genere includono il percorso del file * Il campo `locale` in ogni file deve corrispondere all'opzione `sourceLocale` * File di grandi dimensioni o un numero elevato di file possono richiedere valori di timeout più alti * I riferimenti ai file restituiti da questo metodo sono necessari per le operazioni successive * I riferimenti ai file includono `branchId` per un corretto controllo delle versioni con supporto per i branch * I formati di file supportati includono JSON, MD, MDX, XML e altri: consulta il tipo `FileFormat` per l'elenco completo ## Passaggi successivi * Consulta [`setupProject`](/docs/core/class/methods/translation/setup-project) per preparare alla traduzione i file uploadati * Consulta [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) per avviare i processi di traduzione * Consulta [`uploadTranslations`](/docs/core/class/methods/translation/upload-translations) per eseguire l'upload di traduzioni già esistenti * Consulta `FileUpload` per i dettagli sulla struttura dei file