Bouillon collaboratif : Lien « traduction » Google
Juste avant le lancement du Bouillon, a été rajouté un lien « Traduction automatique (Google) » qui n’apparaît que sur les articles en anglais.
Or les flux RSS des sources ne fournissent pas, pour chaque billet, l’indication de langue : cette information n’est fournie nulle part. Il faut donc :
- demander au pipe de détecter automatiquement la langue
- mettre la valeur de la langue (« en », « fr », etc.) dans un champ « language »
- distinguer les billets dont la langue est « fr » de ceux dont c’est « en », et pour ces derniers rajouter un lien.
- Il faut que ce lien soit la concaténation de : « http://translate.google.com/translate?sl=en&tl=fr&u= » suivi du lien du billet. L’URL racine qui correspond à la traduction automatique dans Google, où la langue de départ est l’anglais (sl=en, pour start language) et la langue de destination est le français (tl=fr, pour translation language).
Etape 1 : détection automatique de la langue
<
Vous vous doutez que, lorsque vous lancez une requête dans Google, le moteur est capable de reconnaître la langue utilisée pour la requête. Donc Google sait reconnaître une langue sur quelques mots.
Il existe un service Google (une API, pour être exact) qui donne une valeur de langue quand on lui fournit une phrase.
Par exemple, la phrase suivante :
Comment utiliser la traduction de Google
peut être transmise à cette API ainsi :
Si vous cliquez sur le lien ci-dessus, vous ouvrez un fichier texte en format JSON ou les attributs de la valeur utilisée (la phrase en question) sont imbriquées les unes dans les autres, de manière assez comparable à un fichier XML.
Bref, dans la copie d’écran ci-dessus, le premier encart (Loop) contient un « URL Builder » qui crée un nouveau champ pour chaque item, champ intitulé item.lang_url. Sa valeur est la concaténation de :
- http://ajax.googleapis.com/ajax/services/language/detect?
- &q=item.title (titre de chaque billet partagé)
- &v=1.0
Le second encart (Loop) ouvre la page dont l’URL est celle qui vient d’être créée (avec un Fetch Data, dont l’adresse est item.lang_url).
Le champ « Path to item list » indique quelle valeur il faut récupérer, selon une syntaxe assez simple : dans le fichier dont l’URL est http://ajax.googleapis.com/ajax/services/language/detect?q=Comment+utiliser+la+traduction+de+Google&v=1.0, la langue est dans responseData > language. Donc on indique que la valeur responseData.language est à ranger dans item.language.
Ce faisant, Yahoo Pipes a récupéré en réalité toute une imbrication de l’information, et le dernier encart (Rename) simplifie le nom du champ : la valeur de langue (« fr ») avait été stockée dans item.language.0.content (on s’en rend compte assez vite dans le debugger). Elle sera désormais dans item.language.
Etape 2 : génération du lien vers Google Translate
Après que le champ item.language a été correctement renseigné grâce à l’étape 1, on divise le flux produit en deux. Le module « Split » produit deux flux identiques.
Dans celui de gauche, je ne laisse passer que les items de langue française, que je réinjecte dans le flux unique (Union).
Dans celui de droite, je bloque tous les items de langue française. Puis pour chacun de ces items, je génère la ligne suivante :
<p style= »text-align: right »> [créer un paragraphe aligné à droite]
<a href= »http://translate.google.com/translate?sl=en&tl=fr&u=item.link« >Traduction automatique (Google)
</a>
</p>
Puis je réinjecte ces items-là aussi dans le flux principal (module Union)
Et voilà.
Remarque
Notez que pour l’instant je n’ai pas abordé la question du dédoublonnage. C’est le plus gros morceau (rien à voir avec celui-ci). Donc j’avance progressivement (en tout cas, j’essaie !).

Merci parce que grâce à ton blog et à ses billets techniques, je sais à présent de manière certaine que je ne suis pas un geek – mais toi, si
@dbourrion : beuh ! c’est celui qui l’a dit qui y est !
Content de trouver un adepte des Yahoo Pipes. J’ai quelque peu laissé de côté pour l’instant, mais sur toplien.net tu trouveras mes travaux, si ça peut te servir. Prions pour que Yahoo continue à les implémenter.
J’ai twitté au sujet de ce billet sous @infogere.
Cordialement,
RG