使用Google Cloud翻译API批量翻译Docx时术语表参数错误排查
解决Google Cloud翻译API术语表配置错误
错误原因
你遇到的INVALID_ARGUMENT错误,核心问题是术语表的配置方式不符合API要求:
batchTranslateDocument接口的glossaries字段不能直接在请求中上传TMX文件,必须引用GCP项目中已经创建完成的术语表资源- 单向术语表需要明确绑定对应的目标语言,确保和翻译请求的
targetLanguageCodes完全匹配
解决步骤
1. 先在GCP中创建术语表
用gcloud命令行(或GCP控制台、API)创建术语表,替换成你的项目信息:
gcloud translate glossaries create ar2en-glossary \ --source-language=ar \ --target-languages=en \ --input-file=gs://legrandtimonier1951/glossaries/ar2en1.tmx \ --location=global \ --project=sixth-sequencer-373709
执行完成后,会得到术语表的资源名称,格式为:projects/sixth-sequencer-373709/locations/global/glossaries/ar2en-glossary
2. 修改代码中的术语表配置
替换原代码中glossaryConfig和request里的相关部分,修改后的代码片段如下:
async function translateDocxFile(inputPath, outputPath, targetLanguage) { // 保留原有inputConfig、outputConfig代码不变 // 修正后的术语表配置 const glossaryConfig = { glossary: "projects/sixth-sequencer-373709/locations/global/glossaries/ar2en-glossary", // 替换为你创建的术语表资源ID targetLanguageCode: targetLanguage // 明确绑定目标语言 }; // 修正后的请求结构 const request = { parent: `projects/${projectId}/locations/global`, sourceLanguageCode: sourceLanguage, targetLanguageCodes: [targetLanguage], inputConfigs: [inputConfig], outputConfig: outputConfig, glossaries: [glossaryConfig], }; // 保留原有try/catch代码不变 }
关键修改说明
- 移除了原代码中直接上传TMX的
inputConfig和languageCodesSet配置,改为引用已创建的术语表资源ID - 添加
targetLanguageCode字段,明确指定术语表对应的目标语言,确保和翻译请求的目标语言完全一致 - 术语表的源语言(阿拉伯语
ar)和翻译请求的sourceLanguageCode必须匹配,否则仍会报错
内容的提问来源于stack exchange,提问作者Gary Lebowitz
相关产品推荐
相关产品推荐

