Плагин ИИ-перевода для сайта (WordPress)
ИИ-плагин переводит сайт целиком: страницы, меню, ссылки, SEO-теги, строки тем и плагинов, интернет-магазин. Ничего не нужно дублировать вручную.
Посмотреть как работает плагин перевода SDWSKi Translate можно на этом сайте и в моем блоге. Для перевода развернута и подключена модель GPT 5.6 sol, а также Deepl API (бесплатно).
SDWSKi Translate — собственная разработка: WordPress-плагин для превращения одноязычного сайта в многоязычный. Он работает на уровне готового HTML-вывода, поэтому не зависит от темы, конструктора страниц или структуры контента. Перевод выполняют Azure Translator, Azure OpenAI (GPT) или DeepL. Любой перевод можно поправить вручную, и правка больше никогда не будет перезаписана.
Коротко в цифрах
- 55 языков и региональных вариантов (включая en-GB, pt-BR, es-MX, es-AR, китайский упрощённый и традиционный);
- 3 движка перевода с автоматическим переключением друг на друга;
- 8 вкладок в админке, визуальный редактор «кликни на текст — переведи»;
- переводы хранятся в базе данных вашего сайта, без внешних сервисов-посредников.
Как это работает
Большинство мультиязычных плагинов копируют записи и держат отдельные версии каждой страницы. SDWSKi Translate устроен иначе.
- Перехват вывода. На странице нужного языка плагин перехватывает готовый HTML до отправки в браузер и разбирает его как DOM-дерево.
- Поиск переводимого. Из дерева извлекаются текстовые узлы и атрибуты:
alt,title,placeholder, значения кнопок, а также<title>, meta description,og:title,og:description,og:site_name,twitter:title,twitter:description. - Словарь. Для каждого языка в базе есть отдельная таблица-словарь «оригинал → перевод». Известные строки подставляются мгновенно, без запросов во внешние API.
- Фоновый перевод. Новые строки попадают в очередь, и фоновая задача переводит их пачками сразу на все целевые языки.
- Защита от «сырого» вывода. Пока перевод страницы не готов, посетитель и поисковик не увидят исходный текст на чужом языке (подробнее — в разделе про SEO).
Так как плагин работает с итоговой разметкой, он переводит и то, что обычными способами не достать: тексты из шаблонов темы, виджеты, кнопки, подписи форм, сообщения WooCommerce, уведомления и текст, пришедший через AJAX.
Автоматический режим перевода
Вы подключаете свой ключ Azure или DeepL, выбираете языки, и плагин делает всё сам. Платите вы напрямую провайдеру по его тарифам, плагин ничего не берёт сверху.
- Azure Translator — быстрый и недорогой машинный перевод.
- Azure OpenAI (GPT) — контекстный перевод уровня языковой модели: естественнее звучит, лучше держит тон, дороже и медленнее. Работает через развёртывание, например
gpt-4oилиgpt-4o-mini, с настраиваемым endpoint, ключом и версией API. - DeepL — резервный движок. Ключи бесплатного тарифа (
:fx) определяются автоматически, подключается нужный хост API.
Автоматический fallback. Если выбранный движок отвечает ошибкой (закончилась квота, истёк ключ, сбой сервиса), плагин сам пробует следующий по цепочке: основной движок → Azure Translator → Azure OpenAI → DeepL. Перевод продолжается без вмешательства администратора. Для каждого движка есть кнопка проверки соединения.
Ручной режим перевода
Весь перевод можно делать руками, без внешних сервисов и без ключей. Для этого есть визуальный редактор и таблица всех строк.
Визуальный редактор перевода
Откройте любую страницу сайта в режиме редактора: слева панель, справа живое превью. Кликните на любой текст на странице (заголовок, абзац, пункт меню, кнопку, подпись картинки), и он откроется в панели.
- оригинал и перевод рядом, выбор языка перевода и строки из списка;
- кнопка Auto — автоперевод одной строки движком по запросу;
- Save / Discard, горячие клавиши (
Ctrl+S— сохранить,Ctrl+Alt+стрелки— переход между строками); - ссылка на редактор в админ-панели сайта (admin bar);
- корректно ловит клики в выпадающих меню тем, в том числе с
stopPropagation; - различает одинаковые тексты на странице (например, заголовок и ссылка в меню с одним и тем же словом);
- поддерживает меню на иврите, греческом, хинди, тайском, грузинском и армянском.
Таблица всех строк («Translations»)
Единый список всех переводов сайта.
- поиск и фильтры: все / переведённые / непереведённые / машинные / проверенные человеком;
- правка прямо в таблице, сохранение по строке;
- массовое действие Auto-translate selected;
- экспорт в CSV;
- любая ручная правка получает статус «Human reviewed».
Защита ручных правок
У каждого перевода есть статус: не переведено, машинный, проверено человеком, ошибка, premium. Строки со статусом «проверено человеком» автоматический перевод никогда не перезаписывает, даже при повторном проходе. Автопереводы не удаляются автоматически ни при каких условиях: все переводы принадлежат вам и хранятся в вашей базе.
Переводимое содержимое
- записи, страницы, произвольные типы записей;
- заголовки, текст, отрывки, подписи,
altу картинок; - навигационные меню;
- названия и слаги рубрик и меток;
- строки тем и плагинов (всё, что идёт через
__(),_e(),_n()); - виджеты и динамический вывод;
- SEO-мета: Yoast SEO, Rank Math, SEOPress, All in One SEO;
- ответы REST API (записи, страницы, медиа, таксономии);
- AJAX-ответы фронтенда;
- Custom HTML-блоки Gutenberg переводятся отдельным безопасным проходом, который не ломает разметку.
Язык, URL и слаги
- префиксы языков в адресах:
site.com/es/…,site.com/de/…; - опциональный префикс и для языка по умолчанию;
- работает как на корне домена, так и при установке WordPress в подпапку;
- перевод слагов:
/contact/→/es/contacto/, с автоматической конвертацией переведённого адреса обратно в исходный до маршрутизации WordPress; - перевод слагов запланированных (future) записей создаётся в момент планирования;
- принудительная подстановка языка во внутренние ссылки;
- у каждого языка можно задать свой слаг. Например, белорусский: адрес
/by/, бейдж «BY», но внутренний ISO-кодbeдля API иbeв hreflang остаются стандартными; - автоопределение языка по браузеру (заголовок
Accept-Language) с редиректом при первом заходе, с cookie на 24 часа против циклов.
Переключатель языков
- плавающая кнопка в любом углу страницы (4 позиции) с настраиваемым стилем;
- шорткод
для вставки в любое место, со своим стилем; - пункт меню «Language Switcher»: добавляется в Внешний вид → Меню и разворачивается в элементы по числу языков;
- стили отображения: флаги + полные названия, флаги + короткие коды, только флаги, только названия, только коды;
- названия языков — на родном языке («Español», «Deutsch», «Русский»);
- порядок языков меняется перетаскиванием на вкладке «Languages»;
- встроенный флаговый шрифт, чтобы флаги корректно отображались на Windows и в Linux, где системные шрифты флаги не рисуют.
Языки и письменность
- 55 языков и региональных вариантов, включая: английский (США, Великобритания, Австралия), испанский (Испания, Аргентина, Мексика), португальский (Португалия, Бразилия), китайский (упрощённый, традиционный), арабский, иврит, хинди, японский, корейский, тайский, вьетнамский, турецкий, украинский, русский, белорусский, литовский, латышский, эстонский, польский, чешский, словацкий, греческий, персидский, урду, эсперанто и другие;
- поддержка RTL для арабского, иврита, персидского и урду;
- автоматическая подгрузка веб-шрифтов Noto для языков, которых нет в шрифте темы (деванагари, китайский, японский, корейский, арабский, тайский, иврит, грузинский, и т. д.). Вместо пустых квадратиков текст отображается нормально. Иконочные шрифты не затрагиваются, функцию можно отключить;
- региональные словари: плагин дополнительно подправляет лексику вариантов вроде pt-PT/pt-BR, en-GB/en-AU, es-AR/es-MX, чтобы региональные страницы реально отличались и не склеивались поисковиками. Словари расширяются фильтром.
Качество перевода и защита контента
Машинный перевод ломает вёрстку, шорткоды и бренды. SDWSKi Translate защищает от этого на нескольких уровнях:
- защита HTML-сущностей и шорткодов —
©,[shortcode], плейсхолдеры%s,%1$s,{name}остаются нетронутыми; - список «Do not translate»: бренды, коды товаров, аббревиатуры; название сайта защищается автоматически;
- проверки результата: плейсхолдеры сохранены, перевод написан нужной письменностью, нет посторонних символов, защищённые слова не повреждены. Плохой ответ отбрасывается и переводится заново, а не сохраняется;
- повтор с изоляцией брендов, если модель испортила защищённое слово (например, тайский обрезает «WordPress» на последней букве);
- принудительный глоссарий для случаев, когда модель систематически ошибается (расширяется фильтром);
- обнаружение чужого языка: если тема уже отдала текст на языке посетителя, плагин не примет его за исходник и не станет ни переводить, ни размножать по другим языкам;
- API-ключи, токены и хэши не отправляются на перевод.
Изображения по языкам
Вкладка «Images» позволяет подменить любую картинку на локализованную версию: логотип, инфографику, скриншот, баннер с текстом. Плагин сам находит картинки, которые встречаются на переведённых страницах, и регистрирует их в списке, а вы подставляете версию для нужного языка из медиабиблиотеки. Подмена работает и для src, и для srcset.
Роли и доступ
- отдельная роль Translator (переводчик): доступ к визуальному редактору без доступа к настройкам сайта;
- права
sdwski_translateиsdwski_manage; - все действия защищены nonce и проверкой прав.
Видимость по языкам
Для каждой записи можно указать, на каких языках она показывается, включая исходный язык. Например, русская новость, которая не нужна на английской версии. Ограничения учитываются в листингах, меню и sitemap-е, а прямая ссылка на уже существующую запись продолжает открываться без 404. Для записей без ограничений ничего не меняется, настройка полностью обратно совместима.
Мета-бокс в редакторе записи
В редакторе записи есть панель «Re-translate»: перевод конкретной записи можно запустить заново. Видимость по языкам доступна в самом редакторе (классическом и блочном).
SEO
Мультиязычность без SEO не работает, поэтому это одна из основных частей плагина.
- hreflang в
<head>каждой страницы и в sitemap, взаимные ссылки между всеми языковыми версиями иx-default; - отдельный
<url>на каждый язык в sitemap, как рекомендует Google, с корректно объявленным пространством имёнxhtml; - интеграция с sitemap: ядро WordPress, Yoast SEO, Rank Math, SEOPress, All in One SEO;
- в
<loc>всегда канонический адрес исходного языка, а/sitemap.xmlи/robots.txtникогда не получают языковой префикс; - перевод SEO-мета: title, description, Open Graph и Twitter-теги;
- составной
<title>вида «Запись — Сайт — Слоган» берётся с отрендеренной страницы и переводится заранее, до первого визита; - исправление
<html lang>на текущий язык и восстановление пустого<title>, если SEO-плагин собрал шапку раньше, чем стал известен язык; - SEO Gate: пока страница на языке не переведена, она отдаёт HTTP 503 с
Retry-After,noindexи аккуратной заглушкой «перевод готовится» вместо английского текста на/es/. В архивах, главной и поиске ещё не переведённые записи скрываются. Заглушка локализована на десятки языков. Если заголовок так и не удаётся перевести, срабатывает fail-open, и страница не остаётся закрытой навсегда; - перевод названий и слагов рубрик и меток, чтобы
/pt-br/tag/…был действительно на португальском.
Интеграция с WooCommerce
Для интернет-магазинов у плагина отдельный слой совместимости:
- перевод названий, описаний, атрибутов и вариаций товаров;
- Cart и Checkout на блоках: перевод ответов Store API (
/wc/store/v1/*) и гидратации блоков, где данные идут через JSON, а не через HTML; - принудительные правильные слаги системных страниц магазина (корзина, оформление заказа, мой аккаунт, магазин) для основных языков;
- перевод подписей полей адреса, региональных названий и текстов форм;
- Язык покупателя сохраняется в заказе, и письма WooCommerce уходят на языке, на котором клиент оформлял покупку: подтверждения, статусы, возвраты, заметки к заказу, сброс пароля, подписки;
- перевод тела писем (HTML и plain text) и определение языка получателя;
- язык клиента запоминается при регистрации и входе, его можно поменять в профиле («язык писем»);
- связка язык ↔ валюта при использовании мультивалютного плагина WCMC: смена языка может переключать валюту;
- защита платёжных AJAX-запросов (Stripe и др.): токены и client secret не трогаются;
- очистка внутренних служебных обёрток из заметок заказов и метаданных.
Отдельно учтены известные проблемы блоков WooCommerce: обрезание описаний в Cart/Checkout на локалях с некорректным переводом служебной подсказки и определение языка запросов Store API, у которых нет языкового префикса в URL.
Фоновая очередь и производительность
- Перевод идёт параллельно на все языки (curl_multi). Сайт на 10 языках переводится примерно за то же время, что и на 1–2.
- Событийная модель: плагин не «тикает» вечно по расписанию. Перевод запускается, когда реально появился повод: автор сохранил запись, запись запланирована, или на странице обнаружена новая непереведённая строка. Очередь, закончившись, сама останавливается. Нет повода, нет и платных запросов к API.
- Защита от лишних списаний. Повторный перевод запускается только при настоящей ручной правке записи в редакторе (классический редактор, быстрое редактирование, Gutenberg). Программные сохранения от cron-задач, других плагинов, импортов и REST-интеграций расход токенов не вызывают. Изменения определяются по MD5-хэшу содержимого.
- Приоритеты очереди: запланированные записи переводятся первыми, затем новые записи раньше старых.
- Устойчивость к сбоям: временные сбои движка (таймаут, ошибка сервера) не считаются попытками и повторяются бесконечно, а окончательные отказы ограничены счётчиком, чтобы очередь не застревала. Контроль памяти и блокировка от параллельных запусков.
- Автовосстановление: застрявшие строки, которые остались от прошлого сбоя движка, при обновлении возвращаются в очередь автоматически.
- Кэширование: transients и группа объектного кэша; одна кнопка сбрасывает кэши плагина, WordPress и популярные кэширующие плагины (LiteSpeed, WP Rocket, W3 Total Cache, WP Super Cache).
- Админ-панель процесса: прогресс-бары по каждому языку (всего, переведено, машинных, проверенных человеком), кнопки Start / Stop / Reset, предупреждения о «застрявших» переводах с возможностью повторить или проигнорировать, диагностика «почему ничего не запускается» (ключ, память, WP-Cron, следующий запуск).
- Инструменты обслуживания: сброс кэшей, ремонт словаря и объединение дубликатов, очистка языка.
Архитектура и надёжность
- Чистая PHP 8+ архитектура: ядро-синглтон и ~27 классов с автозагрузкой, у каждого своя зона ответственности (рендер, словари, SEO, URL, WooCommerce, редактор и т. д.).
- Собственные таблицы БД: словарь и gettext-таблица на каждый язык, таблицы оригиналов и подмен изображений, индексы и полнотекстовый поиск.
- Защита от повторной загрузки файла плагина, миграции настроек и данных при обновлениях (в том числе миграция старых префиксов опций).
- Безопасность: nonce на всех AJAX-действиях, проверка прав,
wp_unslashи санитизация всех входных данных, подготовленные SQL-запросы, безопасные редиректы (wp_safe_redirect). - Совместимость с WordPress 6.0+ и PHP 8.0+, протестировано с WordPress 7.0.
- Лицензия GPL v2 или новее, исходный код открыт для аудита.
- Подключаемый интерфейс: фильтры
sdwski_no_translate_xpath,sdwski_translation_glossary,sdwski_regional_dictionary,sdwski_load_webfonts,sdwski_load_flag_font,sdwski_allow_hash_invalidationи др. - Страница настроек: вкладки General, Languages, Machine Translation, Language Switcher, Translation Process, Translations, Images и Support.
Для кого
- сайты-визитки и корпоративные сайты, которым нужны несколько языков без ручного дублирования;
- медиа и блоги с постоянно выходящими материалами: новые публикации переводятся автоматически;
- интернет-магазины на WooCommerce с покупателями из разных стран, включая письма и корзину;
- агентства и фрилансеры, сдающие мультиязычные сайты клиентам: роль «Переводчик», ручная правка и экспорт.
Цены
Обновления плагина в течение двух лет. Вы получаете плагин с инструкцией и подключаете его сами. Нужен собственный ключ Microsoft Azure Translator или DeepL API.
Аккаунт Azure и движок перевода
Лицензия на 2 года и обновления в срока действия лицензии. Я сам установлю плагин, подключу переводчик, адаптирую его под ваш проект и проверю, что всё работает. Вам остаётся дать доступ к сайту.
Аккаунт Azure и движок перевода
Всё из варианта «Плагин + настройка», но обновления и поддержка плагина без ограничения по сроку. Подходит, если перевод — важная часть бизнеса и плагин должен работать годами.