-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtransplus.js
More file actions
executable file
·103 lines (89 loc) · 2.85 KB
/
Copy pathtransplus.js
File metadata and controls
executable file
·103 lines (89 loc) · 2.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var isCORSSupport = 'withCredentials' in new XMLHttpRequest();
var isIE = typeof XDomainRequest !== "undefined";
var xdr;
var interBuffer = [];
var finalBuffer = [];
var bufCnt = 0;
var getJSON = function (query, callback) {
if (isCORSSupport) {
$.getJSON(query, callback);
} else if (isIE) {
xdr = new XDomainRequest();
if (xdr) {
xdr.onload = callback;
xdr.open("get", query);
xdr.send();
}
} else {
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "callback",
url: query,
success: callback
});
}
}
var setQueryString = function (message) {
var result = "http://goxcors.appspot.com/cors?method=GET" +
"&url=" + encodeURIComponent("http://translate.google.com/translate_a/t?client=x" +
"&sl=" + message.userlang + "&tl=" + message.targetlang +
"&text=" + encodeURIComponent(message.text));
return result;
};
var extractResult = function (data) {
if (!isCORSSupport && isIE) {
data = $.parseJSON(data.responseText);
}
return data && data.sentences && $.map(data.sentences, (function (v) {
return v.trans
}));
};
var translateLineByLine = function (i, buffer) {
message.text = buffer + "|!";
message.userlang = $("#interLang").val();
message.targetlang = $("#targetLang").val();
var translateFinalLang = function (data) {
var post = extractResult(data).join('');
// prevent to trim new line
bufCnt--;
finalBuffer[i] = post.replace(/\|!/g, "");
$(".translateResult").text(finalBuffer.join(""));
};
getJSON(setQueryString(message), translateFinalLang);
};
var translateInterLang = function (data) {
console.dir(data);
interBuffer = extractResult(data);
$(".translateInterResult").text(interBuffer.join(""));
bufCnt = finalBuffer.length = interBuffer.length;
for (var i in interBuffer) {
translateLineByLine(i, interBuffer[i]);
}
};
var translateDirectLang = function (data) {
var post = extractResult(data).join('');
$(".translateDirectResult").text(post);
};
$("form").submit(function () {
/*
text: 번역할 내용
userlang: 번역할 내용이 작성 된 언어
targetlang: 번역할 언어
interLang : 중간에 번역할 언어
*/
message = {
text: $(".sourceText").val(),
userlang: $("#userLang").val(),
targetlang: $("#targetLang").val()
};
getJSON(setQueryString(message), translateDirectLang);
message.targetlang = $("#interLang").val();
interBuffer.length = 0;
$(".translateResult").text("");
getJSON(setQueryString(message), translateInterLang);
return false;
});
$().ready(function () {
$("#targetLang").val(navigator.userLanguage || navigator.language || "ko");
});