首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google API -将字符串翻译成EN语言:(

Google API -将字符串翻译成EN语言:(
EN

Stack Overflow用户
提问于 2011-08-12 15:36:34
回答 1查看 8.3K关注 0票数 1

我试图使一个简单的基于网络的应用程序,将翻译成非英语(非英语)字符串为英语(EN)语言。为此,我使用了Google的翻译API (v1- JS)。

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

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

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

任何帮助都将不胜感激..

代码如下:

代码语言:javascript
复制
 <!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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-12 16:02:53

需要注意的3点。

实际上,您并没有在detect的回调中调用translate。翻译结果不包含属性transtext。您需要的是名为翻译的代码。我怀疑您是否愿意将您的API密钥发布在公共域中

在下面查找修改后的代码

代码语言:javascript
复制
   <!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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7036941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档