# generaltranslation: General Translation Core SDK: uploadTranslations
URL: https://generaltranslation.com/es/docs/core/class/methods/translation/upload-translations.mdx
---
title: uploadTranslations
description: Referencia de la API del método uploadTranslations para cargar archivos de traducción existentes
---
## Resumen
El método `uploadTranslations` carga archivos de traducción que corresponden a archivos de origen cargados previamente.
Esto resulta útil cuando ya tienes traducciones existentes y quieres cargarlas directamente, en lugar de generarlas mediante el servicio de traducción.
```typescript
const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' });
const result = await gt.uploadTranslations(files, {
sourceLocale: 'en'
});
```
Debes haber cargado previamente los archivos de origen con [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) antes de cargar las traducciones.
## Referencia
### Parámetros
| Nombre | Tipo | Descripción |
| --------- | --------------------- | -------------------------------------------------------------- |
| `files` | `TranslationUpload[]` | Array de referencias a archivos de origen con sus traducciones |
| `options` | `UploadFilesOptions` | Opciones de configuración para la carga |
#### Estructura de TranslationUpload
```typescript
type TranslationUpload = {
source: FileUpload; // Referencia al archivo de origen existente (no se necesita contenido)
translations: FileUpload[]; // Array de archivos traducidos con contenido
}
```
#### Estructura de FileUpload (como referencia del original)
| Nombre | Tipo | Descripción |
| ------------ | ------------ | ---------------------------------------------------------------------------- |
| `fileName` | `cadena` | Nombre del archivo que coincide con el archivo de origen cargado previamente |
| `fileFormat` | `FileFormat` | Formato del archivo (JSON, MDX, MD, XML, etc.) |
| `fileId?` | `cadena` | ID opcional del archivo de origen |
| `versionId?` | `cadena` | ID de versión opcional del archivo de origen |
#### Estructura de FileUpload (para traducciones)
| Nombre | Tipo | Descripción |
| ------------ | ------------ | -------------------------------------------------------------- |
| `content` | `string` | Contenido sin procesar del archivo traducido como una `cadena` |
| `fileName` | `string` | Nombre del archivo de la traducción |
| `fileFormat` | `FileFormat` | Formato del archivo (JSON, MDX, MD, XML, etc.) |
| `locale` | `string` | Configuración regional de destino de la traducción |
| `fileId?` | `string` | ID de archivo opcional |
| `versionId?` | `string` | ID de versión opcional |
#### UploadFilesOptions
| Nombre | tipo | Descripción |
| -------------- | -------- | -------------------------------------------------------- |
| `sourceLocale` | `string` | La configuración regional de origen para los archivos |
| `branchId?` | `string` | ID opcional de la rama a la que se cargarán los archivos |
| `timeout?` | `number` | Tiempo de espera de la solicitud en milisegundos |
### Devuelve
`Promise` - Contiene los resultados de la carga y las referencias a archivos.
```typescript
type UploadFilesResponse = {
uploadedFiles: FileReference[];
count: number;
message: string;
}
```
| Propiedad | Tipo | Descripción |
| --------------- | ----------------- | ----------------------------------------- |
| `uploadedFiles` | `FileReference[]` | array de referencias a archivos cargados |
| `count` | `number` | Número de archivos cargados correctamente |
| `message` | `string` | Mensaje de estado de la API |
***
## Ejemplos
### Uso básico
Carga traducciones para archivos de origen cargados previamente:
```typescript copy
import { GT } from 'generaltranslation';
import fs from 'fs';
const gt = new GT({
apiKey: 'your-api-key',
projectId: 'your-project-id'
});
// Se asume que el archivo de origen fue cargado previamente
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`);
```
### Cargar después de cargar el origen
Flujo de trabajo completo: primero carga los archivos de origen y luego las traducciones:
```typescript copy
import { GT } from 'generaltranslation';
import fs from 'fs';
const gt = new GT({
apiKey: 'your-api-key',
projectId: 'your-project-id'
});
// Paso 1: Cargar archivos de origen
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'
});
// Paso 2: Cargar traducciones existentes
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(`Se cargaron ${translationResult.count} traducciones`);
```
### Carga por lotes de varios archivos
Carga traducciones para varios archivos de origen:
```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 {
// El archivo de traducción no existe para esta configuración regional
return null;
}
})
.filter(Boolean)
}));
const result = await gt.uploadTranslations(files, {
sourceLocale: 'en',
timeout: 60000
});
return result;
}
```
***
## Notas
* Los archivos fuente deben cargarse primero con [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files)
* El objeto `source` en cada entrada de archivo es una referencia a un archivo de origen existente (no se necesita el contenido)
* Cada traducción del array `translations` debe incluir contenido y una configuración regional de destino
* Este método es útil para migrar traducciones existentes o cargar traducciones revisadas manualmente
* Las referencias a archivo incluyen `branchId` para un control de versiones correcto con compatibilidad con el uso de ramas
## Próximos pasos
* Consulta [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) para cargar primero los archivos de origen
* Consulta [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) para generar traducciones automáticamente
* Consulta [`downloadFile`](/docs/core/class/methods/translation/download-file) para descargar las traducciones
* Consulta [`queryFileData`](/docs/core/class/methods/translation/query-file-data) para comprobar el estado de la traducción