Commit cca38b20 authored by Markus Kalkbrenner's avatar Markus Kalkbrenner Committed by Markus Kalkbrenner
Browse files

Issue #3305522 by mkalkbrenner: Provide drush command to trigger translations

parent 92bbefe4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -20,7 +20,8 @@
        "drupal/tmgmt": "~1.14"
    },
    "suggest": {
        "drupal/search_api_solr": "Currently only the Solr backend provides the source strings for search_api_clir."
        "drupal/search_api_solr": "Currently only the Solr backend provides the source strings for search_api_clir.",
        "drupal/tmgmt_deepl": "Machine translation is sufficient for CLIR."
    },
    "extra": {
        "drush": {

drush.services.yml

0 → 100644
+6 −0
Original line number Diff line number Diff line
services:
  search_api_clir.commands:
    class: Drupal\search_api_clir\Commands\SearchApiClirCommands
    arguments: ['@search_api_clir.job_manager']
    tags:
      - { name: drush.command }
+5 −14
Original line number Diff line number Diff line
@@ -6,19 +6,10 @@ use Drupal\search_api_clir\SearchApiClirSourcePluginUi;
 * Implements hook_cron().
 */
function search_api_clir_cron() {
  $continuous_manager = \Drupal::service('tmgmt.continuous');
  if ($jobs = $continuous_manager->getContinuousJobs(\Drupal::languageManager()->getDefaultLanguage()->getId())) {
    /** @var \Drupal\tmgmt\Entity\Job $job */
    foreach ($jobs as $job) {
      $strings = SearchApiClirSourcePluginUi::loadStrings(NULL, $job->getTargetLangcode());
      foreach ($strings as $string) {
        /** @var \Drupal\tmgmt\Entity\JobItem $item */
        $continuous_manager->addItem($job, 'search_api_clir', 'locale', $string->lid);
      }

      // @todo This behaviour should be configurable. Maybe a human review is
      //   preferred.
      $job->acceptTranslation();
    }
  // @todo All parameters for the cron job must be configurable.
  if (FALSE) {
    /** @var \Drupal\search_api_clir\JobManagerInterface $jobManager */
    $jobManager = \Drupal::service('search_api_clir.job_manager');
    $jobManager->requestTranslations(TRUE, 50, NULL);
  }
}
+4 −0
Original line number Diff line number Diff line
@@ -4,3 +4,7 @@ services:
    arguments: ['@locale.storage', '@language_manager']
    tags:
      - { name: event_subscriber }

  search_api_clir.job_manager:
    class: Drupal\search_api_clir\JobManager
    arguments: ['@language_manager', '@tmgmt.continuous']
+59 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\search_api_clir\Commands;

use Drupal\search_api_clir\JobManagerInterface;
use Drush\Commands\DrushCommands;

/**
 * Defines Drush commands for the Search API Solr.
 */
class SearchApiClirCommands extends DrushCommands {

  /**
   * The job manager.
   *
   * @var \Drupal\search_api_clir\JobManagerInterface
   */
  protected $jobManager;

  /**
   * Constructs a SearchApiClirCommands object.
   *
   * @param \Drupal\search_api_clir\JobManagerInterface $languageManager
   *   The job manager.
   */
  public function __construct(JobManagerInterface $jobManager) {
    parent::__construct();
    $this->jobManager = $jobManager;
  }

  /**
   * Request translations.
   *
   * @param array $options
   *   The options array.
   *
   * @command search-api-clir:request-translations
   *
   * @option language Request translations for a specific language.
   * @option limit Limit the number of translation requests.
   * @option auto-accept Automatically accept requested translations.
   *
   * @default $options []
   *
   * @usage drush search-api-clir:request-translations
   *   Request all pending translations.
   * @usage drush search-api-clir:request-translations --auto-accept
   *   Request all pending translations and automatically accept provided
   *   translations.
   * @usage drush search-api-clir:request-translations --language=fr --limit=100
   *   Request next 100 pending translations for target language 'fr'.
   *
   * @aliases clir-rt
   */
  public function requestTranslations(array $options = ['language' => NULL, 'limit' => NULL, 'auto-accept' => FALSE]): void {
    $this->jobManager->requestTranslations((bool) $options['auto-accept'], $options['limit'], $options['language']);
  }

}
Loading