wplangs.ru wordpress WP Langs

Как создать полифонический плагин WordPress для автоперевода с примерами кода

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

Что такое полифонический плагин для автоперевода WordPress

Термин «полифонический» здесь мы используем в смысле поддержки множества языков и адаптации перевода для разных контекстов. Такой плагин объединяет в себе возможность подключения к разным API перевода, поддержку локализации WordPress (i18n), а также гибкое управление языковыми версиями контента.

Основная задача — автоматизировать перевод статей, метаданных, форм и даже сообщений об ошибках, сохраняя при этом возможность ручной корректировки перевода.

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

Для реализации автоперевода можно использовать популярные API:

  • Google Translate API — платный, но мощный сервис с поддержкой 100+ языков.
  • DeepL API — отлично подходит для качественного перевода, особенно для европейских языков.
  • Microsoft Translator — интегрируется через Azure, имеет гибкие тарифы.

В примерах ниже мы используем Google Translate API для демонстрации.

Регистрация и получение ключа Google Translate API

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

Основные шаги создания плагина автоперевода

Опишем поэтапно основные блоки, которые нужно реализовать.

1. Инициализация плагина и регистрация языков

Создаём главный файл плагина с необходимой структурой и регистрацией текстового домена для локализации.

<?php
/*
Plugin Name: WPLangs AutoTranslate
Description: Полифонический плагин для автоперевода контента WordPress
Version: 1.0
Text Domain: wplangs-autotranslate
*/

function wplangs_autotranslate_load_textdomain() {
    load_plugin_textdomain('wplangs-autotranslate', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wplangs_autotranslate_load_textdomain');

2. Добавление настроек API и выбор языков

Создаём административную страницу для ввода ключа API и выбора языков перевода.

Для этого используем стандартные методы WordPress Settings API. В настройках можно указать исходный язык и целевые языки.

3. Функция вызова API перевода

Создаём функцию для обращения к Google Translate API с передачей текста и языков.

function wplangs_autotranslate_translate_text($text, $source_lang, $target_lang) {
    $api_key = get_option('wplangs_autotranslate_api_key');
    if (empty($api_key) || empty($text) || $source_lang === $target_lang) {
        return $text;
    }
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . urlencode($api_key);
    $data = [
        'q' => $text,
        'source' => $source_lang,
        'target' => $target_lang,
        'format' => 'text'
    ];
    $response = wp_remote_post($url, [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json'
        ]
    ]);
    if (is_wp_error($response)) {
        return $text;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    if (!empty($body['data']['translations'][0]['translatedText'])) {
        return $body['data']['translations'][0]['translatedText'];
    }
    return $text;
}

4. Автоматический перевод содержимого постов

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

function wplangs_autotranslate_save_post($post_id) {
    $post = get_post($post_id);
    if ($post->post_type !== 'post' || wp_is_post_revision($post_id)) {
        return;
    }
    $source_lang = get_option('wplangs_autotranslate_source_lang', 'en');
    $target_langs = get_option('wplangs_autotranslate_target_langs', []);
    foreach ($target_langs as $target_lang) {
        if ($target_lang === $source_lang) continue;

        $translated_title = wplangs_autotranslate_translate_text($post->post_title, $source_lang, $target_lang);
        $translated_content = wplangs_autotranslate_translate_text($post->post_content, $source_lang, $target_lang);

        // Создаём или обновляем перевод
        $translated_post = [
            'post_title' => $translated_title,
            'post_content' => $translated_content,
            'post_status' => 'publish',
            'post_type' => 'post',
            'post_parent' => $post_id
        ];

        // Ищем уже существующий перевод
        $existing = new WP_Query([
            'post_type' => 'post',
            'post_parent' => $post_id,
            'meta_key' => '_wplangs_lang_code',
            'meta_value' => $target_lang
        ]);

        if ($existing->have_posts()) {
            $translated_post['ID'] = $existing->posts[0]->ID;
            wp_update_post($translated_post);
        } else {
            $new_post_id = wp_insert_post($translated_post);
            if ($new_post_id) {
                update_post_meta($new_post_id, '_wplangs_lang_code', $target_lang);
            }
        }
    }
}
add_action('save_post', 'wplangs_autotranslate_save_post');

Дополнительные возможности и улучшения

Оптимизация работы с кэшем

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

Перевод метаданных и пользовательских полей

Чтобы обеспечить полный перевод сайта, необходимо добавить поддержку перевода метаданных, например, SEO-тегов, описаний, а также пользовательских полей. Для этого можно расширить функцию автоперевода, перебирая метаданные с помощью get_post_meta и переводя нужные поля.

Интеграция с WPML или Polylang

Для удобного управления многоязычностью и связью переводов между собой можно добавить совместимость с популярными плагинами WPML или Polylang с помощью их API. Это позволит сделать плагин более гибким и расширяемым.

Пример использования на сайте

После установки и настройки плагина на странице настроек вводим API ключ Google Translate, выбираем исходный язык (например, en) и целевые языки (ru, de, fr). При создании или обновлении поста автоматически формируются переводы, которые сохраняются как дочерние записи с метаинформацией о языке. Это позволяет легко выводить переключатель языков на сайте и показывать переводы без ручного труда.

Заключение

Создание собственного полифонического плагина для автоперевода в WordPress — задача вполне выполнимая и полезная для сайтов с многоязычной аудиторией. Использование API перевода, правильная организация хранения языковых версий и интеграция с системой локализации WordPress позволяют сделать качественный инструмент без лишних затрат на сторонние сервисы.

Если хотите упростить процесс, рекомендуем обратить внимание на готовые решения из плагинов WPShop, например WPGPT, который расширяет возможности автоперевода с помощью ИИ.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше