# General Translation Platform: queryFileData
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/query-file-data.mdx
Docs index: https://generaltranslation.com/llms.txt
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<FileDataResult>
```

*Примечание: для `queryFileData` в экземпляре GT должны быть указаны `apiKey` (или `devApiKey`) и `projectId`.*

## Как это работает [#how-it-works]

* **Завершение.** Перевод считается завершённым, когда его `completedAt` не равен `null`.
* **Жизненный цикл.** Даже завершённый перевод может всё ещё требовать одобрения (`approvedAt`) перед публикацией (`publishedAt`).
* **Пакетный мониторинг.** Запрашивайте сразу несколько файлов, чтобы эффективно проверять статус нескольких задач перевода.
* **Разрешение локалей.** Локали в запросах на перевод разрешаются в поддерживаемую локаль, используемую для хранения. В ответе сохраняется локаль из каждого запроса, поэтому для эквивалентных кодов, запрошенных отдельно, например `ja` и `ja-JP`, возвращается результат для каждого из них, если они соответствуют одному и тому же сохранённому переводу.
* **Версионирование.** Все запросы к файлам требуют `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>`

Возвращает `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` для версионирования с поддержкой веток.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
