Bonjour/bonsoir à tous,
@ksar : Comment gères-tu la reprise des données dans le cas d’une migration vers Sphinx, et le multilinguisme ? Personnellement, je ne suis pas contre mais ce sont des choses à prévoir
Comme indiqué, j’ai passé mon après midi à tester la faisabilité d’une migration de version MediaWiki (le logiciel actuel utilisé par la documentation Dolibarr). Je vous fait donc un petit retour par rapport à cela.
J’ai commencé par récupérer un export de l’ensemble des pages et des images du wiki actuel pour pouvoir tester un import dans la dernière version de MediaWiki. Pour cela, j’ai utilisé le script dumpgenerator.py de l’équipe wikiteam disponible sur Github. Ce script permet de générer un fichier d’export XML d’un Wiki MediaWiki contenant l’ensemble des pages, catégories, métadonnées de fichiers, etc. et de télécharger les images.
J’ai ensuite installé en local avec Docker la dernière version de MediaWiki (1.32.2).
J’ai réimporté l’ensemble des 3400 pages et des 775 images en local à l’aide des scripts de maintenance MediaWiki importDump.php et importImages.php sans soucis.
J’ai installé les extensions actuellement utilisées sur le Wiki (ou leur version mise à jour) :
- AddHTMLMetaAndTitle 0.7 (remplace MetaKeywordsTag 0.1)
- MultiLanguageManager 1.29
- ParserFunctions 1.6
- SyntaxHighlight 2.0
Pour MultiLanguageManager (l’extension que nous utilisons actuellement pour lier les différentes traductions de pages), j’ai rencontré un petit problème sur la version mise à jour (1.29). Il était en effet impossible d’ajouter un lien de page traduite à une page principale car la fenêtre Javascript permettant de faire cela plantait (lors d’un clic sur « Ajouter la traduction »).
Nouvelle fenêtre permettant de gérer les traductions sur le plugin mis à jour.
En creuseant, j’ai découvert qu’il y avait une erreur dans l’un des fichiers Javascript de l’extension. Il faut remplacer la ligne 317 du fichier resources/ext.mlm.js de
'lang': this.translationLang.getMenu().getSelectedItem().getData(),
en
'lang': this.translationLang.getMenu().findSelectedItem().getData(),
Donc remplacer l’appel à la méthode getSelectedItem() en findSelectedItem() comme indiqué dans la doc de l’API ici : https://doc.wikimedia.org/oojs-ui/master/js/#!/api/OO.ui.MenuSelectWidget
Une fois cela remplacé, j’ai pu re-créer les liens vers les différentes pages traduites sans problème. Vous remarquerez sur la capture précédente que les drapeaux de langues s’affichent désormais en plus gros en haut de la sidebar quand des traductions sont disponibles pour une page (un clic sur un drapeau permet d’accéder à la version traduite de la page).
J’ai également installé d’autres extensions particulièrement utiles comme :
- CodeEditor (prérequis à WikiEditor)
- WikiEditor : une interface de modification de texte wiki avancée
- VisualEditor : l’Éditeur visuel pour MediaWiki
L’ensemble de ces extensions sont développées par la core team de MediaWiki.
L’installation s’est passée sans problème et je n’ai pas rencontré de soucis non plus avec le contenu existant du Wiki. L’installation de l’extension VisualEditor nécessite cependant l’installation du service Parsoid qui nécessite NodeJS (Parsoid permet la conversion entre la syntaxe MediaWiki et le HTML affiché par l’éditeur visuel). Plus d’informations sont dispo ici : https://www.mediawiki.org/wiki/Extension:VisualEditor#Set_up_a_Parsoid_service . Là encore, l’installation s’est faite sans problème particulier et on gagne vraiment en confort d’édition et en efficacité avec l’éditeur visuel (pas de doute là dessus).
Aperçu de l’éditeur visuel « VisualEditor » de MediaWiki
J’ai ensuite regardé un peu ce qui se faisait « officiellement » au niveau de MediaWiki pour la gestion de la traduction des pages.
Il faut savoir en effet qu’actuellement, ce qui a été fait au niveau du Wiki actuel de Dolibarr est différentes pages pour chaque langue et chaque page « traduite » est ensuite rattachée à la page principale (anglaise) à l’aide de l’extension MultiLanguageManager.
En utilisant cette méthode chaque page reste indépendante l’une des autres et les modifications réalisées sur la page source ne sont pas signalées sur les pages traduites. Par exemple, si vous ajoutez un paragraphe sur la page anglaise, vous n’avez aucun moyen de savoir que ce paragraphe n’a pas été répercuté sur la page française traduite.
MediaWiki propose un ensemble d’extensions qui facilitent la traduction des pages et permet de réaliser un suivi de l’avancement des traduction tout en surveillant les éventuels ajout réalisés sur la page source pour les répercuter sur les pages traduites.
L’extension principale permettant de gérer cela : Translate, permet tout d’abord de marquer une page comme traduisible en entourant son code Wiki des tags <translate> </translate> . Automatiquement, dès l’ajout de ces tags, MediaWiki extrait les chaînes traduisibles de la page et permet la traduction dans l’ensemble des langues possibles simplement à l’aide d’un éditeur simplifié, paragraphe par paragraphe.
Sur cette image, vous pouvez voir l’édition d’une page à l’aide de WikiEditor ainsi que les balises <translate> et <!–T:1–>, <!–T:2–>, etc. automatiquement ajoutées par MediaWiki et qui correspondent aux différents blocs de texte traduisibles.
Une fois les balises ajoutées, les utilisateurs ont la possibilité de traduire directement en cliquant sur le lien « Traduire cette page » affiché en haut de page (la mention est affichée dans la langue de l’utilisateur).
Il est possible d’insérer un menu contenant les langues de la page à l’aide du tag <languages /> n’importe où où on le souhaite dans la page.
Le lien permettant de traduire en haut et le menu des langues de la page en dessous.
Une fois qu’on a cliqué sur Traduire cette page
Voilà pour cette petite découverte de la façon préconisée par MediaWiki de faire du Wiki multilingue.
Faire comme cela apporte de nombreux avantages et nouvelles fonctionnalités utiles mais nécessiterait un gros travail de réaménagement du wiki (mais jouable si beaucoup de monde s’y met).
Cette approche semble être la plus pérenne au niveau de l’évolution dans le temps car préconisée par les auteurs de MediaWiki.
Après, il reste toujours possible de continuer avec l’extension que l’on utilise actuellement MultiLanguageManager qui fait le job également même si elle ne va pas aussi loin
Dans tous les cas, la bonne nouvelle c’est qu’il n’y à rien de bloquant qui empêche la migration du Wiki actuel vers la dernière version.
Si on partait bien sur une montée de version MediaWiki (ce qui semble tout de même le mieux niveau préservation de l’existant), je suis dispo pour mettre la main à la pâte et aider si besoin
N’hésitez pas à me dire ce que vous en pensez Et si vous avez des questions qui vous viennent par rapport à ce post, n’hésitez pas je répondrais avec plaisir