GT ClassMethodsTranslation

downloadFileBatch

Referencia de API del método downloadFileBatch para descargar múltiples files de traducción en una sola solicitud

Descripción general

El método downloadFileBatch descarga varios archivos de traducción en una única solicitud por lotes.

const gt = new GT({ projectId: 'tu projectId', apiKey: 'tu apiKey' });

const result = await gt.downloadFileBatch([
  'translation-id-1', 
  'translation-id-2', 
  'translation-id-3'
]);

Eficiencia por lotes: Este método está optimizado para descargar múltiples files en una sola llamada a la API, lo que reduce la sobrecarga de red y mejora el rendimiento en comparación con realizar varias llamadas individuales a downloadTranslatedFile.

Referencia

Parámetros

NombreTipoDescripción
fileIdsstring[]Array de IDs de archivos de traducción para descargar
options?DownloadFileBatchOptionsConfiguración opcional para la solicitud de descarga

DownloadFileBatchOptions

NombreTipoDescripción
timeout?numberTiempo de espera de la solicitud, en milisegundos

Devuelve

Promise<DownloadFileBatchResult> - Contiene los files descargados y sus metadatos.

type DownloadFileBatchResult = {
  files: File[];
  count: number;
}
PropiedadTipoDescripción
filesFile[]Matriz de objetos de archivo descargados
countnumberNúmero de files descargados correctamente

Estructura de archivos

type Archivo = {
  id: string;
  nombreArchivo: string;
  datos: string;
  metadatos: any;
}
PropiedadTipoDescripción
idstringID del archivo de traducción
fileNamestringNombre del archivo original
datastringContenido del archivo como cadena UTF-8 (decodificada desde Base64)
metadataanyMetadatos adicionales del archivo

Ejemplos

index.ts
// (1) Crea una instancia de GT
const targetLocales = ['es', 'fr', 'de'];
const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

// (2) Sube el archivo
const fileUpload = {
  content: fileContents,
  fileName: filePath,
  fileFormat: 'JSON',
  locale: 'en',
};
const files = [ { source: fileUpload } ];
const { uploadedFiles } = await gt.uploadSourceFiles(
  files,
  { sourceLocale: 'en' }
);

// (3) Pon en cola el trabajo de traducción del archivo
const enqueueResult = await gt.enqueueFiles(
  uploadedFiles,
  {
  sourceLocale: 'en',
  targetLocales: targetLocales,
});

// (4) Espera a que se completen todas las traducciones
let translationIds = [];
const statusQuery = Object.values(enqueueResult.data).flatMap(({fileName, versionId}) => {
  return targetLocales.map((locale) => ({locale, fileName, versionId}));
});
while (true) {
  const status = await gt.checkFileTranslations(statusQuery);
  if (status.translations.length === statusQuery.length) {
    translationIds = status.translations.map(translation => translation.id);
    break;
  }
  await new Promise(resolve => setTimeout(resolve, 1000));
}

// (5) Descarga el archivo
const result = await gt.downloadFileBatch(translationIds);

Notas

  • Los IDs de archivos deben ser IDs de traducción válidos: usa checkFileTranslations para verificar primero que estén completos
  • Los files se devuelven en el mismo orden que los IDs solicitados cuando es posible
  • Las descargas fallidas de files individuales dentro del lote no hacen que falle todo el lote

Próximos pasos

¿Qué te parece esta guía?