0

我有一堆大的 txt 文件(游戏演练),我需要将它们从英语翻译成法语。我的第一直觉是将它们托管在服务器上,并使用 PHP 脚本通过执行 file_get_contents() 和一些 URL 操作来自动翻译过程以获取翻译后的文本。就像是:

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

我发现它带来了两个问题:1) 有帧 2) 帧src值是相对的(即 src="/translate_c?....")所以没有加载。

有没有办法在 PHP 中获取通过 G​​oogle 翻译的页面(不使用他们的 AJAX API,因为它真的不适合这里)?

4

2 回答 2

2

使用cRL获取结果页面,然后对其进行解析。

于 2010-04-26T19:43:21.840 回答
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 ...”似乎每次都在变化。也许首先在常规谷歌翻译页面上运行请求(例如http://translate.google.com/translate?hl=fr&sl=en&u=http://mysite.com/faq.txt)而不是查找并解析“usg =..” 部分并将其用于“无框架”页面(http://translate.googleusercontent.com/translate_c?..)上的下一个请求。

于 2010-04-26T20:22:56.080 回答