Как использовать хук doretranslate для дополнительного перевода в WordPress

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

Что такое хук doretranslate и зачем он нужен в WordPress

Хук doretranslate — это фильтр, позволяющий вмешиваться в процесс перевода текста в WordPress. Он особенно полезен, когда стандартные функции локализации, такие как __() или _e(), не обеспечивают нужного результата или когда требуется дополнительная обработка переведённых строк.

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

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

Пример добавления хука doretranslate в тему или плагин

Чтобы использовать doretranslate, нужно зарегистрировать фильтр в файле functions.php вашей темы или в основном файле плагина:

add_filter('doretranslate', 'wptranslate_custom_doretranslate', 10, 3);
function wptranslate_custom_doretranslate($translated_text, $text, $domain) {
    // Логика перевода
    return $translated_text;
}

Параметры функции:

  • $translated_text — уже переведённый текст;
  • $text — исходный текст;
  • $domain — домен перевода (тема или плагин).

Как расширить перевод динамического контента с помощью doretranslate

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

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

add_filter('doretranslate', 'wptranslate_translate_subtitle', 10, 3);
function wptranslate_translate_subtitle($translated_text, $text, $domain) {
    if ($domain === 'mytheme' && strpos($text, 'subtitle_') === 0) {
        // Получаем язык пользователя
        $locale = get_locale();
        // Пример простой реализации перевода
        $translations = [
            'subtitle_hello' => [
                'ru_RU' => 'Приветствие',
                'en_US' => 'Greeting'
            ],
        ];
        if (isset($translations[$text][$locale])) {
            return $translations[$text][$locale];
        }
    }
    return $translated_text;
}

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

Интеграция с плагином Clearfy Pro для оптимизации перевода

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

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

Автоматизация перевода с использованием хука doretranslate и API Google Translate

Если вы хотите автоматизировать перевод нестандартных строк, можно интегрировать Google Translate API прямо через фильтр doretranslate. Ниже пример вызова API и динамического замещения перевода:

add_filter('doretranslate', 'wptranslate_google_autotranslate', 10, 3);
function wptranslate_google_autotranslate($translated_text, $text, $domain) {
    if (!$translated_text || $translated_text === $text) {
        $target_lang = substr(get_locale(), 0, 2); // например, 'ru', 'en'
        $api_key = 'ВАШ_API_КЛЮЧ';
        $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;
        $data = [
            'q' => $text,
            'target' => $target_lang
        ];
        $response = wp_remote_post($url, [
            'body' => json_encode($data),
            'headers' => ['Content-Type' => 'application/json']
        ]);
        if (!is_wp_error($response)) {
            $body = json_decode(wp_remote_retrieve_body($response), true);
            if (!empty($body['data']['translations'][0]['translatedText'])) {
                return $body['data']['translations'][0]['translatedText'];
            }
        }
    }
    return $translated_text;
}

Данный код аккуратно проверяет, что перевод отсутствует или совпадает с исходным текстом, и только тогда вызывает API Google Translate для получения перевода.

Важные рекомендации по использованию API в хуке doretranslate

  • Используйте кэширование результатов, чтобы не перегружать API и не замедлять сайт.
  • Обрабатывайте ошибки и исключения, чтобы не нарушать работу сайта при сбоях внешнего сервиса.
  • Храните API ключи в защищённых настройках, не в открытом коде.

Отладка и тестирование переводов через doretranslate

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

add_filter('doretranslate', 'wptranslate_debug_doretranslate', 10, 3);
function wptranslate_debug_doretranslate($translated_text, $text, $domain) {
    error_log("doretranslate: text='{$text}', domain='{$domain}', translated='{$translated_text}'");
    return $translated_text;
}

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

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

Заключение

Хук doretranslate — мощный инструмент для расширения возможностей перевода в WordPress. Он позволяет гибко управлять переводами нестандартных элементов, интегрировать сторонние сервисы и автоматизировать процессы. Главное — грамотно организовать код, использовать кэширование и тщательно тестировать изменения.

Используйте приведённые примеры и рекомендации для создания качественного мультиязычного сайта с учётом всех нюансов перевода.

Как использовать WPML для автоперевода страниц WordPress
09.02.2026
Как установить и настроить локализацию в своем плагине WordPress
19.03.2026
Как сделать автоперевод контента в WordPress без плагинов
23.02.2026
Автоматический перевод сообщений об ошибках в WordPress
12.03.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
09.11.2025