wplang.ru wordpress WP Lang

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

Диагностика проблемы с языковыми файлами WooCommerce

Если у вас в магазине WooCommerce на WordPress возникают проблемы с отображением переводов, например, часть текста остается на английском или не обновляется после смены языка, скорее всего, дело в конфликте или неправильной загрузке языковых файлов (.mo/.po). Часто это связано с тем, что WooCommerce загружает переводы из устаревших или дополнительных директорий, а также с кешированием.

Для диагностики выполните следующие шаги:

  • Проверьте, какие языковые файлы присутствуют в wp-content/languages/plugins/ и wp-content/plugins/woocommerce/i18n/languages/.
  • Включите логирование ошибок PHP и посмотрите, нет ли предупреждений, связанных с загрузкой переводов.
  • Очистите кеш сайта и браузера.
  • Используйте отладчик перевода, например, плагин Say What?, чтобы увидеть, применяется ли нужный текстовый домен и строка.

Пошаговое решение проблемы с языковыми файлами WooCommerce

1. Удаление устаревших языковых файлов

Удалите или переместите все файлы woocommerce-*.mo и woocommerce-*.po из папки wp-content/plugins/woocommerce/i18n/languages/, чтобы WooCommerce использовал только переводы из wp-content/languages/plugins/. Это позволит избежать конфликтов при обновлениях.

2. Принудительная загрузка нужного языка

Добавьте в файл functions.php вашей темы или в отдельный плагин следующий код, чтобы явно указать загрузку нужного перевода WooCommerce:

add_action('init', function() {
    load_textdomain('woocommerce', WP_LANG_DIR . '/plugins/woocommerce-' . get_locale() . '.mo');
});

Здесь WP_LANG_DIR — константа, указывающая на wp-content/languages, а get_locale() возвращает текущую локаль сайта.

3. Очистка кеша и обновление языков

После внесения изменений обязательно очистите кеш сайта, если используете плагины кеширования (WP Super Cache, W3 Total Cache и т.д.). Также обновите языковые файлы через админку WordPress в раздел Обновления → Языковые файлы.

Как проверить, что проблема решена

  • Перейдите на страницу магазина и проверьте, что все элементы WooCommerce отображаются на нужном языке.
  • Измените язык сайта (если используется мультиязычность) и убедитесь, что переводы обновляются корректно.
  • Используйте плагин String Locator или Say What? для поиска и контроля строк.

Частые ошибки при работе с языковыми файлами WooCommerce

  • Дублирование файлов перевода в разных папках. WooCommerce загружает переводы из wp-content/languages/plugins и из своей папки плагина, при этом файлы в плагине имеют приоритет. Это приводит к конфликтам. Решение — удалить или переименовать лишние файлы.
  • Неочищенный кеш сайта и браузера. После обновления переводов старые строки могут сохраняться в кеше.
  • Неправильный текстовый домен. Если в кастомном коде используется неправильный домен (например, 'woocommerce' заменен на что-то другое), переводы не выйдут.
  • Неправильная локаль сайта. Проверьте, что в Settings → General → Site Language установлен нужный язык.

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

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

Сравнение вариантов загрузки языковых файлов WooCommerce

МетодПуть файловПлюсыМинусы
Стандартная загрузка WooCommercewp-content/plugins/woocommerce/i18n/languages/Автоматическое обновление с плагиномФайлы могут быть перезаписаны при обновлениях, конфликты с кастомными переводами
Загрузка из wp-content/languages/plugins/wp-content/languages/plugins/woocommerce-*.moБезопасно для кастомизации, не перезаписываетсяНе всегда автоматически обновляется
Принудительная загрузка через load_textdomainЛюбая папка, указанная в кодеПолный контроль, можно хранить в кастомных папкахТребует дополнительного контроля и обновлений вручную

Пример кода для удаления лишних языковых файлов при активации плагина

register_activation_hook(__FILE__, function() {
    $lang_path = WP_PLUGIN_DIR . '/woocommerce/i18n/languages/';
    $files = glob($lang_path . 'woocommerce-*.mo');
    foreach ($files as $file) {
        // Удаляем лишние файлы, чтобы избежать конфликтов
        unlink($file);
    }
});

Проверка загрузки перевода в рантайме

add_action('wp_loaded', function() {
    $translated = __('Add to cart', 'woocommerce');
    error_log('Перевод строки "Add to cart": ' . $translated);
});

Если в логе отображается перевод на нужном языке, значит загрузка прошла успешно.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙