Почему стоит перевести статусы заказов WooCommerce
Статусы заказов в WooCommerce – это ключевая информация как для администратора, так и для клиентов. При создании многоязычного магазина важно, чтобы эти статусы отображались на языке пользователя, а не по умолчанию на английском. Без перевода статусов возможна путаница, снижается удобство и доверие покупателей.
Диагностика проблемы: статусы заказов WooCommerce не переводятся
Если вы заметили, что в вашем мультиязычном сайте статусы заказов отображаются только на английском, хотя остальной контент переведен, причина может быть в следующем:
- Отсутствие перевода строк статусов в файлах .po/.mo вашей темы или плагина
- Неправильная регистрация кастомных статусов заказов без поддержки локализации
- Использование нестандартных методов вывода статусов, которые не обрабатываются плагином перевода (WPML, Polylang)
Пошаговое решение: как перевести статусы заказов WooCommerce
1. Проверяем наличие перевода WooCommerce
WooCommerce по умолчанию поставляется с переводами на многие языки, в том числе русский. Убедитесь, что в папке wp-content/languages/plugins/ есть актуальные файлы woocommerce-ru_RU.po и woocommerce-ru_RU.mo. Если файлов нет или они устарели, скачайте свежие с официального репозитория WordPress Translate.
2. Добавляем поддержку перевода кастомных статусов
Если у вас есть кастомные статусы заказов, зарегистрированные через register_post_status, нужно вручную добавить их в массив статусов WooCommerce и обеспечить их перевод. Пример регистрации кастомного статуса с поддержкой локализации:
function register_custom_order_status() {
register_post_status( 'wc-awaiting-shipment', array(
'label' => _x( 'Ожидание отправки', 'Order status', 'your-textdomain' ),
'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>', 'your-textdomain' ),
) );
}
add_action( 'init', 'register_custom_order_status' );
function add_custom_order_statuses( $order_statuses ) {
$order_statuses['wc-awaiting-shipment'] = _x( 'Ожидание отправки', 'Order status', 'your-textdomain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'add_custom_order_statuses' );Обратите внимание, что _x() и _n_noop() позволяют использовать перевод в нужном контексте.
3. Используем правильный текстовый домен и файлы перевода
Если вы используете свой плагин или тему для кастомных статусов, убедитесь, что в load_textdomain() загружаются соответствующие файлы перевода. Например:
function load_custom_plugin_textdomain() {
load_plugin_textdomain( 'your-textdomain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'load_custom_plugin_textdomain' );4. Перевод через Poedit или Loco Translate
Чтобы добавить или исправить перевод статусов, можно использовать редакторы переводов:
- Poedit: скачайте .po файл, добавьте переводы для нужных статусов, экспортируйте .mo.
- Loco Translate: плагин для WordPress, позволяющий редактировать переводы прямо в админке.
Проверка результата после внедрения
Чтобы проверить, что перевод статусов работает:
- Создайте тестовый заказ и вручную измените его статус на кастомный или стандартный статус, переведенный вами.
- Откройте страницу «Мои заказы» в пользовательской части сайта на нужном языке (переключите язык).
- Убедитесь, что статус отображается на выбранном языке.
- Проверьте в админке WooCommerce, что статусы также отображаются корректно.
Частые ошибки при переводе статусов заказов WooCommerce
- Отсутствие текстового домена или неправильный домен – перевод не загружается, строки остаются на английском.
- Регистрация статусов без использования функций локализации – строки не поддаются переводу.
- Редактирование файлов WooCommerce напрямую – обновления плагина перезапишут изменения.
- Неправильный путь к файлам перевода – WordPress не находит .mo/.po.
- Кэширование – иногда старые переводы кэшируются, очистите кэш сайта и браузера.
Практические советы по безопасности и производительности
- Не редактируйте файлы плагинов напрямую — создавайте дочерние темы или собственные плагины для кастомизации.
- Храните файлы перевода в правильных каталогах (
wp-content/languages/plugins/илиwp-content/languages/themes/), чтобы избежать потери при обновлении. - Используйте Loco Translate с осторожностью и всегда делайте резервные копии перед изменениями.
- Оптимизируйте переводы — не добавляйте лишних строк, чтобы не замедлять загрузку.
Сравнение способов перевода статусов заказов WooCommerce
| Метод | Плюсы | Минусы |
|---|---|---|
| Использование готовых переводов WooCommerce | Простота, поддержка обновлений, надежность | Не подходит для кастомных статусов |
| Регистрация кастомных статусов с локализацией | Гибкость, полный контроль, поддержка любых языков | Требует знаний PHP и gettext |
| Редактирование .po/.mo через Poedit или Loco Translate | Прямое редактирование, удобство | Риск потери при обновлении, требует резервного копирования |