2010-04-26 112 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