1 //<script type="text/javascript">
5 * Translate a string using google translate API
7 * Note: this does not handle html input at present -
8 * @param str {String} input string
9 * @param src {String} source language (or '' for autoguess)
10 * @param str {String} target language
11 * @param str {String} callback - calls back with result or an error object.
13 Pman.GoogleTranslate = function(str, src, dest, cb, force) {
20 if (!Pman.GoogleTranslate.key) {
24 url : baseURL + '/Core/GoogleKey',
25 success : function(data)
27 Pman.GoogleTranslate.key = data.key;
29 Pman.GoogleTranslate(str, src, dest, cb, force);
43 function escapeDecode(encodedString) {
44 var output = encodedString;
45 var binVal, thisString;
46 var myregexp = /(&#([0-9]+);)/;
47 while ((match = myregexp.exec(output)) != null
51 binVal = parseInt(match[2]);
52 thisString = String.fromCharCode(binVal);
53 output = output.replace(match[1], thisString);
55 return Roo.util.Format.htmlDecode( output);
62 if ((cur +1) > sbits.length) {
63 //Roo.log("CALLING COMPLETED: " + complete);
67 if (!sbits[cur].length || !sbits[cur].replace(/\s+/).length) {
74 // Roo.log("SEND : " + sbits[cur]);
75 Pman.GoogleTranslate( sbits[cur], src, dest, function(result) {
76 if (typeof(result) == 'object') {
80 //padding might not be needed...
81 complete += complete.length ? ' ' : '';
88 // chunk up long strings..
89 // we should roo.encode to test lenght..
90 if (!force && str.length > 200) {
91 var bits = str.split(/(\s+|[0-9\u3002\uff0c\u3001\u201c\u201d]+)/);
93 for (var i =0; i < bits.length; i++) {
94 if (sbits[cur].length + bits[i].length > 190) {
99 //sbits[cur] += sbits[cur].length ? ' ' : '';
100 sbits[cur] += bits[i] + ' '
104 cur = 0; // reset cursor.
114 var x = new Roo.data.ScriptTagProxy({
115 url: 'http://ajax.googleapis.com/ajax/services/language/translate',
116 callbackParam : 'callback'
124 langpair : src + '|' +dest
127 readRecords : function (o) {
128 if (!o.responseData) {
131 return escapeDecode(o.responseData.translatedText);
146 Pman.gtranslate = Pman.GoogleTranslate;