Как добавить автоперевод для сообщений об ошибках WordPress

В WordPress многие системные сообщения, особенно сообщения об ошибках, выводятся на языке по умолчанию или на языке админ-панели. Но что делать, если вы создаёте мультиязычный сайт или хотите улучшить опыт пользователей из разных стран? В этой статье мы разберём, как добавить автоперевод для сообщений об ошибках WordPress с помощью кастомного кода и плагинов.

Почему важно переводить сообщения об ошибках в WordPress

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

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

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

Используем Google Translate API для автоперевода сообщений об ошибках

Один из рабочих вариантов — подключить Google Translate API и автоматически переводить текст ошибок перед выводом. Для этого можно написать функцию, которая будет перехватывать сообщения и переводить их.

Пример функции с префиксом wptranslate_ для перевода текста через Google Translate API:

function wptranslate_google_translate_text($text, $target_lang = 'ru') {
    $apiKey = 'ВАШ_GOOGLE_API_КЛЮЧ';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;

    $data = [
        'q' => $text,
        'target' => $target_lang,
        'format' => 'text'
    ];

    $response = wp_remote_post($url, [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json'
        ]
    ]);

    if (is_wp_error($response)) {
        return $text; // Возвращаем оригинал при ошибке
    }

    $body = json_decode(wp_remote_retrieve_body($response), true);

    if (isset($body['data']['translations'][0]['translatedText'])) {
        return $body['data']['translations'][0]['translatedText'];
    }

    return $text;
}

Эта функция отправляет текст на перевод и возвращает уже переведённый результат. Теперь нужно применить её к сообщениям об ошибках.

Перехват и перевод сообщений ошибок в WordPress

Для перехвата сообщений об ошибках можно использовать фильтр wp_login_errors для ошибок авторизации, а также фильтр wp_die_handler для более глобальных ошибок.

Пример автоперевода ошибок входа

add_filter('wp_login_errors', 'wptranslate_translate_login_errors', 10, 2);
function wptranslate_translate_login_errors($errors, $redirect_to) {
    if (is_wp_error($errors)) {
        foreach ($errors->get_error_codes() as $code) {
            foreach ($errors->get_error_messages($code) as $message) {
                $translated = wptranslate_google_translate_text($message, get_locale());
                $errors->remove($code);
                $errors->add($code, $translated);
            }
        }
    }
    return $errors;
}

В этом примере мы переводим каждое сообщение ошибки перед выводом на страницу входа.

Использование плагинов для автоперевода сообщений

Если вы не хотите писать код, можно использовать плагины с поддержкой автоперевода, например:

  • WPGPT — плагин, который интегрирует GPT-4 для перевода и генерации контента.
  • Clearfy Pro — оптимизирует сайт и позволяет добавить кастомные скрипты для обработки ошибок.

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

Обработка сообщений об ошибках в кастомных плагинах и темах

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

function wptranslate_translate_error_message($message, $lang = 'ru') {
    return wptranslate_google_translate_text($message, $lang);
}

// Пример использования в коде
if ($some_error_condition) {
    $error_message = wptranslate_translate_error_message('Invalid input data', get_locale());
    wp_die($error_message);
}

Так вы обеспечите перевод всех кастомных ошибок без дополнительной ручной работы.

Практические советы по оптимизации автоперевода ошибок

Автоматический перевод может увеличить время отклика сервера, если каждый запрос идёт к API. Чтобы этого избежать, рекомендуем:

  • Кешировать переведённые сообщения с помощью транзиентов WordPress.
  • Переводить только уникальные сообщения, а не дубли.
  • Использовать фильтры для ограничения автоперевода только на фронтенде или определённых страницах.

Пример кеширования:

function wptranslate_google_translate_text_cached($text, $target_lang = 'ru') {
    $cache_key = 'wptranslate_trans_' . md5($text . $target_lang);
    $cached = get_transient($cache_key);
    if ($cached) {
        return $cached;
    }

    $translated = wptranslate_google_translate_text($text, $target_lang);
    set_transient($cache_key, $translated, DAY_IN_SECONDS);
    return $translated;
}

Этот подход значительно снизит количество запросов к Google Translate API.

Как исправить проблему с переводом постоянных ссылок (Permalinks) в WordPress
09.12.2025
Как использовать WPML для одновременного перевода страниц в WordPress
30.12.2025
Как создать свой плагин для автоперевода WordPress
26.11.2025
Как использовать WPML для перевода производительных тем WordPress
06.12.2025
Как создать автоперевод на основе Google Cloud Translate в WordPress
02.01.2026