Skip to content

Commit 6516cfa

Browse files
authored
Merge pull request #13 from dusantasioso/master
Add new Languages, API type in website config
2 parents 9caee84 + 5e2d3e1 commit 6516cfa

8 files changed

Lines changed: 76 additions & 32 deletions

File tree

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ With DeepL the following languages can currently be translated:
1414
* Russian
1515
* Japanese
1616
* Chinese (simplified)
17+
* Bulgarian
18+
* Czech
19+
* Danish
20+
* Greek
21+
* Estonian
22+
* Finish
23+
* Hungarian
24+
* Lithuanian
25+
* Latvian
26+
* Romanian
27+
* Slovak
28+
* Slovenian
29+
* Swedish
1730

1831
## Prerequisites
1932
* PHP 7.1 or higher (https://secure.php.net/)
@@ -30,7 +43,6 @@ composer require asioso/pimcore-quicktranslate-module
3043

3144
## Configuration
3245

33-
just enable the bundle in the pimcore extension manager. *And* add your api key in the Pimcore WebsiteSettings as 'deepl_auth_key'!
34-
46+
just enable the bundle in the pimcore extension manager. *And* add your api key in the Pimcore WebsiteSettings as 'deepl_auth_key', and DeepL api type as 'deepl_type' with two options "PRO" or "FREE"!
3547

3648

src/QuickTranslateBundle/Controller/DefaultController.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@ class DefaultController extends FrontendController
2121
public function getAuthKeyAction()
2222
{
2323
$authKey = WebsiteSetting::getByName("deepl_auth_key") ? WebsiteSetting::getByName("deepl_auth_key")->getData() : null;
24+
$type = WebsiteSetting::getByName("deepl_type") ? WebsiteSetting::getByName("deepl_type")->getData() : null;
2425

2526
return JsonResponse::create([
2627
"authKey" => $authKey,
2728
"exists" => (($authKey == null || "") ? false : true),
29+
"type" => $type,
30+
"type_exists" => (($type == null || "") ? false : true),
2831
]);
2932
}
33+
34+
3035
}

src/QuickTranslateBundle/Resources/public/js/quick-translate-api/quickTranslate.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
*
88
*/
99

10-
function quickTranslate(key, data,srcSet = null,langFrom, langTo, id,successCallback, failCallback) {
10+
function quickTranslate(key, type, data,srcSet = null,langFrom, langTo, id,successCallback, failCallback) {
1111

12-
var url = createDeeplApiUrl(key, data, langFrom, langTo);
12+
var url = createDeeplApiUrl(key, type, data, langFrom, langTo);
1313

1414
var settings = {
1515
"async": true,

src/QuickTranslateBundle/Resources/public/js/quick-translate-btn/areablock.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
2626
plusButton.remove();
2727
}
2828

29-
if(!limitReached) {
29+
if (!limitReached) {
3030
// plus buttons
3131
plusUpDiv = Ext.get(element).query('.pimcore_block_plus_up[data-name="' + this.name + '"]')[0];
3232
plusUpButton = new Ext.Button({
@@ -103,7 +103,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
103103
typeButton.on("afterrender", function (element, v) {
104104
v.dragZone = new Ext.dd.DragZone(v.getEl(), {
105105
hasOuterHandles: true,
106-
getDragData: function(e) {
106+
getDragData: function (e) {
107107
var sourceEl = element;
108108

109109
// only use the button as proxy element
@@ -127,7 +127,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
127127
beforeDragOut: function (target) {
128128
return target ? true : false;
129129
},
130-
getRepairXY: function() {
130+
getRepairXY: function () {
131131
return this.dragData.repairXY;
132132
}
133133
});
@@ -165,7 +165,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
165165
}.bind(this, element)
166166
});
167167
this.visibilityButtons[element.key].render(visibilityDiv);
168-
if(element.dataset.hidden == "true") {
168+
if (element.dataset.hidden == "true") {
169169
Ext.get(element).addCls('pimcore_area_hidden');
170170
}
171171
}
@@ -204,8 +204,11 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
204204
if (authKey.exists) {
205205

206206
var key = authKey.authKey;
207-
208-
var checkerUrl = createDeeplApiUrl(key, "", "DE", "EN");
207+
var type = "FREE";
208+
if (authKey.type_exists) {
209+
type = authKey.type;
210+
}
211+
var checkerUrl = createDeeplApiUrl(key, type, "", "DE", "EN");
209212

210213
/* settings for checker request to deepl */
211214
var checkerSettings = {
@@ -218,7 +221,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
218221
$.ajax(checkerSettings).done(function () {
219222

220223
var elementsWindow = quickTranslatecreateWindow("Processing", "Getting your content ready for translation...");
221-
224+
222225
Ext.Ajax.request({
223226
url: "/asioso_quick_translate_get_document_elements",
224227
method: 'GET',
@@ -295,7 +298,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
295298
var progressBar = quickTranslateProgressBar();
296299

297300
for (var i = 0; i < partsToTranslate.length; i++) {
298-
var url = createDeeplApiUrl(key, partsToTranslate[i], null, langTo, true);
301+
var url = createDeeplApiUrl(key, type, partsToTranslate[i], null, langTo, true);
299302
settings.url = url;
300303

301304
$.ajax(settings).done(function (response) {
@@ -394,7 +397,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
394397
if (translatedParts.includes(null)) {
395398
window.html = "Your brick was successfully saved, but we couldn't translate all the elements!<br><br>" + translatedElements + "<br>" + notTranslatedElements + "<br><br>To see your changes click reload!";
396399
} else {
397-
window.html = "Your brick was successfully translated and saved! To see your changes click reload!" ;
400+
window.html = "Your brick was successfully translated and saved! To see your changes click reload!";
398401
}
399402

400403
},
@@ -416,7 +419,7 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
416419

417420
} else {
418421

419-
var url = createDeeplApiUrl(key, xml, null, langTo, true);
422+
var url = createDeeplApiUrl(key, type, xml, null, langTo, true);
420423
settings.url = url;
421424

422425
function deeplAjax(settings) {
@@ -538,8 +541,8 @@ pimcore.document.editables.areablock = Class.create(pimcore.document.editables.a
538541
quickTranslateButton.render(visibilityDiv);
539542

540543
labelDiv = Ext.get(Ext.get(element).query('.pimcore_block_label[data-name="' + this.name + '"]')[0]);
541-
labelText = "<b>" + element.type + "</b>";
542-
if(this.typeNameMappings[element.type]
544+
labelText = "<b>" + element.type + "</b>";
545+
if (this.typeNameMappings[element.type]
543546
&& typeof this.typeNameMappings[element.type].name != "undefined") {
544547
labelText = "<b>" + this.typeNameMappings[element.type].name + "</b> "
545548
+ this.typeNameMappings[element.type].description;

src/QuickTranslateBundle/Resources/public/js/quick-translate-btn/quickTranslateDocument.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,11 @@ function quickTranslateDocument(documentTranslate) {
146146
if (authKey.exists) {
147147

148148
var key = authKey.authKey;
149-
150-
var checkerUrl = createDeeplApiUrl(key, "", "DE", "EN");
149+
var type = "FREE";
150+
if (authKey.type_exists) {
151+
type = authKey.type;
152+
}
153+
var checkerUrl = createDeeplApiUrl(key, type, "", "DE", "EN");
151154

152155
/* settings for checker request to deepl */
153156
var checkerSettings = {
@@ -208,7 +211,7 @@ function quickTranslateDocument(documentTranslate) {
208211
params["translateDocId"] = documentTranslate.id;
209212

210213
Object.keys(elements.elements).forEach(function (key) {
211-
xml += '<' + key + ' quick-t-tag="'+ key +'" quick-t-type="' + elements.elements[key]["type"] + '">' + elements.elements[key]["data"] + '</' + key + '>';
214+
xml += '<' + key + ' quick-t-tag="' + key + '" quick-t-type="' + elements.elements[key]["type"] + '">' + elements.elements[key]["data"] + '</' + key + '>';
212215
});
213216

214217

@@ -244,12 +247,12 @@ function quickTranslateDocument(documentTranslate) {
244247
var parts = JSON.parse(xmlToJson(xml, null, true));
245248

246249
Object.keys(parts).forEach(function (key) {
247-
var part = '<' + key + ' quick-t-tag="'+ key +'" quick-t-type="' + parts[key]["type"] + '">' + parts[key]["data"] + '</' + key + '>';
250+
var part = '<' + key + ' quick-t-tag="' + key + '" quick-t-type="' + parts[key]["type"] + '">' + parts[key]["data"] + '</' + key + '>';
248251
partsToTranslate.push(xmlRegReplace(part));
249252
});
250253

251254
partsToTranslate.sort(function (a, b) {
252-
return a.length - b.length;
255+
return a.length - b.length;
253256
});
254257

255258
var translatedParts = [];
@@ -259,7 +262,7 @@ function quickTranslateDocument(documentTranslate) {
259262
var progressBar = quickTranslateProgressBar();
260263

261264
for (var i = 0; i < partsToTranslate.length; i++) {
262-
var url = createDeeplApiUrl(key, partsToTranslate[i], langFrom, langTo);
265+
var url = createDeeplApiUrl(key, type, partsToTranslate[i], langFrom, langTo);
263266
settings.url = url;
264267

265268
$.ajax(settings).done(function (response) {
@@ -337,7 +340,7 @@ function quickTranslateDocument(documentTranslate) {
337340

338341
} else {
339342

340-
var url = createDeeplApiUrl(key, xml, langFrom, langTo);
343+
var url = createDeeplApiUrl(key, type, xml, langFrom, langTo);
341344
settings.url = url;
342345

343346
function deeplAjax(settings) {

src/QuickTranslateBundle/Resources/public/js/quick-translate-btn/quickTranslateObjectBtn.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,11 @@ pimcore.element.quickTranslateObjectBtn = Class.create({
7878

7979
/* deepl authentication key */
8080
var key = authKey.authKey;
81-
82-
var checkerUrl = createDeeplApiUrl(key, "", "DE", "EN");
81+
var type = "FREE";
82+
if (authKey.type_exists) {
83+
type = authKey.type;
84+
}
85+
var checkerUrl = createDeeplApiUrl(key, type, "", "DE", "EN");
8386

8487
/* settings for checker request to deepl */
8588
var checkerSettings = {
@@ -166,7 +169,7 @@ pimcore.element.quickTranslateObjectBtn = Class.create({
166169

167170

168171
for (var i = 0; i < partsToTranslate.length; i++) {
169-
var url = createDeeplApiUrl(key, partsToTranslate[i], langs[0], langs[1]);
172+
var url = createDeeplApiUrl(key, type, partsToTranslate[i], langs[0], langs[1]);
170173
settings.url = url;
171174

172175
$.ajax(settings).done(function (response) {
@@ -242,7 +245,7 @@ pimcore.element.quickTranslateObjectBtn = Class.create({
242245

243246
xmlToJson(xmlStr);
244247

245-
quickTranslate(key, xmlStr, srcSet, langs[0], langs[1], this.element.id, this.translateObject, quickTranslatecreateWindow);
248+
quickTranslate(key, type, xmlStr, srcSet, langs[0], langs[1], this.element.id, this.translateObject, quickTranslatecreateWindow);
246249

247250
}
248251

src/QuickTranslateBundle/Resources/public/js/utilities/createDeeplApiUrl.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
/* returns url for ajax request on deepls api */
11-
function createDeeplApiUrl(key, data, langFrom = null, langTo, autoDetect = false) {
11+
function createDeeplApiUrl(key, type, data, langFrom = null, langTo, autoDetect = false) {
1212

1313
if (langFrom) {
1414
langFrom = langFrom.split("_")[0];
@@ -17,10 +17,14 @@ function createDeeplApiUrl(key, data, langFrom = null, langTo, autoDetect = fals
1717

1818
langTo = langTo.split("_")[0];
1919
langTo = langTo.toUpperCase();
20-
20+
if (type == "PRO") {
21+
url = 'https://api.deepl.com';
22+
} else {
23+
url = 'https://api-free.deepl.com';
24+
}
2125
if (autoDetect) {
22-
return 'https://api-free.deepl.com/v2/translate?auth_key=' + key + '&text=' + data + '&target_lang=' + langTo + '&split_sentences=nonewlines&tag_handling=xml';
26+
return url + '/v2/translate?auth_key=' + key + '&text=' + data + '&target_lang=' + langTo + '&split_sentences=nonewlines&tag_handling=xml';
2327
}
24-
return 'https://api-free.deepl.com/v2/translate?auth_key=' + key + '&text=' + data + '&source_lang=' + langFrom + '&target_lang=' + langTo + '&split_sentences=nonewlines&tag_handling=xml';
28+
return url + '/v2/translate?auth_key=' + key + '&text=' + data + '&source_lang=' + langFrom + '&target_lang=' + langTo + '&split_sentences=nonewlines&tag_handling=xml';
2529

2630
};

src/QuickTranslateBundle/Resources/public/js/utilities/isDeeplLanguage.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,21 @@ function isDeeplLanguage(lang) {
2525
"pl",
2626
"ru",
2727
"ja",
28-
"zh"
28+
"zh",
29+
// new languages
30+
"bg",
31+
"cs",
32+
"da",
33+
"el",
34+
"et",
35+
"fi",
36+
"hu",
37+
"lt",
38+
"lv",
39+
"ro",
40+
"sk",
41+
"sl",
42+
"sv",
2943
];
3044

3145
return deeplLanguages.includes(lang);

0 commit comments

Comments
 (0)