TypeError:无法在Google Translate API中读取未定义的属性“翻译”

时间:2013-08-13 07:17:01

标签: python google-translate google-api-python-client

我使用了此Google Translate API's Get Started

中的以下代码
  <head>
    <title>Translate API Example</title>
  </head>
<body>
  <div id="sourceText">Hello world</div>
  <div id="translation"></div>
  <script>
  function translateText(response) {
    // ERROR SHOW HERE
    document.getElementById("translation").innerHTML += "<br>" + response.data.translations[0].translatedText;
  }
  </script>
  <script>
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    var sourceText = escape(document.getElementById("sourceText").innerHTML);

    var source = 'https://www.googleapis.com/language/translate/v2?key=MY-KEY&source=en&target=de&callback=translateText&q=' + sourceText;
    newScript.src = source;

    // When we add this script to the head, the request is sent off.
    document.getElementsByTagName('head')[0].appendChild(newScript);
  </script>
</body>

我收到错误“TypeError:无法读取未定义的属性'翻译'

请告诉我如何解决此错误,

谢谢,

1 个答案:

答案 0 :(得分:0)

我收到了告诉我如何修复此错误

的消息
  

我认为我能够复制您的错误,但只能复制一次 - 该示例适用于我,使用各种翻译语言等等。在我运行Chrome开发者控制台之前,我以为我只看过一次错误。我确实尝试将console.log(响应)添加到translateText()回调中,但是也没有再次显示错误。尝试查看您可以登录的内容//错误显示在您的样本中。

     

当然,文档中的示例是非常脆弱的代码 - 我可以想象有些情况下数据成员不存在,只有错误。 e.g:

// API callback
translateText({
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value",
    "debugInfo": "Target language is not set to a valid language code:…\n"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}
);

而且,这真的很好,

需要添加“console.log(response)”,如下代码:

<script>
function translateText(response) {
console.log(response);
document.getElementById("translation").innerHTML += "<br>" + response.data.translations[0].translatedText;

}   

谢谢,