# General Translation Integrations: Перевод контента URL: https://generaltranslation.com/ru/docs/integrations/sanity/guides/translating-content.mdx --- title: Перевод контента description: Как переводить документы Sanity через действие документа, на вкладке или на странице Переводы. related: links: - /docs/integrations/sanity/guides/managing-translations - /docs/integrations/sanity/guides/querying-translations - /docs/integrations/sanity/guides/configuring-sanity --- Создавайте переводы на уровне документа или на уровне поля с помощью плагина General Translation. При переводе на уровне документа создаётся отдельный документ для каждой локали. При переводе на уровне поля локализованные значения добавляются в интернационализированные массивы исходного документа. ## Перевести один документ [#translate-one] Действие **Перевести** доступно в каждом документе, но инструменты перевода отображаются только в документах на исходном языке. В переведённом документе вместо них отображается сообщение. 1. Откройте документ на исходном языке в Sanity Studio. 2. Нажмите **Перевести** на панели действий документа. 3. В разделе **Перевести** выберите целевые локали. 4. Нажмите **Перевести**. После создания переводов диалоговое окно отслеживает ход выполнения в разделе **Статус перевода**. При локализации на уровне документа плагин импортирует документ для каждой локали, обновляет в нём ссылки и публикует его, поскольку автоимпорт, автообновление ссылок и автопубликация включены по умолчанию. Вы можете переключать каждую из этих функций, вручную импортировать локаль из её строки статуса или использовать **Импортировать все**, **исправить ссылки в документах** и **Опубликовать переводы**. При локализации на уровне полей импорт объединяет переведённые значения в полях `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, а не переводится повторно. Переключатель находится в инструменте **Переводы**, а на вкладке документа он называется **Сохранять локальные изменения перед переводом**. По умолчанию он выключен. При включении требуется подтверждение; выключение вступает в силу сразу. Переключатель применяется к запускам перевода, начатым в текущем сеансе Studio, и сбрасывается при перезагрузке Studio. Начальное состояние можно задать с помощью [`preserveExistingTranslations`](/docs/integrations/sanity/reference/plugin-configuration#preserve-existing-translations). Поддерживаются обе стратегии локализации. Переводы на уровне документа считываются через `translation.metadata`, при этом черновики имеют приоритет над опубликованными документами, поэтому учитываются неопубликованные правки. Переводы на уровне полей считываются из интернационализированных массивов исходного документа. Локали без существующего контента пропускаются. При включении этой опции Sanity становится источником истины. Данные в Sanity заменяют всё, что General Translation хранит для этой версии документа, включая завершённый, но ещё не импортированный перевод. Сначала импортируйте все ожидающие переводы. Если плагин не может отправить существующие переводы, запуск перевода всё равно продолжается, а 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