Меню
Как создать мультиязычный сайт на WordPress

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

Создание мультиязычного сайта на WordPress открывает доступ к международной аудитории и повышает конверсию. Особенно актуально это для компаний, которым требуется создание корпоративного сайта на WordPress с несколькими языковыми версиями и удобным управлением контентом. В этом гайде мы рассмотрим все способы реализации — от плагинов до ручной настройки с кодом.

Зачем нужен мультиязычный сайт

Мультиязычность позволяет:

  • Привлекать посетителей из разных стран
  • Улучшать SEO для региональных запросов
  • Повышать доверие пользователей
  • Увеличивать время пребывания на сайте

Способ 1: Использование плагина Polylang

Polylang — один из самых популярных бесплатных плагинов для создания мультиязычных сайтов.

Шаг 1. Установка плагина

Перейдите в админ-панель WordPress:

Плагины → Добавить новый → Поиск "Polylang" → Установить → Активировать

Шаг 2. Настройка языков

После активации перейдите в раздел Языки и добавьте нужные языки:

  1. Выберите язык из выпадающего списка
  2. Укажите порядок отображения
  3. Нажмите «Добавить новый язык»

Добавьте, например, русский и английский языки.

Шаг 3. Перевод контента

Для каждой записи или страницы появятся флаги языков. Создайте перевод, нажав на «+» напротив нужного языка.

Шаг 4. Добавление переключателя языков

Добавьте виджет переключателя через Внешний вид → Виджеты → Переключатель языков или используйте код в шаблоне:

<?php
if (function_exists('pll_the_languages')) {
    pll_the_languages(array(
        'show_flags' => 1,
        'show_names' => 1,
        'dropdown'   => 0
    ));
}
?>

Способ 2: Плагин WPML

WPML — мощное платное решение с расширенным функционалом.

Шаг 1. Установка и настройка

После покупки и установки пройдите пошаговый мастер настройки:

  1. Выберите язык по умолчанию
  2. Добавьте дополнительные языки
  3. Настройте формат URL (папки, поддомены или параметры)

Шаг 2. Формат URL

WPML предлагает три варианта структуры URL:

site.com/ru/ — языковые папки
ru.site.com/ — поддомены
site.com/?lang=ru — параметр запроса

Рекомендуется использовать языковые папки для лучшего SEO.

Способ 3: Ручная реализация без плагинов

Для разработчиков подойдёт способ с использованием файлов локализации.

Шаг 1. Подготовка темы

В файле functions.php добавьте поддержку локализации:

function my_theme_setup() {
    load_theme_textdomain('mytheme', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'my_theme_setup');

Шаг 2. Использование функций перевода

Оберните все текстовые строки в функции перевода:

// Простой вывод
_e('Добро пожаловать', 'mytheme');

// Возврат строки
$text = __('Наши услуги', 'mytheme');

// С множественным числом
printf(
    _n('%d товар', '%d товара', $count, 'mytheme'),
    $count
);

Шаг 3. Создание файлов перевода

Используйте программу Poedit для создания файлов .po и .mo:

  1. Откройте Poedit
  2. Создайте новый каталог из POT-файла
  3. Переведите строки
  4. Сохраните в папку /languages/ с именами mytheme-en_US.po и mytheme-en_US.mo

Шаг 4. Переключение языка через код

Создайте функцию определения языка по URL:

function detect_language() {
    $lang = 'ru_RU'; // по умолчанию
    
    $uri = $_SERVER['REQUEST_URI'];
    if (strpos($uri, '/en/') !== false) {
        $lang = 'en_US';
    }
    
    switch_to_locale($lang);
    return $lang;
}
add_action('init', 'detect_language');

Шаг 5. Перевод меню навигации

Для перевода пунктов меню можно использовать плагин Polylang (как это сделать описано ниже), либо прописывать пункты меню прямо в шаблоне темы назначив перевод каждому пункту меню.

Настройка SEO для мультиязычного сайта

1. Добавим hreflang

Добавьте теги hreflang в <head> для правильной индексации:

function add_hreflang_tags() {
    ?>
    <link rel="alternate" hreflang="ru" 
          href="https://site.com/ru<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <link rel="alternate" hreflang="en" 
          href="https://site.com/en<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <link rel="alternate" hreflang="x-default" 
          href="https://site.com<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <?php
}
add_action('wp_head', 'add_hreflang_tags');

Это один из элементов технического SEO, который помогает поисковым системам правильно определить языковые версии страниц.

2. Настройка карты сайта

Убедитесь, что sitemap.xml включает страницы всех языков. Большинство плагинов (Yoast SEO, Rank Math) поддерживают интеграцию с Polylang и WPML.

Перевод меню навигации

Для перевода меню в Polylang создайте отдельные меню для каждого языка:

register_nav_menus(array(
    'primary_ru' => 'Главное меню (RU)',
    'primary_en' => 'Главное меню (EN)'
));

Затем выводите нужное меню в зависимости от языка:

$current_lang = pll_current_language();
wp_nav_menu(array(
    'theme_location' => 'primary_' . $current_lang,
    'container'      => 'nav'
));

Рекомендации по выбору способа

СпособКому подходитСложность
PolylangМалый и средний сайтНизкая
WPMLКрупные проектыСредняя
РучнаяРазработчикамВысокая

Частые ошибки

  1. Отсутствие hreflang — приводит к неправильной индексации
  2. Дублирование контента — используйте канонические ссылки
  3. Забытый перевод строк темы — проверяйте все шаблоны
  4. Разные URL для одного контента — настройте редиректы

Заключение

Запуск мультиязычного сайта на WordPress — не такая уж страшная задача, как кажется на первый взгляд, особенно если под рукой есть проверенные плагины вроде Polylang или WPML. Даже если вы только начинаете разбираться в сайтостроении, Polylang хорош тем, что бесплатен и довольно понятен: добавить еще один язык — это, по сути, пара щелчков мышью. Конечно, если вы закалённый разработчик и привыкли держать всё под контролем (вплоть до каждой мелочи), всегда остается вариант ручной настройки — там можно выкроить максимально кастомную архитектуру, но времени уйдёт в разы больше.

Если проект содержит сложную логику, несколько языков, личные кабинеты или нестандартные интеграции, лучше заранее продумать архитектуру и рассмотреть разработку сложного сайта.

Есть один важный момент, про который многие почему-то забывают — SEO в многозначном сайте работает по-своему. Например, та самая загадочная штука hreflang (это тег в коде страницы), управляет тем, какой язык показывать пользователю из конкретной страны. Не проставишь этот тег — и рискуешь получить испанскую версию для жителей Канады или наоборот. Плюс структура адресов страниц тоже влияет на то, как сайт воспринимает поисковик: например, сайт.com/en/ приветствуется больше, чем простой перевод текста без смены ссылки.

Ну и совет из практики: как бы ни хотелось запустить сайт скорее, не поленитесь в последний раз пройтись по всем языковым версиям — у меня лично бывали случаи, когда какая-нибудь кнопка “назад” уводила пользователя то ли на другую языковую страницу, то ли вообще домой (и он терялся навсегда). Перепроверьте переводы и навигацию хотя бы глазами “незнакомца” — это экономит тонны времени и нервов потом.