Исчерпывающее руководство по многоязычному переводу сайтов WordPress
Перевод сайта на WordPress — это сложный процесс, требующий тщательного планирования и исполнения. Мы создали это исчерпывающее руководство на основе нашего обширного опыта перевода сайтов с использованием плагина Gato AI Translations for Polylang.
В этом руководстве рассматривается всё, что вам нужно знать: от первоначальной подготовки и настройки до самого процесса перевода, проверки и устранения неполадок. Следуйте этому руководству, чтобы обеспечить плавный процесс перевода.
Установите и настройте Polylang
Gato AI Translations for Polylang требует, чтобы Polylang был установлен и активирован. Polylang — это многоязычный фреймворк, управляющий языками и связями переводов.
После установки необходимо настроить Polylang с вашими языками:
- Перейдите в раздел Languages в меню администратора WordPress
- Добавьте язык по умолчанию (язык существующего контента)
- Добавьте все целевые языки, на которые хотите переводить

Необходимо убедиться, что все активные плагины совместимы с Polylang. Некоторые плагины могут работать некорректно в многоязычной среде.
Если вы обнаружите несовместимый плагин, поищите альтернативы, обратитесь к разработчику за поддержкой или оцените, действительно ли он необходим.
Сначала проверьте и исправьте исходный контент
Прежде чем начать перевод, необходимо убедиться, что исходный контент находится в идеальном состоянии. Любые проблемы в исходном контенте будут воспроизведены во всех переводах, а значит, вам придётся исправлять одну и ту же проблему несколько раз (по одному разу для каждого языка).
Контрольный список аудита контента:
-
Проверьте наличие неработающих ссылок
- Используйте плагин Broken Link Checker для выявления неработающих внутренних и внешних ссылок
- Исправьте все неработающие ссылки перед переводом
- Убедитесь, что внутренние ссылки указывают на правильные записи/страницы
-
Убедитесь, что все изображения существуют и оптимизированы
- Проверьте, что все изображения загружаются корректно
- Убедитесь, что у изображений есть надлежащий alt-текст для доступности и SEO
- Убедитесь, что размеры файлов изображений разумны (не слишком велики)
- Удалите все изображения-заглушки и ссылки на битые изображения
-
Проверьте форматирование и стили
- Убедитесь, что форматирование текста последовательно
- Проверьте, что заголовки правильно структурированы (H1, H2, H3 и т. д.)
- Убедитесь, что списки, таблицы и другой структурированный контент отображаются корректно
- Проверьте, что пользовательские стили и CSS работают должным образом
-
Проверьте структуру контента
- Убедитесь в правильном использовании блоков Gutenberg или элементов конструктора страниц
- Убедитесь, что пользовательские типы записей и таксономии настроены корректно
- Убедитесь, что метаданные (пользовательские поля, поля ACF и т. д.) заполнены
-
Проверьте наличие контента-заглушки
- Удалите любой текст «Lorem ipsum» или текст-заглушку
- Замените временный контент окончательными версиями
- Убедитесь, что весь контент готов к публикации
-
Вопросы SEO
- Убедитесь, что мета-заголовки и описания заданы
- Убедитесь, что URL-адреса SEO-дружелюбны
- Убедитесь в правильном использовании заголовков для структуры SEO
Настройте замену внутренних ссылок
При переводе контента внутренние ссылки необходимо обновлять, чтобы они указывали на переведённые версии. Gato AI Translations for Polylang может автоматически сделать это за вас.
Плагин позволяет настроить, какие типы внутренних ссылок следует заменять:
- Custom Posts: ссылки на другие записи, страницы, пользовательские типы записей и т. д.
- Media: ссылки на медиафайлы (изображения, видео и т. д.)
- Tags: ссылки на страницы архивов меток
- Categories: ссылки на страницы архивов рубрик
- Users: ссылки на страницы авторов
Ссылки на записи в контенте автоматически извлекаются из исходного контента и заменяются. Для других типов ссылок (медиа, метки, рубрики, пользователи) необходимо включить их в настройках, если вы хотите, чтобы они заменялись.
Как настроить:
- Перейдите на страницу Settings, в раздел Plugin Configuration > Internal Links Replacement
- Включите только те типы ссылок, которые вы действительно используете в своём контенте
- Сохраните настройки

Убедитесь, что все ссылки используют правильные URL-адреса
Чтобы функция замены внутренних ссылок работала корректно, все ссылки в вашем контенте должны использовать правильный формат URL. Это относится к ссылкам в:
- Контенте записей/страниц (блоки Gutenberg, HTML и т. д.)
- Виджетах Elementor и мета-полях
- Элементах конструктора Bricks и мета-полях
- Пользовательских полях и метаданных
Требования к URL:
-
URL-адреса должны содержать полный домен
- ✅ Правильно:
https://www.mysite.com/hello-world/ - ❌ Неправильно:
/hello-world/(относительный URL) - ❌ Неправильно:
hello-world/(без домена и протокола)
- ✅ Правильно:
-
URL-адреса должны указывать на текущий slug
- Если вы изменили slug записи, обновите все ссылки, чтобы они использовали новый slug
- WordPress должен иметь возможность получить запись по URL
- Старые slug-адреса с редиректами не будут работать для замены ссылок
-
URL-адреса должны использовать правильный домен (без редиректов)
- ✅ Правильно:
https://www.mysite.com/hello-world/ - ❌ Неправильно:
https://mysite.com/hello-world/(если ваш сайт использует www) - Плагину нужен точный домен для сопоставления и правильной замены ссылок
- ✅ Правильно:
Для исправления неправильных доменов в URL-адресах можно использовать плагин Better Search Replace для поиска и замены URL-адресов непосредственно в базе данных, например: замените https://mysite.com на https://www.mysite.com.
Выберите статус: черновик или публикация
При создании переводов необходимо решить, следует ли публиковать их немедленно или сохранить как черновики для предварительного просмотра.
По умолчанию переводы сохраняются как черновики. Чтобы переводы публиковались немедленно, перейдите на страницу Settings, в раздел Plugin Configuration > General Configuration, и установите значение параметра Status when translated равным Publish или Same as origin post (если исходная запись уже опубликована).

Поддержка языков с письмом справа налево (RTL)
Если вы переводите на языки с письмом справа налево, такие как иврит, арабский, фарси или урду, необходимо убедиться, что ваша тема корректно поддерживает RTL-макеты.


На что влияет RTL:
Языки RTL требуют большего, чем просто изменение направления текста. Ваша тема должна поддерживать:
- Направление макета: элементы должны располагаться справа налево
- Выравнивание текста: текст должен быть выровнен по правому краю по умолчанию
- Корректировки отступов:
margin-leftдолжен статьmargin-right,padding-leftдолжен статьpadding-rightи т. д. - Навигация: меню и навигация должны работать в режиме RTL
- Формы: поля ввода и кнопки должны выравниваться правильно
- Иконки и изображения: может потребоваться зеркальное отображение или перемещение
Что уже обрабатывается:
- Polylang автоматически устанавливает правильное направление языка (атрибут
dir="rtl") - Перевод контента работает одинаково для RTL- и LTR-языков
- Gato AI Translations правильно переводит контент независимо от направления текста

Что необходимо проверить:
-
Поддержка RTL в теме: протестируйте свою тему с RTL-языком, чтобы убедиться, что она справляется с этим корректно
- Многие современные темы включают RTL-стили
- Проверьте документацию вашей темы на наличие информации о поддержке RTL
- Ищите файлы
rtl.cssили аналогичные в вашей теме
-
Пользовательский CSS: просмотрите добавленный вами пользовательский CSS
- Жёстко заданные значения left/right могут потребовать корректировки
- Рассмотрите использование логических свойств (
margin-inline-startвместоmargin-left)
-
Совместимость с конструкторами страниц: при использовании Elementor, Bricks или других конструкторов страниц
- Проверьте, поддерживают ли они RTL-макеты
- Протестируйте макеты в режиме RTL перед переводом
Если ваша тема плохо поддерживает RTL, может потребоваться перейти на RTL-совместимую тему, добавить пользовательский RTL-CSS или использовать плагин, добавляющий поддержку RTL.
Определите контент сторонних плагинов для перевода
Многие плагины WordPress создают собственные Custom Post Types (CPTs) для хранения контента (например: товары WooCommerce, события Events Calendar, курсы LearnDash и т. д.).
Перед переводом необходимо:
-
Определить, какие CPTs содержат контент, требующий перевода
- Просмотрите активные плагины и их CPTs
- Определите, какие из них нуждаются в переводе (не все)
-
Убедиться, что соответствующие CPTs и таксономии доступны для перевода
- Перейдите в Languages > Settings > Custom post types and Taxonomies в Polylang
- Включите перевод для соответствующих CPTs и таксономий

Автоматически создавайте записи перевода для CPTs
Если CPT использует метод wp_insert_post для создания записей, вы можете перейти на страницу Settings, в раздел Plugin Configuration > General Configuration, и включить параметр Automatic creation of translation entries для этого CPT, чтобы плагин создавал записи перевода автоматически.

Если CPT использует метод, отличный от wp_insert_post, вам нужно будет вручную создать записи перевода через интерфейс Polylang, прежде чем их можно будет переводить.
Например, для товаров WooCommerce необходимо сначала создать записи перевода. Ознакомьтесь с документацией по переводу Custom Post Types сторонних разработчиков для просмотра демонстрационного видео.
Убедитесь, что ваш SEO-плагин поддерживается
SEO-метаданные (мета-заголовки, описания, теги Open Graph и т. д.) имеют решающее значение для многоязычного SEO. Gato AI Translations for Polylang включает встроенную поддержку наиболее популярных SEO-плагинов и автоматически переводит все связанные с SEO метаданные.
Плагин поддерживает 8 основных SEO-плагинов:
- All in One SEO
- Rank Math
- SEO Simple Pack
- SEOPress
- Slim SEO
- The SEO Framework
- WP Meta SEO
- Yoast SEO
Если вы используете SEO-плагин, не включённый в список выше, необходимо указать, какие мета-ключи следует синхронизировать и переводить в соответствии с используемым SEO-плагином. Поддерживается любой плагин, хранящий метаданные в таблице wp_postmeta.
Выберите провайдера и модель ИИ
Качество переводов зависит от выбранного сервиса и модели ИИ.
Современные сервисы ИИ (такие как ChatGPT, Claude и Gemini) производят значительно более качественные переводы, чем устаревшие сервисы (Google Translate или DeepL), поскольку лучше понимают контекст, тон и нюансы; правильно сохраняют HTML-структуру и форматирование; не переводят некорректно URL-адреса и относительные ссылки; сохраняют стиль и голос автора в переводах; и лучше справляются с техническими терминами и предметно-специфической лексикой.
Вы можете выбрать один из следующих сервисов ИИ:
- ChatGPT (OpenAI)
- Claude (Anthropic)
- DeepSeek
- Gemini (Google)
- Mistral AI
- OpenRouter (агрегатор LLM, предоставляющий доступ ко всем основным моделям, включая Grok и Llama)
- Self-hosted LLM (размещённый на собственном сервере, например, через Ollama)
Мы рекомендуем использовать последние доступные версии моделей (например: ChatGPT 5.2 вместо 5.0), так как новые модели стабильно обеспечивают лучшее качество перевода.
Совет профессионала: вы можете настроить разные сервисы ИИ для разных языков. Например, используйте DeepSeek для китайского (отличное качество и очень доступная цена), ChatGPT для европейских языков и Claude для сложного технического контента. Это позволяет оптимизировать как качество, так и стоимость.
Вы можете использовать OpenRouter для доступа к новейшим моделям ИИ сразу после их выхода.
Рассмотрите настройку промпта для перевода с ИИ
Промпт перевода по умолчанию хорошо работает для большинства контента, но его настройка может улучшить качество перевода для вашего конкретного случая.
Пример:
Тревел-блог может настроить промпт, добавив следующее:
Translate to a natural, flowing, easy-to-read, casual blog-style language. Keep original content structure, meaning, and styling (but do adjust sentence structure and style to be relevant to the target language).
Lightly improve boring parts - Add curiosity triggers, light humor, and light slang (as fits the target language), like a human travel blogger would write.Вы можете изменить промпт по умолчанию или создать несколько пользовательских промптов для ИИ и выбрать, какой использовать, в настройках:

Проверьте блоки Gutenberg
Перед переводом необходимо определить, какие блоки вы используете, и убедиться, что они поддерживаются для перевода.
Блоки Gutenberg, поддерживаемые из коробки:
- Все блоки ядра WordPress: Paragraph, Heading, List, Quote, Image, Gallery и т. д.
- Блоки сторонних разработчиков: блоки плагинов Yoast SEO, GenerateBlocks, Kadence, Greenshift и т. д.
Если вы используете неподдерживаемый блок, содержащий строки, которые необходимо перевести, вы можете:
- Добавить интеграцию для перевода блока, или
- Заменить его поддерживаемым блоком (например, заменить пользовательский блок отзывов поддерживаемой альтернативой).
Нужна помощь? Мы можем интегрировать пользовательские блоки для вас. Ознакомьтесь с нашими пользовательскими услугами, если вы предпочитаете, чтобы интеграцией занялись эксперты.
Примечание: существуют блоки, которые не могут быть переведены.
Если вам нужно заменить неподдерживаемый блок, необходимо найти все записи, в которых он используется. Ознакомьтесь с руководством по поиску записей, содержащих определённый блок, чтобы узнать, как определить, где используются конкретные блоки.
Проверьте виджеты Elementor
Если вы используете конструктор страниц Elementor, необходимо проверить, какие виджеты вы используете, и убедиться, что они поддерживаются для перевода. Процесс аналогичен проверке блоков Gutenberg, но специфичен для виджетов Elementor.
Все базовые виджеты Elementor поддерживаются из коробки.
Если у вас есть неподдерживаемые виджеты:
- Добавьте интеграцию для перевода виджета, или
- Замените его поддерживаемым виджетом
Проверьте элементы Bricks
Если вы используете конструктор страниц Bricks, необходимо проверить, какие элементы вы используете, и убедиться, что они поддерживаются для перевода. Процесс аналогичен проверке блоков Gutenberg, но специфичен для элементов Bricks.
Все базовые элементы Bricks поддерживаются из коробки.
Если у вас есть неподдерживаемые элементы:
- Добавьте интеграцию для перевода элемента, или
- Замените его поддерживаемым элементом
Обрабатывайте изображения, содержащие текст
Распространённое упущение при переводе сайтов — забыть, что изображения могут содержать текст, который может потребовать перевода.
При переводе записи изображения копируются в переведённую версию, а метаданные изображений (заголовок, alt-текст, подпись) переводятся, но любой текст внутри самих изображений остаётся на исходном языке.
Чтобы проверить изображения, проще всего переключить медиатеку WordPress в режим Grid — это позволяет визуально просмотреть все изображения с первого взгляда и быстро выявить те, которые содержат встроенный текст на неправильном языке.

Например, это изображение содержит текст на иврите, что делает его непригодным для других языков.

Ваши варианты:
-
Оставить встроенный текст (если язык всё равно в целом понятен)
- Подходит, когда текст написан на широко понятном языке или использует универсальные символы/цифры
- Никакой дополнительной работы не требуется
-
Удалить текст с изображений
- Используйте изображения без встроенного текста
-
Использовать текстовые наложения вместо встроенного текста
- Используйте изображения без встроенного текста
- Наложите текст (с помощью блоков Gutenberg, виджетов Elementor, элементов Bricks или CSS), который будет переводиться автоматически
-
Создать переведённые версии изображений
- Создайте отдельные файлы изображений для каждого языка
- Вручную замените изображения в переведённых записях
Обрабатывайте перевод дополнительных пользовательских данных
Polylang может обрабатывать поле биографии в профилях пользователей WordPress, но если у вас есть дополнительные пользовательские данные, хранящиеся в пользовательских полях (через ACF, Meta Box или другими средствами), вам потребуется специальный подход.
Если у вас есть пользовательские данные, требующие перевода (например: должности, квалификации, описания и т. д.), необходимо создать отдельные поля для каждого языка.
-
Создайте отдельные поля для каждого языка
- Используя ACF или Meta Box, создайте поля такие как:
Qualification ENQualification FRQualification DE- и т. д.
- Используя ACF или Meta Box, создайте поля такие как:
-
Обновите тему для отображения правильного поля
- Измените шаблоны темы для проверки текущего языка
- Отображайте подходящее поле в зависимости от активного языка
- Пример PHP-кода:
$current_lang = pll_current_language(); $qualification = get_field("qualification_{$current_lang}", 'user_' . $user_id); echo $qualification;
-
Вручную заполните поля
- После перевода контента вручную обновите поля в профиле пользователя
Пропускайте перевод терминов, которые не следует переводить
Некоторые термины никогда не следует переводить — названия брендов, имена собственные, технические термины или предметно-специфическая терминология.
Вы можете пропустить перевод этих терминов, добавив инструкции в пользовательский промпт, например:
Do not translate the following types of terms:
- Hotel names (e.g., "Grand Hotel", "Beach Resort")
- Restaurant names
- Brand names
- Technical acronyms (API, SEO, CMS, etc.)
Keep these terms exactly as they appear in the original text.Избегайте дублирования меток между языками
В контенте могут быть метки, представляющие одно и то же понятие на двух разных языках. При переводе этих меток могут возникнуть дубликаты или конфликты.
Например, если у вас есть китайский сайт, переводимый на английский, и у вас есть и метка 布宜诺斯艾利斯 (Буэнос-Айрес по-китайски) и метка Buenos Aires на английском, при переводе на английский обе метки становятся buenos-aires. Это создаёт ситуацию дублирования метки.

Как исправить перед переводом:
-
Проверьте метки
- Просмотрите все метки на исходном языке
- Определите метки, которые могут быть дубликатами меток на других языках
- Ищите метки, представляющие одно и то же понятие, но на разных языках
-
Объедините метки
- Выберите одну языковую версию для сохранения (обычно ваш исходный язык)
- Объедините или удалите дублирующиеся метки
- Обновите записи для использования объединённой метки
-
Очистите перед переводом
- Убедитесь, что исходный контент содержит только метки на исходном языке
- Удалите все метки на целевых языках из исходного контента
- Это предотвращает конфликты во время перевода
Избегайте дублирования названий мест в разных языках
Если ваш контент использует заголовки, смешивающие разные системы письма, вы можете увидеть такой паттерн: заголовок начинается с местного названия места, затем то же название латинскими буквами в скобках, затем остальная часть строки.
Типичный исходный паттерн (пример):
- Исходный (например, на иврите):
פוקט (Pouket) - מדריך לאי היפה— местное название, затем написание на английском или международном языке в скобках, затем подзаголовок. - Переведённый (например, на английский):
Pouket (Pouket) - beautiful island guide.
После перевода заголовок уже на одном языке и в одной системе письма, поэтому буквальная передача моделью повторяет то же название места дважды (например, Pouket (Pouket)).
Решение: уточните промпт перевода
Настройте промпт так, чтобы модель нормализовала избыточные открытия «Название (ТоЖеНазвание)», когда содержимое в скобках не добавляет новой информации. Например, добавьте инструкции такого типа:
If a heading begins with a place name followed by the same translated name in parentheses, remove the duplicate and keep one natural version. Do not remove the parenthesis if the text inside uses a different script, a different spelling, or includes additional descriptive information.Следите за slug-адресами меток/рубрик
Если slug-адреса ваших меток или рубрик уже на целевом языке, вы можете предположить, что переводить нечего.

Это часто нормально, но есть нюанс с бесплатной версией Polylang (не Pro).
С Polylang Pro переведённые термины могут повторно использовать один и тот же slug на разных языках. В бесплатной версии WordPress обеспечивает уникальность slug-адресов в целом, поэтому к slug переведённого термина автоматически добавляется суффикс -2.
Например: рубрика со slug travels_and_attractions на иврите при переводе на английский становится travels_and_attractions-2 вместо сохранения того же slug.
Если это влияет на ваши URL-адреса или SEO, вам придётся вручную исправить slug-адреса после перевода или перейти на Polylang Pro для разрешения повторного использования slug-адресов между языками.
Убедитесь, что встроенный контент на приемлемом языке
Если вы встраиваете сторонний контент — например, Google Maps, виджеты социальных сетей или другие iframe платформ — убедитесь, что встроенный контент отображается на целевом языке.
Например, встроенная карта Google Maps, настроенная для иврита, будет по-прежнему показывать метки, названия улиц и интерфейс на иврите даже после того, как вы перевели остальную часть страницы на английский. В этом случае, возможно, стоит использовать встроенный контент без привязки к языку.

То же самое относится к любой платформе или сервису, генерирующему встроенный контент для определённого языка (например, главы YouTube, виджеты отзывов, формы бронирования). Всегда проверяйте каждый встроенный элемент после перевода.
Убедитесь, что в исходном контенте нет языко-специфических стилей
Контент записей, написанный для конкретного языка — особенно RTL-языков, таких как иврит или арабский, — может включать встроенные атрибуты направления и языка, применяемые непосредственно к HTML-элементам. При переводе этого контента на другой язык такие жёстко заданные стили переносятся и нарушают макет.
Распространённые проблемы в RTL-исходном контенте:
<div dir="rtl" lang="he">— принудительно устанавливает RTL-направление и помечает язык как иврит для целого раздела<p dir="rtl">— принудительно устанавливает RTL-выравнивание для отдельных абзацев<h2 style="text-align: right;">— жёстко задаёт выравнивание по правому краю для заголовков
Когда этот контент переводится на английский (или любой LTR-язык), текст становится английским, но макет по-прежнему отображается справа налево — что приводит к смещённым заголовкам, обратному потоку текста и нарушенному форматированию.
Перед переводом проверьте исходный контент на наличие этих атрибутов и удалите их. Пусть тема и настройки языка/локали WordPress глобально управляют направлением и выравниванием, вместо того чтобы встраивать их в отдельные блоки контента.
Работайте с шаблонами Theme Builder в Elementor
Если вы используете Theme Builder в Elementor для создания глобальных шаблонов (шапки, подвалы, шаблоны отдельных записей, шаблоны архивов и т. д.), важно понимать, как эти шаблоны обрабатываются при переводе.
Что переводится:
- Меню: пункты меню заменяются переведёнными версиями меню
- Динамический контент: контент, взятый из записей/страниц, переводится (поскольку исходный контент переведён)
Что не переводится:
- Жёстко заданный текст: любой текст, добавленный непосредственно в шаблон (не из динамического контента), НЕ переводится
- Текст виджетов: текст в виджетах, таких как заголовки, абзацы, кнопки и т. д., остаётся на исходном языке
- Пользовательский HTML: любой пользовательский HTML или блоки кода остаются непереведёнными
Пример:
Этот шаблон заголовка Elementor содержит жёстко заданный текст ("Our Phone Number:"):

Решение:
Проектируйте шаблоны так, чтобы использовать только:
- Меню (которые заменяются автоматически)
- Изображения (которые не зависят от языка)
- Динамический контент (поступающий из переведённых записей)
- Избегайте добавления жёстко заданного текста, заголовков или описаний непосредственно в шаблоны
Это обеспечивает корректную работу глобальных элементов вашего сайта (шапки, подвалы и т. д.) на всех языках.
Настройте Advanced Custom Fields (ACF)
Если вы используете Advanced Custom Fields (ACF), необходимо настроить, как каждое поле должно обрабатываться при переводе. Поля ACF могут содержать различные типы контента, и каждый тип может потребовать разной обработки.
В разделе Gato Translate поля ACF можно настроить с одним из следующих параметров:
-
(Do nothing): поле пропускается при переводе или синхронизации
-
Translate: контент поля переводится на целевой язык
- Используйте для: текстовых полей, полей textarea, полей WYSIWYG и любых полей, содержащих переводимый текст
-
Copy: значение поля копируется как есть в перевод (без перевода)
- Используйте для: числовых полей, дат, флажков, полей true/false и любых полей, которые не следует переводить
-
Translate Reference: поле ссылается на другую сущность (запись, страницу, пользователя и т. д.), и ссылка обновляется, чтобы указывать на переведённую версию
- Используйте для: полей Post Object, Page Link, Relationship, User и Taxonomy

Группы полей могут применяться не только к записям и страницам. Они также могут применяться к:
- Рубрикам
- Меткам
- Медиафайлам
- Пользователям
- Пользовательским таксономиям
- Пользовательским типам записей
Обязательно настройте параметры перевода для групп полей, применяемых к этим сущностям!
Если вы используете Polylang Pro, необходимо также отключить его функции перевода ACF, чтобы позволить Gato AI Translations управлять переводом вместо них.
Настройте Meta Box
Если вы используете Meta Box (ещё один популярный плагин пользовательских полей), процесс настройки аналогичен ACF. Поля Meta Box также необходимо настроить для перевода, копирования или перевода ссылок.
В разделе Gato Translate поля Meta Box можно настроить с одним из следующих параметров:
- (Do nothing): поле пропускается при переводе или синхронизации
- Translate: контент поля переводится
- Copy: значение поля копируется как есть
- Translate Reference: ссылка поля обновляется, чтобы указывать на переведённую сущность

Необходимо также отключить функции перевода Meta Box в Polylang, чтобы позволить Gato AI Translations управлять переводом вместо них.
Настройте пользовательские мета-поля
Помимо ACF, Meta Box и SEO-плагинов, на вашем сайте могут быть другие пользовательские мета-поля из:
- Пользовательского кода
- Других плагинов
- Пользовательских полей WordPress (базовый метабокс Custom Fields)
Эти мета-поля необходимо настроить вручную в настройках плагина.
Определение пользовательских мета-ключей:
-
Экспортируйте контент
- Перейдите в Tools > Export в WordPress
- Экспортируйте все типы контента, которые планируете переводить
- Это создаёт XML-файл со всем контентом и метаданными
-
Проанализируйте файл экспорта
- Откройте XML-файл в текстовом редакторе
- Найдите теги
<wp:postmeta> - Составьте список всех уникальных мета-ключей
-
Отфильтруйте известные поля
- Удалите поля ACF (обычно с префиксом имени группы полей)
- Удалите поля Meta Box
- Удалите поля ядра WordPress (например,
_edit_last,_wp_old_slug,_thumbnail_id) - Удалите поля SEO-плагинов (если используете поддерживаемый SEO-плагин)
-
Определите, что осталось
- Это ваши пользовательские мета-поля
- Определите, что содержит каждое поле и как его следует обрабатывать
Определение потребностей в переводе:
Для каждого пользовательского мета-поля определите:
- Translate: содержит переводимый текст (заголовки, описания, контент)
- Copy: содержит данные, которые не следует переводить (идентификаторы, числа, настройки)
- Translate Reference: содержит идентификаторы сущностей, которые должны указывать на переведённые версии
Настройка в плагине:
- Перейдите в Settings, на вкладку Meta Configuration
- Выберите параметр перевода (Translate/Copy/Translate Reference)
- Добавьте имена пользовательских мета-ключей, используя точное совпадение или шаблон regex

Выполните процесс перевода
Теперь, когда все приготовления завершены, пришло время выполнить переводы.
Сначала протестируйте процесс
Прежде чем приступать к переводу всего сайта, крайне важно сначала протестировать процесс в небольшом масштабе. Такой подход сэкономит время и предотвратит распространение проблем на весь контент.
Вот рекомендуемый рабочий процесс тестирования:
-
Начните с одной записи и одного языка
- Выберите репрезентативную запись, включающую различные типы контента (текст, изображения, ссылки и т. д.)
- Переведите её только на один целевой язык, который вы хорошо понимаете
- Детально проверьте перевод: проверьте каждый блок, каждую ссылку, каждое изображение и каждый фрагмент метаданных
- Если вы обнаружите какую-либо проблему (например, блок не переведён, ссылка не заменена, форматирование нарушено), исправьте её перед продолжением. Та же проблема будет воспроизведена для всех языков, если вы не устраните её сейчас.
-
Расширьте до нескольких записей
- Как только первый перевод будет идеальным, переведите ещё 3–5 записей на тот же язык
- Тщательно проверьте каждую из них
- Это поможет выявить закономерности или повторяющиеся проблемы
-
Протестируйте с дополнительными языками
- Если вы переводите на несколько языков, протестируйте ещё с одним языком, чтобы убедиться, что всё работает для разных языковых пар
-
Только после этого приступайте к массовому переводу
- Как только вы убедитесь, что всё работает корректно, можно приступать к переводу оставшейся части сайта
Такой поэтапный подход обеспечивает раннее обнаружение проблем конфигурации или контента, когда их легко исправить.
Порядок перевода
Порядок, в котором вы переводите разные типы контента, имеет значение, особенно когда контент ссылается на другой контент.
Переводите контент в следующем конкретном порядке, чтобы избежать проблем со ссылками:
-
Users (Пользователи)
- Описания пользователей могут быть включены в блоки
-
Taxonomies (Метки/Рубрики)
- Метки и рубрики (и пользовательские таксономии) часто упоминаются в записях, поэтому они должны существовать до перевода записей
-
Media (Медиафайлы)
- Медиафайлы (изображения, видео, документы) используются в записях как изображения-обложки или изображения галерей, поэтому переводите их до записей
-
Custom Post Types (Пользовательские типы записей)
- Переводите записи, страницы и другие CPTs
- Важно: если один CPT ссылается на другой, переводите в обратном порядке зависимостей
- Например: если записи используют Reusable Blocks, переводите сначала Reusable Blocks, затем записи
-
Menus (Меню)
- Переводите меню в последнюю очередь, поскольку они ссылаются на записи, страницы и рубрики
Решите, переводить ли slug-адреса
Перевод slug-адресов записей и таксономий на целевой язык часто желателен для языков с латинским письмом (например, французского, немецкого, испанского): путь остаётся читаемым и позволяет отражать локализованные ключевые слова в URL.
Для языков с нелатинским письмом — иврита, японского, китайского и подобных — локализованные slug-адреса часто превращаются в беспорядок: неудобные транслитерации, очень длинные сегменты, процентное кодирование или URL-адреса, которыми сложно делиться и сравнивать. Многие команды сохраняют латинские (или исходные) slug-адреса для этих языков и опираются на переведённый заголовок для видимого локализованного названия.
Относитесь к переводу slug-адресов как к политике для каждого целевого языка, а не как к единому переключателю для всего сайта:
- Разделите языки на группы — например, «переводить slug-адреса» для латинских целевых языков и «не переводить slug-адреса» для китайского, японского, иврита и т. д.
- Выполняйте отдельные пакеты переводов — массово переводите одну группу с включённым переводом slug-адресов, затем запускайте другой пакет для другой группы с отключённым переводом slug-адресов.
- Настраивайте каждый пакет через Gato Translate (Custom) (рассмотрено в разделе Как выполнять переводы ниже): отключите параметры Translate custom post slugs? и Translate tag and category slugs? для пакетов, в которых вы хотите сохранить slug-адреса без изменений. Стремитесь к одной политике за один запуск (например, один язык или одна группа языков с одинаковым правилом), чтобы настройки соответствовали ожидаемому результату.
Для сценариев или повторяемых рабочих процессов WP-CLI поддерживает --translate-slugs=true или --translate-slugs=false за одно выполнение.
Двухпроходный перевод
Если вы включили замену внутренних ссылок или перевод ссылок на сущности, может потребоваться перевод в два прохода:
Проход 1: перевод только свойств
- Настройте перевод для исключения content и meta, то есть переводите только properties (заголовок/имя и slug)
- Выполните перевод

После выполнения первого прохода переведённые записи будут созданы с их переведёнными URL-адресами и идентификаторами, что позволит разрешать URL-адреса внутренних ссылок и идентификаторы ссылок на сущности для целевого языка.
Проход 2: перевод только контента и мета
- Настройте перевод для перевода только content и meta (то есть исключите properties)
- Снова выполните перевод

После выполнения второго прохода оставшийся контент и мета будут переведены, а URL-адреса внутренних ссылок и идентификаторы ссылок на сущности будут заменены переведёнными версиями.
Как выполнять переводы
Вариант 1: Панель администратора WordPress (Bulk Actions)
- Перейдите к списку контента (Записи, Страницы, Медиафайлы и т. д.)
- Выберите элементы, которые хотите перевести
- Выберите Gato Translate из выпадающего меню массовых действий
- Нажмите Apply

Меню переводятся иначе: они переводятся автоматически при сохранении в редакторе меню.
Альтернатива: Gato Translate (Custom)
Для большего контроля используйте Gato Translate (Custom), который позволяет переопределять настройки для конкретного запуска перевода:

Это открывает страницу пользовательских настроек, где вы можете задать конкретные параметры для этого запуска перевода:

Вариант 2: WP-CLI (для больших пакетов)
Для крупных сайтов с сотнями или тысячами элементов WP-CLI является удобной альтернативой.
Вы можете запускать переводы пакетами через командную строку, а затем выполнять переводы в фоновом режиме, пока работаете над чем-то другим.

Проверка журналов перевода
Когда перевод завершается с ошибкой (из-за отключения API, исчерпания API-кредитов и т. д.) или выдаёт предупреждения, в меню плагина появится значок уведомления:

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


Повторный запуск неудавшихся переводов
Когда перевод завершается с ошибкой, вы можете повторно запустить перевод только этой записи и только для этого языка и избежать расходования API-кредитов на успешные переводы.
Неудавшиеся переводы выделены жёлтым фоном на значке редактирования Polylang:

Вы можете отфильтровать, чтобы показывать только записи с неудавшимися переводами:

Для повторного перевода только неудавшихся записей используйте массовое действие Gato Translate (Custom) с параметром Process failed translations only:


Проверьте качество и полноту перевода
После перевода контента крайне важно убедиться, что переводы выполнены успешно и имеют хорошее качество. Не предполагайте, что всё прошло идеально — уделите время проверке.
Проверка в редакторе:
Откройте переведённые записи в редакторе WordPress и проверьте:
-
Перевод контента
- Весь ли текст переведён? (не только заголовок)
- Все ли блоки/виджеты/элементы переведены?
- Проверьте блоки Gutenberg, виджеты Elementor или элементы Bricks
- Убедитесь, что форматирование сохранено
-
Пользовательские поля
- Правильно ли переведены/скопированы/использованы ссылки в полях ACF?
- Правильно ли обработаны поля Meta Box?
- Правильно ли настроены пользовательские мета-поля?
-
SEO-метаданные
- Проверьте, что мета-заголовки переведены
- Убедитесь, что мета-описания переведены
- Подтвердите, что теги Open Graph переведены
- Проверьте другие поля SEO-плагина
-
Медиафайлы
- Правильно ли установлены изображения-обложки?
- Указывают ли изображения в контенте на переведённые версии (если применимо)?
- Переведены ли alt-тексты изображений?
-
Ссылки
- Указывают ли внутренние ссылки на переведённые версии?
- Правильно ли сохранены внешние ссылки?
- Работают ли ссылки на рубрики/метки?
Проверка на фронтенде:
Просматривайте переведённые записи в браузере и проверяйте:
-
Визуальный вид
- Страница выглядит правильно?
- Макет сохранён?
- Изображения отображаются правильно?
- Стили правильные?
-
Применение шаблонов
- Используется ли правильный шаблон?
- Правильно ли отображаются шапка/подвал?
- Отображаются ли боковые панели/виджеты?
- Отображает ли меню переведённую версию?
-
Функциональность
- Все ли ссылки работают?
- Работают ли формы?
- Работают ли интерактивные элементы?
- Правильна ли навигация?
-
Элементы, специфичные для языка
- Для RTL-языков правильный ли макет?
- Правильно ли отображаются шрифты?
- Правильное ли направление текста?
Качество перевода:
Современный перевод с помощью ИИ в целом очень хорош, но вам всё равно следует проверить:
-
Языки, которые вы понимаете
- Прочитайте переводы на языках, которые вы знаете
- Проверьте точность, тон и стиль
- Убедитесь, что технические термины верны
- Убедитесь, что голос бренда сохранён
-
Языки, которые вы не понимаете
- Для языков, на которых вы не говорите, рассмотрите возможность привлечения носителя языка для проверки
- Это особенно важно для языков, сильно отличающихся от вашего (например, английский — корейский, китайский, арабский)
- Даже беглая проверка может выявить серьёзные проблемы
- Для важного контента рекомендуется профессиональная корректура
-
Предметно-специфический контент
- Технический контент может потребовать экспертной проверки
- Юридический/медицинский контент следует проверять профессионалами
- Маркетинговый контент может потребовать корректировки голоса бренда
Восстановите блоки с «недопустимым контентом»
При переводе больших фрагментов HTML, содержащих много тегов и атрибутов, ИИ-сервисы иногда могут возвращать ответ, нарушающий вывод блока.
Например, при переводе блока core/paragraph, содержащего очень большой HTML-фрагмент с помощью ChatGPT 5.0 mini, такого как этот:
<!-- wp:paragraph -->
<p>
Pédagogie:
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><strong><br></strong>Support :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><br>Coûts :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><br>Débouchés :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark>
</p>
<!-- /wp:paragraph -->...ответ может добавить лишний тег <mark>, которого не было в исходном контенте:
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★
+<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">При редактировании записи в редакторе WordPress этот блок может не отображаться и вместо этого показывать сообщение «Block contains unexpected or invalid content» («Блок содержит неожиданный или недопустимый контент»):

Нажатие Attempt recovery скорее всего решит проблему.
По возможности избегайте использования HTML-блоков, поскольку весь HTML-фрагмент должен переводиться как единое целое.
Используйте вместо них пользовательские блоки со свойствами, чтобы переводимые строки можно было идентифицировать, извлекать и переводить без нарушения форматирования.
Устраните ошибки повреждённых данных
Иногда во время перевода могут возникать ошибки, потому что ваш контент содержит повреждённые или устаревшие данные. Обычно это происходит когда:
- Тип записи ранее поддерживал функцию (например, родительские записи), но больше не поддерживает
- Контент ссылается на сущности, которые больше не существуют
- Несоответствия в базе данных из-за миграций или изменений плагинов
- Осиротевшие связи в пользовательских полях
Понимание ошибки:
Когда в журналах вы видите такую ошибку:
2025-10-25T03:40:38+00:00 Error [Query "create-missing-translation-media"] Execution with errors: 🔴 Object with ID '26061' (of type 'GenericCustomPost') cannot be loaded. Please check if referencing this ID is stale data (i.e. still stored on the WordPress database, but pointing to a non-existing object) and, if so, remove it or fix it.Это означает:
- Контент ссылается на сущность (запись, страницу, медиафайл и т. д.) с идентификатором 26061
- Эта сущность больше не существует в базе данных
- Плагин не может выполнить перевод, потому что не может разрешить ссылку
Как исправить:
Метод 1: Редактор WordPress (простейший)
- Откройте запись/элемент, который не переводится
- Определите повреждённую ссылку (проверьте пользовательские поля, связи и т. д.)
- Удалите или исправьте ссылку
- Сохраните запись
- Попробуйте перевести снова
Метод 2: Очистка базы данных
Если исправить через редактор не получается:
- Определите, в каком поле содержится некорректная ссылка
- Используйте инструмент базы данных или плагин для удаления устаревших данных
- Будьте осторожны — всегда создавайте резервную копию перед изменением базы данных
Метод 3: Gato GraphQL (расширенный)
Поскольку Gato AI Translations for Polylang использует Gato GraphQL под капотом, вы можете выполнять GraphQL-запросы для программного исправления повреждённых данных:
-
Сначала получите идентификаторы элементов с проблемами с помощью GraphQL-запроса.
-
Затем исправьте проблему с помощью мутации. Например, для удаления ссылки на родителя из медиафайла:
mutation {
updateMediaItem( input: { id: 26066, customPostID: null } ) {
status
errors {
__typename
...on GenericErrorPayload {
message
}
}
}
}Если исправить не удаётся:
Если повреждённые данные не поддаются очистке, вам может понадобиться:
- Пересоздать запись/элемент с нуля
- Экспортировать контент, очистить его и повторно импортировать
- Обратиться в поддержку для помощи со сложными случаями
Интегрируйте переведённые записи в конфигурацию
После перевода контента вновь созданные переведённые записи могут потребовать интеграции в конфигурацию сайта.
Обновите группы полей ACF
Группы полей ACF могут быть назначены конкретным записям, страницам, рубрикам, меткам или другим сущностям. При переводе контента переведённые версии также могут потребовать назначения тем же группам полей.
После перевода обновите назначения групп полей ACF, включив переведённые версии:
- Перейдите к пункту меню Field Groups в меню плагина ACF
- Отредактируйте группу полей, применяемую к конкретным сущностям
- В Location Rules добавьте переведённые версии
- Сохраните группу полей
Пример:
Группа полей применяется к конкретной записи «Hello World» на исходном языке:

После перевода записи переведённые версии («Hola Mundo» на испанском и «你好世界» на китайском) также должны быть назначены той же группе полей:

Готово!
Вы завершили процесс перевода. Поздравляем! 👏
Заключение
Это исчерпывающее руководство должно помочь вам успешно перевести сайт на WordPress. Если вам нужна дополнительная информация, ознакомьтесь с документацией Gato AI Translations for Polylang.