2010-04-26 2 views
0

J'ai un tas de gros fichiers txt (jeu de soluces) que je dois traduire de l'anglais vers le français. Mon premier instinct était de les héberger sur un serveur et d'utiliser un script PHP pour automatiser le processus de traduction en faisant une file_get_contents() et une manipulation d'URL pour obtenir le texte traduit. Quelque chose comme:Fetch pages traduites par Google? (PHP)

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

Je l'ai trouvé pose deux problèmes: 1) il y a des cadres 2) le cadre src valeurs sont relatives (à savoir src =) donc rien charges "/ translate_c ....?".

Est-il possible de récupérer les pages traduites par Google en PHP (sans utiliser leur API AJAX comme il est vraiment pas adapté ici)?

Répondre

2

Utilisez cRL pour obtenir la page résultante puis analyser.

+0

Merci, mais ne les iframes être encore un problème? – mathon12

+0

Utilisez cURL pour obtenir l'URL affichée par Chaim ci-dessus et vous devriez être défini. Cela devrait également éviter les complications avec Javascript, car il ne prendra que le code HTML. –

+0

Je pars avec cURL, merci! – mathon12

1

Au lieu d'utiliser l'URL traduire régulière qui a des cadres, utilisez le src du cadre:

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 

Par exemple, pour traduire la page http://chaimchaikin.za.net/ Anglais Afrikaans:

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 

Cette volonté ouvrir seulement une page "sans cadre" de la traduction.

Vous voudrez peut-être examiner et tester afin de trouver les codes pour la langue souhaitée. Gardez également à l'esprit que Google peut ajouter des scripts à la traduction (par exemple pour afficher le texte d'origine sur le vol stationnaire).

EDIT: Il apparaît, en examinant le code, qu'il y a un lot de javascript entre la traduction. Vous devrez peut-être trouver un moyen de vous en débarrasser.

EDIT: Un examen plus approfondi montre que le bit de fin "usg = ALkJr ..." semble changer à chaque fois. Vous pouvez d'abord lancer une demande sur la page de traduction Google habituelle (par exemple http://translate.google.com/translate?hl=fr&sl=en&u=http://mysite.com/faq.txt) que de rechercher et analyser la partie "usg = .." et l'utiliser pour votre prochaine demande sur la page "sans cadre" (http://translate.googleusercontent.com/translate_c?...).

+0

Salut, merci, j'avais déjà essayé de le faire mais il semble incohérent avec les cadres (ils semblent toujours là ...). Je pense que beaucoup dépend de cette clé à la fin (usg). Je vais jouer avec ces idées maintenant, merci. – mathon12