Автоматический перевод содержимого WooCommerce с Polylang: практическое руководство

Диагностика проблемы: почему описания товаров WooCommerce не переводятся автоматически

Если вы используете Polylang для мультиязычности и столкнулись с тем, что описания товаров, атрибуты или другие данные WooCommerce не переводятся автоматически, вероятно, причина в том, что стандартных настроек Polylang для WooCommerce недостаточно. Поля, относящиеся к товарам, часто хранятся в метаданных, и Polylang не переводит их по умолчанию.

Как проверить, что перевод не работает

  • Перейдите в админку WordPress → Товары → Редактирование товара.
  • Переключитесь на второй язык в редакторе Polylang.
  • Убедитесь, что описание товара (краткое и полное) пустое или не переведено.
  • Проверьте атрибуты товара в переводе — если они на исходном языке, значит автоперевод не сработал.

Пошаговое решение: автоматический перевод описаний товаров с помощью хуков и Google Translate API

1. Подключение Google Translate API

Создайте аккаунт в Google Cloud, активируйте API Cloud Translation и получите API ключ.

2. Добавление функции автоперевода при создании перевода товара

Добавим код в functions.php вашей темы или в кастомный плагин для перевода описания товара при сохранении перевода Polylang.

function wpt_autotranslate_woocommerce_product_description($post_id, $lang) {
    // Проверяем, что это перевод товара
    if ('product' !== get_post_type($post_id)) {
        return;
    }

    // Получаем ID оригинального товара
    $original_id = pll_get_post($post_id, pll_default_language());
    if (!$original_id) {
        return;
    }

    // Получаем оригинальное описание и краткое описание
    $original_content = get_post_field('post_content', $original_id);
    $original_excerpt = get_post_field('post_excerpt', $original_id);

    // Переводим контент
    $translated_content = wpt_google_translate_text($original_content, pll_get_post_language($post_id));
    $translated_excerpt = wpt_google_translate_text($original_excerpt, pll_get_post_language($post_id));

    // Обновляем перевод
    wp_update_post([
        'ID' => $post_id,
        'post_content' => $translated_content,
        'post_excerpt' => $translated_excerpt
    ]);
}
add_action('pll_save_post', 'wpt_autotranslate_woocommerce_product_description', 10, 2);

// Функция отправки текста в Google Translate API
function wpt_google_translate_text($text, $target_lang) {
    if (empty($text)) return '';

    $apiKey = 'ВАШ_API_КЛЮЧ';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;

    $data = [
        'q' => $text,
        'target' => $target_lang
    ];

    $args = [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json'
        ],
        'method' => 'POST'
    ];

    $response = wp_remote_post($url, $args);

    if (is_wp_error($response)) {
        return $text; // Возвращаем оригинал при ошибке
    }

    $body = json_decode(wp_remote_retrieve_body($response), true);

    if (isset($body['data']['translations'][0]['translatedText'])) {
        return $body['data']['translations'][0]['translatedText'];
    }

    return $text;
}

3. Автоматический перевод атрибутов товаров

Атрибуты товаров WooCommerce — таксономии. Для их перевода используем следующий код:

function wpt_translate_woocommerce_attributes_taxonomy($term_id, $lang) {
    $original_term_id = pll_get_term($term_id, pll_default_language());
    if (!$original_term_id) {
        return;
    }

    $term = get_term($original_term_id);
    if (!$term) return;

    $translated_name = wpt_google_translate_text($term->name, $lang);
    $translated_slug = sanitize_title($translated_name);

    wp_update_term($term_id, $term->taxonomy, [
        'name' => $translated_name,
        'slug' => $translated_slug
    ]);
}
add_action('pll_save_term', 'wpt_translate_woocommerce_attributes_taxonomy', 10, 2);

Проверка результата после внедрения

  • Создайте новый товар на основном языке.
  • Добавьте описание и атрибуты.
  • Создайте перевод товара через Polylang.
  • После сохранения перевода проверьте, что описание и атрибуты перевелись автоматически.
  • Если переводы появились, значит интеграция работает.

Частые ошибки и как их исправить

  • API ключ Google Translate не работает или превышен лимит: проверьте настройки Google Cloud и квоты.
  • Перевод не срабатывает при сохранении перевода: убедитесь, что функция привязана к правильному хуку pll_save_post и получает правильные параметры.
  • Некорректное отображение перевода: иногда для правильного отображения нужно очистить кэш сайта и браузера.
  • Атрибуты товаров не переводятся: проверьте, что таксономии зарегистрированы для перевода в Polylang и функция подключена к хуку pll_save_term.

Практические советы по безопасности и производительности

  • Не храните API ключ Google Translate в открытом виде, используйте .env или wp-config.php для его хранения.
  • Ограничьте вызовы API, чтобы не превышать квоты и не создавать задержек при сохранении.
  • Кешируйте результаты перевода, если один и тот же текст переводится часто.
  • Используйте WP Cron для пакетного перевода большого количества товаров, чтобы не перегружать сервер.

Сравнение вариантов реализации автоперевода WooCommerce с Polylang

МетодПлюсыМинусыКомпромисс
Плагины автоперевода (WPML, TranslatePress) Простота настройки, поддержка WooCommerce Платные, могут замедлять сайт Использовать для крупных проектов
Кастомный автоперевод через Google Translate API + хуки Гибкость, контроль, бесплатный API с лимитами Нужно писать код, возможны ошибки Подходит для опытных разработчиков
Ручной перевод через Polylang Точный перевод, без ошибок API Трудозатратно, не масштабируемо Использовать для небольших каталогов
Автоматический перевод метаданных WooCommerce без потери качества
11.07.2026
Как создать собственный шорткод для перевода в WordPress
30.11.2025
Как автоматически перевести динамические сообщения WooCommerce в WordPress
21.07.2026
Как создать автоперевод шорткодов в WordPress
07.04.2026
Автоматический перевод атрибутов и фильтров товаров WooCommerce в WordPress
17.05.2026