Для сайтов с мультиязычностью важным элементом является корректный перевод всех элементов интерфейса, включая формы обратной связи, регистрации и подписки. В этой статье разберём, как добавить автоперевод форм в WordPress, чтобы пользователи видели поля и сообщения на своём языке без ручного перевода.
Почему автоперевод форм важен для WordPress
Формы — это ключевой элемент взаимодействия с пользователем. Если они не переведены, это снижает удобство и конверсию. Ручной перевод форм занимает время, особенно если форм много и языков несколько. Автоматический перевод форм решает эту задачу и позволяет:
- Экономить время на локализации;
- Обеспечить актуальность переводов при изменении полей;
- Оптимизировать работу с многоязычными сайтами.
Для автоперевода форм используют как готовые плагины, так и собственные решения с API машинного перевода.
Как настроить автоперевод форм с помощью плагинов
Плагин Fluent Forms + интеграция с Google Translate API
Fluent Forms — удобный конструктор форм с поддержкой интеграций. Для автоперевода можно сделать связку с Google Translate API. Шаги:
- Создайте форму в Fluent Forms.
- С помощью хука
wptranslate_fluentforms_translate_fieldsперехватите поля и отправьте их на перевод. - Выведите переведённые лейблы и плейсхолдеры.
Пример кода для перевода полей формы:
function wptranslate_translate_fluentforms_fields($fields, $target_lang) {
foreach ($fields as &$field) {
$field['label'] = wptranslate_translate_text($field['label'], $target_lang);
if (!empty($field['placeholder'])) {
$field['placeholder'] = wptranslate_translate_text($field['placeholder'], $target_lang);
}
}
return $fields;
}Здесь wptranslate_translate_text — функция, которая отправляет текст на Google Translate и возвращает перевод.
Использование плагина WPML с расширением для форм
WPML поддерживает перевод строк форм, но требует ручного ввода. Для автоперевода можно использовать расширения WPML String Translation совместно с API Google или DeepL, написав дополнительный скрипт, который будет автоматически заполнять переводы строк форм.
Создание собственной функции автоперевода для форм WordPress
Если вы хотите интегрировать автоперевод форм без плагинов, можно написать собственный код, который будет изменять вывод формы в зависимости от языка пользователя.
Пример: автоперевод формы Contact Form 7
Contact Form 7 — популярный плагин для форм. Перевод его полей можно сделать через фильтр wpcf7_form_elements:
add_filter('wpcf7_form_elements', 'wptranslate_autotranslate_cf7', 10, 1);
function wptranslate_autotranslate_cf7($content) {
$lang = determine_user_language(); // Ваша логика определения языка
if ($lang !== 'en') {
$content = wptranslate_translate_text($content, $lang);
}
return $content;
}Функция wptranslate_translate_text — обёртка над API машинного перевода.
Реализация функции перевода через Google Translate API
Пример упрощённой функции для отправки текста на Google Translate (требуется API-ключ):
function wptranslate_translate_text($text, $target_lang) {
$apiKey = 'ВАШ_GOOGLE_API_KEY';
$url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;
$data = [
'q' => $text,
'target' => $target_lang,
'format' => 'text'
];
$options = [
'http' => [
'header' => "Content-type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
if (isset($response['data']['translations'][0]['translatedText'])) {
return $response['data']['translations'][0]['translatedText'];
}
return $text;
}Эту функцию можно доработать для кеширования переводов, чтобы не перегружать API.
Особенности и рекомендации при автопереводе форм
Кэширование переводов
Чтобы снизить количество запросов к API и ускорить загрузку, рекомендуется кэшировать переводы в базе данных или transient. Это особенно актуально для часто используемых форм.
Обработка ошибок и fallback
Автоперевод может не сработать из-за проблем с API или лимитов. В таких случаях важно показывать оригинальный текст или заранее подготовленные переводы, чтобы форма не была сломана.
Перевод сообщений валидации и ошибок
Не забудьте перевести сообщения об ошибках и подсказки, которые появляются при валидации. Для Contact Form 7 это можно сделать через фильтры wpcf7_validation_error и wpcf7_display_message, применяя функцию автоперевода.
Выводы и примеры плагинов для автоперевода форм
Для автоматического перевода форм в WordPress подойдут следующие решения:
- Fluent Forms с кастомной интеграцией автоперевода через Google Translate API;
- WPML с расширением String Translation и собственными скриптами автоперевода;
- Contact Form 7 с фильтрами для подмены текста через API машинного перевода.
Все примеры кода можно доработать и адаптировать под конкретные задачи. Если нужно быстрое и удобное решение, можно рассмотреть плагин WPTranslate от WPShop, который упрощает настройку автоперевода для форм и других элементов сайта.