/ / API de Google: traduce una cadena al idioma EN :( - javascript, html, google-translate

API de Google: traduce una cadena al idioma EN :( - javascript, html, google-translate

Estoy tratando de crear una aplicación web simple que traduzca una cadena que no esté en inglés (que no sea EN) al idioma inglés (EN). Para esto, estoy usando la API de traducción de Google (v1- JS).

Al principio, estoy detectando el idioma proporcionado en una etiqueta div (tenga en cuenta que la codificación de la página está configurada en utf-8).

Luego estoy tratando de traducir el texto si no está en un idioma EN y luego se mostrará justo debajo de la etiqueta de idioma detectada.

¡Puedo obtener el idioma detectado pero la traducción nunca ocurre! :(

Cualquier ayuda será muy apreciada.

Aquí está el código:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>

<script
src="http://www.google.com/jsapi?key=mykeyfrxwexdfwezfdhfxcewx" type="text/javascript"></script>

<script type="text/javascript">
/*
*  How to detect the language of text.
*/


google.load("language", "1");

function initialize() {
var content = document.getElementById("content");
// Setting the text in the div.
content.innerHTML = "<div id="text">Hola, me alegro mucho de verte.</div><div id="detected"></div><div id="transtext"/>";

// Grabbing the text to translate
var text = document.getElementById("text").innerHTML;

// Detect the language of the text.
google.language.detect(text, function(result) {
var detected = document.getElementById("detected");
// If there wasn"t an error in the request
if (!result.error) {
var langCode = result.language;
var langName;

// Loop through the languages enum so that we can find the actual name of the language.
// Learn about the languages enum here:
// http://code.google.com/apis/ajaxlanguage/documentation/reference.html#LangNameArray
for ( var i in google.language.Languages) {
var thisLangCode = google.language.Languages[i];
if (thisLangCode == langCode) {
// find the language code, store the language name.
langName = i;
break;
}
}

// See the detected language.
detected.innerHTML = "Detected: "" + result.language
+ "" - aka "" + langName + """;
}
});

google.language.translate(text, "es", "en", function(result) {
var translated = document.getElementById("transtext");
if (result.transtext) {
translated.innerHTML = result.transtext;
}
});

}
google.setOnLoadCallback(initialize);
</script>
</head>
<body style="font-family: Arial; border: 0 none;">
<div id="content">Loading...</div>

</body>
</html>

Respuestas

1 para la respuesta № 1

3 puntos a tener en cuenta.

En realidad, no estás llamando a translate dentro deldevolución de llamada de detectar. El resultado de la traducción no contiene una propiedad de transtexto. El que necesita se llama traducción. Dudo que quieras publicar tu clave API en un dominio público

Encuentre el código modificado a continuación

   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>

<script
src="http://www.google.com/jsapi?key=xxxxxxxxxxxxxxx>" type="text/javascript"></script>

<script type="text/javascript">
/*
*  How to detect the language of text.
*/


google.load("language", "1");

function initialize() {
var content = document.getElementById("content");
// Setting the text in the div.
content.innerHTML = "<div id="text">Hola, me alegro mucho de verte.</div><div id="detected"></div><div id="transtext"/>";

// Grabbing the text to translate
var text = document.getElementById("text").innerHTML;

// Detect the language of the text.
google.language.detect(text, function(result) {
var detected = document.getElementById("detected");
// If there wasn"t an error in the request
if (!result.error) {
var langCode = result.language;
var langName;

// Loop through the languages enum so that we can find the actual name of the language.
// Learn about the languages enum here:
// http://code.google.com/apis/ajaxlanguage/documentation/reference.html#LangNameArray
for ( var i in google.language.Languages) {
var thisLangCode = google.language.Languages[i];
if (thisLangCode == langCode) {
// find the language code, store the language name.
langName = i;
break;
}
}

// See the detected language.
detected.innerHTML = "Detected: "" + result.language
+ "" - aka "" + langName + """;
google.language.translate(text, result.language, "en", function(result) {
var translated = document.getElementById("transtext");
if (result.translation) {
translated.innerHTML = result.translation;
}

});

}
});


}
google.setOnLoadCallback(initialize);
</script>
</head>
<body style="font-family: Arial; border: 0 none;">
<div id="content">Loading...</div>

</body>
</html>