# General Translation Platform: Traducir archivos
URL: https://generaltranslation.com/es/docs/platform/core/guides/translating-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Cómo cargar, traducir y descargar archivos con la biblioteca generaltranslation.

La biblioteca `generaltranslation` puede traducir archivos fuente completos. Esta página explica los flujos de trabajo de carga, puesta en cola, consulta del estado y descarga de archivos.

## Antes de empezar [#before-start]

Asegúrate de haber completado el [Quickstart](/docs/platform/core/quickstart) para instalar `generaltranslation` e inicializar la clase [GT](/docs/platform/core/reference/gt-class/constructor).

## Cómo funciona la traducción de archivos [#file-translation-works]

Los archivos se traducen como trabajos:

1. Sube el archivo fuente.
2. Encola el archivo para traducirlo.
3. Consulta el estado de la traducción.
4. Descarga el archivo traducido.

La traducción de archivos requiere varias llamadas porque los proyectos suelen traducir muchos archivos. Separar los pasos te da más flexibilidad al usar la API: facilita procesar archivos por lotes, reintentar trabajos fallidos, consultar periódicamente el estado de los trabajos y descargar el resultado cuando esté listo.

Al subir archivos se crean registros de archivos fuente. Luego, llamar a [`enqueueFiles`](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) puede iniciar un trabajo por cada par de archivo fuente y configuración regional de destino que aún requiera trabajo. (Consulta los métodos [`uploadSourceFiles`](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files) y [`queryFileData`](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) para obtener más información).

Para los archivos SVG, pasa el código fuente XML en UTF-8 con `fileFormat: 'SVG'`. La traducción actualiza los nodos de texto y conserva las formas y los estilos. Un proceso asíncrono de maquetación puede recentrar el texto y acortar las traducciones que se desborden, conservando los tamaños de fuente definidos, así que espera a que el archivo esté completo antes de descargarlo. El XML mal formado se rechaza.

## 1. Sube el archivo fuente [#upload]

A modo de ejemplo, en esta guía se traduce este archivo JSON en inglés:

```json
{
  "hello": "Hello",
  "world": "World"
}
```

Lee el archivo, da formato al contenido y luego llama a [uploadSourceFiles](/docs/platform/core/reference/gt-class-methods/translation/upload-source-files) para subir los archivos.

```typescript title="src/index.ts"
import fs from 'fs';
import path from 'path';
import type { FileUpload } from 'generaltranslation/types';

// (i) Leer el contenido de un archivo
const filePath = path.join(process.cwd(), 'en.json');
const fileContents = fs.readFileSync(filePath, 'utf8');

// (ii) Formatear el contenido del archivo
const fileUpload: FileUpload = {
  content: fileContents,
  fileName: filePath,
  fileFormat: 'JSON',
  locale: 'en',
};
const files = [ { source: fileUpload } ];

// (iii) Subir el archivo
const { uploadedFiles } = await gt.uploadSourceFiles(
  files,
  {
    sourceLocale: 'en'
  }
);
```

La respuesta devuelve una lista de referencias a archivos. Esto te permite, más adelante, encolar el archivo para traducirlo, comprobar su estado y descargar el archivo traducido.

```ts title="Output"
[
  {
    fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
    versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
    branchId: '123456789',
    fileName: '/Users/demo/en.json',
    fileFormat: 'JSON'
  }
]
```

## 2. Encola el archivo para traducirlo [#enqueue]

Usa [enqueueFiles](/docs/platform/core/reference/gt-class-methods/translation/enqueue-files) con la referencia del archivo cargado y las configuraciones regionales de destino. En este ejemplo, lo traduciremos al español (`es`).

```typescript title="src/index.ts"
const fileUploadRef = {
  fileId: uploadedFiles[0].fileId,
  versionId: uploadedFiles[0].versionId,
  branchId: uploadedFiles[0].branchId,
  fileName: uploadedFiles[0].fileName,
  fileFormat: uploadedFiles[0].fileFormat,
};

const enqueueResult = await gt.enqueueFiles(
  [fileUploadRef],
  {
    sourceLocale: 'en',
    targetLocales: ['es'],
  }
);
```

La respuesta devuelve un resultado con la información del trabajo.

```ts title="Output"
{
  jobData: {
    'job-123456': {
      sourceFileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
      fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
      versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
      branchId: '123456789',
      targetLocale: 'es',
      projectId: 'your-project-id',
      force: false
    }
  },
  locales: ['es'],
  message: 'Successfully enqueued 1 file translation jobs in 1 batch(es)'
}
```

## 3. Comprueba el estado del archivo [#status]

Usa [queryFileData](/docs/platform/core/reference/gt-class-methods/translation/query-file-data) para comprobar si el archivo traducido está completo y listo para su descarga.

```typescript title="src/index.ts"
const { fileId, versionId, branchId } = uploadedFiles[0];

const status = await gt.queryFileData({
  translatedFiles: [
    {
      fileId,
      versionId,
      branchId,
      locale: 'es',
    },
  ],
});
```

Si el archivo aún está en proceso de traducción, `completedAt` es `null`. Cuando se completa, contiene una marca de tiempo:

```ts title="Output"
{
  translatedFiles: [
    {
      fileId: '41726368696562616c64204d6342616c64792074686973206973206a6f6b652e',
      versionId: '427269616e204c6f75206d6f7265206c696b65204c696f6e2042726f20686121',
      branchId: '123456789',
      locale: 'es',
      completedAt: '2024-01-15T12:00:00Z'
    }
  ]
}
```

## 4. Descarga el archivo traducido [#download]

Por último, descarga el archivo traducido mediante el método [downloadFile](/docs/platform/core/reference/gt-class-methods/translation/download-file).

```typescript title="src/index.ts"
const content = await gt.downloadFile({
  fileId,
  versionId,
  branchId,
  locale: 'es',
});
```

La respuesta devuelve el contenido del archivo traducido. En este ejemplo, devuelve:

```json title="Output"
{
  "hello": "Hola",
  "world": "Mundo"
}
```

## Next steps

- /docs/platform/core/guides/translating-strings
- /docs/platform/core/guides/locale-codes

## Sitemap

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