# General Translation Platform: querySourceFile
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/query-source-file.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Возвращает метаданные исходного файла и связанную информацию о переводе. Справочник API для querySourceFile.

Возвращает подробную информацию об исходном файле и всех его переводах в General Translation. Сюда входят метаданные файла, статус перевода для каждой локали, а также временные метки создания, завершения, одобрения и публикации.

## Обзор [#overview]

Вызовите `querySourceFile`, передав запрос, который идентифицирует файл. Метод возвращает метаданные исходного файла, а также запись перевода для каждой локали.

```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });

const result = await gt.querySourceFile({
  fileId: 'file-123',
  versionId: 'version-456',
});

console.log(`Source file: ${result.sourceFile.fileName}`);
console.log(`Available in ${result.translations.length} locales`);
```

Сигнатура:

```typescript
querySourceFile(
  data: FileQuery,
  options?: CheckFileTranslationsOptions
): Promise<FileQueryResult>
```

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

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

* **Полный статус перевода.** Возвращает исходный файл и статус перевода для каждой целевой локали.
* **Жизненный цикл временных меток.** Временные метки перевода идут в следующем порядке: `createdAt` → `completedAt` → `approvedAt` → `publishedAt`. Значение `null` для временной метки означает, что этот этап ещё не пройден.
* **Настроенные локали.** Массив `locales` в исходном файле содержит все целевые локали, настроенные для перевода.

## Параметры [#parameters]

| Параметр              | Описание                                              | Тип                            | Необязательный | По умолчанию |
| --------------------- | ----------------------------------------------------- | ------------------------------ | -------------- | ------------ |
| [`data`](#data)       | Запрос файла, указывающий, какой файл нужно получить. | `FileQuery`                    | Нет            | —            |
| [`options`](#options) | Параметры запроса.                                    | `CheckFileTranslationsOptions` | Да             | —            |

### `data` [#data]

**Тип** `FileQuery` · **Обязательно**

Указывает файл, для которого выполняется запрос:

| Поле        | Описание                                                         | Тип      | Необязательно |
| ----------- | ---------------------------------------------------------------- | -------- | ------------- |
| `fileId`    | Уникальный идентификатор файла, для которого выполняется запрос. | `string` | Нет           |
| `versionId` | ID конкретной версии файла.                                      | `string` | Да            |
| `branchId`  | ID конкретной ветки.                                             | `string` | Да            |

### `options` [#options]

**Тип** `CheckFileTranslationsOptions` · **Необязательно**

| Поле      | Описание                          | Тип      | Необязательно |
| --------- | --------------------------------- | -------- | ------------- |
| `timeout` | Тайм-аут запроса в миллисекундах. | `number` | Да            |

## Возвращает [#returns]

**Тип** `Promise<FileQueryResult>`

После выполнения возвращает `FileQueryResult` с информацией об исходном файле и статусом перевода для всех локалей:

```typescript
type FileQueryResult = {
  sourceFile: {
    id: string;
    fileId: string;
    versionId: string;
    sourceLocale: string;
    fileName: string;
    fileFormat: string;
    dataFormat: string | null;
    createdAt: string;
    updatedAt: string;
    locales: string[];
  };
  translations: {
    locale: string;
    completedAt: string | null;
    approvedAt: string | null;
    publishedAt: string | null;
    createdAt: string | null;
    updatedAt: string | null;
  }[];
};
```

Свойства исходного файла:

| Свойство       | Описание                                        | Тип              |
| -------------- | ----------------------------------------------- | ---------------- |
| `id`           | Внутренний ID базы данных.                      | `string`         |
| `fileId`       | Уникальный идентификатор файла.                 | `string`         |
| `versionId`    | Идентификатор версии.                           | `string`         |
| `sourceLocale` | Локаль языка-источника.                         | `string`         |
| `fileName`     | Имя исходного файла.                            | `string`         |
| `fileFormat`   | Формат файла (JSON, MD, MDX и другие).          | `string`         |
| `dataFormat`   | Формат данных внутри файла (ICU, I18NEXT, JSX). | `string \| null` |
| `createdAt`    | Временная метка ISO создания файла.             | `string`         |
| `updatedAt`    | Временная метка ISO последнего обновления.      | `string`         |
| `locales`      | Список целевых локалей для этого файла.         | `string[]`       |

Свойства перевода:

| Свойство      | Описание                                            | Тип              |
| ------------- | --------------------------------------------------- | ---------------- |
| `locale`      | Код целевой локали.                                 | `string`         |
| `completedAt` | Временная метка ISO завершения перевода.            | `string \| null` |
| `approvedAt`  | Временная метка ISO утверждения перевода.           | `string \| null` |
| `publishedAt` | Временная метка ISO публикации перевода.            | `string \| null` |
| `createdAt`   | Временная метка ISO создания задачи перевода.       | `string \| null` |
| `updatedAt`   | Временная метка ISO последнего обновления перевода. | `string \| null` |

## Примеры [#examples]

```typescript title="index.ts"
import { GT } from 'generaltranslation';

const gt = new GT({
  projectId: 'your-project-id',
  apiKey: 'your-api-key',
});

async function getFileInfo(fileId: string, versionId?: string) {
  const result = await gt.querySourceFile({
    fileId,
    versionId,
  });

  console.log('=== Source File Info ===');
  console.log(`Name: ${result.sourceFile.fileName}`);
  console.log(`Format: ${result.sourceFile.fileFormat}`);
  console.log(`Source Locale: ${result.sourceFile.sourceLocale}`);
  console.log(`Created: ${new Date(result.sourceFile.createdAt).toLocaleString()}`);
  console.log(`Updated: ${new Date(result.sourceFile.updatedAt).toLocaleString()}`);

  console.log('\n=== Translation Status ===');
  result.translations.forEach((translation) => {
    console.log(`${translation.locale}:`);
    console.log(
      `  Created: ${translation.createdAt ? new Date(translation.createdAt).toLocaleString() : 'Not started'}`
    );
    console.log(
      `  Completed: ${translation.completedAt ? new Date(translation.completedAt).toLocaleString() : 'In progress'}`
    );
    console.log(
      `  Published: ${translation.publishedAt ? new Date(translation.publishedAt).toLocaleString() : 'Not published'}`
    );
  });

  return result;
}

const fileInfo = await getFileInfo('file-123', 'version-456');
```

## Примечания [#notes]

* Возвращает исходный файл и статус перевода для всех целевых локалей.
* Временные метки перевода соответствуют жизненному циклу `createdAt` → `completedAt` → `approvedAt` → `publishedAt`; значение `null` у временной метки означает, что этот этап еще не достигнут.
* Массив `locales` в исходном файле содержит все целевые локали, настроенные для перевода.
* Используйте этот метод для подробной отчетности, отслеживания прогресса и управления файлами в рамках workflows.

## Sitemap

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