1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
<?php
/**
* Translation aid provider.
*
* @file
* @author Niklas Laxström
* @copyright Copyright © 2012-2013, Niklas Laxström
* @license GPL-2.0+
*/
/**
* Translation aid which gives suggestion from machine translation services.
*
* @ingroup TranslationAids
* @since 2013-01-01 | 2015.02 extends QueryAggregatorAwareTranslationAid
*/
class MachineTranslationAid extends QueryAggregatorAwareTranslationAid {
public function populateQueries() {
$definition = $this->getDefinition();
$translations = $this->getTranslations();
$from = $this->group->getSourceLanguage();
$to = $this->handle->getCode();
foreach ( $this->getWebServices( 'mt' ) as $service ) {
if ( $service->checkTranslationServiceFailure() ) {
continue;
}
if ( $service->isSupportedLanguagePair( $from, $to ) ) {
$this->storeQuery( $service, $from, $to, $definition );
continue;
}
// Loop of the the translations we have to see which can be used as source
// @todo: Support setting priority of languages like Yandex used to have
foreach ( $translations as $from => $text ) {
if ( !$service->isSupportedLanguagePair( $from, $to ) ) {
continue;
}
$this->storeQuery( $service, $from, $to, $text );
break;
}
}
}
public function getData() {
$suggestions = array( '**' => 'suggestion' );
foreach ( $this->getQueryData() as $queryData ) {
$suggestions[] = $this->formatSuggestion( $queryData );
}
return $suggestions;
}
protected function formatSuggestion( array $queryData ) {
$service = $queryData['service'];
$response = $queryData['response'];
$sourceLanguage = $queryData['language'];
$sourceText = $queryData['text'];
return array(
'target' => $service->getResultData( $response ),
'service' => $service->getName(),
'source_language' => $sourceLanguage,
'source' => $sourceText,
);
}
}
|