WP Manifestindependent plugin directory
manifest / ai / wp_translator

Gemini Post Translator

repository for wordpress translator plugin

by AntheZ · github.com/anthez/wp_translator

★ 0stars
0forks

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.zip

Gemini 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 (опціонально): Для автоматичного збереження мета-описів та ключових слів.

Встановлення та налаштування

  1. Важливо! Якщо ви оновлюєте плагін, спочатку деактивуйте, а потім знову активуйте його. Це необхідно для створення та оновлення таблиць у базі даних.
  2. Завантажте папку плагіна у директорію /wp-content/plugins/ вашого сайту.
  3. Активуйте плагін через меню "Плагіни" в WordPress.
  4. Перейдіть в "Gemini Translator" -> "Settings".
  5. Введіть ваш API-ключ від Google Gemini.
  6. (Опціонально) Вкажіть цільову мову та налаштуйте інші опції.

Використання

  1. Перейдіть в головному меню WordPress до "Gemini Translator".
  2. На вкладці "Untranslated" виберіть статті, які хочете перекласти, за допомогою чекбоксів.
  3. Натисніть кнопку "Translate Selected" та дочекайтесь завершення процесу в "Live Log".
  4. Перейдіть на вкладку "Pending Review". Тут з'являться ваші переклади.
  5. Натисніть "Review". У модальному вікні ви побачите оригінал та перекладений контент разом з SEO-даними.
  6. Натисніть "Approve & Save", щоб застосувати переклад та SEO-дані до статті, або "Cancel" для скасування.
  7. Затверджена стаття переміститься на вкладку "Completed". Звідти її можна буде відновити до оригіналу за допомогою кнопки "Restore Original".

Плани на майбутнє / TODO

  • [ ] Пошук по статтях: Додати поле пошуку на "Translation Dashboard".
  • [ ] Групові дії: Додати можливість масового затвердження та відновлення перекладів.
  • [ ] Вибір моделі API: Додати можливість вибирати іншу модель Gemini API.
  • [ ] Редагування в режимі перегляду: Додати можливість вносити правки в переклад безпосередньо у вікні "Review".
  • [ ] Кастомний промпт: Додати можливість редагувати системний промпт для більш гнучкого налаштування результату.

Плани щодо рефакторингу архітектури

Поточний основний файл плагіна admin/class-gemini-translator-admin.php став занадто великим і складним для підтримки. Планується провести масштабний рефакторинг для покращення архітектури, розділення відповідальності та спрощення подальшої розробки.

Запропонована архітектура

Код буде розділено на декілька спеціалізованих класів, кожен з яких відповідатиме за свою частину функціоналу.

  1. Gemini_Translator_Admin (Клас-оркестратор)

    • Відповідальність: Ініціалізація плагіна та всіх інших класів. Реєстрація основних хуків WordPress (admin_menu, wp_ajax_*) та делегування їх виконання відповідним обробникам в інших класах.
    • Результат: Цей клас буде дуже "тонким" і слугуватиме точкою входу для адміністративної частини плагіна.
  2. Gemini_Translator_Dashboard

    • Відповідальність: Управління сторінкою "Translation Dashboard". Включатиме в себе логіку класу Gemini_Translator_Posts_List_Table (який також може бути винесений в окремий файл), відображення UI, підключення та ініціалізація JavaScript.
    • Результат: Ізоляція всього, що стосується головної сторінки плагіна.
  3. Gemini_Translator_Settings

    • Відповідальність: Управління сторінкою налаштувань. Реєстрація секцій та полів налаштувань за допомогою WordPress Settings API, їх відображення та збереження.
    • Результат: Чітке відокремлення логіки конфігурації плагіна.
  4. Gemini_Translator_Ajax

    • Відповідальність: Обробка всіх AJAX-запитів. Цей клас міститиме методи, які прив'язуються до хуків wp_ajax_*. Його завдання — валідувати вхідні дані (nonce, post_id тощо) та викликати відповідні методи з сервісних класів для виконання основної роботи.
    • Результат: Централізоване місце для всієї AJAX-логіки.
  5. Gemini_Translator_API

    • Відповідальність: Взаємодія з Google Gemini API. Формування тіла запиту, відправка запиту через wp_remote_post, обробка відповідей (включно з помилками та лімітами), логіка повторних спроб (retry logic), розбір JSON.
    • Результат: Інкапсуляція всієї комунікації зі стороннім сервісом.
  6. Gemini_Translator_Service

    • Відповідальність: Основна бізнес-логіка плагіна. Координація процесу перекладу, розбивка контенту на частини (split_content_for_translation), управління тимчасовими мета-полями, збирання фінального перекладу та виклик методів для збереження в базу даних.
    • Результат: Ядро плагіна, яке не залежить від конкретної реалізації UI чи AJAX.
  7. Gemini_Translator_DB

    • Відповідальність: Управління всіма операціями з базою даних, що стосуються кастомних таблиць (wp_gemini_originals, wp_gemini_translations). Методи для збереження, оновлення, видалення та отримання даних (save_translation, get_review_data і т.д.).
    • Результат: Абстракція над базою даних, що дозволяє легко змінювати структуру таблиць в одному місці.
  8. 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 або новіша