Grosso Modo

To content | To menu | To search

Guide to bilingual blog

Important [mise à jour] : Depuis la sortie de la version finale de Dotclear, il s'est produit plusieurs choses: ces plugins sont devenus incompatibles avec la dernière version en particulier (pas complètement, mais un peu). De plus, peu de temps avant la sortie, la gestion des langues a été pas mal remaniée. De fait, j'ai beaucoup modifié mes plugins (et grandement amélioré la gestion). Il y a maintenant un seul billet et des traductions associées. Regardez l'extension

PrevNext : navigation contextuelle et traductions

Le premier plugin est prevnext. Il s'appuie fortement sur le plugin metadata qui contenait déjà beaucoup d'éléments utilisables pour gérer la traduction de billets. Il permet de définir les éléments suivants :

  • EntryNextBy et EntryPreviousBy permettent d'atteindre le billet suivant ou précédent (en imposant éventuellement des restrictions, par exemple, même langue ou même catégorie que le billet courant). Ils omettent les traductions de l'article courant en faisant leur recherche.
  • TagNext et TagPrev permettent d'atteindre le billet suivant ou précédent que le billet courant qui possède le tag courant en commun. Ils omettent les traductions de l'article courant en faisant leur recherche. Remarquez qu'une traduction peut avoir des tags différents du billet d'origine, comme c'est le cas ici.
  • TagAll permet de lister tous les tags d'un billet, mais il est modulable pour lister toutes les traductions.
  • WithoutTranslation, NotFirstTranslation et FirstTranslation permettent de savoir si le billet courant est la première traduction ou pas d'un autre billet.
  • SaveMetaID, SaveCatID et SaveLangID sont des petites fonctions qui sauvegardent dans un coin des données courantes.
  • Une version traduite et légèrement modifiée de l'affichage des tags dans la barre latérale est offerte. La différence est subtile et si vous ne la voyez pas, c'est tant mieux.
  • Une ligne est ajoutée en zone d'administration pour chaque billet pour qu'on puisse définir un « groupe de traduction ». Tous les billets qui ont le même « groupe de traduction » sont considérés des traductions l'un de l'autre (mais sont indépendents, en fait).

Il n'y a pas plus de documentations que cela, sinon de télécharger mon thème qui utilise tout ça...

SupportedLang : la voix de son maître

Le deuxième plugin est supportedlang. J'avais commencé par utiliser le plugin autoLocale mais le plugin ne chargeait pas les traductions des autres plugins, une fois reconnu la langue du navigateur. À force de bricolage, je n'ai pas gardé grand chose.

Concrètement, il suffit de modifier vos préférences (sous Firefox 2, c'est dans Éditions → préférences → avancés → Général → Choisir la langue pour l'affichage des pages). Si vous préférez un affichage en anglais, anglais ce sera. Si c'est du français qui tient le haut du panier, le blog s'exprimera en français. Et si ma maîtrise de l'espagnol était meilleure, vous auriez la possibilité de lire les informations de ce blog en espagnol (les dates, les rubriques dans la colonne d'à côté, etc.).

TranslatedWidgets : une pâle copie de l'original

Le problème qui restait était que les widgets sur le côté s'affichaient avec le titre toujours en français (ou pour être plus précis, avec le titre dans la langue préférée du navigateur de la dernière fois où j'avais inséré le widget dans la colonne — c'est-à-dire en français). J'ai donc recopié les widgets d'origine en modifiant uniquement que le titre est stocké en anglais tout le temps, et traduit en fonction de la langue du lecteur (et non pas en fonction de la langue de l'auteur du blog). Ça me paraît mieux, et de toute façon, c'est moi qui commande. C'est très répétitif, et pour simplifier, le plugin suppose que les plugins widgets et blogroll sont tous deux installés (il ne fait que des petites modifications subtiles).

PersonalTranslations : le plugin qui ne sert à rien

En fait, c'est uniquement une liste de traductions. Comme mon thème doit s'afficher de façon un peu changée (par exemple « Published » en anglais doit s'afficher « Publié le » en français), j'avais besoin d'une petite liste auxiliaire. Ce n'est pas indispensable si vous ne mettez pas de texte de ce genre, mais que vous copiez mon thème ou recréez le votre, c'est probablement nécessaire.

Comments

1. On Tuesday 3 July 2007, 14:14 by adjaya

Eh bien, je suis impressionnée, surtout par la mise au point de ton système de navigation. J'ai planché pas mal là-dessus pour améliorer la navigation de mon photoblog.
J'ai vu dans un autre billet que mon plugin sameCat t'a inspiré : J'en très honoré même si ma contribution est surement minime à coté de ce que tu as fait ici.
J'ai mis en place sur mon blog également une navigation contextuelle du même tag mais sur un seul tag courant et en passant le paramètre par l'url. Je ne l'est pas encore diffusé en plugin car c'est pas encore suffisamment propre.
Je vais étudier de près ce que tu appel "groupe de traduction" pour voir si je peux l'utiliser pour faire des regroupement de billets constituant les différents chapitres d'une nouvelle par exemple.
Merci beaucoup d'avoir mis ton travail à disposition.

2. On Tuesday 3 July 2007, 16:56 by Jean-Christophe Dubacq

Je confirme que SameCat a été un des premiers plugins que j'ai décortiqué. Il doit d'ailleurs en rester des traces dans la façon dont Prevnext fonctionne (par exemple, une classe séparé avec une instance) alors que ma façon de modifier DotClear a elle-même évoluée.

Et pour répondre à ta question, le plugin metadata permet d'attribuer des tags a des posts, mais en fait aussi des trucs, des bidules et des machins (comprendre: par défaut, un mot-clé est une métadonnée de type tag, mais il est possible d'attribuer des métadonnées de type arbitraire. Par exemple, tu pourrais attribuer une métadonnée de type chapitre, et en modifiant à peine ce que j'ai fait, faire afficher tous les billets qui ont le même chapitre. Enfin, à peine, c'est plus vite dit que fait !

3. On Tuesday 3 July 2007, 18:46 by adjaya

Oui, j'ai comencé à regarder le code et une première chose m'intrique : Dans class.dc.prevnext.php :
$currenttag='photo' où photo semble être un paramètre codé en dur.

4. On Tuesday 3 July 2007, 19:23 by adjaya

J'ai un bug sur ma config (qui ne laisse rien passer :) ) :
J'ai du déclarer toute les méthodes public function, dans le fichier plugins/prevnext/_public.php, en public static function, sinon j'ai plein d'alertes.

5. On Tuesday 3 July 2007, 20:21 by Jean-Christophe Dubacq

Merci des précisions.

Le tag codé en dur « photo » ne sert à rien ; tous les usages que je fais de cette fonction sont de toute façon initialisés avec une valeur. Je ne sais même pas pourquoi j'ai mis une valeur par défaut.

Quant à « public static », à bien y réfléchir, oui, il faut sans doute les mettre public static, puisque lorsque les méthodes sont invoquées par DotClear (suite aux ajouts de comportement), il n'y a pas d'instance de ma classe tplPrevNext qui est créée par l'appel à ses fonctions. Une révision est à attendre.

6. On Monday 11 August 2008, 12:42 by Nico

Je suis en train de reconstruire mon blog afin qu'il soit complètement bilingue et ce post est extrêmement utile et les plugins très bien fait, MERCI.
J'ai une question toute fois, à propos du flux RSS, j'ai remarqué que dans le votre il y a un paramètre navlang=en qui traine mais quand on visualise le flux, il y a des billets en français dedans. Je n'ai pas trouvé si Dotclear intègre nativement un flux par langue ou pas, enfin je suis un peu paumé pour réussir à fournir deux flux distincts en fonction de la langue... SI vous avez des infos, ce serait formidable (même juste un lien ferait l'affaire).
Et bravo encore pour le travail sur les plugins.

7. On Wednesday 20 August 2008, 19:08 by b_b

bonjour,
mon commentaire n'est peu être pas au bon endroit mais j'ai essayer d'appliquer tes plugins dans un dotclear 2 version finale mais j'ai rencontré quelques problèmes notamment pour les fichiers de langues que je n'ai pas réussi à trouver et à installer.

Cela semble marcher avec l'anglais et le français mais pas avec l'allemand :(

Où peut on trouver ces fichiers de langues pour la traduction de l'interface (sidebar notamment)

8. On Saturday 20 December 2008, 19:29 by musinou

Bonjour,

Je lis ici qu'un nouveau plugin sera prêt en novembre passé. Est-il quelque part, je n'arrive pas à le trouver...

Ça m'intéresse beaucoup!

merci merci!

9. On Monday 22 December 2008, 09:37 by Jean-Christophe Dubacq
Euh... j'espère l'offrir pour Noël. Il reste *un* bug (je dois redéfinir la façon de faire les flux RSS pour les tags). Sinon, tout est prêt, évidemment.

Add a comment

Comments can be formatted using a simple wiki syntax.

This post's comments feed