# General Translation Platform: translateMany URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/translate-many.mdx --- title: translateMany description: Переводит несколько строк или записей структурированного контента в одном запросе. Справочник API для translateMany. --- Переводит несколько записей контента в рамках одного запроса к API General Translation. Используйте этот метод для пакетного перевода — это эффективнее, чем выполнять множество отдельных вызовов [`translate`](/docs/platform/core/reference/gt-class-methods/translation/translate). ## Обзор [#overview] Вызовите `translateMany` у настроенного экземпляра [`GT`](/docs/platform/core/reference/gt-class/constructor), передав набор записей и либо строку целевой локали (сокращённая запись), либо объект параметров. Метод принимает записи в виде массива или `объект `Record`` с ключами-хешами и возвращает результат в той же структуре. ```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: массив записей translateMany( sources: TranslateManyEntry[], options: string | TranslateOptions, timeout?: number ): Promise // Перегрузка 2: запись записей с ключом по хешу translateMany( sources: Record, options: string | TranslateOptions, timeout?: number ): Promise> ``` *Примечание: для `translateMany` в экземпляре GT требуются `apiKey` (или `devApiKey`) и `projectId`.* ## Как это работает [#how-it-works] * **Массив и объект `Record`.** Если передан массив, его элементы хешируются внутри, а результаты возвращаются в порядке входных данных. Если передан объект, его ключи трактуются как хеши, и в ответе возвращается объект с теми же ключами. * **Независимые результаты.** Ошибка перевода отдельного элемента не останавливает пакетную операцию — каждый результат отдельно сообщает об успехе или ошибке, поэтому частичный успех полностью поддерживается. * **Сокращённая форма options.** Передача строки в `options` — это сокращённая форма для `{ 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 }; ``` Передайте массив, чтобы получить результаты в том же порядке, что и входные данные, или объект `Record` с хешами в качестве ключей, чтобы получить результаты с теми же ключами. ### `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`** возвращается `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 // Объект `Record` с ключами-хэшами — результаты возвращаются под теми же ключами const results = await gt.translateMany( { 'greeting-hash': 'Hello, world!', 'farewell-hash': 'Goodbye, world!', }, 'es' ); console.log(results['greeting-hash'].translation); ``` ## Заметки [#notes] * Переводит несколько записей за один API-запрос. * Ошибка в одной записи не влияет на остальные. * Результаты сохраняют тот же порядок, что и во входном массиве, или те же ключи, что и во входной структуре объекта `Record`.