wpml-tm-editor-translation-memory.js
1.85 KB
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
71
72
73
74
75
76
77
78
/*jshint devel:true */
/*global jQuery, ajaxurl, tmEditorStrings */
var WPML_TM = WPML_TM || {};
WPML_TM.translationMemory = function ( languages ) {
"use strict";
var self = this;
var init = function ( languages ) {
self.strings = {};
self.languages = languages;
};
var hasTranslation = function ( field ) {
return '' === field.field_data || '' !== field.field_data_translated || 0 !== field.field_finished;
};
var updateViewWithTranslation = function ( data ) {
if ( data.original in self.strings ) {
for ( var i = 0; i < self.strings[ data.original ].length; i++ ) {
var view = self.strings[ data.original ][ i ];
if ( view.getTranslation() === '' ) {
view.setTranslation( data.translation );
}
}
}
};
self.addField = function ( field, view ) {
if ( !hasTranslation( field ) ) {
var string = field.field_data;
if ( !(string in self.strings) ) {
self.strings[ string ] = [];
}
self.strings[ string ].push( view );
}
};
self.fetch = function () {
var strings = [];
for ( var key in self.strings ) {
if ( self.strings.hasOwnProperty( key ) ) {
strings.push( {string: key, source: self.languages['source'], target: self.languages['target']} );
}
}
if ( strings.length > 0 ) {
jQuery.ajax(
{
type: "POST",
url: ajaxurl,
dataType: 'json',
data: {
data: JSON.stringify({ batch: true, strings: strings }),
action: 'wpml_action',
nonce: tmEditorStrings.translationMemoryNonce,
endpoint: tmEditorStrings.translationMemoryEndpoint
},
success: function ( response ) {
if ( response.success ) {
var data = response.data;
for ( var i = 0; i < data.length; i++ ) {
if ( data[i].length > 0 ) {
updateViewWithTranslation( data[i][0] );
}
}
}
}
}
);
}
};
init( languages );
};