Многоязычный сайт на wordpress

Итак, для решения задачи, понадобится:
Рассмотрим 1 пункт — Готовая тема WordPress. Если это тема покупная, то она должна быть с поддержкой многоязычности. В характеристиках темы должна быть фраза: Translations Support & RTL:

Если вы создаете тему с поддержкой многоязычности сами, то для WordPress 3.9 и ранние версии в wp-config.php должна быть такая строка:
1 2 3 |
define('WPLANG', 'ru_RU'); |
А для WordPress 4.0 и поздние версии в настройках сайта (меню «Settings» -> «General») просто выберите основной язык.

Структура доступа к сайту будет иметь вид:
https://Domain/ — русский язык
https://Domain/en – английский язык
Также в файле functions.php вашей темы должны быть такие строки:
1 2 3 4 5 6 7 8 9 |
/** * Add language support */ add_action( 'after_setup_theme', 'my_child_theme_setup' ); function my_child_theme_setup(){ load_child_theme_textdomain( 'mydomain', get_stylesheet_directory() . '/lang' ); } |
Где mydomain — текстовый домен, который был указан в фразах для перевода в файлах темы, lang — папка в вашей теме, где хранятся файлы переводов с расширениями .po и .mo.
Итак, если эта база готова, то рассмотрим сразу 3 пункт, так как он больше взаимосвязан с переводом самой темы и плагинов. С плагином Loco Translate — вы можете не только переводить фразы, а и также создавать файлы переводов с расширениями .po и .mo для нужного языка.

Но для этого, тема или плагин должны быть правильно подготовлены — иметь текстовый домен во фразах для переводов.
Формы перевода темы в плагине выглядят таким образом:

Теперь вернемся к пункту 2 — Плагин Polylang — именно он делает wordpress многоязычным в этом варианте.

Если вы ставите wordpress с нуля, то перевод уже имеющегося контента — записей или статей вам может быть и не нужен. Но если у вас есть уже готовый контент, который нужно перевести, то сейчас сразу после установки плагина Polylang предлагают установить плагин Lingotek, который совместим с плагином Polylang и предлагает различные способы переводов, начиная от бесплатных, и заканчивая платной подпиской. На практике в бесплатной версии, этот плагин переводит достаточно хорошо, но перевод требует ручной корректировки.
Для работы его нужно настроить. Через админку зарегистрироваться на сервисе Lingotek и после этого переводить контент можно просто нажав пару кликов. К примеру, в списке записей появляется дополнительная колонка плагина, где в выпадающем меню, выбирается этап перевода.

Но, как уже было сказано выше, перевод бесплатной версии требует ручной корректировки.
И осталась заключительная часть в установке многоязычности для wordpress — сам переключатель языков плагина Polylang:
1 2 3 |
pll_the_languages($args); |
В интернете вы найдете много информации, как устанавливать эту функцию. В своем же варианте, я буду использовать переключатель языков через элемент меню, просто добавив его в нужное место меню:

В моем случае — моя тема имеет поддержку элементов меню.
В целом, по этой статье — такой вариант установки многоязычности для WordPress весьма практичен и самое главное — не требует дополнительно платы за плагины или их подписку. Поддерживает оптимальный SEO. Но и весьма трудоемкий. Если же сравнивать поддержку многоязычности в двух разных CMS prestashop и wordpress, то prestashop — имея готовый бесплатный функционал в своей коробке и удобную встроенную систему переводов — более комфортнее, чем wordpress.