Введение в автоперевод на WordPress с использованием open source
Автоматический перевод контента на WordPress становится все более востребованной функцией, особенно для сайтов с международной аудиторией. Однако многие решения либо платные, либо завязаны на внешние API с ограничениями и стоимостью. В этой статье мы рассмотрим, как создать собственный автоперевод на основе бесплатных и открытых библиотек, которые можно интегрировать в WordPress — это позволит снизить затраты и получить полный контроль над процессом.
Для примера возьмём библиотеку Argos Translate — open source движок машинного перевода, который можно запустить локально на сервере. Мы покажем, как связать его с WordPress через плагин и хуки, чтобы автоматически переводить новые записи.
Почему стоит выбрать open source решения для автоперевода
Основные преимущества использования open source для автоперевода в WordPress:
- Отсутствие зависимости от платных API. Вы не привязаны к тарифам и ограничениям Google Translate, DeepL и других сервисов.
- Полный контроль и кастомизация. Можно адаптировать словари, модели, улучшать качество перевода под тематику сайта.
- Безопасность и конфиденциальность. Перевод происходит на вашем сервере, не передаются данные третьим сторонам.
Однако стоит учесть, что для работы таких решений необходим сервер с достаточными ресурсами и базовые навыки настройки Python-среды, а также интеграции с PHP через REST API или командную строку.
Установка и настройка Argos Translate на сервере
Первым шагом установим Argos Translate. Для этого потребуется Python 3.6+ и pip. На сервере выполните:
pip install argostranslateЗатем загрузим нужные языковые пакеты. Например, для перевода с английского на русский:
argospm install translate-en_ruПосле установки можно проверить работу перевода через встроенную CLI или создать локальный API, чтобы вызывать перевод из PHP.
Создание простого Python API для перевода
Создадим Flask-приложение, которое будет принимать текст и возвращать перевод:
from flask import Flask, request, jsonify
from argostranslate import package, translate
import argostranslate.package
import argostranslate.translate
app = Flask(__name__)
@app.route('/translate', methods=['POST'])
def wptranslate_translate():
data = request.json
text = data.get('text', '')
from_code = data.get('from', 'en')
to_code = data.get('to', 'ru')
installed_languages = translate.get_installed_languages()
from_lang = next((lang for lang in installed_languages if lang.code == from_code), None)
to_lang = next((lang for lang in installed_languages if lang.code == to_code), None)
if not from_lang or not to_lang:
return jsonify({'error': 'Language not installed'}), 400
translation = from_lang.get_translation(to_lang)
translated_text = translation.translate(text)
return jsonify({'translated_text': translated_text})
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000)Запустите сервер командой python app.py. Теперь у вас локальный API для перевода.
Интеграция автоперевода в WordPress с помощью плагина
Создадим простой плагин, который при публикации записи будет отправлять текст на локальный API Argos Translate и сохранять перевод в мета-поле.
Код плагина wptranslate-autotranslate.php
<?php
/*
Plugin Name: WPTranslate Autotranslate
Description: Автоматический перевод записей с английского на русский через локальный Argos Translate API
Version: 1.0
Author: wptranslate.ru
*/
function wptranslate_autotranslate_translate_post( $post_id ) {
// Проверяем, что это публикация и не автосохранение
if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
return;
}
$post = get_post( $post_id );
if ( $post->post_status !== 'publish' ) {
return;
}
$text = $post->post_content;
if ( empty( $text ) ) {
return;
}
$response = wp_remote_post( 'http://127.0.0.1:5000/translate', [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode([
'text' => $text,
'from' => 'en',
'to' => 'ru',
]),
'timeout' => 10,
]);
if ( is_wp_error( $response ) ) {
error_log( 'WPTranslate: Ошибка перевода - ' . $response->get_error_message() );
return;
}
$body = wp_remote_retrieve_body( $response );
$data = json_decode( $body, true );
if ( ! empty( $data['translated_text'] ) ) {
update_post_meta( $post_id, '_wptranslate_auto_ru', $data['translated_text'] );
}
}
add_action( 'save_post', 'wptranslate_autotranslate_translate_post' );
// Функция вывода перевода в шаблоне
function wptranslate_autotranslate_get_translation( $post_id ) {
return get_post_meta( $post_id, '_wptranslate_auto_ru', true );
}
?>Плагин автоматически переводит содержимое записи при сохранении и сохраняет перевод в метаполе _wptranslate_auto_ru. Вы можете вывести перевод в шаблоне так:
<?php
$translated = wptranslate_autotranslate_get_translation( get_the_ID() );
if ( $translated ) {
echo '<div class="wptranslate-translation">' . esc_html( $translated ) . '</div>';
}
?>Советы по улучшению качества и производительности автоперевода
Качество перевода в open source системах может уступать коммерческим, но его можно улучшать следующими способами:
- Добавлять пользовательские словари — Argos Translate позволяет создавать дополнительные словари для специфической терминологии.
- Кэшировать переводы — сохраняйте переводы в базе, чтобы не делать повторный запрос при каждом отображении.
- Использовать очередь задач — чтобы не задерживать сохранение записи, перевод можно запускать в фоне через wp_cron или сторонние очереди.
Для повышения производительности на сайте рекомендуем также оптимизировать PHP-код и минимизировать количество вызовов внешних сервисов.
Альтернативные плагины и решения для автоперевода на WordPress
Если у вас нет возможности запускать локальный сервер с Python, можно рассмотреть плагины с интеграцией внешних API, например:
- WPGPT — плагин для автоперевода с использованием GPT-4, подходит для сложных текстов и креативных задач.
- Clearfy Pro — широкий набор оптимизаций, включая поддержку мультиязычности и улучшение производительности.
Но главное преимущество open source — отсутствие ограничений и возможность полной кастомизации без дополнительных затрат.