Google translator API

Galera to usando essa API do google pra traduzir textos, ela está funciona perfeitamente, porém, por ter essas chamadas asyncronas estou tendo dificundades.

eu preciso que quando eu chamar a funcção traduzir ela que retorne o texto traduzido, mas isso não acontece devido as chamadas asyncronas.

Alguém sabe como eu posso fazer para que assim que eu chamar a função traduzir que ela me retorne o resultado ?

[code]function traduzir(texto, idiomaDesejado) {

google.language.detect(texto, function(result) {
    
    if (!result.error && result.language) {        
    	
       google.language.translate(texto, result.language, idiomaDesejado,
                              function(result) {                

      		if (result.translation)
		window.alert(result.translation);
      			          		          		
      		
    	});

    }
    
});

}[/code]

uma dica, mas considero armengue:


function traducao(){
var textoTraduzido = null;

chama funcao assincrona de tradução que deve alimentar a variavel textoTraduzido

while(textoTraduzido==null){

}

return textoTraduzido;
}

lauronolasco,
não funcionou cara… parece que a API deixa de fazer o trabalho dela pq o browser fica processando esse loop e a API nunca traduz o texto.

Não sei é isso o que precisa.
Esse foi um protótipo de quando testei essa API.
Está funcional com HTML.

<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google AJAX Search API Sample</title> <script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"></script> <script type="text/javascript"> google.load("language", "1"); function getIdioma(languageCode){ for (var i in google.language.Languages) { if (languageCode == google.language.Languages[i]) { return i; break; } } } function traduzir() { var conteudo = document.getElementById('main'); conteudo.innerHTML = '<div>Traduzindo...</div>'; var idioma = document.getElementById("idioma").value; var texto = document.getElementById("texto").value; var idiomaDetectado; google.language.detect(texto,function(result){ idiomaDetectado = result.language; google.language.translate(texto, idiomaDetectado, idioma, function(result) { window.alert(result.translation); conteudo.innerHTML = '<div>Tradução: '+result.translation+'</div>'; conteudo.innerHTML += '<div>Traduzido do: '+idiomaDetectado+' - '+getIdioma(idiomaDetectado)+'</div>'; conteudo.innerHTML += '<div>Traduzido para: '+idioma+' - '+getIdioma(idioma)+'</div>'; }); }); } </script> </head> <body style="font-family: Arial;border: 0 none;"> <div>Tradução de qualquer idioma:</div> <div> <input id="texto" type="text" size="50"/> <select id="idioma"> <script type="text/javascript"> var idiomas = ""; for (var i in google.language.Languages) { idiomas += "<option value="+google.language.Languages[i]+">"+i+"</option>"; } document.write(idiomas); </script> </select> <input type="submit" value="Traduzir" onclick="traduzir();"/> </div> <div id="main"></div> </body> </html>

tenta por um sleep dentro do while

Java Lover, eu não posso fazer isso que tu fez pq eu uso GWT, mas encontrei uma API do google translator pro GWT, consegui resolver…
Valeu pela foça de todos…