You are here

tmgmt_test.plugin.translator.inc in Translation Management Tool 7

Cotains the test translator plugin.

File

tests/tmgmt_test.plugin.translator.inc
View source
<?php

/**
 * @file
 * Cotains the test translator plugin.
 */
class TMGMTTestTranslatorPluginController extends TMGMTDefaultTranslatorPluginController implements TMGMTTranslatorRejectDataItem {

  /**
   * {@inheritdoc}
   */
  protected $escapeStart = '[[[';

  /**
   * {@inheritdoc}
   */
  protected $escapeEnd = ']]]';

  /**
   * {@inheritdoc}
   */
  public function getDefaultRemoteLanguagesMappings() {
    return array(
      'en' => 'en-us',
      'de' => 'de-ch',
    );
  }

  /**
   * {@inheritdoc}
   */
  public function hasCheckoutSettings(TMGMTJob $job) {
    return $job
      ->getTranslator()
      ->getSetting('expose_settings');
  }

  /**
   * {@inheritdoc}
   */
  function requestTranslation(TMGMTJob $job) {

    // Add a debug message.
    $job
      ->addMessage('Test translator called.', array(), 'debug');

    // Do something different based on the action, if defined.
    $action = isset($job->settings['action']) ? $job->settings['action'] : '';
    switch ($action) {
      case 'submit':
        $job
          ->submitted('Test submit.');
        break;
      case 'reject':
        $job
          ->rejected('This is not supported.');
        break;
      case 'fail':

        // Target not reachable.
        $job
          ->addMessage('Service not reachable.', array(), 'error');
        break;
      case 'translate':
      default:

        // The dummy translation prefixes strings with the target language.
        $data = array_filter(tmgmt_flatten_data($job
          ->getData()), '_tmgmt_filter_data');
        $tdata = array();
        foreach ($data as $key => $value) {
          $tdata[$key]['#text'] = $job->target_language . '_' . $value['#text'];
        }
        $job
          ->submitted('Test translation created.');
        $job
          ->addTranslatedData(tmgmt_unflatten_data($tdata));
        break;
    }
  }

  /**
   * {@inheritdoc}
   */
  function canTranslate(TMGMTTranslator $translator, TMGMTJob $job) {
    if (isset($job->settings['action']) && $job->settings['action'] == 'not_translatable') {
      return FALSE;
    }
    return parent::canTranslate($translator, $job);
  }

  /**
   * {@inheritdoc}
   */
  public function getSupportedTargetLanguages(TMGMTTranslator $translator, $source_language) {
    $languages = drupal_map_assoc(array(
      'en',
      'de',
      'es',
      'it',
      'zh-hans',
      'gsw-berne',
    ));
    unset($languages[$source_language]);
    return $languages;
  }

  /**
   * {@inheritdoc}
   */
  public function rejectDataItem(TMGMTJobItem $job_item, array $key, array $values = NULL) {
    $key = '[' . implode('][', $key) . ']';
    $job_item
      ->addMessage('Rejected data item @key for job item @item in job @job.', array(
      '@key' => $key,
      '@item' => $job_item->tjiid,
      '@job' => $job_item->tjid,
    ));
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function rejectForm($form, &$form_state) {
    return $form;
  }

}

Classes

Namesort descending Description
TMGMTTestTranslatorPluginController @file Cotains the test translator plugin.