Ce plugin permet de « lier » des billets (ou des pages) traduits entre eux, formant ainsi une « chaîne » de traduction.
Présentation et utilisation
Il offre, côté public, un widget, affiché lorsqu’on consulte une page ou un billet, et qui fournit la liste des traductions existantes, si elles existent.
Une balise template est également disponible pour fournir cette information dans les contextes de liste de billets (et de pages), comme la page d’accueil, les catégories, … Sa syntaxe est la suivante :
{{tpl:RosettaEntryList [include_current={std|link|none}]}}
Ou include_current
permet de préciser si le billet ou la page courante doit être incluse ou pas dans la liste des traductions (std, par défaut), éventuellement avec son lien (link), ou pas (none).
Le plugin Rosetta est également capable, si l’option est activée, lors de l’affichage d’un billet ou d’une page, ou d’une liste de billets ou de pages (page d’accueil et suivantes, billets d’une catégorie, …), de chercher à fournir la ou les traductions correspondantes aux réglages du navigateur de votre lecteur.
Nota : pour désactiver ce mécanisme pour le lien d’un billet ou d’une page, il suffit de rajouter un paramètre ?lang=nn
à son URL, où nn
correspond à la langue du billet ou de la page en question.
Côté administration, sa page de réglage (voir l’option Rosetta dans le menu Blog), permet de l’activer et éventuellement d’activer le système pré-cité de chargement de traduction à la volée.
La gestion de la « chaîne » de traduction d’un billet ou d’une page se gère, pour l’instant, au niveau de l’édition de ces entrées, en bas de la page :
Cette nouvelle zone liste les traductions existantes pour l’entrée en cours d’édition, vous permet d’aller les éditer, de les supprimer de la « chaîne » de traduction de ce billet ou de cette page (icône en bout de chacune des lignes), d’attacher une traduction à cette chaîne, de créer une nouvelle traduction en basculant ou pas sur l’édition de cette nouvelle entrée.
Attention : Toute la gestion de la « chaîne » de traduction nécessite que Javascript soit activé. La gestion non Javascript n’étant pas encore développée dans cette version du plugin.
Notez que ce plugin ne modifie rien du côté des billets ou des pages et se contente de gérer ces « chaînes » de traductions dans une table qui lui est propre. Le désactiver ou le supprimer n’affectera donc pas le fonctionnement normal de votre blog.
Le widget se configure de manière très simple, à l’image des autres widgets de Dotclear :
Support et suite du développement
Support
J’inaugure avec ce plugin, une nouvelle façon de supporter mes développements. Je verrai à l’usage si c’est pertinent où s’il faut que je revienne à l’ancien fonctionnement (à savoir via les commentaires des billets d’annonce des plugins).
Dorénavant, le dépôt mercurial de ce plugin est visible ici, et vous pouvez y ouvrir des tickets, voire pourquoi pas, me proposer des pull requests.
Suite du développement
Je vais attendre les éventuels retours avant d’aller plus loin dans le codage de ce plugin.
Dans les voies de développement possibles, outre la fin de la gestion des chaînes de traduction des billets et des pages (voir les deux premiers onglets de la page principale du plugin, pour l’instant vierges), j’envisage d’étendre ce mécanisme aux catégories et aux mot-clés, de prévoir des flux RSS/Atom limités à une seule langue, en ce qui concerne le contenu, et, question contenant, la gestion de l’affichage des éléments de navigation du blog en fonction de la langue réglée au niveau de son navigateur par le lecteur — il est très possible que cette fonctionnalité soit prise en charge par un autre plugin, je pense qu’on sort un peu du cadre de mon développement.
Nikrou, lors d’une discussion avec moi sur IRC au sujet de ce plugin, a aussi évoqué l’idée d’avoir une langue « neutre », qui permettrait d’avoir un « fallback » si un billet n’était pas traduit dans la langue choisie. Je verrai éventuellement comment mettre ça en place. L’idée étant d’avoir une langue de référence (par exemple l’anglais) et d’y revenir si jamais une traduction était manquante.
Ce plugin, tel qu’il est codé aujourd’hui, ne gère qu’un élément partiel du blog (billet/page). Il n’est pas, pour l’instant, prévu pour mettre en place un blog multi-lingue, il en est bien loin et je pense que ça conception devrait être revue complètement dans ce cas là.
Conclusion
Je vous livre ce plugin en l’état sachant qu’il reste pas mal de choses à développer pour qu’il soit plus robuste, je n’ai probablement pas pensé à tous les cas d’erreur pouvant se produire pendant la gestion de la « chaîne » de traduction.
N’hésitez-pas à me communiquer toutes les remarques ou idées que vous auriez à son sujet, voire dans un cadre plus général au sujet de l’aspect multilingue de Dotclear, nativement géré de manière très basique. En effet, la langue (proposée par le widget Langues du blog est traitée comme un contexte, à l’image des catégories ou des mot-clés, et pas comme un attribut du contexte courant.
Enjoy!
Dépôt du plugin : https://bitbucket.org/franckpaul/rosetta
1 De Nicolas -
Pour préciser mon propos quant à la langue neutre, voici quelques explications supplémentaires :
- premièrement le cas d’une langue me semble nécessaire pour un site où les articles peuvent être traduits d’une langue à l’autre. On a alors évidemment des liens d’un article dans une langue à un article dans une (ou plusieurs d’ailleurs) langue.
- l’effort de traduction se fait au fur et à mesure et si on a par exemple un site en trois langues (français, anglais, allemand par exemple), les articles originaux ne proviennent pas forcément de la même langue. Mon idée est qu’il n’y a pas de langue de base.
- l’intérêt d’une langue neutre est pour le cas où un article est super intéressant, même non traduit (en attendant mieux). Plutôt que de mettre l’article dans sa vraie langue on met une langue neutre (ou pas de langue). Côté public cet article serait visible quelle que soit la langue choisie.
2 De Franck -
Si on active la prise en compte du accept-language du navigateur (dans les réglages du plugin), le plugin fournira autant que possible les articles dans la langue préférée du visiteur (ou une des préférées), sinon il ne touchera à rien.
Du coup on peut très bien laisser un article (super intéressant) dans sa langue réelle, il sera affiché tel quel dans le flux tant qu’on ne lui aura pas attribué une ou plusieurs traductions, traductions qui seront servies si elles conviennent mieux au visiteur.
Ça c’est pour le cas général ou aucune langue n’est précisée côté URL. Sur la page d’accueil par exemple.
L’idée générale est que du coup, on peut continuer à utiliser Dotclear comme avant et ne se préoccuper de « lier » les traductions. D’ailleurs, si on désactive le plugin, rien n’est cassé et on retrouve le flux complet du blog.
Maintenant il y a, comme le précise nikrou, un éventuel besoin pour un billet donné qui aurait des traductions mais pas une de celles préférées par le visiteur. Pour ça il y a toujours la possibilité d’utiliser le widget fourni par le plugin et qui affiche la liste des traductions dispos pour le billet. Charge à l’utilisateur de faire alors son marché :-)