# generaltranslation: General Translation Core SDK: enqueueFiles URL: https://generaltranslation.com/zh/docs/core/class/methods/translation/enqueue-files.mdx --- title: enqueueFiles description: enqueueFiles 方法的 API 参考,用于将文件翻译任务加入队列 --- ## 概述 `enqueueFiles` 方法会为之前已上传的源文件将翻译任务加入队列。 该方法接收文件引用,并为指定的目标区域设置创建翻译任务。 ```typescript const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' }); const result = await gt.enqueueFiles(fileRefs, { sourceLocale: 'en', targetLocales: ['es', 'fr', 'de'] }); ``` 只有在文件上传后,才能将其加入翻译队列。 ## 参考 ### 参数 | 名称 | 类型 | 描述 | | --------- | -------------------- | ---------------------- | | `files` | `FileReferenceIds[]` | 由先前已上传文件的文件引用 ID 组成的数组 | | `options` | `EnqueueOptions` | 翻译任务的配置选项 | #### FileReferenceIds 结构 ```typescript type FileReferenceIds = { fileId: string; versionId: string; branchId?: string; fileName?: string; fileFormat?: FileFormat; dataFormat?: DataFormat; } ``` | 名称 | 类型 | 说明 | | ------------- | ------------ | -------------------------- | | `fileId` | `string` | 唯一文件标识符 | | `versionId` | `string` | 版本标识符 | | `branchId?` | `string` | 分支标识符 (可选) | | `fileName?` | `string` | 文件名 (可选) | | `fileFormat?` | `FileFormat` | 文件格式 (JSON、MD 等) | | `dataFormat?` | `DataFormat` | 文件内的数据格式 (ICU、I18NEXT、JSX) | #### EnqueueOptions | 名称 | 类型 | 描述 | | ------------------ | ---------- | --------------------------------- | | `sourceLocale?` | `string` | 翻译时使用的源区域设置 (默认为实例的 sourceLocale) | | `targetLocales` | `string[]` | 翻译时使用的目标区域设置数组 | | `requireApproval?` | `boolean` | 翻译在发布前是否需要批准 | | `modelProvider?` | `string` | 翻译时使用的特定 AI 模型提供商 | | `force?` | `boolean` | 即使翻译已存在,也强制重新翻译 | | `timeout?` | `number` | 请求超时时间 (以毫秒为单位) | ### 返回值 `Promise` - 包含任务信息和处理详情。 ```typescript type EnqueueFilesResult = { jobData: { [jobId: string]: { sourceFileId: string; fileId: string; versionId: string; branchId: string; targetLocale: string; projectId: string; force: boolean; modelProvider?: string; }; }; locales: string[]; message: string; } ``` | 属性 | 类型 | 描述 | | --------- | ------------------------ | ------------------------------- | | `jobData` | `Record` | 以作业 ID 为键的记录,其中每个值都包含该翻译任务的详细信息 | | `locales` | `string[]` | 翻译任务的目标区域设置列表 | | `message` | `string` | API 返回的状态消息 | *** ## 示例 ```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, } ); console.log(`翻译任务已创建:${enqueueResult.jobId}`); // (4) 等待所有翻译完成 const { fileId, versionId, branchId } = uploadedFiles[0]; const translatedFileQueries = targetLocales.map((locale) => ({ fileId, versionId, branchId, locale })); while (true) { const result = await gt.queryFileData({ translatedFiles: translatedFileQueries }); const allCompleted = result.translatedFiles?.every( (file) => file.completedAt !== null ); if (allCompleted) { break; } await new Promise(resolve => setTimeout(resolve, 1000)); } // (5) 下载文件 const downloadResult = await gt.downloadFileBatch( targetLocales.map((locale) => ({ fileId, branchId, locale })) ); ``` *** ## 注意事项 * 必须先使用 [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) 上传文件内容 * 翻译任务是异步执行的——请使用 [`queryFileData`](/docs/core/class/methods/translation/query-file-data) 监控进度 * 文件引用包含 `branchId`,以便在支持分支的情况下正确进行版本管理 ## 后续步骤 * 请参阅 [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files),在加入队列前先上传文件 * 请参阅 [`queryFileData`](/docs/core/class/methods/translation/query-file-data),监控翻译进度 * 请参阅 [`downloadFile`](/docs/core/class/methods/translation/download-file),获取已完成的译文 * 请参阅 [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status),检查任务状态