Gemini Post Translator
repository for wordpress translator plugin
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/anthez/wp_translator/archive/refs/heads/main.zipGemini Post Translator для WordPress
Це потужний плагін для WordPress, який використовує Google Gemini API для перекладу та SEO-оптимізації ваших статей, надаючи повний контроль над процесом через зручний інтерфейс.
Основний функціонал
- Безпечний робочий процес: Переклади не перезаписують оригінальні статті миттєво. Вони зберігаються в окрему таблицю для вашого перегляду та затвердження.
- Резервне копіювання: Перед першим перекладом плагін автоматично створює резервну копію оригінальної статті. Ви можете відновити її в будь-який момент одним кліком.
- SEO-оптимізація: Під час перекладу плагін не просто перекладає текст, а й генерує:
- Оптимізований для SEO заголовок.
- Мета-опис (meta description).
- Ключові слова (meta keywords).
- Інтеграція з Yoast SEO: При затвердженні перекладу згенеровані мета-опис та ключове слово (перше зі списку) автоматично зберігаються у відповідні поля плагіна Yoast SEO.
- Централізована панель управління (Dashboard): Всі операції відбуваються на одній сторінці "Translation Dashboard", яка має власний пункт в головному меню WordPress.
- Фільтрація та статуси: Легко знаходьте потрібні статті за допомогою фільтрів за статусом (
Untranslated,Pending Review,Completed) та за категоріями. - Пакетна обробка: Вибирайте та перекладайте багато статей одночасно. Процес обробки великих статей автоматично розбивається на частини для стабільної роботи.
- Режим перегляду "пліч-о-пліч": Перед затвердженням ви можете порівняти оригінал та переклад (включно з усіма SEO-даними) у зручному модальному вікні.
- Налаштування та логування: Гнучка сторінка налаштувань дозволяє вказати ваш API-ключ, цільову мову, затримку між запитами та увімкнути/вимкнути детальний лог для діагностики.
Управління лімітами API (Rate Limit Management)
Плагін розроблено з урахуванням безкоштовних лімітів Google Gemini API.
- Контрольована пакетна обробка: Процес пакетного перекладу відправляє запити послідовно, а не паралельно.
- Регульована затримка: На сторінці налаштувань є опція "Batch Delay", яка дозволяє встановити паузу (в секундах) між запитами на переклад. За замовчуванням встановлено значення, яке допомагає залишатись в межах стандартних лімітів.
Вимоги
- WordPress: 5.0 або вище
- PHP: 7.4 або вище
- Yoast SEO (опціонально): Для автоматичного збереження мета-описів та ключових слів.
Встановлення та налаштування
- Важливо! Якщо ви оновлюєте плагін, спочатку деактивуйте, а потім знову активуйте його. Це необхідно для створення та оновлення таблиць у базі даних.
- Завантажте папку плагіна у директорію
/wp-content/plugins/вашого сайту. - Активуйте плагін через меню "Плагіни" в WordPress.
- Перейдіть в "Gemini Translator" -> "Settings".
- Введіть ваш API-ключ від Google Gemini.
- (Опціонально) Вкажіть цільову мову та налаштуйте інші опції.
Використання
- Перейдіть в головному меню WordPress до "Gemini Translator".
- На вкладці "Untranslated" виберіть статті, які хочете перекласти, за допомогою чекбоксів.
- Натисніть кнопку "Translate Selected" та дочекайтесь завершення процесу в "Live Log".
- Перейдіть на вкладку "Pending Review". Тут з'являться ваші переклади.
- Натисніть "Review". У модальному вікні ви побачите оригінал та перекладений контент разом з SEO-даними.
- Натисніть "Approve & Save", щоб застосувати переклад та SEO-дані до статті, або "Cancel" для скасування.
- Затверджена стаття переміститься на вкладку "Completed". Звідти її можна буде відновити до оригіналу за допомогою кнопки "Restore Original".
Плани на майбутнє / TODO
- [ ] Пошук по статтях: Додати поле пошуку на "Translation Dashboard".
- [ ] Групові дії: Додати можливість масового затвердження та відновлення перекладів.
- [ ] Вибір моделі API: Додати можливість вибирати іншу модель Gemini API.
- [ ] Редагування в режимі перегляду: Додати можливість вносити правки в переклад безпосередньо у вікні "Review".
- [ ] Кастомний промпт: Додати можливість редагувати системний промпт для більш гнучкого налаштування результату.
Плани щодо рефакторингу архітектури
Поточний основний файл плагіна admin/class-gemini-translator-admin.php став занадто великим і складним для підтримки. Планується провести масштабний рефакторинг для покращення архітектури, розділення відповідальності та спрощення подальшої розробки.
Запропонована архітектура
Код буде розділено на декілька спеціалізованих класів, кожен з яких відповідатиме за свою частину функціоналу.
-
Gemini_Translator_Admin(Клас-оркестратор)- Відповідальність: Ініціалізація плагіна та всіх інших класів. Реєстрація основних хуків WordPress (
admin_menu,wp_ajax_*) та делегування їх виконання відповідним обробникам в інших класах. - Результат: Цей клас буде дуже "тонким" і слугуватиме точкою входу для адміністративної частини плагіна.
- Відповідальність: Ініціалізація плагіна та всіх інших класів. Реєстрація основних хуків WordPress (
-
Gemini_Translator_Dashboard- Відповідальність: Управління сторінкою "Translation Dashboard". Включатиме в себе логіку класу
Gemini_Translator_Posts_List_Table(який також може бути винесений в окремий файл), відображення UI, підключення та ініціалізація JavaScript. - Результат: Ізоляція всього, що стосується головної сторінки плагіна.
- Відповідальність: Управління сторінкою "Translation Dashboard". Включатиме в себе логіку класу
-
Gemini_Translator_Settings- Відповідальність: Управління сторінкою налаштувань. Реєстрація секцій та полів налаштувань за допомогою WordPress Settings API, їх відображення та збереження.
- Результат: Чітке відокремлення логіки конфігурації плагіна.
-
Gemini_Translator_Ajax- Відповідальність: Обробка всіх AJAX-запитів. Цей клас міститиме методи, які прив'язуються до хуків
wp_ajax_*. Його завдання — валідувати вхідні дані (nonce,post_idтощо) та викликати відповідні методи з сервісних класів для виконання основної роботи. - Результат: Централізоване місце для всієї AJAX-логіки.
- Відповідальність: Обробка всіх AJAX-запитів. Цей клас міститиме методи, які прив'язуються до хуків
-
Gemini_Translator_API- Відповідальність: Взаємодія з Google Gemini API. Формування тіла запиту, відправка запиту через
wp_remote_post, обробка відповідей (включно з помилками та лімітами), логіка повторних спроб (retry logic), розбір JSON. - Результат: Інкапсуляція всієї комунікації зі стороннім сервісом.
- Відповідальність: Взаємодія з Google Gemini API. Формування тіла запиту, відправка запиту через
-
Gemini_Translator_Service- Відповідальність: Основна бізнес-логіка плагіна. Координація процесу перекладу, розбивка контенту на частини (
split_content_for_translation), управління тимчасовими мета-полями, збирання фінального перекладу та виклик методів для збереження в базу даних. - Результат: Ядро плагіна, яке не залежить від конкретної реалізації UI чи AJAX.
- Відповідальність: Основна бізнес-логіка плагіна. Координація процесу перекладу, розбивка контенту на частини (
-
Gemini_Translator_DB- Відповідальність: Управління всіма операціями з базою даних, що стосуються кастомних таблиць (
wp_gemini_originals,wp_gemini_translations). Методи для збереження, оновлення, видалення та отримання даних (save_translation,get_review_dataі т.д.). - Результат: Абстракція над базою даних, що дозволяє легко змінювати структуру таблиць в одному місці.
- Відповідальність: Управління всіма операціями з базою даних, що стосуються кастомних таблиць (
-
Gemini_Translator_Logger- Відповідальність: Спрощений клас для ведення логів. Забезпечення єдиного формату логування, перевірка, чи ввімкнене логування в налаштуваннях.
- Результат: Покращена та централізована система логування.
Структура файлів (пропозиція)
wp-gemini-translator/
├── admin/
│ ├── class-gemini-translator-admin.php # Головний клас-оркестратор
│ ├── class-gemini-translator-ajax.php # Обробник AJAX
│ ├── class-gemini-translator-dashboard.php # Логіка сторінки Dashboard
│ ├── class-gemini-translator-settings.php # Логіка сторінки налаштувань
│ └── views/
│ ├── view-dashboard.php # HTML для дашборду
│ └── view-settings.php # HTML для налаштувань
├── includes/
│ ├── class-gemini-translator.php # Головний клас плагіна
│ ├── class-gemini-translator-api.php # Робота з API
│ ├── class-gemini-translator-db.php # Робота з БД
│ ├── class-gemini-translator-service.php # Сервісна логіка
│ ├── class-gemini-translator-logger.php # Логер
│ └── class-gemini-translator-posts-list-table.php # Таблиця постів
├── assets/
│ └── js/
│ └── gemini-translator-admin.js # Весь JavaScript
└── ...
Ліцензія
GPLv2 або новіша