tmgmt_test.plugin.translator.inc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * @file
  4. * Cotains the test translator plugin.
  5. */
  6. class TMGMTTestTranslatorPluginController extends TMGMTDefaultTranslatorPluginController implements TMGMTTranslatorRejectDataItem {
  7. /**
  8. * {@inheritdoc}
  9. */
  10. protected $escapeStart = '[[[';
  11. /**
  12. * {@inheritdoc}
  13. */
  14. protected $escapeEnd = ']]]';
  15. /**
  16. * {@inheritdoc}
  17. */
  18. public function getDefaultRemoteLanguagesMappings() {
  19. return array(
  20. 'en' => 'en-us',
  21. 'de' => 'de-ch',
  22. );
  23. }
  24. /**
  25. * {@inheritdoc}
  26. */
  27. public function hasCheckoutSettings(TMGMTJob $job) {
  28. return $job->getTranslator()->getSetting('expose_settings');
  29. }
  30. /**
  31. * {@inheritdoc}
  32. */
  33. function requestTranslation(TMGMTJob $job) {
  34. // Add a debug message.
  35. $job->addMessage('Test translator called.', array(), 'debug');
  36. // Do something different based on the action, if defined.
  37. $action = isset($job->settings['action']) ? $job->settings['action'] : '';
  38. switch ($action) {
  39. case 'submit':
  40. $job->submitted('Test submit.');
  41. break;
  42. case 'reject':
  43. $job->rejected('This is not supported.');
  44. break;
  45. case 'fail':
  46. // Target not reachable.
  47. $job->addMessage('Service not reachable.', array(), 'error');
  48. break;
  49. case 'translate':
  50. default:
  51. // The dummy translation prefixes strings with the target language.
  52. $data = array_filter(tmgmt_flatten_data($job->getData()), '_tmgmt_filter_data');
  53. $tdata = array();
  54. foreach ($data as $key => $value) {
  55. $tdata[$key]['#text'] = $job->target_language . '_' . $value['#text'];
  56. }
  57. $job->submitted('Test translation created.');
  58. $job->addTranslatedData(tmgmt_unflatten_data($tdata));
  59. break;
  60. }
  61. }
  62. /**
  63. * {@inheritdoc}
  64. */
  65. function canTranslate(TMGMTTranslator $translator, TMGMTJob $job) {
  66. if (isset($job->settings['action']) && $job->settings['action'] == 'not_translatable') {
  67. return FALSE;
  68. }
  69. return parent::canTranslate($translator, $job);
  70. }
  71. /**
  72. * {@inheritdoc}
  73. */
  74. public function getSupportedTargetLanguages(TMGMTTranslator $translator, $source_language) {
  75. $languages = drupal_map_assoc(array('en', 'de', 'es', 'it', 'zh-hans', 'gsw-berne'));
  76. unset($languages[$source_language]);
  77. return $languages;
  78. }
  79. /**
  80. * {@inheritdoc}
  81. */
  82. public function rejectDataItem(TMGMTJobItem $job_item, array $key, array $values = NULL) {
  83. $key = '[' . implode('][', $key) . ']';
  84. $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));
  85. return TRUE;
  86. }
  87. /**
  88. * {@inheritdoc}
  89. */
  90. public function rejectForm($form, &$form_state) {
  91. return $form;
  92. }
  93. }