【Qt】Translation via Google API


【目的】
【原理】
幾種作法可以達成 ASTranslator 的功能。以 Hello 這個字串為例。將英文轉成俄文。
  1. 呼叫 Google API,參考 Using Google Translator API in Flash Lite (Nokia Forum),
    http://wiki.forum.nokia.com/index.php/Using_Google_Translator_API_in_Flash_Lite
    第一個參數 q = hello,代表要轉換的字串
    第二個參數 langpair=en|ru ,代表要由 英文(en)轉成俄文(ru)。


    http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en|ru 
    執行結果會回傳回以下內容(由Opera擷取),привет 就是翻譯的結果。
     image
    用 Wireshark 看監看封包把整個交易程序弄得更清楚。紅色框框就是 server端的回應,
    image
  2. 使用 WebKit,連接 translate.google.com 抓取網頁資料,
    第一個參數裡面的 en代表轉換前語系為 英文。
    第一個參數裡面的 ru 代表要轉換語系為 俄文(ru)。
    第一個參數裡面的 hello 代表要轉換的字串。

     image
  3. 如果有需要發音的話,請將下面連結貼到Google Chrome( IE and Opera are not working)。
    1. 中文 http://translate.google.com.tw/translate_tts?tl=zh-tw&q=你好
    2. 英文 http://translate.google.com.tw/translate_tts?tl=en&q=hello
    3. 俄文 http://translate.google.com.tw/translate_tts?tl=ru&q=привет
    4. 參考 試作TTS (Text-To-Speech) for Flash
      http://blog.iamjason.com/2010/03/tts-text-to-speech-for-flash.html
      不過語音資料無法用wget無法下載,可用webkit試看看。
      Oebit: orbitdm "http://translate.google.com.tw/translte_tts?tl=en&q=hello"
    5. 看起來是以Json格式回傳, 非 XML 格式,目前 Google翻譯並無提供XML格式。
      只有看到 Google Weather API 有提供。 
【程式】
  1. 參考範例

    1. Qt 官方本身提供了一個抓取網頁內容的範例,
      請參考http://doc.qt.nokia.com/4.6/network-http.html,或
      Qt Demo | Networking | Http Client,可以由此通過此範例改寫
    2. 執行時截圖,URL 就是 API 的網址。
      image
    3. 結果會放於和執行檔相同目錄下的 translate 這個檔案內。用編輯器打開就可以看到內容。
      image
    4. QNetworkAccessManager

      1. get(QNetworkRequest(url)
    5. QNetworkReply

      1. readAll() 回傳QByteArray
    6. QNetworkRequest
       
  2. 改寫上面範例,達到我們需要的功能,研究中。

【問題】

  1. 目前程式和 Norton 好像相衝。

【參考】

 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com