2010-04-26 111 views
0

我有一堆大的txt文件(遊戲演練),我需要從英語翻譯成法語。我的第一本能是將它們託管在服務器上,並使用PHP腳本通過執行file_get_contents()和一些URL操作來自動執行翻譯過程以獲取翻譯的文本。類似:抓取Google翻譯的頁面? (PHP)

http://translate.google.com/translate?hl=fr&sl=en&u=http://mysite.com/faq.txt

我發現它提出了兩個問題:1)有幀2)的幀src值是相對的(即SRC =),所以沒有負載 「/ translate_c ....?」。

有什麼辦法可以在PHP中獲取通過Google翻譯的頁面(不使用AJAX API,因爲它在這裏真的不適合)?

回答

2

使用cRL獲取生成的頁面,然後解析它。

+0

謝謝,但不會IFrames仍然是一個問題? – mathon12 2010-04-26 19:48:25

+0

使用cURL獲取Chaim上面發佈的網址,並且應該設置。這也應該避免Javascript的複雜性,因爲它只會抓取HTML。 – 2010-04-26 21:01:12

+0

我正與cURL一起,謝謝! – mathon12 2010-04-27 07:47:21

1

而是利用具有幀正規翻譯URL的,使用框架的src:

http://translate.googleusercontent.com/translate_c?hl=<TARGET LANGUAGE>&sl=<SOURCE LANGUAGE>&tl=af&u=http://<URL TO TRANSALTE>&rurl=translate.google.com&twu=1&usg=ALkJrhhxPIf2COh7LOgXGl4jZdEBNutZAg 

例如從英語http://chaimchaikin.za.net/的頁面翻譯成南非語:

http://translate.googleusercontent.com/translate_c?hl=en&sl=en&tl=af&u=http://chaimchaikin.za.net/&rurl=translate.google.com&twu=1&usg=ALkJrhhxPIf2COh7LOgXGl4jZdEBNutZAg 

這將只打開翻譯的「無框」頁面。

您可能需要檢查並測試以找到所需語言的代碼。 還要記住,Google可能會將腳本添加到翻譯中(例如在懸停時顯示原文)。

編輯:它出現,在檢查代碼,有很多 JavaScript之間的翻譯。您可能需要找到一種方法來擺脫它。

編輯:進一步的檢查顯示,結束位「usg = ALkJr ...」似乎每次都會改變。也許首先在常規Google翻譯頁面(例如http://translate.google.com/translate?hl=fr&sl=en&u=http://mysite.com/faq.txt)上運行請求,然後查找並解析「usg = ..」部分,並將其用於「無框」頁面上的下一個請求(http://translate.googleusercontent.com/translate_c?..。)。

+0

嗨,謝謝,我已經試過這樣做,但它似乎與框架不一致(他們似乎仍然存在......)。我想最終取決於這個關鍵(usg)。我現在會玩這些想法,謝謝。 – mathon12 2010-04-27 07:58:01