GT ClassMethodsTranslation
uploadSourceFiles
uploadSourceFiles 方法的 API 参考:用于上传待翻译的源文件
概览
uploadSourceFiles 方法会将源文件上传到 General Translation 平台以进行翻译处理。
这通常是翻译工作流的第一步,先于设置项目或将翻译任务加入队列。
const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' });
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en'
});参考资料
参数
| 名称 | 类型 | 说明 |
|---|---|---|
files | FileUpload[] | 待上传的源文件数组 |
options | UploadFilesOptions | 上传的配置项 |
FileUpload 结构
| 名称 | 类型 | 描述 |
|---|---|---|
content | string | 原始文件内容(字符串) |
fileName | string | 唯一文件标识符(通常为文件路径 + 名称) |
fileFormat | FileFormat | 文件格式(JSON、MDX、MD、XML 等) |
dataFormat? | DataFormat | 文件内数据的可选格式(ICU、i18next、JSX) |
locale | string | 源文件内容的 locale |
versionId? | string | 高级用例的可选版本 ID |
fileId? | string | 高级用例的可选文件 ID |
UploadFilesOptions
| 名称 | 类型 | 描述 |
|---|---|---|
sourceLocale | string | 所有上传文件的源语言(sourceLocale) |
modelProvider? | string | 可选的 AI 模型提供商偏好设置 |
timeout? | number | 请求超时时间(毫秒) |
返回
Promise<UploadFilesResponse> - 包含上传结果和文件引用。
type UploadFilesResponse = {
uploadedFiles: FileUploadRef[];
count: number;
message: string;
}| 属性 | 类型 | 说明 |
|---|---|---|
uploadedFiles | FileUploadRef[] | 已上传文件引用的数组,用于后续操作 |
count | number | 成功上传的文件数 |
message | string | 来自 API 的状态信息 |
FileUploadRef 结构体
type FileUploadRef = {
fileId: string;
versionId: string;
fileName: string;
fileFormat: FileFormat;
dataFormat?: DataFormat;
locale?: string;
}示例
基本用法
上传 JSON 译文文件:
import { GT } from 'generaltranslation';
import fs from 'fs';
const gt = new GT({
apiKey: 'your-api-key'
});
const files = [
{
content: fs.readFileSync('./locales/en/common.json', 'utf8'),
fileName: 'common.json',
fileFormat: 'JSON' as const,
locale: 'en'
},
{
content: fs.readFileSync('./locales/en/navigation.json', 'utf8'),
fileName: 'navigation.json',
fileFormat: 'JSON' as const,
locale: 'en'
}
];
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en'
});
console.log(`已上传 ${result.count} 个文件`);
result.uploadedFiles.forEach(file => {
console.log(` ${file.fileName}:${file.fileId}`);
});指定数据格式
上传 files,并显式指定数据格式:
const files = [
{
content: '{"welcome": "Welcome, {name}!"}',
fileName: 'messages.json',
fileFormat: 'JSON' as const,
dataFormat: 'ICU' as const, // ICU 消息格式
locale: 'en'
},
{
content: '{"greeting": "Hello {{name}}"}',
fileName: 'i18next.json',
fileFormat: 'JSON' as const,
dataFormat: 'I18NEXT' as const,
locale: 'en'
}
];
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
modelProvider: 'gpt-4',
timeout: 30000
});带有错误处理的批量上传
上传多个文件,并提供完善的错误处理:
import { glob } from 'glob';
import path from 'path';
async function uploadAllJsonFiles() {
try {
// 查找所有 JSON 文件
const jsonPaths = await glob('./locales/en/**/*.json');
const files = jsonPaths.map(filePath => ({
content: fs.readFileSync(filePath, 'utf8'),
fileName: path.relative('./locales/en', filePath),
fileFormat: 'JSON' as const,
locale: 'en'
}));
console.log(`正在上传 ${files.length} 个文件…`);
const result = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
timeout: 60000 // 大批量上传的 60 秒超时时间
});
if (result.count !== files.length) {
console.warn(`预期上传 ${files.length} 个文件,但实际仅上传了 ${result.count} 个`);
}
return result.uploadedFiles;
} catch (error) {
console.error('上传失败:', error);
throw error;
}
}
const uploadedFiles = await uploadAllJsonFiles();注意事项
- 文件内容会自动进行 Base64 编码,以确保安全传输
- 文件名应是唯一标识符,通常包含文件路径
- 每个文件中的
locale字段应与sourceLocale选项一致 - 处理大文件或数量较多的文件时,可能需要提高 timeout 值
- 此方法返回的文件引用将在后续操作中使用
- 支持的文件格式包括 JSON、MD、MDX、XML 等——完整列表请参见
FileFormat类型
下一步
- 参见
setupProject以准备已上传的文件用于翻译 - 参见
enqueueFiles以启动翻译任务 - 参见
uploadTranslations以上传现有译文 - 参见
FileUpload以了解文件结构详情
本指南如何?