Автоматический перевод сообщений в формах WordPress

Зачем нужен автоматический перевод сообщений в формах WordPress

Многоязычные сайты на WordPress часто используют формы обратной связи, регистрации, подписки и другие интерактивные элементы. Важно, чтобы сообщения об ошибках, подтверждения и уведомления в этих формах отображались на языке пользователя. Ручной перевод таких сообщений неудобен и затратен при большом количестве форм и языков. Автоматический перевод помогает быстро масштабировать локализацию и улучшить UX.

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

Обзор популярных плагинов для перевода сообщений форм

Плагин WPForms и его интеграция с переводчиками

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

Например, с WPML можно перевести сообщения об ошибках через String Translation, но это требует ручного перевода. Для автоматизации можно использовать API Google Translate или DeepL.

Плагин Contact Form 7 и автоматический перевод сообщений

Contact Form 7 позволяет легко создавать формы, а для перевода сообщений можно использовать фильтры и хуки. Это дает гибкость для внедрения собственного автоперевода.

Polylang и интеграция с формами

Polylang хорошо работает с формами, но не переводит динамические сообщения автоматически. Здесь пригодятся дополнительные скрипты или плагины, которые подхватывают сообщения и переводят их на лету.

Реализация автоперевода сообщений в формах на примере Contact Form 7

Рассмотрим пример, как реализовать автоперевод сообщений об ошибках Contact Form 7 с помощью Google Translate API и хука wpcf7_validate.

Для начала нужно получить API ключ Google Translate и подключить к сайту.

function wptranslate_cf7_autotranslate_messages( $result, $tags ) {
    if ( ! function_exists('wptranslate_google_translate') ) {
        return $result;
    }

    foreach ( $result->invalid_fields as $field ) {
        $original_message = $field->message;
        $translated_message = wptranslate_google_translate( $original_message, 'en', get_locale() );
        if ( $translated_message ) {
            $field->message = $translated_message;
        }
    }

    return $result;
}
add_filter( 'wpcf7_validate', 'wptranslate_cf7_autotranslate_messages', 20, 2 );

function wptranslate_google_translate( $text, $source_lang, $target_lang ) {
    $api_key = 'ВАШ_GOOGLE_API_KEY';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;

    $response = wp_remote_post( $url, array(
        'body' => json_encode(array(
            'q' => $text,
            'source' => $source_lang,
            'target' => $target_lang,
            'format' => 'text'
        )),
        'headers' => array(
            'Content-Type' => 'application/json'
        )
    ));

    if ( is_wp_error( $response ) ) {
        return false;
    }

    $body = json_decode( wp_remote_retrieve_body( $response ), true );
    if ( ! empty( $body['data']['translations'][0]['translatedText'] ) ) {
        return wp_kses_post( $body['data']['translations'][0]['translatedText'] );
    }

    return false;
}

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

Как перевести сообщения формы WPForms с помощью хука и автоперевода

WPForms хранит сообщения об ошибках в настройках, но можно динамически их перехватывать и переводить через фильтр wpforms_frontend_message. Ниже пример функции для автоперевода:

function wptranslate_wpforms_translate_message( $message, $form_data, $fields, $entry, $form_id ) {
    if ( function_exists('wptranslate_google_translate') ) {
        $translated = wptranslate_google_translate( $message, 'en', get_locale() );
        if ( $translated ) {
            return $translated;
        }
    }
    return $message;
}
add_filter( 'wpforms_frontend_message', 'wptranslate_wpforms_translate_message', 10, 5 );

Таким образом, все сообщения WPForms, которые выводятся на фронтенде, будут переведены автоматически, если функция автоперевода доступна.

Рекомендации по оптимизации автоперевода сообщений форм

1. Кэшируйте результаты перевода, чтобы не делать лишние запросы к API. Можно использовать transient API WordPress для хранения переведенных строк.

2. Ограничьте перевод только тех сообщений, которые не переведены вручную. Это повысит качество и снизит расходы на API.

3. Обрабатывайте исключения и ошибки API, чтобы не ломать работу форм, если перевод недоступен.

4. При большом количестве языков и сообщений рассмотрите использование специализированных сервисов, например, DeepL, которые могут давать более качественные переводы.

Пример кэширования перевода сообщений с использованием transient API

function wptranslate_google_translate_cached( $text, $source_lang, $target_lang ) {
    $cache_key = 'wptranslate_trans_' . md5( $text . $source_lang . $target_lang );
    $cached = get_transient( $cache_key );
    if ( $cached !== false ) {
        return $cached;
    }

    $translated = wptranslate_google_translate( $text, $source_lang, $target_lang );
    if ( $translated ) {
        set_transient( $cache_key, $translated, DAY_IN_SECONDS );
    }
    return $translated;
}

Используйте функцию wptranslate_google_translate_cached вместо прямого вызова API для повышения производительности.

Заключение. Как выбрать подходящий подход для перевода сообщений форм

Автоматический перевод сообщений в формах WordPress — удобный способ масштабировать мультиязычность сайта без ручной работы. Для простых форм подойдут фильтры Contact Form 7 и WPForms с вызовом Google Translate или DeepL через API.

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

Для более удобной работы с переводами форм рекомендуем обратить внимание на плагин Clearfy Pro, который помогает оптимизировать работу с переводами и управлять различными языковыми настройками на сайте.

Как установить и настроить локализацию в своем плагине WordPress
19.03.2026
Автоматический перевод описаний товаров WooCommerce: пошаговое руководство
26.04.2026
Как автоматически перевести метаданные в WordPress
02.03.2026
Как создать автоперевод на основе Google Cloud Translate в WordPress
02.01.2026
Как добавить поддержку языков в собственном Gutenberg-блоке WordPress
16.02.2026