GT ClassMethodsTranslation

translateMany

GT translateMany 方法的批量翻译 API 参考

概览

translateMany 方法可在单个 API 请求中高效翻译多个内容项。 它针对批处理进行了优化,性能优于多次单独调用 translate

const gt = new GT({
  apiKey: 'your-api-key',
  projectId: 'your-project-id'
});

const result = await gt.translateMany([
  { source: 'Hello, world!' },
  { source: 'Welcome to our app' },
  { source: 'Click here to continue' }
], { targetLocale: 'es' });

参考资料

参数

Prop

Type

参数说明

参数说明
sourcesEntry 组成的数组,包含源内容及可选的逐项元数据
globalMetadata适用于所有条目的全局元数据,其中包含必填的 targetLocale

Entry 对象结构

sources 数组中的每个 Entry 可包含:

interface Entry {
  source: Content;           // 要翻译的内容
  targetLocale?: string;     // 覆盖全局目标语言环境
  context?: string;          // 此条目的翻译上下文
  tags?: string[];          // 用于分类的标签
  // ... 其他 EntryMetadata 属性
}

返回

Promise<TranslateManyResult>

结果包含已翻译的条目及任何错误信息:

interface TranslateManyResult {
  translations: Array<TranslationResult | TranslationError>;
  metadata: {
    totalRequests: number;
    successCount: number;
    errorCount: number;
    processingTime: number;
  };
}

行为

全局元数据 vs 单项元数据

  • 全局元数据 作为默认值应用于所有 Entry
  • 单项元数据 可在特定 Entry 上覆盖全局设置
  • 可为每个 Entry 单独覆盖目标 locale

错误处理策略

  • 单个翻译失败不会中断整个批次
  • 每个结果都会独立标示成功或失败
  • 完整支持部分成功的情况

Locale 解析

  • 全局目标 locale 将作为所有 Entry 的默认值
  • 单个 Entry 指定的目标 locales 会覆盖全局设置
  • 如已配置,所有 locale 将通过自定义映射进行解析

示例

const menuItems = await gt.translateMany([
  { source: 'Home' },
  { source: 'About' },
  { source: 'Products' },
  { source: 'Contact' }
], {
  targetLocale: 'fr',
  context: '导航菜单项'
});

menuItems.translations.forEach((result, index) => {
  if ('translation' in result) {
    console.log(`项目 ${index}:${result.translation}`);
  } else {
    console.error(`项目 ${index} 失败:${result.error}`);
  }
});

注意事项

  • 在一次 API 请求中可同时翻译多个条目
  • 某个 Entry 的翻译失败不会影响其他条目
  • 输出结果的顺序与输入条目一致
  • 全局元数据会与每条目的元数据合并(以条目级元数据为准)

下一步

这份指南怎么样?

translateMany