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.
Справка
Параметры
| Имя | Тип | Описание |
|---|---|---|
fileIds | string[] | Массив идентификаторов файлов перевода для загрузки |
options? | DownloadFileBatchOptions | Необязательная конфигурация запроса загрузки |
DownloadFileBatchOptions
| Name | Type | Description |
|---|---|---|
timeout? | number | Время ожидания запроса в миллисекундах |
Возвращает
Promise<DownloadFileBatchResult> — содержит скачанные файлы и метаданные.
type DownloadFileBatchResult = {
files: File[];
count: number;
}| Свойство | Тип | Описание |
|---|---|---|
files | File[] | Массив скачанных файлов |
count | number | Число успешно скачанных файлов |
Структура проекта
type File = {
id: string;
fileName: string;
data: string;
metadata: any;
}| Свойство | Тип | Описание |
|---|---|---|
id | string | Идентификатор файла перевода |
fileName | string | Имя исходного файла |
data | string | Содержимое файла в виде строки UTF‑8 (декодировано из Base64) |
metadata | any | Дополнительные метаданные файла |
Примеры
// (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, чтобы получить метаданные переводов
Насколько полезно это руководство?