},
-
+ /**
+ *
+ * gtranslate
+ * Translate a string using google translate API
+ *
+ * Note: this does not handle html input at present -
+ * @param str {String} input string
+ * @param src {String} source language (or '' for autoguess)
+ * @param str {String} target language
+ * @param str {String} callback - calls back with result or an error object.
+ */
gtranslate : function(str, src, dest, cb) {
// load script:
var cur = 0;
var sbits = [];
var complete = '';
+ function escapeDecode(encodedString) {
+ var output = encodedString;
+ var binVal, thisString;
+ var myregexp = /(&#([0-9]+);)/;
+ while ((match = myregexp.exec(output)) != null
+ && match.length > 1
+ && match[1] != '') {
+ // Roo.log(match);
+ binVal = parseInt(match[2]);
+ thisString = String.fromCharCode(binVal);
+ output = output.replace(match[1], thisString);
+ }
+ return Roo.util.Format.htmlDecode( output);
+ }
+
+
+
function transbits()
{
if ((cur +1) > sbits.length) {
- cb.call(complete);
+ //Roo.log("CALLING COMPLETED: " + complete);
+ cb(complete);
return;
}
- //console.log("SEND : " + sbits[cur]);
+ // Roo.log("SEND : " + sbits[cur]);
Pman.gtranslate( sbits[cur], src, dest, function(result) {
if (typeof(result) == 'object') {
- cb.call(result);
+ cb(result);
return;
}
complete += complete.length ? ' ' : '';
}
- if (str.length > 250) {
+ if (str.length > 400) {
var bits = str.split(/\s+/);
sbits[0] = '';
for (var i =0; i < bits.length; i++) {
- if (sbits[cur].length + bits[i].length > 240) {
+ if (sbits[cur].length + bits[i].length > 390) {
cur++;
sbits[cur] = bits[i];
continue;
sbits[cur] += bits[i] + ' '
}
+ // Roo.log(sbits);
cur = 0; // reset cursor.
transbits();
if (!o.responseData) {
return o;
}
- return o.responseData.translatedText;
+ return escapeDecode(o.responseData.translatedText);
}
},
function (result) {