# General Translation Platform: uploadSourceFiles
URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/translation/upload-source-files.mdx
Docs index: https://generaltranslation.com/llms.txt
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<UploadFilesResponse>
```

*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 texto se codifica automáticamente en base64 para transmitirlo de forma segura. El contenido binario `LOTTIE` ya debe estar codificado en base64.
* **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`

**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 de texto sin procesar o contenido binario codificado en base64 para `LOTTIE`.                                                                                                                                                          | `string`                                                        | No       |
| `fileName`           | Identificador único del archivo, normalmente la ruta del archivo más el nombre.                                                                                                                                                                  | `string`                                                        | No       |
| `fileFormat`         | Formato del archivo.                                                                                                                                                                                                                             | [`FileFormat`](/docs/platform/core/reference/types/file-format) | No       |
| `transformFormat`    | Aceptado por el tipo compartido `FileUpload`, pero este método no lo envía. Establece el formato de salida en la referencia de archivo que se pasa a [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). | [`FileFormat`](/docs/platform/core/reference/types/file-format) | Sí       |
| `dataFormat`         | Formato de los datos dentro del archivo (`ICU`, `I18NEXT`, `JSX` o `STRING`).                                                                                                                                                                    | [`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í       |
| `incomingBranchId`   | Rama entrante utilizada por el seguimiento de traducciones con reconocimiento de ramas.                                                                                                                                                          | `string`                                                        | Sí       |
| `checkedOutBranchId` | Rama activa utilizada por el seguimiento de traducciones con reconocimiento de ramas.                                                                                                                                                            | `string`                                                        | Sí       |
| `formatMetadata`     | Metadatos específicos del formato almacenados con el archivo fuente.                                                                                                                                                                             | `GTJsonFormatMetadata \| FormatMetadata`                        | 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`

**Tipo** `UploadFilesOptions` · **Obligatorio**

Configuración para la carga:

| Campo           | Descripción                                                                                                                                                                                                            | Tipo     | Opcional |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- |
| `sourceLocale`  | Configuración regional de origen para la carga. También actualiza la configuración regional predeterminada del proyecto cuando difiere.                                                                                | `string` | No       |
| `modelProvider` | Aceptado por el tipo de opciones compartido, pero no enviado por este método de carga. En su lugar, define el proveedor en [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files). | `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<UploadFilesResponse>`

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; // la API actual puede omitirlo para la rama predeterminada
  fileName: string;
  fileFormat: FileFormat;
  transformFormat?: FileFormat; // este método de subida no lo rellena
  dataFormat?: DataFormat;
};
```

El tipo de la biblioteca declara `branchId` como obligatorio, pero la API actual puede omitirlo cuando selecciona la rama predeterminada. Tampoco rellena `transformFormat`; establece ese campo antes de pasar una referencia a [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) cuando necesites conversión de formato.

## 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',
  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 de texto se codifica automáticamente en Base64 para transmitirlo de forma segura. Pasa contenido binario `LOTTIE` como un archivo ZIP `.lottie` codificado en Base64.
* 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.
* **Formatos compatibles:** [`FileFormat`](/docs/platform/core/reference/types/file-format).

## Sitemap

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