Как настроить передачу языка в WordPress для автоперевода

Почему важно правильно передавать язык в WordPress для автоперевода

Если вы делаете многоязычный сайт на WordPress с автоматическим переводом, критически важно, чтобы система понимала, на какой язык нужно перевести контент. Без правильной передачи параметра языка автопереводчики, будь то Google Translate, DeepL, или кастомные решения, будут работать некорректно, переводя на язык по умолчанию или вовсе не меняя язык.

В типичных случаях язык сайта определяется некоторыми URL-параметрами, куками или заголовками HTTP. В WordPress можно настроить передачу языка несколькими способами, в зависимости от используемых плагинов и архитектуры сайта.

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

Как передавать язык через URL — примеры и особенности

Наиболее распространенный метод — добавлять в URL префикс языка или параметр ?lang=xx. Например:

  • https://example.com/en/page
  • https://example.com/page?lang=en

В WordPress для этого можно использовать встроенную константу get_query_var() или $_GET.

Пример функции с префиксом wptranslate_ для получения языка из URL параметра:

function wptranslate_get_current_language() {
    if ( isset($_GET['lang']) && preg_match('/^[a-z]{2}$/', $_GET['lang']) ) {
        return sanitize_text_field($_GET['lang']);
    }
    return 'ru'; // язык по умолчанию
}

Далее эту функцию можно использовать в хуках автоперевода, чтобы передавать нужный язык в API перевода.

Если вы используете плагин Polylang или WPML, они обычно сами умеют работать с префиксами URL и передавать язык в глобальную переменную.

Настройка ЧПУ с языковым префиксом

Чтобы сделать структуру URL с языковыми префиксами, можно добавить в файл .htaccess правила или использовать возможности самого WordPress.

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

add_filter('rewrite_rules_array', 'wptranslate_add_language_rewrite_rules');
function wptranslate_add_language_rewrite_rules($rules) {
    $new_rules = [];
    $languages = ['en', 'ru', 'de'];
    foreach ($languages as $lang) {
        $new_rules[$lang . '/(.+)?$'] = 'index.php?pagename=$matches[1]&lang=' . $lang;
    }
    return $new_rules + $rules;
}

После этого нужно обновить пермалинки в админке WordPress, чтобы правила заработали.

Передача языка в AJAX-запросах для автоперевода

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

Пример передачи языка в jQuery AJAX:

jQuery.ajax({
    url: ajaxurl,
    method: 'POST',
    data: {
        action: 'wptranslate_autotranslate',
        lang: currentLang,
        text: textToTranslate
    },
    success: function(response) {
        console.log('Перевод:', response.data);
    }
});

На стороне PHP нужно принять параметр lang и использовать его для вызова API перевода:

add_action('wp_ajax_wptranslate_autotranslate', 'wptranslate_handle_autotranslate');
function wptranslate_handle_autotranslate() {
    $lang = isset($_POST['lang']) ? sanitize_text_field($_POST['lang']) : 'ru';
    $text = isset($_POST['text']) ? sanitize_textarea_field($_POST['text']) : '';
    
    // Здесь вызвать API перевода, например Google Translate или DeepL
    $translated = wptranslate_call_translate_api($text, $lang);
    
    wp_send_json_success($translated);
}

Пример функции вызова API перевода

Для примера вызова Google Translate API можно использовать такой код:

function wptranslate_call_translate_api($text, $targetLang) {
    $apiKey = 'ВАШ_API_КЛЮЧ';
    $url = 'https://translation.googleapis.com/language/translate/v2';
    $response = wp_remote_post($url, [
        'body' => json_encode([
            'q' => $text,
            'target' => $targetLang,
            'format' => 'text'
        ]),
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . $apiKey
        ]
    ]);
    if (is_wp_error($response)) {
        return '';
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    return $body['data']['translations'][0]['translatedText'] ?? '';
}

Использование плагина Clearfy Pro для управления языками и автопереводом

Плагин Clearfy Pro позволяет тонко настраивать работу с мультиязычностью и автопереводом, включая передачу параметров языка в URL, куки и AJAX.

С его помощью можно:

  • Автоматически подставлять язык в запросы к API перевода.
  • Настраивать редиректы на языковые версии страниц.
  • Оптимизировать SEO для многоязычных сайтов.

Clearfy Pro также содержит удобные хуки и фильтры для разработчиков, позволяющие интегрировать автоперевод в собственные решения.

Как передавать язык в собственных шорткодах и виджетах для перевода

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

Пример шорткода с передачей языка:

function wptranslate_shortcode_translate($atts, $content = '') {
    $lang = isset($atts['lang']) ? sanitize_text_field($atts['lang']) : wptranslate_get_current_language();
    $translated = wptranslate_call_translate_api($content, $lang);
    return $translated ?: $content;
}
add_shortcode('wptranslate', 'wptranslate_shortcode_translate');

Такой шорткод позволяет писать в контенте: [wptranslate lang="en"]Текст для перевода[/wptranslate], и получать перевод на нужный язык.

Передача языка через куки и HTTP заголовки

Кроме URL и AJAX, можно сохранять выбранный язык пользователя в куки или передавать через заголовки HTTP. Это удобно для динамических сайтов или SPA на базе WordPress.

Пример установки куки с языком:

function wptranslate_set_language_cookie() {
    if ( isset($_GET['lang']) ) {
        setcookie('wptranslate_lang', sanitize_text_field($_GET['lang']), time() + 3600 * 24 * 30, '/');
    }
}
add_action('init', 'wptranslate_set_language_cookie');

Для получения языка из куки используйте:

function wptranslate_get_language_from_cookie() {
    if ( isset($_COOKIE['wptranslate_lang']) ) {
        return sanitize_text_field($_COOKIE['wptranslate_lang']);
    }
    return 'ru';
}

Это поможет сохранить язык при переходах без параметров в URL.

Резюме и рекомендации

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

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

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

Автоматический перевод описаний товаров WooCommerce в WordPress: практическое руководство
23.04.2026
Как добавить автоперевод сообщений об ошибках в WordPress
19.01.2026
Как создать автоперевод на основе Google Cloud Translate в WordPress
02.01.2026
Как использовать хук wptranslate_autotranslate для автоперевода текстов в WordPress
28.03.2026
Как использовать WPML для перевода производительных тем WordPress
06.12.2025