* @param str {String} target language
* @param str {String} callback - calls back with result or an error object.
*/
-Pman.GoogleTranslate = function(str, src, dest, cb) {
+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()
{
while (true) {
complete += result;
cur++;
transbits();
- });
+ }, true);
}
// chunk up long strings..
- if (str.length > 200) {
- var bits = str.split(/(\s+|[0-9+])/);
+ // 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 > 190) {
-
-
-
-
-
+
var x = new Roo.data.ScriptTagProxy({
- url: 'http://ajax.googleapis.com/ajax/services/language/translate',
- callbackParam : 'callback'
+ 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';
+
+
+
x.load(
{
- v: '1.0',
+ key : Pman.GoogleTranslate.key,
+ // v: '1.0',
q : str,
- langpair : src + '|' +dest
+ source : src,
+ target : dest
+ //langpair : src + '|' +dest
}, // end params.
{ // reader
readRecords : function (o) {
- if (!o.responseData) {
+ Roo.log(o);
+ if (!o.data) {
return o;
}
- return escapeDecode(o.responseData.translatedText);
+ return o.data.translations[0].translatedText;
+ //return escapeDecode(o.data.translations[0].translatedText);
}
},
function (result) {