В этой статье рассмотрим, как можно использовать собственный хук wptranslate_autotranslate для автоматического перевода текстов в WordPress. Такой подход полезен, когда нужно гибко управлять процессом автоперевода, дополнять стандартные механизмы или интегрировать сторонние API перевода с минимальными затратами времени.
Что такое хук wptranslate_autotranslate и зачем он нужен
wptranslate_autotranslate — это пользовательский фильтр, который можно добавить в собственные темы или плагины. Он позволяет перехватывать текст перед отправкой на автоперевод и при необходимости модифицировать его. Например, можно добавить логику исключения определённых фраз из перевода, подставлять свои варианты или интегрировать сразу несколько API для повышения качества.
Такой хук особенно актуален для сайтов с большим объёмом динамического контента, где нужно контролировать, что и как переводится, без глобальной зависимости от одного плагина.
Пример использования хука wptranslate_autotranslate в плагине
Рассмотрим простой пример, как добавить фильтр в файл functions.php вашей темы или в плагин, чтобы автоматически менять строки перед отправкой на перевод.
add_filter('wptranslate_autotranslate', 'wptranslate_custom_autotranslate', 10, 3);
function wptranslate_custom_autotranslate($text, $source_lang, $target_lang) {
// Исключаем из перевода технические термины
$exclude_words = ['WordPress', 'API', 'wptranslate'];
foreach ($exclude_words as $word) {
if (stripos($text, $word) !== false) {
// Оставляем оригинал, если есть исключаемое слово
return $text;
}
}
// Пример простой замены слов перед переводом
$text = str_ireplace('автоперевод', 'automatic translation', $text);
// Здесь можно добавить вызов внешнего API перевода, например Google Translate или DeepL
// Для примера возвращаем измененный текст
return $text;
}
В этом коде мы добавляем фильтр, который получает исходный текст и языки источника и цели. Если текст содержит определённые слова, он возвращается без изменений. Иначе — заменяется слово «автоперевод» на английский аналог. Такой подход можно доработать под любые нужды.
Интеграция с Google Cloud Translate через хук
Чтобы полностью автоматизировать перевод через API Google Cloud Translate, нужно сделать запрос к их сервису внутри фильтра. Ниже пример упрощённой реализации с использованием PHP и официального клиента Google.
use Google\Cloud\Translate\V2\TranslateClient;
add_filter('wptranslate_autotranslate', 'wptranslate_google_translate_autotranslate', 20, 3);
function wptranslate_google_translate_autotranslate($text, $source_lang, $target_lang) {
$translate = new TranslateClient([
'key' => 'ВАШ_API_КЛЮЧ_GOOGLE'
]);
try {
$result = $translate->translate($text, [
'source' => $source_lang,
'target' => $target_lang
]);
return $result['text'];
} catch (Exception $e) {
// В случае ошибки возвращаем исходный текст
return $text;
}
}
Обратите внимание, что для работы потребуется установить пакет Google Cloud Translate через Composer и получить API-ключ в консоли Google Cloud Platform. Это позволит автоматически переводить любые строки, переданные через хук.
Как использовать хук вместе с плагином WPRemark для автоперевода комментариев
Плагин WPRemark отлично подходит для добавления комментариев на сайте. Чтобы обеспечить автоматический перевод комментариев на нужный язык, можно использовать хук wptranslate_autotranslate следующим образом:
add_filter('wptranslate_autotranslate', 'wptranslate_autotranslate_remark_comments', 15, 3);
function wptranslate_autotranslate_remark_comments($text, $source_lang, $target_lang) {
// Проверяем, что переводим именно комментарии WPRemark
if (is_singular() && get_post_type() === 'remark_comment') {
// Логика автоперевода, например вызов DeepL API или другого сервиса
// Для примера просто добавим метку
return '[Перевод] ' . $text;
}
return $text;
}
Таким образом, можно кастомизировать перевод комментариев, интегрируя любые сервисы или собственные алгоритмы через единый фильтр.
Рекомендации по оптимизации автоперевода с хуком
- Кэшируйте результаты автоперевода, чтобы не посылать повторные запросы к API. Это ускорит работу и снизит расходы.
- Обрабатывайте ошибки и исключения, чтобы сохранить стабильность сайта при проблемах с внешними сервисами.
- Фильтруйте контент — не все строки нужно переводить, например, названия брендов, технические термины или короткие аббревиатуры.
- Используйте асинхронный перевод, если контент большой, чтобы не замедлять загрузку страниц.
Заключение
Использование пользовательского хука wptranslate_autotranslate — мощный инструмент для тонкой настройки автоперевода в WordPress. Его легко внедрить в свои проекты, комбинировать с API популярных сервисов и создавать гибкие решения для обработки многоязычного контента. Благодаря хук можно значительно расширить стандартные возможности и повысить качество перевода на сайте.