Pman.GoogleTranslate.js
[Pman.Core] / Pman.GoogleTranslate.js
index 4517916..e03d473 100644 (file)
@@ -1,15 +1,15 @@
 //<script type="text/javascript">
 /**
    
    * GoogleTranslate
    * 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.
    */
+ * 
+ * GoogleTranslate
+ * 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.
+ */
 Pman.GoogleTranslate = function(str, src, dest, cb) {
         // load script: 
         var cur = 0;
@@ -35,17 +35,26 @@ Pman.GoogleTranslate = function(str, src, dest, cb) {
         
         function transbits()
         {
-            if ((cur +1) > sbits.length) {
-                //Roo.log("CALLING COMPLETED: " + complete);
-                cb(complete);
-                return;
+            while (true) {
+                if ((cur +1) > sbits.length) {
+                    //Roo.log("CALLING COMPLETED: " + complete);
+                    cb(complete);
+                    return;
+                }
+                if (!sbits[cur].length || !sbits[cur].replace(/\s+/).length) {
+                    cur++;
+                    continue;
+                }
+                break;
             }
+            
            // Roo.log("SEND : " + sbits[cur]);
             Pman.gtranslate( sbits[cur], src, dest, function(result) {
                 if (typeof(result) == 'object') {
                     cb(result);
                     return;
                 }
+                //padding might not be needed...
                 complete += complete.length ? ' ' : ''; 
                 complete += result;
                 cur++;
@@ -53,17 +62,17 @@ Pman.GoogleTranslate = function(str, src, dest, cb) {
             });
         }
         
-        
-        if (str.length > 400) {
-            var bits = str.split(/\s+/);
+        // chunk up long strings..
+        if (str.length > 200) {
+            var bits = str.split(/(\s+|[0-9+])/);
             sbits[0]  = '';
             for (var i =0; i < bits.length; i++) {
-                if (sbits[cur].length + bits[i].length > 290) {
+                if (sbits[cur].length + bits[i].length > 190) {
                     cur++;
                     sbits[cur] = bits[i];
                     continue;
                 }
-                sbits[cur] += sbits[cur].length  ? ' ' : '';
+                //sbits[cur] += sbits[cur].length  ? ' ' : '';
                 sbits[cur] += bits[i] + ' '
                 
             }