Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress
В последних реализациях мультиязычных сайтов на WordPress я использую именно этот модуль. По сравнению с обозреваемым ранее плагином WPML он мне кажется более доступным для понимания и легким в работе. В принципе, похожее мнение о нем встречал в разных подборках/обзорах на аналогичные решения. Недавно внедрил Polylang на еще один проект и просто в восторге! Да, тут есть свои определенные нюансы (о которых поведаю ниже), но в целом продукт очень толковый. Разумеется в посте идет речь о бесплатном варианте (не премиальной версии).
Оглавление:
- Установка и настройка плагина.
- Переключатель языков.
- Непосредственное создание переводов (тексты, темы, модули).
- Всплывающее окно с выбором языка на Popup Maker + Polylang. (линк на другой пост).
- Дополнительные моменты.
Основная задача плагина Polylang – реализация мультиязычности в Вордпресс CMS. Не следует путать это с переводом шаблона на русский, т.к. это немного другая история — здесь пользователь получает доступ к сайту в WordPress на нескольких языках и может читать/видеть тексты на том, который лучше ему подходит. Данная фишка применима больше к крупным международным/туристическим порталам или веб-проектам, ориентированным под страны с многоязычным населением.
С помощью модуля:
- Вы можете легко переводить заметки, страницы, категории/теги, меню либо создавать их с нуля, выбирая одну из доступных локалей.
- Поддерживается любое количество языковых версий, в том числе и письмо справа налево.
- Доступна обработка пользовательских типов записей (таксономий), разных форматов постов, RSS-фидов и базовых виджетов.
- При создании новых переводов постов все категории/метки автоматически копируются.
- Адрес альтернативных версий веб-сайта может формироваться с помощью дополнительного параметра в URL (например «/en/») либо реализовываться на субдомене.
- Переключение языков реализуется через виджет, функцию или в меню.
Премиальная сборка предлагает еще несколько опций, но мне всегда хватало бесплатных.
Кстати, на официальном сайте в разделе поддержки найдете полезную документацию: вопросы-ответы, разработчикам, с чего начать, продвинутые советы, инфу о совместимости с WooCommerce и др. Если описания рабочего процесса ниже вам будет недостаточно и/или нужно будет реализовать задачи посерьезнее – рекомендую туда заглянуть.
Установка и настройка Polylang для WordPress
Ищите модуль по названию в WP-админке или скачивайте отсюда. В данный момент у него более 400тысяч загрузок и почти максимальная оценка (850 юзеров поставили ему 5-рку). Единственное, что может слегка смущать – наличие около сотни багов, над которыми разработчики активно трудятся. Критичных ошибок пока не встречал.
Алгоритм работы следующий:
1. После активации модуля переходим в раздел “Languages”, где выбираем одноименный подпункт меню. Здесь надо создать базовый язык по умолчанию. Для этого в первом параметре “Choose a language” достаточно выбрать нужное значение из списка, и все опции автоматически будут установлены.
Так как это первая наша запись, то значение “Order” (порядок языковых версий) будет установлен в ноль. Осталось только кликнуть по кнопке “Add new language”.
2. Сразу после добавления базовой локали в админке появится следующее сообщение:
Система уведомляет вас о том, что у всех записей, категорий и страниц не указан никакой язык, и если вы хотите установить для них только что добавленный, то требуется кликнуть по ссылке в данном сообщении. Выполните это.
3. Раз уж нам надо сделать многоязычный сайт в Wordpress, то без (как минимум) еще одного дополнительного языка нам не обойтись. Выполняете такую же процедуру как и на первом шаге – переходим в “Languages” и в выпадающем списке находим нужное нам значение. Внимание! В данном случае параметр “Order” меняем на единицу (двойку, тройку и т.д., для каждого следующего объекта).
4. Теперь переходим в раздел настроек плагина “Settings”, где находим пункт “URL modifications”. В моем случае нужно было сделать классический вариант URL’а по типу:
- Базовая версия — https://название_сайта.ru/pro-nas/
- Английская: https://название_сайта.ru/en/about-us/
То есть идентификатор локали идет сразу после доменного имени. Поэтому я выбрал следующие настройки:
Здесь:
- Оставляем по умолчанию вариант с директорией в URL-линке.
- Избавляем от приставки language в адресе + убираем отображение идентификатора локали по умолчанию.
- На главной в URL не выводится название страницы, а только языковая версия.
- Сохраняем все настройки.
Переключатель языков в Polylang – виджет и функция
Требуемый нам виджет называется «Language Switcher». Выглядит он следующим образом.
Содержит такие настройки как:
- отображение выпадающим списком (dropdown);
- вывод текстовых названий локалей;
- показ соответствующих флажков;
- скрытие текущего языка;
- скрытие вариантов, где нет перевода.
Все предельно просто. Если же вам надо как-то нестандартно вписать данный элемент в дизайн сайта, то к счастью, разработчики предусмотрели отдельную функцию для этой задачи:
Функция pll_the_languages
pll_the_languages( $args ); |
В ее параметрах указываются разные аргументы, для которых вы ставите значения 1 или 0, отвечающие за срабатывание или отключение опции (1 – да, 0 – нет):
- dropdown – показ в виде dropdown списка;
- show_names – вывод названий языков;
- display_names_as – отображение локалей как “имени” или “slug”;
- show_flags – выводить флаги или нет;
- hide_if_empty – скрытие выбора для постов/страниц Вордпресс без мультиязычности;
- force_home – принудительный линк на главную;
- echo – демонстрировать результат сразу или вернуть строку (по умолчанию – да);
- hide_if_no_translation – скрыть переключение/выбор, если нет перевода;
- hide_current – не показывать текущий язык;
- post_id – отображение ссылок на заметки/страницы, определенные через post_id;
- raw – создание своего собственного элемента-переключателя.
Самый популярный пример использования функции:
<ul> <?php pll_the_languages( array( 'show_flags' => 1, 'show_names' => 0 ) ); ?> </ul> |
В таком случае посетители увидят просто несколько флажков без какого-либо текста. Думаю, принцип добавления, указанных выше, параметров вам понятен.
Заменяем стандартные иконки-флаги на свои
Для использования своих иконок вместо стандартных нужно:
- Сохранить изображения в формате по типу “en_US.png”, то есть его название должно соответствовать локали (для украинской версии это просто — uk.png). В качестве расширений файлов допускаются: PNG, SVG, JPG.
- Далее создаете на FTP в директории wp-content новую папку /polylang куда и заливаете все эти иконки флажков.
- Затем заходите в админку в раздел “Languages” – “Settings”, где открываете пункт настроек “URL modifications” и просто сохраняете их, ничего не изменив.
На этом все. Из дополнительных подсказок/советов:
- Создавать свою директорию /wp-content/polylang/ нужно дабы после обновления плагина изображения не перезаписались базовыми по умолчанию. Хотя, если вы используете дочернюю тему, то как я понял, картинки загружать в /polylang/flags/ вполне реально.
- Кастомные флажки работают только во фронтенде, в админке – нет.
- Для определения размеров SVG файлов нужно юзать фильтр pll_custom_flag (в других случаях достаточно подправить CSS):
add_filter( 'pll_custom_flag', 'pll_custom_flag', 10, 2 ); function pll_custom_flag( $flag, $code ) { $flag['url'] = "http://mysite.com/wordpress/wp-content/polylang/{$code}.svg"; $flag['width'] = 32; $flag['height'] = 22; return $flag; } |
Создание переводов на разные языки
Итак, мы разобрались со всеми с базовыми настройками плагина мультиязычности в WordPress и теперь пришло время добавить сами переводы на сайт. Делается это в несколько этапов, поскольку для тех или иных элементов существуют свои подходы.
Строчные параметры
Они находятся в разделе плагина под названием “Strings translations”. Как я понимаю, сюда входят некоторые базовые системные значения + «вкрапления» из других модулей: заголовок, архивы, главная, ошибка 404, формат даты и т.п.
Если посмотреть на мой пример на скриншоте выше, то там часть фраз импортирована из Yoast SEO. Судя по всему, разработчики плагинов могут как-то юзать эту фишку для организации лучшей совместимости с Polylang.
Переводы страниц/постов
Тут все достаточно наглядно и интуитивно понятно. Переходите к списку всех записей и в самом конце каждой строки увидите наличие тех или иных локализаций.
Здесь:
- галочками отмечается наличие текста на нужном языке;
- нажимая на иконку “+” (плюс) вы создаете новый перевод;
- иконка “карандаша” – редактирование.
В самой верхней панели имеется переключение между языками – допускается просмотр сразу несколько версий либо какой-то одной. Это уже кому как удобнее редактировать. Вам также разрешается создавать новые локализации при работе в текстовом редакторе:
Тут аналогично требуется кликнуть по иконке с “+”, после чего откроется новое окно для создания записи. Она будет привязана в качестве перевода оригинальной как только вы нажмете «Опубликовать».
Важно! В бесплатной версии плагина Polylang в WordPress настройках недоступно указание одинаковых URL двум элементам! То есть вы можете создавать только разные URL-адреса для вебстраниц. Хотя с другой стороны по SEO так, в принципе, и советуют делать.
Перевод шаблонов
В некоторых из них можно провернуть прием, аналогичный предыдущему пункту: то есть сначала выбираете нужный язык в верхней горизонтальной панели, а затем заходите в раздел админки «Внешний вид» — «Настроить». Если фишка не сработала, попробуйте специальное решение на GitHub которое называется “Add Polylang to WordPress Customizer” и добавляет выбор локали в инструмент настройщика шаблона.
Однако лично я комбинировал два других подходов:
- Непосредственно в самих файлах макета использовал условный оператор IF и функцию pll_current_language(), которая отдает двухбуквенный slug текущего установленного языка.
- Также создал новые блоки виджетов а затем в них добавлял соответствующий контент (как показано ниже).
Логично, что в первом случае у вас все данные “зашиты” в шаблон, и пользователь не сможет их легко менять в панели управления (в отличии от второго подхода). Иногда для решения задачи хватает и одного метода… Либо пробуйте скрипт с GitHub.
Виджеты, плагины, графика и др.
В этом подразделе приведу инфу по разным более мелким вопросам.
1. Во-первых, для виджетов разрешается выбирать язык отображения. Это удобно, т.к. можно показывать не просто разные тексты людям, а и вообще другие информационные блоки.
2. Некоторые модули, как например, плагин возрастного ограничения Age Gate имеют среди своих настроек список всех текстовых полей, отображаемых на сайте. Если при этом в верхней панели инструментов переключиться в нужную локаль, то получиться задать разные значения и там, и там.
3. Иногда приходится делать локализацию изображений дабы они корректно срабатывали для каких-то специфичных плагинов или тем. Если перейти в «Медиабиблиотеку», то там увидите такие же элементы управления, как и для страниц/заметок.
Важно! Теоретически, если перейти в параметры “Settings” для Polylang, то можно отключить локализацию изображений на сайте. Лично у меня эта фишка не сработала при решении одной определенной задачи – попробуйте, может в вашем случае получится.
Дополнительные фишки плагина Polylang
Напоследок еще пару советов, помогающих сделать мультиязычный сайт на нескольких языках в WordPress с применением данного решения:
- Во-первых, если вы использовали ранее WPML, то есть специальное решение для перехода к рассматриваемому модулю – называется оно “WPML to Polylang”.
- Когда кто-то заходит на определенную версию сайта, например, английскую (en), то в следующий раз юзеру она сразу будет открываться автоматически. Опять же в “Settings” видел параметр “Detect browser language” – можно попробовать его выключить.
- Что касается совместимости с WooCommerce, то в некоторых местах советуют премиальный официальный аддон. Бесплатные альтернативы я пока что не искал.
Итого. В общем, достаточно много инфы получилось собрать про настройку Polylang. Как по мне, это реально один из самых топовых плагинов для мультиязычного сайта в WordPress. Его описание в репозитории показывается достаточно много активных багов/правок, но пусть вас это не смущает – работа над ними активно ведется. По функциональности все реально круто + наглядно, что тоже немаловажно. Конечно, платная сборка обладает некоторыми дополнительными крутыми функциями, но пока мне и обычная вполне подходит.
Если у вас ест что добавить или вопросы – пишем под постом.
комментария 34 к статье “Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,87 из 7, голосов - 45)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Здравствуйте! Спасибо за инструкцию по установке. Установил, добавил второй язык сайта (англ), у меня сразу появилась вторая Главная страница на новом языке и я её заполнил и сохранил.
Однако, посмотреть страницу https://moi-sait/en/ я не могу, отображает ошибку 404. В чем может быть проблема?
Юрий, можно попробовать зайти в админке в Настройки — «Постоянные ссылки» и там сохранить еще раз всю информацию — у меня пару раз из-за этого глючило. Проверить настройки модуля — все ли правильно указано. Ну, и почистить кэш браузера максимально для сайта.
Добрый день, хотел уточнить если данный функционал у плагина , нужно что бы активный язык на сайте выделялся другим цветом . Может знаете как решить данную пробмему ?
Максим, у активного языка прописывается соответствующий стиль, насколько я помню — посмотрите HTML код. В таком случае выделить цветом можно через CSS.