wplangs.ru wordpress WP Langs

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

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

Атрибуты и характеристики товаров в WooCommerce часто остаются непереведёнными при использовании автоматических переводчиков или даже ручного перевода. Это происходит из-за того, что атрибуты хранятся в таксономиях и метаданных, которые не всегда обрабатываются стандартными плагинами перевода. В результате на многоязычных сайтах появляется несогласованный или неполный интерфейс для пользователя.

Для диагностики проблемы проверьте, как именно выводятся атрибуты на фронтенде и в админке, и сравните их перевод для разных языков. Используйте следующие инструменты:

  • WPML String Translation или Polylang String Translation — проверить, видны ли атрибуты в списке переводимых строк.
  • Отладка с помощью var_dump(get_the_terms($product_id, 'pa_color')); для конкретного атрибута.
  • Проверка таблиц базы данных wp_woocommerce_attribute_taxonomies и wp_terms на наличие переведённых терминов.

Пошаговое решение автоматического перевода атрибутов WooCommerce

1. Подключение API перевода (Google Translate, DeepL)

Для автоматизации перевода атрибутов нужно использовать API внешних сервисов. Пример функции для перевода текста через Google Translate API:

function translate_text_google($text, $target_lang) {
    $apiKey = 'ВАШ_GOOGLE_API_KEY';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;
    $data = [
        'q' => $text,
        'target' => $target_lang,
    ];
    $response = wp_remote_post($url, [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
    ]);
    if (is_wp_error($response)) {
        return $text;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    return $body['data']['translations'][0]['translatedText'] ?? $text;
}

2. Получение списка атрибутов и терминов для перевода

WooCommerce хранит атрибуты в таблице wp_woocommerce_attribute_taxonomies, а термины - в таксономиях с префиксом pa_. Для перевода нужно получить все термины атрибутов и применить к ним перевод.

$attribute_taxonomies = wc_get_attribute_taxonomies();
foreach ($attribute_taxonomies as $attribute) {
    $taxonomy = wc_attribute_taxonomy_name($attribute->attribute_name);
    $terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
    foreach ($terms as $term) {
        // Здесь будет логика перевода $term->name
    }
}

3. Создание функции обновления переведённых терминов

Создадим функцию, которая обновит название термина и описание на нужном языке. Для мультиязычности можно использовать плагин Polylang или WPML, где переводы терминов хранятся отдельно.

function update_term_translation($term_id, $translated_name, $translated_description = '') {
    wp_update_term($term_id, '', [
        'name' => $translated_name,
        'description' => $translated_description,
    ]);
}

Для WPML можно использовать API icl_register_string и icl_t, для Polylang — функции pll_get_term, pll_set_term_language и создание переводов терминов.

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

Проверьте, что на фронтенде в интерфейсе товара атрибуты отображаются на нужном языке. Сделайте переключение языка и убедитесь, что:

  • Названия атрибутов и терминов переведены.
  • Описание атрибутов (если используется) тоже отображается корректно.
  • В админке WooCommerce и в списках терминов переводы видны и редактируются.

Для теста можно использовать код:

$terms = get_the_terms($product_id, 'pa_color');
foreach ($terms as $term) {
    echo 'Атрибут цвет: ' . esc_html($term->name) . '<br>';
}

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

  • Переводы не отображаются на фронтенде — проверьте, что тема и WooCommerce выводят атрибуты через стандартные функции, а не через кастомный код, который не учитывает локализацию.
  • Термины не переводятся, потому что используются в одном языке — при использовании WPML или Polylang для терминов нужно создавать переводы терминов, а не просто обновлять одно имя.
  • API переводчика возвращает ошибку — проверьте корректность ключа API, лимиты запросов, формат запроса и обработку ошибок.

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

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

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

МетодПлюсыМинусыКогда использовать
Ручной перевод через WPML/PolylangТочный, полный контрольДолго, трудоёмкоНебольшие сайты, важна точность
Автоматический перевод через API (Google, DeepL)Быстро, масштабируемоЗависит от качества API, возможны ошибкиБольшие каталоги, частые обновления
Использование готовых плагинов перевода WooCommerceПростота внедренияМожет не поддерживать все атрибутыСтандартные сайты без кастомных атрибутов
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее