В WordPress сообщения об ошибках часто выводятся на английском языке, что может создавать неудобства для пользователей многоязычных сайтов. В этой статье мы подробно разберём, как добавить автоперевод сообщений об ошибках в WordPress, используя как готовые плагины, так и собственные кодовые решения. Это позволит улучшить пользовательский опыт и сделать сайт более дружелюбным для посетителей с разным языковым бэкграундом.
Почему важно переводить сообщения об ошибках в WordPress
Сообщения об ошибках — это важный элемент взаимодействия пользователя с сайтом. От правильного понимания ошибки зависит, сможет ли пользователь самостоятельно исправить проблему или обратиться в поддержку. Если ошибки показаны на непонятном языке, это затрудняет коммуникацию и негативно сказывается на конверсии и удовлетворённости посетителей.
Для сайтов с мультиязычной аудиторией перевод ошибок — обязательный элемент локализации. Особенно если вы используете кастомные формы, плагины или API, которые выводят собственные сообщения.
В WordPress существует несколько способов реализовать перевод ошибок: использование стандартных функций локализации, автоперевод через API, интеграция с плагинами.
Использование gettext-фильтра для перевода сообщений об ошибках
WordPress использует функцию __() и _e() для вывода локализованных строк. Можно перехватить эти строки и заменить их на перевод с помощью фильтра gettext. Это позволяет динамически менять текст сообщений без правки исходников плагинов и тем.
Пример реализации фильтра автоперевода ошибок
function wptranslate_translate_error_messages( $translated, $text, $domain ) {
$translations = [
'Invalid username.' => 'Неверное имя пользователя.',
'Incorrect password.' => 'Неправильный пароль.',
'You do not have sufficient permissions to access this page.' => 'У вас недостаточно прав для доступа к этой странице.',
];
if ( isset( $translations[$text] ) ) {
return $translations[$text];
}
return $translated;
}
add_filter( 'gettext', 'wptranslate_translate_error_messages', 20, 3 );
В этом примере мы заменяем стандартные ошибки WordPress на русские аналоги. Вы можете расширять массив $translations новыми сообщениями, которые хотите перевести.
Автоматический перевод сообщений об ошибках через API Google Translate
Если у вас большой список ошибок, и их слишком много для ручного перевода, можно интегрировать автоматический перевод с помощью API Google Translate. Для этого потребуется настроить API ключ и написать функцию, которая будет переводить сообщения на лету.
Пример функции автоперевода ошибок с кэшированием
function wptranslate_google_translate( $text, $target_lang = 'ru' ) {
$cache_key = 'wptranslate_trans_' . md5( $text );
$cached = get_transient( $cache_key );
if ( $cached !== false ) {
return $cached;
}
$api_key = 'ВАШ_GOOGLE_API_КЛЮЧ';
$url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;
$args = [
'body' => json_encode([
'q' => $text,
'target' => $target_lang,
'format' => 'text'
]),
'headers' => [
'Content-Type' => 'application/json'
],
'method' => 'POST'
];
$response = wp_remote_post( $url, $args );
if ( is_wp_error( $response ) ) {
return $text; // возвращаем оригинал при ошибке
}
$body = json_decode( wp_remote_retrieve_body( $response ), true );
if ( isset( $body['data']['translations'][0]['translatedText'] ) ) {
$translated_text = $body['data']['translations'][0]['translatedText'];
set_transient( $cache_key, $translated_text, DAY_IN_SECONDS );
return $translated_text;
}
return $text;
}
function wptranslate_autotranslate_errors( $translated, $text, $domain ) {
// Здесь можно добавить фильтр по домену, если нужно
$target_lang = get_locale() === 'ru_RU' ? 'ru' : 'en';
return wptranslate_google_translate( $text, $target_lang );
}
add_filter( 'gettext', 'wptranslate_autotranslate_errors', 15, 3 );
Этот код автоматически переводит любые строки через Google Translate API и кэширует результат на сутки. Чтобы использовать, замените ВАШ_GOOGLE_API_КЛЮЧ на свой ключ.
Использование плагина Clearfy Pro для улучшения перевода ошибок
Плагин Clearfy Pro предлагает расширенные возможности оптимизации и локализации WordPress. В нем есть функции для управления переводами и устранения конфликтов с плагинами, что помогает корректно отображать сообщения об ошибках на нужном языке.
Для работы с ошибками в Clearfy Pro можно использовать встроенные средства редактирования языковых файлов и фильтры для подмены текста. Это удобно, если вы не хотите писать код самостоятельно, но сохранить гибкость.
Советы по отладке и тестированию перевода ошибок
После добавления автоперевода важно проверить, что все сообщения корректно выводятся на нужном языке. Для этого:
- Отключите кэширование на время тестирования.
- Используйте разные роли пользователя, чтобы проверить ошибки доступа.
- Проверьте кастомные формы и плагины, которые могут выводить собственные ошибки.
- Используйте инструменты разработчика браузера для просмотра сетевых запросов и отладочной информации.
Если автоперевод не срабатывает, проверьте приоритеты фильтров и конфликты с другими плагинами, которые могут перехватывать gettext.
Заключение
Добавление автоперевода сообщений об ошибках в WordPress — важный шаг для улучшения мультиязычности сайта. Выбор между ручным переводом через фильтр gettext и автоматическим переводом через API зависит от объема текста и требований к качеству перевода. Использование плагинов, таких как Clearfy Pro, может значительно упростить задачу.
Используйте приведённые примеры кода как основу для своих решений и адаптируйте под конкретные задачи вашего проекта.