# General Translation Integrations: Перевод контента
URL: https://generaltranslation.com/ru/docs/integrations/sanity/guides/translating-content.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как переводить документы Sanity через действие документа, на вкладке или на странице Переводы.

Создавайте переводы на уровне документа или на уровне поля с помощью плагина General Translation.

При переводе на уровне документа создаётся отдельный документ для каждой локали. При переводе на уровне поля локализованные значения добавляются в интернационализированные массивы исходного документа.

## Перевести один документ [#translate-one]

Действие **Перевести** доступно в каждом документе, но инструменты перевода отображаются только в документах на исходном языке. В переведённом документе вместо них отображается сообщение.

1. Откройте документ на исходном языке в Sanity Studio.
2. Нажмите **Перевести** на панели действий документа.
3. В разделе **Перевести** выберите целевые локали.
4. Нажмите **Перевести**.

В разделе **Статус перевода** диалоговое окно отображает для каждой локали статус **Не переведено**, **Переводится…**, **Готово к импорту** или **Импортировано**. Пока запуск не завершён, кнопка **Перевести** остаётся недоступной.

При локализации на уровне документа автообновление и автоимпорт включены по умолчанию, поэтому переводы, завершённые при открытом диалоговом окне, импортируются как черновики. Автоматическое исправление ссылок и автопубликация по умолчанию выключены. Вы можете переключать каждую из этих функций, вручную импортировать локаль из её строки статуса или использовать **Импортировать все**, **исправить ссылки в документах** и **Опубликовать переводы**. Перевод, который уже был завершён при открытии диалогового окна, не импортируется повторно автоматически, что сохраняет изменения в его документе Sanity.

При локализации на уровне полей импорт объединяет переведённые значения в полях `internationalizedArray*` того же документа. Проверьте и опубликуйте этот документ в Sanity. Обновление ссылок и элементы управления публикацией переводов применяются только к переводам на уровне документа.

## Используйте вкладку «Переводы» [#translations-tab]

Если в вашем Studio есть `TranslationsTab`, откройте в документе вкладку **General Translation**. Она предоставляет тот же рабочий процесс, что и действие **Перевести**, но остаётся доступной прямо в редакторе документа.

(Чтобы добавить эту вкладку, см. [Настройка Sanity](/docs/integrations/sanity/guides/configuring-sanity#translations-tab)).

## Перевод нескольких документов [#translate-many]

Используйте инструмент **Переводы** для всего сайта, чтобы работать сразу со всеми документами, доступными для перевода. С его помощью можно:

* Сгенерировать переводы для всех документов (**Перевести всё**).
* Импортировать все готовые переводы (**Импортировать все**).
* Импортировать только те переводы, которые еще не были импортированы (**Импортировать отсутствующие**).
* Исправить ссылки в документах во всех переведенных документах (**Исправить ссылки в документах**).
* Опубликовать переведенные документы, если опубликован исходный документ (**Опубликовать переводы**).
* Отправить переводы, уже находящиеся в Sanity, в General Translation (**Сохранить локальные изменения**).

(См. [Управление переводами](/docs/integrations/sanity/guides/managing-translations)).

## Сохранение изменений в переводах [#preserve-edits]

Редакторы часто вносят правки в переведённый контент после его получения из General Translation. По умолчанию при следующем запуске перевода этот контент создаётся заново, и правки теряются.

Включите **Сохранять локальные изменения**, чтобы не потерять их. Когда переключатель включён, при каждом запуске перевода переводы, которые сейчас находятся в Sanity для документов, уже имеющих исходную версию в General Translation, сначала отправляются в General Translation. Затем контент, исходный текст которого не изменился, берётся из Sanity, а не переводится повторно.

Переключатель находится в инструменте **Переводы**, а на вкладке документа он называется **Сохранять локальные изменения перед переводом**. По умолчанию он выключен. При включении требуется подтверждение; выключение вступает в силу сразу.

Плагин запоминает этот выбор в хранилище браузера для текущих проекта и набора данных Sanity. При последующих посещениях он имеет приоритет над настроенным значением по умолчанию [`preserveExistingTranslations`](/docs/integrations/sanity/reference/plugin-configuration#preserve-existing-translations).

Поддерживаются обе стратегии локализации. Переводы на уровне документа считываются через `translation.metadata`, при этом черновики имеют приоритет над опубликованными документами, поэтому учитываются неопубликованные правки. Переводы на уровне полей считываются из интернационализированных массивов исходного документа. Локали без существующего контента пропускаются.

<Callout type="warn">
  При включении этой опции Sanity становится источником истины. Данные в Sanity заменяют всё, что General Translation хранит для этой версии документа, включая завершённый, но ещё не импортированный перевод. Сначала импортируйте все ожидающие переводы.
</Callout>

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

## Сохранение локальных изменений без перевода [#save-local-edits]

Используйте действие **Сохранить локальные изменения**, чтобы отправить уже имеющиеся в Sanity переводы в General Translation без запуска перевода. Плагин загружает необходимые исходные файлы, а затем сохраняет существующее содержимое каждой локали в качестве перевода для этой версии. Используйте это действие перед использованием переключателя, если у документа ещё нет исходной версии General Translation.

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

Действие доступно в инструменте **Переводы** и на вкладке документа. Оно выполняется по требованию и не зависит от переключателя **Сохранять локальные изменения**.

## Повторная генерация переводов [#retranslate]

Чтобы удалить существующие переводы и создать их заново, откройте **Перевести всё** и установите флажок **Перевести заново с нуля**. Кнопка подтверждения изменится на **Перевести всё заново**.

При этом будут удалены правки, внесённые в переведённые документы в Studio, а шаг **Сохранять локальные изменения** будет пропущен для этого запуска. Оставьте флажок снятым, чтобы использовать существующие переводы повторно.

Этот параметр доступен только в диалоговом окне **Перевести всё**. Рабочий процесс **Перевести** для одного документа всегда использует существующие переводы повторно и учитывает переключатель **Сохранять локальные изменения**.

## Что переводится [#what-translated]

Плагин сериализует документы в HTML, отправляет его на перевод, а затем встраивает переведённый HTML в документы локали или поля internationalized-array в зависимости от `translationLevel`. Он рекурсивно обрабатывает:

* Поля string и text.
* Блоки Portable Text.
* Вложенные объекты.
* Массивы.

Некоторые типы полей по умолчанию сохраняются и не отправляются на перевод, включая ссылки, даты, файлы, изображения, числа, логические значения, URL, цвета, код и геоточки. (См. полный список [типов, исключаемых по умолчанию](/docs/integrations/sanity/reference/plugin-configuration#stop-types)).

Поля slug *не* исключаются по умолчанию, поэтому значение `current` в slug отправляется на перевод. Используйте `dedupeFields` или `skipFields`, чтобы управлять поведением slug.

## Обработка ссылок [#references]

Переводы на уровне документа могут ссылаться на другие документы. Плагин находит перевод каждого документа, на который ведёт ссылка, и обновляет её так, чтобы она указывала на версию для нужной локали, если такая существует.

Включите **Автоматическое исправление ссылок после импорта**, чтобы запускать это после каждого импорта, или используйте **исправить ссылки в документах** по запросу. Автоматическое исправление ссылок по умолчанию отключено. (См. [Управление переводами](/docs/integrations/sanity/guides/managing-translations#patch-references)).

## Обработка slug и копируемых полей [#slugs-fields]

Некоторые поля не следует переводить напрямую. Используйте сопоставители полей, чтобы управлять их поведением:

* `dedupeFields` — копирует исходное значение и добавляет локаль, чтобы сделать его уникальным для каждого документа, например преобразует `about` в `about-es`. Обычно используется для slug.
* `ignoreFields` — копирует исходное значение без изменений в каждый переведённый документ.
* `skipFields` — полностью удаляет поле из переведённых документов.

(См. раздел [Управление переводами](/docs/integrations/sanity/guides/managing-translations#field-behavior)).

## Next steps

- /docs/integrations/sanity/guides/managing-translations
- /docs/integrations/sanity/guides/querying-translations
- /docs/integrations/sanity/guides/configuring-sanity

## Sitemap

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