# generaltranslation: General Translation Core SDK: downloadFile
URL: https://generaltranslation.com/zh/docs/core/class/methods/translation/download-file.mdx
---
title: downloadFile
description: 用于下载源文件或翻译后文件的 downloadFile 方法 API 参考
---
## 概述
`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),等待任务完成后再下载