Skip to content

Bouillon collaboratif : Lien "traduction" Google

28/09/2009

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 :

  1. demander au pipe de détecter automatiquement la langue
  2. mettre la valeur de la langue (« en », « fr », etc.) dans un champ « language »
  3. distinguer les billets dont la langue est « fr » de ceux dont c’est « en », et pour ces derniers rajouter un lien.
  4. 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 :

http://ajax.googleapis.com/ajax/services/language/detect?q=Comment+utiliser+la+traduction+de+Google&v=1.0

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 :

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 !).

Advertisements
4 commentaires
  1. 29/09/2009 06:41

    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 🙂

  2. 29/09/2009 08:39

    @dbourrion : beuh ! c’est celui qui l’a dit qui y est !

  3. 29/09/2009 22:39

    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

Trackbacks

  1. Bouillon collaboratif : dédoublonnage « Encore un biblioblog…

Les commentaires sont fermés.

%d blogueurs aiment cette page :