Диагностика проблемы: автоперевод описаний товаров не работает или перевод некорректен
В плагинах автоперевода для WooCommerce часто возникают проблемы, связанные с тем, что описания товаров не переводятся или переводятся частично. Причины могут быть в неправильной интеграции плагина автоперевода с WooCommerce, отсутствии поддержки произвольных полей и метаданных, либо в том, что переводчик не обрабатывает HTML-контент описания.
Для начала проверим, что именно не работает:
- Переводится ли краткое описание (excerpt) товара?
- Переводится ли полное описание (content) товара?
- Переводятся ли дополнительные поля и атрибуты товара?
- Показывает ли плагин автоперевода ошибки в логах?
Проверка осуществляется через фронтенд сайта (выбор другого языка) и через консоль браузера (ошибки JavaScript). Также полезно проверить, что в базе данных есть переводы в таблицах wp_icl_translations (для WPML) или аналогичных для других плагинов.
Пошаговое решение для корректного автоперевода описаний товаров WooCommerce
Шаг 1. Используйте плагин с поддержкой WooCommerce
Не все плагины автоперевода корректно работают с WooCommerce. Для гарантии совместимости рекомендуем использовать WPML или Polylang с дополнениями WooCommerce Multilingual. Если хотите использовать автоперевод на базе API (например, DeepL или Google Translate), убедитесь, что плагин умеет обрабатывать custom fields и HTML.
Шаг 2. Подключите перевод к нужным полям
WooCommerce хранит описание товара в стандартных полях post_content (полное описание) и post_excerpt (краткое). Если автоперевод не срабатывает, нужно вручную прописать обработку этих полей в коде плагина или в кастомных функциях.
Пример фильтра для автоперевода с использованием WPML:
add_filter('wpml_translate_single_string', function($translation, $string, $name, $language) {
if ($name === 'woocommerce_product_description') {
// здесь вызываем API автоперевода или возвращаем перевод из базы
return my_autotranslate_function($string, $language);
}
return $translation;
}, 10, 4);Шаг 3. Автоматизируйте перевод при сохранении товара
Для автоматического запуска перевода описания при сохранении товара используйте хук save_post_product. Например:
add_action('save_post_product', function($post_id) {
if (wp_is_post_revision($post_id)) return;
$post = get_post($post_id);
$translated_content = my_autotranslate_function($post->post_content, 'ru');
// Сохраняем перевод в нужное место, например, метаполе или WPML
update_post_meta($post_id, '_translated_content_ru', $translated_content);
});Шаг 4. Добавьте поддержку перевода HTML в описании
Описания товаров часто содержат HTML-теги, изображения, списки. Автопереводчики могут ломать разметку. Чтобы этого избежать, перед отправкой на перевод очистите HTML теги, а после перевода восстановите структуру.
Пример упрощённой функции очистки HTML перед переводом:
function prepare_html_for_translation($html) {
// Убираем теги, оставляем только текст
return wp_strip_all_tags($html);
}После получения перевода вставляйте его обратно в post_content, восстановив форматирование по шаблону.
Проверка результата после внедрения
- Создайте тестовый товар с описанием на исходном языке.
- Сохраните товар и проверьте, что в базе данных появились переводы.
- Переключите язык сайта на целевой и убедитесь, что описание товара отображается на нужном языке.
- Проверьте корректность отображения HTML-разметки (списки, изображения и т.п.).
- Проверьте логи сервера и браузера на отсутствие ошибок.
Частые ошибки и как их исправить
- Перевод не срабатывает при сохранении товара: проверьте, что хук
save_post_productподключён и функция автоперевода вызывается корректно. - HTML в описании ломается: используйте очистку HTML перед переводом и аккуратно восстанавливайте разметку после.
- Перевод появляется, но не отображается на фронтенде: проверьте, что тема и шаблоны WooCommerce поддерживают мультиязычность, а также что выбран язык корректно передаётся в запросах.
- Проблемы с совместимостью плагина автоперевода и WooCommerce: используйте проверенные решения (WPML + WooCommerce Multilingual) или пишите кастомные интеграции с проверкой API.
Практические советы по безопасности и производительности
- Используйте кеширование результатов автоперевода, чтобы не перегружать API и не замедлять сайт.
- Сохраняйте переводы в метаполях или специальных таблицах, а не повторяйте перевод каждый раз на лету.
- Ограничьте количество запросов к внешним API, чтобы избежать блокировок и превышения лимитов.
- При работе с HTML внимательно фильтруйте входящие и исходящие данные, чтобы не допустить XSS-уязвимостей.
Таблица сравнения подходов к автопереводу описаний товаров WooCommerce
| Вариант | Преимущества | Недостатки | Рекомендуем |
|---|---|---|---|
| WPML + WooCommerce Multilingual с автопереводом | Готовое решение, поддержка HTML, интеграция с WooCommerce | Платный, сложность настройки | Да, если нужен проверенный коммерческий вариант |
| Кастомный автоперевод через API (DeepL, Google) | Гибкость, можно настроить под свои нужды | Требует навыков разработки, риски с HTML | Для опытных разработчиков |
| Простые плагины автоперевода (Polylang + сторонние сервисы) | Быстрая установка | Плохо работают с WooCommerce, ограниченный функционал | Для небольших сайтов без сложных требований |