# generaltranslation: General Translation Core SDK: queryFileData URL: https://generaltranslation.com/ru/docs/core/class/methods/translation/query-file-data.mdx --- title: queryFileData description: Справка по API для метода queryFileData, используемого для запроса данных исходных файлов и файлов перевода --- ## Обзор Метод `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' } ] }); ``` ## Справочник ### Параметры | Имя | Тип | Описание | | ---------- | ------------------------------ | ----------------------------------------------------- | | `data` | `FileDataQuery` | Объект с запросами к исходному файлу и файлу перевода | | `options?` | `CheckFileTranslationsOptions` | Необязательные параметры запроса | #### FileDataQuery ```typescript type FileDataQuery = { sourceFiles?: { fileId: string; versionId: string; branchId: string; }[]; translatedFiles?: { fileId: string; versionId: string; branchId: string; locale: string; }[]; } ``` | Название | Тип | Описание | | ------------------ | ---------- | ------------------------------------- | | `sourceFiles?` | `object[]` | Массив запросов к исходным файлам | | `translatedFiles?` | `object[]` | Массив запросов к переведённым файлам | #### CheckFileTranslationsOptions | Имя | Тип | Описание | | ---------- | -------- | -------------------------------------- | | `timeout?` | `number` | Время ожидания запроса в миллисекундах | ### Возвращает `Promise` — содержит данные исходных файлов и перевода. ```typescript type FileDataResult = { sourceFiles?: { branchId: string; fileId: string; versionId: string; fileName: string; fileFormat: string; dataFormat: string | null; createdAt: string; updatedAt: string; approvalRequiredAt: string | null; 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[]` | Массив данных о статусе перевода | *** ## Примеры ### Базовое использование Запрашивайте данные для конкретных исходных файлов и файлов перевода: ```typescript title="index.ts" copy // (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 })) ); ``` *** ## Примечания * Перевод считается завершённым, если `completedAt` не равен `null` * Даже завершённые переводы могут требовать одобрения (`approvedAt`) перед публикацией (`publishedAt`) * Используйте этот метод для эффективной проверки статуса при отслеживании нескольких задач перевода * Для корректного версионирования во всех запросах к файлам требуется `branchId` ## Что делать дальше * Ознакомьтесь с [Quickstart](/docs/core/quickstart#translate-your-first-file), чтобы посмотреть полный пример использования этого метода * См. [`downloadFile`](/docs/core/class/methods/translation/download-file), чтобы скачать готовые переводы * См. [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files), чтобы создавать задачи перевода * См. [`querySourceFile`](/docs/core/class/methods/translation/query-source-file), чтобы получить информацию об исходном файле и переводах