# General Translation Platform: queryFileData URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/query-file-data.mdx --- title: queryFileData description: Проверяет статус перевода и метаданные загруженных или переведённых файлов. Справочник по API для queryFileData. --- Запрашивает данные об одном или нескольких исходных файлах или файлах перевода в General Translation. Используйте его, чтобы отслеживать ход перевода, проверять статус завершения и видеть, какие переводы доступны. ## Обзор [#overview] Вызовите `queryFileData`, передав объект с перечнем исходных и/или переведённых файлов, для которых нужно получить данные. Метод возвращает метаданные для каждого запрошенного файла. ```typescript const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' }); const result = await gt.queryFileData({ sourceFiles: [{ fileId: 'file-123', versionId: 'version-456', branchId: 'branch-789' }], translatedFiles: [ { fileId: 'file-123', versionId: 'version-456', branchId: 'branch-789', locale: 'es' }, ], }); ``` Сигнатура: ```typescript queryFileData( data: FileDataQuery, options?: CheckFileTranslationsOptions ): Promise ``` *Примечание: для `queryFileData` в экземпляре GT должны быть указаны `apiKey` (или `devApiKey`) и `projectId`.* ## Как это работает [#how-it-works] * **Завершение.** Перевод считается завершённым, когда его `completedAt` не равен `null`. * **Жизненный цикл.** Даже завершённый перевод может всё ещё требовать одобрения (`approvedAt`) перед публикацией (`publishedAt`). * **Пакетный мониторинг.** Запрашивайте сразу несколько файлов, чтобы эффективно проверять статус нескольких задач перевода. * **Версионирование.** Все запросы к файлам требуют `branchId` для версионирования при использовании ветвей. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | --------------------- | ----------------------------------------------------------------- | ------------------------------ | -------------- | ------------ | | [`data`](#data) | Объект, содержащий запросы для исходного текста и файла перевода. | `FileDataQuery` | Нет | — | | [`options`](#options) | Конфигурация запроса. | `CheckFileTranslationsOptions` | Да | — | ### `data` [#data] **Тип** `FileDataQuery` · **Обязательно** Файлы для запроса, разделённые на исходные и переведённые файлы: ```typescript type FileDataQuery = { sourceFiles?: { fileId: string; versionId: string; branchId: string; }[]; translatedFiles?: { fileId: string; versionId: string; branchId: string; locale: string; }[]; }; ``` | Поле | Описание | Тип | Необязательное | | ----------------- | -------------------------------------- | ---------- | -------------- | | `sourceFiles` | Массив запросов к исходным файлам. | `object[]` | Да | | `translatedFiles` | Массив запросов к переведённым файлам. | `object[]` | Да | ### `options` [#options] **Тип** `CheckFileTranslationsOptions` · **Необязательный** | Поле | Описание | Тип | Необязательный | | --------- | --------------------------------- | -------- | -------------- | | `timeout` | Тайм-аут запроса в миллисекундах. | `number` | Да | ## Возвращает [#returns] **Тип** `Promise` Возвращает `FileDataResult`, содержащий метаданные для запрошенного исходного и переведённых файлов: ```typescript type FileDataResult = { sourceFiles?: { branchId: string; fileId: string; versionId: string; fileName: string; fileFormat: string; dataFormat: string | null; createdAt: string; updatedAt: string; publishedAt: string | null; locales: string[]; sourceLocale: string; }[]; translatedFiles?: { fileId: string; versionId: string; branchId: string; locale: string; fileFormat: string; dataFormat: string | null; completedAt: string | null; approvedAt: string | null; publishedAt: string | null; createdAt: string; updatedAt: string; }[]; }; ``` | Свойство | Описание | Тип | | ----------------- | --------------------------------- | ---------- | | `sourceFiles` | Массив данных исходных файлов. | `object[]` | | `translatedFiles` | Массив данных о статусе перевода. | `object[]` | ## Примеры [#examples] ```typescript title="index.ts" // (1) Создать экземпляр GT const targetLocales = ['es', 'fr', 'de']; const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key', }); // (2) Загрузить файл const fileUpload = { content: fileContents, fileName: filePath, fileFormat: 'JSON', locale: 'en', }; const files = [{ source: fileUpload }]; const { uploadedFiles } = await gt.uploadSourceFiles(files, { sourceLocale: 'en' }); // (3) Поставить задачу перевода файла в очередь const enqueueResult = await gt.enqueueFiles(uploadedFiles, { sourceLocale: 'en', targetLocales: targetLocales, }); // (4) Дождаться завершения всех переводов const { fileId, versionId, branchId } = uploadedFiles[0]; const translatedFileQueries = targetLocales.map((locale) => ({ fileId, versionId, branchId, locale, })); while (true) { const result = await gt.queryFileData({ translatedFiles: translatedFileQueries, }); const allCompleted = result.translatedFiles?.every((file) => file.completedAt !== null); if (allCompleted) { break; } await new Promise((resolve) => setTimeout(resolve, 1000)); } // (5) Скачать файлы const downloadResult = await gt.downloadFileBatch( translatedFileQueries.map(({ fileId, branchId, locale }) => ({ fileId, branchId, locale, })) ); ``` ## Примечания [#notes] * Перевод считается завершённым, если `completedAt` не равен `null`. * Завершённые переводы всё ещё могут требовать одобрения (`approvedAt`) перед публикацией (`publishedAt`). * Используйте этот метод для эффективной проверки статуса при отслеживании нескольких задач перевода. * Для всех запросов к файлам требуется `branchId` для версионирования с поддержкой веток.