Налаштування плагіна WPML для багатомовної WordPress
WPML (WordPress Multilingual Plugin) — платний плагін для створення багатомовних сайтів WordPress. Використовується на сотнях тисяч сайтів і є де-факто стандартом для серйозних багатомовних проектів з підтримкою WooCommerce.
Компоненти WPML
WPML складається з кількох плагінів, які встановлюються окремо:
- WPML Multilingual CMS — ядро, без якого нічого не працює
- WPML String Translation — переклад рядків теми, плагінів, віджетів
- WPML Translation Management — робочі процеси перекладу з призначенням перекладачів
- WPML Media Translation — окремі зображення для різних мов
- WooCommerce Multilingual — підтримка товарів, атрибутів, варіацій, кошика
Мінімальний набір: CMS + String Translation. Для інтернет-магазину додайте WooCommerce Multilingual.
Мовна структура URL
WPML підтримує три варіанти:
1. Різні піддомени: ru.example.com / en.example.com
2. Підпапки: example.com/ru/ / example.com/en/
3. Різні домени: example.ru / example.com
Підпапки — найпоширеніший варіант. Налаштовується у WPML → Languages → Language URL format.
Створення перекладів контенту
Переклади створюються двома способами:
Вручну: у редакторі посту з'являється блок «Translation» з кнопками для кожної мови. Натиснувши «+» або олівець, відкривається редактор перекладу з оригіналом та перекладом поруч.
Через Translation Management: пости відправляються до черги перекладів, призначаються перекладачам (локальним або через WPML Translation Services), повертаються з перекладами.
Переклад рядків теми та плагінів
WPML → Theme and Plugins Localization
→ Виберіть тему → Scan for strings
Після сканування всі рядки з'являються у String Translation для ручного перекладу або завантаження через файли .po/.mo.
Рядки з вставкою JavaScript через wp_localize_script скануються автоматично, починаючи з WPML 4.5.
Налаштування WooCommerce
Після установки WooCommerce Multilingual:
- WPML → WooCommerce Multilingual → Products — перекладати кожен товар окремо або синхронізувати поля
- Currencies — можна встановити різні валюти для різних мов (EUR для німецької, GBP для англійської)
- Shipping — способи доставки перекладаються окремо
Таблиця відповідностей перекладів: wpml_translations зберігає trid (translation group id), language_code, element_id (post_id), element_type (post/post_type).
Програмний доступ до перекладів
// Отримати ID перевода посту на конкретну мову
$translated_id = apply_filters( 'wpml_object_id', $original_post_id, 'post', true, 'en' );
// Отримати поточну мову
$current_language = apply_filters( 'wpml_current_language', null );
// Перемикнути мову програмно
do_action( 'wpml_switch_language', 'de' );
$german_posts = get_posts( [...] );
do_action( 'wpml_switch_language', null ); // відновити
Синхронізація полів
У WPML → Settings → Custom Fields Translation задається, що відбувається з користувацькими полями посту при перекладі:
-
Copy— скопіювати значення до перекладу (для числових полів, дат) -
Copy once— скопіювати лише при першоначальному створенні перекладу -
Translate— поле перекладається незалежно -
Ignore— не копіювати
Поля ACF визначаються автоматично через інтеграцію з ACF.
Типові проблеми
Дублювання контенту в пошуку — якщо карта сайту генерується Yoast без урахування мов. Рішення: увімкнути підтримку WPML у Yoast у Yoast SEO → Integrations або використовувати WPML XML Sitemap.
Порожні переклади у REST API — при запиті до /wp-json/wp/v2/posts повертаються лише пости поточної мови. Для явного вказання мови: додайте параметр ?lang=en до запиту (WPML додає цей параметр).
Повільний сайт — WPML додає JOIN до кожного WP_Query. На великих базах (10k+ постів, 3+ мов) це помітно. Рішення: індекси на wpml_translations.trid, кеш об'єктів (Redis/Memcached).
Тимчасові рамки
Установка та налаштування мов, переклад існуючого контенту до 50 сторінок — 2–3 робочі дні. Магазин WooCommerce, користувацькі типи записів, налаштування Translation Management з перекладачами — 4–6 днів.







