# generaltranslation: General Translation Core SDK: downloadFile
URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/download-file.mdx
---
title: downloadFile
description: Справка по API метода downloadFile для скачивания исходных или переведённых файлов
---
## Обзор
Метод `downloadFile` загружает содержимое одного файла в виде строки в кодировке UTF-8.
В зависимости от того, указана ли локаль, он загружает либо исходный файл, либо соответствующий перевод.
```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });
// Скачать перевод
const translatedContent = await gt.downloadFile({
fileId: 'file-123',
branchId: 'branch-456',
locale: 'es',
versionId: 'version-789'
});
// Скачать исходный файл (локаль не указана)
const sourceContent = await gt.downloadFile({
fileId: 'file-123',
branchId: 'branch-456'
});
```
**Статус перевода:**
При загрузке переводов этот метод работает только с завершёнными переводами.
Сначала используйте [`queryFileData`](/docs/core/class/methods/translation/query-file-data), чтобы убедиться, что переводы завершены, и только затем пытайтесь их загрузить.
## Справка
### Параметры
| Имя | Тип | Описание |
| ---------- | --------------------- | -------------------------------------------------------------------- |
| `file` | `FileInfo` | Объект с информацией о файле, определяющий, какой файл нужно скачать |
| `options?` | `DownloadFileOptions` | Необязательные параметры запроса на скачивание |
#### Структура FileInfo
| Имя | Тип | Описание |
| ---------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `fileId` | `string` | Уникальный идентификатор файла для скачивания |
| `branchId?` | `string` | ID ветки, из которой нужно скачать файл. Если не указан, будет использована ветка по умолчанию |
| `locale?` | `string` | Целевая локаль перевода, которую нужно скачать. Если не указана, будет скачан исходный файл |
| `versionId?` | `string` | Необязательный ID версии файла. Если не указан, будет использована последняя версия |
| `useLatestAvailableVersion?` | `boolean` | Если `true` и указанный `versionId` не найден, будет использована последняя доступная версия вместо ошибки. По умолчанию — `false` |
#### DownloadFileOptions
| Имя | Тип | Описание |
| ---------- | -------- | -------------------------------- |
| `timeout?` | `number` | Тайм-аут запроса в миллисекундах |
### Возвращает
`Promise` — содержимое файла в виде строки в кодировке UTF-8.
Возвращаемая строка содержит содержимое файла в том же формате, что и исходный файл. В случае перевода весь переводимый текст переводится на целевую локаль.
***
## Пример
```typescript title="index.ts" copy
// (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) Дождаться завершения всех переводов
const { fileId, versionId, branchId } = uploadedFiles[0];
const result = await gt.awaitJobs(enqueueResult);
if (!result.complete) {
console.error('Некоторые задания не завершились вовремя');
}
// (5) Скачать отдельный файл
const spanishContent = await gt.downloadFile({
fileId,
branchId,
locale: 'es'
});
console.log('Перевод на испанский:', spanishContent);
```
***
## Примечания
* Возвращает загруженный файл в виде строки UTF-8
* Если указана локаль, для файла должен быть доступен завершённый перевод на эту локаль
* Если локаль не указана, возвращается исходный файл
* Если файл не найден, операция завершится ошибкой
## Следующие шаги
* См. [`queryFileData`](/docs/core/class/methods/translation/query-file-data), чтобы проверить статус перевода перед загрузкой
* См. [`downloadFileBatch`](/docs/core/class/methods/translation/download-file-batch), чтобы эффективно загрузить несколько файлов
* См. [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files), чтобы ознакомиться с процессом загрузки файлов
* См. [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files), чтобы запустить задания на перевод
* См. [`awaitJobs`](/docs/core/class/methods/translation/await-jobs), чтобы дождаться завершения заданий перед загрузкой