【问题标题】:Google API - Translate a string into EN language :(Google API - 将字符串翻译成 EN 语言 :(
【发布时间】:2011-08-12 07:36:33
【问题描述】:

我正在尝试制作一个简单的基于 Web 的应用程序,它将非英语(非 EN)字符串翻译成英语 (EN) 语言。为此,我使用 Google 的翻译 API (v1- JS)。

首先我检测的是 div 标签中提供的语言(注意页面编码设置为 UTF-8)。

然后我尝试翻译非 EN 语言的文本,然后将其显示在检测到的语言标签下方。

我能够获得检测到的语言,但翻译永远不会发生! :(

任何帮助将不胜感激..

代码如下:

 <!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>

【问题讨论】:

  • 究竟出了什么问题?你得到什么错误?
  • 我能够检测到语言,但看不到翻译文本。我无法猜测这段代码有什么问题。没有错误出现。 :( ?

标签: javascript html google-translate


【解决方案1】:

注意3点。

您实际上并没有在检测回调中调用翻译。 翻译结果不包含属性 transtext 。您需要的是名为 translation 。 我怀疑你想在公共域中发布你的 API 密钥

在下面找到修改后的代码

   <!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>

【讨论】:

  • thanx 的建议 :) 但我仍然无法成功运行它。事实上,语言检测不再起作用了 :( 就 API 而言,它来自 Google 帮助。:)
  • 您在我发布的代码中替换了您的 api 密钥?我把它换成了 xxxxxxxxxxxx
  • @echo9,重读你原来的cmets,感觉你没看我的cmets,只是复制粘贴代码,试运行。原始 cmets 中有足够的信息来了解代码有什么问题并进行更正。我发布更正的代码是不必要的步骤。
  • 现在我必须使其灵活,即处理用户输入的字符串而不是硬编码的“Hola!..”:)
猜你喜欢
  • 2014-07-01
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
相关资源
最近更新 更多