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 cb {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.data;
29 // Pman.GoogleTranslate(str, src, dest, cb, force);
32 // failure : function() {
33 // Roo.log("Google key fetch failed");
34 // // do not display error message...
48 function escapeDecode(encodedString) {
49 var output = encodedString;
50 var binVal, thisString;
51 var myregexp = /(&#([0-9]+);)/;
52 while ((match = myregexp.exec(output)) != null
56 binVal = parseInt(match[2]);
57 thisString = String.fromCharCode(binVal);
58 output = output.replace(match[1], thisString);
60 return Roo.util.Format.htmlDecode( output);
67 if ((cur +1) > sbits.length) {
68 //Roo.log("CALLING COMPLETED: " + complete);
72 if (!sbits[cur].length || !sbits[cur].replace(/\s+/).length) {
79 // Roo.log("SEND : " + sbits[cur]);
80 Pman.GoogleTranslate( sbits[cur], src, dest, function(result) {
81 if (typeof(result) == 'object') {
85 //padding might not be needed...
86 complete += complete.length ? ' ' : '';
93 // chunk up long strings..
94 // we should roo.encode to test lenght..
95 if (!force && str.length > 200) {
96 var bits = str.split(/(\s+|[0-9\u3002\uff0c\u3001\u201c\u201d]+)/);
98 for (var i =0; i < bits.length; i++) {
99 if (sbits[cur].length + bits[i].length > 190) {
101 sbits[cur] = bits[i];
104 //sbits[cur] += sbits[cur].length ? ' ' : '';
105 sbits[cur] += bits[i] + ' '
109 cur = 0; // reset cursor.
119 // var x = new Roo.data.ScriptTagProxy({
120 // url: 'https://www.googleapis.com/language/translate/v2',
121 // //'http://ajax.googleapis.com/ajax/services/language/translate',
122 // callbackParam : 'callback'
127 src = src.replace('_','-');
128 dest = dest.replace('_','-');
129 // google does not recognize HK...
130 if (src == 'zh') src = 'zh-CN';
131 if (dest == 'zh') dest = 'zh-CN';
132 if (src == 'zh-HK') src = 'zh-TW';
133 if (dest == 'zh-HK') dest = 'zh-TW';
136 url : baseURL + '/Core/GoogleTranslate.php',
138 mask : 'Translating',
139 maskEl : document.body,
152 if(typeof(o.data.error) != 'undefined'){
153 Roo.get(document.body).unmask();
154 Roo.MessageBox.alert("Failure ", o.data.error.message);
158 cb(o.data.translatedText);
159 // ret = o.data.translatedText;
161 failure: function (res) {
163 Roo.MessageBox.alert("Failure ", res.message);
172 // key : Pman.GoogleTranslate.key,
177 // //langpair : src + '|' +dest
180 // readRecords : function (o) {
185 // return o.data.translations[0].translatedText;
186 // //return escapeDecode(o.data.translations[0].translatedText);
189 // function (result) {
201 Pman.gtranslate = Pman.GoogleTranslate;