wplangs.ru wordpress WP Langs

Как автоматически перевести динамические данные в WordPress

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

Почему стандартные решения не всегда подходят для динамического контента

Большинство популярных плагинов для перевода, таких как WPML или Polylang, хорошо справляются с переводом статических страниц, записей и пользовательских типов записей. Однако динамический контент, который подгружается через AJAX или формируется на основе пользовательского ввода, часто не попадает под их автоматическую обработку.

Это связано с тем, что динамические данные не сохраняются в базе в виде переведённых записей, а формируются на лету. Например, отзывы от пользователей, которые выводятся с помощью AJAX, или формы с динамическими сообщениями об ошибках – их перевод требует иного подхода.

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

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

WPGPT: интеграция с OpenAI для перевода на лету

Плагин WPGPT позволяет использовать API OpenAI для автоматического перевода текстов прямо в WordPress. Это удобно для динамических данных, так как можно программно отправлять строки для перевода и получать результат мгновенно.

Для перевода AJAX-ответов или полей форм можно вызывать функцию плагина напрямую и вставлять переведённый текст в ответ. Ниже пример кода, который демонстрирует, как это реализовать.

function wplangs_translate_dynamic_text($text, $target_lang = 'ru') {
    if (!function_exists('wpgpt_translate_text')) {
        return $text; // плагин WPGPT не активен
    }
    // Отправляем текст на перевод через WPGPT
    $translated = wpgpt_translate_text($text, $target_lang);
    return $translated ?: $text;
}

Далее в обработчике AJAX можно использовать эту функцию:

add_action('wp_ajax_wplangs_translate_review', 'wplangs_ajax_translate_review');
add_action('wp_ajax_nopriv_wplangs_translate_review', 'wplangs_ajax_translate_review');

function wplangs_ajax_translate_review() {
    $review_text = sanitize_text_field($_POST['review']);
    $lang = sanitize_text_field($_POST['lang']);
    $translated = wplangs_translate_dynamic_text($review_text, $lang);
    wp_send_json_success(['translated' => $translated]);
}

TranslatePress и автоматический перевод динамического контента

Плагин TranslatePress поддерживает автоматический перевод через Google Translate API и DeepL, а также умеет переводить AJAX-запросы благодаря интеграции с динамическим контентом.

Однако для нестандартных данных, например, с пользовательскими AJAX-сценариями, может понадобиться добавить собственный JavaScript для вызова перевода.

Реализация автоматического перевода динамического контента на примере AJAX

Рассмотрим пошаговую реализацию перевода динамических данных с помощью AJAX и собственного PHP-кода.

1. Создание AJAX-запроса на клиенте

В JavaScript нужно отправлять на сервер текст для перевода и целевой язык:

jQuery(document).ready(function($) {
    $('#translate-button').on('click', function() {
        var text = $('#dynamic-text').text();
        var lang = $('#language-select').val();
        $.post(ajaxurl, {
            action: 'wplangs_translate_dynamic',
            text: text,
            lang: lang
        }, function(response) {
            if(response.success) {
                $('#dynamic-text').text(response.data.translated);
            } else {
                alert('Ошибка перевода');
            }
        });
    });
});

2. Обработка AJAX-запроса на сервере

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

add_action('wp_ajax_wplangs_translate_dynamic', 'wplangs_translate_dynamic_callback');
add_action('wp_ajax_nopriv_wplangs_translate_dynamic', 'wplangs_translate_dynamic_callback');

function wplangs_translate_dynamic_callback() {
    $text = sanitize_text_field($_POST['text']);
    $lang = sanitize_text_field($_POST['lang']);
    $translated = wplangs_translate_dynamic_text($text, $lang);
    if($translated) {
        wp_send_json_success(['translated' => $translated]);
    } else {
        wp_send_json_error();
    }
}

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

Важно добавить кеширование переведённых фрагментов, чтобы не отправлять одинаковые запросы на API перевода многократно. Кеш можно реализовать через транзиенты WordPress:

function wplangs_translate_dynamic_text($text, $target_lang = 'ru') {
    $cache_key = 'wplangs_translate_' . md5($text . $target_lang);
    $cached = get_transient($cache_key);
    if ($cached) {
        return $cached;
    }
    if (!function_exists('wpgpt_translate_text')) {
        return $text;
    }
    $translated = wpgpt_translate_text($text, $target_lang);
    if ($translated) {
        set_transient($cache_key, $translated, DAY_IN_SECONDS);
        return $translated;
    }
    return $text;
}

Перевод динамического контента в пользовательских полях и метаданных

Если вы используете кастомные поля (Custom Fields) или метаданные, которые выводятся на странице, их перевод можно автоматизировать с помощью хуков вывода и тех же функций перевода.

Например, для автоматического перевода метаданных в теме добавьте фильтр для вывода:

add_filter('the_meta', 'wplangs_translate_meta_output');

function wplangs_translate_meta_output($meta) {
    $lang = determine_current_language(); // ваша функция определения языка
    return wplangs_translate_dynamic_text($meta, $lang);
}

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

Выводы и рекомендации по работе с динамическими переводами

Перевод динамического контента в WordPress требует нестандартных решений, так как стандартные плагины ориентированы на статический перевод. Использование API, таких как OpenAI через WPGPT, или сервисов Google Translate через TranslatePress, позволяет автоматизировать этот процесс.

Обязательно учитывайте кеширование и безопасность при реализации перевода, чтобы снизить нагрузку на сервер и API.

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

Подробнее о плагине WPGPT и других решениях можно узнать на wpshop.ru.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше