# General Translation Platform: uploadSourceFiles URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/translation/upload-source-files.mdx --- title: uploadSourceFiles description: Sube archivos fuente a un Proyecto antes de poner en cola la traducción. Referencia de la API de uploadSourceFiles. --- Sube archivos fuente a la plataforma de General Translation para procesarlos para su traducción. Este suele ser el primer paso en un flujo de trabajo de traducción de archivos, antes de configurar un Proyecto o poner en cola trabajos de traducción. ## Resumen [#overview] Llama a `uploadSourceFiles` con una lista de archivos y un objeto de opciones para establecer la configuración regional de origen. Devuelve las referencias de los archivos cargados, que usarás en pasos posteriores. ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const result = await gt.uploadSourceFiles(files, { sourceLocale: 'en', }); ``` Firma: ```typescript uploadSourceFiles( files: { source: FileUpload }[], options: UploadFilesOptions ): Promise ``` *Nota: `uploadSourceFiles` requiere una `apiKey` (o `devApiKey`) y un `projectId` en la instancia de GT.* ## Cómo funciona [#how-it-works] * **Codificación de archivos.** El contenido de los archivos se codifica automáticamente en Base64 para transmitirlo de forma segura. * **Referencias de archivo.** Las referencias de archivo devueltas (incluidos `fileId`, `versionId` y `branchId`) son datos obligatorios para las operaciones posteriores. * **Flujo de trabajo típico.** `uploadSourceFiles` es el punto de entrada del flujo de archivos: sube los archivos fuente y luego [`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). ## Parámetros [#parameters] | Parámetro | Descripción | Tipo | Opcional | Predeterminado | | --------------------- | ---------------------------------------- | -------------------------- | -------- | -------------- | | [`files`](#files) | Lista de archivos de origen para cargar. | `{ source: FileUpload }[]` | No | — | | [`options`](#options) | Opciones de configuración para la carga. | `UploadFilesOptions` | No | — | ### `files` [#files] **Tipo** `{ source: FileUpload }[]` · **Obligatorio** Los archivos fuente que se van a cargar. Cada entrada incluye un `FileUpload` bajo la clave `source`: | Campo | Descripción | Tipo | Opcional | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | -------- | | `content` | Contenido sin procesar del archivo en forma de `string`. | `string` | No | | `fileName` | Identificador único del archivo, normalmente la ruta del archivo más el nombre. | `string` | No | | `fileFormat` | Formato del archivo. Uno de `GTJSON`, `JSON`, `PO`, `POT`, `YAML`, `MDX`, `MD`, `TS`, `JS`, `HTML`, `TXT` o `TWILIO_CONTENT_JSON`. | `FileFormat` | No | | `transformFormat` | Formato de salida solicitado para las traducciones generadas. | `FileFormat` | Sí | | `dataFormat` | Formato de los datos dentro del archivo (ICU, I18NEXT, JSX). | [`DataFormat`](/docs/platform/core/reference/types/data-format) | Sí | | `locale` | Configuración regional del contenido del archivo fuente. | `string` | No | | `branchId` | Rama en la que se cargará el archivo. Usa la rama predeterminada cuando se omite. | `string` | Sí | | `versionId` | ID de versión, para casos de uso avanzados. | `string` | Sí | | `fileId` | ID de archivo, para casos de uso avanzados. | `string` | Sí | ### `options` [#options] **Tipo** `UploadFilesOptions` · **Obligatorio** Configuración para la carga: | Campo | Descripción | Tipo | Opcional | | --------------- | ------------------------------------------------------------------- | -------- | -------- | | `sourceLocale` | La configuración regional de origen de todos los archivos cargados. | `string` | No | | `modelProvider` | Proveedor de modelo de IA preferido. | `string` | Sí | | `timeout` | Tiempo de espera de la solicitud en milisegundos. | `number` | Sí | *Nota: `branchId` no es una opción de carga. Es un campo por archivo en cada objeto de archivo, no forma parte de `UploadFilesOptions`.* ## Devuelve [#returns] **Tipo** `Promise` Se resuelve con un `UploadFilesResponse` que contiene las referencias de los archivos subidos y un resumen: ```typescript type UploadFilesResponse = { uploadedFiles: FileReference[]; // referencias para operaciones posteriores count: number; // número de archivos subidos correctamente message: string; // mensaje de estado de la API }; ``` Cada `FileReference` tiene la siguiente forma: ```typescript type FileReference = { fileId: string; versionId: string; branchId: string; fileName: string; fileFormat: FileFormat; transformFormat?: FileFormat; // formato de salida solicitado para las traducciones generadas dataFormat?: DataFormat; }; ``` ## Ejemplos [#examples] ```typescript // Uso básico: subir archivos de traducción 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 // Con especificación explícita del formato de datos const files = [ { source: { content: '{"welcome": "Welcome, {name}!"}', fileName: 'messages.json', fileFormat: 'JSON' as const, dataFormat: 'ICU' as const, // formato de mensajes 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, }); ``` ```typescript // Carga por lotes con manejo de errores import { glob } from 'glob'; import path from 'path'; async function uploadAllJsonFiles() { try { // Buscar todos los archivos 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, // Tiempo de espera de 60 segundos para cargas grandes }); 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(); ``` ## Notas [#notes] * El contenido del archivo se codifica automáticamente en Base64 para transmitirlo de forma segura. * Los nombres de archivo deben ser identificadores únicos y, por lo general, incluyen la ruta del archivo. * El campo `locale` de cada archivo debe coincidir con la opción `sourceLocale`. * Los archivos grandes o una gran cantidad de archivos pueden requerir valores de tiempo de espera más altos. * Las referencias de archivo que devuelve este método son necesarias para operaciones posteriores e incluyen `branchId` para el control de versiones con compatibilidad con ramas. * Los formatos de archivo compatibles son `GTJSON`, `JSON`, `PO`, `POT`, `YAML`, `MDX`, `MD`, `TS`, `JS`, `HTML`, `TXT` y `TWILIO_CONTENT_JSON`; consulta el tipo `FileFormat` para ver la lista completa.