Автоматический перевод атрибутов и фильтров товаров WooCommerce в WordPress

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

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

Основные симптомы проблемы:

  • Атрибуты отображаются на языке по умолчанию, несмотря на переключение языка.
  • Фильтры по атрибутам некорректно работают или показывают данные только на одном языке.
  • Переводы атрибутов не сохраняются в админке при использовании сторонних плагинов перевода.

Пошаговое решение: как автоматически перевести атрибуты и их значения

1. Используйте WPML или Polylang с поддержкой WooCommerce

Эти плагины поддерживают перевод таксономий WooCommerce (атрибутов). Убедитесь, что:

  • Атрибуты зарегистрированы как переводимые таксономии.
  • В настройках плагина включен перевод атрибутов.

2. Автоматический перевод с использованием DeepL API

Для автоматизации перевода можно подписаться на API DeepL и подключить его через хук сохранения термина таксономии WooCommerce:

add_action('edited_pa_color', 'auto_translate_woo_attribute', 10, 2); // pa_color - пример атрибута
function auto_translate_woo_attribute($term_id, $tt_id) {
    $term = get_term($term_id);
    if (!$term) return;

    // Проверяем текущий язык - для примера rus->eng
    if (get_locale() !== 'ru_RU') return;

    // Подключаем API DeepL (пример использования curl)
    $translated = deepl_translate($term->name, 'RU', 'EN');

    if ($translated) {
        // Сохраняем перевод как метаполе термина
        update_term_meta($term_id, 'translated_name_en', $translated);
    }
}

function deepl_translate($text, $source_lang, $target_lang) {
    $api_key = 'ВАШ_DEEPL_API_КЛЮЧ';
    $url = 'https://api-free.deepl.com/v2/translate';

    $data = [
        'auth_key' => $api_key,
        'text' => $text,
        'source_lang' => $source_lang,
        'target_lang' => $target_lang
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);
    if (isset($result['translations'][0]['text'])) {
        return $result['translations'][0]['text'];
    }
    return false;
}

Этот код автоматизирует перевод названий атрибутов при их редактировании в админке.

3. Отображение переведенных атрибутов на фронтенде

Для вывода переведенных значений в фильтрах и описаниях вариаций можно использовать фильтр woocommerce_attribute_label:

add_filter('woocommerce_attribute_label', 'display_translated_attribute_label', 10, 2);
function display_translated_attribute_label($label, $name) {
    $term = get_term_by('slug', $name, 'pa_' . $name);
    if (!$term) return $label;

    $translated = get_term_meta($term->term_id, 'translated_name_en', true);
    if ($translated && get_locale() === 'en_US') {
        return $translated;
    }
    return $label;
}

Аналогично можно вывести переводы значений атрибутов.

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

  • Создайте или отредактируйте атрибут в WooCommerce на основном языке.
  • Убедитесь, что после сохранения появился перевод в метаполях (через phpMyAdmin или плагин для просмотра метаполей).
  • Переключитесь на целевой язык сайта и проверьте, что название атрибута и значения в фильтрах отображаются переведёнными.
  • Проверьте работу вариаций товаров с этими атрибутами и корректность фильтрации.

Частые ошибки и способы их устранения

  • Перевод не сохраняется: Проверьте, правильно ли указан хук для вашего атрибута (например, edited_pa_size для атрибута size).
  • API DeepL возвращает ошибку: Проверьте валидность ключа, лимиты запросов и формат запроса.
  • Переводы не отображаются на фронтенде: Убедитесь, что фильтр woocommerce_attribute_label подключён и корректно возвращает переводы.
  • Конфликты с плагинами перевода: Иногда WPML или Polylang имеют собственные методы хранения переводов, поэтому комбинирование с ручным переводом может вызвать ошибки.

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

  • Кэшируйте результаты перевода, чтобы не вызывать API DeepL при каждом отображении.
  • Не храните ключ API в открытом доступе, используйте wp-config.php или переменные окружения.
  • Используйте асинхронные запросы или CRON-задачи для перевода больших объёмов атрибутов, чтобы не тормозить работу админки.
  • При использовании WPML или Polylang проверяйте их документацию по переводу таксономий, чтобы избежать дублирования данных.

Сравнение методов перевода атрибутов WooCommerce

МетодПлюсыМинусыПример
Ручной перевод через WPML/PolylangКонтроль качества, интеграция с плагиномТрудоёмко при большом количестве атрибутовWPML String Translation
Автоматический перевод через API DeepLЭкономит время, быстроПотенциальная потеря качества, зависит от APIКод из статьи
Комбинация: автоматический + ручнойБыстро и качественно после корректировкиТребует дополнительного контроляАвтоматический + правки вручную
Как добавить поддержку языков в собственном плагине WordPress
02.02.2026
Как сделать автоперевод контента WordPress на основе open source решений
23.01.2026
Как создать собственный переводчик для WordPress
14.11.2025
Автоматический перевод сообщений WooCommerce в отчётах о заказах
24.05.2026
Как использовать WPML для автоперевода страниц WordPress
09.02.2026