【目的】
- 利用 Qt 呼叫 Google API。
- 以翻譯軟體為例,實現類似
【原理】
幾種作法可以達成 ASTranslator 的功能。以 Hello 這個字串為例。將英文轉成俄文。
- 呼叫 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擷取),привет 就是翻譯的結果。
用 Wireshark 看監看封包把整個交易程序弄得更清楚。紅色框框就是 server端的回應,
- 使用 WebKit,連接 translate.google.com 抓取網頁資料,
第一個參數裡面的 en代表轉換前語系為 英文。
第一個參數裡面的 ru 代表要轉換語系為 俄文(ru)。
第一個參數裡面的 hello 代表要轉換的字串。
- 如果有需要發音的話,請將下面連結貼到Google Chrome( IE and Opera are not working)。
- 中文 http://translate.google.com.tw/translate_tts?tl=zh-tw&q=你好
- 英文 http://translate.google.com.tw/translate_tts?tl=en&q=hello
- 俄文 http://translate.google.com.tw/translate_tts?tl=ru&q=привет
- 參考 試作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"
- 看起來是以Json格式回傳, 非 XML 格式,目前 Google翻譯並無提供XML格式。
只有看到 Google Weather API 有提供。
【程式】
- 參考範例
- Qt 官方本身提供了一個抓取網頁內容的範例,
請參考http://doc.qt.nokia.com/4.6/network-http.html,或
Qt Demo | Networking | Http Client,可以由此通過此範例改寫
- 執行時截圖,URL 就是 API 的網址。
- 結果會放於和執行檔相同目錄下的 translate 這個檔案內。用編輯器打開就可以看到內容。
- QNetworkAccessManager
- get(QNetworkRequest(url)
- QNetworkReply
- readAll() 回傳QByteArray
- QNetworkRequest
- 改寫上面範例,達到我們需要的功能,研究中。
【問題】
- 目前程式和 Norton 好像相衝。
【參考】