# General Translation Integrations: Поддерживаемый контент URL: https://generaltranslation.com/ru/docs/integrations/storyblok/reference/supported-content.mdx --- title: Поддерживаемый контент description: Справочник по типам полей Storyblok, которые переводит General Translation, и по тому, как сериализуется контент. Справочник API по поддерживаемому контенту Storyblok. --- Какие типы полей Storyblok переводит General Translation, как она обрабатывает форматированный текст и таблицы и какой формат данных при этом используется. 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`) для повышения качества перевода.*