Как правильно перевести статусы заказов WooCommerce без потери качества

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

Стандартные статусы заказов WooCommerce, такие как processing, completed, on-hold, обычно переводятся автоматически при локализации сайта. Но дополнительные или кастомные статусы, а также сообщения, связанные с ними, часто остаются на исходном языке. Это приводит к неполной мультиязычности и ухудшает пользовательский опыт.

Проблема проявляется в следующих случаях:

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

Как WooCommerce работает со статусами заказов и их переводом

Статусы заказов регистрируются через функцию register_post_status() с параметрами, включая ярлыки (label и label_count). Для локализации необходимо, чтобы эти ярлыки были обернуты функцией __() или _x().

Для перевода кастомных статусов также нужно зарегистрировать их с локализуемыми ярлыками и добавить перевод в .po/.mo файлы темы или плагина, либо использовать фильтры для динамического перевода.

Пошаговое решение: правильный перевод кастомных статусов заказов

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

function wptranslate_register_custom_order_status() {
    register_post_status( 'wc-awaiting-payment', array(
        'label'                     => _x( 'Ожидание оплаты', 'Order status', 'woocommerce' ),
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Ожидание оплаты <span class="count">(%s)</span>', 'Ожидание оплаты <span class="count">(%s)</span>', 'woocommerce' )
    ) );
}
add_action( 'init', 'wptranslate_register_custom_order_status' );

2. Добавление статуса в список доступных статусов WooCommerce

function wptranslate_add_custom_order_statuses( $order_statuses ) {
    $order_statuses['wc-awaiting-payment'] = _x( 'Ожидание оплаты', 'Order status', 'woocommerce' );
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wptranslate_add_custom_order_statuses' );

3. Перевод в файлах локализации

Убедитесь, что в используемой локали (.po/.mo) есть переводы для «Ожидание оплаты». Можно использовать Poedit или Loco Translate для проверки и добавления.

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

  • Создайте заказ и установите ему новый статус awaiting-payment.
  • Проверьте в админке WooCommerce на странице заказов, что статус отображается корректно на выбранном языке.
  • Посмотрите на странице пользователя (если выводите статусы) — перевод должен быть виден.
  • Используйте wpml-string-translation или аналогичный модуль, если применяете WPML, чтобы убедиться, что строка доступна для перевода.

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

  • Статус отображается в оригинале, а не переведен: отсутствует перевод в .po/.mo или строка не обернута в __().
  • Статус не появляется в списке заказов: не добавлен в фильтр wc_order_statuses.
  • Проблемы с кэшированием: кэш страниц или объекта может показывать старый текст — очистите кэш.
  • Конфликт с плагинами мультиязычности: проверьте, поддерживает ли плагин кастомные статусы, и синхронизируйте переводы.

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

  • Не храните переводы статусов напрямую в базе без i18n — используйте встроенные механизмы WordPress.
  • Для больших сайтов с WooCommerce кешируйте результаты с помощью Transients API, чтобы не перегружать БД.
  • При использовании мультиязычных плагинов обновляйте переводы и синхронизируйте строки через их интерфейс.
  • Избегайте дублирования функций регистрации статусов — используйте хуки и фильтры корректно.

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

МетодПлюсыМинусыКогда использовать
Регистрация с функциями i18n и .po/.moПолная интеграция, поддержка любых языковТребует работы с файлами переводаКастомные статусы в плагинах/темах
Фильтр wc_order_statuses с динамическим переводомПросто и быстро, можно менять на летуОграничено строками, нужен дополнительный переводНебольшие изменения или быстрая правка
Перевод через плагины мультиязычностиУдобный интерфейс, автоматизацияЗависимость от плагина, возможны конфликтыСложные мультиязычные сайты
Как автоматически переводить контент WordPress с помощью API DeepL
25.03.2026
Оптимизация автоперевода описаний товаров WooCommerce в WordPress
14.05.2026
Как передавать текст в автопереводчик в WordPress через хуки
26.02.2026
Как оптимизировать перевод тем и плагинов WordPress для быстродействия
09.01.2026
Автоматический перевод содержимого сообщений WooCommerce с помощью хуков
16.06.2026