Зачем нужен многоязычный сайт и какие задачи он решает
В современном мире все больше сайтов ориентируются на международную аудиторию. Многоязычный сайт помогает расширить охват, повысить удобство для пользователей из разных стран и увеличить трафик. Особенно актуально это для интернет-магазинов, корпоративных порталов и блогов с глобальной тематикой.
При создании многоязычного сайта важно не только перевести контент, но и грамотно организовать структуру, SEO и пользовательский интерфейс для разных языков. В WordPress есть несколько подходов для реализации этой задачи — от использования плагинов до кастомных решений на уровне кода.
В этой статье мы подробно рассмотрим, как создать многоязычный сайт на WordPress, какие плагины лучше использовать, а также приведем примеры кода для настройки переключения языков и управления переводами.
Выбор плагина для многоязычности: обзор популярных решений
Polylang — бесплатный и простой в использовании
Polylang позволяет создавать многоязычные сайты без нагрузки на сервер и сложной настройки. Он интегрируется с редактором Gutenberg и поддерживает перевод записей, таксономий, меню и виджетов.
Особенности Polylang:
- Поддержка произвольных типов записей и таксономий.
- Переключатели языков в меню и виджетах.
- SEO-дружественные URL с языковыми префиксами.
- Совместимость с большинством тем и плагинов.
Для установки достаточно зайти в админпанель WordPress, перейти в раздел «Плагины» и найти Polylang. После активации нужно добавить языки и настроить переключение.
WPML — мощный коммерческий плагин с расширенными возможностями
Если требуется профессиональное решение с поддержкой сложных структур и интеграцией с WooCommerce, WPML — отличный вариант. Он обеспечивает полный контроль над переводами, поддерживает автоматический перевод и совместим с большинством популярных плагинов.
Основные плюсы WPML:
- Поддержка перевода пользовательских полей и строк темы.
- Инструменты для командной работы переводчиков.
- Поддержка мультиязычного SEO.
- Интеграция с WooCommerce Multilingual.
Однако WPML — платный плагин, что может быть важным фактором при выборе.
TranslatePress — визуальный подход к переводу
TranslatePress позволяет переводить сайт прямо с фронтенда, что удобно для визуального контроля. В бесплатной версии доступен перевод контента вручную, а в PRO — автоматический перевод с помощью Google Translate или DeepL.
Преимущества TranslatePress:
- Интуитивный интерфейс перевода.
- Поддержка всех типов контента, включая виджеты и меню.
- Совместимость с WooCommerce и другими плагинами.
- Настраиваемые переключатели языков.
Практические советы по организации структуры многоязычного сайта
Подходы к URL и SEO
Правильная организация URL — ключевой момент для SEO и удобства пользователей. Существуют три основных подхода:
- Поддомены (ru.example.com, en.example.com) — подходят для крупных проектов с отдельными командами.
- Поддиректории (example.com/ru/, example.com/en/) — оптимальный вариант для большинства сайтов, удобен для SEO и проще в администрировании.
- URL-параметры (?lang=ru) — наименее предпочтительный вариант, плохо индексируется поисковиками.
Плагины типа Polylang и WPML обычно позволяют гибко настраивать этот аспект.
Перевод контента и пользовательских элементов
Для полноценного многоязычного сайта важно перевести не только записи и страницы, но и меню, виджеты, пользовательские поля и даже строки темы. Многие популярные темы поддерживают функцию локализации, но если требуется перевести нестандартные элементы, придется использовать специальные функции плагинов или писать свой код.
Например, для перевода строк в теме можно использовать функцию __() и подключать файлы перевода (.po/.mo). Плагины WPML и TranslatePress позволяют работать с этими строками через интерфейс.
Пример кода для создания кастомного переключателя языков на сайте
Если нужно сделать собственный переключатель языков, можно использовать API плагина Polylang. Вот пример функции, которая выводит список доступных языков с текущим активным:
function wptem_show_language_switcher() {
if (function_exists('pll_get_the_languages')) {
$languages = pll_get_the_languages(array('hide_if_empty' => 0));
echo '<ul class="wptem-lang-switcher">';
foreach ($languages as $lang) {
$class = $lang['current_lang'] ? 'active' : '';
echo '<li class="' . $class . '">'
. '<a href="' . esc_url($lang['url']) . '" hreflang="' . esc_attr($lang['slug']) . '">'
. esc_html($lang['name']) . '</a></li>';
}
echo '</ul>';
}
}Этот код можно вставить в файл functions.php вашей темы или в отдельный плагин. После вызова функции wptem_show_language_switcher() в нужном месте шаблона появится удобный список языков для переключения.
Как перевести пользовательские поля и таксономии
Многоязычные сайты часто используют пользовательские поля (custom fields) и таксономии (категории, теги, кастомные таксономии). Для их перевода:
- В Polylang для пользовательских полей нужно включить поддержку в настройках плагина.
- WPML предоставляет модуль String Translation для перевода строк и поддержку custom fields.
- Если переводить нужно вручную, можно написать фильтры для вывода значения поля в зависимости от языка.
Пример фильтра для пользовательских полей с префиксом языка:
function wptem_get_custom_field_by_language($value, $post_id, $field_name) {
$lang = function_exists('pll_current_language') ? pll_current_language() : 'en';
$localized_field = $field_name . '_' . $lang;
$localized_value = get_post_meta($post_id, $localized_field, true);
return $localized_value ? $localized_value : $value;
}Этот код позволяет хранить значения пользовательских полей с языковыми суффиксами и выводить нужное значение на сайте.
Советы по работе с переводчиками и автоматизацией
Для крупных проектов важно организовать понятный процесс перевода. WPML и TranslatePress поддерживают интеграцию с сервисами машинного перевода и позволяют назначать переводчиков на разные языки.
Автоматический перевод экономит время, но требует постредактирования для качества. В то же время ручной перевод обеспечивает точность и адекватность контента, особенно в узкоспециализированных темах.
Для удобства работы с переводчиками можно использовать экспорт и импорт файлов переводов (.po/.mo), а также специальные плагины для управления строками.