# General Translation Integrations: Поддерживаемый контент
URL: https://generaltranslation.com/ru/docs/integrations/storyblok/reference/supported-content.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Справочник по типам полей Storyblok, которые переводит General Translation, и по тому, как сериализуется контент. Справочник API по поддерживаемому контенту Storyblok.

General Translation обходит дерево содержимого каждой story, рекурсивно проходит по вложенным блокам и извлекает переводимые поля.

## Обзор [#overview]

| Тема                                               | Описание                                                                                  |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [Типы полей, доступные для перевода](#field-types) | Типы полей, которые отправляются на перевод, и их форматы данных.                         |
| [Флаг translatable](#translatable-flag)            | Почему поле должно быть помечено как `translatable: true`.                                |
| [Обработка полей](#field-handling)                 | Как каждый тип поля извлекается, обрабатывается рекурсивно или сохраняется без изменений. |
| [Форматированный текст и таблицы](#rich-text-tables)           | Специальная сериализация для полей `richtext` и `table`.                                  |
| [Пропущенные поля](#skipped-fields)                | Причины, по которым поле пропускается.                                                    |
| [Формат данных](#data-format)                      | Формат `STORYBLOK_CONTENT_JSON` и его метаданные по ключам.                               |

## Типы полей, доступных для перевода [#field-types]

General Translation извлекает следующие типы полей Storyblok и переводит их, используя указанный формат данных:

| Тип поля   | Формат данных |
| ---------- | ------------- |
| `text`     | `text`        |
| `textarea` | `text`        |
| `markdown` | `markdown`    |
| `richtext` | `richtext`    |
| `table`    | `table`       |

`text` и `textarea` переводятся как plain text. Для `markdown`, `richtext` и `table` структура сохраняется благодаря специальной сериализации.

## Флаг `translatable` [#translatable-flag]

Поддерживаемое поле извлекается, только если в схеме его компонента указано `translatable: true`. Storyblok хранит переводы на уровне полей только для полей, помеченных как `translatable`, поэтому поддерживаемое поле без этого флага сохраняется (копируется, а не переводится), а не отправляется на перевод.

Пометьте поля как `translatable` в Block Library Storyblok или включите параметр **Auto-enable supported fields** в Dashboard, чтобы General Translation установил этот флаг для поддерживаемых полей во всём пространстве. (См. [Настройка Storyblok](/docs/integrations/storyblok/guides/configuring-storyblok#enable-fields)).

## Обработка полей [#field-handling]

Каждое поле в схеме компонента обрабатывается одним из четырёх способов:

* **Extract** — поле переводится. Применяется к `text`, `textarea`, `markdown`, `richtext` и `table`, но только если для поля задано `translatable: true`.
* **Recurse** — интеграция переходит во вложенный контент. Применяется к полям `bloks`, элементы которых представляют собой компоненты, обрабатываемые тем же способом.
* **Preserve** — поле остаётся без изменений и не переводится. Применяется к `option`, `options`, `section`, `number`, `datetime` и `boolean`, а также к любому поддерживаемому полю, не помеченному как переводимое.
* **Skip (unsupported)** — этот тип поля нельзя перевести, поэтому он помечается как пропущенный. Применяется к `custom`, `asset`, `multiasset`, `multilink`, `image` и `file`.

*Примечание: если элементы поля `bloks` не являются допустимыми компонентами, они помечаются как пропущенные с причиной `missing_nested_component`.*

## Форматированный текст и таблицы [#rich-text-tables]

Для полей `richtext` и `table` используется специальная сериализация, чтобы их структура сохранялась при переводе.

* **Форматированный текст** — документ с форматированным текстом сериализуется в переводимую форму, сохраняющую элементы форматирования (например, полужирное начертание и ссылки) и встроенные узлы, а затем после перевода собирается обратно. Поле `richtext`, значение которого не является документом с форматированным текстом, пропускается с причиной `non_string_value`.
* **Таблицы** — ячейки заголовка и тела таблицы сериализуются по отдельности, а затем после перевода собираются обратно. Поле `table`, значение которого не является таблицей, пропускается с причиной `non_string_value`; таблица без переводимых ячеек остаётся без изменений.

## Пропущенные поля [#skipped-fields]

Если поле не удаётся перевести, оно помечается как пропущенное. В сводке результатов пропущенные поля группируются по компоненту, полю, типу и причине:

| Причина                    | Значение                                                                                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `missing_component_schema` | У компонента блока нет схемы, которую интеграция могла бы прочитать.                                                                                    |
| `unsupported_field_type`   | Этот тип поля не поддерживает перевод (например, `asset`, `multilink`, `image` или `custom`).                                                           |
| `non_string_value`         | Значение поля имеет не тот формат, который ожидается (например, поле `text` не является строкой, или поле `richtext` не является документом форматированного текста). |
| `missing_nested_component` | Вложенный элемент `bloks` не является допустимым компонентом.                                                                                           |

## Формат данных [#data-format]

Извлечённый контент загружается в General Translation в формате данных `STORYBLOK_CONTENT_JSON`. Полезная нагрузка представляет собой JSON-объект, который сопоставляет каждому ключу пути поля его исходную строку.

Вместе с полезной нагрузкой General Translation добавляет метаданные с привязкой к ключам — по одной записи на каждое поле с тем же ключом пути, — чтобы переводы можно было вернуть в нужное место. Каждая запись может включать:

* `id` и `pathKey` — идентификатор поля и путь к нему в story.
* `provider` и `resourceType` — `STORYBLOK` и `STORYBLOK_SPACE`.
* `spaceId`, `storyId`, `storyName` и `storyFullSlug` — исходные пространство и story.
* `component`, `field` и `fieldType` — откуда получено значение и какой у него тип поля в Storyblok.
* `dataFormat` — формат данных перевода для поля из таблицы выше.
* `displayPath` — удобочитаемый путь, используемый как context.
* `context` — сгенерированный context перевода, описывающий расположение поля, его тип и story.

*Примечание: метаданные содержат `context` (и могут содержать `maxChars`) для повышения качества перевода.*

## Sitemap

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