Як зробити багатомовний сайт на WordPress безкоштовно

Як зробити багатомовний сайт на WordPress безкоштовно

Зробити сайт двома або більше мовами можна без платних підписок і зовнішніх сервісів перекладу. Безкоштовний Polylang створює для кожної мови окремі URL, зв’язує переклади між собою та виводить hreflang. Нижче повний порядок налаштування, SEO-нюанси й типові помилки.

Чому Polylang, а не хмарні перекладачі?

  • Усе лежить у вашій базі даних. Переклади зберігаються як звичайні записи WordPress. Хмарні рішення на кшталт Weglot підвантажують переклад із чужих серверів, що додає запити й гальмує сторінки.
  • Чиста SEO-структура. У кожного перекладу свій реальний URL (/uk/сторінка/), а не підміна тексту скриптом. Пошуковик індексує те, що бачить користувач.
  • Легке зв’язування записів. Переклад прив’язується до оригіналу в один клік, а перемикач мови веде на відповідну сторінку, а не на головну.
  • Сумісність. Працює з блоковим редактором. З Elementor та іншими білдерами працює через безкоштовний конектор Polylang Connect for Elementor, який зробила стороння команда (Polylang не розробляв окремої підтримки Elementor).
  • Зображення перекладаються безкоштовно. Кожному зображенню можна задати мову та власні alt, підпис і опис.
  • Кількість мов не обмежена.

Які функції в Polylang платні?

У панелі безкоштовної версії ви побачите три модулі з позначкою Pro:

МодульЩо робить
Розділяти частини посиланьоднаковий slug у перекладів різними мовами
Перекладати частини посиланняпереклад slug типів записів і таксономій
Машинний перекладDeepL

Для інтернет-магазину знадобиться ще окреме платне доповнення Polylang for WooCommerce. Для блогу, каталогу та сайту послуг безкоштовної версії вистачає.

Пошаговий гайд по налаштуванню

Крок 1. Підготовка

  1. Зробіть бекап.
  2. У Налаштування → Постійні посилання ввімкніть «гарні» посилання (не «прості» ?p=123).
  3. Визначте мову за замовчуванням: вона відкриватиметься без префікса в адресі.

Крок 2. Встановлення та мови

Встановіть Polylang із каталогу плагінів і пройдіть майстер налаштування: додайте мови та ввімкніть переклад медіа. Далі відкрийте Мови → Мови й позначте мову за замовчуванням.

Якщо плагін ставиться на робочий сайт, з’явиться сповіщення про записи, сторінки, рубрики або мітки без мови. Натисніть на посилання, щоб призначити їм мову за замовчуванням. Без цього старий контент зникне з сайту: записи без мови не проходять мовний фільтр.

Крок 3. Структура URL

Відкрийте Мови → Налаштування → Модифікації URL. Доступні три способи визначати мову:

  • Каталог: site.com/en/my-post/
  • Субдомен: en.site.com/my-post/
  • Окремий домен для кожної мови

Для більшості сайтів найкращий варіант: каталог. Він не потребує DNS і окремих сертифікатів, а вага домену залишається спільною. Рекомендований набір:

  • мова з назви каталогу;
  • приховати код мови для мови за замовчуванням (основна мова на корені домену, інші в /uk/, /en/);
  • видалити /language/ з посилань (інакше архіви матимуть вигляд /language/en/, а головна мовної версії стане site.com/language/en/).

Якщо після зміни структури сторінки віддають 404, зайдіть у Налаштування → Постійні посилання й натисніть «Зберегти».

Крок 4. Головна сторінка та сторінка блогу

Саме тут найчастіше ламається адреса головної: замість /en/ виходить /en/home/. Порядок такий:

  1. Створіть головну кожною мовою та зв’яжіть їх як переклади (колонка мов у списку сторінок або блок «Мови» в редакторі).
  2. Створіть сторінку блогу кожною мовою й теж зв’яжіть переклади.
  3. Відкрийте Налаштування → Читання, виберіть «Статична сторінка» та вкажіть головну і сторінку записів. Polylang не прийме сторінку, у якої немає перекладів на всі мови.
  4. Поверніться в Мови → Налаштування → Модифікації URL. Опція «URL головної сторінки містить код мови замість назви сторінки» з’являється лише після ввімкнення статичної головної. Увімкніть її.

Результат: site.com/uk/ замість site.com/uk/home/. Попередня адреса з назвою сторінки після ввімкнення опції перестає відкриватися (404). На новому сайті це не заважає. На робочому перевірте, які старі адреси вже в індексі.

Slug сторінок різними мовами в безкоштовній версії має бути унікальним. Якщо задати однаковий, WordPress допише -2. Задавайте slug вручну: blog і blog-uk.

Крок 5. Переклад записів, сторінок і рубрик

  • У списку записів у кожного рядка є колонка мов: плюс створює переклад, олівець відкриває наявний.
  • Рубрики й мітки перекладаються так само, через Записи → Рубрики.
  • Для довільних типів записів і таксономій увімкніть переклад у Мови → Налаштування.
  • Синхронізація (Мови → Налаштування → Синхронізація) копіює між перекладами мініатюру, порядок сторінок, користувацькі поля та інші дані. Вмикайте лише те, що має бути однаковим.

Картинки. Увімкніть переклад медіа в налаштуваннях. У медіатеці в файлу з’явиться переклад, якому можна задати власні alt і підпис. Для SEO це корисно: alt мовою сторінки працює для пошуку за картинками.

Крок 6. Меню та перемикач мови

  1. Створіть окреме меню для кожної мови.
  2. У Зовнішній вигляд → Меню на вкладці «Керування розташуваннями» призначте меню кожній мові.
  3. Перемикач додається як пункт меню «Перемикач мов» або як віджет/блок. Налаштуйте показ назв чи прапорців і приховування поточної мови.

Якщо мова не відображається в перемикачі, у неї немає жодного опублікованого запису або сторінки: Polylang приховує такі мови, щоб уникнути 404.

Крок 7. Рядки інтерфейсу

Назва сайту, підзаголовок, заголовки віджетів і рядки, які реєструє тема, перекладаються в Мови → Переклади (рядки). Рядки самої теми, не зареєстровані через Polylang, перекладаються файлами .po/.mo (наприклад, плагіном Loco Translate).

SEO: що робить Polylang і що потрібно доопрацювати?

З коробки в кожної сторінки є свій URL, атрибут lang і теги hreflang. Перевірте після запуску, що в sitemap потрапили URL усіх мов, а в кожного перекладу своє канонічне посилання.

Неідеальний момент: hreflang без регіону. Polylang виводить лише мову:

<link rel="alternate" href="https://example.com/uk/" hreflang="uk" />
<link rel="alternate" href="https://example.com/" hreflang="ru" />

Якщо сайт орієнтований на країну, краще вказати мову та регіон:

<link rel="alternate" href="https://example.com/" hreflang="ru-UA" />
<link rel="alternate" href="https://example.com/uk/" hreflang="uk-UA" />

Polylang це не вміє без коду, бо не знає, який регіон ви таргетуєте, але для цього є фільтр pll_rel_hreflang_attributes. Він приймає масив «код мови → URL». Додайте код у mu-плагін або в плагін для сніпетів: у документації Polylang сказано, що фільтр потрібно підключати в кастомному плагіні, оскільки він зазвичай спрацьовує до завантаження теми.

/**
 * Гео-таргетинг hreflang.
 * [виберіть локаль]: у $map ліворуч код мови в Polylang, праворуч мова-КРАЇНА.
 */
add_filter( 'pll_rel_hreflang_attributes', function ( $hreflangs ) {

    $map = [
        'ru' => 'ru-UA', // [виберіть локаль]
        'uk' => 'uk-UA', // [виберіть локаль]
    ];

    foreach ( $map as $from => $to ) {
        if ( isset( $hreflangs[ $from ] ) ) {
            $hreflangs[ $to ] = $hreflangs[ $from ];
            unset( $hreflangs[ $from ] );
        }
    }

    // Необов'язково: x-default на потрібну версію
    // $hreflangs['x-default'] = $hreflangs['ru-UA'];

    return $hreflangs;
} );

Після додавання відкрийте вихідний код сторінки й перевірте, що старих тегів (hreflang="ru", hreflang="uk") не залишилося, а регіон указано в усіх мовах. Очистьте кеш. Регіональні коди мають відповідати ISO 3166-1 (UA, PL, DE тощо). Кожна мовна версія має посилатися на всі інші та на саму себе.

Про x-default: Polylang додає його лише на головну, яку автоматично перенаправляють. Якщо потрібен x-default на всіх сторінках, розкоментуйте рядок у коді.

Часті проблеми

  • Адреса головної /en/home/: увімкніть статичну головну, потім опцію з кодом мови в Модифікаціях URL (крок 4).
  • Записи зникли після встановлення: їм не призначена мова, призначте мову за замовчуванням.
  • Сторінки дають 404 після зміни структури URL: пересхороніть постійні посилання.
  • Slug отримує -2: однакові slug у перекладів доступні лише в Pro, задавайте унікальні вручну.
  • Мова не видна в перемикачі: немає опублікованого контенту цією мовою.
  • Частина інтерфейсу теми не перекладається: використовуйте .po/.mo або Loco Translate.
  • Дублі hreflang: фільтр вище має замінювати наявні ключі (unset), а не лише додавати нові.

Залишилися питання щодо налаштування Polylang, структури URL або hreflang? Отримайте консультацію в нас, і ми розберемо ваш сайт і підкажемо рішення.

Діана
Незалежний експерт

SEO. Автор публікацій про гаджети та технології.

Залишити коментар