//<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.
- */
-Pman.GoogleTranslate = function(str, src, dest, cb) {
+ *
+ * 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 cb {String} callback - calls back with result or an error object.
+ */
+Pman.GoogleTranslate = function(str, src, dest, cb, force) {
// load script:
var cur = 0;
var sbits = [];
var complete = '';
+
+// if (!Pman.GoogleTranslate.key) {
+//
+// new Pman.Request({
+// method : 'POST',
+// url : baseURL + '/Core/GoogleKey',
+// success : function(data)
+// {
+// Pman.GoogleTranslate.key = data.data;
+//
+// Pman.GoogleTranslate(str, src, dest, cb, force);
+//
+// },
+// failure : function() {
+// Roo.log("Google key fetch failed");
+// // do not display error message...
+// return true;
+// }
+//
+//
+// });
+//
+//
+//
+//
+// return;
+// }
+
+
function escapeDecode(encodedString) {
var output = encodedString;
var binVal, thisString;
return Roo.util.Format.htmlDecode( output);
}
-
-
+
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) {
+ Pman.GoogleTranslate( sbits[cur], src, dest, function(result) {
if (typeof(result) == 'object') {
cb(result);
return;
}
+ //padding might not be needed...
complete += complete.length ? ' ' : '';
complete += result;
cur++;
transbits();
- });
+ }, true);
}
-
- if (str.length > 400) {
- var bits = str.split(/\s+/);
+ // chunk up long strings..
+ // we should roo.encode to test lenght..
+ if (!force && str.length > 200) {
+ var bits = str.split(/(\s+|[0-9\u3002\uff0c\u3001\u201c\u201d]+)/);
sbits[0] = '';
for (var i =0; i < bits.length; i++) {
- if (sbits[cur].length + bits[i].length > 390) {
+ 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] + ' '
}
transbits();
return;
}
-
-
-
-
-
-
-
-
-
- var x = new Roo.data.ScriptTagProxy({
- url: 'http://ajax.googleapis.com/ajax/services/language/translate',
- callbackParam : 'callback'
-
- });
- x.load(
+//
+//
+//
+//
+//
+// var x = new Roo.data.ScriptTagProxy({
+// url: 'https://www.googleapis.com/language/translate/v2',
+// //'http://ajax.googleapis.com/ajax/services/language/translate',
+// callbackParam : 'callback'
+//
+//
+// });
+//
+ src = src.replace('_','-');
+ dest = dest.replace('_','-');
+ // google does not recognize HK...
+ if (src == 'zh-HK') src = 'zh-TW';
+ if (dest == 'zh-HK') dest = 'zh-TW';
+
+ new Pman.Request({
+ url : baseURL + '/Pman/Core/GoogleTranslate.php',
+ method :'POST',
+ mask : 'Translating',
+ maskEl : document.body,
+ params : {
+ text : str,
+ src : src,
+ dest : dest,
+ },
+ success: function(o)
{
- v: '1.0',
- q : str,
- langpair : src + '|' +dest
- }, // end params.
- { // reader
- readRecords : function (o) {
- if (!o.responseData) {
- return o;
- }
- return escapeDecode(o.responseData.translatedText);
+ if (!o.data) {
+ return o;
}
- },
- function (result) {
- cb(result);
+// Roo.MessageBox.alert("Success", "We logged in OK")
+ return o.data.translations[0].translatedText;
},
- this,
- []
- );
+ failure: function (res) {
+ Roo.log(res);
+ Roo.MessageBox.alert("Failure", "Failed?")
+ }
+ });
+//
+// x.load(
+// {
+// key : Pman.GoogleTranslate.key,
+// // v: '1.0',
+// q : str,
+// source : src,
+// target : dest
+// //langpair : src + '|' +dest
+// }, // end params.
+// { // reader
+// readRecords : function (o) {
+// Roo.log(o);
+// if (!o.data) {
+// return o;
+// }
+// return o.data.translations[0].translatedText;
+// //return escapeDecode(o.data.translations[0].translatedText);
+// }
+// },
+// function (result) {
+// cb(result);
+// },
+// this,
+// []
+// );