8
8
use TYPO3 \CMS \Core \Messaging \FlashMessage ;
9
9
use TYPO3 \CMS \Core \Messaging \FlashMessageService ;
10
10
use TYPO3 \CMS \Core \Utility \GeneralUtility ;
11
- use TYPO3 \ CMS \ Extbase \ Object \ ObjectManager ;
11
+ use WebVision \ WvDeepltranslate \ Domain \ Dto \ TranslateOptions ;
12
12
use WebVision \WvDeepltranslate \Domain \Repository \PageRepository ;
13
- use WebVision \WvDeepltranslate \Domain \Repository \SettingsRepository ;
14
13
use WebVision \WvDeepltranslate \Exception \LanguageIsoCodeNotFoundException ;
15
14
use WebVision \WvDeepltranslate \Exception \LanguageRecordNotFoundException ;
15
+ use WebVision \WvDeepltranslate \Resolver \RichtextAllowTagsResolver ;
16
16
use WebVision \WvDeepltranslate \Service \DeeplService ;
17
17
use WebVision \WvDeepltranslate \Service \GoogleTranslateService ;
18
18
use WebVision \WvDeepltranslate \Service \LanguageService ;
@@ -24,31 +24,31 @@ class TranslateHook
24
24
25
25
protected GoogleTranslateService $ googleService ;
26
26
27
- protected SettingsRepository $ deeplSettingsRepository ;
28
-
29
27
protected PageRepository $ pageRepository ;
30
28
31
29
private LanguageService $ languageService ;
32
30
33
31
public function __construct (
34
- ?SettingsRepository $ settingsRepository = null ,
35
32
?PageRepository $ pageRepository = null ,
36
33
?DeeplService $ deeplService = null ,
37
- ?GoogleTranslateService $ googleService = null
34
+ ?GoogleTranslateService $ googleService = null ,
35
+ ?LanguageService $ languageService = null
38
36
) {
39
- $ objectManager = GeneralUtility::makeInstance (ObjectManager::class);
40
- $ this ->deeplSettingsRepository = $ settingsRepository ?? $ objectManager ->get (SettingsRepository::class);
41
- $ this ->deeplService = $ deeplService ?? $ objectManager ->get (DeeplService::class);
42
- $ this ->googleService = $ googleService ?? $ objectManager ->get (GoogleTranslateService::class);
37
+ $ this ->deeplService = $ deeplService ?? GeneralUtility::makeInstance (DeeplService::class);
43
38
$ this ->pageRepository = $ pageRepository ?? GeneralUtility::makeInstance (PageRepository::class);
44
- $ this ->languageService = GeneralUtility::makeInstance (LanguageService::class);
39
+ $ this ->languageService = $ languageService ?? GeneralUtility::makeInstance (LanguageService::class);
40
+ $ this ->googleService = $ googleService ?? GeneralUtility::makeInstance (GoogleTranslateService::class);
45
41
}
46
42
47
43
/**
48
44
* @param array{uid: int} $languageRecord
49
45
*/
50
- public function processTranslateTo_copyAction (string &$ content , array $ languageRecord , DataHandler $ dataHandler ): string
51
- {
46
+ public function processTranslateTo_copyAction (
47
+ string &$ content ,
48
+ array $ languageRecord ,
49
+ DataHandler $ dataHandler ,
50
+ string $ columnName
51
+ ): string {
52
52
$ tableName = '' ;
53
53
$ currentRecordId = '' ;
54
54
@@ -62,12 +62,7 @@ public function processTranslateTo_copyAction(string &$content, array $languageR
62
62
break ;
63
63
}
64
64
65
- if (!isset ($ cmdmap ['localization ' ]['custom ' ]['srcLanguageId ' ])) {
66
- $ cmdmap ['localization ' ]['custom ' ]['srcLanguageId ' ] = '' ;
67
- }
68
-
69
65
$ customMode = $ cmdmap ['localization ' ]['custom ' ]['mode ' ] ?? null ;
70
- [$ sourceLanguage ,] = explode ('- ' , (string )$ cmdmap ['localization ' ]['custom ' ]['srcLanguageId ' ]);
71
66
72
67
//translation mode set to deepl or google translate
73
68
if ($ customMode === null ) {
@@ -79,21 +74,28 @@ public function processTranslateTo_copyAction(string &$content, array $languageR
79
74
$ translatedContent = '' ;
80
75
$ targetLanguageRecord = [];
81
76
77
+ $ translateOptions = GeneralUtility::makeInstance (TranslateOptions::class);
78
+ $ richtextAllowTagsResolver = GeneralUtility::makeInstance (RichtextAllowTagsResolver::class);
79
+ $ translateOptions ->setSplittingTags (
80
+ $ richtextAllowTagsResolver ->resolve ($ tableName , $ currentRecordId , $ columnName )
81
+ );
82
+
82
83
try {
83
84
$ sourceLanguageRecord = $ this ->languageService ->getSourceLanguage (
84
85
$ siteInformation ['site ' ]
85
86
);
87
+ $ translateOptions ->setSourceLanguage ($ sourceLanguageRecord ['language_isocode ' ]);
86
88
87
89
$ targetLanguageRecord = $ this ->languageService ->getTargetLanguage (
88
90
$ siteInformation ['site ' ],
89
91
(int )$ languageRecord ['uid ' ]
90
92
);
93
+ $ translateOptions ->setTargetLanguage ($ targetLanguageRecord ['language_isocode ' ]);
91
94
92
95
$ translatedContent = $ this ->translateContent (
93
96
$ content ,
94
- $ targetLanguageRecord ,
97
+ $ translateOptions ,
95
98
$ customMode ,
96
- $ sourceLanguageRecord
97
99
);
98
100
} catch (LanguageIsoCodeNotFoundException |LanguageRecordNotFoundException $ e ) {
99
101
$ flashMessage = GeneralUtility::makeInstance (
@@ -123,22 +125,17 @@ public function processTranslateTo_copyAction(string &$content, array $languageR
123
125
124
126
/**
125
127
* These logics were outsourced to test them and later to resolve them in a service
126
- *
127
- * @param array{uid: int, language_isocode: string} $targetLanguageRecord
128
- * @param array{uid: int, language_isocode: string} $sourceLanguageRecord
129
128
*/
130
129
public function translateContent (
131
130
string $ content ,
132
- array $ targetLanguageRecord ,
133
- string $ customMode ,
134
- array $ sourceLanguageRecord
131
+ TranslateOptions $ translateOptions ,
132
+ string $ customMode
135
133
): string {
136
134
// mode deepl
137
135
if ($ customMode == 'deepl ' ) {
138
136
$ response = $ this ->deeplService ->translateRequest (
139
137
$ content ,
140
- $ targetLanguageRecord ['language_isocode ' ],
141
- $ sourceLanguageRecord ['language_isocode ' ]
138
+ $ translateOptions
142
139
);
143
140
144
141
if (!empty ($ response ) && isset ($ response ['translations ' ])) {
@@ -152,8 +149,8 @@ public function translateContent(
152
149
} //mode google
153
150
elseif ($ customMode == 'google ' ) {
154
151
$ response = $ this ->googleService ->translate (
155
- $ sourceLanguageRecord [ ' language_isocode ' ] ,
156
- $ targetLanguageRecord [ ' language_isocode ' ] ,
152
+ $ translateOptions -> getSourceLanguage () ,
153
+ $ translateOptions -> getTargetLanguage () ,
157
154
$ content
158
155
);
159
156
0 commit comments