# General Translation Platform: translateMany URL: https://generaltranslation.com/zh/docs/platform/core/reference/gt-class-methods/translation/translate-many.mdx --- title: translateMany description: 在一次请求中翻译多个字符串或结构化内容条目。translateMany 的 API 参考。 --- 在一次 General Translation API 请求中翻译多个内容条目。适用于批量翻译——比多次单独调用 [`translate`](/docs/platform/core/reference/gt-class-methods/translation/translate) 更高效。 ## 概览 [#overview] 在已配置的 [`GT`](/docs/platform/core/reference/gt-class/constructor) 实例上调用 `translateMany`,传入一组条目,以及目标区域设置字符串 (简写) 或选项对象。它既支持以数组形式传入条目,也支持传入以哈希为键的记录,并会以相同的结构返回结果。 ```typescript const gt = new GT({ apiKey: 'your-api-key', projectId: 'your-project-id' }); const results = await gt.translateMany( ['Hello, world!', 'Welcome to our app', 'Click here to continue'], 'es' ); ``` 签名: ```typescript // 重载 1:entries 的 array translateMany( sources: TranslateManyEntry[], options: string | TranslateOptions, timeout?: number ): Promise // 重载 2:以 hash 为键的 entries record translateMany( sources: Record, options: string | TranslateOptions, timeout?: number ): Promise> ``` *注意:`translateMany` 需要在 GT 实例中提供 `apiKey` (或 `devApiKey`) 和 `projectId`。* ## 工作原理 [#how-it-works] * **数组与 记录。** 使用数组时,条目会在内部计算哈希,结果会按输入顺序返回。使用 记录 时,各个键会被视为哈希值,返回的也是一个具有相同键的 记录。 * **独立结果。** 单个翻译失败不会中止批量操作——每个结果都会分别报告成功或失败,因此完全支持部分成功。 * **选项简写。** 给 `options` 传入一个 string 时,就是 `{ targetLocale: string }` 的简写形式,因此 `gt.translateMany(['Hello'], 'es')` 和 `gt.translateMany(['Hello'], { targetLocale: 'es' })` 是等价的。 ## 参数 [#parameters] | 参数 | 描述 | 类型 | 可选 | 默认值 | | --------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -- | --- | | [`sources`](#sources) | 要翻译的条目数组或 Record。 | [`TranslateManyEntry[] \| Record`](/docs/platform/core/reference/types/translate-many-entry) | 否 | — | | [`options`](#options) | 目标区域设置字符串,或 选项对象。 | `string \| TranslateOptions` | 否 | — | | [`timeout`](#timeout) | 请求超时时间 (毫秒) 。 | `number` | 是 | — | ### `sources` [#sources] **类型** [`TranslateManyEntry[] \| Record`](/docs/platform/core/reference/types/translate-many-entry) · **必填** 待翻译的条目。每个 [`TranslateManyEntry`](/docs/platform/core/reference/types/translate-many-entry) 都可以是一个普通字符串,或一个包含 `source` ([`Content`](/docs/platform/core/reference/types/content)) 以及可选 `metadata` ([`EntryMetadata`](/docs/platform/core/reference/types/entry-metadata)) 的对象: ```typescript type TranslateManyEntry = string | { source: Content; metadata?: EntryMetadata }; ``` 传入数组时,结果会按输入顺序返回;传入以哈希为键的记录时,结果则会按相同的键返回。 ### `options` [#options] **类型** `string | TranslateOptions` · **必填** 目标区域设置字符串,例如 `'es'`,或一个选项对象: ```typescript type TranslateOptions = { targetLocale: string; // 要翻译成的区域设置 sourceLocale?: string; // 覆盖实例的 sourceLocale modelProvider?: string; // 可选的模型提供商提示 }; ``` ### `timeout` [#timeout] **类型** `number` · **可选** 请求超时时间,单位为毫秒。未指定时,使用实例默认值。 ## 返回值 [#returns] **类型** `Promise | Promise>` * **数组输入** 会解析为 [`TranslateManyResult`](/docs/platform/core/reference/types/translate-many-result) (即由 [`TranslationResult`](/docs/platform/core/reference/types/translation-result) 对象组成的数组) ,顺序与输入保持一致。 * **记录 输入** 会解析为 `Record`,其键与输入中的哈希值相同。 读取结果中的译文前,请先根据 `success` 缩小每个结果的类型范围。 ## 示例 [#examples] ```typescript // 字符串数组 const results = await gt.translateMany(['Home', 'About', 'Products', 'Contact'], 'fr'); results.forEach((result, index) => { if (result.success) { console.log(`Item ${index}: ${result.translation}`); } else { console.error(`Item ${index} failed: ${result.error}`); } }); ``` ```typescript // 包含每条条目元数据的数组 const results = await gt.translateMany( [ { source: 'Hello, world!', metadata: { dataFormat: 'ICU' } }, { source: 'Goodbye, world!' }, ], { targetLocale: 'es' } ); ``` ```typescript // 以哈希为键的 记录 — 结果通过相同的键返回 const results = await gt.translateMany( { 'greeting-hash': 'Hello, world!', 'farewell-hash': 'Goodbye, world!', }, 'es' ); console.log(results['greeting-hash'].translation); ``` ## 说明 [#notes] * 在一次 API 请求中翻译多个条目。 * 某个条目失败不会影响其他条目。 * 结果会保持与输入数组一致的顺序,或保留与输入记录相同的键。