Автоматический перевод сообщений WooCommerce в отчётах о заказах

Проблема с переводом сообщений WooCommerce в письмах отчёта о заказе

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

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

Чтобы понять, почему сообщения в отчётах о заказах не переводятся, выполните следующие шаги:

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

Пошаговое решение: автоматический перевод сообщений в письмах WooCommerce

1. Добавление поддержки перевода кастомных сообщений

Если сообщения добавляются вручную, оберните их в функцию __() с указанием текстового домена WooCommerce:

echo __('Ваш заказ успешно принят', 'woocommerce');

2. Использование фильтра woocommerce_email_order_meta_fields для добавления автоперевода

Если вы добавляете собственные поля в письма, используйте фильтр с вызовом функций перевода:

add_filter('woocommerce_email_order_meta_fields', function($fields, $sent_to_admin, $order) {
    $fields['custom_message'] = array(
        'label' => __('Статус заказа', 'woocommerce'),
        'value' => __('Обработка завершена', 'woocommerce'),
    );
    return $fields;
}, 10, 3);

3. Интеграция с автопереводчиками (пример с DeepL API)

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

function deepl_translate_text($text, $target_lang = 'RU') {
    $api_key = 'ваш_api_ключ';
    $url = 'https://api-free.deepl.com/v2/translate';
    $data = http_build_query(array(
        'auth_key' => $api_key,
        'text' => $text,
        'target_lang' => strtoupper($target_lang)
    ));

    $options = array(
        'http' => array(
            'method'  => 'POST',
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'content' => $data,
            'timeout' => 10
        )
    );

    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    if ($result === FALSE) return $text;

    $json = json_decode($result, true);
    return $json['translations'][0]['text'] ?? $text;
}

Вызовите эту функцию в хуках, где формируются сообщения для писем.

4. Пример интеграции автоперевода в фильтр WooCommerce письма

add_filter('woocommerce_email_subject_customer_processing_order', function($subject, $order) {
    $translated = deepl_translate_text($subject, 'RU');
    return $translated;
}, 10, 2);

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

  • Создайте тестовый заказ в магазине и дождитесь отправки почтового уведомления.
  • Проверьте, что все сообщения и кастомные поля в письме отображаются на нужном языке.
  • Используйте инструменты разработчика браузера для проверки исходного кода письма.
  • При интеграции с API DeepL проверьте логи запросов и ответы сервера для отладки.

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

  • Кэширование старых переводов: Очистите кэш сайта и кеш почтовых шаблонов.
  • Отсутствие текстового домена: Все пользовательские строки должны быть обёрнуты в функции локализации с правильным доменом 'woocommerce'.
  • Неправильная обработка API: Проверяйте ошибки API, ограничение по количеству запросов, таймауты.
  • Вывод текста напрямую: Не выводите текст без локализации, чтобы избежать проблем с переводом.

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

  • Храните API ключи для автоперевода в wp-config.php или в защищённых настройках, не в открытом коде.
  • Используйте transient API для кэширования результатов перевода, чтобы снизить количество запросов к API и ускорить генерацию писем.
  • Ограничьте длину и количество текстов для перевода, чтобы не превысить квоты и не задерживать отправку писем.
  • Проводите тестирование на staging-сервере перед применением на живом сайте.

Сравнение способов перевода сообщений WooCommerce в письмах

МетодПреимуществаНедостаткиПример
Текстовые домены и локализацияПростота, поддержка сообществомНе работает с кастомными динамическими текстами__() и _e()
Хуки и фильтры WooCommerceГибкость, локализация кастомных полейНужны знания API WooCommercewoocommerce_email_order_meta_fields
Автоперевод через API (DeepL, Google)Автоматизация, поддержка любых текстовЗависимость от внешних сервисов, стоимостьПример кода с DeepL выше
Как использовать WPML для перевода производительных тем WordPress
06.12.2025
Как автоматизировать перевод динамического контента WordPress
14.04.2026
Как добавить поддержку языков в собственном плагине WordPress
02.02.2026
Автоматический перевод описаний товаров WooCommerce: пошаговое руководство
26.04.2026
Как настроить автоперевод контента WordPress с использованием GPT-4
17.12.2025