GT ClassMethodsTranslation

downloadFileBatch

Справочник API по методу downloadFileBatch для скачивания нескольких файлов переводов одним запросом

Обзор

Метод downloadFileBatch скачивает несколько файлов перевода одним пакетным запросом.

const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });

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

Эффективность пакетной обработки: Этот метод оптимизирован для загрузки нескольких файлов за один вызов API, снижая сетевые накладные расходы и повышая производительность по сравнению с несколькими отдельными вызовами downloadTranslatedFile.

Справка

Параметры

ИмяТипОписание
fileIdsstring[]Массив идентификаторов файлов перевода для загрузки
options?DownloadFileBatchOptionsНеобязательная конфигурация запроса загрузки

DownloadFileBatchOptions

NameTypeDescription
timeout?numberВремя ожидания запроса в миллисекундах

Возвращает

Promise<DownloadFileBatchResult> — содержит скачанные файлы и метаданные.

type DownloadFileBatchResult = {
  files: File[];
  count: number;
}
СвойствоТипОписание
filesFile[]Массив скачанных файлов
countnumberЧисло успешно скачанных файлов

Структура проекта

type File = {
  id: string;
  fileName: string;
  data: string;
  metadata: any;
}
СвойствоТипОписание
idstringИдентификатор файла перевода
fileNamestringИмя исходного файла
datastringСодержимое файла в виде строки UTF‑8 (декодировано из Base64)
metadataanyДополнительные метаданные файла

Примеры

index.ts
// (1) Создайте экземпляр GT
const targetLocales = ['es', 'fr', 'de'];
const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

// (2) Загрузите файл
const fileUpload = {
  content: fileContents,
  fileName: filePath,
  fileFormat: 'JSON',
  locale: 'en',
};
const files = [ { source: fileUpload } ];
const { uploadedFiles } = await gt.uploadSourceFiles(
  files,
  { sourceLocale: 'en' }
);

// (3) Добавьте задачу перевода файла в очередь
const enqueueResult = await gt.enqueueFiles(
  uploadedFiles,
  {
  sourceLocale: 'en',
  targetLocales: targetLocales,
});

// (4) Дождитесь завершения всех переводов
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) Скачайте файл
const result = await gt.downloadFileBatch(translationIds);

Примечания

  • Идентификаторы файлов должны быть корректными идентификаторами перевода — сначала проверьте завершённость с помощью checkFileTranslations
  • По возможности файлы возвращаются в том же порядке, в каком были запрошены их идентификаторы
  • Неудачные загрузки отдельных файлов внутри пакета не приводят к сбою всего пакета

Следующие шаги

  • См. downloadTranslatedFile для загрузки отдельного файла
  • См. checkFileTranslations, чтобы проверить, что файлы готовы к загрузке
  • См. enqueueFiles, чтобы запустить задания перевода
  • См. fetchTranslations, чтобы получить метаданные переводов

Насколько полезно это руководство?

downloadFileBatch