Настройка плагина Polylang для мультиязычности WordPress
Polylang — бесплатная альтернатива WPML для создания многоязычных WordPress-сайтов. Бесплатная версия покрывает большинство задач; платный Polylang Pro добавляет синхронизацию полей, REST API и поддержку WooCommerce.
Принцип работы
Polylang не создаёт отдельных сайтов в сети (как Multisite) — он добавляет языки как таксономию к существующим постам, страницам и кастомным типам. Каждый пост привязывается к языку, а переводы связываются между собой через метаданные.
Установка и первоначальная настройка
Плагин устанавливается из репозитория WordPress бесплатно. После активации:
- Языки → Языки → Добавить язык — выбрать из списка (русский, английский и т.д.)
- Polylang автоматически создаёт языковой URL: подпапки (
/ru/,/en/) или поддомены - Языки → Настройки — задать язык по умолчанию, поведение главной страницы
URL-структура меняется в разделе Языки → Настройки → URL modifications. Вариант «Директории» (/en/page/) рекомендован для SEO.
Перевод контента
В списке постов появляются флажки языков — значок карандаша открывает существующий перевод, «+» создаёт новый. В редакторе сбоку (или в Gutenberg через панель) — блок Polylang для выбора языка поста и связи с переводами других языков.
Перевод строк темы
Языки → Строки переводов
→ Выбрать группу (тема, плагин, или кастомная)
→ Ввести переводы для каждого языка
Для регистрации строки в PHP:
// Регистрация строки при инициализации
pll_register_string( 'my-plugin', 'Submit button text', 'my-plugin-strings' );
// Получение переведённой строки в шаблоне
echo pll__( 'Submit button text' );
// Или через e-функцию для вывода
pll_e( 'Submit button text' );
Перевод меню
Polylang позволяет назначить отдельное меню для каждого языка:
Внешний вид → Меню
→ Создать меню «Main Menu RU», привязать к языку «Русский»
→ Создать меню «Main Menu EN», привязать к языку «English»
→ Назначить оба меню на одну локацию меню темы
Polylang автоматически показывает нужное меню в зависимости от текущего языка.
Программный API
// Текущий язык
$lang = pll_current_language(); // 'ru', 'en', 'de'
// Язык конкретного поста
$post_lang = pll_get_post_language( $post_id ); // 'ru'
// Получить ID перевода поста
$translated_post_id = pll_get_post( $original_post_id, 'en' );
// Домашняя страница для конкретного языка
$home_en = pll_home_url( 'en' );
// Все языки сайта
$languages = pll_languages_list(); // ['ru', 'en', 'de']
Виджет переключателя языков
Polylang регистрирует виджет «Polylang Language Switcher», добавляемый в любую область. Параметры: показывать флаги, названия языков, скрывать текущий язык. В Gutenberg — блок «Language Switcher».
Для вставки в произвольное место шаблона:
// Вывести переключатель языков программно
dynamic_sidebar( 'polylang-language-switcher' );
// Или через функцию (Pro)
pll_the_languages( [
'show_flags' => 1,
'show_names' => 1,
'hide_if_no_translation' => 0,
] );
Polylang Pro и WooCommerce
Бесплатная версия не поддерживает WooCommerce официально — товары, атрибуты, способы доставки не переводятся полноценно. Polylang Pro (или аддон Polylang for WooCommerce) добавляет:
- Перевод товаров, вариаций, атрибутов
- Языковые корзины
- Перевод email-уведомлений WooCommerce
- Синхронизацию стока между переводами товара
Ограничения бесплатной версии
- Нет синхронизации кастомных полей между переводами
- Нет официальной поддержки WooCommerce
- Нет переводов через REST API (
/wp-json/polylang/v1/) — только в Pro
Для небольшого корпоративного сайта без магазина бесплатной версии достаточно.
Сроки
Настройка 2–3 языков, перевод существующего контента до 30 страниц, переключатель языков — 1 рабочий день. С WooCommerce, кастомными типами, синхронизацией полей — 2–3 дня (требуется Pro).







