Как сделать ресурс на WordPress мультиязычным

Плагин Polylang – удобный инструмент создания многоязычных сайтов на WordPress. В отличие от WPML, у расширения есть бесплатная версия, возможности которой устраивают большинство пользователей. Расширение полностью интегрируется в Elementor и добавляет в визуальный конструктор виджет переключателя языков Polylanguage Switcher. Переключатель вставляется в виджет или навигационное меню. С помощью функции pll_the_languages() можно разместить Switcher в произвольном месте шаблона.

Общие сведения о плагине:

  • разработчик: DeckerWeb, Дэвид Декер;
  • версия WordPress: 4.7 и выше;
  • проверена совместимость до версии WP: 5.4.2;
  • версия PHP: 5.6 и выше;
  • текущая версия плагина: 1.0.0;
  • последнее обновление: 4 месяца назад;
  • локализация: английский, французский, немецкий;
  • рейтинг WordPress: 5.00;
  • количество активных установок: 30000+;
  • цена: бесплатно/99 евро.   

Преимущества плагина:

  • поддержка языков RTL (арабский, иврит, другие);
  • создание копий страниц/записей на других языках;
  • перевод меню и виджетов;
  • перевод записей, страниц, тегов, категорий и так далее;
  • интеграция Polylang в Elementor Finder;
  • опция установки переключателя языков customize polylanguage switcher;
  • перевод пользовательских типов записей и таксономий;
  • добавление переключателя в меню;
  • интуитивно понятный виджет Polylang Language Switcher для конструктора Elementor;
  • перевод через файлы .pot;
  • поддержка стандартов локализации;
  • возможность использования одного URL версиями страниц на разных языках;
  • динамические теги для визуального редактора;
  • достаточно функциональная бесплатная версия;
  • расширение функциональности за счет дополнительных плагинов;
  • подробная документация (на английском);
  • добавление переключателя в любое место сайта с помощью функции pll_the_languages().

Дополнения

Основное дополнение, без которого установка Polylang теряет всякий смысл – конструктор Elementor Page Builder. Плагин интегрируется в Elementor Finder, добавляет в визуальный редактор виджет переключателя языков. Опцией customize polylanguage switcher можно установить переключатель в меню или любое место, где предусмотрено размещение виджета. Чтобы поставить Switcher в произвольном месте шаблона, придется воспользоваться функцией pll_the_languages().

Polylang удобно использовать в паре с Loco Translate, расширением для локализации тем и дополнений WordPress через файлы .mo и .po. Для полной интеграции с WooCommerce потребуется плагин Hyyan WooCommerce Polylang Integration. Для CF7 – Contact Form 7 Polylang Module.

Для перехода с WPML на Polylang понадобится дополнительное расширение WPML to Polylang. Плагин переносит не только языки, но и опции WPML, если у них существуют аналоги в Polylang. Импортируются посты и переводы, в том числе для кастомных типов записей и кастомных категорий. Чтобы старые записи корректно отображались, их язык должен совпадать с языком сайта по умолчанию.

Настройки

Перейдите в консоли администрирования в раздел Languages и добавьте все языки, которые будут использоваться на веб-сайте. Отметьте язык по умолчанию.

Настройки:

  • URL modifications: задает вид адреса языковых версий ресурса (возможно размещение на сторонних доменах, на поддоменах, в поддиректории на основном домене);
  • Detect browser language: включение/выключение автоматического определения языка браузера пользователя;
  • Media: включение/выключение переводов файлов изображений (мета) и других медиа;
  • Custom post types: задает многоязычные типы записей и категорий;
  • Synchronization: синхронизация при обновлении одной из языковых версий;
  • WPML compatibility: совместимость с WPML;
  • Tools: опция удаления данных расширения после его деинсталляции.

В опциях Custom post types и Synchronization желательно включить все. Также стоит выбрать режим совместимости с WPML. Опцию Tools нужно включать только в том случае, если вместе с удалением плагина должны будут удалиться и результаты его работы. 

Функции Polylang

Типовые манипуляции осуществляются в соответствующем разделе консоли и в конструкторе. Однако в некоторых случаях возникает необходимость вмешательства в код PHP. Например, если у плагина отсутствует файл .po и его интерфейс не получается перевести расширением наподобие Loco Translate.

В этом случае можно «точечно» перевести слова и словосочетания, предварительно зарегистрировав строки в базе плагина Polylang с помощью функции pll_register_string(). Зарегистрированные строки появляются в секции ‘Strings translations’ раздела ‘Languages’ панели Polylang на административной панели, где им можно задать значения для разных языков.  

Функции плагина подробно описаны в документации. Перечислим некоторые из них:

  • pll_the_languages: отображает переключатель языков в произвольном месте страницы;
  • pll_current_language, pll_default_language: возвращает текущий язык или язык по умолчанию;
  • pll_get_post: возвращает перевод записи или страницы;
  • pll_get_term: возвращает перевод категории или тега записи;
  • pll_home_url: возвращает адрес главной страницы сайта WordPress;
  • pll_register_string: регистрация строк для последующего перевода;
  • pll__: перевод строки, предварительно зарегистрированной функцией pll_register_string;
  • pll_e: отображение переведенной строки, предварительно зарегистрированной функцией pll_register_string;
  • другие функции.

Заключение

Бесплатная версия плагина Polylang достаточно функциональна для создания многоязычных сайтов на WordPress. Типовые операции легко выполняются в соответствующем разделе консоли управления и конструкторе drag-and-drop и не требуют вмешательства в код. Есть удобные дополнения для перехода на Polylang c WPML, для более тесной интеграции с плагинами Contact Form 7, ACF, WooCommerce. Расширение определяет несколько функций для «точечной» подстройки работы плагина и задания произвольного размещения переключателя языков на странице. Функционал подробно описан в документации к дополнению.